 ::= addOp term addExp | empty.

term       ::= factor mulExp.

mulExp     ::= mulOp factor mulExp | empty.

factor     ::= intConst
         | ident params
         | ident arrayIndex
         | ident
         | '(' exp ')' 
         | NOT factor.

sign  ::= '+' | '-' | empty.

relOp ::= '&lt;' | '&lt;=' | '&gt;' | '&gt;=' | '=' | '&lt;&gt;'.

addOp ::= '+' | '-' | OR.

mulOp ::= '*' | '/' | DIV | MOD | AND.

ident ::= letter nextIdent.

nextIdent ::= letter nextIdent
        | digit nextIdent
        | em