about summary refs log tree commit diff
path: root/grammar.ebnf
diff options
context:
space:
mode:
authorMel <einebeere@gmail.com>2021-10-22 22:44:21 +0200
committerMel <einebeere@gmail.com>2021-10-22 22:52:24 +0200
commitc35a7ba06a47a8b26bd784df552ad4c881383898 (patch)
tree1ae23ace7246a0a97d6d53d6b0d0b88528ca5ad1 /grammar.ebnf
parentce9007bd5aefc37cf7e48eefc0fab4049c8a6b7d (diff)
downloadrabbithole-c35a7ba06a47a8b26bd784df552ad4c881383898.tar.zst
rabbithole-c35a7ba06a47a8b26bd784df552ad4c881383898.zip
Boolean logic and If expressions.
Diffstat (limited to 'grammar.ebnf')
-rw-r--r--grammar.ebnf6
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;