conlang: Add statements

TODO: Parse `let` statements
This commit is contained in:
2023-10-26 14:33:56 -05:00
parent d1b5c48aac
commit b1f90ca4e9
4 changed files with 400 additions and 270 deletions

View File

@@ -1,15 +1,22 @@
(* Conlang Expression Grammar *)
Start = Expr ;
Start = Program ;
Program = Stmt* EOI ;
(* literal *)
Literal = STRING | CHARACTER | FLOAT | INTEGER | Bool ;
Bool = "true" | "false" ;
Identifier = IDENTIFIER ;
(* # Statements *)
(* statement *)
Stmt = Fn | Let | Expr ';' ;
Let = "let" "mut"? Identifier (':' Type)? ('=' Expr)? ';' ;
Fn = "fn" Identifier Block ; (* TODO: params, return value*)
(* # Expressions *)
(* expression *)
Expr = Ignore ;
Block = '{' Stmt* Expr? '}' ;
Block = '{' Expr '}' ;
Group = '(' Expr? ')' ;
Primary = Item | Identifier | Literal
| Block | Group | Branch ;