<prg> -> program id ; <lab> <var> <userprocs> <block> . %
<var> -> var <declist> | %
<declist> -> <dec> <pdec> %
<pdec> -> <dec> <pdec> | %
<dec> -> <idlist> : <type> ; %
<type> -> integer | char | boolean | <massiv> %
<massiv> -> array [ <bl_expr> ] of <type> %
<bl_expr> -> const .. const <_exp> %
<_exp> -> , <bl_expr> | %
<idlist> -> id <sid> %
<sid> -> , id <sid> | %
<lab> -> label <lablist> ; | %
<lablist> -> const <plablist> %
<plablist> -> , const <plablist> | %
<userprocs> -> <procdef> <userprocs> | <fundef> <userprocs> | %
<procdef> -> procedure id <procparams> ; <lab> <var> <userprocs> <block> %
<fundef> -> function id <procparams> : <type> ; <lab> <var> <userprocs> <block> %
<procparams> -> ( <declist1> ) | %
<declist1> -> <dec1> <pdec1> %
<pdec1> -> <dec1> <pdec1> | %
<dec1> -> <idlist1> : <type> ; %
<idlist1> -> id <sid1> %
<sid1> -> , id <sid1> | %
<block> -> begin <oplist> end %
<oplist> -> <op> <pop> %
<pop> -> ; <op> <pop> | %
<op> -> <labeldef> <oper> | <oper> %
<oper> -> <block> | <if> | <while> | <repeat> | <for> | <case> | <goto> | id <procpr> | <write> | <read> %
<if> -> if <us> then <op> <f> %
<f> -> else <op> | %
<labeldef> -> const : %
<while> -> while <us> do <op> %
<procpr> -> <prsv> | <param> <pparam> %
<pparam> -> <prsv> | %
<prsv> -> := <w> %
<w> -> <t> <pw> %
<pw> -> + <t> <pw> | - <t> <pw> | %
<t> -> <m> <pt> %
<pt> -> * <m> <pt> | div <m> <pt> | %
<m> -> id <param1> | const | ( <w> ) | cos ( <m> ) | sin ( <m> ) | sqrt ( <m> ) | abs ( <m> ) %
<param1> -> <param> | %
<repeat> -> repeat <op> until <us> %
<for> -> for <m> := <w> to <w> do <op> %
<case> -> case <w> of <caselist> end %
<caselist> -> <caselab> : <op> <pcaselist> %
<caselab> -> const <pcaselab> %
<pcaselab> -> , const | %
<pcaselist> -> ; <caselist> | %
<goto> -> goto const %
<param> -> ( <sw> ) | [ <m> ] %
<sw> -> <w> <psw> %
<psw> -> , <sw> | %
<us> -> <w> <zs> <w> %
<zs> -> < | > | <= | >= | <> %
<write> -> write ( <id_list2> ) %
<read> -> read ( <id_list2> ) %
<id_list2> -> <m> <pid_list2> %
<pid_list2> -> , <m> <pid_list2> | %

