Update ES|QL grammars

This commit is contained in:
kibanamachine 2025-03-19 17:54:46 +00:00
parent d970ca5eea
commit 9ef9b6b350
17 changed files with 2522 additions and 1956 deletions

View file

@ -67,6 +67,7 @@ import ChangePoint,
Metrics,
MvExpand,
Project,
Rrf,
Rename,
Show,
UnknownCommand;

File diff suppressed because one or more lines are too long

View file

@ -25,118 +25,121 @@ MV_EXPAND=24
DROP=25
KEEP=26
DEV_INSIST=27
RENAME=28
SHOW=29
UNKNOWN_CMD=30
CHANGE_POINT_LINE_COMMENT=31
CHANGE_POINT_MULTILINE_COMMENT=32
CHANGE_POINT_WS=33
ON=34
WITH=35
ENRICH_POLICY_NAME=36
ENRICH_LINE_COMMENT=37
ENRICH_MULTILINE_COMMENT=38
ENRICH_WS=39
ENRICH_FIELD_LINE_COMMENT=40
ENRICH_FIELD_MULTILINE_COMMENT=41
ENRICH_FIELD_WS=42
SETTING=43
SETTING_LINE_COMMENT=44
SETTTING_MULTILINE_COMMENT=45
SETTING_WS=46
EXPLAIN_WS=47
EXPLAIN_LINE_COMMENT=48
EXPLAIN_MULTILINE_COMMENT=49
PIPE=50
QUOTED_STRING=51
INTEGER_LITERAL=52
DECIMAL_LITERAL=53
BY=54
AND=55
ASC=56
ASSIGN=57
CAST_OP=58
COLON=59
COMMA=60
DESC=61
DOT=62
FALSE=63
FIRST=64
IN=65
IS=66
LAST=67
LIKE=68
NOT=69
NULL=70
NULLS=71
OR=72
PARAM=73
RLIKE=74
TRUE=75
EQ=76
CIEQ=77
NEQ=78
LT=79
LTE=80
GT=81
GTE=82
PLUS=83
MINUS=84
ASTERISK=85
SLASH=86
PERCENT=87
LEFT_BRACES=88
RIGHT_BRACES=89
NAMED_OR_POSITIONAL_PARAM=90
OPENING_BRACKET=91
CLOSING_BRACKET=92
LP=93
RP=94
UNQUOTED_IDENTIFIER=95
QUOTED_IDENTIFIER=96
EXPR_LINE_COMMENT=97
EXPR_MULTILINE_COMMENT=98
EXPR_WS=99
METADATA=100
UNQUOTED_SOURCE=101
FROM_LINE_COMMENT=102
FROM_MULTILINE_COMMENT=103
FROM_WS=104
FORK_WS=105
FORK_LINE_COMMENT=106
FORK_MULTILINE_COMMENT=107
JOIN=108
USING=109
JOIN_LINE_COMMENT=110
JOIN_MULTILINE_COMMENT=111
JOIN_WS=112
LOOKUP_LINE_COMMENT=113
LOOKUP_MULTILINE_COMMENT=114
LOOKUP_WS=115
LOOKUP_FIELD_LINE_COMMENT=116
LOOKUP_FIELD_MULTILINE_COMMENT=117
LOOKUP_FIELD_WS=118
METRICS_LINE_COMMENT=119
METRICS_MULTILINE_COMMENT=120
METRICS_WS=121
CLOSING_METRICS_LINE_COMMENT=122
CLOSING_METRICS_MULTILINE_COMMENT=123
CLOSING_METRICS_WS=124
MVEXPAND_LINE_COMMENT=125
MVEXPAND_MULTILINE_COMMENT=126
MVEXPAND_WS=127
ID_PATTERN=128
PROJECT_LINE_COMMENT=129
PROJECT_MULTILINE_COMMENT=130
PROJECT_WS=131
AS=132
RENAME_LINE_COMMENT=133
RENAME_MULTILINE_COMMENT=134
RENAME_WS=135
INFO=136
SHOW_LINE_COMMENT=137
SHOW_MULTILINE_COMMENT=138
SHOW_WS=139
DEV_RRF=28
RENAME=29
SHOW=30
UNKNOWN_CMD=31
CHANGE_POINT_LINE_COMMENT=32
CHANGE_POINT_MULTILINE_COMMENT=33
CHANGE_POINT_WS=34
ON=35
WITH=36
ENRICH_POLICY_NAME=37
ENRICH_LINE_COMMENT=38
ENRICH_MULTILINE_COMMENT=39
ENRICH_WS=40
ENRICH_FIELD_LINE_COMMENT=41
ENRICH_FIELD_MULTILINE_COMMENT=42
ENRICH_FIELD_WS=43
SETTING=44
SETTING_LINE_COMMENT=45
SETTTING_MULTILINE_COMMENT=46
SETTING_WS=47
EXPLAIN_WS=48
EXPLAIN_LINE_COMMENT=49
EXPLAIN_MULTILINE_COMMENT=50
PIPE=51
QUOTED_STRING=52
INTEGER_LITERAL=53
DECIMAL_LITERAL=54
BY=55
AND=56
ASC=57
ASSIGN=58
CAST_OP=59
COLON=60
COMMA=61
DESC=62
DOT=63
FALSE=64
FIRST=65
IN=66
IS=67
LAST=68
LIKE=69
NOT=70
NULL=71
NULLS=72
OR=73
PARAM=74
RLIKE=75
TRUE=76
EQ=77
CIEQ=78
NEQ=79
LT=80
LTE=81
GT=82
GTE=83
PLUS=84
MINUS=85
ASTERISK=86
SLASH=87
PERCENT=88
LEFT_BRACES=89
RIGHT_BRACES=90
DOUBLE_PARAMS=91
NAMED_OR_POSITIONAL_PARAM=92
NAMED_OR_POSITIONAL_DOUBLE_PARAMS=93
OPENING_BRACKET=94
CLOSING_BRACKET=95
LP=96
RP=97
UNQUOTED_IDENTIFIER=98
QUOTED_IDENTIFIER=99
EXPR_LINE_COMMENT=100
EXPR_MULTILINE_COMMENT=101
EXPR_WS=102
METADATA=103
UNQUOTED_SOURCE=104
FROM_LINE_COMMENT=105
FROM_MULTILINE_COMMENT=106
FROM_WS=107
FORK_WS=108
FORK_LINE_COMMENT=109
FORK_MULTILINE_COMMENT=110
JOIN=111
USING=112
JOIN_LINE_COMMENT=113
JOIN_MULTILINE_COMMENT=114
JOIN_WS=115
LOOKUP_LINE_COMMENT=116
LOOKUP_MULTILINE_COMMENT=117
LOOKUP_WS=118
LOOKUP_FIELD_LINE_COMMENT=119
LOOKUP_FIELD_MULTILINE_COMMENT=120
LOOKUP_FIELD_WS=121
METRICS_LINE_COMMENT=122
METRICS_MULTILINE_COMMENT=123
METRICS_WS=124
CLOSING_METRICS_LINE_COMMENT=125
CLOSING_METRICS_MULTILINE_COMMENT=126
CLOSING_METRICS_WS=127
MVEXPAND_LINE_COMMENT=128
MVEXPAND_MULTILINE_COMMENT=129
MVEXPAND_WS=130
ID_PATTERN=131
PROJECT_LINE_COMMENT=132
PROJECT_MULTILINE_COMMENT=133
PROJECT_WS=134
AS=135
RENAME_LINE_COMMENT=136
RENAME_MULTILINE_COMMENT=137
RENAME_WS=138
INFO=139
SHOW_LINE_COMMENT=140
SHOW_MULTILINE_COMMENT=141
SHOW_WS=142
'enrich'=5
'explain'=6
'dissect'=7
@ -152,51 +155,51 @@ SHOW_WS=139
'mv_expand'=24
'drop'=25
'keep'=26
'rename'=28
'show'=29
'on'=34
'with'=35
'|'=50
'by'=54
'and'=55
'asc'=56
'='=57
'::'=58
':'=59
','=60
'desc'=61
'.'=62
'false'=63
'first'=64
'in'=65
'is'=66
'last'=67
'like'=68
'not'=69
'null'=70
'nulls'=71
'or'=72
'?'=73
'rlike'=74
'true'=75
'=='=76
'=~'=77
'!='=78
'<'=79
'<='=80
'>'=81
'>='=82
'+'=83
'-'=84
'*'=85
'/'=86
'%'=87
'{'=88
'}'=89
']'=92
')'=94
'metadata'=100
'join'=108
'USING'=109
'as'=132
'info'=136
'rename'=29
'show'=30
'on'=35
'with'=36
'|'=51
'by'=55
'and'=56
'asc'=57
'='=58
'::'=59
':'=60
','=61
'desc'=62
'.'=63
'false'=64
'first'=65
'in'=66
'is'=67
'last'=68
'like'=69
'not'=70
'null'=71
'nulls'=72
'or'=73
'?'=74
'rlike'=75
'true'=76
'=='=77
'=~'=78
'!='=79
'<'=80
'<='=81
'>'=82
'>='=83
'+'=84
'-'=85
'*'=86
'/'=87
'%'=88
'{'=89
'}'=90
']'=95
')'=97
'metadata'=103
'join'=111
'USING'=112
'as'=135
'info'=139

