about summary refs log tree commit diff
path: root/grammar.ebnf
diff options
context:
space:
mode:
authorMel <einebeere@gmail.com>2021-10-24 02:03:29 +0200
committerMel <einebeere@gmail.com>2021-10-24 02:03:29 +0200
commit73c4808c44f75b7d6546f00f70779fcbf8e28754 (patch)
treef44e26fad3f37e62c0f5a35e2fafbe2d20f6da55 /grammar.ebnf
parent249abe9c33dfd08afa6b09f3e53be91b0f445561 (diff)
downloadrabbithole-73c4808c44f75b7d6546f00f70779fcbf8e28754.tar.zst
rabbithole-73c4808c44f75b7d6546f00f70779fcbf8e28754.zip
Postfix parsing
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] "}";