6 e <- '\"' condition ( ' '+ and ' '+ condition )* '\"' !.
8 condition <- tag ' '* (le ' '* (number / time / date)
9 / ge ' '* (number / time / date)
10 / l ' '* (number / time / date)
11 / g ' '* (number / time / date)
12 / equal ' '* (number / time / date / value)
16 tag <- < (![ \t\n\r\\()"'=><] .)+ >
17 value <- < '\'' (!["'] .)* '\''>
19 / [1-9] digit* ('.' digit*)?) >
21 time <- "TIME " < year '-' month '-' day 'T' digit digit ':' digit digit ':' digit digit (('-' / '+') digit digit ':' digit digit / 'Z') >
22 date <- "DATE " < year '-' month '-' day >
23 year <- ('1' / '2') digit digit digit
24 month <- ('0' / '1') digit
25 day <- ('0' / '1' / '2' / '3') digit
29 contains <- "CONTAINS"