start-symbol PROGRAM context-free syntax PROGRAM ::= "begin" DECLS "|" (STATEMENT ";")* "end" DECLS ::= "declare" (ID ",")* context-free syntax STATEMENT ::= ID ":=" EXP context-free syntax EXP ::= ID EXP ::= NAT EXP ::= EXP "+" EXP {left} EXP ::= EXP "*" EXP {left} EXP ::= "-" EXP EXP ::= "(" EXP ")" lexical syntax ID ::= [a-z][a-z0-9]* lexical syntax NAT ::= [0] | [1-9][0-9]* lexical syntax LAYOUT ::= [\ \n]* context-free priorities EXP ::= "-" EXP > EXP ::= "*" EXP > EXP ::= "+" EXP