about summary refs log tree commit diff
path: root/src/parser/Grammar.mly
diff options
context:
space:
mode:
authorMalte Voos <git@mal.tc>2024-07-08 22:01:42 +0200
committerMalte Voos <git@mal.tc>2024-07-08 22:01:42 +0200
commit97f84ccace4e634b4e02178a702818e69292dc9f (patch)
tree9cef95c62e3fa078db256c7fe657732fecef40a8 /src/parser/Grammar.mly
parent57de10d8728f51942f676b68f1f3ea29d9b78e6e (diff)
downloadtoytt-97f84ccace4e634b4e02178a702818e69292dc9f.tar.gz
toytt-97f84ccace4e634b4e02178a702818e69292dc9f.zip
implement top-level definitions
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 }