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.ebnf5
1 files changed, 4 insertions, 1 deletions
diff --git a/grammar.ebnf b/grammar.ebnf
index 7428788..7e59e74 100644
--- a/grammar.ebnf
+++ b/grammar.ebnf
@@ -25,7 +25,8 @@ EqualityExpression = ComparisonExpression { ("==" | "!=") ComparisonExpression }
 ComparisonExpression = TermExpression { ("<" | "<=" | ">" | ">=") TermExpression };
 TermExpression = FactorExpression { ("+" | "-") FactorExpression };
 FactorExpression = UnaryExpression { ("*" | "/") UnaryExpression };
-UnaryExpression = ( "-" | "!" ) UnaryExpression | UnitExpression ;
+UnaryExpression = ( "-" | "!" ) UnaryExpression | PostfixExpression ;
+PostfixExpression = UnitExpression { ( "(" [FnCallArguments] ")" | "[" Expression "]" | "." IDENTIFIER ) };
                 
 (* Unaffected Expressions *)
 
@@ -45,6 +46,8 @@ LoopExpression = "loop" ["if" Expression] Block;
 FnHeader = (FnParameters) ["->" Type];
 FnParameters = ("self" | FnParameter) { "," FnParameter};
 
+FnCallArguments = Expression { "," Expression };
+
 (* Utils *)
 
 Block = "{" { Statement } [Expression] "}";