aboutsummaryrefslogtreecommitdiff
path: root/src/lex
diff options
context:
space:
mode:
authorMel <einebeere@gmail.com>2021-10-24 23:59:39 +0200
committerMel <einebeere@gmail.com>2021-10-24 23:59:39 +0200
commit31901291f3fdb7d5e98fea37dda0064188dd0961 (patch)
treec2b5e1b5ea9f85791302bed12debba3215cfceb0 /src/lex
parentcede973c76e061e06c7bdaad3922be5d9305f950 (diff)
downloadrabbithole-31901291f3fdb7d5e98fea37dda0064188dd0961.tar.zst
rabbithole-31901291f3fdb7d5e98fea37dda0064188dd0961.zip
And Or expressions
Diffstat (limited to 'src/lex')
-rw-r--r--src/lex/lexer.rs14
-rw-r--r--src/lex/token.rs3
2 files changed, 17 insertions, 0 deletions
diff --git a/src/lex/lexer.rs b/src/lex/lexer.rs
index edd1ff0..1d46ce7 100644
--- a/src/lex/lexer.rs
+++ b/src/lex/lexer.rs
@@ -79,6 +79,20 @@ impl Iterator for Lexer<'_> {
OpGt
}
}
+ '&' => {
+ if self.advance_if('&') {
+ OpAnd
+ } else {
+ Unknown('&')
+ }
+ }
+ '|' => {
+ if self.advance_if('|') {
+ OpOr
+ } else {
+ Unknown('|')
+ }
+ }
'(' => GroupOpen,
')' => GroupClose,
'{' => BlockOpen,
diff --git a/src/lex/token.rs b/src/lex/token.rs
index 3c6d5c6..77b0df6 100644
--- a/src/lex/token.rs
+++ b/src/lex/token.rs
@@ -25,6 +25,9 @@ pub enum TokenVariant {
OpGt,
OpLte,
OpGte,
+ // Short-circuting boolean operators
+ OpAnd,
+ OpOr,
// Statement symbols
Dot,