-
Notifications
You must be signed in to change notification settings - Fork 0
Grammar
utagawa kiki edited this page May 13, 2019
·
3 revisions
See codes of the frontend for more detail.
Input ::= Expr ;;
Expr ::= Ident
| Int
| Bool
| List
| Tuple
| "undefined"
| Expr "+" Expr
| Expr "*" Expr
| Expr "<" Expr
| Expr "::" Expr
| Expr Expr
| "if" Expr "then" Expr "else" Expr
| "fun" Ident Ident* "->" Expr
| "let" Ident Ident* "=" Expr "in" Expr
| "let" "rec" Ident Ident* = Expr "in" Expr
| "match" Expr "with" "|"? Guard+
Bool ::= "true" | "false"
List ::= "[" (Expr (";" Expr)*)? "]"
Tuple ::= "(" Expr ("," Expr)+ ")"
Guard ::= "|" Pattern "->" Expr
Pattern ::= Ident
| Int
| Bool
| Pattern "::" Pattern
| ListPattern
| TuplePattern
ListPattern ::= "[" (Pattern (";" Pattern)*)? "]"
TuplePattern ::= "(" Pattern ("," Pattern)+ ")"