about summary refs log tree commit diff
path: root/grammar.ebnf
diff options
context:
space:
mode:
Diffstat (limited to 'grammar.ebnf')
-rw-r--r--grammar.ebnf10
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