MODULE ::= EXPR* EXPR ::= bool | int | ident | VARDECL | FUNDECL | FUNCALL | LAMBDA | BLOCK | ARRAY VARDECL ::= opar decl ident EXPR cpar FUNDECL ::= opar decl opar ident* cpar BODY cpar FUNCALL ::= opar EXPR EXPR* cpar LAMBDA ::= opar lambda opar PARAMS cpar BODY cpar PARAMS ::= ident* BODY ::= EXPR* BLOCK ::= opar colon EXPR* cpar ARRAY ::= osquare EXPR* csquare