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
@@ -106,9 +102,7 @@ commandName
106102 ;
107103
108104searchCommand
109- : (SEARCH )? fromClause # searchFrom
110- | (SEARCH )? fromClause logicalExpression # searchFromFilter
111- | (SEARCH )? logicalExpression fromClause # searchFilterFrom
105+ : (SEARCH )? (logicalExpression)* fromClause (logicalExpression)* # searchFrom
112106 ;
113107
114108describeCommand
@@ -373,7 +367,7 @@ sortbyClause
373367 ;
374368
375369evalClause
376- : fieldExpression EQUAL expression
370+ : fieldExpression EQUAL logicalExpression
377371 ;
378372
379373eventstatsAggTerm
@@ -447,68 +441,52 @@ numericLiteral
447441 | floatLiteral
448442 ;
449443
450- // expressions
451- expression
452- : logicalExpression
453- | comparisonExpression
454- | valueExpression
455- ;
456-
457444// predicates
458445logicalExpression
459- : LT_PRTHS logicalExpression RT_PRTHS # parentheticLogicalExpr
460- | NOT logicalExpression # logicalNot
461- | left = logicalExpression (AND )? right = logicalExpression # logicalAnd
446+ : NOT logicalExpression # logicalNot
447+ | left = logicalExpression AND right = logicalExpression # logicalAnd
462448 | left = logicalExpression XOR right = logicalExpression # logicalXor
463449 | left = logicalExpression OR right = logicalExpression # logicalOr
464- | comparisonExpression # comparsion
465- | booleanExpression # booleanExpr
466- | relevanceExpression # relevanceExpr
467- ;
468-
469- comparisonExpression
470- : left = valueExpression comparisonOperator right = valueExpression # compareExpr
471- | valueExpression NOT ? IN valueList # inExpr
472- | valueExpression NOT ? BETWEEN valueExpression AND valueExpression # between
450+ | expression # logicalExpr
473451 ;
474452
475- valueExpressionList
476- : valueExpression
477- | LT_PRTHS valueExpression (COMMA valueExpression)* RT_PRTHS
453+ expression
454+ : valueExpression # valueExpr
455+ | relevanceExpression # relevanceExpr
456+ | left = expression comparisonOperator right = expression # compareExpr
457+ | expression NOT ? IN valueList # inExpr
458+ | expression NOT ? BETWEEN expression AND expression # between
478459 ;
479460
480461valueExpression
481- : left = valueExpression binaryOperator = (STAR | DIVIDE | MODULE ) right = valueExpression # binaryArithmetic
482- | left = valueExpression binaryOperator = (PLUS | MINUS ) right = valueExpression # binaryArithmetic
483- | primaryExpression # valueExpressionDefault
484- | positionFunction # positionFunctionCall
485- | caseFunction # caseExpr
486- | extractFunction # extractFunctionCall
487- | getFormatFunction # getFormatFunctionCall
488- | timestampFunction # timestampFunctionCall
489- | LT_PRTHS valueExpression RT_PRTHS # parentheticValueExpr
490- | LT_SQR_PRTHS subSearch RT_SQR_PRTHS # scalarSubqueryExpr
491- | lambda # lambdaExpr
492- ;
493-
494- primaryExpression
462+ : left = valueExpression binaryOperator = (STAR | DIVIDE | MODULE ) right = valueExpression # binaryArithmetic
463+ | left = valueExpression binaryOperator = (PLUS | MINUS ) right = valueExpression # binaryArithmetic
464+ | literalValue # literalValueExpr
465+ | functionCall # functionCallExpr
466+ | lambda # lambdaExpr
467+ | LT_SQR_PRTHS subSearch RT_SQR_PRTHS # scalarSubqueryExpr
468+ | valueExpression NOT ? IN LT_SQR_PRTHS subSearch RT_SQR_PRTHS # inSubqueryExpr
469+ | LT_PRTHS valueExpression ( COMMA valueExpression)* RT_PRTHS NOT ? IN LT_SQR_PRTHS subSearch RT_SQR_PRTHS # inSubqueryExpr
470+ | EXISTS LT_SQR_PRTHS subSearch RT_SQR_PRTHS # existsSubqueryExpr
471+ | fieldExpression # fieldExpr
472+ | LT_PRTHS logicalExpression RT_PRTHS # nestedValueExpr
473+ ;
474+
475+ functionCall
495476 : evalFunctionCall
496477 | dataTypeFunctionCall
497- | fieldExpression
498- | literalValue
478+ | positionFunctionCall
479+ | caseFunctionCall
480+ | timestampFunctionCall
481+ | extractFunctionCall
482+ | getFormatFunctionCall
499483 ;
500484
501- positionFunction
485+ positionFunctionCall
502486 : positionFunctionName LT_PRTHS functionArg IN functionArg RT_PRTHS
503487 ;
504488
505- booleanExpression
506- : booleanFunctionCall # booleanFunctionCallExpr
507- | valueExpressionList NOT ? IN LT_SQR_PRTHS subSearch RT_SQR_PRTHS # inSubqueryExpr
508- | EXISTS LT_SQR_PRTHS subSearch RT_SQR_PRTHS # existsSubqueryExpr
509- ;
510-
511- caseFunction
489+ caseFunctionCall
512490 : CASE LT_PRTHS logicalExpression COMMA valueExpression (COMMA logicalExpression COMMA valueExpression)* (ELSE valueExpression)? RT_PRTHS
513491 ;
514492
@@ -573,12 +551,7 @@ evalFunctionCall
573551
574552// cast function
575553dataTypeFunctionCall
576- : CAST LT_PRTHS expression AS convertedDataType RT_PRTHS
577- ;
578-
579- // boolean functions
580- booleanFunctionCall
581- : conditionFunctionName LT_PRTHS functionArgs RT_PRTHS
554+ : CAST LT_PRTHS logicalExpression AS convertedDataType RT_PRTHS
582555 ;
583556
584557convertedDataType
@@ -621,12 +594,12 @@ functionArg
621594
622595functionArgExpression
623596 : lambda
624- | expression
597+ | logicalExpression
625598 ;
626599
627600lambda
628- : ident ARROW expression
629- | LT_PRTHS ident (COMMA ident)+ RT_PRTHS ARROW expression
601+ : ident ARROW logicalExpression
602+ | LT_PRTHS ident (COMMA ident)+ RT_PRTHS ARROW logicalExpression
630603 ;
631604
632605relevanceArg
@@ -837,7 +810,7 @@ dateTimeFunctionName
837810 | YEARWEEK
838811 ;
839812
840- getFormatFunction
813+ getFormatFunctionCall
841814 : GET_FORMAT LT_PRTHS getFormatType COMMA functionArg RT_PRTHS
842815 ;
843816
@@ -848,7 +821,7 @@ getFormatType
848821 | TIMESTAMP
849822 ;
850823
851- extractFunction
824+ extractFunctionCall
852825 : EXTRACT LT_PRTHS datetimePart FROM functionArg RT_PRTHS
853826 ;
854827
@@ -883,7 +856,7 @@ datetimePart
883856 | complexDateTimePart
884857 ;
885858
886- timestampFunction
859+ timestampFunctionCall
887860 : timestampFunctionName LT_PRTHS simpleDateTimePart COMMA firstArg = functionArg COMMA secondArg = functionArg RT_PRTHS
888861 ;
889862
0 commit comments