diff options
| author | Mel <einebeere@gmail.com> | 2021-10-22 22:44:21 +0200 |
|---|---|---|
| committer | Mel <einebeere@gmail.com> | 2021-10-22 22:52:24 +0200 |
| commit | c35a7ba06a47a8b26bd784df552ad4c881383898 (patch) | |
| tree | 1ae23ace7246a0a97d6d53d6b0d0b88528ca5ad1 /grammar.ebnf | |
| parent | ce9007bd5aefc37cf7e48eefc0fab4049c8a6b7d (diff) | |
| download | rabbithole-c35a7ba06a47a8b26bd784df552ad4c881383898.tar.zst rabbithole-c35a7ba06a47a8b26bd784df552ad4c881383898.zip | |
Boolean logic and If expressions.
Diffstat (limited to 'grammar.ebnf')
| -rw-r--r-- | grammar.ebnf | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/grammar.ebnf b/grammar.ebnf index d99f268..c4c6914 100644 --- a/grammar.ebnf +++ b/grammar.ebnf @@ -18,14 +18,16 @@ Expression = AssignmentExpression; (* Expressions affected by precedence*) (* NOTE: Only allow IDENTIFIERs and their fields as the LValue for now. *) -AssignmentExpression = IDENTIFIER {"." IDENTIFIER} ("=" | ":=") AssignmentExpression | TermExpression; +AssignmentExpression = IDENTIFIER {"." IDENTIFIER} ("=" | ":=") AssignmentExpression | EqualityExpression; +EqualityExpression = ComparisonExpression { ("==" | "!=") ComparisonExpression }; +ComparisonExpression = TermExpression { ("<" | "<=" | ">" | ">=") TermExpression }; TermExpression = FactorExpression { ("+" | "-") FactorExpression }; FactorExpression = UnaryExpression { ("*" | "/") UnaryExpression }; UnaryExpression = ( "-" | "!" ) UnaryExpression | UnitExpression ; (* Unaffected Expressions *) -UnitExpression = FLOAT | INT | STR | GroupExpression | BlockExpression | FnExpression | TypeExpression | FormExpression | IfExpression; +UnitExpression = FLOAT | INT | STR | TRUE | FALSE |GroupExpression | BlockExpression | FnExpression | TypeExpression | FormExpression | IfExpression; GroupExpression = "(" Expression ")"; BlockExpression = Block; |
