aboutsummaryrefslogtreecommitdiff
path: root/src/parser/Grammar.mly
diff options
context:
space:
mode:
Diffstat (limited to 'src/parser/Grammar.mly')
-rw-r--r--src/parser/Grammar.mly11
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 }