|
@@ -1,3 +1,4 @@
|
|
|
+COMMENT = { "//" ~ (!NEWLINE ~ ANY)* ~ NEWLINE }
|
|
|
WHITESPACE = _{ " " | "\t" | NEWLINE }
|
|
|
|
|
|
query = _{ SOI ~ where_clause? ~ limit_clause? ~ order_by_clause? ~ EOI }
|
|
@@ -10,11 +11,11 @@ expr = _{ logical_expr }
|
|
|
logical_expr = { logical_term ~ (logical_op ~ logical_term)* }
|
|
|
logical_term = { not_expr | comparison }
|
|
|
logical_op = { ^"AND" | "&&" | "||" | ^"OR" }
|
|
|
-not_expr = { (^"NOT" | "!") ~ logical_term }
|
|
|
+not_expr = { (^"NOT" | "!") ~ logical_expr }
|
|
|
comparison = { sum ~ (comp_op ~ sum)? }
|
|
|
sum = { product ~ (add_op ~ product)* }
|
|
|
product = { factor ~ (mul_op ~ factor)* }
|
|
|
-factor = { number | string | variable | "(" ~ expr ~ ")" }
|
|
|
+factor = { number | string | variable | bool | "(" ~ expr ~ ")" }
|
|
|
comp_op = { "=" | "!=" | "<" | "<=" | ">" | ">=" }
|
|
|
add_op = { "+" | "-" }
|
|
|
mul_op = { "*" | "/" }
|
|
@@ -34,5 +35,7 @@ ident = @{ ("_" | alpha) ~ ("_" | alpha_num)* }
|
|
|
alpha = _{ 'a'..'z' | 'A'..'Z' }
|
|
|
alpha_num = _{ alpha | '0'..'9' }
|
|
|
|
|
|
+bool = @ { ^"TRUE" | ^"FALSE" }
|
|
|
+
|
|
|
// number
|
|
|
number = @{ "-"? ~ ASCII_DIGIT+ ~ ("." ~ ASCII_DIGIT+)? }
|