mirror of
https://github.com/danbulant/lang-surrealql
synced 2026-07-05 11:00:40 +00:00
working select
This commit is contained in:
parent
c0dea17715
commit
002b2d19be
1 changed files with 65 additions and 36 deletions
|
|
@ -98,35 +98,15 @@ Field {
|
||||||
"*"
|
"*"
|
||||||
}
|
}
|
||||||
BinaryExpression {
|
BinaryExpression {
|
||||||
expression !and ("&&" | "AND") expression |
|
expression !and And expression |
|
||||||
expression !or ("||" | "OR") expression |
|
expression !or Or expression |
|
||||||
expression !comparison (
|
expression !comparison (
|
||||||
"??" | "?:" |
|
Comparison | "@" identifier "@"
|
||||||
"=" | "IS" |
|
|
||||||
"!=" | "IS NOT"|
|
|
||||||
"==" |
|
|
||||||
"?=" | "*=" |
|
|
||||||
"~" | "!~" | "?~" | "*~" |
|
|
||||||
"IN" | "NOT IN" |
|
|
||||||
"CONTAINS" | "∋" |
|
|
||||||
"CONTAINSNOT" | "∌" |
|
|
||||||
"CONTAINSALL" | "⊇" |
|
|
||||||
"CONTAINSANY" | "⊃" |
|
|
||||||
"CONTAINSNONE" | "⊅" |
|
|
||||||
"INSIDE" | "∈" |
|
|
||||||
"NOTINSIDE" | "NOT IN" | "∉" |
|
|
||||||
"ALLINSIDE" | "⊆" |
|
|
||||||
"ANYINSIDE" | "⊂" |
|
|
||||||
"NONEINSIDE" | "⊄" |
|
|
||||||
"OUTSIDE" |
|
|
||||||
"INTERSECTS" |
|
|
||||||
"@@" | "@" identifier "@" |
|
|
||||||
"<" | ">" | "<=" | ">="
|
|
||||||
) expression |
|
) expression |
|
||||||
expression !exp Raise expression |
|
expression !exp Raise expression |
|
||||||
expression !times (Divide | Multiply) expression |
|
expression !times (Divide | Multiply) expression |
|
||||||
expression !plus (Add | Subtract) expression |
|
expression !plus (Add | Subtract) expression |
|
||||||
expression !dot (".*" | ("." "*."*) expression) |
|
expression !dot (".*"+ | ("." "*."*) expression) |
|
||||||
expression? !dot "->" expression |
|
expression? !dot "->" expression |
|
||||||
expression !array ("[" expression "]")
|
expression !array ("[" expression "]")
|
||||||
}
|
}
|
||||||
|
|
@ -161,7 +141,7 @@ SleepStatement {
|
||||||
kw<"sleep"> expression
|
kw<"sleep"> expression
|
||||||
}
|
}
|
||||||
ShowStatement {
|
ShowStatement {
|
||||||
kw<"show"> ckw<"changes"> kw<"for"> kw<"table">
|
kw<"show"> ckw<"changes"> kw<"for"> ckw<"table">
|
||||||
expression
|
expression
|
||||||
("since" expression)?
|
("since" expression)?
|
||||||
("limit" expression)?
|
("limit" expression)?
|
||||||
|
|
@ -176,25 +156,49 @@ InfoStatement {
|
||||||
kw<"ns"> | kw<"namespace"> |
|
kw<"ns"> | kw<"namespace"> |
|
||||||
kw<"db"> | kw<"database"> |
|
kw<"db"> | kw<"database"> |
|
||||||
kw<"scope"> expression |
|
kw<"scope"> expression |
|
||||||
kw<"table"> expression
|
ckw<"table"> expression
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
orderBy {
|
orderBy {
|
||||||
expression (kw<"collate"> | kw<"numeric">)? (kw<"asc"> | kw<"desc">)?
|
expression ("collate" | "numeric")? ("asc" | "desc")?
|
||||||
|
}
|
||||||
|
maybeValue {
|
||||||
|
kw<"value">?
|
||||||
|
}
|
||||||
|
maybeAt {
|
||||||
|
kw<"at">?
|
||||||
|
}
|
||||||
|
maybeBy {
|
||||||
|
kw<"by">?
|
||||||
|
}
|
||||||
|
selectWith {
|
||||||
|
("with" (kw<"noindex"> | kw<"index"> identifier (COMMA identifier)))?
|
||||||
|
}
|
||||||
|
maybeOnly {
|
||||||
|
kw<"only">?
|
||||||
|
}
|
||||||
|
selectOrder {
|
||||||
|
("order" maybeBy orderBy (COMMA orderBy)*)?
|
||||||
|
}
|
||||||
|
selectFrom {
|
||||||
|
("from" maybeOnly expression (COMMA expression)*)?
|
||||||
|
}
|
||||||
|
Where {
|
||||||
|
"where" expression
|
||||||
}
|
}
|
||||||
SelectStatement {
|
SelectStatement {
|
||||||
kw<"select">
|
kw<"select">
|
||||||
kw<"value">?
|
maybeValue
|
||||||
(Field (COMMA Field)*)
|
(Field (COMMA Field)*)
|
||||||
("omit" Field (COMMA Field)*)?
|
("omit" Field (COMMA Field)*)?
|
||||||
"from" kw<"only">? expression (COMMA expression)*
|
selectFrom
|
||||||
("with" (kw<"noindex"> | kw<"index"> identifier (COMMA identifier)))?
|
selectWith
|
||||||
("where" expression)?
|
Where?
|
||||||
("split" kw<"at">? expression)?
|
("split" maybeAt expression)?
|
||||||
// ("group" kw<"by">? expression (COMMA expression)*)?
|
("group" maybeBy expression (COMMA expression)*)?
|
||||||
// ("order" kw<"by">? orderBy (COMMA orderBy)*)?
|
selectOrder
|
||||||
// ("limit" kw<"by">? expression)?
|
("limit" maybeBy expression)?
|
||||||
// ("start" kw<"at">? expression)?
|
("start" maybeAt expression)?
|
||||||
("timeout" expression)?
|
("timeout" expression)?
|
||||||
"parallel"?
|
"parallel"?
|
||||||
("explain" kw<"full">?)?
|
("explain" kw<"full">?)?
|
||||||
|
|
@ -273,6 +277,31 @@ statement[@isGroup=Statement] {
|
||||||
|
|
||||||
COMMA { "," }
|
COMMA { "," }
|
||||||
SEMI { ";" }
|
SEMI { ";" }
|
||||||
|
Comparison {
|
||||||
|
"??" | "?:" |
|
||||||
|
"=" | "IS" |
|
||||||
|
"!=" | "IS NOT"|
|
||||||
|
"==" |
|
||||||
|
"?=" | "*=" |
|
||||||
|
"~" | "!~" | "?~" | "*~" |
|
||||||
|
"IN" | "NOT IN" |
|
||||||
|
"CONTAINS" | "∋" |
|
||||||
|
"CONTAINSNOT" | "∌" |
|
||||||
|
"CONTAINSALL" | "⊇" |
|
||||||
|
"CONTAINSANY" | "⊃" |
|
||||||
|
"CONTAINSNONE" | "⊅" |
|
||||||
|
"INSIDE" | "∈" |
|
||||||
|
"NOTINSIDE" | "NOT IN" | "∉" |
|
||||||
|
"ALLINSIDE" | "⊆" |
|
||||||
|
"ANYINSIDE" | "⊂" |
|
||||||
|
"NONEINSIDE" | "⊄" |
|
||||||
|
"OUTSIDE" |
|
||||||
|
"INTERSECTS" |
|
||||||
|
"<" | ">" | "<=" | ">=" |
|
||||||
|
"@@"
|
||||||
|
}
|
||||||
|
And { "&&" | "and" }
|
||||||
|
Or { "||" | "or" }
|
||||||
|
|
||||||
"/*"
|
"/*"
|
||||||
"(" ")" "[" "]" "{" "}"
|
"(" ")" "[" "]" "{" "}"
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue