S-> [program][Id][;][VarBlock][Prog] VarBlock-> [var][V] V-> [Id][:][integer][;] | [Id][:][integer][;][V] Prog-> [begin][PrText][end][.] PrText-> [As][;][PrText] | [WB][;][PrText] | [IFF][;][PrText] | [As][;] | [WB][;] | [IFF][;] As-> [Id][:=][Expr] Expr-> [Id]|[C]| [Id][Op][Expr] | [C][Op][Expr] | [(][Expr][)] WB-> [while][(][BoolExpr][)] [do][Block] Block-> [Prt1] | [begin][PrText][end] IFF-> [if][(][BoolExpr][)][then][Block] | [if][(][BoolExpr][)][then][Block] [else] [Block] BoolExpr-> [Expr][BoolOp][Expr] Prt1-> [As]| [WB] | [IFF] BoolOp-> [<] | [>] | [=] | [<>] | [>=] | [<=] Op-> [+] | [-]