1414
1515// statement
1616pplStatement
17- : dmlStatement
18- ;
19-
20- dmlStatement
21- : queryStatement
22- | explainStatement
17+ : explainStatement
18+ | queryStatement
2319 ;
2420
2521queryStatement
@@ -43,9 +39,9 @@ subSearch
4339
4440// commands
4541pplCommands
46- : searchCommand
47- | describeCommand
42+ : describeCommand
4843 | showDataSourcesCommand
44+ | searchCommand
4945 ;
5046
5147commands
@@ -110,9 +106,7 @@ commandName
110106 ;
111107
112108searchCommand
113- : (SEARCH )? fromClause # searchFrom
114- | (SEARCH )? fromClause logicalExpression # searchFromFilter
115- | (SEARCH )? logicalExpression fromClause # searchFilterFrom
109+ : (SEARCH )? (logicalExpression)* fromClause (logicalExpression)* # searchFrom
116110 ;
117111
118112describeCommand
@@ -377,7 +371,7 @@ sortbyClause
377371 ;
378372
379373evalClause
380- : fieldExpression EQUAL expression
374+ : fieldExpression EQUAL logicalExpression
381375 ;
382376
383377eventstatsAggTerm
@@ -451,68 +445,52 @@ numericLiteral
451445 | floatLiteral
452446 ;
453447
454- // expressions
455- expression
456- : logicalExpression
457- | comparisonExpression
458- | valueExpression
459- ;
460-
461448// predicates
462449logicalExpression
463- : LT_PRTHS logicalExpression RT_PRTHS # parentheticLogicalExpr
464- | NOT logicalExpression # logicalNot
465- | left = logicalExpression (AND )? right = logicalExpression # logicalAnd
450+ : NOT logicalExpression # logicalNot
451+ | left = logicalExpression AND right = logicalExpression # logicalAnd
466452 | left = logicalExpression XOR right = logicalExpression # logicalXor
467453 | left = logicalExpression OR right = logicalExpression # logicalOr
468- | comparisonExpression # comparsion
469- | booleanExpression # booleanExpr
470- | relevanceExpression # relevanceExpr
471- ;
472-
473- comparisonExpression
474- : left = valueExpression comparisonOperator right = valueExpression # compareExpr
475- | valueExpression NOT ? IN valueList # inExpr
476- | valueExpression NOT ? BETWEEN valueExpression AND valueExpression # between
454+ | expression # logicalExpr
477455 ;
478456
479- valueExpressionList
480- : valueExpression
481- | LT_PRTHS valueExpression (COMMA valueExpression)* RT_PRTHS
457+ expression
458+ : valueExpression # valueExpr
459+ | relevanceExpression # relevanceExpr
460+ | left = expression comparisonOperator right = expression # compareExpr
461+ | expression NOT ? IN valueList # inExpr
462+ | expression NOT ? BETWEEN expression AND expression # between
482463 ;
483464
484465valueExpression
485- : left = valueExpression binaryOperator = (STAR | DIVIDE | MODULE ) right = valueExpression # binaryArithmetic
486- | left = valueExpression binaryOperator = (PLUS | MINUS ) right = valueExpression # binaryArithmetic
487- | primaryExpression # valueExpressionDefault
488- | positionFunction # positionFunctionCall
489- | caseFunction # caseExpr
490- | extractFunction # extractFunctionCall
491- | getFormatFunction # getFormatFunctionCall
492- | timestampFunction # timestampFunctionCall
493- | LT_PRTHS valueExpression RT_PRTHS # parentheticValueExpr
494- | LT_SQR_PRTHS subSearch RT_SQR_PRTHS # scalarSubqueryExpr
495- | lambda # lambdaExpr
496- ;
497-
498- primaryExpression
466+ : left = valueExpression binaryOperator = (STAR | DIVIDE | MODULE ) right = valueExpression # binaryArithmetic
467+ | left = valueExpression binaryOperator = (PLUS | MINUS ) right = valueExpression # binaryArithmetic
468+ | literalValue # literalValueExpr
469+ | functionCall # functionCallExpr
470+ | lambda # lambdaExpr
471+ | LT_SQR_PRTHS subSearch RT_SQR_PRTHS # scalarSubqueryExpr
472+ | valueExpression NOT ? IN LT_SQR_PRTHS subSearch RT_SQR_PRTHS # inSubqueryExpr
473+ | LT_PRTHS valueExpression ( COMMA valueExpression)* RT_PRTHS NOT ? IN LT_SQR_PRTHS subSearch RT_SQR_PRTHS # inSubqueryExpr
474+ | EXISTS LT_SQR_PRTHS subSearch RT_SQR_PRTHS # existsSubqueryExpr
475+ | fieldExpression # fieldExpr
476+ | LT_PRTHS logicalExpression RT_PRTHS # nestedValueExpr
477+ ;
478+
479+ functionCall
499480 : evalFunctionCall
500481 | dataTypeFunctionCall
501- | fieldExpression
502- | literalValue
482+ | positionFunctionCall
483+ | caseFunctionCall
484+ | timestampFunctionCall
485+ | extractFunctionCall
486+ | getFormatFunctionCall
503487 ;
504488
505- positionFunction
489+ positionFunctionCall
506490 : positionFunctionName LT_PRTHS functionArg IN functionArg RT_PRTHS
507491 ;
508492
509- booleanExpression
510- : booleanFunctionCall # booleanFunctionCallExpr
511- | valueExpressionList NOT ? IN LT_SQR_PRTHS subSearch RT_SQR_PRTHS # inSubqueryExpr
512- | EXISTS LT_SQR_PRTHS subSearch RT_SQR_PRTHS # existsSubqueryExpr
513- ;
514-
515- caseFunction
493+ caseFunctionCall
516494 : CASE LT_PRTHS logicalExpression COMMA valueExpression (COMMA logicalExpression COMMA valueExpression)* (ELSE valueExpression)? RT_PRTHS
517495 ;
518496
@@ -577,12 +555,7 @@ evalFunctionCall
577555
578556// cast function
579557dataTypeFunctionCall
580- : CAST LT_PRTHS expression AS convertedDataType RT_PRTHS
581- ;
582-
583- // boolean functions
584- booleanFunctionCall
585- : conditionFunctionName LT_PRTHS functionArgs RT_PRTHS
558+ : CAST LT_PRTHS logicalExpression AS convertedDataType RT_PRTHS
586559 ;
587560
588561convertedDataType
@@ -625,12 +598,12 @@ functionArg
625598
626599functionArgExpression
627600 : lambda
628- | expression
601+ | logicalExpression
629602 ;
630603
631604lambda
632- : ident ARROW expression
633- | LT_PRTHS ident (COMMA ident)+ RT_PRTHS ARROW expression
605+ : ident ARROW logicalExpression
606+ | LT_PRTHS ident (COMMA ident)+ RT_PRTHS ARROW logicalExpression
634607 ;
635608
636609relevanceArg
@@ -841,7 +814,7 @@ dateTimeFunctionName
841814 | YEARWEEK
842815 ;
843816
844- getFormatFunction
817+ getFormatFunctionCall
845818 : GET_FORMAT LT_PRTHS getFormatType COMMA functionArg RT_PRTHS
846819 ;
847820
@@ -852,7 +825,7 @@ getFormatType
852825 | TIMESTAMP
853826 ;
854827
855- extractFunction
828+ extractFunctionCall
856829 : EXTRACT LT_PRTHS datetimePart FROM functionArg RT_PRTHS
857830 ;
858831
@@ -887,7 +860,7 @@ datetimePart
887860 | complexDateTimePart
888861 ;
889862
890- timestampFunction
863+ timestampFunctionCall
891864 : timestampFunctionName LT_PRTHS simpleDateTimePart COMMA firstArg = functionArg COMMA secondArg = functionArg RT_PRTHS
892865 ;
893866
0 commit comments