diff --git a/src/main/java/caosdb/server/query/CQLParser.g4 b/src/main/java/caosdb/server/query/CQLParser.g4 index af981d6a2d027892c144070323aa924a5d7674a5..f9ca5ee2ebd172c96b0a78eec4b20611f5377059 100644 --- a/src/main/java/caosdb/server/query/CQLParser.g4 +++ b/src/main/java/caosdb/server/query/CQLParser.g4 @@ -190,15 +190,31 @@ transaction_time returns [String tqp] : ( (ON | IN) - (datetime {$tqp = $datetime.text;} + (datetime {$tqp = "tr" + $datetime.dt_text;} | entity {$tqp = $entity.ep.toString();}) ) | TODAY {$tqp = TransactionFilter.TODAY;} ; +datetime returns [String dt_text] +: + ( + dq = dq_datetime {$dt_text = "foo " + $dq.dt_text;} + | + iso = iso_datetime {$dt_text = "bar" + $iso.text;} + ) +; + +dq_datetime returns [String dt_text] +: + DOUBLE_QUOTE_START + (d = iso_datetime {$dt_text = "foo";}) + DOUBLE_QUOTE_END +; + /* * not fully compliant with iso 8601 (TODO) */ -datetime +iso_datetime : NUM // year ( @@ -223,6 +239,12 @@ datetime ; pov returns [POV filter] locals [Query.Pattern p, String o, String v, String a] + /** + * p: property + * o: operator + * v: value + * a: agg + */ @init{ $p = null; $o = null; @@ -244,8 +266,8 @@ pov returns [POV filter] locals [Query.Pattern p, String o, String v, String a] ) | IS_NULL {$o = "0";} | IS_NOT_NULL {$o = "!0";} - | IN datetime {$o = "("; $v=$datetime.text;} - | NEGATION IN datetime {$o = "!("; $v=$datetime.text;} + | IN datetime {$o = "("; $v="baz " + $datetime.dt_text;} + | NEGATION IN datetime {$o = "!("; $v=$datetime.dt_text;} )? ) | @@ -443,7 +465,7 @@ minmax returns [String agg] value returns [String str] : number {$str = $text;} - | datetime {$str = $text;} + | datetime {$str = "v" + $text;} | atom {$str = $atom.ep.toString();} ;