View file

@ -63,6 +63,7 @@ processingCommand
| {this.isDevVersion()}? changePointCommand
| {this.isDevVersion()}? insistCommand
| {this.isDevVersion()}? forkCommand
| {this.isDevVersion()}? rrfCommand
;
whereCommand
@ -147,6 +148,7 @@ identifier
identifierPattern
: ID_PATTERN
| parameter
| {this.isDevVersion()}? doubleParameter
;
parameter
@ -154,9 +156,15 @@ parameter
| NAMED_OR_POSITIONAL_PARAM #inputNamedOrPositionalParam
;
doubleParameter
: DOUBLE_PARAMS #inputDoubleParams
| NAMED_OR_POSITIONAL_DOUBLE_PARAMS #inputNamedOrPositionalDoubleParams
;
identifierOrParameter
: identifier
| parameter
| {this.isDevVersion()}? doubleParameter
;
limitCommand
@ -267,4 +275,8 @@ forkSubQueryProcessingCommand
: whereCommand
| sortCommand
| limitCommand
;
;
rrfCommand
: DEV_RRF
;

File diff suppressed because one or more lines are too long

View file

@ -25,118 +25,121 @@ MV_EXPAND=24
DROP=25
KEEP=26
DEV_INSIST=27
RENAME=28
SHOW=29
UNKNOWN_CMD=30
CHANGE_POINT_LINE_COMMENT=31
CHANGE_POINT_MULTILINE_COMMENT=32
CHANGE_POINT_WS=33
ON=34
WITH=35
ENRICH_POLICY_NAME=36
ENRICH_LINE_COMMENT=37
ENRICH_MULTILINE_COMMENT=38
ENRICH_WS=39
ENRICH_FIELD_LINE_COMMENT=40
ENRICH_FIELD_MULTILINE_COMMENT=41
ENRICH_FIELD_WS=42
SETTING=43
SETTING_LINE_COMMENT=44
SETTTING_MULTILINE_COMMENT=45
SETTING_WS=46
EXPLAIN_WS=47
EXPLAIN_LINE_COMMENT=48
EXPLAIN_MULTILINE_COMMENT=49
PIPE=50
QUOTED_STRING=51
INTEGER_LITERAL=52
DECIMAL_LITERAL=53
BY=54
AND=55
ASC=56
ASSIGN=57
CAST_OP=58
COLON=59
COMMA=60
DESC=61
DOT=62
FALSE=63
FIRST=64
IN=65
IS=66
LAST=67
LIKE=68
NOT=69
NULL=70
NULLS=71
OR=72
PARAM=73
RLIKE=74
TRUE=75
EQ=76
CIEQ=77
NEQ=78
LT=79
LTE=80
GT=81
GTE=82
PLUS=83
MINUS=84
ASTERISK=85
SLASH=86
PERCENT=87
LEFT_BRACES=88
RIGHT_BRACES=89
NAMED_OR_POSITIONAL_PARAM=90
OPENING_BRACKET=91
CLOSING_BRACKET=92
LP=93
RP=94
UNQUOTED_IDENTIFIER=95
QUOTED_IDENTIFIER=96
EXPR_LINE_COMMENT=97
EXPR_MULTILINE_COMMENT=98
EXPR_WS=99
METADATA=100
UNQUOTED_SOURCE=101
FROM_LINE_COMMENT=102
FROM_MULTILINE_COMMENT=103
FROM_WS=104
FORK_WS=105
FORK_LINE_COMMENT=106
FORK_MULTILINE_COMMENT=107
JOIN=108
USING=109
JOIN_LINE_COMMENT=110
JOIN_MULTILINE_COMMENT=111
JOIN_WS=112
LOOKUP_LINE_COMMENT=113
LOOKUP_MULTILINE_COMMENT=114
LOOKUP_WS=115
LOOKUP_FIELD_LINE_COMMENT=116
LOOKUP_FIELD_MULTILINE_COMMENT=117
LOOKUP_FIELD_WS=118
METRICS_LINE_COMMENT=119
METRICS_MULTILINE_COMMENT=120
METRICS_WS=121
CLOSING_METRICS_LINE_COMMENT=122
CLOSING_METRICS_MULTILINE_COMMENT=123
CLOSING_METRICS_WS=124
MVEXPAND_LINE_COMMENT=125
MVEXPAND_MULTILINE_COMMENT=126
MVEXPAND_WS=127
ID_PATTERN=128
PROJECT_LINE_COMMENT=129
PROJECT_MULTILINE_COMMENT=130
PROJECT_WS=131
AS=132
RENAME_LINE_COMMENT=133
RENAME_MULTILINE_COMMENT=134
RENAME_WS=135
INFO=136
SHOW_LINE_COMMENT=137
SHOW_MULTILINE_COMMENT=138
SHOW_WS=139
DEV_RRF=28
RENAME=29
SHOW=30
UNKNOWN_CMD=31
CHANGE_POINT_LINE_COMMENT=32
CHANGE_POINT_MULTILINE_COMMENT=33
CHANGE_POINT_WS=34
ON=35
WITH=36
ENRICH_POLICY_NAME=37
ENRICH_LINE_COMMENT=38
ENRICH_MULTILINE_COMMENT=39
ENRICH_WS=40
ENRICH_FIELD_LINE_COMMENT=41
ENRICH_FIELD_MULTILINE_COMMENT=42
ENRICH_FIELD_WS=43
SETTING=44
SETTING_LINE_COMMENT=45
SETTTING_MULTILINE_COMMENT=46
SETTING_WS=47
EXPLAIN_WS=48
EXPLAIN_LINE_COMMENT=49
EXPLAIN_MULTILINE_COMMENT=50
PIPE=51
QUOTED_STRING=52
INTEGER_LITERAL=53
DECIMAL_LITERAL=54
BY=55
AND=56
ASC=57
ASSIGN=58
CAST_OP=59
COLON=60
COMMA=61
DESC=62
DOT=63
FALSE=64
FIRST=65
IN=66
IS=67
LAST=68
LIKE=69
NOT=70
NULL=71
NULLS=72
OR=73
PARAM=74
RLIKE=75
TRUE=76
EQ=77
CIEQ=78
NEQ=79
LT=80
LTE=81
GT=82
GTE=83
PLUS=84
MINUS=85
ASTERISK=86
SLASH=87
PERCENT=88
LEFT_BRACES=89
RIGHT_BRACES=90
DOUBLE_PARAMS=91
NAMED_OR_POSITIONAL_PARAM=92
NAMED_OR_POSITIONAL_DOUBLE_PARAMS=93
OPENING_BRACKET=94
CLOSING_BRACKET=95
LP=96
RP=97
UNQUOTED_IDENTIFIER=98
QUOTED_IDENTIFIER=99
EXPR_LINE_COMMENT=100
EXPR_MULTILINE_COMMENT=101
EXPR_WS=102
METADATA=103
UNQUOTED_SOURCE=104
FROM_LINE_COMMENT=105
FROM_MULTILINE_COMMENT=106
FROM_WS=107
FORK_WS=108
FORK_LINE_COMMENT=109
FORK_MULTILINE_COMMENT=110
JOIN=111
USING=112
JOIN_LINE_COMMENT=113
JOIN_MULTILINE_COMMENT=114
JOIN_WS=115
LOOKUP_LINE_COMMENT=116
LOOKUP_MULTILINE_COMMENT=117
LOOKUP_WS=118
LOOKUP_FIELD_LINE_COMMENT=119
LOOKUP_FIELD_MULTILINE_COMMENT=120
LOOKUP_FIELD_WS=121
METRICS_LINE_COMMENT=122
METRICS_MULTILINE_COMMENT=123
METRICS_WS=124
CLOSING_METRICS_LINE_COMMENT=125
CLOSING_METRICS_MULTILINE_COMMENT=126
CLOSING_METRICS_WS=127
MVEXPAND_LINE_COMMENT=128
MVEXPAND_MULTILINE_COMMENT=129
MVEXPAND_WS=130
ID_PATTERN=131
PROJECT_LINE_COMMENT=132
PROJECT_MULTILINE_COMMENT=133
PROJECT_WS=134
AS=135
RENAME_LINE_COMMENT=136
RENAME_MULTILINE_COMMENT=137
RENAME_WS=138
INFO=139
SHOW_LINE_COMMENT=140
SHOW_MULTILINE_COMMENT=141
SHOW_WS=142
'enrich'=5
'explain'=6
'dissect'=7
@ -152,51 +155,51 @@ SHOW_WS=139
'mv_expand'=24
'drop'=25
'keep'=26
'rename'=28
'show'=29
'on'=34
'with'=35
'|'=50
'by'=54
'and'=55
'asc'=56
'='=57
'::'=58
':'=59
','=60
'desc'=61
'.'=62
'false'=63
'first'=64
'in'=65
'is'=66
'last'=67
'like'=68
'not'=69
'null'=70
'nulls'=71
'or'=72
'?'=73
'rlike'=74
'true'=75
'=='=76
'=~'=77
'!='=78
'<'=79
'<='=80
'>'=81
'>='=82
'+'=83
'-'=84
'*'=85
'/'=86
'%'=87
'{'=88
'}'=89
']'=92
')'=94
'metadata'=100
'join'=108
'USING'=109
'as'=132
'info'=136
'rename'=29
'show'=30
'on'=35
'with'=36
'|'=51
'by'=55
'and'=56
'asc'=57
'='=58
'::'=59
':'=60
','=61
'desc'=62
'.'=63
'false'=64
'first'=65
'in'=66
'is'=67
'last'=68
'like'=69
'not'=70
'null'=71
'nulls'=72
'or'=73
'?'=74
'rlike'=75
'true'=76
'=='=77
'=~'=78
'!='=79
'<'=80
'<='=81
'>'=82
'>='=83
'+'=84
'-'=85
'*'=86
'/'=87
'%'=88
'{'=89
'}'=90
']'=95
')'=97
'metadata'=103
'join'=111
'USING'=112
'as'=135
'info'=139

