EQL: Clean grammar from `fork` (#63094) (#63138)

Since `fork` is not used, is undocumented in Python EQL and
there is no plan at the moment to implement it in the future,
removing it  from the grammar. User will get parsing exceptions
instead of higher level messages about unsupported features
which can lead to wrong expectations.

(cherry picked from commit f6a0f8f01c1b1893bab86629d1de73e9f9dae8dc)
This commit is contained in:
Marios Trivyzas 2020-10-01 21:14:41 +02:00 committed by GitHub
parent f0f0da2188
commit 3ad4b00c7e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
9 changed files with 518 additions and 558 deletions

View File

@ -55,7 +55,7 @@ joinTerm
; ;
sequenceTerm sequenceTerm
: subquery (FORK (EQ booleanValue)?)? (by=joinKeys)? : subquery (by=joinKeys)?
; ;
subquery subquery
@ -154,7 +154,6 @@ AND: 'and';
ANY: 'any'; ANY: 'any';
BY: 'by'; BY: 'by';
FALSE: 'false'; FALSE: 'false';
FORK: 'fork';
IN: 'in'; IN: 'in';
JOIN: 'join'; JOIN: 'join';
MAXSPAN: 'maxspan'; MAXSPAN: 'maxspan';

View File

@ -2,79 +2,77 @@ AND=1
ANY=2 ANY=2
BY=3 BY=3
FALSE=4 FALSE=4
FORK=5 IN=5
IN=6 JOIN=6
JOIN=7 MAXSPAN=7
MAXSPAN=8 NOT=8
NOT=9 NULL=9
NULL=10 OF=10
OF=11 OR=11
OR=12 SEQUENCE=12
SEQUENCE=13 TRUE=13
TRUE=14 UNTIL=14
UNTIL=15 WHERE=15
WHERE=16 WITH=16
WITH=17 ASGN=17
ASGN=18 EQ=18
EQ=19 NEQ=19
NEQ=20 LT=20
LT=21 LTE=21
LTE=22 GT=22
GT=23 GTE=23
GTE=24 PLUS=24
PLUS=25 MINUS=25
MINUS=26 ASTERISK=26
ASTERISK=27 SLASH=27
SLASH=28 PERCENT=28
PERCENT=29 DOT=29
DOT=30 COMMA=30
COMMA=31 LB=31
LB=32 RB=32
RB=33 LP=33
LP=34 RP=34
RP=35 PIPE=35
PIPE=36 ESCAPED_IDENTIFIER=36
ESCAPED_IDENTIFIER=37 STRING=37
STRING=38 INTEGER_VALUE=38
INTEGER_VALUE=39 DECIMAL_VALUE=39
DECIMAL_VALUE=40 IDENTIFIER=40
IDENTIFIER=41 LINE_COMMENT=41
LINE_COMMENT=42 BRACKETED_COMMENT=42
BRACKETED_COMMENT=43 WS=43
WS=44
'and'=1 'and'=1
'any'=2 'any'=2
'by'=3 'by'=3
'false'=4 'false'=4
'fork'=5 'in'=5
'in'=6 'join'=6
'join'=7 'maxspan'=7
'maxspan'=8 'not'=8
'not'=9 'null'=9
'null'=10 'of'=10
'of'=11 'or'=11
'or'=12 'sequence'=12
'sequence'=13 'true'=13
'true'=14 'until'=14
'until'=15 'where'=15
'where'=16 'with'=16
'with'=17 '='=17
'='=18 '=='=18
'=='=19 '!='=19
'!='=20 '<'=20
'<'=21 '<='=21
'<='=22 '>'=22
'>'=23 '>='=23
'>='=24 '+'=24
'+'=25 '-'=25
'-'=26 '*'=26
'*'=27 '/'=27
'/'=28 '%'=28
'%'=29 '.'=29
'.'=30 ','=30
','=31 '['=31
'['=32 ']'=32
']'=33 '('=33
'('=34 ')'=34
')'=35 '|'=35
'|'=36

View File

@ -2,79 +2,77 @@ AND=1
ANY=2 ANY=2
BY=3 BY=3
FALSE=4 FALSE=4
FORK=5 IN=5
IN=6 JOIN=6
JOIN=7 MAXSPAN=7
MAXSPAN=8 NOT=8
NOT=9 NULL=9
NULL=10 OF=10
OF=11 OR=11
OR=12 SEQUENCE=12
SEQUENCE=13 TRUE=13
TRUE=14 UNTIL=14
UNTIL=15 WHERE=15
WHERE=16 WITH=16
WITH=17 ASGN=17
ASGN=18 EQ=18
EQ=19 NEQ=19
NEQ=20 LT=20
LT=21 LTE=21
LTE=22 GT=22
GT=23 GTE=23
GTE=24 PLUS=24
PLUS=25 MINUS=25
MINUS=26 ASTERISK=26
ASTERISK=27 SLASH=27
SLASH=28 PERCENT=28
PERCENT=29 DOT=29
DOT=30 COMMA=30
COMMA=31 LB=31
LB=32 RB=32
RB=33 LP=33
LP=34 RP=34
RP=35 PIPE=35
PIPE=36 ESCAPED_IDENTIFIER=36
ESCAPED_IDENTIFIER=37 STRING=37
STRING=38 INTEGER_VALUE=38
INTEGER_VALUE=39 DECIMAL_VALUE=39
DECIMAL_VALUE=40 IDENTIFIER=40
IDENTIFIER=41 LINE_COMMENT=41
LINE_COMMENT=42 BRACKETED_COMMENT=42
BRACKETED_COMMENT=43 WS=43
WS=44
'and'=1 'and'=1
'any'=2 'any'=2
'by'=3 'by'=3
'false'=4 'false'=4
'fork'=5 'in'=5
'in'=6 'join'=6
'join'=7 'maxspan'=7
'maxspan'=8 'not'=8
'not'=9 'null'=9
'null'=10 'of'=10
'of'=11 'or'=11
'or'=12 'sequence'=12
'sequence'=13 'true'=13
'true'=14 'until'=14
'until'=15 'where'=15
'where'=16 'with'=16
'with'=17 '='=17
'='=18 '=='=18
'=='=19 '!='=19
'!='=20 '<'=20
'<'=21 '<='=21
'<='=22 '>'=22
'>'=23 '>='=23
'>='=24 '+'=24
'+'=25 '-'=25
'-'=26 '*'=26
'*'=27 '/'=27
'/'=28 '%'=28
'%'=29 '.'=29
'.'=30 ','=30
','=31 '['=31
'['=32 ']'=32
']'=33 '('=33
'('=34 ')'=34
')'=35 '|'=35
'|'=36

View File

@ -17,36 +17,36 @@ class EqlBaseLexer extends Lexer {
protected static final PredictionContextCache _sharedContextCache = protected static final PredictionContextCache _sharedContextCache =
new PredictionContextCache(); new PredictionContextCache();
public static final int public static final int
AND=1, ANY=2, BY=3, FALSE=4, FORK=5, IN=6, JOIN=7, MAXSPAN=8, NOT=9, NULL=10, AND=1, ANY=2, BY=3, FALSE=4, IN=5, JOIN=6, MAXSPAN=7, NOT=8, NULL=9, OF=10,
OF=11, OR=12, SEQUENCE=13, TRUE=14, UNTIL=15, WHERE=16, WITH=17, ASGN=18, OR=11, SEQUENCE=12, TRUE=13, UNTIL=14, WHERE=15, WITH=16, ASGN=17, EQ=18,
EQ=19, NEQ=20, LT=21, LTE=22, GT=23, GTE=24, PLUS=25, MINUS=26, ASTERISK=27, NEQ=19, LT=20, LTE=21, GT=22, GTE=23, PLUS=24, MINUS=25, ASTERISK=26,
SLASH=28, PERCENT=29, DOT=30, COMMA=31, LB=32, RB=33, LP=34, RP=35, PIPE=36, SLASH=27, PERCENT=28, DOT=29, COMMA=30, LB=31, RB=32, LP=33, RP=34, PIPE=35,
ESCAPED_IDENTIFIER=37, STRING=38, INTEGER_VALUE=39, DECIMAL_VALUE=40, ESCAPED_IDENTIFIER=36, STRING=37, INTEGER_VALUE=38, DECIMAL_VALUE=39,
IDENTIFIER=41, LINE_COMMENT=42, BRACKETED_COMMENT=43, WS=44; IDENTIFIER=40, LINE_COMMENT=41, BRACKETED_COMMENT=42, WS=43;
public static String[] modeNames = { public static String[] modeNames = {
"DEFAULT_MODE" "DEFAULT_MODE"
}; };
public static final String[] ruleNames = { public static final String[] ruleNames = {
"AND", "ANY", "BY", "FALSE", "FORK", "IN", "JOIN", "MAXSPAN", "NOT", "NULL", "AND", "ANY", "BY", "FALSE", "IN", "JOIN", "MAXSPAN", "NOT", "NULL", "OF",
"OF", "OR", "SEQUENCE", "TRUE", "UNTIL", "WHERE", "WITH", "ASGN", "EQ", "OR", "SEQUENCE", "TRUE", "UNTIL", "WHERE", "WITH", "ASGN", "EQ", "NEQ",
"NEQ", "LT", "LTE", "GT", "GTE", "PLUS", "MINUS", "ASTERISK", "SLASH", "LT", "LTE", "GT", "GTE", "PLUS", "MINUS", "ASTERISK", "SLASH", "PERCENT",
"PERCENT", "DOT", "COMMA", "LB", "RB", "LP", "RP", "PIPE", "ESCAPED_IDENTIFIER", "DOT", "COMMA", "LB", "RB", "LP", "RP", "PIPE", "ESCAPED_IDENTIFIER",
"STRING", "INTEGER_VALUE", "DECIMAL_VALUE", "IDENTIFIER", "EXPONENT", "STRING", "INTEGER_VALUE", "DECIMAL_VALUE", "IDENTIFIER", "EXPONENT",
"DIGIT", "LETTER", "LINE_COMMENT", "BRACKETED_COMMENT", "WS" "DIGIT", "LETTER", "LINE_COMMENT", "BRACKETED_COMMENT", "WS"
}; };
private static final String[] _LITERAL_NAMES = { private static final String[] _LITERAL_NAMES = {
null, "'and'", "'any'", "'by'", "'false'", "'fork'", "'in'", "'join'", null, "'and'", "'any'", "'by'", "'false'", "'in'", "'join'", "'maxspan'",
"'maxspan'", "'not'", "'null'", "'of'", "'or'", "'sequence'", "'true'", "'not'", "'null'", "'of'", "'or'", "'sequence'", "'true'", "'until'",
"'until'", "'where'", "'with'", "'='", "'=='", "'!='", "'<'", "'<='", "'where'", "'with'", "'='", "'=='", "'!='", "'<'", "'<='", "'>'", "'>='",
"'>'", "'>='", "'+'", "'-'", "'*'", "'/'", "'%'", "'.'", "','", "'['", "'+'", "'-'", "'*'", "'/'", "'%'", "'.'", "','", "'['", "']'", "'('",
"']'", "'('", "')'", "'|'" "')'", "'|'"
}; };
private static final String[] _SYMBOLIC_NAMES = { private static final String[] _SYMBOLIC_NAMES = {
null, "AND", "ANY", "BY", "FALSE", "FORK", "IN", "JOIN", "MAXSPAN", "NOT", null, "AND", "ANY", "BY", "FALSE", "IN", "JOIN", "MAXSPAN", "NOT", "NULL",
"NULL", "OF", "OR", "SEQUENCE", "TRUE", "UNTIL", "WHERE", "WITH", "ASGN", "OF", "OR", "SEQUENCE", "TRUE", "UNTIL", "WHERE", "WITH", "ASGN", "EQ",
"EQ", "NEQ", "LT", "LTE", "GT", "GTE", "PLUS", "MINUS", "ASTERISK", "SLASH", "NEQ", "LT", "LTE", "GT", "GTE", "PLUS", "MINUS", "ASTERISK", "SLASH",
"PERCENT", "DOT", "COMMA", "LB", "RB", "LP", "RP", "PIPE", "ESCAPED_IDENTIFIER", "PERCENT", "DOT", "COMMA", "LB", "RB", "LP", "RP", "PIPE", "ESCAPED_IDENTIFIER",
"STRING", "INTEGER_VALUE", "DECIMAL_VALUE", "IDENTIFIER", "LINE_COMMENT", "STRING", "INTEGER_VALUE", "DECIMAL_VALUE", "IDENTIFIER", "LINE_COMMENT",
"BRACKETED_COMMENT", "WS" "BRACKETED_COMMENT", "WS"
@ -106,143 +106,140 @@ class EqlBaseLexer extends Lexer {
public ATN getATN() { return _ATN; } public ATN getATN() { return _ATN; }
public static final String _serializedATN = public static final String _serializedATN =
"\3\u0430\ud6d1\u8206\uad2d\u4417\uaef1\u8d80\uaadd\2.\u0189\b\1\4\2\t"+ "\3\u0430\ud6d1\u8206\uad2d\u4417\uaef1\u8d80\uaadd\2-\u0182\b\1\4\2\t"+
"\2\4\3\t\3\4\4\t\4\4\5\t\5\4\6\t\6\4\7\t\7\4\b\t\b\4\t\t\t\4\n\t\n\4\13"+ "\2\4\3\t\3\4\4\t\4\4\5\t\5\4\6\t\6\4\7\t\7\4\b\t\b\4\t\t\t\4\n\t\n\4\13"+
"\t\13\4\f\t\f\4\r\t\r\4\16\t\16\4\17\t\17\4\20\t\20\4\21\t\21\4\22\t\22"+ "\t\13\4\f\t\f\4\r\t\r\4\16\t\16\4\17\t\17\4\20\t\20\4\21\t\21\4\22\t\22"+
"\4\23\t\23\4\24\t\24\4\25\t\25\4\26\t\26\4\27\t\27\4\30\t\30\4\31\t\31"+ "\4\23\t\23\4\24\t\24\4\25\t\25\4\26\t\26\4\27\t\27\4\30\t\30\4\31\t\31"+
"\4\32\t\32\4\33\t\33\4\34\t\34\4\35\t\35\4\36\t\36\4\37\t\37\4 \t \4!"+ "\4\32\t\32\4\33\t\33\4\34\t\34\4\35\t\35\4\36\t\36\4\37\t\37\4 \t \4!"+
"\t!\4\"\t\"\4#\t#\4$\t$\4%\t%\4&\t&\4\'\t\'\4(\t(\4)\t)\4*\t*\4+\t+\4"+ "\t!\4\"\t\"\4#\t#\4$\t$\4%\t%\4&\t&\4\'\t\'\4(\t(\4)\t)\4*\t*\4+\t+\4"+
",\t,\4-\t-\4.\t.\4/\t/\4\60\t\60\3\2\3\2\3\2\3\2\3\3\3\3\3\3\3\3\3\4\3"+ ",\t,\4-\t-\4.\t.\4/\t/\3\2\3\2\3\2\3\2\3\3\3\3\3\3\3\3\3\4\3\4\3\4\3\5"+
"\4\3\4\3\5\3\5\3\5\3\5\3\5\3\5\3\6\3\6\3\6\3\6\3\6\3\7\3\7\3\7\3\b\3\b"+ "\3\5\3\5\3\5\3\5\3\5\3\6\3\6\3\6\3\7\3\7\3\7\3\7\3\7\3\b\3\b\3\b\3\b\3"+
"\3\b\3\b\3\b\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\n\3\n\3\n\3\n\3\13\3\13"+ "\b\3\b\3\b\3\b\3\t\3\t\3\t\3\t\3\n\3\n\3\n\3\n\3\n\3\13\3\13\3\13\3\f"+
"\3\13\3\13\3\13\3\f\3\f\3\f\3\r\3\r\3\r\3\16\3\16\3\16\3\16\3\16\3\16"+ "\3\f\3\f\3\r\3\r\3\r\3\r\3\r\3\r\3\r\3\r\3\r\3\16\3\16\3\16\3\16\3\16"+
"\3\16\3\16\3\16\3\17\3\17\3\17\3\17\3\17\3\20\3\20\3\20\3\20\3\20\3\20"+ "\3\17\3\17\3\17\3\17\3\17\3\17\3\20\3\20\3\20\3\20\3\20\3\20\3\21\3\21"+
"\3\21\3\21\3\21\3\21\3\21\3\21\3\22\3\22\3\22\3\22\3\22\3\23\3\23\3\24"+ "\3\21\3\21\3\21\3\22\3\22\3\23\3\23\3\23\3\24\3\24\3\24\3\25\3\25\3\26"+
"\3\24\3\24\3\25\3\25\3\25\3\26\3\26\3\27\3\27\3\27\3\30\3\30\3\31\3\31"+ "\3\26\3\26\3\27\3\27\3\30\3\30\3\30\3\31\3\31\3\32\3\32\3\33\3\33\3\34"+
"\3\31\3\32\3\32\3\33\3\33\3\34\3\34\3\35\3\35\3\36\3\36\3\37\3\37\3 \3"+ "\3\34\3\35\3\35\3\36\3\36\3\37\3\37\3 \3 \3!\3!\3\"\3\"\3#\3#\3$\3$\3"+
" \3!\3!\3\"\3\"\3#\3#\3$\3$\3%\3%\3&\3&\3&\3&\7&\u00e4\n&\f&\16&\u00e7"+ "%\3%\3%\3%\7%\u00dd\n%\f%\16%\u00e0\13%\3%\3%\3&\3&\3&\3&\7&\u00e8\n&"+
"\13&\3&\3&\3\'\3\'\3\'\3\'\7\'\u00ef\n\'\f\'\16\'\u00f2\13\'\3\'\3\'\3"+ "\f&\16&\u00eb\13&\3&\3&\3&\3&\3&\7&\u00f2\n&\f&\16&\u00f5\13&\3&\3&\3"+
"\'\3\'\3\'\7\'\u00f9\n\'\f\'\16\'\u00fc\13\'\3\'\3\'\3\'\3\'\3\'\3\'\3"+ "&\3&\3&\3&\3&\7&\u00fe\n&\f&\16&\u0101\13&\3&\3&\3&\3&\3&\3&\3&\7&\u010a"+
"\'\7\'\u0105\n\'\f\'\16\'\u0108\13\'\3\'\3\'\3\'\3\'\3\'\3\'\3\'\7\'\u0111"+ "\n&\f&\16&\u010d\13&\3&\5&\u0110\n&\3\'\6\'\u0113\n\'\r\'\16\'\u0114\3"+
"\n\'\f\'\16\'\u0114\13\'\3\'\5\'\u0117\n\'\3(\6(\u011a\n(\r(\16(\u011b"+ "(\6(\u0118\n(\r(\16(\u0119\3(\3(\7(\u011e\n(\f(\16(\u0121\13(\3(\3(\6"+
"\3)\6)\u011f\n)\r)\16)\u0120\3)\3)\7)\u0125\n)\f)\16)\u0128\13)\3)\3)"+ "(\u0125\n(\r(\16(\u0126\3(\6(\u012a\n(\r(\16(\u012b\3(\3(\7(\u0130\n("+
"\6)\u012c\n)\r)\16)\u012d\3)\6)\u0131\n)\r)\16)\u0132\3)\3)\7)\u0137\n"+ "\f(\16(\u0133\13(\5(\u0135\n(\3(\3(\3(\3(\6(\u013b\n(\r(\16(\u013c\3("+
")\f)\16)\u013a\13)\5)\u013c\n)\3)\3)\3)\3)\6)\u0142\n)\r)\16)\u0143\3"+ "\3(\5(\u0141\n(\3)\3)\5)\u0145\n)\3)\3)\3)\7)\u014a\n)\f)\16)\u014d\13"+
")\3)\5)\u0148\n)\3*\3*\5*\u014c\n*\3*\3*\3*\7*\u0151\n*\f*\16*\u0154\13"+ ")\3*\3*\5*\u0151\n*\3*\6*\u0154\n*\r*\16*\u0155\3+\3+\3,\3,\3-\3-\3-\3"+
"*\3+\3+\5+\u0158\n+\3+\6+\u015b\n+\r+\16+\u015c\3,\3,\3-\3-\3.\3.\3.\3"+ "-\7-\u0160\n-\f-\16-\u0163\13-\3-\5-\u0166\n-\3-\5-\u0169\n-\3-\3-\3."+
".\7.\u0167\n.\f.\16.\u016a\13.\3.\5.\u016d\n.\3.\5.\u0170\n.\3.\3.\3/"+ "\3.\3.\3.\3.\7.\u0172\n.\f.\16.\u0175\13.\3.\3.\3.\3.\3.\3/\6/\u017d\n"+
"\3/\3/\3/\3/\7/\u0179\n/\f/\16/\u017c\13/\3/\3/\3/\3/\3/\3\60\6\60\u0184"+ "/\r/\16/\u017e\3/\3/\3\u0173\2\60\3\3\5\4\7\5\t\6\13\7\r\b\17\t\21\n\23"+
"\n\60\r\60\16\60\u0185\3\60\3\60\3\u017a\2\61\3\3\5\4\7\5\t\6\13\7\r\b"+ "\13\25\f\27\r\31\16\33\17\35\20\37\21!\22#\23%\24\'\25)\26+\27-\30/\31"+
"\17\t\21\n\23\13\25\f\27\r\31\16\33\17\35\20\37\21!\22#\23%\24\'\25)\26"+ "\61\32\63\33\65\34\67\359\36;\37= ?!A\"C#E$G%I&K\'M(O)Q*S\2U\2W\2Y+[,"+
"+\27-\30/\31\61\32\63\33\65\34\67\359\36;\37= ?!A\"C#E$G%I&K\'M(O)Q*S"+ "]-\3\2\17\3\2bb\n\2$$))^^ddhhppttvv\6\2\f\f\17\17))^^\6\2\f\f\17\17$$"+
"+U\2W\2Y\2[,]-_.\3\2\17\3\2bb\n\2$$))^^ddhhppttvv\6\2\f\f\17\17))^^\6"+ "^^\5\2\f\f\17\17$$\5\2\f\f\17\17))\4\2BBaa\4\2GGgg\4\2--//\3\2\62;\4\2"+
"\2\f\f\17\17$$^^\5\2\f\f\17\17$$\5\2\f\f\17\17))\4\2BBaa\4\2GGgg\4\2-"+ "C\\c|\4\2\f\f\17\17\5\2\13\f\17\17\"\"\u01a2\2\3\3\2\2\2\2\5\3\2\2\2\2"+
"-//\3\2\62;\4\2C\\c|\4\2\f\f\17\17\5\2\13\f\17\17\"\"\u01a9\2\3\3\2\2"+ "\7\3\2\2\2\2\t\3\2\2\2\2\13\3\2\2\2\2\r\3\2\2\2\2\17\3\2\2\2\2\21\3\2"+
"\2\2\5\3\2\2\2\2\7\3\2\2\2\2\t\3\2\2\2\2\13\3\2\2\2\2\r\3\2\2\2\2\17\3"+ "\2\2\2\23\3\2\2\2\2\25\3\2\2\2\2\27\3\2\2\2\2\31\3\2\2\2\2\33\3\2\2\2"+
"\2\2\2\2\21\3\2\2\2\2\23\3\2\2\2\2\25\3\2\2\2\2\27\3\2\2\2\2\31\3\2\2"+ "\2\35\3\2\2\2\2\37\3\2\2\2\2!\3\2\2\2\2#\3\2\2\2\2%\3\2\2\2\2\'\3\2\2"+
"\2\2\33\3\2\2\2\2\35\3\2\2\2\2\37\3\2\2\2\2!\3\2\2\2\2#\3\2\2\2\2%\3\2"+ "\2\2)\3\2\2\2\2+\3\2\2\2\2-\3\2\2\2\2/\3\2\2\2\2\61\3\2\2\2\2\63\3\2\2"+
"\2\2\2\'\3\2\2\2\2)\3\2\2\2\2+\3\2\2\2\2-\3\2\2\2\2/\3\2\2\2\2\61\3\2"+ "\2\2\65\3\2\2\2\2\67\3\2\2\2\29\3\2\2\2\2;\3\2\2\2\2=\3\2\2\2\2?\3\2\2"+
"\2\2\2\63\3\2\2\2\2\65\3\2\2\2\2\67\3\2\2\2\29\3\2\2\2\2;\3\2\2\2\2=\3"+ "\2\2A\3\2\2\2\2C\3\2\2\2\2E\3\2\2\2\2G\3\2\2\2\2I\3\2\2\2\2K\3\2\2\2\2"+
"\2\2\2\2?\3\2\2\2\2A\3\2\2\2\2C\3\2\2\2\2E\3\2\2\2\2G\3\2\2\2\2I\3\2\2"+ "M\3\2\2\2\2O\3\2\2\2\2Q\3\2\2\2\2Y\3\2\2\2\2[\3\2\2\2\2]\3\2\2\2\3_\3"+
"\2\2K\3\2\2\2\2M\3\2\2\2\2O\3\2\2\2\2Q\3\2\2\2\2S\3\2\2\2\2[\3\2\2\2\2"+ "\2\2\2\5c\3\2\2\2\7g\3\2\2\2\tj\3\2\2\2\13p\3\2\2\2\rs\3\2\2\2\17x\3\2"+
"]\3\2\2\2\2_\3\2\2\2\3a\3\2\2\2\5e\3\2\2\2\7i\3\2\2\2\tl\3\2\2\2\13r\3"+ "\2\2\21\u0080\3\2\2\2\23\u0084\3\2\2\2\25\u0089\3\2\2\2\27\u008c\3\2\2"+
"\2\2\2\rw\3\2\2\2\17z\3\2\2\2\21\177\3\2\2\2\23\u0087\3\2\2\2\25\u008b"+ "\2\31\u008f\3\2\2\2\33\u0098\3\2\2\2\35\u009d\3\2\2\2\37\u00a3\3\2\2\2"+
"\3\2\2\2\27\u0090\3\2\2\2\31\u0093\3\2\2\2\33\u0096\3\2\2\2\35\u009f\3"+ "!\u00a9\3\2\2\2#\u00ae\3\2\2\2%\u00b0\3\2\2\2\'\u00b3\3\2\2\2)\u00b6\3"+
"\2\2\2\37\u00a4\3\2\2\2!\u00aa\3\2\2\2#\u00b0\3\2\2\2%\u00b5\3\2\2\2\'"+ "\2\2\2+\u00b8\3\2\2\2-\u00bb\3\2\2\2/\u00bd\3\2\2\2\61\u00c0\3\2\2\2\63"+
"\u00b7\3\2\2\2)\u00ba\3\2\2\2+\u00bd\3\2\2\2-\u00bf\3\2\2\2/\u00c2\3\2"+ "\u00c2\3\2\2\2\65\u00c4\3\2\2\2\67\u00c6\3\2\2\29\u00c8\3\2\2\2;\u00ca"+
"\2\2\61\u00c4\3\2\2\2\63\u00c7\3\2\2\2\65\u00c9\3\2\2\2\67\u00cb\3\2\2"+ "\3\2\2\2=\u00cc\3\2\2\2?\u00ce\3\2\2\2A\u00d0\3\2\2\2C\u00d2\3\2\2\2E"+
"\29\u00cd\3\2\2\2;\u00cf\3\2\2\2=\u00d1\3\2\2\2?\u00d3\3\2\2\2A\u00d5"+ "\u00d4\3\2\2\2G\u00d6\3\2\2\2I\u00d8\3\2\2\2K\u010f\3\2\2\2M\u0112\3\2"+
"\3\2\2\2C\u00d7\3\2\2\2E\u00d9\3\2\2\2G\u00db\3\2\2\2I\u00dd\3\2\2\2K"+ "\2\2O\u0140\3\2\2\2Q\u0144\3\2\2\2S\u014e\3\2\2\2U\u0157\3\2\2\2W\u0159"+
"\u00df\3\2\2\2M\u0116\3\2\2\2O\u0119\3\2\2\2Q\u0147\3\2\2\2S\u014b\3\2"+ "\3\2\2\2Y\u015b\3\2\2\2[\u016c\3\2\2\2]\u017c\3\2\2\2_`\7c\2\2`a\7p\2"+
"\2\2U\u0155\3\2\2\2W\u015e\3\2\2\2Y\u0160\3\2\2\2[\u0162\3\2\2\2]\u0173"+ "\2ab\7f\2\2b\4\3\2\2\2cd\7c\2\2de\7p\2\2ef\7{\2\2f\6\3\2\2\2gh\7d\2\2"+
"\3\2\2\2_\u0183\3\2\2\2ab\7c\2\2bc\7p\2\2cd\7f\2\2d\4\3\2\2\2ef\7c\2\2"+ "hi\7{\2\2i\b\3\2\2\2jk\7h\2\2kl\7c\2\2lm\7n\2\2mn\7u\2\2no\7g\2\2o\n\3"+
"fg\7p\2\2gh\7{\2\2h\6\3\2\2\2ij\7d\2\2jk\7{\2\2k\b\3\2\2\2lm\7h\2\2mn"+ "\2\2\2pq\7k\2\2qr\7p\2\2r\f\3\2\2\2st\7l\2\2tu\7q\2\2uv\7k\2\2vw\7p\2"+
"\7c\2\2no\7n\2\2op\7u\2\2pq\7g\2\2q\n\3\2\2\2rs\7h\2\2st\7q\2\2tu\7t\2"+ "\2w\16\3\2\2\2xy\7o\2\2yz\7c\2\2z{\7z\2\2{|\7u\2\2|}\7r\2\2}~\7c\2\2~"+
"\2uv\7m\2\2v\f\3\2\2\2wx\7k\2\2xy\7p\2\2y\16\3\2\2\2z{\7l\2\2{|\7q\2\2"+ "\177\7p\2\2\177\20\3\2\2\2\u0080\u0081\7p\2\2\u0081\u0082\7q\2\2\u0082"+
"|}\7k\2\2}~\7p\2\2~\20\3\2\2\2\177\u0080\7o\2\2\u0080\u0081\7c\2\2\u0081"+ "\u0083\7v\2\2\u0083\22\3\2\2\2\u0084\u0085\7p\2\2\u0085\u0086\7w\2\2\u0086"+
"\u0082\7z\2\2\u0082\u0083\7u\2\2\u0083\u0084\7r\2\2\u0084\u0085\7c\2\2"+ "\u0087\7n\2\2\u0087\u0088\7n\2\2\u0088\24\3\2\2\2\u0089\u008a\7q\2\2\u008a"+
"\u0085\u0086\7p\2\2\u0086\22\3\2\2\2\u0087\u0088\7p\2\2\u0088\u0089\7"+ "\u008b\7h\2\2\u008b\26\3\2\2\2\u008c\u008d\7q\2\2\u008d\u008e\7t\2\2\u008e"+
"q\2\2\u0089\u008a\7v\2\2\u008a\24\3\2\2\2\u008b\u008c\7p\2\2\u008c\u008d"+ "\30\3\2\2\2\u008f\u0090\7u\2\2\u0090\u0091\7g\2\2\u0091\u0092\7s\2\2\u0092"+
"\7w\2\2\u008d\u008e\7n\2\2\u008e\u008f\7n\2\2\u008f\26\3\2\2\2\u0090\u0091"+ "\u0093\7w\2\2\u0093\u0094\7g\2\2\u0094\u0095\7p\2\2\u0095\u0096\7e\2\2"+
"\7q\2\2\u0091\u0092\7h\2\2\u0092\30\3\2\2\2\u0093\u0094\7q\2\2\u0094\u0095"+ "\u0096\u0097\7g\2\2\u0097\32\3\2\2\2\u0098\u0099\7v\2\2\u0099\u009a\7"+
"\7t\2\2\u0095\32\3\2\2\2\u0096\u0097\7u\2\2\u0097\u0098\7g\2\2\u0098\u0099"+ "t\2\2\u009a\u009b\7w\2\2\u009b\u009c\7g\2\2\u009c\34\3\2\2\2\u009d\u009e"+
"\7s\2\2\u0099\u009a\7w\2\2\u009a\u009b\7g\2\2\u009b\u009c\7p\2\2\u009c"+ "\7w\2\2\u009e\u009f\7p\2\2\u009f\u00a0\7v\2\2\u00a0\u00a1\7k\2\2\u00a1"+
"\u009d\7e\2\2\u009d\u009e\7g\2\2\u009e\34\3\2\2\2\u009f\u00a0\7v\2\2\u00a0"+ "\u00a2\7n\2\2\u00a2\36\3\2\2\2\u00a3\u00a4\7y\2\2\u00a4\u00a5\7j\2\2\u00a5"+
"\u00a1\7t\2\2\u00a1\u00a2\7w\2\2\u00a2\u00a3\7g\2\2\u00a3\36\3\2\2\2\u00a4"+ "\u00a6\7g\2\2\u00a6\u00a7\7t\2\2\u00a7\u00a8\7g\2\2\u00a8 \3\2\2\2\u00a9"+
"\u00a5\7w\2\2\u00a5\u00a6\7p\2\2\u00a6\u00a7\7v\2\2\u00a7\u00a8\7k\2\2"+ "\u00aa\7y\2\2\u00aa\u00ab\7k\2\2\u00ab\u00ac\7v\2\2\u00ac\u00ad\7j\2\2"+
"\u00a8\u00a9\7n\2\2\u00a9 \3\2\2\2\u00aa\u00ab\7y\2\2\u00ab\u00ac\7j\2"+ "\u00ad\"\3\2\2\2\u00ae\u00af\7?\2\2\u00af$\3\2\2\2\u00b0\u00b1\7?\2\2"+
"\2\u00ac\u00ad\7g\2\2\u00ad\u00ae\7t\2\2\u00ae\u00af\7g\2\2\u00af\"\3"+ "\u00b1\u00b2\7?\2\2\u00b2&\3\2\2\2\u00b3\u00b4\7#\2\2\u00b4\u00b5\7?\2"+
"\2\2\2\u00b0\u00b1\7y\2\2\u00b1\u00b2\7k\2\2\u00b2\u00b3\7v\2\2\u00b3"+ "\2\u00b5(\3\2\2\2\u00b6\u00b7\7>\2\2\u00b7*\3\2\2\2\u00b8\u00b9\7>\2\2"+
"\u00b4\7j\2\2\u00b4$\3\2\2\2\u00b5\u00b6\7?\2\2\u00b6&\3\2\2\2\u00b7\u00b8"+ "\u00b9\u00ba\7?\2\2\u00ba,\3\2\2\2\u00bb\u00bc\7@\2\2\u00bc.\3\2\2\2\u00bd"+
"\7?\2\2\u00b8\u00b9\7?\2\2\u00b9(\3\2\2\2\u00ba\u00bb\7#\2\2\u00bb\u00bc"+ "\u00be\7@\2\2\u00be\u00bf\7?\2\2\u00bf\60\3\2\2\2\u00c0\u00c1\7-\2\2\u00c1"+
"\7?\2\2\u00bc*\3\2\2\2\u00bd\u00be\7>\2\2\u00be,\3\2\2\2\u00bf\u00c0\7"+ "\62\3\2\2\2\u00c2\u00c3\7/\2\2\u00c3\64\3\2\2\2\u00c4\u00c5\7,\2\2\u00c5"+
">\2\2\u00c0\u00c1\7?\2\2\u00c1.\3\2\2\2\u00c2\u00c3\7@\2\2\u00c3\60\3"+ "\66\3\2\2\2\u00c6\u00c7\7\61\2\2\u00c78\3\2\2\2\u00c8\u00c9\7\'\2\2\u00c9"+
"\2\2\2\u00c4\u00c5\7@\2\2\u00c5\u00c6\7?\2\2\u00c6\62\3\2\2\2\u00c7\u00c8"+ ":\3\2\2\2\u00ca\u00cb\7\60\2\2\u00cb<\3\2\2\2\u00cc\u00cd\7.\2\2\u00cd"+
"\7-\2\2\u00c8\64\3\2\2\2\u00c9\u00ca\7/\2\2\u00ca\66\3\2\2\2\u00cb\u00cc"+ ">\3\2\2\2\u00ce\u00cf\7]\2\2\u00cf@\3\2\2\2\u00d0\u00d1\7_\2\2\u00d1B"+
"\7,\2\2\u00cc8\3\2\2\2\u00cd\u00ce\7\61\2\2\u00ce:\3\2\2\2\u00cf\u00d0"+ "\3\2\2\2\u00d2\u00d3\7*\2\2\u00d3D\3\2\2\2\u00d4\u00d5\7+\2\2\u00d5F\3"+
"\7\'\2\2\u00d0<\3\2\2\2\u00d1\u00d2\7\60\2\2\u00d2>\3\2\2\2\u00d3\u00d4"+ "\2\2\2\u00d6\u00d7\7~\2\2\u00d7H\3\2\2\2\u00d8\u00de\7b\2\2\u00d9\u00dd"+
"\7.\2\2\u00d4@\3\2\2\2\u00d5\u00d6\7]\2\2\u00d6B\3\2\2\2\u00d7\u00d8\7"+ "\n\2\2\2\u00da\u00db\7b\2\2\u00db\u00dd\7b\2\2\u00dc\u00d9\3\2\2\2\u00dc"+
"_\2\2\u00d8D\3\2\2\2\u00d9\u00da\7*\2\2\u00daF\3\2\2\2\u00db\u00dc\7+"+ "\u00da\3\2\2\2\u00dd\u00e0\3\2\2\2\u00de\u00dc\3\2\2\2\u00de\u00df\3\2"+
"\2\2\u00dcH\3\2\2\2\u00dd\u00de\7~\2\2\u00deJ\3\2\2\2\u00df\u00e5\7b\2"+ "\2\2\u00df\u00e1\3\2\2\2\u00e0\u00de\3\2\2\2\u00e1\u00e2\7b\2\2\u00e2"+
"\2\u00e0\u00e4\n\2\2\2\u00e1\u00e2\7b\2\2\u00e2\u00e4\7b\2\2\u00e3\u00e0"+ "J\3\2\2\2\u00e3\u00e9\7)\2\2\u00e4\u00e5\7^\2\2\u00e5\u00e8\t\3\2\2\u00e6"+
"\3\2\2\2\u00e3\u00e1\3\2\2\2\u00e4\u00e7\3\2\2\2\u00e5\u00e3\3\2\2\2\u00e5"+ "\u00e8\n\4\2\2\u00e7\u00e4\3\2\2\2\u00e7\u00e6\3\2\2\2\u00e8\u00eb\3\2"+
"\u00e6\3\2\2\2\u00e6\u00e8\3\2\2\2\u00e7\u00e5\3\2\2\2\u00e8\u00e9\7b"+ "\2\2\u00e9\u00e7\3\2\2\2\u00e9\u00ea\3\2\2\2\u00ea\u00ec\3\2\2\2\u00eb"+
"\2\2\u00e9L\3\2\2\2\u00ea\u00f0\7)\2\2\u00eb\u00ec\7^\2\2\u00ec\u00ef"+ "\u00e9\3\2\2\2\u00ec\u0110\7)\2\2\u00ed\u00f3\7$\2\2\u00ee\u00ef\7^\2"+
"\t\3\2\2\u00ed\u00ef\n\4\2\2\u00ee\u00eb\3\2\2\2\u00ee\u00ed\3\2\2\2\u00ef"+ "\2\u00ef\u00f2\t\3\2\2\u00f0\u00f2\n\5\2\2\u00f1\u00ee\3\2\2\2\u00f1\u00f0"+
"\u00f2\3\2\2\2\u00f0\u00ee\3\2\2\2\u00f0\u00f1\3\2\2\2\u00f1\u00f3\3\2"+ "\3\2\2\2\u00f2\u00f5\3\2\2\2\u00f3\u00f1\3\2\2\2\u00f3\u00f4\3\2\2\2\u00f4"+
"\2\2\u00f2\u00f0\3\2\2\2\u00f3\u0117\7)\2\2\u00f4\u00fa\7$\2\2\u00f5\u00f6"+ "\u00f6\3\2\2\2\u00f5\u00f3\3\2\2\2\u00f6\u0110\7$\2\2\u00f7\u00f8\7A\2"+
"\7^\2\2\u00f6\u00f9\t\3\2\2\u00f7\u00f9\n\5\2\2\u00f8\u00f5\3\2\2\2\u00f8"+ "\2\u00f8\u00f9\7$\2\2\u00f9\u00ff\3\2\2\2\u00fa\u00fb\7^\2\2\u00fb\u00fe"+
"\u00f7\3\2\2\2\u00f9\u00fc\3\2\2\2\u00fa\u00f8\3\2\2\2\u00fa\u00fb\3\2"+ "\7$\2\2\u00fc\u00fe\n\6\2\2\u00fd\u00fa\3\2\2\2\u00fd\u00fc\3\2\2\2\u00fe"+
"\2\2\u00fb\u00fd\3\2\2\2\u00fc\u00fa\3\2\2\2\u00fd\u0117\7$\2\2\u00fe"+ "\u0101\3\2\2\2\u00ff\u00fd\3\2\2\2\u00ff\u0100\3\2\2\2\u0100\u0102\3\2"+
"\u00ff\7A\2\2\u00ff\u0100\7$\2\2\u0100\u0106\3\2\2\2\u0101\u0102\7^\2"+ "\2\2\u0101\u00ff\3\2\2\2\u0102\u0110\7$\2\2\u0103\u0104\7A\2\2\u0104\u0105"+
"\2\u0102\u0105\7$\2\2\u0103\u0105\n\6\2\2\u0104\u0101\3\2\2\2\u0104\u0103"+ "\7)\2\2\u0105\u010b\3\2\2\2\u0106\u0107\7^\2\2\u0107\u010a\7)\2\2\u0108"+
"\3\2\2\2\u0105\u0108\3\2\2\2\u0106\u0104\3\2\2\2\u0106\u0107\3\2\2\2\u0107"+ "\u010a\n\7\2\2\u0109\u0106\3\2\2\2\u0109\u0108\3\2\2\2\u010a\u010d\3\2"+
"\u0109\3\2\2\2\u0108\u0106\3\2\2\2\u0109\u0117\7$\2\2\u010a\u010b\7A\2"+ "\2\2\u010b\u0109\3\2\2\2\u010b\u010c\3\2\2\2\u010c\u010e\3\2\2\2\u010d"+
"\2\u010b\u010c\7)\2\2\u010c\u0112\3\2\2\2\u010d\u010e\7^\2\2\u010e\u0111"+ "\u010b\3\2\2\2\u010e\u0110\7)\2\2\u010f\u00e3\3\2\2\2\u010f\u00ed\3\2"+
"\7)\2\2\u010f\u0111\n\7\2\2\u0110\u010d\3\2\2\2\u0110\u010f\3\2\2\2\u0111"+ "\2\2\u010f\u00f7\3\2\2\2\u010f\u0103\3\2\2\2\u0110L\3\2\2\2\u0111\u0113"+
"\u0114\3\2\2\2\u0112\u0110\3\2\2\2\u0112\u0113\3\2\2\2\u0113\u0115\3\2"+ "\5U+\2\u0112\u0111\3\2\2\2\u0113\u0114\3\2\2\2\u0114\u0112\3\2\2\2\u0114"+
"\2\2\u0114\u0112\3\2\2\2\u0115\u0117\7)\2\2\u0116\u00ea\3\2\2\2\u0116"+ "\u0115\3\2\2\2\u0115N\3\2\2\2\u0116\u0118\5U+\2\u0117\u0116\3\2\2\2\u0118"+
"\u00f4\3\2\2\2\u0116\u00fe\3\2\2\2\u0116\u010a\3\2\2\2\u0117N\3\2\2\2"+ "\u0119\3\2\2\2\u0119\u0117\3\2\2\2\u0119\u011a\3\2\2\2\u011a\u011b\3\2"+
"\u0118\u011a\5W,\2\u0119\u0118\3\2\2\2\u011a\u011b\3\2\2\2\u011b\u0119"+ "\2\2\u011b\u011f\5;\36\2\u011c\u011e\5U+\2\u011d\u011c\3\2\2\2\u011e\u0121"+
"\3\2\2\2\u011b\u011c\3\2\2\2\u011cP\3\2\2\2\u011d\u011f\5W,\2\u011e\u011d"+ "\3\2\2\2\u011f\u011d\3\2\2\2\u011f\u0120\3\2\2\2\u0120\u0141\3\2\2\2\u0121"+
"\3\2\2\2\u011f\u0120\3\2\2\2\u0120\u011e\3\2\2\2\u0120\u0121\3\2\2\2\u0121"+ "\u011f\3\2\2\2\u0122\u0124\5;\36\2\u0123\u0125\5U+\2\u0124\u0123\3\2\2"+
"\u0122\3\2\2\2\u0122\u0126\5=\37\2\u0123\u0125\5W,\2\u0124\u0123\3\2\2"+ "\2\u0125\u0126\3\2\2\2\u0126\u0124\3\2\2\2\u0126\u0127\3\2\2\2\u0127\u0141"+
"\2\u0125\u0128\3\2\2\2\u0126\u0124\3\2\2\2\u0126\u0127\3\2\2\2\u0127\u0148"+ "\3\2\2\2\u0128\u012a\5U+\2\u0129\u0128\3\2\2\2\u012a\u012b\3\2\2\2\u012b"+
"\3\2\2\2\u0128\u0126\3\2\2\2\u0129\u012b\5=\37\2\u012a\u012c\5W,\2\u012b"+ "\u0129\3\2\2\2\u012b\u012c\3\2\2\2\u012c\u0134\3\2\2\2\u012d\u0131\5;"+
"\u012a\3\2\2\2\u012c\u012d\3\2\2\2\u012d\u012b\3\2\2\2\u012d\u012e\3\2"+ "\36\2\u012e\u0130\5U+\2\u012f\u012e\3\2\2\2\u0130\u0133\3\2\2\2\u0131"+
"\2\2\u012e\u0148\3\2\2\2\u012f\u0131\5W,\2\u0130\u012f\3\2\2\2\u0131\u0132"+ "\u012f\3\2\2\2\u0131\u0132\3\2\2\2\u0132\u0135\3\2\2\2\u0133\u0131\3\2"+
"\3\2\2\2\u0132\u0130\3\2\2\2\u0132\u0133\3\2\2\2\u0133\u013b\3\2\2\2\u0134"+ "\2\2\u0134\u012d\3\2\2\2\u0134\u0135\3\2\2\2\u0135\u0136\3\2\2\2\u0136"+
"\u0138\5=\37\2\u0135\u0137\5W,\2\u0136\u0135\3\2\2\2\u0137\u013a\3\2\2"+ "\u0137\5S*\2\u0137\u0141\3\2\2\2\u0138\u013a\5;\36\2\u0139\u013b\5U+\2"+
"\2\u0138\u0136\3\2\2\2\u0138\u0139\3\2\2\2\u0139\u013c\3\2\2\2\u013a\u0138"+ "\u013a\u0139\3\2\2\2\u013b\u013c\3\2\2\2\u013c\u013a\3\2\2\2\u013c\u013d"+
"\3\2\2\2\u013b\u0134\3\2\2\2\u013b\u013c\3\2\2\2\u013c\u013d\3\2\2\2\u013d"+ "\3\2\2\2\u013d\u013e\3\2\2\2\u013e\u013f\5S*\2\u013f\u0141\3\2\2\2\u0140"+
"\u013e\5U+\2\u013e\u0148\3\2\2\2\u013f\u0141\5=\37\2\u0140\u0142\5W,\2"+ "\u0117\3\2\2\2\u0140\u0122\3\2\2\2\u0140\u0129\3\2\2\2\u0140\u0138\3\2"+
"\u0141\u0140\3\2\2\2\u0142\u0143\3\2\2\2\u0143\u0141\3\2\2\2\u0143\u0144"+ "\2\2\u0141P\3\2\2\2\u0142\u0145\5W,\2\u0143\u0145\t\b\2\2\u0144\u0142"+
"\3\2\2\2\u0144\u0145\3\2\2\2\u0145\u0146\5U+\2\u0146\u0148\3\2\2\2\u0147"+ "\3\2\2\2\u0144\u0143\3\2\2\2\u0145\u014b\3\2\2\2\u0146\u014a\5W,\2\u0147"+
"\u011e\3\2\2\2\u0147\u0129\3\2\2\2\u0147\u0130\3\2\2\2\u0147\u013f\3\2"+ "\u014a\5U+\2\u0148\u014a\7a\2\2\u0149\u0146\3\2\2\2\u0149\u0147\3\2\2"+
"\2\2\u0148R\3\2\2\2\u0149\u014c\5Y-\2\u014a\u014c\t\b\2\2\u014b\u0149"+ "\2\u0149\u0148\3\2\2\2\u014a\u014d\3\2\2\2\u014b\u0149\3\2\2\2\u014b\u014c"+
"\3\2\2\2\u014b\u014a\3\2\2\2\u014c\u0152\3\2\2\2\u014d\u0151\5Y-\2\u014e"+ "\3\2\2\2\u014cR\3\2\2\2\u014d\u014b\3\2\2\2\u014e\u0150\t\t\2\2\u014f"+
"\u0151\5W,\2\u014f\u0151\7a\2\2\u0150\u014d\3\2\2\2\u0150\u014e\3\2\2"+ "\u0151\t\n\2\2\u0150\u014f\3\2\2\2\u0150\u0151\3\2\2\2\u0151\u0153\3\2"+
"\2\u0150\u014f\3\2\2\2\u0151\u0154\3\2\2\2\u0152\u0150\3\2\2\2\u0152\u0153"+ "\2\2\u0152\u0154\5U+\2\u0153\u0152\3\2\2\2\u0154\u0155\3\2\2\2\u0155\u0153"+
"\3\2\2\2\u0153T\3\2\2\2\u0154\u0152\3\2\2\2\u0155\u0157\t\t\2\2\u0156"+ "\3\2\2\2\u0155\u0156\3\2\2\2\u0156T\3\2\2\2\u0157\u0158\t\13\2\2\u0158"+
"\u0158\t\n\2\2\u0157\u0156\3\2\2\2\u0157\u0158\3\2\2\2\u0158\u015a\3\2"+ "V\3\2\2\2\u0159\u015a\t\f\2\2\u015aX\3\2\2\2\u015b\u015c\7\61\2\2\u015c"+
"\2\2\u0159\u015b\5W,\2\u015a\u0159\3\2\2\2\u015b\u015c\3\2\2\2\u015c\u015a"+ "\u015d\7\61\2\2\u015d\u0161\3\2\2\2\u015e\u0160\n\r\2\2\u015f\u015e\3"+
"\3\2\2\2\u015c\u015d\3\2\2\2\u015dV\3\2\2\2\u015e\u015f\t\13\2\2\u015f"+ "\2\2\2\u0160\u0163\3\2\2\2\u0161\u015f\3\2\2\2\u0161\u0162\3\2\2\2\u0162"+
"X\3\2\2\2\u0160\u0161\t\f\2\2\u0161Z\3\2\2\2\u0162\u0163\7\61\2\2\u0163"+ "\u0165\3\2\2\2\u0163\u0161\3\2\2\2\u0164\u0166\7\17\2\2\u0165\u0164\3"+
"\u0164\7\61\2\2\u0164\u0168\3\2\2\2\u0165\u0167\n\r\2\2\u0166\u0165\3"+ "\2\2\2\u0165\u0166\3\2\2\2\u0166\u0168\3\2\2\2\u0167\u0169\7\f\2\2\u0168"+
"\2\2\2\u0167\u016a\3\2\2\2\u0168\u0166\3\2\2\2\u0168\u0169\3\2\2\2\u0169"+ "\u0167\3\2\2\2\u0168\u0169\3\2\2\2\u0169\u016a\3\2\2\2\u016a\u016b\b-"+
"\u016c\3\2\2\2\u016a\u0168\3\2\2\2\u016b\u016d\7\17\2\2\u016c\u016b\3"+ "\2\2\u016bZ\3\2\2\2\u016c\u016d\7\61\2\2\u016d\u016e\7,\2\2\u016e\u0173"+
"\2\2\2\u016c\u016d\3\2\2\2\u016d\u016f\3\2\2\2\u016e\u0170\7\f\2\2\u016f"+ "\3\2\2\2\u016f\u0172\5[.\2\u0170\u0172\13\2\2\2\u0171\u016f\3\2\2\2\u0171"+
"\u016e\3\2\2\2\u016f\u0170\3\2\2\2\u0170\u0171\3\2\2\2\u0171\u0172\b."+ "\u0170\3\2\2\2\u0172\u0175\3\2\2\2\u0173\u0174\3\2\2\2\u0173\u0171\3\2"+
"\2\2\u0172\\\3\2\2\2\u0173\u0174\7\61\2\2\u0174\u0175\7,\2\2\u0175\u017a"+ "\2\2\u0174\u0176\3\2\2\2\u0175\u0173\3\2\2\2\u0176\u0177\7,\2\2\u0177"+
"\3\2\2\2\u0176\u0179\5]/\2\u0177\u0179\13\2\2\2\u0178\u0176\3\2\2\2\u0178"+ "\u0178\7\61\2\2\u0178\u0179\3\2\2\2\u0179\u017a\b.\2\2\u017a\\\3\2\2\2"+
"\u0177\3\2\2\2\u0179\u017c\3\2\2\2\u017a\u017b\3\2\2\2\u017a\u0178\3\2"+ "\u017b\u017d\t\16\2\2\u017c\u017b\3\2\2\2\u017d\u017e\3\2\2\2\u017e\u017c"+
"\2\2\u017b\u017d\3\2\2\2\u017c\u017a\3\2\2\2\u017d\u017e\7,\2\2\u017e"+ "\3\2\2\2\u017e\u017f\3\2\2\2\u017f\u0180\3\2\2\2\u0180\u0181\b/\2\2\u0181"+
"\u017f\7\61\2\2\u017f\u0180\3\2\2\2\u0180\u0181\b/\2\2\u0181^\3\2\2\2"+ "^\3\2\2\2\"\2\u00dc\u00de\u00e7\u00e9\u00f1\u00f3\u00fd\u00ff\u0109\u010b"+
"\u0182\u0184\t\16\2\2\u0183\u0182\3\2\2\2\u0184\u0185\3\2\2\2\u0185\u0183"+ "\u010f\u0114\u0119\u011f\u0126\u012b\u0131\u0134\u013c\u0140\u0144\u0149"+
"\3\2\2\2\u0185\u0186\3\2\2\2\u0186\u0187\3\2\2\2\u0187\u0188\b\60\2\2"+ "\u014b\u0150\u0155\u0161\u0165\u0168\u0171\u0173\u017e\3\2\3\2";
"\u0188`\3\2\2\2\"\2\u00e3\u00e5\u00ee\u00f0\u00f8\u00fa\u0104\u0106\u0110"+
"\u0112\u0116\u011b\u0120\u0126\u012d\u0132\u0138\u013b\u0143\u0147\u014b"+
"\u0150\u0152\u0157\u015c\u0168\u016c\u016f\u0178\u017a\u0185\3\2\3\2";
public static final ATN _ATN = public static final ATN _ATN =
new ATNDeserializer().deserialize(_serializedATN.toCharArray()); new ATNDeserializer().deserialize(_serializedATN.toCharArray());
static { static {

View File

@ -17,12 +17,12 @@ class EqlBaseParser extends Parser {
protected static final PredictionContextCache _sharedContextCache = protected static final PredictionContextCache _sharedContextCache =
new PredictionContextCache(); new PredictionContextCache();
public static final int public static final int
AND=1, ANY=2, BY=3, FALSE=4, FORK=5, IN=6, JOIN=7, MAXSPAN=8, NOT=9, NULL=10, AND=1, ANY=2, BY=3, FALSE=4, IN=5, JOIN=6, MAXSPAN=7, NOT=8, NULL=9, OF=10,
OF=11, OR=12, SEQUENCE=13, TRUE=14, UNTIL=15, WHERE=16, WITH=17, ASGN=18, OR=11, SEQUENCE=12, TRUE=13, UNTIL=14, WHERE=15, WITH=16, ASGN=17, EQ=18,
EQ=19, NEQ=20, LT=21, LTE=22, GT=23, GTE=24, PLUS=25, MINUS=26, ASTERISK=27, NEQ=19, LT=20, LTE=21, GT=22, GTE=23, PLUS=24, MINUS=25, ASTERISK=26,
SLASH=28, PERCENT=29, DOT=30, COMMA=31, LB=32, RB=33, LP=34, RP=35, PIPE=36, SLASH=27, PERCENT=28, DOT=29, COMMA=30, LB=31, RB=32, LP=33, RP=34, PIPE=35,
ESCAPED_IDENTIFIER=37, STRING=38, INTEGER_VALUE=39, DECIMAL_VALUE=40, ESCAPED_IDENTIFIER=36, STRING=37, INTEGER_VALUE=38, DECIMAL_VALUE=39,
IDENTIFIER=41, LINE_COMMENT=42, BRACKETED_COMMENT=43, WS=44; IDENTIFIER=40, LINE_COMMENT=41, BRACKETED_COMMENT=42, WS=43;
public static final int public static final int
RULE_singleStatement = 0, RULE_singleExpression = 1, RULE_statement = 2, RULE_singleStatement = 0, RULE_singleExpression = 1, RULE_statement = 2,
RULE_query = 3, RULE_sequenceParams = 4, RULE_sequence = 5, RULE_join = 6, RULE_query = 3, RULE_sequenceParams = 4, RULE_sequence = 5, RULE_join = 6,
@ -43,16 +43,16 @@ class EqlBaseParser extends Parser {
}; };
private static final String[] _LITERAL_NAMES = { private static final String[] _LITERAL_NAMES = {
null, "'and'", "'any'", "'by'", "'false'", "'fork'", "'in'", "'join'", null, "'and'", "'any'", "'by'", "'false'", "'in'", "'join'", "'maxspan'",
"'maxspan'", "'not'", "'null'", "'of'", "'or'", "'sequence'", "'true'", "'not'", "'null'", "'of'", "'or'", "'sequence'", "'true'", "'until'",
"'until'", "'where'", "'with'", "'='", "'=='", "'!='", "'<'", "'<='", "'where'", "'with'", "'='", "'=='", "'!='", "'<'", "'<='", "'>'", "'>='",
"'>'", "'>='", "'+'", "'-'", "'*'", "'/'", "'%'", "'.'", "','", "'['", "'+'", "'-'", "'*'", "'/'", "'%'", "'.'", "','", "'['", "']'", "'('",
"']'", "'('", "')'", "'|'" "')'", "'|'"
}; };
private static final String[] _SYMBOLIC_NAMES = { private static final String[] _SYMBOLIC_NAMES = {
null, "AND", "ANY", "BY", "FALSE", "FORK", "IN", "JOIN", "MAXSPAN", "NOT", null, "AND", "ANY", "BY", "FALSE", "IN", "JOIN", "MAXSPAN", "NOT", "NULL",
"NULL", "OF", "OR", "SEQUENCE", "TRUE", "UNTIL", "WHERE", "WITH", "ASGN", "OF", "OR", "SEQUENCE", "TRUE", "UNTIL", "WHERE", "WITH", "ASGN", "EQ",
"EQ", "NEQ", "LT", "LTE", "GT", "GTE", "PLUS", "MINUS", "ASTERISK", "SLASH", "NEQ", "LT", "LTE", "GT", "GTE", "PLUS", "MINUS", "ASTERISK", "SLASH",
"PERCENT", "DOT", "COMMA", "LB", "RB", "LP", "RP", "PIPE", "ESCAPED_IDENTIFIER", "PERCENT", "DOT", "COMMA", "LB", "RB", "LP", "RP", "PIPE", "ESCAPED_IDENTIFIER",
"STRING", "INTEGER_VALUE", "DECIMAL_VALUE", "IDENTIFIER", "LINE_COMMENT", "STRING", "INTEGER_VALUE", "DECIMAL_VALUE", "IDENTIFIER", "LINE_COMMENT",
"BRACKETED_COMMENT", "WS" "BRACKETED_COMMENT", "WS"
@ -823,14 +823,9 @@ class EqlBaseParser extends Parser {
public SubqueryContext subquery() { public SubqueryContext subquery() {
return getRuleContext(SubqueryContext.class,0); return getRuleContext(SubqueryContext.class,0);
} }
public TerminalNode FORK() { return getToken(EqlBaseParser.FORK, 0); }
public JoinKeysContext joinKeys() { public JoinKeysContext joinKeys() {
return getRuleContext(JoinKeysContext.class,0); return getRuleContext(JoinKeysContext.class,0);
} }
public TerminalNode EQ() { return getToken(EqlBaseParser.EQ, 0); }
public BooleanValueContext booleanValue() {
return getRuleContext(BooleanValueContext.class,0);
}
public SequenceTermContext(ParserRuleContext parent, int invokingState) { public SequenceTermContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState); super(parent, invokingState);
} }
@ -859,31 +854,11 @@ class EqlBaseParser extends Parser {
{ {
setState(141); setState(141);
subquery(); subquery();
setState(147);
_la = _input.LA(1);
if (_la==FORK) {
{
setState(142);
match(FORK);
setState(145);
_la = _input.LA(1);
if (_la==EQ) {
{
setState(143); setState(143);
match(EQ);
setState(144);
booleanValue();
}
}
}
}
setState(150);
_la = _input.LA(1); _la = _input.LA(1);
if (_la==BY) { if (_la==BY) {
{ {
setState(149); setState(142);
((SequenceTermContext)_localctx).by = joinKeys(); ((SequenceTermContext)_localctx).by = joinKeys();
} }
} }
@ -932,11 +907,11 @@ class EqlBaseParser extends Parser {
try { try {
enterOuterAlt(_localctx, 1); enterOuterAlt(_localctx, 1);
{ {
setState(152); setState(145);
match(LB); match(LB);
setState(153); setState(146);
eventFilter(); eventFilter();
setState(154); setState(147);
match(RB); match(RB);
} }
} }
@ -980,7 +955,7 @@ class EqlBaseParser extends Parser {
try { try {
enterOuterAlt(_localctx, 1); enterOuterAlt(_localctx, 1);
{ {
setState(156); setState(149);
eventFilter(); eventFilter();
} }
} }
@ -1030,27 +1005,27 @@ class EqlBaseParser extends Parser {
try { try {
enterOuterAlt(_localctx, 1); enterOuterAlt(_localctx, 1);
{ {
setState(160); setState(153);
switch (_input.LA(1)) { switch (_input.LA(1)) {
case ANY: case ANY:
{ {
setState(158); setState(151);
match(ANY); match(ANY);
} }
break; break;
case ESCAPED_IDENTIFIER: case ESCAPED_IDENTIFIER:
case IDENTIFIER: case IDENTIFIER:
{ {
setState(159); setState(152);
((EventFilterContext)_localctx).event = identifier(); ((EventFilterContext)_localctx).event = identifier();
} }
break; break;
default: default:
throw new NoViableAltException(this); throw new NoViableAltException(this);
} }
setState(162); setState(155);
match(WHERE); match(WHERE);
setState(163); setState(156);
expression(); expression();
} }
} }
@ -1094,7 +1069,7 @@ class EqlBaseParser extends Parser {
try { try {
enterOuterAlt(_localctx, 1); enterOuterAlt(_localctx, 1);
{ {
setState(165); setState(158);
booleanExpression(0); booleanExpression(0);
} }
} }
@ -1224,18 +1199,18 @@ class EqlBaseParser extends Parser {
int _alt; int _alt;
enterOuterAlt(_localctx, 1); enterOuterAlt(_localctx, 1);
{ {
setState(174); setState(167);
_errHandler.sync(this); _errHandler.sync(this);
switch ( getInterpreter().adaptivePredict(_input,18,_ctx) ) { switch ( getInterpreter().adaptivePredict(_input,16,_ctx) ) {
case 1: case 1:
{ {
_localctx = new LogicalNotContext(_localctx); _localctx = new LogicalNotContext(_localctx);
_ctx = _localctx; _ctx = _localctx;
_prevctx = _localctx; _prevctx = _localctx;
setState(168); setState(161);
match(NOT); match(NOT);
setState(169); setState(162);
booleanExpression(5); booleanExpression(5);
} }
break; break;
@ -1244,11 +1219,11 @@ class EqlBaseParser extends Parser {
_localctx = new ProcessCheckContext(_localctx); _localctx = new ProcessCheckContext(_localctx);
_ctx = _localctx; _ctx = _localctx;
_prevctx = _localctx; _prevctx = _localctx;
setState(170); setState(163);
((ProcessCheckContext)_localctx).relationship = match(IDENTIFIER); ((ProcessCheckContext)_localctx).relationship = match(IDENTIFIER);
setState(171); setState(164);
match(OF); match(OF);
setState(172); setState(165);
subquery(); subquery();
} }
break; break;
@ -1257,33 +1232,33 @@ class EqlBaseParser extends Parser {
_localctx = new BooleanDefaultContext(_localctx); _localctx = new BooleanDefaultContext(_localctx);
_ctx = _localctx; _ctx = _localctx;
_prevctx = _localctx; _prevctx = _localctx;
setState(173); setState(166);
valueExpression(); valueExpression();
} }
break; break;
} }
_ctx.stop = _input.LT(-1); _ctx.stop = _input.LT(-1);
setState(184); setState(177);
_errHandler.sync(this); _errHandler.sync(this);
_alt = getInterpreter().adaptivePredict(_input,20,_ctx); _alt = getInterpreter().adaptivePredict(_input,18,_ctx);
while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
if ( _alt==1 ) { if ( _alt==1 ) {
if ( _parseListeners!=null ) triggerExitRuleEvent(); if ( _parseListeners!=null ) triggerExitRuleEvent();
_prevctx = _localctx; _prevctx = _localctx;
{ {
setState(182); setState(175);
_errHandler.sync(this); _errHandler.sync(this);
switch ( getInterpreter().adaptivePredict(_input,19,_ctx) ) { switch ( getInterpreter().adaptivePredict(_input,17,_ctx) ) {
case 1: case 1:
{ {
_localctx = new LogicalBinaryContext(new BooleanExpressionContext(_parentctx, _parentState)); _localctx = new LogicalBinaryContext(new BooleanExpressionContext(_parentctx, _parentState));
((LogicalBinaryContext)_localctx).left = _prevctx; ((LogicalBinaryContext)_localctx).left = _prevctx;
pushNewRecursionContext(_localctx, _startState, RULE_booleanExpression); pushNewRecursionContext(_localctx, _startState, RULE_booleanExpression);
setState(176); setState(169);
if (!(precpred(_ctx, 2))) throw new FailedPredicateException(this, "precpred(_ctx, 2)"); if (!(precpred(_ctx, 2))) throw new FailedPredicateException(this, "precpred(_ctx, 2)");
setState(177); setState(170);
((LogicalBinaryContext)_localctx).operator = match(AND); ((LogicalBinaryContext)_localctx).operator = match(AND);
setState(178); setState(171);
((LogicalBinaryContext)_localctx).right = booleanExpression(3); ((LogicalBinaryContext)_localctx).right = booleanExpression(3);
} }
break; break;
@ -1292,20 +1267,20 @@ class EqlBaseParser extends Parser {
_localctx = new LogicalBinaryContext(new BooleanExpressionContext(_parentctx, _parentState)); _localctx = new LogicalBinaryContext(new BooleanExpressionContext(_parentctx, _parentState));
((LogicalBinaryContext)_localctx).left = _prevctx; ((LogicalBinaryContext)_localctx).left = _prevctx;
pushNewRecursionContext(_localctx, _startState, RULE_booleanExpression); pushNewRecursionContext(_localctx, _startState, RULE_booleanExpression);
setState(179); setState(172);
if (!(precpred(_ctx, 1))) throw new FailedPredicateException(this, "precpred(_ctx, 1)"); if (!(precpred(_ctx, 1))) throw new FailedPredicateException(this, "precpred(_ctx, 1)");
setState(180); setState(173);
((LogicalBinaryContext)_localctx).operator = match(OR); ((LogicalBinaryContext)_localctx).operator = match(OR);
setState(181); setState(174);
((LogicalBinaryContext)_localctx).right = booleanExpression(2); ((LogicalBinaryContext)_localctx).right = booleanExpression(2);
} }
break; break;
} }
} }
} }
setState(186); setState(179);
_errHandler.sync(this); _errHandler.sync(this);
_alt = getInterpreter().adaptivePredict(_input,20,_ctx); _alt = getInterpreter().adaptivePredict(_input,18,_ctx);
} }
} }
} }
@ -1382,14 +1357,14 @@ class EqlBaseParser extends Parser {
ValueExpressionContext _localctx = new ValueExpressionContext(_ctx, getState()); ValueExpressionContext _localctx = new ValueExpressionContext(_ctx, getState());
enterRule(_localctx, 32, RULE_valueExpression); enterRule(_localctx, 32, RULE_valueExpression);
try { try {
setState(192); setState(185);
_errHandler.sync(this); _errHandler.sync(this);
switch ( getInterpreter().adaptivePredict(_input,21,_ctx) ) { switch ( getInterpreter().adaptivePredict(_input,19,_ctx) ) {
case 1: case 1:
_localctx = new ValueExpressionDefaultContext(_localctx); _localctx = new ValueExpressionDefaultContext(_localctx);
enterOuterAlt(_localctx, 1); enterOuterAlt(_localctx, 1);
{ {
setState(187); setState(180);
operatorExpression(0); operatorExpression(0);
} }
break; break;
@ -1397,11 +1372,11 @@ class EqlBaseParser extends Parser {
_localctx = new ComparisonContext(_localctx); _localctx = new ComparisonContext(_localctx);
enterOuterAlt(_localctx, 2); enterOuterAlt(_localctx, 2);
{ {
setState(188); setState(181);
((ComparisonContext)_localctx).left = operatorExpression(0); ((ComparisonContext)_localctx).left = operatorExpression(0);
setState(189); setState(182);
comparisonOperator(); comparisonOperator();
setState(190); setState(183);
((ComparisonContext)_localctx).right = operatorExpression(0); ((ComparisonContext)_localctx).right = operatorExpression(0);
} }
break; break;
@ -1520,7 +1495,7 @@ class EqlBaseParser extends Parser {
int _alt; int _alt;
enterOuterAlt(_localctx, 1); enterOuterAlt(_localctx, 1);
{ {
setState(201); setState(194);
switch (_input.LA(1)) { switch (_input.LA(1)) {
case FALSE: case FALSE:
case NULL: case NULL:
@ -1536,14 +1511,14 @@ class EqlBaseParser extends Parser {
_ctx = _localctx; _ctx = _localctx;
_prevctx = _localctx; _prevctx = _localctx;
setState(195); setState(188);
primaryExpression(); primaryExpression();
setState(197); setState(190);
_errHandler.sync(this); _errHandler.sync(this);
switch ( getInterpreter().adaptivePredict(_input,22,_ctx) ) { switch ( getInterpreter().adaptivePredict(_input,20,_ctx) ) {
case 1: case 1:
{ {
setState(196); setState(189);
predicate(); predicate();
} }
break; break;
@ -1556,7 +1531,7 @@ class EqlBaseParser extends Parser {
_localctx = new ArithmeticUnaryContext(_localctx); _localctx = new ArithmeticUnaryContext(_localctx);
_ctx = _localctx; _ctx = _localctx;
_prevctx = _localctx; _prevctx = _localctx;
setState(199); setState(192);
((ArithmeticUnaryContext)_localctx).operator = _input.LT(1); ((ArithmeticUnaryContext)_localctx).operator = _input.LT(1);
_la = _input.LA(1); _la = _input.LA(1);
if ( !(_la==PLUS || _la==MINUS) ) { if ( !(_la==PLUS || _la==MINUS) ) {
@ -1564,7 +1539,7 @@ class EqlBaseParser extends Parser {
} else { } else {
consume(); consume();
} }
setState(200); setState(193);
operatorExpression(3); operatorExpression(3);
} }
break; break;
@ -1572,25 +1547,25 @@ class EqlBaseParser extends Parser {
throw new NoViableAltException(this); throw new NoViableAltException(this);
} }
_ctx.stop = _input.LT(-1); _ctx.stop = _input.LT(-1);
setState(211); setState(204);
_errHandler.sync(this); _errHandler.sync(this);
_alt = getInterpreter().adaptivePredict(_input,25,_ctx); _alt = getInterpreter().adaptivePredict(_input,23,_ctx);
while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
if ( _alt==1 ) { if ( _alt==1 ) {
if ( _parseListeners!=null ) triggerExitRuleEvent(); if ( _parseListeners!=null ) triggerExitRuleEvent();
_prevctx = _localctx; _prevctx = _localctx;
{ {
setState(209); setState(202);
_errHandler.sync(this); _errHandler.sync(this);
switch ( getInterpreter().adaptivePredict(_input,24,_ctx) ) { switch ( getInterpreter().adaptivePredict(_input,22,_ctx) ) {
case 1: case 1:
{ {
_localctx = new ArithmeticBinaryContext(new OperatorExpressionContext(_parentctx, _parentState)); _localctx = new ArithmeticBinaryContext(new OperatorExpressionContext(_parentctx, _parentState));
((ArithmeticBinaryContext)_localctx).left = _prevctx; ((ArithmeticBinaryContext)_localctx).left = _prevctx;
pushNewRecursionContext(_localctx, _startState, RULE_operatorExpression); pushNewRecursionContext(_localctx, _startState, RULE_operatorExpression);
setState(203); setState(196);
if (!(precpred(_ctx, 2))) throw new FailedPredicateException(this, "precpred(_ctx, 2)"); if (!(precpred(_ctx, 2))) throw new FailedPredicateException(this, "precpred(_ctx, 2)");
setState(204); setState(197);
((ArithmeticBinaryContext)_localctx).operator = _input.LT(1); ((ArithmeticBinaryContext)_localctx).operator = _input.LT(1);
_la = _input.LA(1); _la = _input.LA(1);
if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << ASTERISK) | (1L << SLASH) | (1L << PERCENT))) != 0)) ) { if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << ASTERISK) | (1L << SLASH) | (1L << PERCENT))) != 0)) ) {
@ -1598,7 +1573,7 @@ class EqlBaseParser extends Parser {
} else { } else {
consume(); consume();
} }
setState(205); setState(198);
((ArithmeticBinaryContext)_localctx).right = operatorExpression(3); ((ArithmeticBinaryContext)_localctx).right = operatorExpression(3);
} }
break; break;
@ -1607,9 +1582,9 @@ class EqlBaseParser extends Parser {
_localctx = new ArithmeticBinaryContext(new OperatorExpressionContext(_parentctx, _parentState)); _localctx = new ArithmeticBinaryContext(new OperatorExpressionContext(_parentctx, _parentState));
((ArithmeticBinaryContext)_localctx).left = _prevctx; ((ArithmeticBinaryContext)_localctx).left = _prevctx;
pushNewRecursionContext(_localctx, _startState, RULE_operatorExpression); pushNewRecursionContext(_localctx, _startState, RULE_operatorExpression);
setState(206); setState(199);
if (!(precpred(_ctx, 1))) throw new FailedPredicateException(this, "precpred(_ctx, 1)"); if (!(precpred(_ctx, 1))) throw new FailedPredicateException(this, "precpred(_ctx, 1)");
setState(207); setState(200);
((ArithmeticBinaryContext)_localctx).operator = _input.LT(1); ((ArithmeticBinaryContext)_localctx).operator = _input.LT(1);
_la = _input.LA(1); _la = _input.LA(1);
if ( !(_la==PLUS || _la==MINUS) ) { if ( !(_la==PLUS || _la==MINUS) ) {
@ -1617,16 +1592,16 @@ class EqlBaseParser extends Parser {
} else { } else {
consume(); consume();
} }
setState(208); setState(201);
((ArithmeticBinaryContext)_localctx).right = operatorExpression(2); ((ArithmeticBinaryContext)_localctx).right = operatorExpression(2);
} }
break; break;
} }
} }
} }
setState(213); setState(206);
_errHandler.sync(this); _errHandler.sync(this);
_alt = getInterpreter().adaptivePredict(_input,25,_ctx); _alt = getInterpreter().adaptivePredict(_input,23,_ctx);
} }
} }
} }
@ -1683,38 +1658,38 @@ class EqlBaseParser extends Parser {
try { try {
enterOuterAlt(_localctx, 1); enterOuterAlt(_localctx, 1);
{ {
setState(215); setState(208);
_la = _input.LA(1); _la = _input.LA(1);
if (_la==NOT) { if (_la==NOT) {
{ {
setState(214); setState(207);
match(NOT); match(NOT);
} }
} }
setState(217); setState(210);
((PredicateContext)_localctx).kind = match(IN); ((PredicateContext)_localctx).kind = match(IN);
setState(218); setState(211);
match(LP); match(LP);
setState(219); setState(212);
expression(); expression();
setState(224); setState(217);
_errHandler.sync(this); _errHandler.sync(this);
_la = _input.LA(1); _la = _input.LA(1);
while (_la==COMMA) { while (_la==COMMA) {
{ {
{ {
setState(220); setState(213);
match(COMMA); match(COMMA);
setState(221); setState(214);
expression(); expression();
} }
} }
setState(226); setState(219);
_errHandler.sync(this); _errHandler.sync(this);
_la = _input.LA(1); _la = _input.LA(1);
} }
setState(227); setState(220);
match(RP); match(RP);
} }
} }
@ -1823,14 +1798,14 @@ class EqlBaseParser extends Parser {
PrimaryExpressionContext _localctx = new PrimaryExpressionContext(_ctx, getState()); PrimaryExpressionContext _localctx = new PrimaryExpressionContext(_ctx, getState());
enterRule(_localctx, 38, RULE_primaryExpression); enterRule(_localctx, 38, RULE_primaryExpression);
try { try {
setState(236); setState(229);
_errHandler.sync(this); _errHandler.sync(this);
switch ( getInterpreter().adaptivePredict(_input,28,_ctx) ) { switch ( getInterpreter().adaptivePredict(_input,26,_ctx) ) {
case 1: case 1:
_localctx = new ConstantDefaultContext(_localctx); _localctx = new ConstantDefaultContext(_localctx);
enterOuterAlt(_localctx, 1); enterOuterAlt(_localctx, 1);
{ {
setState(229); setState(222);
constant(); constant();
} }
break; break;
@ -1838,7 +1813,7 @@ class EqlBaseParser extends Parser {
_localctx = new FunctionContext(_localctx); _localctx = new FunctionContext(_localctx);
enterOuterAlt(_localctx, 2); enterOuterAlt(_localctx, 2);
{ {
setState(230); setState(223);
functionExpression(); functionExpression();
} }
break; break;
@ -1846,7 +1821,7 @@ class EqlBaseParser extends Parser {
_localctx = new DereferenceContext(_localctx); _localctx = new DereferenceContext(_localctx);
enterOuterAlt(_localctx, 3); enterOuterAlt(_localctx, 3);
{ {
setState(231); setState(224);
qualifiedName(); qualifiedName();
} }
break; break;
@ -1854,11 +1829,11 @@ class EqlBaseParser extends Parser {
_localctx = new ParenthesizedExpressionContext(_localctx); _localctx = new ParenthesizedExpressionContext(_localctx);
enterOuterAlt(_localctx, 4); enterOuterAlt(_localctx, 4);
{ {
setState(232); setState(225);
match(LP); match(LP);
setState(233); setState(226);
expression(); expression();
setState(234); setState(227);
match(RP); match(RP);
} }
break; break;
@ -1916,36 +1891,36 @@ class EqlBaseParser extends Parser {
try { try {
enterOuterAlt(_localctx, 1); enterOuterAlt(_localctx, 1);
{ {
setState(238); setState(231);
((FunctionExpressionContext)_localctx).name = match(IDENTIFIER); ((FunctionExpressionContext)_localctx).name = match(IDENTIFIER);
setState(239); setState(232);
match(LP); match(LP);
setState(248); setState(241);
_la = _input.LA(1); _la = _input.LA(1);
if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << FALSE) | (1L << NOT) | (1L << NULL) | (1L << TRUE) | (1L << PLUS) | (1L << MINUS) | (1L << LP) | (1L << ESCAPED_IDENTIFIER) | (1L << STRING) | (1L << INTEGER_VALUE) | (1L << DECIMAL_VALUE) | (1L << IDENTIFIER))) != 0)) { if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << FALSE) | (1L << NOT) | (1L << NULL) | (1L << TRUE) | (1L << PLUS) | (1L << MINUS) | (1L << LP) | (1L << ESCAPED_IDENTIFIER) | (1L << STRING) | (1L << INTEGER_VALUE) | (1L << DECIMAL_VALUE) | (1L << IDENTIFIER))) != 0)) {
{ {
setState(240); setState(233);
expression(); expression();
setState(245); setState(238);
_errHandler.sync(this); _errHandler.sync(this);
_la = _input.LA(1); _la = _input.LA(1);
while (_la==COMMA) { while (_la==COMMA) {
{ {
{ {
setState(241); setState(234);
match(COMMA); match(COMMA);
setState(242); setState(235);
expression(); expression();
} }
} }
setState(247); setState(240);
_errHandler.sync(this); _errHandler.sync(this);
_la = _input.LA(1); _la = _input.LA(1);
} }
} }
} }
setState(250); setState(243);
match(RP); match(RP);
} }
} }
@ -2050,13 +2025,13 @@ class EqlBaseParser extends Parser {
ConstantContext _localctx = new ConstantContext(_ctx, getState()); ConstantContext _localctx = new ConstantContext(_ctx, getState());
enterRule(_localctx, 42, RULE_constant); enterRule(_localctx, 42, RULE_constant);
try { try {
setState(256); setState(249);
switch (_input.LA(1)) { switch (_input.LA(1)) {
case NULL: case NULL:
_localctx = new NullLiteralContext(_localctx); _localctx = new NullLiteralContext(_localctx);
enterOuterAlt(_localctx, 1); enterOuterAlt(_localctx, 1);
{ {
setState(252); setState(245);
match(NULL); match(NULL);
} }
break; break;
@ -2065,7 +2040,7 @@ class EqlBaseParser extends Parser {
_localctx = new NumericLiteralContext(_localctx); _localctx = new NumericLiteralContext(_localctx);
enterOuterAlt(_localctx, 2); enterOuterAlt(_localctx, 2);
{ {
setState(253); setState(246);
number(); number();
} }
break; break;
@ -2074,7 +2049,7 @@ class EqlBaseParser extends Parser {
_localctx = new BooleanLiteralContext(_localctx); _localctx = new BooleanLiteralContext(_localctx);
enterOuterAlt(_localctx, 3); enterOuterAlt(_localctx, 3);
{ {
setState(254); setState(247);
booleanValue(); booleanValue();
} }
break; break;
@ -2082,7 +2057,7 @@ class EqlBaseParser extends Parser {
_localctx = new StringLiteralContext(_localctx); _localctx = new StringLiteralContext(_localctx);
enterOuterAlt(_localctx, 4); enterOuterAlt(_localctx, 4);
{ {
setState(255); setState(248);
string(); string();
} }
break; break;
@ -2134,7 +2109,7 @@ class EqlBaseParser extends Parser {
try { try {
enterOuterAlt(_localctx, 1); enterOuterAlt(_localctx, 1);
{ {
setState(258); setState(251);
_la = _input.LA(1); _la = _input.LA(1);
if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << EQ) | (1L << NEQ) | (1L << LT) | (1L << LTE) | (1L << GT) | (1L << GTE))) != 0)) ) { if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << EQ) | (1L << NEQ) | (1L << LT) | (1L << LTE) | (1L << GT) | (1L << GTE))) != 0)) ) {
_errHandler.recoverInline(this); _errHandler.recoverInline(this);
@ -2183,7 +2158,7 @@ class EqlBaseParser extends Parser {
try { try {
enterOuterAlt(_localctx, 1); enterOuterAlt(_localctx, 1);
{ {
setState(260); setState(253);
_la = _input.LA(1); _la = _input.LA(1);
if ( !(_la==FALSE || _la==TRUE) ) { if ( !(_la==FALSE || _la==TRUE) ) {
_errHandler.recoverInline(this); _errHandler.recoverInline(this);
@ -2253,43 +2228,43 @@ class EqlBaseParser extends Parser {
int _alt; int _alt;
enterOuterAlt(_localctx, 1); enterOuterAlt(_localctx, 1);
{ {
setState(262); setState(255);
identifier(); identifier();
setState(274); setState(267);
_errHandler.sync(this); _errHandler.sync(this);
_alt = getInterpreter().adaptivePredict(_input,34,_ctx); _alt = getInterpreter().adaptivePredict(_input,32,_ctx);
while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
if ( _alt==1 ) { if ( _alt==1 ) {
{ {
setState(272); setState(265);
switch (_input.LA(1)) { switch (_input.LA(1)) {
case DOT: case DOT:
{ {
setState(263); setState(256);
match(DOT); match(DOT);
setState(264); setState(257);
identifier(); identifier();
} }
break; break;
case LB: case LB:
{ {
setState(265); setState(258);
match(LB); match(LB);
setState(267); setState(260);
_errHandler.sync(this); _errHandler.sync(this);
_la = _input.LA(1); _la = _input.LA(1);
do { do {
{ {
{ {
setState(266); setState(259);
match(INTEGER_VALUE); match(INTEGER_VALUE);
} }
} }
setState(269); setState(262);
_errHandler.sync(this); _errHandler.sync(this);
_la = _input.LA(1); _la = _input.LA(1);
} while ( _la==INTEGER_VALUE ); } while ( _la==INTEGER_VALUE );
setState(271); setState(264);
match(RB); match(RB);
} }
break; break;
@ -2298,9 +2273,9 @@ class EqlBaseParser extends Parser {
} }
} }
} }
setState(276); setState(269);
_errHandler.sync(this); _errHandler.sync(this);
_alt = getInterpreter().adaptivePredict(_input,34,_ctx); _alt = getInterpreter().adaptivePredict(_input,32,_ctx);
} }
} }
} }
@ -2344,7 +2319,7 @@ class EqlBaseParser extends Parser {
try { try {
enterOuterAlt(_localctx, 1); enterOuterAlt(_localctx, 1);
{ {
setState(277); setState(270);
_la = _input.LA(1); _la = _input.LA(1);
if ( !(_la==ESCAPED_IDENTIFIER || _la==IDENTIFIER) ) { if ( !(_la==ESCAPED_IDENTIFIER || _la==IDENTIFIER) ) {
_errHandler.recoverInline(this); _errHandler.recoverInline(this);
@ -2396,13 +2371,13 @@ class EqlBaseParser extends Parser {
try { try {
enterOuterAlt(_localctx, 1); enterOuterAlt(_localctx, 1);
{ {
setState(279); setState(272);
number(); number();
setState(281); setState(274);
_la = _input.LA(1); _la = _input.LA(1);
if (_la==IDENTIFIER) { if (_la==IDENTIFIER) {
{ {
setState(280); setState(273);
((TimeUnitContext)_localctx).unit = match(IDENTIFIER); ((TimeUnitContext)_localctx).unit = match(IDENTIFIER);
} }
} }
@ -2470,13 +2445,13 @@ class EqlBaseParser extends Parser {
NumberContext _localctx = new NumberContext(_ctx, getState()); NumberContext _localctx = new NumberContext(_ctx, getState());
enterRule(_localctx, 54, RULE_number); enterRule(_localctx, 54, RULE_number);
try { try {
setState(285); setState(278);
switch (_input.LA(1)) { switch (_input.LA(1)) {
case DECIMAL_VALUE: case DECIMAL_VALUE:
_localctx = new DecimalLiteralContext(_localctx); _localctx = new DecimalLiteralContext(_localctx);
enterOuterAlt(_localctx, 1); enterOuterAlt(_localctx, 1);
{ {
setState(283); setState(276);
match(DECIMAL_VALUE); match(DECIMAL_VALUE);
} }
break; break;
@ -2484,7 +2459,7 @@ class EqlBaseParser extends Parser {
_localctx = new IntegerLiteralContext(_localctx); _localctx = new IntegerLiteralContext(_localctx);
enterOuterAlt(_localctx, 2); enterOuterAlt(_localctx, 2);
{ {
setState(284); setState(277);
match(INTEGER_VALUE); match(INTEGER_VALUE);
} }
break; break;
@ -2530,7 +2505,7 @@ class EqlBaseParser extends Parser {
try { try {
enterOuterAlt(_localctx, 1); enterOuterAlt(_localctx, 1);
{ {
setState(287); setState(280);
match(STRING); match(STRING);
} }
} }
@ -2574,7 +2549,7 @@ class EqlBaseParser extends Parser {
} }
public static final String _serializedATN = public static final String _serializedATN =
"\3\u0430\ud6d1\u8206\uad2d\u4417\uaef1\u8d80\uaadd\3.\u0124\4\2\t\2\4"+ "\3\u0430\ud6d1\u8206\uad2d\u4417\uaef1\u8d80\uaadd\3-\u011d\4\2\t\2\4"+
"\3\t\3\4\4\t\4\4\5\t\5\4\6\t\6\4\7\t\7\4\b\t\b\4\t\t\t\4\n\t\n\4\13\t"+ "\3\t\3\4\4\t\4\4\5\t\5\4\6\t\6\4\7\t\7\4\b\t\b\4\t\t\t\4\n\t\n\4\13\t"+
"\13\4\f\t\f\4\r\t\r\4\16\t\16\4\17\t\17\4\20\t\20\4\21\t\21\4\22\t\22"+ "\13\4\f\t\f\4\r\t\r\4\16\t\16\4\17\t\17\4\20\t\20\4\21\t\21\4\22\t\22"+
"\4\23\t\23\4\24\t\24\4\25\t\25\4\26\t\26\4\27\t\27\4\30\t\30\4\31\t\31"+ "\4\23\t\23\4\24\t\24\4\25\t\25\4\26\t\26\4\27\t\27\4\30\t\30\4\31\t\31"+
@ -2584,96 +2559,93 @@ class EqlBaseParser extends Parser {
"\7\r\7\16\7b\3\7\3\7\5\7g\n\7\3\b\3\b\5\bk\n\b\3\b\3\b\6\bo\n\b\r\b\16"+ "\7\r\7\16\7b\3\7\3\7\5\7g\n\7\3\b\3\b\5\bk\n\b\3\b\3\b\6\bo\n\b\r\b\16"+
"\bp\3\b\3\b\5\bu\n\b\3\t\3\t\3\t\3\t\3\t\7\t|\n\t\f\t\16\t\177\13\t\5"+ "\bp\3\b\3\b\5\bu\n\b\3\t\3\t\3\t\3\t\3\t\7\t|\n\t\f\t\16\t\177\13\t\5"+
"\t\u0081\n\t\3\n\3\n\3\n\3\n\7\n\u0087\n\n\f\n\16\n\u008a\13\n\3\13\3"+ "\t\u0081\n\t\3\n\3\n\3\n\3\n\7\n\u0087\n\n\f\n\16\n\u008a\13\n\3\13\3"+
"\13\5\13\u008e\n\13\3\f\3\f\3\f\3\f\5\f\u0094\n\f\5\f\u0096\n\f\3\f\5"+ "\13\5\13\u008e\n\13\3\f\3\f\5\f\u0092\n\f\3\r\3\r\3\r\3\r\3\16\3\16\3"+
"\f\u0099\n\f\3\r\3\r\3\r\3\r\3\16\3\16\3\17\3\17\5\17\u00a3\n\17\3\17"+ "\17\3\17\5\17\u009c\n\17\3\17\3\17\3\17\3\20\3\20\3\21\3\21\3\21\3\21"+
"\3\17\3\17\3\20\3\20\3\21\3\21\3\21\3\21\3\21\3\21\3\21\5\21\u00b1\n\21"+ "\3\21\3\21\3\21\5\21\u00aa\n\21\3\21\3\21\3\21\3\21\3\21\3\21\7\21\u00b2"+
"\3\21\3\21\3\21\3\21\3\21\3\21\7\21\u00b9\n\21\f\21\16\21\u00bc\13\21"+ "\n\21\f\21\16\21\u00b5\13\21\3\22\3\22\3\22\3\22\3\22\5\22\u00bc\n\22"+
"\3\22\3\22\3\22\3\22\3\22\5\22\u00c3\n\22\3\23\3\23\3\23\5\23\u00c8\n"+ "\3\23\3\23\3\23\5\23\u00c1\n\23\3\23\3\23\5\23\u00c5\n\23\3\23\3\23\3"+
"\23\3\23\3\23\5\23\u00cc\n\23\3\23\3\23\3\23\3\23\3\23\3\23\7\23\u00d4"+ "\23\3\23\3\23\3\23\7\23\u00cd\n\23\f\23\16\23\u00d0\13\23\3\24\5\24\u00d3"+
"\n\23\f\23\16\23\u00d7\13\23\3\24\5\24\u00da\n\24\3\24\3\24\3\24\3\24"+ "\n\24\3\24\3\24\3\24\3\24\3\24\7\24\u00da\n\24\f\24\16\24\u00dd\13\24"+
"\3\24\7\24\u00e1\n\24\f\24\16\24\u00e4\13\24\3\24\3\24\3\25\3\25\3\25"+ "\3\24\3\24\3\25\3\25\3\25\3\25\3\25\3\25\3\25\5\25\u00e8\n\25\3\26\3\26"+
"\3\25\3\25\3\25\3\25\5\25\u00ef\n\25\3\26\3\26\3\26\3\26\3\26\7\26\u00f6"+ "\3\26\3\26\3\26\7\26\u00ef\n\26\f\26\16\26\u00f2\13\26\5\26\u00f4\n\26"+
"\n\26\f\26\16\26\u00f9\13\26\5\26\u00fb\n\26\3\26\3\26\3\27\3\27\3\27"+ "\3\26\3\26\3\27\3\27\3\27\3\27\5\27\u00fc\n\27\3\30\3\30\3\31\3\31\3\32"+
"\3\27\5\27\u0103\n\27\3\30\3\30\3\31\3\31\3\32\3\32\3\32\3\32\3\32\6\32"+ "\3\32\3\32\3\32\3\32\6\32\u0107\n\32\r\32\16\32\u0108\3\32\7\32\u010c"+
"\u010e\n\32\r\32\16\32\u010f\3\32\7\32\u0113\n\32\f\32\16\32\u0116\13"+ "\n\32\f\32\16\32\u010f\13\32\3\33\3\33\3\34\3\34\5\34\u0115\n\34\3\35"+
"\32\3\33\3\33\3\34\3\34\5\34\u011c\n\34\3\35\3\35\5\35\u0120\n\35\3\36"+ "\3\35\5\35\u0119\n\35\3\36\3\36\3\36\2\4 $\37\2\4\6\b\n\f\16\20\22\24"+
"\3\36\3\36\2\4 $\37\2\4\6\b\n\f\16\20\22\24\26\30\32\34\36 \"$&(*,.\60"+ "\26\30\32\34\36 \"$&(*,.\60\62\64\668:\2\7\3\2\32\33\3\2\34\36\3\2\24"+
"\62\64\668:\2\7\3\2\33\34\3\2\35\37\3\2\25\32\4\2\6\6\20\20\4\2\'\'++"+ "\31\4\2\6\6\17\17\4\2&&**\u0129\2<\3\2\2\2\4?\3\2\2\2\6B\3\2\2\2\bL\3"+
"\u0132\2<\3\2\2\2\4?\3\2\2\2\6B\3\2\2\2\bL\3\2\2\2\nN\3\2\2\2\fS\3\2\2"+ "\2\2\2\nN\3\2\2\2\fS\3\2\2\2\16h\3\2\2\2\20v\3\2\2\2\22\u0082\3\2\2\2"+
"\2\16h\3\2\2\2\20v\3\2\2\2\22\u0082\3\2\2\2\24\u008b\3\2\2\2\26\u008f"+ "\24\u008b\3\2\2\2\26\u008f\3\2\2\2\30\u0093\3\2\2\2\32\u0097\3\2\2\2\34"+
"\3\2\2\2\30\u009a\3\2\2\2\32\u009e\3\2\2\2\34\u00a2\3\2\2\2\36\u00a7\3"+ "\u009b\3\2\2\2\36\u00a0\3\2\2\2 \u00a9\3\2\2\2\"\u00bb\3\2\2\2$\u00c4"+
"\2\2\2 \u00b0\3\2\2\2\"\u00c2\3\2\2\2$\u00cb\3\2\2\2&\u00d9\3\2\2\2(\u00ee"+ "\3\2\2\2&\u00d2\3\2\2\2(\u00e7\3\2\2\2*\u00e9\3\2\2\2,\u00fb\3\2\2\2."+
"\3\2\2\2*\u00f0\3\2\2\2,\u0102\3\2\2\2.\u0104\3\2\2\2\60\u0106\3\2\2\2"+ "\u00fd\3\2\2\2\60\u00ff\3\2\2\2\62\u0101\3\2\2\2\64\u0110\3\2\2\2\66\u0112"+
"\62\u0108\3\2\2\2\64\u0117\3\2\2\2\66\u0119\3\2\2\28\u011f\3\2\2\2:\u0121"+ "\3\2\2\28\u0118\3\2\2\2:\u011a\3\2\2\2<=\5\6\4\2=>\7\2\2\3>\3\3\2\2\2"+
"\3\2\2\2<=\5\6\4\2=>\7\2\2\3>\3\3\2\2\2?@\5\36\20\2@A\7\2\2\3A\5\3\2\2"+ "?@\5\36\20\2@A\7\2\2\3A\5\3\2\2\2BF\5\b\5\2CE\5\20\t\2DC\3\2\2\2EH\3\2"+
"\2BF\5\b\5\2CE\5\20\t\2DC\3\2\2\2EH\3\2\2\2FD\3\2\2\2FG\3\2\2\2G\7\3\2"+ "\2\2FD\3\2\2\2FG\3\2\2\2G\7\3\2\2\2HF\3\2\2\2IM\5\f\7\2JM\5\16\b\2KM\5"+
"\2\2HF\3\2\2\2IM\5\f\7\2JM\5\16\b\2KM\5\32\16\2LI\3\2\2\2LJ\3\2\2\2LK"+ "\32\16\2LI\3\2\2\2LJ\3\2\2\2LK\3\2\2\2M\t\3\2\2\2NO\7\22\2\2OP\7\t\2\2"+
"\3\2\2\2M\t\3\2\2\2NO\7\23\2\2OP\7\n\2\2PQ\7\24\2\2QR\5\66\34\2R\13\3"+ "PQ\7\23\2\2QR\5\66\34\2R\13\3\2\2\2S\\\7\16\2\2TV\5\22\n\2UW\5\n\6\2V"+
"\2\2\2S\\\7\17\2\2TV\5\22\n\2UW\5\n\6\2VU\3\2\2\2VW\3\2\2\2W]\3\2\2\2"+ "U\3\2\2\2VW\3\2\2\2W]\3\2\2\2XZ\5\n\6\2Y[\5\22\n\2ZY\3\2\2\2Z[\3\2\2\2"+
"XZ\5\n\6\2Y[\5\22\n\2ZY\3\2\2\2Z[\3\2\2\2[]\3\2\2\2\\T\3\2\2\2\\X\3\2"+ "[]\3\2\2\2\\T\3\2\2\2\\X\3\2\2\2\\]\3\2\2\2]^\3\2\2\2^`\5\26\f\2_a\5\26"+
"\2\2\\]\3\2\2\2]^\3\2\2\2^`\5\26\f\2_a\5\26\f\2`_\3\2\2\2ab\3\2\2\2b`"+ "\f\2`_\3\2\2\2ab\3\2\2\2b`\3\2\2\2bc\3\2\2\2cf\3\2\2\2de\7\20\2\2eg\5"+
"\3\2\2\2bc\3\2\2\2cf\3\2\2\2de\7\21\2\2eg\5\26\f\2fd\3\2\2\2fg\3\2\2\2"+ "\26\f\2fd\3\2\2\2fg\3\2\2\2g\r\3\2\2\2hj\7\b\2\2ik\5\22\n\2ji\3\2\2\2"+
"g\r\3\2\2\2hj\7\t\2\2ik\5\22\n\2ji\3\2\2\2jk\3\2\2\2kl\3\2\2\2ln\5\24"+ "jk\3\2\2\2kl\3\2\2\2ln\5\24\13\2mo\5\24\13\2nm\3\2\2\2op\3\2\2\2pn\3\2"+
"\13\2mo\5\24\13\2nm\3\2\2\2op\3\2\2\2pn\3\2\2\2pq\3\2\2\2qt\3\2\2\2rs"+ "\2\2pq\3\2\2\2qt\3\2\2\2rs\7\20\2\2su\5\24\13\2tr\3\2\2\2tu\3\2\2\2u\17"+
"\7\21\2\2su\5\24\13\2tr\3\2\2\2tu\3\2\2\2u\17\3\2\2\2vw\7&\2\2w\u0080"+ "\3\2\2\2vw\7%\2\2w\u0080\7*\2\2x}\5 \21\2yz\7 \2\2z|\5 \21\2{y\3\2\2\2"+
"\7+\2\2x}\5 \21\2yz\7!\2\2z|\5 \21\2{y\3\2\2\2|\177\3\2\2\2}{\3\2\2\2"+ "|\177\3\2\2\2}{\3\2\2\2}~\3\2\2\2~\u0081\3\2\2\2\177}\3\2\2\2\u0080x\3"+
"}~\3\2\2\2~\u0081\3\2\2\2\177}\3\2\2\2\u0080x\3\2\2\2\u0080\u0081\3\2"+ "\2\2\2\u0080\u0081\3\2\2\2\u0081\21\3\2\2\2\u0082\u0083\7\5\2\2\u0083"+
"\2\2\u0081\21\3\2\2\2\u0082\u0083\7\5\2\2\u0083\u0088\5\36\20\2\u0084"+ "\u0088\5\36\20\2\u0084\u0085\7 \2\2\u0085\u0087\5\36\20\2\u0086\u0084"+
"\u0085\7!\2\2\u0085\u0087\5\36\20\2\u0086\u0084\3\2\2\2\u0087\u008a\3"+ "\3\2\2\2\u0087\u008a\3\2\2\2\u0088\u0086\3\2\2\2\u0088\u0089\3\2\2\2\u0089"+
"\2\2\2\u0088\u0086\3\2\2\2\u0088\u0089\3\2\2\2\u0089\23\3\2\2\2\u008a"+ "\23\3\2\2\2\u008a\u0088\3\2\2\2\u008b\u008d\5\30\r\2\u008c\u008e\5\22"+
"\u0088\3\2\2\2\u008b\u008d\5\30\r\2\u008c\u008e\5\22\n\2\u008d\u008c\3"+ "\n\2\u008d\u008c\3\2\2\2\u008d\u008e\3\2\2\2\u008e\25\3\2\2\2\u008f\u0091"+
"\2\2\2\u008d\u008e\3\2\2\2\u008e\25\3\2\2\2\u008f\u0095\5\30\r\2\u0090"+ "\5\30\r\2\u0090\u0092\5\22\n\2\u0091\u0090\3\2\2\2\u0091\u0092\3\2\2\2"+
"\u0093\7\7\2\2\u0091\u0092\7\25\2\2\u0092\u0094\5\60\31\2\u0093\u0091"+ "\u0092\27\3\2\2\2\u0093\u0094\7!\2\2\u0094\u0095\5\34\17\2\u0095\u0096"+
"\3\2\2\2\u0093\u0094\3\2\2\2\u0094\u0096\3\2\2\2\u0095\u0090\3\2\2\2\u0095"+ "\7\"\2\2\u0096\31\3\2\2\2\u0097\u0098\5\34\17\2\u0098\33\3\2\2\2\u0099"+
"\u0096\3\2\2\2\u0096\u0098\3\2\2\2\u0097\u0099\5\22\n\2\u0098\u0097\3"+ "\u009c\7\4\2\2\u009a\u009c\5\64\33\2\u009b\u0099\3\2\2\2\u009b\u009a\3"+
"\2\2\2\u0098\u0099\3\2\2\2\u0099\27\3\2\2\2\u009a\u009b\7\"\2\2\u009b"+ "\2\2\2\u009c\u009d\3\2\2\2\u009d\u009e\7\21\2\2\u009e\u009f\5\36\20\2"+
"\u009c\5\34\17\2\u009c\u009d\7#\2\2\u009d\31\3\2\2\2\u009e\u009f\5\34"+ "\u009f\35\3\2\2\2\u00a0\u00a1\5 \21\2\u00a1\37\3\2\2\2\u00a2\u00a3\b\21"+
"\17\2\u009f\33\3\2\2\2\u00a0\u00a3\7\4\2\2\u00a1\u00a3\5\64\33\2\u00a2"+ "\1\2\u00a3\u00a4\7\n\2\2\u00a4\u00aa\5 \21\7\u00a5\u00a6\7*\2\2\u00a6"+
"\u00a0\3\2\2\2\u00a2\u00a1\3\2\2\2\u00a3\u00a4\3\2\2\2\u00a4\u00a5\7\22"+ "\u00a7\7\f\2\2\u00a7\u00aa\5\30\r\2\u00a8\u00aa\5\"\22\2\u00a9\u00a2\3"+
"\2\2\u00a5\u00a6\5\36\20\2\u00a6\35\3\2\2\2\u00a7\u00a8\5 \21\2\u00a8"+ "\2\2\2\u00a9\u00a5\3\2\2\2\u00a9\u00a8\3\2\2\2\u00aa\u00b3\3\2\2\2\u00ab"+
"\37\3\2\2\2\u00a9\u00aa\b\21\1\2\u00aa\u00ab\7\13\2\2\u00ab\u00b1\5 \21"+ "\u00ac\f\4\2\2\u00ac\u00ad\7\3\2\2\u00ad\u00b2\5 \21\5\u00ae\u00af\f\3"+
"\7\u00ac\u00ad\7+\2\2\u00ad\u00ae\7\r\2\2\u00ae\u00b1\5\30\r\2\u00af\u00b1"+ "\2\2\u00af\u00b0\7\r\2\2\u00b0\u00b2\5 \21\4\u00b1\u00ab\3\2\2\2\u00b1"+
"\5\"\22\2\u00b0\u00a9\3\2\2\2\u00b0\u00ac\3\2\2\2\u00b0\u00af\3\2\2\2"+ "\u00ae\3\2\2\2\u00b2\u00b5\3\2\2\2\u00b3\u00b1\3\2\2\2\u00b3\u00b4\3\2"+
"\u00b1\u00ba\3\2\2\2\u00b2\u00b3\f\4\2\2\u00b3\u00b4\7\3\2\2\u00b4\u00b9"+ "\2\2\u00b4!\3\2\2\2\u00b5\u00b3\3\2\2\2\u00b6\u00bc\5$\23\2\u00b7\u00b8"+
"\5 \21\5\u00b5\u00b6\f\3\2\2\u00b6\u00b7\7\16\2\2\u00b7\u00b9\5 \21\4"+ "\5$\23\2\u00b8\u00b9\5.\30\2\u00b9\u00ba\5$\23\2\u00ba\u00bc\3\2\2\2\u00bb"+
"\u00b8\u00b2\3\2\2\2\u00b8\u00b5\3\2\2\2\u00b9\u00bc\3\2\2\2\u00ba\u00b8"+ "\u00b6\3\2\2\2\u00bb\u00b7\3\2\2\2\u00bc#\3\2\2\2\u00bd\u00be\b\23\1\2"+
"\3\2\2\2\u00ba\u00bb\3\2\2\2\u00bb!\3\2\2\2\u00bc\u00ba\3\2\2\2\u00bd"+ "\u00be\u00c0\5(\25\2\u00bf\u00c1\5&\24\2\u00c0\u00bf\3\2\2\2\u00c0\u00c1"+
"\u00c3\5$\23\2\u00be\u00bf\5$\23\2\u00bf\u00c0\5.\30\2\u00c0\u00c1\5$"+ "\3\2\2\2\u00c1\u00c5\3\2\2\2\u00c2\u00c3\t\2\2\2\u00c3\u00c5\5$\23\5\u00c4"+
"\23\2\u00c1\u00c3\3\2\2\2\u00c2\u00bd\3\2\2\2\u00c2\u00be\3\2\2\2\u00c3"+ "\u00bd\3\2\2\2\u00c4\u00c2\3\2\2\2\u00c5\u00ce\3\2\2\2\u00c6\u00c7\f\4"+
"#\3\2\2\2\u00c4\u00c5\b\23\1\2\u00c5\u00c7\5(\25\2\u00c6\u00c8\5&\24\2"+ "\2\2\u00c7\u00c8\t\3\2\2\u00c8\u00cd\5$\23\5\u00c9\u00ca\f\3\2\2\u00ca"+
"\u00c7\u00c6\3\2\2\2\u00c7\u00c8\3\2\2\2\u00c8\u00cc\3\2\2\2\u00c9\u00ca"+ "\u00cb\t\2\2\2\u00cb\u00cd\5$\23\4\u00cc\u00c6\3\2\2\2\u00cc\u00c9\3\2"+
"\t\2\2\2\u00ca\u00cc\5$\23\5\u00cb\u00c4\3\2\2\2\u00cb\u00c9\3\2\2\2\u00cc"+ "\2\2\u00cd\u00d0\3\2\2\2\u00ce\u00cc\3\2\2\2\u00ce\u00cf\3\2\2\2\u00cf"+
"\u00d5\3\2\2\2\u00cd\u00ce\f\4\2\2\u00ce\u00cf\t\3\2\2\u00cf\u00d4\5$"+ "%\3\2\2\2\u00d0\u00ce\3\2\2\2\u00d1\u00d3\7\n\2\2\u00d2\u00d1\3\2\2\2"+
"\23\5\u00d0\u00d1\f\3\2\2\u00d1\u00d2\t\2\2\2\u00d2\u00d4\5$\23\4\u00d3"+ "\u00d2\u00d3\3\2\2\2\u00d3\u00d4\3\2\2\2\u00d4\u00d5\7\7\2\2\u00d5\u00d6"+
"\u00cd\3\2\2\2\u00d3\u00d0\3\2\2\2\u00d4\u00d7\3\2\2\2\u00d5\u00d3\3\2"+ "\7#\2\2\u00d6\u00db\5\36\20\2\u00d7\u00d8\7 \2\2\u00d8\u00da\5\36\20\2"+
"\2\2\u00d5\u00d6\3\2\2\2\u00d6%\3\2\2\2\u00d7\u00d5\3\2\2\2\u00d8\u00da"+ "\u00d9\u00d7\3\2\2\2\u00da\u00dd\3\2\2\2\u00db\u00d9\3\2\2\2\u00db\u00dc"+
"\7\13\2\2\u00d9\u00d8\3\2\2\2\u00d9\u00da\3\2\2\2\u00da\u00db\3\2\2\2"+ "\3\2\2\2\u00dc\u00de\3\2\2\2\u00dd\u00db\3\2\2\2\u00de\u00df\7$\2\2\u00df"+
"\u00db\u00dc\7\b\2\2\u00dc\u00dd\7$\2\2\u00dd\u00e2\5\36\20\2\u00de\u00df"+ "\'\3\2\2\2\u00e0\u00e8\5,\27\2\u00e1\u00e8\5*\26\2\u00e2\u00e8\5\62\32"+
"\7!\2\2\u00df\u00e1\5\36\20\2\u00e0\u00de\3\2\2\2\u00e1\u00e4\3\2\2\2"+ "\2\u00e3\u00e4\7#\2\2\u00e4\u00e5\5\36\20\2\u00e5\u00e6\7$\2\2\u00e6\u00e8"+
"\u00e2\u00e0\3\2\2\2\u00e2\u00e3\3\2\2\2\u00e3\u00e5\3\2\2\2\u00e4\u00e2"+ "\3\2\2\2\u00e7\u00e0\3\2\2\2\u00e7\u00e1\3\2\2\2\u00e7\u00e2\3\2\2\2\u00e7"+
"\3\2\2\2\u00e5\u00e6\7%\2\2\u00e6\'\3\2\2\2\u00e7\u00ef\5,\27\2\u00e8"+ "\u00e3\3\2\2\2\u00e8)\3\2\2\2\u00e9\u00ea\7*\2\2\u00ea\u00f3\7#\2\2\u00eb"+
"\u00ef\5*\26\2\u00e9\u00ef\5\62\32\2\u00ea\u00eb\7$\2\2\u00eb\u00ec\5"+ "\u00f0\5\36\20\2\u00ec\u00ed\7 \2\2\u00ed\u00ef\5\36\20\2\u00ee\u00ec"+
"\36\20\2\u00ec\u00ed\7%\2\2\u00ed\u00ef\3\2\2\2\u00ee\u00e7\3\2\2\2\u00ee"+ "\3\2\2\2\u00ef\u00f2\3\2\2\2\u00f0\u00ee\3\2\2\2\u00f0\u00f1\3\2\2\2\u00f1"+
"\u00e8\3\2\2\2\u00ee\u00e9\3\2\2\2\u00ee\u00ea\3\2\2\2\u00ef)\3\2\2\2"+ "\u00f4\3\2\2\2\u00f2\u00f0\3\2\2\2\u00f3\u00eb\3\2\2\2\u00f3\u00f4\3\2"+
"\u00f0\u00f1\7+\2\2\u00f1\u00fa\7$\2\2\u00f2\u00f7\5\36\20\2\u00f3\u00f4"+ "\2\2\u00f4\u00f5\3\2\2\2\u00f5\u00f6\7$\2\2\u00f6+\3\2\2\2\u00f7\u00fc"+
"\7!\2\2\u00f4\u00f6\5\36\20\2\u00f5\u00f3\3\2\2\2\u00f6\u00f9\3\2\2\2"+ "\7\13\2\2\u00f8\u00fc\58\35\2\u00f9\u00fc\5\60\31\2\u00fa\u00fc\5:\36"+
"\u00f7\u00f5\3\2\2\2\u00f7\u00f8\3\2\2\2\u00f8\u00fb\3\2\2\2\u00f9\u00f7"+ "\2\u00fb\u00f7\3\2\2\2\u00fb\u00f8\3\2\2\2\u00fb\u00f9\3\2\2\2\u00fb\u00fa"+
"\3\2\2\2\u00fa\u00f2\3\2\2\2\u00fa\u00fb\3\2\2\2\u00fb\u00fc\3\2\2\2\u00fc"+ "\3\2\2\2\u00fc-\3\2\2\2\u00fd\u00fe\t\4\2\2\u00fe/\3\2\2\2\u00ff\u0100"+
"\u00fd\7%\2\2\u00fd+\3\2\2\2\u00fe\u0103\7\f\2\2\u00ff\u0103\58\35\2\u0100"+ "\t\5\2\2\u0100\61\3\2\2\2\u0101\u010d\5\64\33\2\u0102\u0103\7\37\2\2\u0103"+
"\u0103\5\60\31\2\u0101\u0103\5:\36\2\u0102\u00fe\3\2\2\2\u0102\u00ff\3"+ "\u010c\5\64\33\2\u0104\u0106\7!\2\2\u0105\u0107\7(\2\2\u0106\u0105\3\2"+
"\2\2\2\u0102\u0100\3\2\2\2\u0102\u0101\3\2\2\2\u0103-\3\2\2\2\u0104\u0105"+ "\2\2\u0107\u0108\3\2\2\2\u0108\u0106\3\2\2\2\u0108\u0109\3\2\2\2\u0109"+
"\t\4\2\2\u0105/\3\2\2\2\u0106\u0107\t\5\2\2\u0107\61\3\2\2\2\u0108\u0114"+ "\u010a\3\2\2\2\u010a\u010c\7\"\2\2\u010b\u0102\3\2\2\2\u010b\u0104\3\2"+
"\5\64\33\2\u0109\u010a\7 \2\2\u010a\u0113\5\64\33\2\u010b\u010d\7\"\2"+ "\2\2\u010c\u010f\3\2\2\2\u010d\u010b\3\2\2\2\u010d\u010e\3\2\2\2\u010e"+
"\2\u010c\u010e\7)\2\2\u010d\u010c\3\2\2\2\u010e\u010f\3\2\2\2\u010f\u010d"+ "\63\3\2\2\2\u010f\u010d\3\2\2\2\u0110\u0111\t\6\2\2\u0111\65\3\2\2\2\u0112"+
"\3\2\2\2\u010f\u0110\3\2\2\2\u0110\u0111\3\2\2\2\u0111\u0113\7#\2\2\u0112"+ "\u0114\58\35\2\u0113\u0115\7*\2\2\u0114\u0113\3\2\2\2\u0114\u0115\3\2"+
"\u0109\3\2\2\2\u0112\u010b\3\2\2\2\u0113\u0116\3\2\2\2\u0114\u0112\3\2"+ "\2\2\u0115\67\3\2\2\2\u0116\u0119\7)\2\2\u0117\u0119\7(\2\2\u0118\u0116"+
"\2\2\u0114\u0115\3\2\2\2\u0115\63\3\2\2\2\u0116\u0114\3\2\2\2\u0117\u0118"+ "\3\2\2\2\u0118\u0117\3\2\2\2\u01199\3\2\2\2\u011a\u011b\7\'\2\2\u011b"+
"\t\6\2\2\u0118\65\3\2\2\2\u0119\u011b\58\35\2\u011a\u011c\7+\2\2\u011b"+ ";\3\2\2\2%FLVZ\\bfjpt}\u0080\u0088\u008d\u0091\u009b\u00a9\u00b1\u00b3"+
"\u011a\3\2\2\2\u011b\u011c\3\2\2\2\u011c\67\3\2\2\2\u011d\u0120\7*\2\2"+ "\u00bb\u00c0\u00c4\u00cc\u00ce\u00d2\u00db\u00e7\u00f0\u00f3\u00fb\u0108"+
"\u011e\u0120\7)\2\2\u011f\u011d\3\2\2\2\u011f\u011e\3\2\2\2\u01209\3\2"+ "\u010b\u010d\u0114\u0118";
"\2\2\u0121\u0122\7(\2\2\u0122;\3\2\2\2\'FLVZ\\bfjpt}\u0080\u0088\u008d"+
"\u0093\u0095\u0098\u00a2\u00b0\u00b8\u00ba\u00c2\u00c7\u00cb\u00d3\u00d5"+
"\u00d9\u00e2\u00ee\u00f7\u00fa\u0102\u010f\u0112\u0114\u011b\u011f";
public static final ATN _ATN = public static final ATN _ATN =
new ATNDeserializer().deserialize(_serializedATN.toCharArray()); new ATNDeserializer().deserialize(_serializedATN.toCharArray());
static { static {

View File

@ -261,10 +261,6 @@ public abstract class LogicalPlanBuilder extends ExpressionBuilder {
} }
public KeyedFilter visitSequenceTerm(SequenceTermContext ctx, List<Attribute> joinKeys) { public KeyedFilter visitSequenceTerm(SequenceTermContext ctx, List<Attribute> joinKeys) {
if (ctx.FORK() != null) {
throw new ParsingException(source(ctx.FORK()), "sequence fork is unsupported");
}
return keyedFilter(joinKeys, ctx, ctx.by, ctx.subquery()); return keyedFilter(joinKeys, ctx, ctx.by, ctx.subquery());
} }

View File

@ -23,9 +23,9 @@ public class VerifierTests extends ESTestCase {
private static final String INDEX_NAME = "test"; private static final String INDEX_NAME = "test";
private EqlParser parser = new EqlParser(); private final EqlParser parser = new EqlParser();
private IndexResolution index = loadIndexResolution("mapping-default.json"); private final IndexResolution index = loadIndexResolution("mapping-default.json");
private static Map<String, EsField> loadEqlMapping(String name) { private static Map<String, EsField> loadEqlMapping(String name) {
return TypesTests.loadMapping(name); return TypesTests.loadMapping(name);

View File

@ -73,27 +73,27 @@ file where descendant of [registry where true];
//sequence by unique_pid [process where true] [file where true] fork; //sequence by unique_pid [process where true] [file where true] fork;
sequence by unique_pid [process where true] [file where true] fork==true; //sequence by unique_pid [process where true] [file where true] fork==true;
// no longer supported // no longer supported
//sequence by unique_pid [process where true] [file where true] fork==1; //sequence by unique_pid [process where true] [file where true] fork==1;
sequence //sequence
[process where true] by unique_pid // [process where true] by unique_pid
[file where true] fork==true by unique_pid // [file where true] fork==true by unique_pid
[process where true] by unique_ppid // [process where true] by unique_ppid
| head 4; //| head 4;
sequence by unique_pid [process where true] [file where true] fork==false; //sequence by unique_pid [process where true] [file where true] fork==false;
// no longer supported // no longer supported
// sequence by unique_pid [process where true] [file where true] fork==0 [network where true]; // sequence by unique_pid [process where true] [file where true] fork==0 [network where true];
sequence by unique_pid [process where true] [file where true] fork [network where true]; //sequence by unique_pid [process where true] [file where true] fork [network where true];
// no longer supported // no longer supported
// sequence by unique_pid [process where true] [file where true] fork==0; // sequence by unique_pid [process where true] [file where true] fork==0;
sequence by unique_pid [process where true] [file where true] fork==true; //sequence by unique_pid [process where true] [file where true] fork==true;
sequence with maxspan=2.5m sequence with maxspan=2.5m