program : expr
expr : number
: [*/+-](expr, expr)
: zero?(expr), less?(expr, expr), greater?(expr, expr)
: if expr then expr else expr
: variable
: minus(expr)
: letrec proc+ in expr
: (expr expr) # procedure calling
proc : variable (expr [,expr]*) = expr
variable : [A-Za-z]+