From 73c4808c44f75b7d6546f00f70779fcbf8e28754 Mon Sep 17 00:00:00 2001 From: Mel Date: Sun, 24 Oct 2021 02:03:29 +0200 Subject: Postfix parsing --- grammar.ebnf | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'grammar.ebnf') 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] "}"; -- cgit 1.4.1