View file

@ -38,6 +38,8 @@ import { IdentifierContext } from "./esql_parser.js";
import { IdentifierPatternContext } from "./esql_parser.js";
import { InputParamContext } from "./esql_parser.js";
import { InputNamedOrPositionalParamContext } from "./esql_parser.js";
import { InputDoubleParamsContext } from "./esql_parser.js";
import { InputNamedOrPositionalDoubleParamsContext } from "./esql_parser.js";
import { IdentifierOrParameterContext } from "./esql_parser.js";
import { LimitCommandContext } from "./esql_parser.js";
import { SortCommandContext } from "./esql_parser.js";
@ -66,6 +68,7 @@ import { ForkSubQueryContext } from "./esql_parser.js";
import { SingleForkSubQueryCommandContext } from "./esql_parser.js";
import { CompositeForkSubQueryContext } from "./esql_parser.js";
import { ForkSubQueryProcessingCommandContext } from "./esql_parser.js";
import { RrfCommandContext } from "./esql_parser.js";
import { MatchExpressionContext } from "./esql_parser.js";
import { LogicalNotContext } from "./esql_parser.js";
import { BooleanDefaultContext } from "./esql_parser.js";
@ -396,6 +399,30 @@ export default class esql_parserListener extends ParseTreeListener {
* @param ctx the parse tree
*/
exitInputNamedOrPositionalParam?: (ctx: InputNamedOrPositionalParamContext) => void;
/**
* Enter a parse tree produced by the `inputDoubleParams`
* labeled alternative in `esql_parser.doubleParameter`.
* @param ctx the parse tree
*/
enterInputDoubleParams?: (ctx: InputDoubleParamsContext) => void;
/**
* Exit a parse tree produced by the `inputDoubleParams`
* labeled alternative in `esql_parser.doubleParameter`.
* @param ctx the parse tree
*/
exitInputDoubleParams?: (ctx: InputDoubleParamsContext) => void;
/**
* Enter a parse tree produced by the `inputNamedOrPositionalDoubleParams`
* labeled alternative in `esql_parser.doubleParameter`.
* @param ctx the parse tree
*/
enterInputNamedOrPositionalDoubleParams?: (ctx: InputNamedOrPositionalDoubleParamsContext) => void;
/**
* Exit a parse tree produced by the `inputNamedOrPositionalDoubleParams`
* labeled alternative in `esql_parser.doubleParameter`.
* @param ctx the parse tree
*/
exitInputNamedOrPositionalDoubleParams?: (ctx: InputNamedOrPositionalDoubleParamsContext) => void;
/**
* Enter a parse tree produced by `esql_parser.identifierOrParameter`.
* @param ctx the parse tree
@ -682,6 +709,16 @@ export default class esql_parserListener extends ParseTreeListener {
* @param ctx the parse tree
*/
exitForkSubQueryProcessingCommand?: (ctx: ForkSubQueryProcessingCommandContext) => void;
/**
* Enter a parse tree produced by `esql_parser.rrfCommand`.
* @param ctx the parse tree
*/
enterRrfCommand?: (ctx: RrfCommandContext) => void;
/**
* Exit a parse tree produced by `esql_parser.rrfCommand`.
* @param ctx the parse tree
*/
exitRrfCommand?: (ctx: RrfCommandContext) => void;
/**
* Enter a parse tree produced by the `matchExpression`
* labeled alternative in `esql_parser.booleanExpression`.

View file

@ -65,6 +65,8 @@ ENRICH_FIELD_QUOTED_IDENTIFIER
ENRICH_FIELD_PARAM : PARAM -> type(PARAM);
ENRICH_FIELD_NAMED_OR_POSITIONAL_PARAM : NAMED_OR_POSITIONAL_PARAM -> type(NAMED_OR_POSITIONAL_PARAM);
ENRICH_FIELD_DOUBLE_PARAMS : {this.isDevVersion()}? DOUBLE_PARAMS -> type(DOUBLE_PARAMS);
ENRICH_FIELD_NAMED_OR_POSITIONAL_DOUBLE_PARAMS : {this.isDevVersion()}? NAMED_OR_POSITIONAL_DOUBLE_PARAMS -> type(NAMED_OR_POSITIONAL_DOUBLE_PARAMS);
ENRICH_FIELD_LINE_COMMENT
: LINE_COMMENT -> channel(HIDDEN)

View file

@ -123,6 +123,8 @@ PERCENT : '%';
LEFT_BRACES : '{';
RIGHT_BRACES : '}';
DOUBLE_PARAMS: {this.isDevVersion()}? '??';
NESTED_WHERE : WHERE -> type(WHERE);
NAMED_OR_POSITIONAL_PARAM
@ -130,6 +132,11 @@ NAMED_OR_POSITIONAL_PARAM
| PARAM DIGIT+
;
NAMED_OR_POSITIONAL_DOUBLE_PARAMS
: DOUBLE_PARAMS (LETTER | UNDERSCORE) UNQUOTED_ID_BODY*
| DOUBLE_PARAMS DIGIT+
;
// Brackets are funny. We can happen upon a CLOSING_BRACKET in two ways - one
// way is to start in an explain command which then shifts us to expression
// mode. Thus, the two popModes on CLOSING_BRACKET. The other way could as

View file

@ -17,6 +17,8 @@ MVEXPAND_PIPE : PIPE -> type(PIPE), popMode;
MVEXPAND_DOT: DOT -> type(DOT);
MVEXPAND_PARAM : PARAM -> type(PARAM);
MVEXPAND_NAMED_OR_POSITIONAL_PARAM : NAMED_OR_POSITIONAL_PARAM -> type(NAMED_OR_POSITIONAL_PARAM);
MVEXPAND_DOUBLE_PARAMS : {this.isDevVersion()}? DOUBLE_PARAMS -> type(DOUBLE_PARAMS);
MVEXPAND_NAMED_OR_POSITIONAL_DOUBLE_PARAMS : {this.isDevVersion()}? NAMED_OR_POSITIONAL_DOUBLE_PARAMS -> type(NAMED_OR_POSITIONAL_DOUBLE_PARAMS);
MVEXPAND_QUOTED_IDENTIFIER
: QUOTED_IDENTIFIER -> type(QUOTED_IDENTIFIER)

View file

@ -19,6 +19,8 @@ PROJECT_DOT: DOT -> type(DOT);
PROJECT_COMMA : COMMA -> type(COMMA);
PROJECT_PARAM : PARAM -> type(PARAM);
PROJECT_NAMED_OR_POSITIONAL_PARAM : NAMED_OR_POSITIONAL_PARAM -> type(NAMED_OR_POSITIONAL_PARAM);
PROJECT_DOUBLE_PARAMS : {this.isDevVersion()}? DOUBLE_PARAMS -> type(DOUBLE_PARAMS);
PROJECT_NAMED_OR_POSITIONAL_DOUBLE_PARAMS : {this.isDevVersion()}? NAMED_OR_POSITIONAL_DOUBLE_PARAMS -> type(NAMED_OR_POSITIONAL_DOUBLE_PARAMS);
fragment UNQUOTED_ID_BODY_WITH_PATTERN
: (LETTER | DIGIT | UNDERSCORE | ASTERISK)

View file

@ -19,6 +19,8 @@ RENAME_COMMA : COMMA -> type(COMMA);
RENAME_DOT: DOT -> type(DOT);
RENAME_PARAM : PARAM -> type(PARAM);
RENAME_NAMED_OR_POSITIONAL_PARAM : NAMED_OR_POSITIONAL_PARAM -> type(NAMED_OR_POSITIONAL_PARAM);
RENAME_DOUBLE_PARAMS : {this.isDevVersion()}? DOUBLE_PARAMS -> type(DOUBLE_PARAMS);
RENAME_NAMED_OR_POSITIONAL_DOUBLE_PARAMS : {this.isDevVersion()}? NAMED_OR_POSITIONAL_DOUBLE_PARAMS -> type(NAMED_OR_POSITIONAL_DOUBLE_PARAMS);
AS : 'as';

View file

@ -0,0 +1,10 @@
/*
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
* or more contributor license agreements. Licensed under the Elastic License
* 2.0; you may not use this file except in compliance with the Elastic License
* 2.0.
*/
lexer grammar Rrf;
DEV_RRF : {this.isDevVersion()}? 'rrf' -> pushMode(EXPRESSION_MODE);

View file

@ -0,0 +1,101 @@
/*
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
* or more contributor license agreements. Licensed under the Elastic License
* 2.0; you may not use this file except in compliance with the Elastic License
* 2.0.
*/
parser grammar Expression;
booleanExpression
: NOT booleanExpression #logicalNot
| valueExpression #booleanDefault
| regexBooleanExpression #regexExpression
| left=booleanExpression operator=AND right=booleanExpression #logicalBinary
| left=booleanExpression operator=OR right=booleanExpression #logicalBinary
| valueExpression (NOT)? IN LP valueExpression (COMMA valueExpression)* RP #logicalIn
| valueExpression IS NOT? NULL #isNull
| matchBooleanExpression #matchExpression
;
regexBooleanExpression
: valueExpression (NOT)? kind=LIKE pattern=string
| valueExpression (NOT)? kind=RLIKE pattern=string
;
matchBooleanExpression
: fieldExp=qualifiedName (CAST_OP fieldType=dataType)? COLON matchQuery=constant
;
valueExpression
: operatorExpression #valueExpressionDefault
| left=operatorExpression comparisonOperator right=operatorExpression #comparison
;
operatorExpression
: primaryExpression #operatorExpressionDefault
| operator=(MINUS | PLUS) operatorExpression #arithmeticUnary
| left=operatorExpression operator=(ASTERISK | SLASH | PERCENT) right=operatorExpression #arithmeticBinary
| left=operatorExpression operator=(PLUS | MINUS) right=operatorExpression #arithmeticBinary
;
primaryExpression
: constant #constantDefault
| qualifiedName #dereference
| functionExpression #function
| LP booleanExpression RP #parenthesizedExpression
| primaryExpression CAST_OP dataType #inlineCast
;
functionExpression
: functionName LP (ASTERISK | (booleanExpression (COMMA booleanExpression)* (COMMA mapExpression)?))? RP
;
functionName
: identifierOrParameter
;
mapExpression
: LEFT_BRACES entryExpression (COMMA entryExpression)* RIGHT_BRACES
;
entryExpression
: key=string COLON value=constant
;
constant
: NULL #nullLiteral
| integerValue UNQUOTED_IDENTIFIER #qualifiedIntegerLiteral
| decimalValue #decimalLiteral
| integerValue #integerLiteral
| booleanValue #booleanLiteral
| parameter #inputParameter
| string #stringLiteral
| OPENING_BRACKET numericValue (COMMA numericValue)* CLOSING_BRACKET #numericArrayLiteral
| OPENING_BRACKET booleanValue (COMMA booleanValue)* CLOSING_BRACKET #booleanArrayLiteral
| OPENING_BRACKET string (COMMA string)* CLOSING_BRACKET #stringArrayLiteral
;
booleanValue
: TRUE | FALSE
;
numericValue
: decimalValue
| integerValue
;
decimalValue
: (PLUS | MINUS)? DECIMAL_LITERAL
;
integerValue
: (PLUS | MINUS)? INTEGER_LITERAL
;
string
: QUOTED_STRING
;
comparisonOperator
: EQ | NEQ | LT | LTE | GT | GTE
;

View file

@ -0,0 +1,25 @@
/*
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
* or more contributor license agreements. Licensed under the Elastic License
* 2.0; you may not use this file except in compliance with the Elastic License
* 2.0.
*/
parser grammar Join;
joinCommand
: type=(JOIN_LOOKUP | DEV_JOIN_LEFT | DEV_JOIN_RIGHT) JOIN joinTarget joinCondition
;
joinTarget
: index=indexPattern
;
joinCondition
: ON joinPredicate (COMMA joinPredicate)*
;
joinPredicate
: valueExpression
;