Generative Grammer
program: stmt program
program: ε
stmt: "return" assign ";"
stmt: assign ";"
assign: equality
assign: equality "=" assign
equality: relational
equality: equality "==" relational
equality: equality "!=" relational
relational: add
relational: relational "<" add
relational: relational "<=" add
relational: relational ">" add
relational: relational ">=" add
add: mul
add: add "+" mul
add: add "-" mul
mul: unary
mul: mul "*" unary
mul: mul "/" unary
unary: term
unary: "+" term
unary: "-" term
term: num
term: ident
term: "(" assign ")"