lProgram ::= ( Definition | Expr )
lDefinition ::=
(define id Expr)
| (define (idfn idformal1 …
idformalN) Expr)
lExpr ::= id | Literal | SpecialForm
| (Exprfn Exprarg1 … ExprargN)
lLiteral ::= int | string | symbol | …
lSpecialForm ::= (if Exprtest Exprthen Exprelse) | ...