From 97f84ccace4e634b4e02178a702818e69292dc9f Mon Sep 17 00:00:00 2001 From: Malte Voos Date: Mon, 8 Jul 2024 22:01:42 +0200 Subject: implement top-level definitions --- src/parser/Grammar.mly | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) (limited to 'src/parser/Grammar.mly') 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 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 start_expr +%start 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 } -- cgit 1.4.1