diff options
Diffstat (limited to 'src/parser/Grammar.mly')
-rw-r--r-- | src/parser/Grammar.mly | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/src/parser/Grammar.mly b/src/parser/Grammar.mly index d8e9ee0..d49c050 100644 --- a/src/parser/Grammar.mly +++ b/src/parser/Grammar.mly @@ -5,7 +5,8 @@ open Ast %token <string> IDENT %token LPR RPR %token LBR RBR -%token ARROW ASTERISK BACKSLASH COLON DOUBLE_COLON COMMA DOT FATARROW UNDERSCORE +%token ARROW ASSIGN ASTERISK BACKSLASH COLON DOUBLE_COLON COMMA DOT FATARROW UNDERSCORE +%token DEF %token BOOL TRUE FALSE BOOL_ELIM AT %token FST SND %token TYPE @@ -17,6 +18,7 @@ open Ast %left IDENT LPR APP BACKSLASH FST SND TYPE BOOL TRUE FALSE BOOL_ELIM %start <Ast.expr> start_expr +%start <Ast.file> start_file %% @@ -81,4 +83,11 @@ raw_expr: %inline expr: e = locate(raw_expr) { e } +item: + | DEF; name = ident; COLON; tp = expr; ASSIGN; tm = expr + { Def { name; tp; tm } } + +file: items = list(item) { items } + start_expr: e = expr; EOF { e } +start_file: f = file; EOF { f } |