diff options
Diffstat (limited to 'grammar.ebnf')
| -rw-r--r-- | grammar.ebnf | 5 |
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] "}"; |
