

B<NAME>=1
B<CNST>=2
B<ASSI>=3
B<ASSR>=4
B<ASSX>=5

P<SS>=  <UI><SEP>,
        '%IF'<SC><COND>'%THEN'<UI><UIS><ELSE><SEP>,
        <CNST>':'<SS>,
        '%FINISH'<ELSE><SEP>,
        '%INTEGER'<ARR><SEP>,
        <RT><SPEC><NAME><FPP><SEP>,
        '%END'<SEP>,
        '%BEGIN'<SEP>,
        '%ENDOFPROGRAM'<SEP>,
        '*'<ASSI><FORM><SEP>,
        '*'<+-\><CNST><BASE><SEP>,
        '**'<CNST><SEP>,
        <SEP>;

P<UI>=  <NAME><APP><ASS>,
        '->'<CNST>,
        '%START',
        '%RETURN',
        '%RESULT='<+-\><OPD><EXPR>,
        '%STOP';

P<ELSE>='%ELSE'<UI><UIS>,;

P<UIS>= '%AND'<UI><UIS>,;

P<SEP>= '
',';';

P<APP>= '('<+-\><OPD><EXPR><EXPS>')',;

P<+-\>= '+','-','\',;

P<OPD>= <NAME><APP>,<CNST>,'('<+-\><OPD><EXPR>')';

P<EXPR>=<OP><OPD><EXPR>,;

P<OP>=  '<<','>>','&','!!','!','**','/','*','+','-';

P<EXPS>=','<+-\><OPD><EXPR><EXPS>,;

P<ASS>= '='<+-\><OPD><EXPR>,;

P<SC>=  <+-\><OPD><EXPR><COMP><+-\><OPD><EXPR>,'('<SC><COND>')';

P<COND>='%AND'<SC><ANDC>,'%OR'<SC><ORC>,;

P<ANDC>='%AND'<SC><ANDC>,;

P<ORC>= '%OR'<SC><ORC>,;

P<COMP>='=','\=','<=','<','>=','>';

P<ARR>= '%ARRAY'<NAME><NAMS>'('<+-\><OPD><EXPR>':'
        <+-\><OPD><EXPR>')'<ARRS>,<NAME><NAMS>;

P<NAMS>=','<NAME><NAMS>,;

P<ARRS>=','<NAME><NAMS>'('<+-\><OPD><EXPR>':'<+-\><OPD><EXPR>')'<ARRS>,;

P<RT>=  '%ROUTINE','%INTEGERFN';

P<SPEC>='%SPEC',;

P<FPP>= '(%INTEGER'<ARRN><NAME><NAMS><FPS>')',;

P<ARRN>='%ARRAYNAME','%NAME',;

P<FPS>= ',%INTEGER'<ARRN><NAME><NAMS><FPS>,;

P<FORM>=<ASSR><CNST>','<CNST>,<ASSX><CNST>','<BD>;

P<BD>=  <NAME>,'<'<CNST>'>',<CNST><BASE>;

P<BASE>='('<CNST>')',;

E
