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]+