// ANTLR GENERATED CODE: DO NOT EDIT package org.elasticsearch.painless.antlr; import org.antlr.v4.runtime.atn.*; import org.antlr.v4.runtime.dfa.DFA; import org.antlr.v4.runtime.*; import org.antlr.v4.runtime.misc.*; import org.antlr.v4.runtime.tree.*; import java.util.List; import java.util.Iterator; import java.util.ArrayList; @SuppressWarnings({"all", "warnings", "unchecked", "unused", "cast"}) class PainlessParser extends Parser { static { RuntimeMetaData.checkVersion("4.5.1", RuntimeMetaData.VERSION); } protected static final DFA[] _decisionToDFA; protected static final PredictionContextCache _sharedContextCache = new PredictionContextCache(); public static final int WS=1, COMMENT=2, LBRACK=3, RBRACK=4, LBRACE=5, RBRACE=6, LP=7, RP=8, DOT=9, NSDOT=10, COMMA=11, SEMICOLON=12, IF=13, IN=14, ELSE=15, WHILE=16, DO=17, FOR=18, CONTINUE=19, BREAK=20, RETURN=21, NEW=22, TRY=23, CATCH=24, THROW=25, THIS=26, INSTANCEOF=27, BOOLNOT=28, BWNOT=29, MUL=30, DIV=31, REM=32, ADD=33, SUB=34, LSH=35, RSH=36, USH=37, LT=38, LTE=39, GT=40, GTE=41, EQ=42, EQR=43, NE=44, NER=45, BWAND=46, XOR=47, BWOR=48, BOOLAND=49, BOOLOR=50, COND=51, COLON=52, ELVIS=53, REF=54, ARROW=55, FIND=56, MATCH=57, INCR=58, DECR=59, ASSIGN=60, AADD=61, ASUB=62, AMUL=63, ADIV=64, AREM=65, AAND=66, AXOR=67, AOR=68, ALSH=69, ARSH=70, AUSH=71, OCTAL=72, HEX=73, INTEGER=74, DECIMAL=75, STRING=76, REGEX=77, TRUE=78, FALSE=79, NULL=80, TYPE=81, ID=82, DOTINTEGER=83, DOTID=84; public static final int RULE_source = 0, RULE_function = 1, RULE_parameters = 2, RULE_statement = 3, RULE_trailer = 4, RULE_block = 5, RULE_empty = 6, RULE_initializer = 7, RULE_afterthought = 8, RULE_declaration = 9, RULE_decltype = 10, RULE_declvar = 11, RULE_trap = 12, RULE_delimiter = 13, RULE_expression = 14, RULE_unary = 15, RULE_chain = 16, RULE_primary = 17, RULE_postfix = 18, RULE_postdot = 19, RULE_callinvoke = 20, RULE_fieldaccess = 21, RULE_braceaccess = 22, RULE_arrayinitializer = 23, RULE_listinitializer = 24, RULE_mapinitializer = 25, RULE_maptoken = 26, RULE_arguments = 27, RULE_argument = 28, RULE_lambda = 29, RULE_lamtype = 30, RULE_funcref = 31; public static final String[] ruleNames = { "source", "function", "parameters", "statement", "trailer", "block", "empty", "initializer", "afterthought", "declaration", "decltype", "declvar", "trap", "delimiter", "expression", "unary", "chain", "primary", "postfix", "postdot", "callinvoke", "fieldaccess", "braceaccess", "arrayinitializer", "listinitializer", "mapinitializer", "maptoken", "arguments", "argument", "lambda", "lamtype", "funcref" }; private static final String[] _LITERAL_NAMES = { null, null, null, "'{'", "'}'", "'['", "']'", "'('", "')'", "'.'", "'?.'", "','", "';'", "'if'", "'in'", "'else'", "'while'", "'do'", "'for'", "'continue'", "'break'", "'return'", "'new'", "'try'", "'catch'", "'throw'", "'this'", "'instanceof'", "'!'", "'~'", "'*'", "'/'", "'%'", "'+'", "'-'", "'<<'", "'>>'", "'>>>'", "'<'", "'<='", "'>'", "'>='", "'=='", "'==='", "'!='", "'!=='", "'&'", "'^'", "'|'", "'&&'", "'||'", "'?'", "':'", "'?:'", "'::'", "'->'", "'=~'", "'==~'", "'++'", "'--'", "'='", "'+='", "'-='", "'*='", "'/='", "'%='", "'&='", "'^='", "'|='", "'<<='", "'>>='", "'>>>='", null, null, null, null, null, null, "'true'", "'false'", "'null'" }; private static final String[] _SYMBOLIC_NAMES = { null, "WS", "COMMENT", "LBRACK", "RBRACK", "LBRACE", "RBRACE", "LP", "RP", "DOT", "NSDOT", "COMMA", "SEMICOLON", "IF", "IN", "ELSE", "WHILE", "DO", "FOR", "CONTINUE", "BREAK", "RETURN", "NEW", "TRY", "CATCH", "THROW", "THIS", "INSTANCEOF", "BOOLNOT", "BWNOT", "MUL", "DIV", "REM", "ADD", "SUB", "LSH", "RSH", "USH", "LT", "LTE", "GT", "GTE", "EQ", "EQR", "NE", "NER", "BWAND", "XOR", "BWOR", "BOOLAND", "BOOLOR", "COND", "COLON", "ELVIS", "REF", "ARROW", "FIND", "MATCH", "INCR", "DECR", "ASSIGN", "AADD", "ASUB", "AMUL", "ADIV", "AREM", "AAND", "AXOR", "AOR", "ALSH", "ARSH", "AUSH", "OCTAL", "HEX", "INTEGER", "DECIMAL", "STRING", "REGEX", "TRUE", "FALSE", "NULL", "TYPE", "ID", "DOTINTEGER", "DOTID" }; public static final Vocabulary VOCABULARY = new VocabularyImpl(_LITERAL_NAMES, _SYMBOLIC_NAMES); /** * @deprecated Use {@link #VOCABULARY} instead. */ @Deprecated public static final String[] tokenNames; static { tokenNames = new String[_SYMBOLIC_NAMES.length]; for (int i = 0; i < tokenNames.length; i++) { tokenNames[i] = VOCABULARY.getLiteralName(i); if (tokenNames[i] == null) { tokenNames[i] = VOCABULARY.getSymbolicName(i); } if (tokenNames[i] == null) { tokenNames[i] = "<INVALID>"; } } } @Override @Deprecated public String[] getTokenNames() { return tokenNames; } @Override public Vocabulary getVocabulary() { return VOCABULARY; } @Override public String getGrammarFileName() { return "PainlessParser.g4"; } @Override public String[] getRuleNames() { return ruleNames; } @Override public String getSerializedATN() { return _serializedATN; } @Override public ATN getATN() { return _ATN; } public PainlessParser(TokenStream input) { super(input); _interp = new ParserATNSimulator(this,_ATN,_decisionToDFA,_sharedContextCache); } public static class SourceContext extends ParserRuleContext { public TerminalNode EOF() { return getToken(PainlessParser.EOF, 0); } public List<FunctionContext> function() { return getRuleContexts(FunctionContext.class); } public FunctionContext function(int i) { return getRuleContext(FunctionContext.class,i); } public List<StatementContext> statement() { return getRuleContexts(StatementContext.class); } public StatementContext statement(int i) { return getRuleContext(StatementContext.class,i); } public SourceContext(ParserRuleContext parent, int invokingState) { super(parent, invokingState); } @Override public int getRuleIndex() { return RULE_source; } @Override public <T> T accept(ParseTreeVisitor<? extends T> visitor) { if ( visitor instanceof PainlessParserVisitor ) return ((PainlessParserVisitor<? extends T>)visitor).visitSource(this); else return visitor.visitChildren(this); } } public final SourceContext source() throws RecognitionException { SourceContext _localctx = new SourceContext(_ctx, getState()); enterRule(_localctx, 0, RULE_source); int _la; try { int _alt; enterOuterAlt(_localctx, 1); { setState(67); _errHandler.sync(this); _alt = getInterpreter().adaptivePredict(_input,0,_ctx); while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { if ( _alt==1 ) { { { setState(64); function(); } } } setState(69); _errHandler.sync(this); _alt = getInterpreter().adaptivePredict(_input,0,_ctx); } setState(73); _errHandler.sync(this); _la = _input.LA(1); while ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << LBRACE) | (1L << LP) | (1L << IF) | (1L << WHILE) | (1L << DO) | (1L << FOR) | (1L << CONTINUE) | (1L << BREAK) | (1L << RETURN) | (1L << NEW) | (1L << TRY) | (1L << THROW) | (1L << BOOLNOT) | (1L << BWNOT) | (1L << ADD) | (1L << SUB) | (1L << INCR) | (1L << DECR))) != 0) || ((((_la - 72)) & ~0x3f) == 0 && ((1L << (_la - 72)) & ((1L << (OCTAL - 72)) | (1L << (HEX - 72)) | (1L << (INTEGER - 72)) | (1L << (DECIMAL - 72)) | (1L << (STRING - 72)) | (1L << (REGEX - 72)) | (1L << (TRUE - 72)) | (1L << (FALSE - 72)) | (1L << (NULL - 72)) | (1L << (TYPE - 72)) | (1L << (ID - 72)))) != 0)) { { { setState(70); statement(); } } setState(75); _errHandler.sync(this); _la = _input.LA(1); } setState(76); match(EOF); } } catch (RecognitionException re) { _localctx.exception = re; _errHandler.reportError(this, re); _errHandler.recover(this, re); } finally { exitRule(); } return _localctx; } public static class FunctionContext extends ParserRuleContext { public DecltypeContext decltype() { return getRuleContext(DecltypeContext.class,0); } public TerminalNode ID() { return getToken(PainlessParser.ID, 0); } public ParametersContext parameters() { return getRuleContext(ParametersContext.class,0); } public BlockContext block() { return getRuleContext(BlockContext.class,0); } public FunctionContext(ParserRuleContext parent, int invokingState) { super(parent, invokingState); } @Override public int getRuleIndex() { return RULE_function; } @Override public <T> T accept(ParseTreeVisitor<? extends T> visitor) { if ( visitor instanceof PainlessParserVisitor ) return ((PainlessParserVisitor<? extends T>)visitor).visitFunction(this); else return visitor.visitChildren(this); } } public final FunctionContext function() throws RecognitionException { FunctionContext _localctx = new FunctionContext(_ctx, getState()); enterRule(_localctx, 2, RULE_function); try { enterOuterAlt(_localctx, 1); { setState(78); decltype(); setState(79); match(ID); setState(80); parameters(); setState(81); block(); } } catch (RecognitionException re) { _localctx.exception = re; _errHandler.reportError(this, re); _errHandler.recover(this, re); } finally { exitRule(); } return _localctx; } public static class ParametersContext extends ParserRuleContext { public TerminalNode LP() { return getToken(PainlessParser.LP, 0); } public TerminalNode RP() { return getToken(PainlessParser.RP, 0); } public List<DecltypeContext> decltype() { return getRuleContexts(DecltypeContext.class); } public DecltypeContext decltype(int i) { return getRuleContext(DecltypeContext.class,i); } public List<TerminalNode> ID() { return getTokens(PainlessParser.ID); } public TerminalNode ID(int i) { return getToken(PainlessParser.ID, i); } public List<TerminalNode> COMMA() { return getTokens(PainlessParser.COMMA); } public TerminalNode COMMA(int i) { return getToken(PainlessParser.COMMA, i); } public ParametersContext(ParserRuleContext parent, int invokingState) { super(parent, invokingState); } @Override public int getRuleIndex() { return RULE_parameters; } @Override public <T> T accept(ParseTreeVisitor<? extends T> visitor) { if ( visitor instanceof PainlessParserVisitor ) return ((PainlessParserVisitor<? extends T>)visitor).visitParameters(this); else return visitor.visitChildren(this); } } public final ParametersContext parameters() throws RecognitionException { ParametersContext _localctx = new ParametersContext(_ctx, getState()); enterRule(_localctx, 4, RULE_parameters); int _la; try { enterOuterAlt(_localctx, 1); { setState(83); match(LP); setState(95); _la = _input.LA(1); if (_la==TYPE) { { setState(84); decltype(); setState(85); match(ID); setState(92); _errHandler.sync(this); _la = _input.LA(1); while (_la==COMMA) { { { setState(86); match(COMMA); setState(87); decltype(); setState(88); match(ID); } } setState(94); _errHandler.sync(this); _la = _input.LA(1); } } } setState(97); match(RP); } } catch (RecognitionException re) { _localctx.exception = re; _errHandler.reportError(this, re); _errHandler.recover(this, re); } finally { exitRule(); } return _localctx; } public static class StatementContext extends ParserRuleContext { public StatementContext(ParserRuleContext parent, int invokingState) { super(parent, invokingState); } @Override public int getRuleIndex() { return RULE_statement; } public StatementContext() { } public void copyFrom(StatementContext ctx) { super.copyFrom(ctx); } } public static class DeclContext extends StatementContext { public DeclarationContext declaration() { return getRuleContext(DeclarationContext.class,0); } public DelimiterContext delimiter() { return getRuleContext(DelimiterContext.class,0); } public DeclContext(StatementContext ctx) { copyFrom(ctx); } @Override public <T> T accept(ParseTreeVisitor<? extends T> visitor) { if ( visitor instanceof PainlessParserVisitor ) return ((PainlessParserVisitor<? extends T>)visitor).visitDecl(this); else return visitor.visitChildren(this); } } public static class BreakContext extends StatementContext { public TerminalNode BREAK() { return getToken(PainlessParser.BREAK, 0); } public DelimiterContext delimiter() { return getRuleContext(DelimiterContext.class,0); } public BreakContext(StatementContext ctx) { copyFrom(ctx); } @Override public <T> T accept(ParseTreeVisitor<? extends T> visitor) { if ( visitor instanceof PainlessParserVisitor ) return ((PainlessParserVisitor<? extends T>)visitor).visitBreak(this); else return visitor.visitChildren(this); } } public static class ForContext extends StatementContext { public TerminalNode FOR() { return getToken(PainlessParser.FOR, 0); } public TerminalNode LP() { return getToken(PainlessParser.LP, 0); } public List<TerminalNode> SEMICOLON() { return getTokens(PainlessParser.SEMICOLON); } public TerminalNode SEMICOLON(int i) { return getToken(PainlessParser.SEMICOLON, i); } public TerminalNode RP() { return getToken(PainlessParser.RP, 0); } public TrailerContext trailer() { return getRuleContext(TrailerContext.class,0); } public EmptyContext empty() { return getRuleContext(EmptyContext.class,0); } public InitializerContext initializer() { return getRuleContext(InitializerContext.class,0); } public ExpressionContext expression() { return getRuleContext(ExpressionContext.class,0); } public AfterthoughtContext afterthought() { return getRuleContext(AfterthoughtContext.class,0); } public ForContext(StatementContext ctx) { copyFrom(ctx); } @Override public <T> T accept(ParseTreeVisitor<? extends T> visitor) { if ( visitor instanceof PainlessParserVisitor ) return ((PainlessParserVisitor<? extends T>)visitor).visitFor(this); else return visitor.visitChildren(this); } } public static class DoContext extends StatementContext { public TerminalNode DO() { return getToken(PainlessParser.DO, 0); } public BlockContext block() { return getRuleContext(BlockContext.class,0); } public TerminalNode WHILE() { return getToken(PainlessParser.WHILE, 0); } public TerminalNode LP() { return getToken(PainlessParser.LP, 0); } public ExpressionContext expression() { return getRuleContext(ExpressionContext.class,0); } public TerminalNode RP() { return getToken(PainlessParser.RP, 0); } public DelimiterContext delimiter() { return getRuleContext(DelimiterContext.class,0); } public DoContext(StatementContext ctx) { copyFrom(ctx); } @Override public <T> T accept(ParseTreeVisitor<? extends T> visitor) { if ( visitor instanceof PainlessParserVisitor ) return ((PainlessParserVisitor<? extends T>)visitor).visitDo(this); else return visitor.visitChildren(this); } } public static class WhileContext extends StatementContext { public TerminalNode WHILE() { return getToken(PainlessParser.WHILE, 0); } public TerminalNode LP() { return getToken(PainlessParser.LP, 0); } public ExpressionContext expression() { return getRuleContext(ExpressionContext.class,0); } public TerminalNode RP() { return getToken(PainlessParser.RP, 0); } public TrailerContext trailer() { return getRuleContext(TrailerContext.class,0); } public EmptyContext empty() { return getRuleContext(EmptyContext.class,0); } public WhileContext(StatementContext ctx) { copyFrom(ctx); } @Override public <T> T accept(ParseTreeVisitor<? extends T> visitor) { if ( visitor instanceof PainlessParserVisitor ) return ((PainlessParserVisitor<? extends T>)visitor).visitWhile(this); else return visitor.visitChildren(this); } } public static class IneachContext extends StatementContext { public TerminalNode FOR() { return getToken(PainlessParser.FOR, 0); } public TerminalNode LP() { return getToken(PainlessParser.LP, 0); } public TerminalNode ID() { return getToken(PainlessParser.ID, 0); } public TerminalNode IN() { return getToken(PainlessParser.IN, 0); } public ExpressionContext expression() { return getRuleContext(ExpressionContext.class,0); } public TerminalNode RP() { return getToken(PainlessParser.RP, 0); } public TrailerContext trailer() { return getRuleContext(TrailerContext.class,0); } public IneachContext(StatementContext ctx) { copyFrom(ctx); } @Override public <T> T accept(ParseTreeVisitor<? extends T> visitor) { if ( visitor instanceof PainlessParserVisitor ) return ((PainlessParserVisitor<? extends T>)visitor).visitIneach(this); else return visitor.visitChildren(this); } } public static class EachContext extends StatementContext { public TerminalNode FOR() { return getToken(PainlessParser.FOR, 0); } public TerminalNode LP() { return getToken(PainlessParser.LP, 0); } public DecltypeContext decltype() { return getRuleContext(DecltypeContext.class,0); } public TerminalNode ID() { return getToken(PainlessParser.ID, 0); } public TerminalNode COLON() { return getToken(PainlessParser.COLON, 0); } public ExpressionContext expression() { return getRuleContext(ExpressionContext.class,0); } public TerminalNode RP() { return getToken(PainlessParser.RP, 0); } public TrailerContext trailer() { return getRuleContext(TrailerContext.class,0); } public EachContext(StatementContext ctx) { copyFrom(ctx); } @Override public <T> T accept(ParseTreeVisitor<? extends T> visitor) { if ( visitor instanceof PainlessParserVisitor ) return ((PainlessParserVisitor<? extends T>)visitor).visitEach(this); else return visitor.visitChildren(this); } } public static class ThrowContext extends StatementContext { public TerminalNode THROW() { return getToken(PainlessParser.THROW, 0); } public ExpressionContext expression() { return getRuleContext(ExpressionContext.class,0); } public DelimiterContext delimiter() { return getRuleContext(DelimiterContext.class,0); } public ThrowContext(StatementContext ctx) { copyFrom(ctx); } @Override public <T> T accept(ParseTreeVisitor<? extends T> visitor) { if ( visitor instanceof PainlessParserVisitor ) return ((PainlessParserVisitor<? extends T>)visitor).visitThrow(this); else return visitor.visitChildren(this); } } public static class ContinueContext extends StatementContext { public TerminalNode CONTINUE() { return getToken(PainlessParser.CONTINUE, 0); } public DelimiterContext delimiter() { return getRuleContext(DelimiterContext.class,0); } public ContinueContext(StatementContext ctx) { copyFrom(ctx); } @Override public <T> T accept(ParseTreeVisitor<? extends T> visitor) { if ( visitor instanceof PainlessParserVisitor ) return ((PainlessParserVisitor<? extends T>)visitor).visitContinue(this); else return visitor.visitChildren(this); } } public static class TryContext extends StatementContext { public TerminalNode TRY() { return getToken(PainlessParser.TRY, 0); } public BlockContext block() { return getRuleContext(BlockContext.class,0); } public List<TrapContext> trap() { return getRuleContexts(TrapContext.class); } public TrapContext trap(int i) { return getRuleContext(TrapContext.class,i); } public TryContext(StatementContext ctx) { copyFrom(ctx); } @Override public <T> T accept(ParseTreeVisitor<? extends T> visitor) { if ( visitor instanceof PainlessParserVisitor ) return ((PainlessParserVisitor<? extends T>)visitor).visitTry(this); else return visitor.visitChildren(this); } } public static class ExprContext extends StatementContext { public ExpressionContext expression() { return getRuleContext(ExpressionContext.class,0); } public DelimiterContext delimiter() { return getRuleContext(DelimiterContext.class,0); } public ExprContext(StatementContext ctx) { copyFrom(ctx); } @Override public <T> T accept(ParseTreeVisitor<? extends T> visitor) { if ( visitor instanceof PainlessParserVisitor ) return ((PainlessParserVisitor<? extends T>)visitor).visitExpr(this); else return visitor.visitChildren(this); } } public static class IfContext extends StatementContext { public TerminalNode IF() { return getToken(PainlessParser.IF, 0); } public TerminalNode LP() { return getToken(PainlessParser.LP, 0); } public ExpressionContext expression() { return getRuleContext(ExpressionContext.class,0); } public TerminalNode RP() { return getToken(PainlessParser.RP, 0); } public List<TrailerContext> trailer() { return getRuleContexts(TrailerContext.class); } public TrailerContext trailer(int i) { return getRuleContext(TrailerContext.class,i); } public TerminalNode ELSE() { return getToken(PainlessParser.ELSE, 0); } public IfContext(StatementContext ctx) { copyFrom(ctx); } @Override public <T> T accept(ParseTreeVisitor<? extends T> visitor) { if ( visitor instanceof PainlessParserVisitor ) return ((PainlessParserVisitor<? extends T>)visitor).visitIf(this); else return visitor.visitChildren(this); } } public static class ReturnContext extends StatementContext { public TerminalNode RETURN() { return getToken(PainlessParser.RETURN, 0); } public ExpressionContext expression() { return getRuleContext(ExpressionContext.class,0); } public DelimiterContext delimiter() { return getRuleContext(DelimiterContext.class,0); } public ReturnContext(StatementContext ctx) { copyFrom(ctx); } @Override public <T> T accept(ParseTreeVisitor<? extends T> visitor) { if ( visitor instanceof PainlessParserVisitor ) return ((PainlessParserVisitor<? extends T>)visitor).visitReturn(this); else return visitor.visitChildren(this); } } public final StatementContext statement() throws RecognitionException { StatementContext _localctx = new StatementContext(_ctx, getState()); enterRule(_localctx, 6, RULE_statement); int _la; try { int _alt; setState(185); switch ( getInterpreter().adaptivePredict(_input,11,_ctx) ) { case 1: _localctx = new IfContext(_localctx); enterOuterAlt(_localctx, 1); { setState(99); match(IF); setState(100); match(LP); setState(101); expression(0); setState(102); match(RP); setState(103); trailer(); setState(107); switch ( getInterpreter().adaptivePredict(_input,4,_ctx) ) { case 1: { setState(104); match(ELSE); setState(105); trailer(); } break; case 2: { setState(106); if (!( _input.LA(1) != ELSE )) throw new FailedPredicateException(this, " _input.LA(1) != ELSE "); } break; } } break; case 2: _localctx = new WhileContext(_localctx); enterOuterAlt(_localctx, 2); { setState(109); match(WHILE); setState(110); match(LP); setState(111); expression(0); setState(112); match(RP); setState(115); switch (_input.LA(1)) { case LBRACK: case LBRACE: case LP: case IF: case WHILE: case DO: case FOR: case CONTINUE: case BREAK: case RETURN: case NEW: case TRY: case THROW: case BOOLNOT: case BWNOT: case ADD: case SUB: case INCR: case DECR: case OCTAL: case HEX: case INTEGER: case DECIMAL: case STRING: case REGEX: case TRUE: case FALSE: case NULL: case TYPE: case ID: { setState(113); trailer(); } break; case SEMICOLON: { setState(114); empty(); } break; default: throw new NoViableAltException(this); } } break; case 3: _localctx = new DoContext(_localctx); enterOuterAlt(_localctx, 3); { setState(117); match(DO); setState(118); block(); setState(119); match(WHILE); setState(120); match(LP); setState(121); expression(0); setState(122); match(RP); setState(123); delimiter(); } break; case 4: _localctx = new ForContext(_localctx); enterOuterAlt(_localctx, 4); { setState(125); match(FOR); setState(126); match(LP); setState(128); _la = _input.LA(1); if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << LBRACE) | (1L << LP) | (1L << NEW) | (1L << BOOLNOT) | (1L << BWNOT) | (1L << ADD) | (1L << SUB) | (1L << INCR) | (1L << DECR))) != 0) || ((((_la - 72)) & ~0x3f) == 0 && ((1L << (_la - 72)) & ((1L << (OCTAL - 72)) | (1L << (HEX - 72)) | (1L << (INTEGER - 72)) | (1L << (DECIMAL - 72)) | (1L << (STRING - 72)) | (1L << (REGEX - 72)) | (1L << (TRUE - 72)) | (1L << (FALSE - 72)) | (1L << (NULL - 72)) | (1L << (TYPE - 72)) | (1L << (ID - 72)))) != 0)) { { setState(127); initializer(); } } setState(130); match(SEMICOLON); setState(132); _la = _input.LA(1); if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << LBRACE) | (1L << LP) | (1L << NEW) | (1L << BOOLNOT) | (1L << BWNOT) | (1L << ADD) | (1L << SUB) | (1L << INCR) | (1L << DECR))) != 0) || ((((_la - 72)) & ~0x3f) == 0 && ((1L << (_la - 72)) & ((1L << (OCTAL - 72)) | (1L << (HEX - 72)) | (1L << (INTEGER - 72)) | (1L << (DECIMAL - 72)) | (1L << (STRING - 72)) | (1L << (REGEX - 72)) | (1L << (TRUE - 72)) | (1L << (FALSE - 72)) | (1L << (NULL - 72)) | (1L << (TYPE - 72)) | (1L << (ID - 72)))) != 0)) { { setState(131); expression(0); } } setState(134); match(SEMICOLON); setState(136); _la = _input.LA(1); if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << LBRACE) | (1L << LP) | (1L << NEW) | (1L << BOOLNOT) | (1L << BWNOT) | (1L << ADD) | (1L << SUB) | (1L << INCR) | (1L << DECR))) != 0) || ((((_la - 72)) & ~0x3f) == 0 && ((1L << (_la - 72)) & ((1L << (OCTAL - 72)) | (1L << (HEX - 72)) | (1L << (INTEGER - 72)) | (1L << (DECIMAL - 72)) | (1L << (STRING - 72)) | (1L << (REGEX - 72)) | (1L << (TRUE - 72)) | (1L << (FALSE - 72)) | (1L << (NULL - 72)) | (1L << (TYPE - 72)) | (1L << (ID - 72)))) != 0)) { { setState(135); afterthought(); } } setState(138); match(RP); setState(141); switch (_input.LA(1)) { case LBRACK: case LBRACE: case LP: case IF: case WHILE: case DO: case FOR: case CONTINUE: case BREAK: case RETURN: case NEW: case TRY: case THROW: case BOOLNOT: case BWNOT: case ADD: case SUB: case INCR: case DECR: case OCTAL: case HEX: case INTEGER: case DECIMAL: case STRING: case REGEX: case TRUE: case FALSE: case NULL: case TYPE: case ID: { setState(139); trailer(); } break; case SEMICOLON: { setState(140); empty(); } break; default: throw new NoViableAltException(this); } } break; case 5: _localctx = new EachContext(_localctx); enterOuterAlt(_localctx, 5); { setState(143); match(FOR); setState(144); match(LP); setState(145); decltype(); setState(146); match(ID); setState(147); match(COLON); setState(148); expression(0); setState(149); match(RP); setState(150); trailer(); } break; case 6: _localctx = new IneachContext(_localctx); enterOuterAlt(_localctx, 6); { setState(152); match(FOR); setState(153); match(LP); setState(154); match(ID); setState(155); match(IN); setState(156); expression(0); setState(157); match(RP); setState(158); trailer(); } break; case 7: _localctx = new DeclContext(_localctx); enterOuterAlt(_localctx, 7); { setState(160); declaration(); setState(161); delimiter(); } break; case 8: _localctx = new ContinueContext(_localctx); enterOuterAlt(_localctx, 8); { setState(163); match(CONTINUE); setState(164); delimiter(); } break; case 9: _localctx = new BreakContext(_localctx); enterOuterAlt(_localctx, 9); { setState(165); match(BREAK); setState(166); delimiter(); } break; case 10: _localctx = new ReturnContext(_localctx); enterOuterAlt(_localctx, 10); { setState(167); match(RETURN); setState(168); expression(0); setState(169); delimiter(); } break; case 11: _localctx = new TryContext(_localctx); enterOuterAlt(_localctx, 11); { setState(171); match(TRY); setState(172); block(); setState(174); _errHandler.sync(this); _alt = 1; do { switch (_alt) { case 1: { { setState(173); trap(); } } break; default: throw new NoViableAltException(this); } setState(176); _errHandler.sync(this); _alt = getInterpreter().adaptivePredict(_input,10,_ctx); } while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ); } break; case 12: _localctx = new ThrowContext(_localctx); enterOuterAlt(_localctx, 12); { setState(178); match(THROW); setState(179); expression(0); setState(180); delimiter(); } break; case 13: _localctx = new ExprContext(_localctx); enterOuterAlt(_localctx, 13); { setState(182); expression(0); setState(183); delimiter(); } break; } } catch (RecognitionException re) { _localctx.exception = re; _errHandler.reportError(this, re); _errHandler.recover(this, re); } finally { exitRule(); } return _localctx; } public static class TrailerContext extends ParserRuleContext { public BlockContext block() { return getRuleContext(BlockContext.class,0); } public StatementContext statement() { return getRuleContext(StatementContext.class,0); } public TrailerContext(ParserRuleContext parent, int invokingState) { super(parent, invokingState); } @Override public int getRuleIndex() { return RULE_trailer; } @Override public <T> T accept(ParseTreeVisitor<? extends T> visitor) { if ( visitor instanceof PainlessParserVisitor ) return ((PainlessParserVisitor<? extends T>)visitor).visitTrailer(this); else return visitor.visitChildren(this); } } public final TrailerContext trailer() throws RecognitionException { TrailerContext _localctx = new TrailerContext(_ctx, getState()); enterRule(_localctx, 8, RULE_trailer); try { setState(189); switch (_input.LA(1)) { case LBRACK: enterOuterAlt(_localctx, 1); { setState(187); block(); } break; case LBRACE: case LP: case IF: case WHILE: case DO: case FOR: case CONTINUE: case BREAK: case RETURN: case NEW: case TRY: case THROW: case BOOLNOT: case BWNOT: case ADD: case SUB: case INCR: case DECR: case OCTAL: case HEX: case INTEGER: case DECIMAL: case STRING: case REGEX: case TRUE: case FALSE: case NULL: case TYPE: case ID: enterOuterAlt(_localctx, 2); { setState(188); statement(); } break; default: throw new NoViableAltException(this); } } catch (RecognitionException re) { _localctx.exception = re; _errHandler.reportError(this, re); _errHandler.recover(this, re); } finally { exitRule(); } return _localctx; } public static class BlockContext extends ParserRuleContext { public TerminalNode LBRACK() { return getToken(PainlessParser.LBRACK, 0); } public TerminalNode RBRACK() { return getToken(PainlessParser.RBRACK, 0); } public List<StatementContext> statement() { return getRuleContexts(StatementContext.class); } public StatementContext statement(int i) { return getRuleContext(StatementContext.class,i); } public BlockContext(ParserRuleContext parent, int invokingState) { super(parent, invokingState); } @Override public int getRuleIndex() { return RULE_block; } @Override public <T> T accept(ParseTreeVisitor<? extends T> visitor) { if ( visitor instanceof PainlessParserVisitor ) return ((PainlessParserVisitor<? extends T>)visitor).visitBlock(this); else return visitor.visitChildren(this); } } public final BlockContext block() throws RecognitionException { BlockContext _localctx = new BlockContext(_ctx, getState()); enterRule(_localctx, 10, RULE_block); int _la; try { enterOuterAlt(_localctx, 1); { setState(191); match(LBRACK); setState(195); _errHandler.sync(this); _la = _input.LA(1); while ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << LBRACE) | (1L << LP) | (1L << IF) | (1L << WHILE) | (1L << DO) | (1L << FOR) | (1L << CONTINUE) | (1L << BREAK) | (1L << RETURN) | (1L << NEW) | (1L << TRY) | (1L << THROW) | (1L << BOOLNOT) | (1L << BWNOT) | (1L << ADD) | (1L << SUB) | (1L << INCR) | (1L << DECR))) != 0) || ((((_la - 72)) & ~0x3f) == 0 && ((1L << (_la - 72)) & ((1L << (OCTAL - 72)) | (1L << (HEX - 72)) | (1L << (INTEGER - 72)) | (1L << (DECIMAL - 72)) | (1L << (STRING - 72)) | (1L << (REGEX - 72)) | (1L << (TRUE - 72)) | (1L << (FALSE - 72)) | (1L << (NULL - 72)) | (1L << (TYPE - 72)) | (1L << (ID - 72)))) != 0)) { { { setState(192); statement(); } } setState(197); _errHandler.sync(this); _la = _input.LA(1); } setState(198); match(RBRACK); } } catch (RecognitionException re) { _localctx.exception = re; _errHandler.reportError(this, re); _errHandler.recover(this, re); } finally { exitRule(); } return _localctx; } public static class EmptyContext extends ParserRuleContext { public TerminalNode SEMICOLON() { return getToken(PainlessParser.SEMICOLON, 0); } public EmptyContext(ParserRuleContext parent, int invokingState) { super(parent, invokingState); } @Override public int getRuleIndex() { return RULE_empty; } @Override public <T> T accept(ParseTreeVisitor<? extends T> visitor) { if ( visitor instanceof PainlessParserVisitor ) return ((PainlessParserVisitor<? extends T>)visitor).visitEmpty(this); else return visitor.visitChildren(this); } } public final EmptyContext empty() throws RecognitionException { EmptyContext _localctx = new EmptyContext(_ctx, getState()); enterRule(_localctx, 12, RULE_empty); try { enterOuterAlt(_localctx, 1); { setState(200); match(SEMICOLON); } } catch (RecognitionException re) { _localctx.exception = re; _errHandler.reportError(this, re); _errHandler.recover(this, re); } finally { exitRule(); } return _localctx; } public static class InitializerContext extends ParserRuleContext { public DeclarationContext declaration() { return getRuleContext(DeclarationContext.class,0); } public ExpressionContext expression() { return getRuleContext(ExpressionContext.class,0); } public InitializerContext(ParserRuleContext parent, int invokingState) { super(parent, invokingState); } @Override public int getRuleIndex() { return RULE_initializer; } @Override public <T> T accept(ParseTreeVisitor<? extends T> visitor) { if ( visitor instanceof PainlessParserVisitor ) return ((PainlessParserVisitor<? extends T>)visitor).visitInitializer(this); else return visitor.visitChildren(this); } } public final InitializerContext initializer() throws RecognitionException { InitializerContext _localctx = new InitializerContext(_ctx, getState()); enterRule(_localctx, 14, RULE_initializer); try { setState(204); switch ( getInterpreter().adaptivePredict(_input,14,_ctx) ) { case 1: enterOuterAlt(_localctx, 1); { setState(202); declaration(); } break; case 2: enterOuterAlt(_localctx, 2); { setState(203); expression(0); } break; } } catch (RecognitionException re) { _localctx.exception = re; _errHandler.reportError(this, re); _errHandler.recover(this, re); } finally { exitRule(); } return _localctx; } public static class AfterthoughtContext extends ParserRuleContext { public ExpressionContext expression() { return getRuleContext(ExpressionContext.class,0); } public AfterthoughtContext(ParserRuleContext parent, int invokingState) { super(parent, invokingState); } @Override public int getRuleIndex() { return RULE_afterthought; } @Override public <T> T accept(ParseTreeVisitor<? extends T> visitor) { if ( visitor instanceof PainlessParserVisitor ) return ((PainlessParserVisitor<? extends T>)visitor).visitAfterthought(this); else return visitor.visitChildren(this); } } public final AfterthoughtContext afterthought() throws RecognitionException { AfterthoughtContext _localctx = new AfterthoughtContext(_ctx, getState()); enterRule(_localctx, 16, RULE_afterthought); try { enterOuterAlt(_localctx, 1); { setState(206); expression(0); } } catch (RecognitionException re) { _localctx.exception = re; _errHandler.reportError(this, re); _errHandler.recover(this, re); } finally { exitRule(); } return _localctx; } public static class DeclarationContext extends ParserRuleContext { public DecltypeContext decltype() { return getRuleContext(DecltypeContext.class,0); } public List<DeclvarContext> declvar() { return getRuleContexts(DeclvarContext.class); } public DeclvarContext declvar(int i) { return getRuleContext(DeclvarContext.class,i); } public List<TerminalNode> COMMA() { return getTokens(PainlessParser.COMMA); } public TerminalNode COMMA(int i) { return getToken(PainlessParser.COMMA, i); } public DeclarationContext(ParserRuleContext parent, int invokingState) { super(parent, invokingState); } @Override public int getRuleIndex() { return RULE_declaration; } @Override public <T> T accept(ParseTreeVisitor<? extends T> visitor) { if ( visitor instanceof PainlessParserVisitor ) return ((PainlessParserVisitor<? extends T>)visitor).visitDeclaration(this); else return visitor.visitChildren(this); } } public final DeclarationContext declaration() throws RecognitionException { DeclarationContext _localctx = new DeclarationContext(_ctx, getState()); enterRule(_localctx, 18, RULE_declaration); int _la; try { enterOuterAlt(_localctx, 1); { setState(208); decltype(); setState(209); declvar(); setState(214); _errHandler.sync(this); _la = _input.LA(1); while (_la==COMMA) { { { setState(210); match(COMMA); setState(211); declvar(); } } setState(216); _errHandler.sync(this); _la = _input.LA(1); } } } catch (RecognitionException re) { _localctx.exception = re; _errHandler.reportError(this, re); _errHandler.recover(this, re); } finally { exitRule(); } return _localctx; } public static class DecltypeContext extends ParserRuleContext { public TerminalNode TYPE() { return getToken(PainlessParser.TYPE, 0); } public List<TerminalNode> LBRACE() { return getTokens(PainlessParser.LBRACE); } public TerminalNode LBRACE(int i) { return getToken(PainlessParser.LBRACE, i); } public List<TerminalNode> RBRACE() { return getTokens(PainlessParser.RBRACE); } public TerminalNode RBRACE(int i) { return getToken(PainlessParser.RBRACE, i); } public DecltypeContext(ParserRuleContext parent, int invokingState) { super(parent, invokingState); } @Override public int getRuleIndex() { return RULE_decltype; } @Override public <T> T accept(ParseTreeVisitor<? extends T> visitor) { if ( visitor instanceof PainlessParserVisitor ) return ((PainlessParserVisitor<? extends T>)visitor).visitDecltype(this); else return visitor.visitChildren(this); } } public final DecltypeContext decltype() throws RecognitionException { DecltypeContext _localctx = new DecltypeContext(_ctx, getState()); enterRule(_localctx, 20, RULE_decltype); try { int _alt; enterOuterAlt(_localctx, 1); { setState(217); match(TYPE); setState(222); _errHandler.sync(this); _alt = getInterpreter().adaptivePredict(_input,16,_ctx); while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { if ( _alt==1 ) { { { setState(218); match(LBRACE); setState(219); match(RBRACE); } } } setState(224); _errHandler.sync(this); _alt = getInterpreter().adaptivePredict(_input,16,_ctx); } } } catch (RecognitionException re) { _localctx.exception = re; _errHandler.reportError(this, re); _errHandler.recover(this, re); } finally { exitRule(); } return _localctx; } public static class DeclvarContext extends ParserRuleContext { public TerminalNode ID() { return getToken(PainlessParser.ID, 0); } public TerminalNode ASSIGN() { return getToken(PainlessParser.ASSIGN, 0); } public ExpressionContext expression() { return getRuleContext(ExpressionContext.class,0); } public DeclvarContext(ParserRuleContext parent, int invokingState) { super(parent, invokingState); } @Override public int getRuleIndex() { return RULE_declvar; } @Override public <T> T accept(ParseTreeVisitor<? extends T> visitor) { if ( visitor instanceof PainlessParserVisitor ) return ((PainlessParserVisitor<? extends T>)visitor).visitDeclvar(this); else return visitor.visitChildren(this); } } public final DeclvarContext declvar() throws RecognitionException { DeclvarContext _localctx = new DeclvarContext(_ctx, getState()); enterRule(_localctx, 22, RULE_declvar); int _la; try { enterOuterAlt(_localctx, 1); { setState(225); match(ID); setState(228); _la = _input.LA(1); if (_la==ASSIGN) { { setState(226); match(ASSIGN); setState(227); expression(0); } } } } catch (RecognitionException re) { _localctx.exception = re; _errHandler.reportError(this, re); _errHandler.recover(this, re); } finally { exitRule(); } return _localctx; } public static class TrapContext extends ParserRuleContext { public TerminalNode CATCH() { return getToken(PainlessParser.CATCH, 0); } public TerminalNode LP() { return getToken(PainlessParser.LP, 0); } public TerminalNode TYPE() { return getToken(PainlessParser.TYPE, 0); } public TerminalNode ID() { return getToken(PainlessParser.ID, 0); } public TerminalNode RP() { return getToken(PainlessParser.RP, 0); } public BlockContext block() { return getRuleContext(BlockContext.class,0); } public TrapContext(ParserRuleContext parent, int invokingState) { super(parent, invokingState); } @Override public int getRuleIndex() { return RULE_trap; } @Override public <T> T accept(ParseTreeVisitor<? extends T> visitor) { if ( visitor instanceof PainlessParserVisitor ) return ((PainlessParserVisitor<? extends T>)visitor).visitTrap(this); else return visitor.visitChildren(this); } } public final TrapContext trap() throws RecognitionException { TrapContext _localctx = new TrapContext(_ctx, getState()); enterRule(_localctx, 24, RULE_trap); try { enterOuterAlt(_localctx, 1); { setState(230); match(CATCH); setState(231); match(LP); setState(232); match(TYPE); setState(233); match(ID); setState(234); match(RP); setState(235); block(); } } catch (RecognitionException re) { _localctx.exception = re; _errHandler.reportError(this, re); _errHandler.recover(this, re); } finally { exitRule(); } return _localctx; } public static class DelimiterContext extends ParserRuleContext { public TerminalNode SEMICOLON() { return getToken(PainlessParser.SEMICOLON, 0); } public TerminalNode EOF() { return getToken(PainlessParser.EOF, 0); } public DelimiterContext(ParserRuleContext parent, int invokingState) { super(parent, invokingState); } @Override public int getRuleIndex() { return RULE_delimiter; } @Override public <T> T accept(ParseTreeVisitor<? extends T> visitor) { if ( visitor instanceof PainlessParserVisitor ) return ((PainlessParserVisitor<? extends T>)visitor).visitDelimiter(this); else return visitor.visitChildren(this); } } public final DelimiterContext delimiter() throws RecognitionException { DelimiterContext _localctx = new DelimiterContext(_ctx, getState()); enterRule(_localctx, 26, RULE_delimiter); int _la; try { enterOuterAlt(_localctx, 1); { setState(237); _la = _input.LA(1); if ( !(_la==EOF || _la==SEMICOLON) ) { _errHandler.recoverInline(this); } else { consume(); } } } catch (RecognitionException re) { _localctx.exception = re; _errHandler.reportError(this, re); _errHandler.recover(this, re); } finally { exitRule(); } return _localctx; } public static class ExpressionContext extends ParserRuleContext { public ExpressionContext(ParserRuleContext parent, int invokingState) { super(parent, invokingState); } @Override public int getRuleIndex() { return RULE_expression; } public ExpressionContext() { } public void copyFrom(ExpressionContext ctx) { super.copyFrom(ctx); } } public static class SingleContext extends ExpressionContext { public UnaryContext unary() { return getRuleContext(UnaryContext.class,0); } public SingleContext(ExpressionContext ctx) { copyFrom(ctx); } @Override public <T> T accept(ParseTreeVisitor<? extends T> visitor) { if ( visitor instanceof PainlessParserVisitor ) return ((PainlessParserVisitor<? extends T>)visitor).visitSingle(this); else return visitor.visitChildren(this); } } public static class CompContext extends ExpressionContext { public List<ExpressionContext> expression() { return getRuleContexts(ExpressionContext.class); } public ExpressionContext expression(int i) { return getRuleContext(ExpressionContext.class,i); } public TerminalNode LT() { return getToken(PainlessParser.LT, 0); } public TerminalNode LTE() { return getToken(PainlessParser.LTE, 0); } public TerminalNode GT() { return getToken(PainlessParser.GT, 0); } public TerminalNode GTE() { return getToken(PainlessParser.GTE, 0); } public TerminalNode EQ() { return getToken(PainlessParser.EQ, 0); } public TerminalNode EQR() { return getToken(PainlessParser.EQR, 0); } public TerminalNode NE() { return getToken(PainlessParser.NE, 0); } public TerminalNode NER() { return getToken(PainlessParser.NER, 0); } public CompContext(ExpressionContext ctx) { copyFrom(ctx); } @Override public <T> T accept(ParseTreeVisitor<? extends T> visitor) { if ( visitor instanceof PainlessParserVisitor ) return ((PainlessParserVisitor<? extends T>)visitor).visitComp(this); else return visitor.visitChildren(this); } } public static class BoolContext extends ExpressionContext { public List<ExpressionContext> expression() { return getRuleContexts(ExpressionContext.class); } public ExpressionContext expression(int i) { return getRuleContext(ExpressionContext.class,i); } public TerminalNode BOOLAND() { return getToken(PainlessParser.BOOLAND, 0); } public TerminalNode BOOLOR() { return getToken(PainlessParser.BOOLOR, 0); } public BoolContext(ExpressionContext ctx) { copyFrom(ctx); } @Override public <T> T accept(ParseTreeVisitor<? extends T> visitor) { if ( visitor instanceof PainlessParserVisitor ) return ((PainlessParserVisitor<? extends T>)visitor).visitBool(this); else return visitor.visitChildren(this); } } public static class ConditionalContext extends ExpressionContext { public List<ExpressionContext> expression() { return getRuleContexts(ExpressionContext.class); } public ExpressionContext expression(int i) { return getRuleContext(ExpressionContext.class,i); } public TerminalNode COND() { return getToken(PainlessParser.COND, 0); } public TerminalNode COLON() { return getToken(PainlessParser.COLON, 0); } public ConditionalContext(ExpressionContext ctx) { copyFrom(ctx); } @Override public <T> T accept(ParseTreeVisitor<? extends T> visitor) { if ( visitor instanceof PainlessParserVisitor ) return ((PainlessParserVisitor<? extends T>)visitor).visitConditional(this); else return visitor.visitChildren(this); } } public static class AssignmentContext extends ExpressionContext { public List<ExpressionContext> expression() { return getRuleContexts(ExpressionContext.class); } public ExpressionContext expression(int i) { return getRuleContext(ExpressionContext.class,i); } public TerminalNode ASSIGN() { return getToken(PainlessParser.ASSIGN, 0); } public TerminalNode AADD() { return getToken(PainlessParser.AADD, 0); } public TerminalNode ASUB() { return getToken(PainlessParser.ASUB, 0); } public TerminalNode AMUL() { return getToken(PainlessParser.AMUL, 0); } public TerminalNode ADIV() { return getToken(PainlessParser.ADIV, 0); } public TerminalNode AREM() { return getToken(PainlessParser.AREM, 0); } public TerminalNode AAND() { return getToken(PainlessParser.AAND, 0); } public TerminalNode AXOR() { return getToken(PainlessParser.AXOR, 0); } public TerminalNode AOR() { return getToken(PainlessParser.AOR, 0); } public TerminalNode ALSH() { return getToken(PainlessParser.ALSH, 0); } public TerminalNode ARSH() { return getToken(PainlessParser.ARSH, 0); } public TerminalNode AUSH() { return getToken(PainlessParser.AUSH, 0); } public AssignmentContext(ExpressionContext ctx) { copyFrom(ctx); } @Override public <T> T accept(ParseTreeVisitor<? extends T> visitor) { if ( visitor instanceof PainlessParserVisitor ) return ((PainlessParserVisitor<? extends T>)visitor).visitAssignment(this); else return visitor.visitChildren(this); } } public static class BinaryContext extends ExpressionContext { public List<ExpressionContext> expression() { return getRuleContexts(ExpressionContext.class); } public ExpressionContext expression(int i) { return getRuleContext(ExpressionContext.class,i); } public TerminalNode MUL() { return getToken(PainlessParser.MUL, 0); } public TerminalNode DIV() { return getToken(PainlessParser.DIV, 0); } public TerminalNode REM() { return getToken(PainlessParser.REM, 0); } public TerminalNode ADD() { return getToken(PainlessParser.ADD, 0); } public TerminalNode SUB() { return getToken(PainlessParser.SUB, 0); } public TerminalNode FIND() { return getToken(PainlessParser.FIND, 0); } public TerminalNode MATCH() { return getToken(PainlessParser.MATCH, 0); } public TerminalNode LSH() { return getToken(PainlessParser.LSH, 0); } public TerminalNode RSH() { return getToken(PainlessParser.RSH, 0); } public TerminalNode USH() { return getToken(PainlessParser.USH, 0); } public TerminalNode BWAND() { return getToken(PainlessParser.BWAND, 0); } public TerminalNode XOR() { return getToken(PainlessParser.XOR, 0); } public TerminalNode BWOR() { return getToken(PainlessParser.BWOR, 0); } public BinaryContext(ExpressionContext ctx) { copyFrom(ctx); } @Override public <T> T accept(ParseTreeVisitor<? extends T> visitor) { if ( visitor instanceof PainlessParserVisitor ) return ((PainlessParserVisitor<? extends T>)visitor).visitBinary(this); else return visitor.visitChildren(this); } } public static class ElvisContext extends ExpressionContext { public List<ExpressionContext> expression() { return getRuleContexts(ExpressionContext.class); } public ExpressionContext expression(int i) { return getRuleContext(ExpressionContext.class,i); } public TerminalNode ELVIS() { return getToken(PainlessParser.ELVIS, 0); } public ElvisContext(ExpressionContext ctx) { copyFrom(ctx); } @Override public <T> T accept(ParseTreeVisitor<? extends T> visitor) { if ( visitor instanceof PainlessParserVisitor ) return ((PainlessParserVisitor<? extends T>)visitor).visitElvis(this); else return visitor.visitChildren(this); } } public static class InstanceofContext extends ExpressionContext { public ExpressionContext expression() { return getRuleContext(ExpressionContext.class,0); } public TerminalNode INSTANCEOF() { return getToken(PainlessParser.INSTANCEOF, 0); } public DecltypeContext decltype() { return getRuleContext(DecltypeContext.class,0); } public InstanceofContext(ExpressionContext ctx) { copyFrom(ctx); } @Override public <T> T accept(ParseTreeVisitor<? extends T> visitor) { if ( visitor instanceof PainlessParserVisitor ) return ((PainlessParserVisitor<? extends T>)visitor).visitInstanceof(this); else return visitor.visitChildren(this); } } public final ExpressionContext expression() throws RecognitionException { return expression(0); } private ExpressionContext expression(int _p) throws RecognitionException { ParserRuleContext _parentctx = _ctx; int _parentState = getState(); ExpressionContext _localctx = new ExpressionContext(_ctx, _parentState); ExpressionContext _prevctx = _localctx; int _startState = 28; enterRecursionRule(_localctx, 28, RULE_expression, _p); int _la; try { int _alt; enterOuterAlt(_localctx, 1); { { _localctx = new SingleContext(_localctx); _ctx = _localctx; _prevctx = _localctx; setState(240); unary(); } _ctx.stop = _input.LT(-1); setState(292); _errHandler.sync(this); _alt = getInterpreter().adaptivePredict(_input,19,_ctx); while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { if ( _alt==1 ) { if ( _parseListeners!=null ) triggerExitRuleEvent(); _prevctx = _localctx; { setState(290); switch ( getInterpreter().adaptivePredict(_input,18,_ctx) ) { case 1: { _localctx = new BinaryContext(new ExpressionContext(_parentctx, _parentState)); pushNewRecursionContext(_localctx, _startState, RULE_expression); setState(242); if (!(precpred(_ctx, 15))) throw new FailedPredicateException(this, "precpred(_ctx, 15)"); setState(243); _la = _input.LA(1); if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << MUL) | (1L << DIV) | (1L << REM))) != 0)) ) { _errHandler.recoverInline(this); } else { consume(); } setState(244); expression(16); } break; case 2: { _localctx = new BinaryContext(new ExpressionContext(_parentctx, _parentState)); pushNewRecursionContext(_localctx, _startState, RULE_expression); setState(245); if (!(precpred(_ctx, 14))) throw new FailedPredicateException(this, "precpred(_ctx, 14)"); setState(246); _la = _input.LA(1); if ( !(_la==ADD || _la==SUB) ) { _errHandler.recoverInline(this); } else { consume(); } setState(247); expression(15); } break; case 3: { _localctx = new BinaryContext(new ExpressionContext(_parentctx, _parentState)); pushNewRecursionContext(_localctx, _startState, RULE_expression); setState(248); if (!(precpred(_ctx, 13))) throw new FailedPredicateException(this, "precpred(_ctx, 13)"); setState(249); _la = _input.LA(1); if ( !(_la==FIND || _la==MATCH) ) { _errHandler.recoverInline(this); } else { consume(); } setState(250); expression(14); } break; case 4: { _localctx = new BinaryContext(new ExpressionContext(_parentctx, _parentState)); pushNewRecursionContext(_localctx, _startState, RULE_expression); setState(251); if (!(precpred(_ctx, 12))) throw new FailedPredicateException(this, "precpred(_ctx, 12)"); setState(252); _la = _input.LA(1); if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << LSH) | (1L << RSH) | (1L << USH))) != 0)) ) { _errHandler.recoverInline(this); } else { consume(); } setState(253); expression(13); } break; case 5: { _localctx = new CompContext(new ExpressionContext(_parentctx, _parentState)); pushNewRecursionContext(_localctx, _startState, RULE_expression); setState(254); if (!(precpred(_ctx, 11))) throw new FailedPredicateException(this, "precpred(_ctx, 11)"); setState(255); _la = _input.LA(1); if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << LT) | (1L << LTE) | (1L << GT) | (1L << GTE))) != 0)) ) { _errHandler.recoverInline(this); } else { consume(); } setState(256); expression(12); } break; case 6: { _localctx = new CompContext(new ExpressionContext(_parentctx, _parentState)); pushNewRecursionContext(_localctx, _startState, RULE_expression); setState(257); if (!(precpred(_ctx, 9))) throw new FailedPredicateException(this, "precpred(_ctx, 9)"); setState(258); _la = _input.LA(1); if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << EQ) | (1L << EQR) | (1L << NE) | (1L << NER))) != 0)) ) { _errHandler.recoverInline(this); } else { consume(); } setState(259); expression(10); } break; case 7: { _localctx = new BinaryContext(new ExpressionContext(_parentctx, _parentState)); pushNewRecursionContext(_localctx, _startState, RULE_expression); setState(260); if (!(precpred(_ctx, 8))) throw new FailedPredicateException(this, "precpred(_ctx, 8)"); setState(261); match(BWAND); setState(262); expression(9); } break; case 8: { _localctx = new BinaryContext(new ExpressionContext(_parentctx, _parentState)); pushNewRecursionContext(_localctx, _startState, RULE_expression); setState(263); if (!(precpred(_ctx, 7))) throw new FailedPredicateException(this, "precpred(_ctx, 7)"); setState(264); match(XOR); setState(265); expression(8); } break; case 9: { _localctx = new BinaryContext(new ExpressionContext(_parentctx, _parentState)); pushNewRecursionContext(_localctx, _startState, RULE_expression); setState(266); if (!(precpred(_ctx, 6))) throw new FailedPredicateException(this, "precpred(_ctx, 6)"); setState(267); match(BWOR); setState(268); expression(7); } break; case 10: { _localctx = new BoolContext(new ExpressionContext(_parentctx, _parentState)); pushNewRecursionContext(_localctx, _startState, RULE_expression); setState(269); if (!(precpred(_ctx, 5))) throw new FailedPredicateException(this, "precpred(_ctx, 5)"); setState(270); match(BOOLAND); setState(271); expression(6); } break; case 11: { _localctx = new BoolContext(new ExpressionContext(_parentctx, _parentState)); pushNewRecursionContext(_localctx, _startState, RULE_expression); setState(272); if (!(precpred(_ctx, 4))) throw new FailedPredicateException(this, "precpred(_ctx, 4)"); setState(273); match(BOOLOR); setState(274); expression(5); } break; case 12: { _localctx = new ConditionalContext(new ExpressionContext(_parentctx, _parentState)); pushNewRecursionContext(_localctx, _startState, RULE_expression); setState(275); if (!(precpred(_ctx, 3))) throw new FailedPredicateException(this, "precpred(_ctx, 3)"); setState(276); match(COND); setState(277); expression(0); setState(278); match(COLON); setState(279); expression(3); } break; case 13: { _localctx = new ElvisContext(new ExpressionContext(_parentctx, _parentState)); pushNewRecursionContext(_localctx, _startState, RULE_expression); setState(281); if (!(precpred(_ctx, 2))) throw new FailedPredicateException(this, "precpred(_ctx, 2)"); setState(282); match(ELVIS); setState(283); expression(2); } break; case 14: { _localctx = new AssignmentContext(new ExpressionContext(_parentctx, _parentState)); pushNewRecursionContext(_localctx, _startState, RULE_expression); setState(284); if (!(precpred(_ctx, 1))) throw new FailedPredicateException(this, "precpred(_ctx, 1)"); setState(285); _la = _input.LA(1); if ( !(((((_la - 60)) & ~0x3f) == 0 && ((1L << (_la - 60)) & ((1L << (ASSIGN - 60)) | (1L << (AADD - 60)) | (1L << (ASUB - 60)) | (1L << (AMUL - 60)) | (1L << (ADIV - 60)) | (1L << (AREM - 60)) | (1L << (AAND - 60)) | (1L << (AXOR - 60)) | (1L << (AOR - 60)) | (1L << (ALSH - 60)) | (1L << (ARSH - 60)) | (1L << (AUSH - 60)))) != 0)) ) { _errHandler.recoverInline(this); } else { consume(); } setState(286); expression(1); } break; case 15: { _localctx = new InstanceofContext(new ExpressionContext(_parentctx, _parentState)); pushNewRecursionContext(_localctx, _startState, RULE_expression); setState(287); if (!(precpred(_ctx, 10))) throw new FailedPredicateException(this, "precpred(_ctx, 10)"); setState(288); match(INSTANCEOF); setState(289); decltype(); } break; } } } setState(294); _errHandler.sync(this); _alt = getInterpreter().adaptivePredict(_input,19,_ctx); } } } catch (RecognitionException re) { _localctx.exception = re; _errHandler.reportError(this, re); _errHandler.recover(this, re); } finally { unrollRecursionContexts(_parentctx); } return _localctx; } public static class UnaryContext extends ParserRuleContext { public UnaryContext(ParserRuleContext parent, int invokingState) { super(parent, invokingState); } @Override public int getRuleIndex() { return RULE_unary; } public UnaryContext() { } public void copyFrom(UnaryContext ctx) { super.copyFrom(ctx); } } public static class CastContext extends UnaryContext { public TerminalNode LP() { return getToken(PainlessParser.LP, 0); } public DecltypeContext decltype() { return getRuleContext(DecltypeContext.class,0); } public TerminalNode RP() { return getToken(PainlessParser.RP, 0); } public UnaryContext unary() { return getRuleContext(UnaryContext.class,0); } public CastContext(UnaryContext ctx) { copyFrom(ctx); } @Override public <T> T accept(ParseTreeVisitor<? extends T> visitor) { if ( visitor instanceof PainlessParserVisitor ) return ((PainlessParserVisitor<? extends T>)visitor).visitCast(this); else return visitor.visitChildren(this); } } public static class PreContext extends UnaryContext { public ChainContext chain() { return getRuleContext(ChainContext.class,0); } public TerminalNode INCR() { return getToken(PainlessParser.INCR, 0); } public TerminalNode DECR() { return getToken(PainlessParser.DECR, 0); } public PreContext(UnaryContext ctx) { copyFrom(ctx); } @Override public <T> T accept(ParseTreeVisitor<? extends T> visitor) { if ( visitor instanceof PainlessParserVisitor ) return ((PainlessParserVisitor<? extends T>)visitor).visitPre(this); else return visitor.visitChildren(this); } } public static class ReadContext extends UnaryContext { public ChainContext chain() { return getRuleContext(ChainContext.class,0); } public ReadContext(UnaryContext ctx) { copyFrom(ctx); } @Override public <T> T accept(ParseTreeVisitor<? extends T> visitor) { if ( visitor instanceof PainlessParserVisitor ) return ((PainlessParserVisitor<? extends T>)visitor).visitRead(this); else return visitor.visitChildren(this); } } public static class PostContext extends UnaryContext { public ChainContext chain() { return getRuleContext(ChainContext.class,0); } public TerminalNode INCR() { return getToken(PainlessParser.INCR, 0); } public TerminalNode DECR() { return getToken(PainlessParser.DECR, 0); } public PostContext(UnaryContext ctx) { copyFrom(ctx); } @Override public <T> T accept(ParseTreeVisitor<? extends T> visitor) { if ( visitor instanceof PainlessParserVisitor ) return ((PainlessParserVisitor<? extends T>)visitor).visitPost(this); else return visitor.visitChildren(this); } } public static class OperatorContext extends UnaryContext { public UnaryContext unary() { return getRuleContext(UnaryContext.class,0); } public TerminalNode BOOLNOT() { return getToken(PainlessParser.BOOLNOT, 0); } public TerminalNode BWNOT() { return getToken(PainlessParser.BWNOT, 0); } public TerminalNode ADD() { return getToken(PainlessParser.ADD, 0); } public TerminalNode SUB() { return getToken(PainlessParser.SUB, 0); } public OperatorContext(UnaryContext ctx) { copyFrom(ctx); } @Override public <T> T accept(ParseTreeVisitor<? extends T> visitor) { if ( visitor instanceof PainlessParserVisitor ) return ((PainlessParserVisitor<? extends T>)visitor).visitOperator(this); else return visitor.visitChildren(this); } } public final UnaryContext unary() throws RecognitionException { UnaryContext _localctx = new UnaryContext(_ctx, getState()); enterRule(_localctx, 30, RULE_unary); int _la; try { setState(308); switch ( getInterpreter().adaptivePredict(_input,20,_ctx) ) { case 1: _localctx = new PreContext(_localctx); enterOuterAlt(_localctx, 1); { setState(295); _la = _input.LA(1); if ( !(_la==INCR || _la==DECR) ) { _errHandler.recoverInline(this); } else { consume(); } setState(296); chain(); } break; case 2: _localctx = new PostContext(_localctx); enterOuterAlt(_localctx, 2); { setState(297); chain(); setState(298); _la = _input.LA(1); if ( !(_la==INCR || _la==DECR) ) { _errHandler.recoverInline(this); } else { consume(); } } break; case 3: _localctx = new ReadContext(_localctx); enterOuterAlt(_localctx, 3); { setState(300); chain(); } break; case 4: _localctx = new OperatorContext(_localctx); enterOuterAlt(_localctx, 4); { setState(301); _la = _input.LA(1); if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << BOOLNOT) | (1L << BWNOT) | (1L << ADD) | (1L << SUB))) != 0)) ) { _errHandler.recoverInline(this); } else { consume(); } setState(302); unary(); } break; case 5: _localctx = new CastContext(_localctx); enterOuterAlt(_localctx, 5); { setState(303); match(LP); setState(304); decltype(); setState(305); match(RP); setState(306); unary(); } break; } } catch (RecognitionException re) { _localctx.exception = re; _errHandler.reportError(this, re); _errHandler.recover(this, re); } finally { exitRule(); } return _localctx; } public static class ChainContext extends ParserRuleContext { public ChainContext(ParserRuleContext parent, int invokingState) { super(parent, invokingState); } @Override public int getRuleIndex() { return RULE_chain; } public ChainContext() { } public void copyFrom(ChainContext ctx) { super.copyFrom(ctx); } } public static class StaticContext extends ChainContext { public DecltypeContext decltype() { return getRuleContext(DecltypeContext.class,0); } public PostdotContext postdot() { return getRuleContext(PostdotContext.class,0); } public List<PostfixContext> postfix() { return getRuleContexts(PostfixContext.class); } public PostfixContext postfix(int i) { return getRuleContext(PostfixContext.class,i); } public StaticContext(ChainContext ctx) { copyFrom(ctx); } @Override public <T> T accept(ParseTreeVisitor<? extends T> visitor) { if ( visitor instanceof PainlessParserVisitor ) return ((PainlessParserVisitor<? extends T>)visitor).visitStatic(this); else return visitor.visitChildren(this); } } public static class DynamicContext extends ChainContext { public PrimaryContext primary() { return getRuleContext(PrimaryContext.class,0); } public List<PostfixContext> postfix() { return getRuleContexts(PostfixContext.class); } public PostfixContext postfix(int i) { return getRuleContext(PostfixContext.class,i); } public DynamicContext(ChainContext ctx) { copyFrom(ctx); } @Override public <T> T accept(ParseTreeVisitor<? extends T> visitor) { if ( visitor instanceof PainlessParserVisitor ) return ((PainlessParserVisitor<? extends T>)visitor).visitDynamic(this); else return visitor.visitChildren(this); } } public static class NewarrayContext extends ChainContext { public ArrayinitializerContext arrayinitializer() { return getRuleContext(ArrayinitializerContext.class,0); } public NewarrayContext(ChainContext ctx) { copyFrom(ctx); } @Override public <T> T accept(ParseTreeVisitor<? extends T> visitor) { if ( visitor instanceof PainlessParserVisitor ) return ((PainlessParserVisitor<? extends T>)visitor).visitNewarray(this); else return visitor.visitChildren(this); } } public final ChainContext chain() throws RecognitionException { ChainContext _localctx = new ChainContext(_ctx, getState()); enterRule(_localctx, 32, RULE_chain); try { int _alt; setState(326); switch ( getInterpreter().adaptivePredict(_input,23,_ctx) ) { case 1: _localctx = new DynamicContext(_localctx); enterOuterAlt(_localctx, 1); { setState(310); primary(); setState(314); _errHandler.sync(this); _alt = getInterpreter().adaptivePredict(_input,21,_ctx); while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { if ( _alt==1 ) { { { setState(311); postfix(); } } } setState(316); _errHandler.sync(this); _alt = getInterpreter().adaptivePredict(_input,21,_ctx); } } break; case 2: _localctx = new StaticContext(_localctx); enterOuterAlt(_localctx, 2); { setState(317); decltype(); setState(318); postdot(); setState(322); _errHandler.sync(this); _alt = getInterpreter().adaptivePredict(_input,22,_ctx); while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { if ( _alt==1 ) { { { setState(319); postfix(); } } } setState(324); _errHandler.sync(this); _alt = getInterpreter().adaptivePredict(_input,22,_ctx); } } break; case 3: _localctx = new NewarrayContext(_localctx); enterOuterAlt(_localctx, 3); { setState(325); arrayinitializer(); } break; } } catch (RecognitionException re) { _localctx.exception = re; _errHandler.reportError(this, re); _errHandler.recover(this, re); } finally { exitRule(); } return _localctx; } public static class PrimaryContext extends ParserRuleContext { public PrimaryContext(ParserRuleContext parent, int invokingState) { super(parent, invokingState); } @Override public int getRuleIndex() { return RULE_primary; } public PrimaryContext() { } public void copyFrom(PrimaryContext ctx) { super.copyFrom(ctx); } } public static class ListinitContext extends PrimaryContext { public ListinitializerContext listinitializer() { return getRuleContext(ListinitializerContext.class,0); } public ListinitContext(PrimaryContext ctx) { copyFrom(ctx); } @Override public <T> T accept(ParseTreeVisitor<? extends T> visitor) { if ( visitor instanceof PainlessParserVisitor ) return ((PainlessParserVisitor<? extends T>)visitor).visitListinit(this); else return visitor.visitChildren(this); } } public static class RegexContext extends PrimaryContext { public TerminalNode REGEX() { return getToken(PainlessParser.REGEX, 0); } public RegexContext(PrimaryContext ctx) { copyFrom(ctx); } @Override public <T> T accept(ParseTreeVisitor<? extends T> visitor) { if ( visitor instanceof PainlessParserVisitor ) return ((PainlessParserVisitor<? extends T>)visitor).visitRegex(this); else return visitor.visitChildren(this); } } public static class NullContext extends PrimaryContext { public TerminalNode NULL() { return getToken(PainlessParser.NULL, 0); } public NullContext(PrimaryContext ctx) { copyFrom(ctx); } @Override public <T> T accept(ParseTreeVisitor<? extends T> visitor) { if ( visitor instanceof PainlessParserVisitor ) return ((PainlessParserVisitor<? extends T>)visitor).visitNull(this); else return visitor.visitChildren(this); } } public static class StringContext extends PrimaryContext { public TerminalNode STRING() { return getToken(PainlessParser.STRING, 0); } public StringContext(PrimaryContext ctx) { copyFrom(ctx); } @Override public <T> T accept(ParseTreeVisitor<? extends T> visitor) { if ( visitor instanceof PainlessParserVisitor ) return ((PainlessParserVisitor<? extends T>)visitor).visitString(this); else return visitor.visitChildren(this); } } public static class MapinitContext extends PrimaryContext { public MapinitializerContext mapinitializer() { return getRuleContext(MapinitializerContext.class,0); } public MapinitContext(PrimaryContext ctx) { copyFrom(ctx); } @Override public <T> T accept(ParseTreeVisitor<? extends T> visitor) { if ( visitor instanceof PainlessParserVisitor ) return ((PainlessParserVisitor<? extends T>)visitor).visitMapinit(this); else return visitor.visitChildren(this); } } public static class CalllocalContext extends PrimaryContext { public TerminalNode ID() { return getToken(PainlessParser.ID, 0); } public ArgumentsContext arguments() { return getRuleContext(ArgumentsContext.class,0); } public CalllocalContext(PrimaryContext ctx) { copyFrom(ctx); } @Override public <T> T accept(ParseTreeVisitor<? extends T> visitor) { if ( visitor instanceof PainlessParserVisitor ) return ((PainlessParserVisitor<? extends T>)visitor).visitCalllocal(this); else return visitor.visitChildren(this); } } public static class TrueContext extends PrimaryContext { public TerminalNode TRUE() { return getToken(PainlessParser.TRUE, 0); } public TrueContext(PrimaryContext ctx) { copyFrom(ctx); } @Override public <T> T accept(ParseTreeVisitor<? extends T> visitor) { if ( visitor instanceof PainlessParserVisitor ) return ((PainlessParserVisitor<? extends T>)visitor).visitTrue(this); else return visitor.visitChildren(this); } } public static class FalseContext extends PrimaryContext { public TerminalNode FALSE() { return getToken(PainlessParser.FALSE, 0); } public FalseContext(PrimaryContext ctx) { copyFrom(ctx); } @Override public <T> T accept(ParseTreeVisitor<? extends T> visitor) { if ( visitor instanceof PainlessParserVisitor ) return ((PainlessParserVisitor<? extends T>)visitor).visitFalse(this); else return visitor.visitChildren(this); } } public static class VariableContext extends PrimaryContext { public TerminalNode ID() { return getToken(PainlessParser.ID, 0); } public VariableContext(PrimaryContext ctx) { copyFrom(ctx); } @Override public <T> T accept(ParseTreeVisitor<? extends T> visitor) { if ( visitor instanceof PainlessParserVisitor ) return ((PainlessParserVisitor<? extends T>)visitor).visitVariable(this); else return visitor.visitChildren(this); } } public static class NumericContext extends PrimaryContext { public TerminalNode OCTAL() { return getToken(PainlessParser.OCTAL, 0); } public TerminalNode HEX() { return getToken(PainlessParser.HEX, 0); } public TerminalNode INTEGER() { return getToken(PainlessParser.INTEGER, 0); } public TerminalNode DECIMAL() { return getToken(PainlessParser.DECIMAL, 0); } public NumericContext(PrimaryContext ctx) { copyFrom(ctx); } @Override public <T> T accept(ParseTreeVisitor<? extends T> visitor) { if ( visitor instanceof PainlessParserVisitor ) return ((PainlessParserVisitor<? extends T>)visitor).visitNumeric(this); else return visitor.visitChildren(this); } } public static class NewobjectContext extends PrimaryContext { public TerminalNode NEW() { return getToken(PainlessParser.NEW, 0); } public TerminalNode TYPE() { return getToken(PainlessParser.TYPE, 0); } public ArgumentsContext arguments() { return getRuleContext(ArgumentsContext.class,0); } public NewobjectContext(PrimaryContext ctx) { copyFrom(ctx); } @Override public <T> T accept(ParseTreeVisitor<? extends T> visitor) { if ( visitor instanceof PainlessParserVisitor ) return ((PainlessParserVisitor<? extends T>)visitor).visitNewobject(this); else return visitor.visitChildren(this); } } public static class PrecedenceContext extends PrimaryContext { public TerminalNode LP() { return getToken(PainlessParser.LP, 0); } public ExpressionContext expression() { return getRuleContext(ExpressionContext.class,0); } public TerminalNode RP() { return getToken(PainlessParser.RP, 0); } public PrecedenceContext(PrimaryContext ctx) { copyFrom(ctx); } @Override public <T> T accept(ParseTreeVisitor<? extends T> visitor) { if ( visitor instanceof PainlessParserVisitor ) return ((PainlessParserVisitor<? extends T>)visitor).visitPrecedence(this); else return visitor.visitChildren(this); } } public final PrimaryContext primary() throws RecognitionException { PrimaryContext _localctx = new PrimaryContext(_ctx, getState()); enterRule(_localctx, 34, RULE_primary); int _la; try { setState(346); switch ( getInterpreter().adaptivePredict(_input,24,_ctx) ) { case 1: _localctx = new PrecedenceContext(_localctx); enterOuterAlt(_localctx, 1); { setState(328); match(LP); setState(329); expression(0); setState(330); match(RP); } break; case 2: _localctx = new NumericContext(_localctx); enterOuterAlt(_localctx, 2); { setState(332); _la = _input.LA(1); if ( !(((((_la - 72)) & ~0x3f) == 0 && ((1L << (_la - 72)) & ((1L << (OCTAL - 72)) | (1L << (HEX - 72)) | (1L << (INTEGER - 72)) | (1L << (DECIMAL - 72)))) != 0)) ) { _errHandler.recoverInline(this); } else { consume(); } } break; case 3: _localctx = new TrueContext(_localctx); enterOuterAlt(_localctx, 3); { setState(333); match(TRUE); } break; case 4: _localctx = new FalseContext(_localctx); enterOuterAlt(_localctx, 4); { setState(334); match(FALSE); } break; case 5: _localctx = new NullContext(_localctx); enterOuterAlt(_localctx, 5); { setState(335); match(NULL); } break; case 6: _localctx = new StringContext(_localctx); enterOuterAlt(_localctx, 6); { setState(336); match(STRING); } break; case 7: _localctx = new RegexContext(_localctx); enterOuterAlt(_localctx, 7); { setState(337); match(REGEX); } break; case 8: _localctx = new ListinitContext(_localctx); enterOuterAlt(_localctx, 8); { setState(338); listinitializer(); } break; case 9: _localctx = new MapinitContext(_localctx); enterOuterAlt(_localctx, 9); { setState(339); mapinitializer(); } break; case 10: _localctx = new VariableContext(_localctx); enterOuterAlt(_localctx, 10); { setState(340); match(ID); } break; case 11: _localctx = new CalllocalContext(_localctx); enterOuterAlt(_localctx, 11); { setState(341); match(ID); setState(342); arguments(); } break; case 12: _localctx = new NewobjectContext(_localctx); enterOuterAlt(_localctx, 12); { setState(343); match(NEW); setState(344); match(TYPE); setState(345); arguments(); } break; } } catch (RecognitionException re) { _localctx.exception = re; _errHandler.reportError(this, re); _errHandler.recover(this, re); } finally { exitRule(); } return _localctx; } public static class PostfixContext extends ParserRuleContext { public CallinvokeContext callinvoke() { return getRuleContext(CallinvokeContext.class,0); } public FieldaccessContext fieldaccess() { return getRuleContext(FieldaccessContext.class,0); } public BraceaccessContext braceaccess() { return getRuleContext(BraceaccessContext.class,0); } public PostfixContext(ParserRuleContext parent, int invokingState) { super(parent, invokingState); } @Override public int getRuleIndex() { return RULE_postfix; } @Override public <T> T accept(ParseTreeVisitor<? extends T> visitor) { if ( visitor instanceof PainlessParserVisitor ) return ((PainlessParserVisitor<? extends T>)visitor).visitPostfix(this); else return visitor.visitChildren(this); } } public final PostfixContext postfix() throws RecognitionException { PostfixContext _localctx = new PostfixContext(_ctx, getState()); enterRule(_localctx, 36, RULE_postfix); try { setState(351); switch ( getInterpreter().adaptivePredict(_input,25,_ctx) ) { case 1: enterOuterAlt(_localctx, 1); { setState(348); callinvoke(); } break; case 2: enterOuterAlt(_localctx, 2); { setState(349); fieldaccess(); } break; case 3: enterOuterAlt(_localctx, 3); { setState(350); braceaccess(); } break; } } catch (RecognitionException re) { _localctx.exception = re; _errHandler.reportError(this, re); _errHandler.recover(this, re); } finally { exitRule(); } return _localctx; } public static class PostdotContext extends ParserRuleContext { public CallinvokeContext callinvoke() { return getRuleContext(CallinvokeContext.class,0); } public FieldaccessContext fieldaccess() { return getRuleContext(FieldaccessContext.class,0); } public PostdotContext(ParserRuleContext parent, int invokingState) { super(parent, invokingState); } @Override public int getRuleIndex() { return RULE_postdot; } @Override public <T> T accept(ParseTreeVisitor<? extends T> visitor) { if ( visitor instanceof PainlessParserVisitor ) return ((PainlessParserVisitor<? extends T>)visitor).visitPostdot(this); else return visitor.visitChildren(this); } } public final PostdotContext postdot() throws RecognitionException { PostdotContext _localctx = new PostdotContext(_ctx, getState()); enterRule(_localctx, 38, RULE_postdot); try { setState(355); switch ( getInterpreter().adaptivePredict(_input,26,_ctx) ) { case 1: enterOuterAlt(_localctx, 1); { setState(353); callinvoke(); } break; case 2: enterOuterAlt(_localctx, 2); { setState(354); fieldaccess(); } break; } } catch (RecognitionException re) { _localctx.exception = re; _errHandler.reportError(this, re); _errHandler.recover(this, re); } finally { exitRule(); } return _localctx; } public static class CallinvokeContext extends ParserRuleContext { public TerminalNode DOTID() { return getToken(PainlessParser.DOTID, 0); } public ArgumentsContext arguments() { return getRuleContext(ArgumentsContext.class,0); } public TerminalNode DOT() { return getToken(PainlessParser.DOT, 0); } public TerminalNode NSDOT() { return getToken(PainlessParser.NSDOT, 0); } public CallinvokeContext(ParserRuleContext parent, int invokingState) { super(parent, invokingState); } @Override public int getRuleIndex() { return RULE_callinvoke; } @Override public <T> T accept(ParseTreeVisitor<? extends T> visitor) { if ( visitor instanceof PainlessParserVisitor ) return ((PainlessParserVisitor<? extends T>)visitor).visitCallinvoke(this); else return visitor.visitChildren(this); } } public final CallinvokeContext callinvoke() throws RecognitionException { CallinvokeContext _localctx = new CallinvokeContext(_ctx, getState()); enterRule(_localctx, 40, RULE_callinvoke); int _la; try { enterOuterAlt(_localctx, 1); { setState(357); _la = _input.LA(1); if ( !(_la==DOT || _la==NSDOT) ) { _errHandler.recoverInline(this); } else { consume(); } setState(358); match(DOTID); setState(359); arguments(); } } catch (RecognitionException re) { _localctx.exception = re; _errHandler.reportError(this, re); _errHandler.recover(this, re); } finally { exitRule(); } return _localctx; } public static class FieldaccessContext extends ParserRuleContext { public TerminalNode DOT() { return getToken(PainlessParser.DOT, 0); } public TerminalNode NSDOT() { return getToken(PainlessParser.NSDOT, 0); } public TerminalNode DOTID() { return getToken(PainlessParser.DOTID, 0); } public TerminalNode DOTINTEGER() { return getToken(PainlessParser.DOTINTEGER, 0); } public FieldaccessContext(ParserRuleContext parent, int invokingState) { super(parent, invokingState); } @Override public int getRuleIndex() { return RULE_fieldaccess; } @Override public <T> T accept(ParseTreeVisitor<? extends T> visitor) { if ( visitor instanceof PainlessParserVisitor ) return ((PainlessParserVisitor<? extends T>)visitor).visitFieldaccess(this); else return visitor.visitChildren(this); } } public final FieldaccessContext fieldaccess() throws RecognitionException { FieldaccessContext _localctx = new FieldaccessContext(_ctx, getState()); enterRule(_localctx, 42, RULE_fieldaccess); int _la; try { enterOuterAlt(_localctx, 1); { setState(361); _la = _input.LA(1); if ( !(_la==DOT || _la==NSDOT) ) { _errHandler.recoverInline(this); } else { consume(); } setState(362); _la = _input.LA(1); if ( !(_la==DOTINTEGER || _la==DOTID) ) { _errHandler.recoverInline(this); } else { consume(); } } } catch (RecognitionException re) { _localctx.exception = re; _errHandler.reportError(this, re); _errHandler.recover(this, re); } finally { exitRule(); } return _localctx; } public static class BraceaccessContext extends ParserRuleContext { public TerminalNode LBRACE() { return getToken(PainlessParser.LBRACE, 0); } public ExpressionContext expression() { return getRuleContext(ExpressionContext.class,0); } public TerminalNode RBRACE() { return getToken(PainlessParser.RBRACE, 0); } public BraceaccessContext(ParserRuleContext parent, int invokingState) { super(parent, invokingState); } @Override public int getRuleIndex() { return RULE_braceaccess; } @Override public <T> T accept(ParseTreeVisitor<? extends T> visitor) { if ( visitor instanceof PainlessParserVisitor ) return ((PainlessParserVisitor<? extends T>)visitor).visitBraceaccess(this); else return visitor.visitChildren(this); } } public final BraceaccessContext braceaccess() throws RecognitionException { BraceaccessContext _localctx = new BraceaccessContext(_ctx, getState()); enterRule(_localctx, 44, RULE_braceaccess); try { enterOuterAlt(_localctx, 1); { setState(364); match(LBRACE); setState(365); expression(0); setState(366); match(RBRACE); } } catch (RecognitionException re) { _localctx.exception = re; _errHandler.reportError(this, re); _errHandler.recover(this, re); } finally { exitRule(); } return _localctx; } public static class ArrayinitializerContext extends ParserRuleContext { public ArrayinitializerContext(ParserRuleContext parent, int invokingState) { super(parent, invokingState); } @Override public int getRuleIndex() { return RULE_arrayinitializer; } public ArrayinitializerContext() { } public void copyFrom(ArrayinitializerContext ctx) { super.copyFrom(ctx); } } public static class NewstandardarrayContext extends ArrayinitializerContext { public TerminalNode NEW() { return getToken(PainlessParser.NEW, 0); } public TerminalNode TYPE() { return getToken(PainlessParser.TYPE, 0); } public List<TerminalNode> LBRACE() { return getTokens(PainlessParser.LBRACE); } public TerminalNode LBRACE(int i) { return getToken(PainlessParser.LBRACE, i); } public List<ExpressionContext> expression() { return getRuleContexts(ExpressionContext.class); } public ExpressionContext expression(int i) { return getRuleContext(ExpressionContext.class,i); } public List<TerminalNode> RBRACE() { return getTokens(PainlessParser.RBRACE); } public TerminalNode RBRACE(int i) { return getToken(PainlessParser.RBRACE, i); } public PostdotContext postdot() { return getRuleContext(PostdotContext.class,0); } public List<PostfixContext> postfix() { return getRuleContexts(PostfixContext.class); } public PostfixContext postfix(int i) { return getRuleContext(PostfixContext.class,i); } public NewstandardarrayContext(ArrayinitializerContext ctx) { copyFrom(ctx); } @Override public <T> T accept(ParseTreeVisitor<? extends T> visitor) { if ( visitor instanceof PainlessParserVisitor ) return ((PainlessParserVisitor<? extends T>)visitor).visitNewstandardarray(this); else return visitor.visitChildren(this); } } public static class NewinitializedarrayContext extends ArrayinitializerContext { public TerminalNode NEW() { return getToken(PainlessParser.NEW, 0); } public TerminalNode TYPE() { return getToken(PainlessParser.TYPE, 0); } public TerminalNode LBRACE() { return getToken(PainlessParser.LBRACE, 0); } public TerminalNode RBRACE() { return getToken(PainlessParser.RBRACE, 0); } public TerminalNode LBRACK() { return getToken(PainlessParser.LBRACK, 0); } public TerminalNode RBRACK() { return getToken(PainlessParser.RBRACK, 0); } public List<ExpressionContext> expression() { return getRuleContexts(ExpressionContext.class); } public ExpressionContext expression(int i) { return getRuleContext(ExpressionContext.class,i); } public TerminalNode SEMICOLON() { return getToken(PainlessParser.SEMICOLON, 0); } public List<PostfixContext> postfix() { return getRuleContexts(PostfixContext.class); } public PostfixContext postfix(int i) { return getRuleContext(PostfixContext.class,i); } public List<TerminalNode> COMMA() { return getTokens(PainlessParser.COMMA); } public TerminalNode COMMA(int i) { return getToken(PainlessParser.COMMA, i); } public NewinitializedarrayContext(ArrayinitializerContext ctx) { copyFrom(ctx); } @Override public <T> T accept(ParseTreeVisitor<? extends T> visitor) { if ( visitor instanceof PainlessParserVisitor ) return ((PainlessParserVisitor<? extends T>)visitor).visitNewinitializedarray(this); else return visitor.visitChildren(this); } } public final ArrayinitializerContext arrayinitializer() throws RecognitionException { ArrayinitializerContext _localctx = new ArrayinitializerContext(_ctx, getState()); enterRule(_localctx, 46, RULE_arrayinitializer); int _la; try { int _alt; setState(412); switch ( getInterpreter().adaptivePredict(_input,34,_ctx) ) { case 1: _localctx = new NewstandardarrayContext(_localctx); enterOuterAlt(_localctx, 1); { setState(368); match(NEW); setState(369); match(TYPE); setState(374); _errHandler.sync(this); _alt = 1; do { switch (_alt) { case 1: { { setState(370); match(LBRACE); setState(371); expression(0); setState(372); match(RBRACE); } } break; default: throw new NoViableAltException(this); } setState(376); _errHandler.sync(this); _alt = getInterpreter().adaptivePredict(_input,27,_ctx); } while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ); setState(385); switch ( getInterpreter().adaptivePredict(_input,29,_ctx) ) { case 1: { setState(378); postdot(); setState(382); _errHandler.sync(this); _alt = getInterpreter().adaptivePredict(_input,28,_ctx); while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { if ( _alt==1 ) { { { setState(379); postfix(); } } } setState(384); _errHandler.sync(this); _alt = getInterpreter().adaptivePredict(_input,28,_ctx); } } break; } } break; case 2: _localctx = new NewinitializedarrayContext(_localctx); enterOuterAlt(_localctx, 2); { setState(387); match(NEW); setState(388); match(TYPE); setState(389); match(LBRACE); setState(390); match(RBRACE); setState(391); match(LBRACK); setState(400); _la = _input.LA(1); if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << LBRACE) | (1L << LP) | (1L << NEW) | (1L << BOOLNOT) | (1L << BWNOT) | (1L << ADD) | (1L << SUB) | (1L << INCR) | (1L << DECR))) != 0) || ((((_la - 72)) & ~0x3f) == 0 && ((1L << (_la - 72)) & ((1L << (OCTAL - 72)) | (1L << (HEX - 72)) | (1L << (INTEGER - 72)) | (1L << (DECIMAL - 72)) | (1L << (STRING - 72)) | (1L << (REGEX - 72)) | (1L << (TRUE - 72)) | (1L << (FALSE - 72)) | (1L << (NULL - 72)) | (1L << (TYPE - 72)) | (1L << (ID - 72)))) != 0)) { { setState(392); expression(0); setState(397); _errHandler.sync(this); _la = _input.LA(1); while (_la==COMMA) { { { setState(393); match(COMMA); setState(394); expression(0); } } setState(399); _errHandler.sync(this); _la = _input.LA(1); } } } setState(403); _la = _input.LA(1); if (_la==SEMICOLON) { { setState(402); match(SEMICOLON); } } setState(405); match(RBRACK); setState(409); _errHandler.sync(this); _alt = getInterpreter().adaptivePredict(_input,33,_ctx); while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { if ( _alt==1 ) { { { setState(406); postfix(); } } } setState(411); _errHandler.sync(this); _alt = getInterpreter().adaptivePredict(_input,33,_ctx); } } break; } } catch (RecognitionException re) { _localctx.exception = re; _errHandler.reportError(this, re); _errHandler.recover(this, re); } finally { exitRule(); } return _localctx; } public static class ListinitializerContext extends ParserRuleContext { public TerminalNode LBRACE() { return getToken(PainlessParser.LBRACE, 0); } public List<ExpressionContext> expression() { return getRuleContexts(ExpressionContext.class); } public ExpressionContext expression(int i) { return getRuleContext(ExpressionContext.class,i); } public TerminalNode RBRACE() { return getToken(PainlessParser.RBRACE, 0); } public List<TerminalNode> COMMA() { return getTokens(PainlessParser.COMMA); } public TerminalNode COMMA(int i) { return getToken(PainlessParser.COMMA, i); } public ListinitializerContext(ParserRuleContext parent, int invokingState) { super(parent, invokingState); } @Override public int getRuleIndex() { return RULE_listinitializer; } @Override public <T> T accept(ParseTreeVisitor<? extends T> visitor) { if ( visitor instanceof PainlessParserVisitor ) return ((PainlessParserVisitor<? extends T>)visitor).visitListinitializer(this); else return visitor.visitChildren(this); } } public final ListinitializerContext listinitializer() throws RecognitionException { ListinitializerContext _localctx = new ListinitializerContext(_ctx, getState()); enterRule(_localctx, 48, RULE_listinitializer); int _la; try { setState(427); switch ( getInterpreter().adaptivePredict(_input,36,_ctx) ) { case 1: enterOuterAlt(_localctx, 1); { setState(414); match(LBRACE); setState(415); expression(0); setState(420); _errHandler.sync(this); _la = _input.LA(1); while (_la==COMMA) { { { setState(416); match(COMMA); setState(417); expression(0); } } setState(422); _errHandler.sync(this); _la = _input.LA(1); } setState(423); match(RBRACE); } break; case 2: enterOuterAlt(_localctx, 2); { setState(425); match(LBRACE); setState(426); match(RBRACE); } break; } } catch (RecognitionException re) { _localctx.exception = re; _errHandler.reportError(this, re); _errHandler.recover(this, re); } finally { exitRule(); } return _localctx; } public static class MapinitializerContext extends ParserRuleContext { public TerminalNode LBRACE() { return getToken(PainlessParser.LBRACE, 0); } public List<MaptokenContext> maptoken() { return getRuleContexts(MaptokenContext.class); } public MaptokenContext maptoken(int i) { return getRuleContext(MaptokenContext.class,i); } public TerminalNode RBRACE() { return getToken(PainlessParser.RBRACE, 0); } public List<TerminalNode> COMMA() { return getTokens(PainlessParser.COMMA); } public TerminalNode COMMA(int i) { return getToken(PainlessParser.COMMA, i); } public TerminalNode COLON() { return getToken(PainlessParser.COLON, 0); } public MapinitializerContext(ParserRuleContext parent, int invokingState) { super(parent, invokingState); } @Override public int getRuleIndex() { return RULE_mapinitializer; } @Override public <T> T accept(ParseTreeVisitor<? extends T> visitor) { if ( visitor instanceof PainlessParserVisitor ) return ((PainlessParserVisitor<? extends T>)visitor).visitMapinitializer(this); else return visitor.visitChildren(this); } } public final MapinitializerContext mapinitializer() throws RecognitionException { MapinitializerContext _localctx = new MapinitializerContext(_ctx, getState()); enterRule(_localctx, 50, RULE_mapinitializer); int _la; try { setState(443); switch ( getInterpreter().adaptivePredict(_input,38,_ctx) ) { case 1: enterOuterAlt(_localctx, 1); { setState(429); match(LBRACE); setState(430); maptoken(); setState(435); _errHandler.sync(this); _la = _input.LA(1); while (_la==COMMA) { { { setState(431); match(COMMA); setState(432); maptoken(); } } setState(437); _errHandler.sync(this); _la = _input.LA(1); } setState(438); match(RBRACE); } break; case 2: enterOuterAlt(_localctx, 2); { setState(440); match(LBRACE); setState(441); match(COLON); setState(442); match(RBRACE); } break; } } catch (RecognitionException re) { _localctx.exception = re; _errHandler.reportError(this, re); _errHandler.recover(this, re); } finally { exitRule(); } return _localctx; } public static class MaptokenContext extends ParserRuleContext { public List<ExpressionContext> expression() { return getRuleContexts(ExpressionContext.class); } public ExpressionContext expression(int i) { return getRuleContext(ExpressionContext.class,i); } public TerminalNode COLON() { return getToken(PainlessParser.COLON, 0); } public MaptokenContext(ParserRuleContext parent, int invokingState) { super(parent, invokingState); } @Override public int getRuleIndex() { return RULE_maptoken; } @Override public <T> T accept(ParseTreeVisitor<? extends T> visitor) { if ( visitor instanceof PainlessParserVisitor ) return ((PainlessParserVisitor<? extends T>)visitor).visitMaptoken(this); else return visitor.visitChildren(this); } } public final MaptokenContext maptoken() throws RecognitionException { MaptokenContext _localctx = new MaptokenContext(_ctx, getState()); enterRule(_localctx, 52, RULE_maptoken); try { enterOuterAlt(_localctx, 1); { setState(445); expression(0); setState(446); match(COLON); setState(447); expression(0); } } catch (RecognitionException re) { _localctx.exception = re; _errHandler.reportError(this, re); _errHandler.recover(this, re); } finally { exitRule(); } return _localctx; } public static class ArgumentsContext extends ParserRuleContext { public TerminalNode LP() { return getToken(PainlessParser.LP, 0); } public TerminalNode RP() { return getToken(PainlessParser.RP, 0); } public List<ArgumentContext> argument() { return getRuleContexts(ArgumentContext.class); } public ArgumentContext argument(int i) { return getRuleContext(ArgumentContext.class,i); } public List<TerminalNode> COMMA() { return getTokens(PainlessParser.COMMA); } public TerminalNode COMMA(int i) { return getToken(PainlessParser.COMMA, i); } public ArgumentsContext(ParserRuleContext parent, int invokingState) { super(parent, invokingState); } @Override public int getRuleIndex() { return RULE_arguments; } @Override public <T> T accept(ParseTreeVisitor<? extends T> visitor) { if ( visitor instanceof PainlessParserVisitor ) return ((PainlessParserVisitor<? extends T>)visitor).visitArguments(this); else return visitor.visitChildren(this); } } public final ArgumentsContext arguments() throws RecognitionException { ArgumentsContext _localctx = new ArgumentsContext(_ctx, getState()); enterRule(_localctx, 54, RULE_arguments); int _la; try { enterOuterAlt(_localctx, 1); { { setState(449); match(LP); setState(458); _la = _input.LA(1); if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << LBRACE) | (1L << LP) | (1L << NEW) | (1L << THIS) | (1L << BOOLNOT) | (1L << BWNOT) | (1L << ADD) | (1L << SUB) | (1L << INCR) | (1L << DECR))) != 0) || ((((_la - 72)) & ~0x3f) == 0 && ((1L << (_la - 72)) & ((1L << (OCTAL - 72)) | (1L << (HEX - 72)) | (1L << (INTEGER - 72)) | (1L << (DECIMAL - 72)) | (1L << (STRING - 72)) | (1L << (REGEX - 72)) | (1L << (TRUE - 72)) | (1L << (FALSE - 72)) | (1L << (NULL - 72)) | (1L << (TYPE - 72)) | (1L << (ID - 72)))) != 0)) { { setState(450); argument(); setState(455); _errHandler.sync(this); _la = _input.LA(1); while (_la==COMMA) { { { setState(451); match(COMMA); setState(452); argument(); } } setState(457); _errHandler.sync(this); _la = _input.LA(1); } } } setState(460); match(RP); } } } catch (RecognitionException re) { _localctx.exception = re; _errHandler.reportError(this, re); _errHandler.recover(this, re); } finally { exitRule(); } return _localctx; } public static class ArgumentContext extends ParserRuleContext { public ExpressionContext expression() { return getRuleContext(ExpressionContext.class,0); } public LambdaContext lambda() { return getRuleContext(LambdaContext.class,0); } public FuncrefContext funcref() { return getRuleContext(FuncrefContext.class,0); } public ArgumentContext(ParserRuleContext parent, int invokingState) { super(parent, invokingState); } @Override public int getRuleIndex() { return RULE_argument; } @Override public <T> T accept(ParseTreeVisitor<? extends T> visitor) { if ( visitor instanceof PainlessParserVisitor ) return ((PainlessParserVisitor<? extends T>)visitor).visitArgument(this); else return visitor.visitChildren(this); } } public final ArgumentContext argument() throws RecognitionException { ArgumentContext _localctx = new ArgumentContext(_ctx, getState()); enterRule(_localctx, 56, RULE_argument); try { setState(465); switch ( getInterpreter().adaptivePredict(_input,41,_ctx) ) { case 1: enterOuterAlt(_localctx, 1); { setState(462); expression(0); } break; case 2: enterOuterAlt(_localctx, 2); { setState(463); lambda(); } break; case 3: enterOuterAlt(_localctx, 3); { setState(464); funcref(); } break; } } catch (RecognitionException re) { _localctx.exception = re; _errHandler.reportError(this, re); _errHandler.recover(this, re); } finally { exitRule(); } return _localctx; } public static class LambdaContext extends ParserRuleContext { public TerminalNode ARROW() { return getToken(PainlessParser.ARROW, 0); } public List<LamtypeContext> lamtype() { return getRuleContexts(LamtypeContext.class); } public LamtypeContext lamtype(int i) { return getRuleContext(LamtypeContext.class,i); } public TerminalNode LP() { return getToken(PainlessParser.LP, 0); } public TerminalNode RP() { return getToken(PainlessParser.RP, 0); } public BlockContext block() { return getRuleContext(BlockContext.class,0); } public ExpressionContext expression() { return getRuleContext(ExpressionContext.class,0); } public List<TerminalNode> COMMA() { return getTokens(PainlessParser.COMMA); } public TerminalNode COMMA(int i) { return getToken(PainlessParser.COMMA, i); } public LambdaContext(ParserRuleContext parent, int invokingState) { super(parent, invokingState); } @Override public int getRuleIndex() { return RULE_lambda; } @Override public <T> T accept(ParseTreeVisitor<? extends T> visitor) { if ( visitor instanceof PainlessParserVisitor ) return ((PainlessParserVisitor<? extends T>)visitor).visitLambda(this); else return visitor.visitChildren(this); } } public final LambdaContext lambda() throws RecognitionException { LambdaContext _localctx = new LambdaContext(_ctx, getState()); enterRule(_localctx, 58, RULE_lambda); int _la; try { enterOuterAlt(_localctx, 1); { setState(480); switch (_input.LA(1)) { case TYPE: case ID: { setState(467); lamtype(); } break; case LP: { setState(468); match(LP); setState(477); _la = _input.LA(1); if (_la==TYPE || _la==ID) { { setState(469); lamtype(); setState(474); _errHandler.sync(this); _la = _input.LA(1); while (_la==COMMA) { { { setState(470); match(COMMA); setState(471); lamtype(); } } setState(476); _errHandler.sync(this); _la = _input.LA(1); } } } setState(479); match(RP); } break; default: throw new NoViableAltException(this); } setState(482); match(ARROW); setState(485); switch (_input.LA(1)) { case LBRACK: { setState(483); block(); } break; case LBRACE: case LP: case NEW: case BOOLNOT: case BWNOT: case ADD: case SUB: case INCR: case DECR: case OCTAL: case HEX: case INTEGER: case DECIMAL: case STRING: case REGEX: case TRUE: case FALSE: case NULL: case TYPE: case ID: { setState(484); expression(0); } break; default: throw new NoViableAltException(this); } } } catch (RecognitionException re) { _localctx.exception = re; _errHandler.reportError(this, re); _errHandler.recover(this, re); } finally { exitRule(); } return _localctx; } public static class LamtypeContext extends ParserRuleContext { public TerminalNode ID() { return getToken(PainlessParser.ID, 0); } public DecltypeContext decltype() { return getRuleContext(DecltypeContext.class,0); } public LamtypeContext(ParserRuleContext parent, int invokingState) { super(parent, invokingState); } @Override public int getRuleIndex() { return RULE_lamtype; } @Override public <T> T accept(ParseTreeVisitor<? extends T> visitor) { if ( visitor instanceof PainlessParserVisitor ) return ((PainlessParserVisitor<? extends T>)visitor).visitLamtype(this); else return visitor.visitChildren(this); } } public final LamtypeContext lamtype() throws RecognitionException { LamtypeContext _localctx = new LamtypeContext(_ctx, getState()); enterRule(_localctx, 60, RULE_lamtype); int _la; try { enterOuterAlt(_localctx, 1); { setState(488); _la = _input.LA(1); if (_la==TYPE) { { setState(487); decltype(); } } setState(490); match(ID); } } catch (RecognitionException re) { _localctx.exception = re; _errHandler.reportError(this, re); _errHandler.recover(this, re); } finally { exitRule(); } return _localctx; } public static class FuncrefContext extends ParserRuleContext { public FuncrefContext(ParserRuleContext parent, int invokingState) { super(parent, invokingState); } @Override public int getRuleIndex() { return RULE_funcref; } public FuncrefContext() { } public void copyFrom(FuncrefContext ctx) { super.copyFrom(ctx); } } public static class ClassfuncrefContext extends FuncrefContext { public TerminalNode TYPE() { return getToken(PainlessParser.TYPE, 0); } public TerminalNode REF() { return getToken(PainlessParser.REF, 0); } public TerminalNode ID() { return getToken(PainlessParser.ID, 0); } public ClassfuncrefContext(FuncrefContext ctx) { copyFrom(ctx); } @Override public <T> T accept(ParseTreeVisitor<? extends T> visitor) { if ( visitor instanceof PainlessParserVisitor ) return ((PainlessParserVisitor<? extends T>)visitor).visitClassfuncref(this); else return visitor.visitChildren(this); } } public static class CapturingfuncrefContext extends FuncrefContext { public List<TerminalNode> ID() { return getTokens(PainlessParser.ID); } public TerminalNode ID(int i) { return getToken(PainlessParser.ID, i); } public TerminalNode REF() { return getToken(PainlessParser.REF, 0); } public CapturingfuncrefContext(FuncrefContext ctx) { copyFrom(ctx); } @Override public <T> T accept(ParseTreeVisitor<? extends T> visitor) { if ( visitor instanceof PainlessParserVisitor ) return ((PainlessParserVisitor<? extends T>)visitor).visitCapturingfuncref(this); else return visitor.visitChildren(this); } } public static class ConstructorfuncrefContext extends FuncrefContext { public DecltypeContext decltype() { return getRuleContext(DecltypeContext.class,0); } public TerminalNode REF() { return getToken(PainlessParser.REF, 0); } public TerminalNode NEW() { return getToken(PainlessParser.NEW, 0); } public ConstructorfuncrefContext(FuncrefContext ctx) { copyFrom(ctx); } @Override public <T> T accept(ParseTreeVisitor<? extends T> visitor) { if ( visitor instanceof PainlessParserVisitor ) return ((PainlessParserVisitor<? extends T>)visitor).visitConstructorfuncref(this); else return visitor.visitChildren(this); } } public static class LocalfuncrefContext extends FuncrefContext { public TerminalNode THIS() { return getToken(PainlessParser.THIS, 0); } public TerminalNode REF() { return getToken(PainlessParser.REF, 0); } public TerminalNode ID() { return getToken(PainlessParser.ID, 0); } public LocalfuncrefContext(FuncrefContext ctx) { copyFrom(ctx); } @Override public <T> T accept(ParseTreeVisitor<? extends T> visitor) { if ( visitor instanceof PainlessParserVisitor ) return ((PainlessParserVisitor<? extends T>)visitor).visitLocalfuncref(this); else return visitor.visitChildren(this); } } public final FuncrefContext funcref() throws RecognitionException { FuncrefContext _localctx = new FuncrefContext(_ctx, getState()); enterRule(_localctx, 62, RULE_funcref); try { setState(505); switch ( getInterpreter().adaptivePredict(_input,47,_ctx) ) { case 1: _localctx = new ClassfuncrefContext(_localctx); enterOuterAlt(_localctx, 1); { setState(492); match(TYPE); setState(493); match(REF); setState(494); match(ID); } break; case 2: _localctx = new ConstructorfuncrefContext(_localctx); enterOuterAlt(_localctx, 2); { setState(495); decltype(); setState(496); match(REF); setState(497); match(NEW); } break; case 3: _localctx = new CapturingfuncrefContext(_localctx); enterOuterAlt(_localctx, 3); { setState(499); match(ID); setState(500); match(REF); setState(501); match(ID); } break; case 4: _localctx = new LocalfuncrefContext(_localctx); enterOuterAlt(_localctx, 4); { setState(502); match(THIS); setState(503); match(REF); setState(504); match(ID); } break; } } catch (RecognitionException re) { _localctx.exception = re; _errHandler.reportError(this, re); _errHandler.recover(this, re); } finally { exitRule(); } return _localctx; } public boolean sempred(RuleContext _localctx, int ruleIndex, int predIndex) { switch (ruleIndex) { case 3: return statement_sempred((StatementContext)_localctx, predIndex); case 14: return expression_sempred((ExpressionContext)_localctx, predIndex); } return true; } private boolean statement_sempred(StatementContext _localctx, int predIndex) { switch (predIndex) { case 0: return _input.LA(1) != ELSE ; } return true; } private boolean expression_sempred(ExpressionContext _localctx, int predIndex) { switch (predIndex) { case 1: return precpred(_ctx, 15); case 2: return precpred(_ctx, 14); case 3: return precpred(_ctx, 13); case 4: return precpred(_ctx, 12); case 5: return precpred(_ctx, 11); case 6: return precpred(_ctx, 9); case 7: return precpred(_ctx, 8); case 8: return precpred(_ctx, 7); case 9: return precpred(_ctx, 6); case 10: return precpred(_ctx, 5); case 11: return precpred(_ctx, 4); case 12: return precpred(_ctx, 3); case 13: return precpred(_ctx, 2); case 14: return precpred(_ctx, 1); case 15: return precpred(_ctx, 10); } return true; } public static final String _serializedATN = "\3\u0430\ud6d1\u8206\uad2d\u4417\uaef1\u8d80\uaadd\3V\u01fe\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"+ "\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\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!\3\2\7\2D\n\2\f\2\16\2G\13\2\3\2\7\2J\n\2\f\2\16\2M\13\2\3\2\3\2\3"+ "\3\3\3\3\3\3\3\3\3\3\4\3\4\3\4\3\4\3\4\3\4\3\4\7\4]\n\4\f\4\16\4`\13\4"+ "\5\4b\n\4\3\4\3\4\3\5\3\5\3\5\3\5\3\5\3\5\3\5\3\5\5\5n\n\5\3\5\3\5\3\5"+ "\3\5\3\5\3\5\5\5v\n\5\3\5\3\5\3\5\3\5\3\5\3\5\3\5\3\5\3\5\3\5\3\5\5\5"+ "\u0083\n\5\3\5\3\5\5\5\u0087\n\5\3\5\3\5\5\5\u008b\n\5\3\5\3\5\3\5\5\5"+ "\u0090\n\5\3\5\3\5\3\5\3\5\3\5\3\5\3\5\3\5\3\5\3\5\3\5\3\5\3\5\3\5\3\5"+ "\3\5\3\5\3\5\3\5\3\5\3\5\3\5\3\5\3\5\3\5\3\5\3\5\3\5\3\5\3\5\3\5\6\5\u00b1"+ "\n\5\r\5\16\5\u00b2\3\5\3\5\3\5\3\5\3\5\3\5\3\5\5\5\u00bc\n\5\3\6\3\6"+ "\5\6\u00c0\n\6\3\7\3\7\7\7\u00c4\n\7\f\7\16\7\u00c7\13\7\3\7\3\7\3\b\3"+ "\b\3\t\3\t\5\t\u00cf\n\t\3\n\3\n\3\13\3\13\3\13\3\13\7\13\u00d7\n\13\f"+ "\13\16\13\u00da\13\13\3\f\3\f\3\f\7\f\u00df\n\f\f\f\16\f\u00e2\13\f\3"+ "\r\3\r\3\r\5\r\u00e7\n\r\3\16\3\16\3\16\3\16\3\16\3\16\3\16\3\17\3\17"+ "\3\20\3\20\3\20\3\20\3\20\3\20\3\20\3\20\3\20\3\20\3\20\3\20\3\20\3\20"+ "\3\20\3\20\3\20\3\20\3\20\3\20\3\20\3\20\3\20\3\20\3\20\3\20\3\20\3\20"+ "\3\20\3\20\3\20\3\20\3\20\3\20\3\20\3\20\3\20\3\20\3\20\3\20\3\20\3\20"+ "\3\20\3\20\3\20\3\20\3\20\3\20\3\20\3\20\3\20\7\20\u0125\n\20\f\20\16"+ "\20\u0128\13\20\3\21\3\21\3\21\3\21\3\21\3\21\3\21\3\21\3\21\3\21\3\21"+ "\3\21\3\21\5\21\u0137\n\21\3\22\3\22\7\22\u013b\n\22\f\22\16\22\u013e"+ "\13\22\3\22\3\22\3\22\7\22\u0143\n\22\f\22\16\22\u0146\13\22\3\22\5\22"+ "\u0149\n\22\3\23\3\23\3\23\3\23\3\23\3\23\3\23\3\23\3\23\3\23\3\23\3\23"+ "\3\23\3\23\3\23\3\23\3\23\3\23\5\23\u015d\n\23\3\24\3\24\3\24\5\24\u0162"+ "\n\24\3\25\3\25\5\25\u0166\n\25\3\26\3\26\3\26\3\26\3\27\3\27\3\27\3\30"+ "\3\30\3\30\3\30\3\31\3\31\3\31\3\31\3\31\3\31\6\31\u0179\n\31\r\31\16"+ "\31\u017a\3\31\3\31\7\31\u017f\n\31\f\31\16\31\u0182\13\31\5\31\u0184"+ "\n\31\3\31\3\31\3\31\3\31\3\31\3\31\3\31\3\31\7\31\u018e\n\31\f\31\16"+ "\31\u0191\13\31\5\31\u0193\n\31\3\31\5\31\u0196\n\31\3\31\3\31\7\31\u019a"+ "\n\31\f\31\16\31\u019d\13\31\5\31\u019f\n\31\3\32\3\32\3\32\3\32\7\32"+ "\u01a5\n\32\f\32\16\32\u01a8\13\32\3\32\3\32\3\32\3\32\5\32\u01ae\n\32"+ "\3\33\3\33\3\33\3\33\7\33\u01b4\n\33\f\33\16\33\u01b7\13\33\3\33\3\33"+ "\3\33\3\33\3\33\5\33\u01be\n\33\3\34\3\34\3\34\3\34\3\35\3\35\3\35\3\35"+ "\7\35\u01c8\n\35\f\35\16\35\u01cb\13\35\5\35\u01cd\n\35\3\35\3\35\3\36"+ "\3\36\3\36\5\36\u01d4\n\36\3\37\3\37\3\37\3\37\3\37\7\37\u01db\n\37\f"+ "\37\16\37\u01de\13\37\5\37\u01e0\n\37\3\37\5\37\u01e3\n\37\3\37\3\37\3"+ "\37\5\37\u01e8\n\37\3 \5 \u01eb\n \3 \3 \3!\3!\3!\3!\3!\3!\3!\3!\3!\3"+ "!\3!\3!\3!\5!\u01fc\n!\3!\2\3\36\"\2\4\6\b\n\f\16\20\22\24\26\30\32\34"+ "\36 \"$&(*,.\60\62\64\668:<>@\2\17\3\3\16\16\3\2 \"\3\2#$\3\2:;\3\2%\'"+ "\3\2(+\3\2,/\3\2>I\3\2<=\4\2\36\37#$\3\2JM\3\2\13\f\3\2UV\u0237\2E\3\2"+ "\2\2\4P\3\2\2\2\6U\3\2\2\2\b\u00bb\3\2\2\2\n\u00bf\3\2\2\2\f\u00c1\3\2"+ "\2\2\16\u00ca\3\2\2\2\20\u00ce\3\2\2\2\22\u00d0\3\2\2\2\24\u00d2\3\2\2"+ "\2\26\u00db\3\2\2\2\30\u00e3\3\2\2\2\32\u00e8\3\2\2\2\34\u00ef\3\2\2\2"+ "\36\u00f1\3\2\2\2 \u0136\3\2\2\2\"\u0148\3\2\2\2$\u015c\3\2\2\2&\u0161"+ "\3\2\2\2(\u0165\3\2\2\2*\u0167\3\2\2\2,\u016b\3\2\2\2.\u016e\3\2\2\2\60"+ "\u019e\3\2\2\2\62\u01ad\3\2\2\2\64\u01bd\3\2\2\2\66\u01bf\3\2\2\28\u01c3"+ "\3\2\2\2:\u01d3\3\2\2\2<\u01e2\3\2\2\2>\u01ea\3\2\2\2@\u01fb\3\2\2\2B"+ "D\5\4\3\2CB\3\2\2\2DG\3\2\2\2EC\3\2\2\2EF\3\2\2\2FK\3\2\2\2GE\3\2\2\2"+ "HJ\5\b\5\2IH\3\2\2\2JM\3\2\2\2KI\3\2\2\2KL\3\2\2\2LN\3\2\2\2MK\3\2\2\2"+ "NO\7\2\2\3O\3\3\2\2\2PQ\5\26\f\2QR\7T\2\2RS\5\6\4\2ST\5\f\7\2T\5\3\2\2"+ "\2Ua\7\t\2\2VW\5\26\f\2W^\7T\2\2XY\7\r\2\2YZ\5\26\f\2Z[\7T\2\2[]\3\2\2"+ "\2\\X\3\2\2\2]`\3\2\2\2^\\\3\2\2\2^_\3\2\2\2_b\3\2\2\2`^\3\2\2\2aV\3\2"+ "\2\2ab\3\2\2\2bc\3\2\2\2cd\7\n\2\2d\7\3\2\2\2ef\7\17\2\2fg\7\t\2\2gh\5"+ "\36\20\2hi\7\n\2\2im\5\n\6\2jk\7\21\2\2kn\5\n\6\2ln\6\5\2\2mj\3\2\2\2"+ "ml\3\2\2\2n\u00bc\3\2\2\2op\7\22\2\2pq\7\t\2\2qr\5\36\20\2ru\7\n\2\2s"+ "v\5\n\6\2tv\5\16\b\2us\3\2\2\2ut\3\2\2\2v\u00bc\3\2\2\2wx\7\23\2\2xy\5"+ "\f\7\2yz\7\22\2\2z{\7\t\2\2{|\5\36\20\2|}\7\n\2\2}~\5\34\17\2~\u00bc\3"+ "\2\2\2\177\u0080\7\24\2\2\u0080\u0082\7\t\2\2\u0081\u0083\5\20\t\2\u0082"+ "\u0081\3\2\2\2\u0082\u0083\3\2\2\2\u0083\u0084\3\2\2\2\u0084\u0086\7\16"+ "\2\2\u0085\u0087\5\36\20\2\u0086\u0085\3\2\2\2\u0086\u0087\3\2\2\2\u0087"+ "\u0088\3\2\2\2\u0088\u008a\7\16\2\2\u0089\u008b\5\22\n\2\u008a\u0089\3"+ "\2\2\2\u008a\u008b\3\2\2\2\u008b\u008c\3\2\2\2\u008c\u008f\7\n\2\2\u008d"+ "\u0090\5\n\6\2\u008e\u0090\5\16\b\2\u008f\u008d\3\2\2\2\u008f\u008e\3"+ "\2\2\2\u0090\u00bc\3\2\2\2\u0091\u0092\7\24\2\2\u0092\u0093\7\t\2\2\u0093"+ "\u0094\5\26\f\2\u0094\u0095\7T\2\2\u0095\u0096\7\66\2\2\u0096\u0097\5"+ "\36\20\2\u0097\u0098\7\n\2\2\u0098\u0099\5\n\6\2\u0099\u00bc\3\2\2\2\u009a"+ "\u009b\7\24\2\2\u009b\u009c\7\t\2\2\u009c\u009d\7T\2\2\u009d\u009e\7\20"+ "\2\2\u009e\u009f\5\36\20\2\u009f\u00a0\7\n\2\2\u00a0\u00a1\5\n\6\2\u00a1"+ "\u00bc\3\2\2\2\u00a2\u00a3\5\24\13\2\u00a3\u00a4\5\34\17\2\u00a4\u00bc"+ "\3\2\2\2\u00a5\u00a6\7\25\2\2\u00a6\u00bc\5\34\17\2\u00a7\u00a8\7\26\2"+ "\2\u00a8\u00bc\5\34\17\2\u00a9\u00aa\7\27\2\2\u00aa\u00ab\5\36\20\2\u00ab"+ "\u00ac\5\34\17\2\u00ac\u00bc\3\2\2\2\u00ad\u00ae\7\31\2\2\u00ae\u00b0"+ "\5\f\7\2\u00af\u00b1\5\32\16\2\u00b0\u00af\3\2\2\2\u00b1\u00b2\3\2\2\2"+ "\u00b2\u00b0\3\2\2\2\u00b2\u00b3\3\2\2\2\u00b3\u00bc\3\2\2\2\u00b4\u00b5"+ "\7\33\2\2\u00b5\u00b6\5\36\20\2\u00b6\u00b7\5\34\17\2\u00b7\u00bc\3\2"+ "\2\2\u00b8\u00b9\5\36\20\2\u00b9\u00ba\5\34\17\2\u00ba\u00bc\3\2\2\2\u00bb"+ "e\3\2\2\2\u00bbo\3\2\2\2\u00bbw\3\2\2\2\u00bb\177\3\2\2\2\u00bb\u0091"+ "\3\2\2\2\u00bb\u009a\3\2\2\2\u00bb\u00a2\3\2\2\2\u00bb\u00a5\3\2\2\2\u00bb"+ "\u00a7\3\2\2\2\u00bb\u00a9\3\2\2\2\u00bb\u00ad\3\2\2\2\u00bb\u00b4\3\2"+ "\2\2\u00bb\u00b8\3\2\2\2\u00bc\t\3\2\2\2\u00bd\u00c0\5\f\7\2\u00be\u00c0"+ "\5\b\5\2\u00bf\u00bd\3\2\2\2\u00bf\u00be\3\2\2\2\u00c0\13\3\2\2\2\u00c1"+ "\u00c5\7\5\2\2\u00c2\u00c4\5\b\5\2\u00c3\u00c2\3\2\2\2\u00c4\u00c7\3\2"+ "\2\2\u00c5\u00c3\3\2\2\2\u00c5\u00c6\3\2\2\2\u00c6\u00c8\3\2\2\2\u00c7"+ "\u00c5\3\2\2\2\u00c8\u00c9\7\6\2\2\u00c9\r\3\2\2\2\u00ca\u00cb\7\16\2"+ "\2\u00cb\17\3\2\2\2\u00cc\u00cf\5\24\13\2\u00cd\u00cf\5\36\20\2\u00ce"+ "\u00cc\3\2\2\2\u00ce\u00cd\3\2\2\2\u00cf\21\3\2\2\2\u00d0\u00d1\5\36\20"+ "\2\u00d1\23\3\2\2\2\u00d2\u00d3\5\26\f\2\u00d3\u00d8\5\30\r\2\u00d4\u00d5"+ "\7\r\2\2\u00d5\u00d7\5\30\r\2\u00d6\u00d4\3\2\2\2\u00d7\u00da\3\2\2\2"+ "\u00d8\u00d6\3\2\2\2\u00d8\u00d9\3\2\2\2\u00d9\25\3\2\2\2\u00da\u00d8"+ "\3\2\2\2\u00db\u00e0\7S\2\2\u00dc\u00dd\7\7\2\2\u00dd\u00df\7\b\2\2\u00de"+ "\u00dc\3\2\2\2\u00df\u00e2\3\2\2\2\u00e0\u00de\3\2\2\2\u00e0\u00e1\3\2"+ "\2\2\u00e1\27\3\2\2\2\u00e2\u00e0\3\2\2\2\u00e3\u00e6\7T\2\2\u00e4\u00e5"+ "\7>\2\2\u00e5\u00e7\5\36\20\2\u00e6\u00e4\3\2\2\2\u00e6\u00e7\3\2\2\2"+ "\u00e7\31\3\2\2\2\u00e8\u00e9\7\32\2\2\u00e9\u00ea\7\t\2\2\u00ea\u00eb"+ "\7S\2\2\u00eb\u00ec\7T\2\2\u00ec\u00ed\7\n\2\2\u00ed\u00ee\5\f\7\2\u00ee"+ "\33\3\2\2\2\u00ef\u00f0\t\2\2\2\u00f0\35\3\2\2\2\u00f1\u00f2\b\20\1\2"+ "\u00f2\u00f3\5 \21\2\u00f3\u0126\3\2\2\2\u00f4\u00f5\f\21\2\2\u00f5\u00f6"+ "\t\3\2\2\u00f6\u0125\5\36\20\22\u00f7\u00f8\f\20\2\2\u00f8\u00f9\t\4\2"+ "\2\u00f9\u0125\5\36\20\21\u00fa\u00fb\f\17\2\2\u00fb\u00fc\t\5\2\2\u00fc"+ "\u0125\5\36\20\20\u00fd\u00fe\f\16\2\2\u00fe\u00ff\t\6\2\2\u00ff\u0125"+ "\5\36\20\17\u0100\u0101\f\r\2\2\u0101\u0102\t\7\2\2\u0102\u0125\5\36\20"+ "\16\u0103\u0104\f\13\2\2\u0104\u0105\t\b\2\2\u0105\u0125\5\36\20\f\u0106"+ "\u0107\f\n\2\2\u0107\u0108\7\60\2\2\u0108\u0125\5\36\20\13\u0109\u010a"+ "\f\t\2\2\u010a\u010b\7\61\2\2\u010b\u0125\5\36\20\n\u010c\u010d\f\b\2"+ "\2\u010d\u010e\7\62\2\2\u010e\u0125\5\36\20\t\u010f\u0110\f\7\2\2\u0110"+ "\u0111\7\63\2\2\u0111\u0125\5\36\20\b\u0112\u0113\f\6\2\2\u0113\u0114"+ "\7\64\2\2\u0114\u0125\5\36\20\7\u0115\u0116\f\5\2\2\u0116\u0117\7\65\2"+ "\2\u0117\u0118\5\36\20\2\u0118\u0119\7\66\2\2\u0119\u011a\5\36\20\5\u011a"+ "\u0125\3\2\2\2\u011b\u011c\f\4\2\2\u011c\u011d\7\67\2\2\u011d\u0125\5"+ "\36\20\4\u011e\u011f\f\3\2\2\u011f\u0120\t\t\2\2\u0120\u0125\5\36\20\3"+ "\u0121\u0122\f\f\2\2\u0122\u0123\7\35\2\2\u0123\u0125\5\26\f\2\u0124\u00f4"+ "\3\2\2\2\u0124\u00f7\3\2\2\2\u0124\u00fa\3\2\2\2\u0124\u00fd\3\2\2\2\u0124"+ "\u0100\3\2\2\2\u0124\u0103\3\2\2\2\u0124\u0106\3\2\2\2\u0124\u0109\3\2"+ "\2\2\u0124\u010c\3\2\2\2\u0124\u010f\3\2\2\2\u0124\u0112\3\2\2\2\u0124"+ "\u0115\3\2\2\2\u0124\u011b\3\2\2\2\u0124\u011e\3\2\2\2\u0124\u0121\3\2"+ "\2\2\u0125\u0128\3\2\2\2\u0126\u0124\3\2\2\2\u0126\u0127\3\2\2\2\u0127"+ "\37\3\2\2\2\u0128\u0126\3\2\2\2\u0129\u012a\t\n\2\2\u012a\u0137\5\"\22"+ "\2\u012b\u012c\5\"\22\2\u012c\u012d\t\n\2\2\u012d\u0137\3\2\2\2\u012e"+ "\u0137\5\"\22\2\u012f\u0130\t\13\2\2\u0130\u0137\5 \21\2\u0131\u0132\7"+ "\t\2\2\u0132\u0133\5\26\f\2\u0133\u0134\7\n\2\2\u0134\u0135\5 \21\2\u0135"+ "\u0137\3\2\2\2\u0136\u0129\3\2\2\2\u0136\u012b\3\2\2\2\u0136\u012e\3\2"+ "\2\2\u0136\u012f\3\2\2\2\u0136\u0131\3\2\2\2\u0137!\3\2\2\2\u0138\u013c"+ "\5$\23\2\u0139\u013b\5&\24\2\u013a\u0139\3\2\2\2\u013b\u013e\3\2\2\2\u013c"+ "\u013a\3\2\2\2\u013c\u013d\3\2\2\2\u013d\u0149\3\2\2\2\u013e\u013c\3\2"+ "\2\2\u013f\u0140\5\26\f\2\u0140\u0144\5(\25\2\u0141\u0143\5&\24\2\u0142"+ "\u0141\3\2\2\2\u0143\u0146\3\2\2\2\u0144\u0142\3\2\2\2\u0144\u0145\3\2"+ "\2\2\u0145\u0149\3\2\2\2\u0146\u0144\3\2\2\2\u0147\u0149\5\60\31\2\u0148"+ "\u0138\3\2\2\2\u0148\u013f\3\2\2\2\u0148\u0147\3\2\2\2\u0149#\3\2\2\2"+ "\u014a\u014b\7\t\2\2\u014b\u014c\5\36\20\2\u014c\u014d\7\n\2\2\u014d\u015d"+ "\3\2\2\2\u014e\u015d\t\f\2\2\u014f\u015d\7P\2\2\u0150\u015d\7Q\2\2\u0151"+ "\u015d\7R\2\2\u0152\u015d\7N\2\2\u0153\u015d\7O\2\2\u0154\u015d\5\62\32"+ "\2\u0155\u015d\5\64\33\2\u0156\u015d\7T\2\2\u0157\u0158\7T\2\2\u0158\u015d"+ "\58\35\2\u0159\u015a\7\30\2\2\u015a\u015b\7S\2\2\u015b\u015d\58\35\2\u015c"+ "\u014a\3\2\2\2\u015c\u014e\3\2\2\2\u015c\u014f\3\2\2\2\u015c\u0150\3\2"+ "\2\2\u015c\u0151\3\2\2\2\u015c\u0152\3\2\2\2\u015c\u0153\3\2\2\2\u015c"+ "\u0154\3\2\2\2\u015c\u0155\3\2\2\2\u015c\u0156\3\2\2\2\u015c\u0157\3\2"+ "\2\2\u015c\u0159\3\2\2\2\u015d%\3\2\2\2\u015e\u0162\5*\26\2\u015f\u0162"+ "\5,\27\2\u0160\u0162\5.\30\2\u0161\u015e\3\2\2\2\u0161\u015f\3\2\2\2\u0161"+ "\u0160\3\2\2\2\u0162\'\3\2\2\2\u0163\u0166\5*\26\2\u0164\u0166\5,\27\2"+ "\u0165\u0163\3\2\2\2\u0165\u0164\3\2\2\2\u0166)\3\2\2\2\u0167\u0168\t"+ "\r\2\2\u0168\u0169\7V\2\2\u0169\u016a\58\35\2\u016a+\3\2\2\2\u016b\u016c"+ "\t\r\2\2\u016c\u016d\t\16\2\2\u016d-\3\2\2\2\u016e\u016f\7\7\2\2\u016f"+ "\u0170\5\36\20\2\u0170\u0171\7\b\2\2\u0171/\3\2\2\2\u0172\u0173\7\30\2"+ "\2\u0173\u0178\7S\2\2\u0174\u0175\7\7\2\2\u0175\u0176\5\36\20\2\u0176"+ "\u0177\7\b\2\2\u0177\u0179\3\2\2\2\u0178\u0174\3\2\2\2\u0179\u017a\3\2"+ "\2\2\u017a\u0178\3\2\2\2\u017a\u017b\3\2\2\2\u017b\u0183\3\2\2\2\u017c"+ "\u0180\5(\25\2\u017d\u017f\5&\24\2\u017e\u017d\3\2\2\2\u017f\u0182\3\2"+ "\2\2\u0180\u017e\3\2\2\2\u0180\u0181\3\2\2\2\u0181\u0184\3\2\2\2\u0182"+ "\u0180\3\2\2\2\u0183\u017c\3\2\2\2\u0183\u0184\3\2\2\2\u0184\u019f\3\2"+ "\2\2\u0185\u0186\7\30\2\2\u0186\u0187\7S\2\2\u0187\u0188\7\7\2\2\u0188"+ "\u0189\7\b\2\2\u0189\u0192\7\5\2\2\u018a\u018f\5\36\20\2\u018b\u018c\7"+ "\r\2\2\u018c\u018e\5\36\20\2\u018d\u018b\3\2\2\2\u018e\u0191\3\2\2\2\u018f"+ "\u018d\3\2\2\2\u018f\u0190\3\2\2\2\u0190\u0193\3\2\2\2\u0191\u018f\3\2"+ "\2\2\u0192\u018a\3\2\2\2\u0192\u0193\3\2\2\2\u0193\u0195\3\2\2\2\u0194"+ "\u0196\7\16\2\2\u0195\u0194\3\2\2\2\u0195\u0196\3\2\2\2\u0196\u0197\3"+ "\2\2\2\u0197\u019b\7\6\2\2\u0198\u019a\5&\24\2\u0199\u0198\3\2\2\2\u019a"+ "\u019d\3\2\2\2\u019b\u0199\3\2\2\2\u019b\u019c\3\2\2\2\u019c\u019f\3\2"+ "\2\2\u019d\u019b\3\2\2\2\u019e\u0172\3\2\2\2\u019e\u0185\3\2\2\2\u019f"+ "\61\3\2\2\2\u01a0\u01a1\7\7\2\2\u01a1\u01a6\5\36\20\2\u01a2\u01a3\7\r"+ "\2\2\u01a3\u01a5\5\36\20\2\u01a4\u01a2\3\2\2\2\u01a5\u01a8\3\2\2\2\u01a6"+ "\u01a4\3\2\2\2\u01a6\u01a7\3\2\2\2\u01a7\u01a9\3\2\2\2\u01a8\u01a6\3\2"+ "\2\2\u01a9\u01aa\7\b\2\2\u01aa\u01ae\3\2\2\2\u01ab\u01ac\7\7\2\2\u01ac"+ "\u01ae\7\b\2\2\u01ad\u01a0\3\2\2\2\u01ad\u01ab\3\2\2\2\u01ae\63\3\2\2"+ "\2\u01af\u01b0\7\7\2\2\u01b0\u01b5\5\66\34\2\u01b1\u01b2\7\r\2\2\u01b2"+ "\u01b4\5\66\34\2\u01b3\u01b1\3\2\2\2\u01b4\u01b7\3\2\2\2\u01b5\u01b3\3"+ "\2\2\2\u01b5\u01b6\3\2\2\2\u01b6\u01b8\3\2\2\2\u01b7\u01b5\3\2\2\2\u01b8"+ "\u01b9\7\b\2\2\u01b9\u01be\3\2\2\2\u01ba\u01bb\7\7\2\2\u01bb\u01bc\7\66"+ "\2\2\u01bc\u01be\7\b\2\2\u01bd\u01af\3\2\2\2\u01bd\u01ba\3\2\2\2\u01be"+ "\65\3\2\2\2\u01bf\u01c0\5\36\20\2\u01c0\u01c1\7\66\2\2\u01c1\u01c2\5\36"+ "\20\2\u01c2\67\3\2\2\2\u01c3\u01cc\7\t\2\2\u01c4\u01c9\5:\36\2\u01c5\u01c6"+ "\7\r\2\2\u01c6\u01c8\5:\36\2\u01c7\u01c5\3\2\2\2\u01c8\u01cb\3\2\2\2\u01c9"+ "\u01c7\3\2\2\2\u01c9\u01ca\3\2\2\2\u01ca\u01cd\3\2\2\2\u01cb\u01c9\3\2"+ "\2\2\u01cc\u01c4\3\2\2\2\u01cc\u01cd\3\2\2\2\u01cd\u01ce\3\2\2\2\u01ce"+ "\u01cf\7\n\2\2\u01cf9\3\2\2\2\u01d0\u01d4\5\36\20\2\u01d1\u01d4\5<\37"+ "\2\u01d2\u01d4\5@!\2\u01d3\u01d0\3\2\2\2\u01d3\u01d1\3\2\2\2\u01d3\u01d2"+ "\3\2\2\2\u01d4;\3\2\2\2\u01d5\u01e3\5> \2\u01d6\u01df\7\t\2\2\u01d7\u01dc"+ "\5> \2\u01d8\u01d9\7\r\2\2\u01d9\u01db\5> \2\u01da\u01d8\3\2\2\2\u01db"+ "\u01de\3\2\2\2\u01dc\u01da\3\2\2\2\u01dc\u01dd\3\2\2\2\u01dd\u01e0\3\2"+ "\2\2\u01de\u01dc\3\2\2\2\u01df\u01d7\3\2\2\2\u01df\u01e0\3\2\2\2\u01e0"+ "\u01e1\3\2\2\2\u01e1\u01e3\7\n\2\2\u01e2\u01d5\3\2\2\2\u01e2\u01d6\3\2"+ "\2\2\u01e3\u01e4\3\2\2\2\u01e4\u01e7\79\2\2\u01e5\u01e8\5\f\7\2\u01e6"+ "\u01e8\5\36\20\2\u01e7\u01e5\3\2\2\2\u01e7\u01e6\3\2\2\2\u01e8=\3\2\2"+ "\2\u01e9\u01eb\5\26\f\2\u01ea\u01e9\3\2\2\2\u01ea\u01eb\3\2\2\2\u01eb"+ "\u01ec\3\2\2\2\u01ec\u01ed\7T\2\2\u01ed?\3\2\2\2\u01ee\u01ef\7S\2\2\u01ef"+ "\u01f0\78\2\2\u01f0\u01fc\7T\2\2\u01f1\u01f2\5\26\f\2\u01f2\u01f3\78\2"+ "\2\u01f3\u01f4\7\30\2\2\u01f4\u01fc\3\2\2\2\u01f5\u01f6\7T\2\2\u01f6\u01f7"+ "\78\2\2\u01f7\u01fc\7T\2\2\u01f8\u01f9\7\34\2\2\u01f9\u01fa\78\2\2\u01fa"+ "\u01fc\7T\2\2\u01fb\u01ee\3\2\2\2\u01fb\u01f1\3\2\2\2\u01fb\u01f5\3\2"+ "\2\2\u01fb\u01f8\3\2\2\2\u01fcA\3\2\2\2\62EK^amu\u0082\u0086\u008a\u008f"+ "\u00b2\u00bb\u00bf\u00c5\u00ce\u00d8\u00e0\u00e6\u0124\u0126\u0136\u013c"+ "\u0144\u0148\u015c\u0161\u0165\u017a\u0180\u0183\u018f\u0192\u0195\u019b"+ "\u019e\u01a6\u01ad\u01b5\u01bd\u01c9\u01cc\u01d3\u01dc\u01df\u01e2\u01e7"+ "\u01ea\u01fb"; public static final ATN _ATN = new ATNDeserializer().deserialize(_serializedATN.toCharArray()); static { _decisionToDFA = new DFA[_ATN.getNumberOfDecisions()]; for (int i = 0; i < _ATN.getNumberOfDecisions(); i++) { _decisionToDFA[i] = new DFA(_ATN.getDecisionState(i), i); } } }