package query
|
|
|
|
type QueryParser Peg {
|
|
}
|
|
|
|
e <- '\"' condition ( ' '+ and ' '+ condition )* '\"' !.
|
|
|
|
condition <- tag ' '* (le ' '* (number / time / date)
|
|
/ ge ' '* (number / time / date)
|
|
/ l ' '* (number / time / date)
|
|
/ g ' '* (number / time / date)
|
|
/ equal ' '* (number / time / date / value)
|
|
/ contains ' '* value
|
|
/ exists
|
|
)
|
|
|
|
tag <- < (![ \t\n\r\\()"'=><] .)+ >
|
|
value <- < '\'' (!["'] .)* '\''>
|
|
number <- < ('0'
|
|
/ [1-9] digit* ('.' digit*)?) >
|
|
digit <- [0-9]
|
|
time <- "TIME " < year '-' month '-' day 'T' digit digit ':' digit digit ':' digit digit (('-' / '+') digit digit ':' digit digit / 'Z') >
|
|
date <- "DATE " < year '-' month '-' day >
|
|
year <- ('1' / '2') digit digit digit
|
|
month <- ('0' / '1') digit
|
|
day <- ('0' / '1' / '2' / '3') digit
|
|
and <- "AND"
|
|
|
|
equal <- "="
|
|
contains <- "CONTAINS"
|
|
exists <- "EXISTS"
|
|
le <- "<="
|
|
ge <- ">="
|
|
l <- "<"
|
|
g <- ">"
|