diff options
Diffstat (limited to 'src/taiga.lalrpop')
-rw-r--r-- | src/taiga.lalrpop | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/src/taiga.lalrpop b/src/taiga.lalrpop index aa5e50e..0144aad 100644 --- a/src/taiga.lalrpop +++ b/src/taiga.lalrpop @@ -31,6 +31,10 @@ Declaration: Box<WithLocation<ast::Declaration>> = { Box::new(WithLocation::new(ast::Declaration::new_var(name, None, exp), l, r)), <l: @L> "type" <name: Name> "=" <ty: Ty> <r: @R> => Box::new(WithLocation::new(ast::Declaration::new_ty(name, ty), l, r)), + <l: @L> "function" <name: Name> "(" <params: RecordFields> ")" "=" <body: Expression> <r: @R> => + Box::new(WithLocation::new(ast::Declaration::new_fun(name, params, None, body), l, r)), + <l: @L> "function" <name: Name> "(" <params: RecordFields> ")" ":" <ty: Ty> "=" <body: Expression> <r: @R> => + Box::new(WithLocation::new(ast::Declaration::new_fun(name, params, Some(ty), body), l, r)), }; DeclarationsList: Vec<WithLocation<ast::Declaration>> = { |