1root ::= (expr "=" ws term "\n")+ 2expr ::= term ([-+*/] term)* 3term ::= ident | num | "(" ws expr ")" ws 4ident ::= [a-z] [a-z0-9_]* ws 5num ::= [0-9]+ ws 6ws ::= [ \t\n]*