diff options
| author | Baitinq <[email protected]> | 2025-05-25 22:49:18 +0200 |
|---|---|---|
| committer | Baitinq <[email protected]> | 2025-05-25 22:49:53 +0200 |
| commit | f5904b62012ca475c14ad55b7f2c0b0c5c48b362 (patch) | |
| tree | 890b3f1274b8dab2e7e2a2052d7d452fa3ca6db2 /grammar.ebnf | |
| parent | Examples: Fix example 21 (diff) | |
| download | interpreter-f5904b62012ca475c14ad55b7f2c0b0c5c48b362.tar.gz interpreter-f5904b62012ca475c14ad55b7f2c0b0c5c48b362.tar.bz2 interpreter-f5904b62012ca475c14ad55b7f2c0b0c5c48b362.zip | |
Feature: Start adding structs support
Diffstat (limited to 'grammar.ebnf')
| -rw-r--r-- | grammar.ebnf | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/grammar.ebnf b/grammar.ebnf index ddb0cef..d203a69 100644 --- a/grammar.ebnf +++ b/grammar.ebnf @@ -30,7 +30,7 @@ MultiplicativeExpression ::= UnaryExpression (("*" | "/" | "%") UnaryExpression) UnaryExpression ::= ("!" | "-" | "*") UnaryExpression | PrimaryExpression -PrimaryExpression ::= NULL | NUMBER | BOOLEAN | CHAR | STRING | IDENTIFIER | CastStatement | FunctionCallStatement | FunctionDefinition | LPAREN Expression RPAREN +PrimaryExpression ::= NULL | NUMBER | BOOLEAN | CHAR | STRING | IDENTIFIER | CastStatement | FunctionCallStatement | FunctionDefinition | StructDefinition | StructInstantiation | FieldAccess | LPAREN Expression RPAREN FunctionDefinition ::= LPAREN FunctionParameters? RPAREN ARROW IDENTIFIER LBRACE Statement* ReturnStatement SEMICOLON RBRACE @@ -41,3 +41,11 @@ Type ::= IDENTIFIER | FunctionType FunctionType ::= LPAREN (Type ("," Type)*)? RPAREN ARROW Type ParameterTypes ::= Type ("," Type)* + +StructDefinition ::= "struct" LBRACE (StructField ("," StructField)*)? RBRACE + +StructField ::= IDENTIFIER ":" Type + +StructInstantiation ::= IDENTIFIER LBRACE RBRACE + +FieldAccess ::= Expression DOT IDENTIFIER |