diff options
Diffstat (limited to 'src/Python3Parser.java')
-rw-r--r-- | src/Python3Parser.java | 3110 |
1 files changed, 3110 insertions, 0 deletions
diff --git a/src/Python3Parser.java b/src/Python3Parser.java new file mode 100644 index 0000000..99dab31 --- /dev/null +++ b/src/Python3Parser.java @@ -0,0 +1,3110 @@ +// Generated from src/Python3Parser.g4 by ANTLR 4.13.1 +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", "CheckReturnValue"}) +public class Python3Parser extends Python3ParserBase { + static { RuntimeMetaData.checkVersion("4.13.1", RuntimeMetaData.VERSION); } + + protected static final DFA[] _decisionToDFA; + protected static final PredictionContextCache _sharedContextCache = + new PredictionContextCache(); + public static final int + INDENT=1, DEDENT=2, STRING=3, NUMBER=4, AND=5, AS=6, DEF=7, ELIF=8, ELSE=9, + FALSE=10, FOR=11, FROM=12, IF=13, IMPORT=14, IN=15, IS=16, NONE=17, NOT=18, + OR=19, RETURN=20, TRUE=21, UNDERSCORE=22, WHILE=23, NEWLINE=24, NAME=25, + DECIMAL_INTEGER=26, FLOAT_NUMBER=27, DOT=28, ELLIPSIS=29, STAR=30, OPEN_PAREN=31, + CLOSE_PAREN=32, COMMA=33, COLON=34, SEMI_COLON=35, POWER=36, ASSIGN=37, + OPEN_BRACK=38, CLOSE_BRACK=39, OR_OP=40, XOR=41, AND_OP=42, LEFT_SHIFT=43, + RIGHT_SHIFT=44, ADD=45, MINUS=46, DIV=47, MOD=48, IDIV=49, NOT_OP=50, + OPEN_BRACE=51, CLOSE_BRACE=52, LESS_THAN=53, GREATER_THAN=54, EQUALS=55, + GT_EQ=56, LT_EQ=57, NOT_EQ_1=58, NOT_EQ_2=59, AT=60, ARROW=61, ADD_ASSIGN=62, + SUB_ASSIGN=63, MULT_ASSIGN=64, AT_ASSIGN=65, DIV_ASSIGN=66, MOD_ASSIGN=67, + AND_ASSIGN=68, OR_ASSIGN=69, XOR_ASSIGN=70, LEFT_SHIFT_ASSIGN=71, RIGHT_SHIFT_ASSIGN=72, + POWER_ASSIGN=73, IDIV_ASSIGN=74, SKIP_=75, UNKNOWN_CHAR=76; + public static final int + RULE_root = 0, RULE_simple_stmts = 1, RULE_compound_stmt = 2, RULE_simple_stmt = 3, + RULE_assignment = 4, RULE_return_stmt = 5, RULE_import_stm = 6, RULE_dotted_name = 7, + RULE_funcdef = 8, RULE_paramlist = 9, RULE_paramdef = 10, RULE_augassign = 11, + RULE_if_stmt = 12, RULE_while_stmt = 13, RULE_for_stmt = 14, RULE_block = 15, + RULE_comp_op = 16, RULE_expr = 17, RULE_atom = 18, RULE_testlist_comp = 19, + RULE_trailer = 20, RULE_exprlist = 21, RULE_arglist = 22, RULE_argument = 23, + RULE_comp_iter = 24, RULE_comp_for = 25, RULE_comp_if = 26; + private static String[] makeRuleNames() { + return new String[] { + "root", "simple_stmts", "compound_stmt", "simple_stmt", "assignment", + "return_stmt", "import_stm", "dotted_name", "funcdef", "paramlist", "paramdef", + "augassign", "if_stmt", "while_stmt", "for_stmt", "block", "comp_op", + "expr", "atom", "testlist_comp", "trailer", "exprlist", "arglist", "argument", + "comp_iter", "comp_for", "comp_if" + }; + } + public static final String[] ruleNames = makeRuleNames(); + + private static String[] makeLiteralNames() { + return new String[] { + null, null, null, null, null, "'and'", "'as'", "'def'", "'elif'", "'else'", + "'False'", "'for'", "'from'", "'if'", "'import'", "'in'", "'is'", "'None'", + "'not'", "'or'", "'return'", "'True'", "'_'", "'while'", null, null, + null, null, "'.'", "'...'", "'*'", "'('", "')'", "','", "':'", "';'", + "'**'", "'='", "'['", "']'", "'|'", "'^'", "'&'", "'<<'", "'>>'", "'+'", + "'-'", "'/'", "'%'", "'//'", "'~'", "'{'", "'}'", "'<'", "'>'", "'=='", + "'>='", "'<='", "'<>'", "'!='", "'@'", "'->'", "'+='", "'-='", "'*='", + "'@='", "'/='", "'%='", "'&='", "'|='", "'^='", "'<<='", "'>>='", "'**='", + "'//='" + }; + } + private static final String[] _LITERAL_NAMES = makeLiteralNames(); + private static String[] makeSymbolicNames() { + return new String[] { + null, "INDENT", "DEDENT", "STRING", "NUMBER", "AND", "AS", "DEF", "ELIF", + "ELSE", "FALSE", "FOR", "FROM", "IF", "IMPORT", "IN", "IS", "NONE", "NOT", + "OR", "RETURN", "TRUE", "UNDERSCORE", "WHILE", "NEWLINE", "NAME", "DECIMAL_INTEGER", + "FLOAT_NUMBER", "DOT", "ELLIPSIS", "STAR", "OPEN_PAREN", "CLOSE_PAREN", + "COMMA", "COLON", "SEMI_COLON", "POWER", "ASSIGN", "OPEN_BRACK", "CLOSE_BRACK", + "OR_OP", "XOR", "AND_OP", "LEFT_SHIFT", "RIGHT_SHIFT", "ADD", "MINUS", + "DIV", "MOD", "IDIV", "NOT_OP", "OPEN_BRACE", "CLOSE_BRACE", "LESS_THAN", + "GREATER_THAN", "EQUALS", "GT_EQ", "LT_EQ", "NOT_EQ_1", "NOT_EQ_2", "AT", + "ARROW", "ADD_ASSIGN", "SUB_ASSIGN", "MULT_ASSIGN", "AT_ASSIGN", "DIV_ASSIGN", + "MOD_ASSIGN", "AND_ASSIGN", "OR_ASSIGN", "XOR_ASSIGN", "LEFT_SHIFT_ASSIGN", + "RIGHT_SHIFT_ASSIGN", "POWER_ASSIGN", "IDIV_ASSIGN", "SKIP_", "UNKNOWN_CHAR" + }; + } + private static final String[] _SYMBOLIC_NAMES = makeSymbolicNames(); + 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 "Python3Parser.g4"; } + + @Override + public String[] getRuleNames() { return ruleNames; } + + @Override + public String getSerializedATN() { return _serializedATN; } + + @Override + public ATN getATN() { return _ATN; } + + public Python3Parser(TokenStream input) { + super(input); + _interp = new ParserATNSimulator(this,_ATN,_decisionToDFA,_sharedContextCache); + } + + @SuppressWarnings("CheckReturnValue") + public static class RootContext extends ParserRuleContext { + public TerminalNode EOF() { return getToken(Python3Parser.EOF, 0); } + public List<TerminalNode> NEWLINE() { return getTokens(Python3Parser.NEWLINE); } + public TerminalNode NEWLINE(int i) { + return getToken(Python3Parser.NEWLINE, i); + } + public List<Simple_stmtsContext> simple_stmts() { + return getRuleContexts(Simple_stmtsContext.class); + } + public Simple_stmtsContext simple_stmts(int i) { + return getRuleContext(Simple_stmtsContext.class,i); + } + public List<Compound_stmtContext> compound_stmt() { + return getRuleContexts(Compound_stmtContext.class); + } + public Compound_stmtContext compound_stmt(int i) { + return getRuleContext(Compound_stmtContext.class,i); + } + public RootContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_root; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Python3ParserListener ) ((Python3ParserListener)listener).enterRoot(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Python3ParserListener ) ((Python3ParserListener)listener).exitRoot(this); + } + } + + public final RootContext root() throws RecognitionException { + RootContext _localctx = new RootContext(_ctx, getState()); + enterRule(_localctx, 0, RULE_root); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(57); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==NEWLINE) { + { + { + setState(54); + match(NEWLINE); + } + } + setState(59); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(64); + _errHandler.sync(this); + _la = _input.LA(1); + while ((((_la) & ~0x3f) == 0 && ((1L << _la) & 3483530444569752L) != 0)) { + { + setState(62); + _errHandler.sync(this); + switch (_input.LA(1)) { + case STRING: + case NUMBER: + case FALSE: + case FROM: + case IMPORT: + case NONE: + case NOT: + case RETURN: + case TRUE: + case NAME: + case ELLIPSIS: + case OPEN_PAREN: + case OPEN_BRACK: + case ADD: + case MINUS: + case NOT_OP: + case OPEN_BRACE: + { + setState(60); + simple_stmts(); + } + break; + case DEF: + case FOR: + case IF: + case WHILE: + { + setState(61); + compound_stmt(); + } + break; + default: + throw new NoViableAltException(this); + } + } + setState(66); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(67); + match(EOF); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class Simple_stmtsContext extends ParserRuleContext { + public List<Simple_stmtContext> simple_stmt() { + return getRuleContexts(Simple_stmtContext.class); + } + public Simple_stmtContext simple_stmt(int i) { + return getRuleContext(Simple_stmtContext.class,i); + } + public TerminalNode NEWLINE() { return getToken(Python3Parser.NEWLINE, 0); } + public List<TerminalNode> SEMI_COLON() { return getTokens(Python3Parser.SEMI_COLON); } + public TerminalNode SEMI_COLON(int i) { + return getToken(Python3Parser.SEMI_COLON, i); + } + public Simple_stmtsContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_simple_stmts; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Python3ParserListener ) ((Python3ParserListener)listener).enterSimple_stmts(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Python3ParserListener ) ((Python3ParserListener)listener).exitSimple_stmts(this); + } + } + + public final Simple_stmtsContext simple_stmts() throws RecognitionException { + Simple_stmtsContext _localctx = new Simple_stmtsContext(_ctx, getState()); + enterRule(_localctx, 2, RULE_simple_stmts); + int _la; + try { + int _alt; + enterOuterAlt(_localctx, 1); + { + setState(69); + simple_stmt(); + setState(74); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,3,_ctx); + while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + { + { + setState(70); + match(SEMI_COLON); + setState(71); + simple_stmt(); + } + } + } + setState(76); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,3,_ctx); + } + setState(78); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==SEMI_COLON) { + { + setState(77); + match(SEMI_COLON); + } + } + + setState(80); + match(NEWLINE); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class Compound_stmtContext extends ParserRuleContext { + public If_stmtContext if_stmt() { + return getRuleContext(If_stmtContext.class,0); + } + public While_stmtContext while_stmt() { + return getRuleContext(While_stmtContext.class,0); + } + public For_stmtContext for_stmt() { + return getRuleContext(For_stmtContext.class,0); + } + public FuncdefContext funcdef() { + return getRuleContext(FuncdefContext.class,0); + } + public Compound_stmtContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_compound_stmt; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Python3ParserListener ) ((Python3ParserListener)listener).enterCompound_stmt(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Python3ParserListener ) ((Python3ParserListener)listener).exitCompound_stmt(this); + } + } + + public final Compound_stmtContext compound_stmt() throws RecognitionException { + Compound_stmtContext _localctx = new Compound_stmtContext(_ctx, getState()); + enterRule(_localctx, 4, RULE_compound_stmt); + try { + setState(86); + _errHandler.sync(this); + switch (_input.LA(1)) { + case IF: + enterOuterAlt(_localctx, 1); + { + setState(82); + if_stmt(); + } + break; + case WHILE: + enterOuterAlt(_localctx, 2); + { + setState(83); + while_stmt(); + } + break; + case FOR: + enterOuterAlt(_localctx, 3); + { + setState(84); + for_stmt(); + } + break; + case DEF: + enterOuterAlt(_localctx, 4); + { + setState(85); + funcdef(); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class Simple_stmtContext extends ParserRuleContext { + public AssignmentContext assignment() { + return getRuleContext(AssignmentContext.class,0); + } + public ExprContext expr() { + return getRuleContext(ExprContext.class,0); + } + public Return_stmtContext return_stmt() { + return getRuleContext(Return_stmtContext.class,0); + } + public Import_stmContext import_stm() { + return getRuleContext(Import_stmContext.class,0); + } + public Simple_stmtContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_simple_stmt; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Python3ParserListener ) ((Python3ParserListener)listener).enterSimple_stmt(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Python3ParserListener ) ((Python3ParserListener)listener).exitSimple_stmt(this); + } + } + + public final Simple_stmtContext simple_stmt() throws RecognitionException { + Simple_stmtContext _localctx = new Simple_stmtContext(_ctx, getState()); + enterRule(_localctx, 6, RULE_simple_stmt); + try { + setState(92); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,6,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(88); + assignment(); + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(89); + expr(0); + } + break; + case 3: + enterOuterAlt(_localctx, 3); + { + setState(90); + return_stmt(); + } + break; + case 4: + enterOuterAlt(_localctx, 4); + { + setState(91); + import_stm(); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class AssignmentContext extends ParserRuleContext { + public List<ExprlistContext> exprlist() { + return getRuleContexts(ExprlistContext.class); + } + public ExprlistContext exprlist(int i) { + return getRuleContext(ExprlistContext.class,i); + } + public AugassignContext augassign() { + return getRuleContext(AugassignContext.class,0); + } + public AssignmentContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_assignment; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Python3ParserListener ) ((Python3ParserListener)listener).enterAssignment(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Python3ParserListener ) ((Python3ParserListener)listener).exitAssignment(this); + } + } + + public final AssignmentContext assignment() throws RecognitionException { + AssignmentContext _localctx = new AssignmentContext(_ctx, getState()); + enterRule(_localctx, 8, RULE_assignment); + try { + enterOuterAlt(_localctx, 1); + { + setState(94); + exprlist(); + setState(95); + augassign(); + setState(96); + exprlist(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class Return_stmtContext extends ParserRuleContext { + public TerminalNode RETURN() { return getToken(Python3Parser.RETURN, 0); } + public ExprlistContext exprlist() { + return getRuleContext(ExprlistContext.class,0); + } + public Return_stmtContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_return_stmt; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Python3ParserListener ) ((Python3ParserListener)listener).enterReturn_stmt(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Python3ParserListener ) ((Python3ParserListener)listener).exitReturn_stmt(this); + } + } + + public final Return_stmtContext return_stmt() throws RecognitionException { + Return_stmtContext _localctx = new Return_stmtContext(_ctx, getState()); + enterRule(_localctx, 10, RULE_return_stmt); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(98); + match(RETURN); + setState(100); + _errHandler.sync(this); + _la = _input.LA(1); + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & 3483530435101720L) != 0)) { + { + setState(99); + exprlist(); + } + } + + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class Import_stmContext extends ParserRuleContext { + public TerminalNode IMPORT() { return getToken(Python3Parser.IMPORT, 0); } + public Dotted_nameContext dotted_name() { + return getRuleContext(Dotted_nameContext.class,0); + } + public TerminalNode AS() { return getToken(Python3Parser.AS, 0); } + public List<TerminalNode> NAME() { return getTokens(Python3Parser.NAME); } + public TerminalNode NAME(int i) { + return getToken(Python3Parser.NAME, i); + } + public TerminalNode FROM() { return getToken(Python3Parser.FROM, 0); } + public TerminalNode STAR() { return getToken(Python3Parser.STAR, 0); } + public List<TerminalNode> COMMA() { return getTokens(Python3Parser.COMMA); } + public TerminalNode COMMA(int i) { + return getToken(Python3Parser.COMMA, i); + } + public Import_stmContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_import_stm; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Python3ParserListener ) ((Python3ParserListener)listener).enterImport_stm(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Python3ParserListener ) ((Python3ParserListener)listener).exitImport_stm(this); + } + } + + public final Import_stmContext import_stm() throws RecognitionException { + Import_stmContext _localctx = new Import_stmContext(_ctx, getState()); + enterRule(_localctx, 12, RULE_import_stm); + int _la; + try { + setState(122); + _errHandler.sync(this); + switch (_input.LA(1)) { + case IMPORT: + enterOuterAlt(_localctx, 1); + { + setState(102); + match(IMPORT); + setState(103); + dotted_name(); + setState(106); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==AS) { + { + setState(104); + match(AS); + setState(105); + match(NAME); + } + } + + } + break; + case FROM: + enterOuterAlt(_localctx, 2); + { + setState(108); + match(FROM); + setState(109); + dotted_name(); + setState(110); + match(IMPORT); + setState(120); + _errHandler.sync(this); + switch (_input.LA(1)) { + case NAME: + { + setState(111); + match(NAME); + setState(116); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==COMMA) { + { + { + setState(112); + match(COMMA); + setState(113); + match(NAME); + } + } + setState(118); + _errHandler.sync(this); + _la = _input.LA(1); + } + } + break; + case STAR: + { + setState(119); + match(STAR); + } + break; + default: + throw new NoViableAltException(this); + } + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class Dotted_nameContext extends ParserRuleContext { + public List<TerminalNode> NAME() { return getTokens(Python3Parser.NAME); } + public TerminalNode NAME(int i) { + return getToken(Python3Parser.NAME, i); + } + public List<TerminalNode> DOT() { return getTokens(Python3Parser.DOT); } + public TerminalNode DOT(int i) { + return getToken(Python3Parser.DOT, i); + } + public Dotted_nameContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_dotted_name; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Python3ParserListener ) ((Python3ParserListener)listener).enterDotted_name(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Python3ParserListener ) ((Python3ParserListener)listener).exitDotted_name(this); + } + } + + public final Dotted_nameContext dotted_name() throws RecognitionException { + Dotted_nameContext _localctx = new Dotted_nameContext(_ctx, getState()); + enterRule(_localctx, 14, RULE_dotted_name); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(124); + match(NAME); + setState(129); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==DOT) { + { + { + setState(125); + match(DOT); + setState(126); + match(NAME); + } + } + setState(131); + _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; + } + + @SuppressWarnings("CheckReturnValue") + public static class FuncdefContext extends ParserRuleContext { + public TerminalNode DEF() { return getToken(Python3Parser.DEF, 0); } + public TerminalNode NAME() { return getToken(Python3Parser.NAME, 0); } + public TerminalNode OPEN_PAREN() { return getToken(Python3Parser.OPEN_PAREN, 0); } + public TerminalNode CLOSE_PAREN() { return getToken(Python3Parser.CLOSE_PAREN, 0); } + public TerminalNode COLON() { return getToken(Python3Parser.COLON, 0); } + public BlockContext block() { + return getRuleContext(BlockContext.class,0); + } + public ParamlistContext paramlist() { + return getRuleContext(ParamlistContext.class,0); + } + public FuncdefContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_funcdef; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Python3ParserListener ) ((Python3ParserListener)listener).enterFuncdef(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Python3ParserListener ) ((Python3ParserListener)listener).exitFuncdef(this); + } + } + + public final FuncdefContext funcdef() throws RecognitionException { + FuncdefContext _localctx = new FuncdefContext(_ctx, getState()); + enterRule(_localctx, 16, RULE_funcdef); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(132); + match(DEF); + setState(133); + match(NAME); + setState(134); + match(OPEN_PAREN); + setState(136); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==NAME) { + { + setState(135); + paramlist(); + } + } + + setState(138); + match(CLOSE_PAREN); + setState(139); + match(COLON); + setState(140); + block(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class ParamlistContext extends ParserRuleContext { + public List<ParamdefContext> paramdef() { + return getRuleContexts(ParamdefContext.class); + } + public ParamdefContext paramdef(int i) { + return getRuleContext(ParamdefContext.class,i); + } + public List<TerminalNode> ASSIGN() { return getTokens(Python3Parser.ASSIGN); } + public TerminalNode ASSIGN(int i) { + return getToken(Python3Parser.ASSIGN, i); + } + public List<ExprContext> expr() { + return getRuleContexts(ExprContext.class); + } + public ExprContext expr(int i) { + return getRuleContext(ExprContext.class,i); + } + public List<TerminalNode> COMMA() { return getTokens(Python3Parser.COMMA); } + public TerminalNode COMMA(int i) { + return getToken(Python3Parser.COMMA, i); + } + public ParamlistContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_paramlist; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Python3ParserListener ) ((Python3ParserListener)listener).enterParamlist(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Python3ParserListener ) ((Python3ParserListener)listener).exitParamlist(this); + } + } + + public final ParamlistContext paramlist() throws RecognitionException { + ParamlistContext _localctx = new ParamlistContext(_ctx, getState()); + enterRule(_localctx, 18, RULE_paramlist); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(142); + paramdef(); + setState(145); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==ASSIGN) { + { + setState(143); + match(ASSIGN); + setState(144); + expr(0); + } + } + + setState(155); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==COMMA) { + { + { + setState(147); + match(COMMA); + setState(148); + paramdef(); + setState(151); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==ASSIGN) { + { + setState(149); + match(ASSIGN); + setState(150); + expr(0); + } + } + + } + } + setState(157); + _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; + } + + @SuppressWarnings("CheckReturnValue") + public static class ParamdefContext extends ParserRuleContext { + public TerminalNode NAME() { return getToken(Python3Parser.NAME, 0); } + public TerminalNode COLON() { return getToken(Python3Parser.COLON, 0); } + public ExprContext expr() { + return getRuleContext(ExprContext.class,0); + } + public ParamdefContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_paramdef; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Python3ParserListener ) ((Python3ParserListener)listener).enterParamdef(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Python3ParserListener ) ((Python3ParserListener)listener).exitParamdef(this); + } + } + + public final ParamdefContext paramdef() throws RecognitionException { + ParamdefContext _localctx = new ParamdefContext(_ctx, getState()); + enterRule(_localctx, 20, RULE_paramdef); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(158); + match(NAME); + setState(161); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==COLON) { + { + setState(159); + match(COLON); + setState(160); + expr(0); + } + } + + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class AugassignContext extends ParserRuleContext { + public TerminalNode ASSIGN() { return getToken(Python3Parser.ASSIGN, 0); } + public TerminalNode ADD_ASSIGN() { return getToken(Python3Parser.ADD_ASSIGN, 0); } + public TerminalNode SUB_ASSIGN() { return getToken(Python3Parser.SUB_ASSIGN, 0); } + public TerminalNode MULT_ASSIGN() { return getToken(Python3Parser.MULT_ASSIGN, 0); } + public TerminalNode AT_ASSIGN() { return getToken(Python3Parser.AT_ASSIGN, 0); } + public TerminalNode DIV_ASSIGN() { return getToken(Python3Parser.DIV_ASSIGN, 0); } + public TerminalNode MOD_ASSIGN() { return getToken(Python3Parser.MOD_ASSIGN, 0); } + public TerminalNode AND_ASSIGN() { return getToken(Python3Parser.AND_ASSIGN, 0); } + public TerminalNode OR_ASSIGN() { return getToken(Python3Parser.OR_ASSIGN, 0); } + public TerminalNode XOR_ASSIGN() { return getToken(Python3Parser.XOR_ASSIGN, 0); } + public TerminalNode LEFT_SHIFT_ASSIGN() { return getToken(Python3Parser.LEFT_SHIFT_ASSIGN, 0); } + public TerminalNode RIGHT_SHIFT_ASSIGN() { return getToken(Python3Parser.RIGHT_SHIFT_ASSIGN, 0); } + public TerminalNode POWER_ASSIGN() { return getToken(Python3Parser.POWER_ASSIGN, 0); } + public TerminalNode IDIV_ASSIGN() { return getToken(Python3Parser.IDIV_ASSIGN, 0); } + public AugassignContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_augassign; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Python3ParserListener ) ((Python3ParserListener)listener).enterAugassign(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Python3ParserListener ) ((Python3ParserListener)listener).exitAugassign(this); + } + } + + public final AugassignContext augassign() throws RecognitionException { + AugassignContext _localctx = new AugassignContext(_ctx, getState()); + enterRule(_localctx, 22, RULE_augassign); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(163); + _la = _input.LA(1); + if ( !(((((_la - 37)) & ~0x3f) == 0 && ((1L << (_la - 37)) & 274844352513L) != 0)) ) { + _errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class If_stmtContext extends ParserRuleContext { + public TerminalNode IF() { return getToken(Python3Parser.IF, 0); } + public List<ExprContext> expr() { + return getRuleContexts(ExprContext.class); + } + public ExprContext expr(int i) { + return getRuleContext(ExprContext.class,i); + } + public List<TerminalNode> COLON() { return getTokens(Python3Parser.COLON); } + public TerminalNode COLON(int i) { + return getToken(Python3Parser.COLON, i); + } + public List<BlockContext> block() { + return getRuleContexts(BlockContext.class); + } + public BlockContext block(int i) { + return getRuleContext(BlockContext.class,i); + } + public List<TerminalNode> ELIF() { return getTokens(Python3Parser.ELIF); } + public TerminalNode ELIF(int i) { + return getToken(Python3Parser.ELIF, i); + } + public TerminalNode ELSE() { return getToken(Python3Parser.ELSE, 0); } + public If_stmtContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_if_stmt; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Python3ParserListener ) ((Python3ParserListener)listener).enterIf_stmt(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Python3ParserListener ) ((Python3ParserListener)listener).exitIf_stmt(this); + } + } + + public final If_stmtContext if_stmt() throws RecognitionException { + If_stmtContext _localctx = new If_stmtContext(_ctx, getState()); + enterRule(_localctx, 24, RULE_if_stmt); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(165); + match(IF); + setState(166); + expr(0); + setState(167); + match(COLON); + setState(168); + block(); + setState(176); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==ELIF) { + { + { + setState(169); + match(ELIF); + setState(170); + expr(0); + setState(171); + match(COLON); + setState(172); + block(); + } + } + setState(178); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(182); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==ELSE) { + { + setState(179); + match(ELSE); + setState(180); + match(COLON); + setState(181); + block(); + } + } + + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class While_stmtContext extends ParserRuleContext { + public TerminalNode WHILE() { return getToken(Python3Parser.WHILE, 0); } + public ExprContext expr() { + return getRuleContext(ExprContext.class,0); + } + public List<TerminalNode> COLON() { return getTokens(Python3Parser.COLON); } + public TerminalNode COLON(int i) { + return getToken(Python3Parser.COLON, i); + } + public List<BlockContext> block() { + return getRuleContexts(BlockContext.class); + } + public BlockContext block(int i) { + return getRuleContext(BlockContext.class,i); + } + public TerminalNode ELSE() { return getToken(Python3Parser.ELSE, 0); } + public While_stmtContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_while_stmt; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Python3ParserListener ) ((Python3ParserListener)listener).enterWhile_stmt(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Python3ParserListener ) ((Python3ParserListener)listener).exitWhile_stmt(this); + } + } + + public final While_stmtContext while_stmt() throws RecognitionException { + While_stmtContext _localctx = new While_stmtContext(_ctx, getState()); + enterRule(_localctx, 26, RULE_while_stmt); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(184); + match(WHILE); + setState(185); + expr(0); + setState(186); + match(COLON); + setState(187); + block(); + setState(191); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==ELSE) { + { + setState(188); + match(ELSE); + setState(189); + match(COLON); + setState(190); + block(); + } + } + + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class For_stmtContext extends ParserRuleContext { + public TerminalNode FOR() { return getToken(Python3Parser.FOR, 0); } + public ExprlistContext exprlist() { + return getRuleContext(ExprlistContext.class,0); + } + public List<TerminalNode> COLON() { return getTokens(Python3Parser.COLON); } + public TerminalNode COLON(int i) { + return getToken(Python3Parser.COLON, i); + } + public List<BlockContext> block() { + return getRuleContexts(BlockContext.class); + } + public BlockContext block(int i) { + return getRuleContext(BlockContext.class,i); + } + public TerminalNode ELSE() { return getToken(Python3Parser.ELSE, 0); } + public For_stmtContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_for_stmt; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Python3ParserListener ) ((Python3ParserListener)listener).enterFor_stmt(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Python3ParserListener ) ((Python3ParserListener)listener).exitFor_stmt(this); + } + } + + public final For_stmtContext for_stmt() throws RecognitionException { + For_stmtContext _localctx = new For_stmtContext(_ctx, getState()); + enterRule(_localctx, 28, RULE_for_stmt); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(193); + match(FOR); + setState(194); + exprlist(); + setState(195); + match(COLON); + setState(196); + block(); + setState(200); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==ELSE) { + { + setState(197); + match(ELSE); + setState(198); + match(COLON); + setState(199); + block(); + } + } + + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class BlockContext extends ParserRuleContext { + public List<Simple_stmtsContext> simple_stmts() { + return getRuleContexts(Simple_stmtsContext.class); + } + public Simple_stmtsContext simple_stmts(int i) { + return getRuleContext(Simple_stmtsContext.class,i); + } + public TerminalNode NEWLINE() { return getToken(Python3Parser.NEWLINE, 0); } + public TerminalNode INDENT() { return getToken(Python3Parser.INDENT, 0); } + public TerminalNode DEDENT() { return getToken(Python3Parser.DEDENT, 0); } + public List<Compound_stmtContext> compound_stmt() { + return getRuleContexts(Compound_stmtContext.class); + } + public Compound_stmtContext compound_stmt(int i) { + return getRuleContext(Compound_stmtContext.class,i); + } + public BlockContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_block; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Python3ParserListener ) ((Python3ParserListener)listener).enterBlock(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Python3ParserListener ) ((Python3ParserListener)listener).exitBlock(this); + } + } + + public final BlockContext block() throws RecognitionException { + BlockContext _localctx = new BlockContext(_ctx, getState()); + enterRule(_localctx, 30, RULE_block); + int _la; + try { + setState(213); + _errHandler.sync(this); + switch (_input.LA(1)) { + case STRING: + case NUMBER: + case FALSE: + case FROM: + case IMPORT: + case NONE: + case NOT: + case RETURN: + case TRUE: + case NAME: + case ELLIPSIS: + case OPEN_PAREN: + case OPEN_BRACK: + case ADD: + case MINUS: + case NOT_OP: + case OPEN_BRACE: + enterOuterAlt(_localctx, 1); + { + setState(202); + simple_stmts(); + } + break; + case NEWLINE: + enterOuterAlt(_localctx, 2); + { + setState(203); + match(NEWLINE); + setState(204); + match(INDENT); + setState(207); + _errHandler.sync(this); + _la = _input.LA(1); + do { + { + setState(207); + _errHandler.sync(this); + switch (_input.LA(1)) { + case STRING: + case NUMBER: + case FALSE: + case FROM: + case IMPORT: + case NONE: + case NOT: + case RETURN: + case TRUE: + case NAME: + case ELLIPSIS: + case OPEN_PAREN: + case OPEN_BRACK: + case ADD: + case MINUS: + case NOT_OP: + case OPEN_BRACE: + { + setState(205); + simple_stmts(); + } + break; + case DEF: + case FOR: + case IF: + case WHILE: + { + setState(206); + compound_stmt(); + } + break; + default: + throw new NoViableAltException(this); + } + } + setState(209); + _errHandler.sync(this); + _la = _input.LA(1); + } while ( (((_la) & ~0x3f) == 0 && ((1L << _la) & 3483530444569752L) != 0) ); + setState(211); + match(DEDENT); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class Comp_opContext extends ParserRuleContext { + public TerminalNode LESS_THAN() { return getToken(Python3Parser.LESS_THAN, 0); } + public TerminalNode GREATER_THAN() { return getToken(Python3Parser.GREATER_THAN, 0); } + public TerminalNode EQUALS() { return getToken(Python3Parser.EQUALS, 0); } + public TerminalNode GT_EQ() { return getToken(Python3Parser.GT_EQ, 0); } + public TerminalNode LT_EQ() { return getToken(Python3Parser.LT_EQ, 0); } + public TerminalNode NOT_EQ_1() { return getToken(Python3Parser.NOT_EQ_1, 0); } + public TerminalNode NOT_EQ_2() { return getToken(Python3Parser.NOT_EQ_2, 0); } + public TerminalNode IN() { return getToken(Python3Parser.IN, 0); } + public TerminalNode NOT() { return getToken(Python3Parser.NOT, 0); } + public TerminalNode IS() { return getToken(Python3Parser.IS, 0); } + public Comp_opContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_comp_op; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Python3ParserListener ) ((Python3ParserListener)listener).enterComp_op(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Python3ParserListener ) ((Python3ParserListener)listener).exitComp_op(this); + } + } + + public final Comp_opContext comp_op() throws RecognitionException { + Comp_opContext _localctx = new Comp_opContext(_ctx, getState()); + enterRule(_localctx, 32, RULE_comp_op); + try { + setState(228); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,25,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(215); + match(LESS_THAN); + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(216); + match(GREATER_THAN); + } + break; + case 3: + enterOuterAlt(_localctx, 3); + { + setState(217); + match(EQUALS); + } + break; + case 4: + enterOuterAlt(_localctx, 4); + { + setState(218); + match(GT_EQ); + } + break; + case 5: + enterOuterAlt(_localctx, 5); + { + setState(219); + match(LT_EQ); + } + break; + case 6: + enterOuterAlt(_localctx, 6); + { + setState(220); + match(NOT_EQ_1); + } + break; + case 7: + enterOuterAlt(_localctx, 7); + { + setState(221); + match(NOT_EQ_2); + } + break; + case 8: + enterOuterAlt(_localctx, 8); + { + setState(222); + match(IN); + } + break; + case 9: + enterOuterAlt(_localctx, 9); + { + setState(223); + match(NOT); + setState(224); + match(IN); + } + break; + case 10: + enterOuterAlt(_localctx, 10); + { + setState(225); + match(IS); + } + break; + case 11: + enterOuterAlt(_localctx, 11); + { + setState(226); + match(IS); + setState(227); + match(NOT); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class ExprContext extends ParserRuleContext { + public AtomContext atom() { + return getRuleContext(AtomContext.class,0); + } + public List<TrailerContext> trailer() { + return getRuleContexts(TrailerContext.class); + } + public TrailerContext trailer(int i) { + return getRuleContext(TrailerContext.class,i); + } + public List<ExprContext> expr() { + return getRuleContexts(ExprContext.class); + } + public ExprContext expr(int i) { + return getRuleContext(ExprContext.class,i); + } + public List<TerminalNode> ADD() { return getTokens(Python3Parser.ADD); } + public TerminalNode ADD(int i) { + return getToken(Python3Parser.ADD, i); + } + public List<TerminalNode> MINUS() { return getTokens(Python3Parser.MINUS); } + public TerminalNode MINUS(int i) { + return getToken(Python3Parser.MINUS, i); + } + public List<TerminalNode> NOT_OP() { return getTokens(Python3Parser.NOT_OP); } + public TerminalNode NOT_OP(int i) { + return getToken(Python3Parser.NOT_OP, i); + } + public TerminalNode NOT() { return getToken(Python3Parser.NOT, 0); } + public TerminalNode POWER() { return getToken(Python3Parser.POWER, 0); } + public TerminalNode STAR() { return getToken(Python3Parser.STAR, 0); } + public TerminalNode AT() { return getToken(Python3Parser.AT, 0); } + public TerminalNode DIV() { return getToken(Python3Parser.DIV, 0); } + public TerminalNode MOD() { return getToken(Python3Parser.MOD, 0); } + public TerminalNode IDIV() { return getToken(Python3Parser.IDIV, 0); } + public TerminalNode LEFT_SHIFT() { return getToken(Python3Parser.LEFT_SHIFT, 0); } + public TerminalNode RIGHT_SHIFT() { return getToken(Python3Parser.RIGHT_SHIFT, 0); } + public TerminalNode AND_OP() { return getToken(Python3Parser.AND_OP, 0); } + public TerminalNode XOR() { return getToken(Python3Parser.XOR, 0); } + public TerminalNode OR_OP() { return getToken(Python3Parser.OR_OP, 0); } + public Comp_opContext comp_op() { + return getRuleContext(Comp_opContext.class,0); + } + public TerminalNode AND() { return getToken(Python3Parser.AND, 0); } + public TerminalNode OR() { return getToken(Python3Parser.OR, 0); } + public TerminalNode IF() { return getToken(Python3Parser.IF, 0); } + public TerminalNode ELSE() { return getToken(Python3Parser.ELSE, 0); } + public ExprContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_expr; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Python3ParserListener ) ((Python3ParserListener)listener).enterExpr(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Python3ParserListener ) ((Python3ParserListener)listener).exitExpr(this); + } + } + + public final ExprContext expr() throws RecognitionException { + return expr(0); + } + + private ExprContext expr(int _p) throws RecognitionException { + ParserRuleContext _parentctx = _ctx; + int _parentState = getState(); + ExprContext _localctx = new ExprContext(_ctx, _parentState); + ExprContext _prevctx = _localctx; + int _startState = 34; + enterRecursionRule(_localctx, 34, RULE_expr, _p); + int _la; + try { + int _alt; + enterOuterAlt(_localctx, 1); + { + setState(246); + _errHandler.sync(this); + switch (_input.LA(1)) { + case STRING: + case NUMBER: + case FALSE: + case NONE: + case TRUE: + case NAME: + case ELLIPSIS: + case OPEN_PAREN: + case OPEN_BRACK: + case OPEN_BRACE: + { + setState(231); + atom(); + setState(235); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,26,_ctx); + while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + { + { + setState(232); + trailer(); + } + } + } + setState(237); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,26,_ctx); + } + } + break; + case ADD: + case MINUS: + case NOT_OP: + { + setState(239); + _errHandler.sync(this); + _alt = 1; + do { + switch (_alt) { + case 1: + { + { + setState(238); + _la = _input.LA(1); + if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & 1231453023109120L) != 0)) ) { + _errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + } + } + break; + default: + throw new NoViableAltException(this); + } + setState(241); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,27,_ctx); + } while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ); + setState(243); + expr(12); + } + break; + case NOT: + { + setState(244); + match(NOT); + setState(245); + expr(5); + } + break; + default: + throw new NoViableAltException(this); + } + _ctx.stop = _input.LT(-1); + setState(287); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,30,_ctx); + while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + if ( _parseListeners!=null ) triggerExitRuleEvent(); + _prevctx = _localctx; + { + setState(285); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,29,_ctx) ) { + case 1: + { + _localctx = new ExprContext(_parentctx, _parentState); + pushNewRecursionContext(_localctx, _startState, RULE_expr); + setState(248); + if (!(precpred(_ctx, 13))) throw new FailedPredicateException(this, "precpred(_ctx, 13)"); + setState(249); + match(POWER); + setState(250); + expr(14); + } + break; + case 2: + { + _localctx = new ExprContext(_parentctx, _parentState); + pushNewRecursionContext(_localctx, _startState, RULE_expr); + setState(251); + if (!(precpred(_ctx, 11))) throw new FailedPredicateException(this, "precpred(_ctx, 11)"); + setState(252); + _la = _input.LA(1); + if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & 1153906668099076096L) != 0)) ) { + _errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + setState(253); + expr(12); + } + break; + case 3: + { + _localctx = new ExprContext(_parentctx, _parentState); + pushNewRecursionContext(_localctx, _startState, RULE_expr); + setState(254); + if (!(precpred(_ctx, 10))) throw new FailedPredicateException(this, "precpred(_ctx, 10)"); + setState(255); + _la = _input.LA(1); + if ( !(_la==ADD || _la==MINUS) ) { + _errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + setState(256); + expr(11); + } + break; + case 4: + { + _localctx = new ExprContext(_parentctx, _parentState); + pushNewRecursionContext(_localctx, _startState, RULE_expr); + setState(257); + if (!(precpred(_ctx, 9))) throw new FailedPredicateException(this, "precpred(_ctx, 9)"); + setState(258); + _la = _input.LA(1); + if ( !(_la==LEFT_SHIFT || _la==RIGHT_SHIFT) ) { + _errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + setState(259); + expr(10); + } + break; + case 5: + { + _localctx = new ExprContext(_parentctx, _parentState); + pushNewRecursionContext(_localctx, _startState, RULE_expr); + setState(260); + if (!(precpred(_ctx, 8))) throw new FailedPredicateException(this, "precpred(_ctx, 8)"); + setState(261); + match(AND_OP); + setState(262); + expr(9); + } + break; + case 6: + { + _localctx = new ExprContext(_parentctx, _parentState); + pushNewRecursionContext(_localctx, _startState, RULE_expr); + setState(263); + if (!(precpred(_ctx, 7))) throw new FailedPredicateException(this, "precpred(_ctx, 7)"); + setState(264); + match(XOR); + setState(265); + expr(8); + } + break; + case 7: + { + _localctx = new ExprContext(_parentctx, _parentState); + pushNewRecursionContext(_localctx, _startState, RULE_expr); + setState(266); + if (!(precpred(_ctx, 6))) throw new FailedPredicateException(this, "precpred(_ctx, 6)"); + setState(267); + match(OR_OP); + setState(268); + expr(7); + } + break; + case 8: + { + _localctx = new ExprContext(_parentctx, _parentState); + pushNewRecursionContext(_localctx, _startState, RULE_expr); + setState(269); + if (!(precpred(_ctx, 4))) throw new FailedPredicateException(this, "precpred(_ctx, 4)"); + setState(270); + comp_op(); + setState(271); + expr(5); + } + break; + case 9: + { + _localctx = new ExprContext(_parentctx, _parentState); + pushNewRecursionContext(_localctx, _startState, RULE_expr); + setState(273); + if (!(precpred(_ctx, 3))) throw new FailedPredicateException(this, "precpred(_ctx, 3)"); + setState(274); + match(AND); + setState(275); + expr(4); + } + break; + case 10: + { + _localctx = new ExprContext(_parentctx, _parentState); + pushNewRecursionContext(_localctx, _startState, RULE_expr); + setState(276); + if (!(precpred(_ctx, 2))) throw new FailedPredicateException(this, "precpred(_ctx, 2)"); + setState(277); + match(OR); + setState(278); + expr(3); + } + break; + case 11: + { + _localctx = new ExprContext(_parentctx, _parentState); + pushNewRecursionContext(_localctx, _startState, RULE_expr); + setState(279); + if (!(precpred(_ctx, 1))) throw new FailedPredicateException(this, "precpred(_ctx, 1)"); + setState(280); + match(IF); + setState(281); + expr(0); + setState(282); + match(ELSE); + setState(283); + expr(2); + } + break; + } + } + } + setState(289); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,30,_ctx); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + unrollRecursionContexts(_parentctx); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class AtomContext extends ParserRuleContext { + public TerminalNode OPEN_PAREN() { return getToken(Python3Parser.OPEN_PAREN, 0); } + public TerminalNode CLOSE_PAREN() { return getToken(Python3Parser.CLOSE_PAREN, 0); } + public Testlist_compContext testlist_comp() { + return getRuleContext(Testlist_compContext.class,0); + } + public TerminalNode OPEN_BRACK() { return getToken(Python3Parser.OPEN_BRACK, 0); } + public TerminalNode CLOSE_BRACK() { return getToken(Python3Parser.CLOSE_BRACK, 0); } + public TerminalNode OPEN_BRACE() { return getToken(Python3Parser.OPEN_BRACE, 0); } + public TerminalNode CLOSE_BRACE() { return getToken(Python3Parser.CLOSE_BRACE, 0); } + public TerminalNode NAME() { return getToken(Python3Parser.NAME, 0); } + public TerminalNode NUMBER() { return getToken(Python3Parser.NUMBER, 0); } + public List<TerminalNode> STRING() { return getTokens(Python3Parser.STRING); } + public TerminalNode STRING(int i) { + return getToken(Python3Parser.STRING, i); + } + public TerminalNode ELLIPSIS() { return getToken(Python3Parser.ELLIPSIS, 0); } + public TerminalNode NONE() { return getToken(Python3Parser.NONE, 0); } + public TerminalNode TRUE() { return getToken(Python3Parser.TRUE, 0); } + public TerminalNode FALSE() { return getToken(Python3Parser.FALSE, 0); } + public AtomContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_atom; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Python3ParserListener ) ((Python3ParserListener)listener).enterAtom(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Python3ParserListener ) ((Python3ParserListener)listener).exitAtom(this); + } + } + + public final AtomContext atom() throws RecognitionException { + AtomContext _localctx = new AtomContext(_ctx, getState()); + enterRule(_localctx, 36, RULE_atom); + int _la; + try { + int _alt; + setState(316); + _errHandler.sync(this); + switch (_input.LA(1)) { + case OPEN_PAREN: + enterOuterAlt(_localctx, 1); + { + setState(290); + match(OPEN_PAREN); + setState(292); + _errHandler.sync(this); + _la = _input.LA(1); + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & 3483530435101720L) != 0)) { + { + setState(291); + testlist_comp(); + } + } + + setState(294); + match(CLOSE_PAREN); + } + break; + case OPEN_BRACK: + enterOuterAlt(_localctx, 2); + { + setState(295); + match(OPEN_BRACK); + setState(297); + _errHandler.sync(this); + _la = _input.LA(1); + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & 3483530435101720L) != 0)) { + { + setState(296); + testlist_comp(); + } + } + + setState(299); + match(CLOSE_BRACK); + } + break; + case OPEN_BRACE: + enterOuterAlt(_localctx, 3); + { + setState(300); + match(OPEN_BRACE); + setState(302); + _errHandler.sync(this); + _la = _input.LA(1); + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & 3483530435101720L) != 0)) { + { + setState(301); + testlist_comp(); + } + } + + setState(304); + match(CLOSE_BRACE); + } + break; + case NAME: + enterOuterAlt(_localctx, 4); + { + setState(305); + match(NAME); + } + break; + case NUMBER: + enterOuterAlt(_localctx, 5); + { + setState(306); + match(NUMBER); + } + break; + case STRING: + enterOuterAlt(_localctx, 6); + { + setState(308); + _errHandler.sync(this); + _alt = 1; + do { + switch (_alt) { + case 1: + { + { + setState(307); + match(STRING); + } + } + break; + default: + throw new NoViableAltException(this); + } + setState(310); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,34,_ctx); + } while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ); + } + break; + case ELLIPSIS: + enterOuterAlt(_localctx, 7); + { + setState(312); + match(ELLIPSIS); + } + break; + case NONE: + enterOuterAlt(_localctx, 8); + { + setState(313); + match(NONE); + } + break; + case TRUE: + enterOuterAlt(_localctx, 9); + { + setState(314); + match(TRUE); + } + break; + case FALSE: + enterOuterAlt(_localctx, 10); + { + setState(315); + match(FALSE); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class Testlist_compContext extends ParserRuleContext { + public List<ExprContext> expr() { + return getRuleContexts(ExprContext.class); + } + public ExprContext expr(int i) { + return getRuleContext(ExprContext.class,i); + } + public Comp_forContext comp_for() { + return getRuleContext(Comp_forContext.class,0); + } + public List<TerminalNode> COMMA() { return getTokens(Python3Parser.COMMA); } + public TerminalNode COMMA(int i) { + return getToken(Python3Parser.COMMA, i); + } + public Testlist_compContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_testlist_comp; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Python3ParserListener ) ((Python3ParserListener)listener).enterTestlist_comp(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Python3ParserListener ) ((Python3ParserListener)listener).exitTestlist_comp(this); + } + } + + public final Testlist_compContext testlist_comp() throws RecognitionException { + Testlist_compContext _localctx = new Testlist_compContext(_ctx, getState()); + enterRule(_localctx, 38, RULE_testlist_comp); + int _la; + try { + int _alt; + enterOuterAlt(_localctx, 1); + { + setState(318); + expr(0); + setState(330); + _errHandler.sync(this); + switch (_input.LA(1)) { + case FOR: + { + setState(319); + comp_for(); + } + break; + case CLOSE_PAREN: + case COMMA: + case CLOSE_BRACK: + case CLOSE_BRACE: + { + setState(324); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,36,_ctx); + while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + { + { + setState(320); + match(COMMA); + setState(321); + expr(0); + } + } + } + setState(326); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,36,_ctx); + } + setState(328); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==COMMA) { + { + setState(327); + match(COMMA); + } + } + + } + break; + default: + throw new NoViableAltException(this); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class TrailerContext extends ParserRuleContext { + public TerminalNode OPEN_PAREN() { return getToken(Python3Parser.OPEN_PAREN, 0); } + public TerminalNode CLOSE_PAREN() { return getToken(Python3Parser.CLOSE_PAREN, 0); } + public ArglistContext arglist() { + return getRuleContext(ArglistContext.class,0); + } + public TerminalNode OPEN_BRACK() { return getToken(Python3Parser.OPEN_BRACK, 0); } + public List<ExprContext> expr() { + return getRuleContexts(ExprContext.class); + } + public ExprContext expr(int i) { + return getRuleContext(ExprContext.class,i); + } + public TerminalNode CLOSE_BRACK() { return getToken(Python3Parser.CLOSE_BRACK, 0); } + public List<TerminalNode> COMMA() { return getTokens(Python3Parser.COMMA); } + public TerminalNode COMMA(int i) { + return getToken(Python3Parser.COMMA, i); + } + public TerminalNode DOT() { return getToken(Python3Parser.DOT, 0); } + public TerminalNode NAME() { return getToken(Python3Parser.NAME, 0); } + public List<TerminalNode> COLON() { return getTokens(Python3Parser.COLON); } + public TerminalNode COLON(int i) { + return getToken(Python3Parser.COLON, i); + } + public TrailerContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_trailer; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Python3ParserListener ) ((Python3ParserListener)listener).enterTrailer(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Python3ParserListener ) ((Python3ParserListener)listener).exitTrailer(this); + } + } + + public final TrailerContext trailer() throws RecognitionException { + TrailerContext _localctx = new TrailerContext(_ctx, getState()); + enterRule(_localctx, 40, RULE_trailer); + int _la; + try { + int _alt; + setState(368); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,46,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(332); + match(OPEN_PAREN); + setState(334); + _errHandler.sync(this); + _la = _input.LA(1); + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & 3483530435101720L) != 0)) { + { + setState(333); + arglist(); + } + } + + setState(336); + match(CLOSE_PAREN); + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(337); + match(OPEN_BRACK); + setState(338); + expr(0); + setState(343); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,40,_ctx); + while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + { + { + setState(339); + match(COMMA); + setState(340); + expr(0); + } + } + } + setState(345); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,40,_ctx); + } + setState(347); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==COMMA) { + { + setState(346); + match(COMMA); + } + } + + setState(349); + match(CLOSE_BRACK); + } + break; + case 3: + enterOuterAlt(_localctx, 3); + { + setState(351); + match(DOT); + setState(352); + match(NAME); + } + break; + case 4: + enterOuterAlt(_localctx, 4); + { + setState(353); + match(OPEN_BRACK); + setState(355); + _errHandler.sync(this); + _la = _input.LA(1); + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & 3483530435101720L) != 0)) { + { + setState(354); + expr(0); + } + } + + setState(357); + match(COLON); + setState(359); + _errHandler.sync(this); + _la = _input.LA(1); + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & 3483530435101720L) != 0)) { + { + setState(358); + expr(0); + } + } + + setState(365); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==COLON) { + { + setState(361); + match(COLON); + setState(363); + _errHandler.sync(this); + _la = _input.LA(1); + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & 3483530435101720L) != 0)) { + { + setState(362); + expr(0); + } + } + + } + } + + setState(367); + match(CLOSE_BRACK); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class ExprlistContext extends ParserRuleContext { + public List<ExprContext> expr() { + return getRuleContexts(ExprContext.class); + } + public ExprContext expr(int i) { + return getRuleContext(ExprContext.class,i); + } + public List<TerminalNode> COMMA() { return getTokens(Python3Parser.COMMA); } + public TerminalNode COMMA(int i) { + return getToken(Python3Parser.COMMA, i); + } + public ExprlistContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_exprlist; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Python3ParserListener ) ((Python3ParserListener)listener).enterExprlist(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Python3ParserListener ) ((Python3ParserListener)listener).exitExprlist(this); + } + } + + public final ExprlistContext exprlist() throws RecognitionException { + ExprlistContext _localctx = new ExprlistContext(_ctx, getState()); + enterRule(_localctx, 42, RULE_exprlist); + int _la; + try { + int _alt; + enterOuterAlt(_localctx, 1); + { + setState(370); + expr(0); + setState(375); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,47,_ctx); + while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + { + { + setState(371); + match(COMMA); + setState(372); + expr(0); + } + } + } + setState(377); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,47,_ctx); + } + setState(379); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==COMMA) { + { + setState(378); + match(COMMA); + } + } + + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class ArglistContext extends ParserRuleContext { + public List<ArgumentContext> argument() { + return getRuleContexts(ArgumentContext.class); + } + public ArgumentContext argument(int i) { + return getRuleContext(ArgumentContext.class,i); + } + public List<TerminalNode> COMMA() { return getTokens(Python3Parser.COMMA); } + public TerminalNode COMMA(int i) { + return getToken(Python3Parser.COMMA, i); + } + public ArglistContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_arglist; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Python3ParserListener ) ((Python3ParserListener)listener).enterArglist(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Python3ParserListener ) ((Python3ParserListener)listener).exitArglist(this); + } + } + + public final ArglistContext arglist() throws RecognitionException { + ArglistContext _localctx = new ArglistContext(_ctx, getState()); + enterRule(_localctx, 44, RULE_arglist); + int _la; + try { + int _alt; + enterOuterAlt(_localctx, 1); + { + setState(381); + argument(); + setState(386); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,49,_ctx); + while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + { + { + setState(382); + match(COMMA); + setState(383); + argument(); + } + } + } + setState(388); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,49,_ctx); + } + setState(390); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==COMMA) { + { + setState(389); + match(COMMA); + } + } + + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class ArgumentContext extends ParserRuleContext { + public List<ExprContext> expr() { + return getRuleContexts(ExprContext.class); + } + public ExprContext expr(int i) { + return getRuleContext(ExprContext.class,i); + } + public Comp_forContext comp_for() { + return getRuleContext(Comp_forContext.class,0); + } + public TerminalNode ASSIGN() { return getToken(Python3Parser.ASSIGN, 0); } + public ArgumentContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_argument; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Python3ParserListener ) ((Python3ParserListener)listener).enterArgument(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Python3ParserListener ) ((Python3ParserListener)listener).exitArgument(this); + } + } + + public final ArgumentContext argument() throws RecognitionException { + ArgumentContext _localctx = new ArgumentContext(_ctx, getState()); + enterRule(_localctx, 46, RULE_argument); + int _la; + try { + setState(400); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,52,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(392); + expr(0); + setState(394); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==FOR) { + { + setState(393); + comp_for(); + } + } + + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(396); + expr(0); + setState(397); + match(ASSIGN); + setState(398); + expr(0); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class Comp_iterContext extends ParserRuleContext { + public Comp_forContext comp_for() { + return getRuleContext(Comp_forContext.class,0); + } + public Comp_ifContext comp_if() { + return getRuleContext(Comp_ifContext.class,0); + } + public Comp_iterContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_comp_iter; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Python3ParserListener ) ((Python3ParserListener)listener).enterComp_iter(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Python3ParserListener ) ((Python3ParserListener)listener).exitComp_iter(this); + } + } + + public final Comp_iterContext comp_iter() throws RecognitionException { + Comp_iterContext _localctx = new Comp_iterContext(_ctx, getState()); + enterRule(_localctx, 48, RULE_comp_iter); + try { + setState(404); + _errHandler.sync(this); + switch (_input.LA(1)) { + case FOR: + enterOuterAlt(_localctx, 1); + { + setState(402); + comp_for(); + } + break; + case IF: + enterOuterAlt(_localctx, 2); + { + setState(403); + comp_if(); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class Comp_forContext extends ParserRuleContext { + public TerminalNode FOR() { return getToken(Python3Parser.FOR, 0); } + public ExprlistContext exprlist() { + return getRuleContext(ExprlistContext.class,0); + } + public TerminalNode IN() { return getToken(Python3Parser.IN, 0); } + public ExprContext expr() { + return getRuleContext(ExprContext.class,0); + } + public Comp_iterContext comp_iter() { + return getRuleContext(Comp_iterContext.class,0); + } + public Comp_forContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_comp_for; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Python3ParserListener ) ((Python3ParserListener)listener).enterComp_for(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Python3ParserListener ) ((Python3ParserListener)listener).exitComp_for(this); + } + } + + public final Comp_forContext comp_for() throws RecognitionException { + Comp_forContext _localctx = new Comp_forContext(_ctx, getState()); + enterRule(_localctx, 50, RULE_comp_for); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(406); + match(FOR); + setState(407); + exprlist(); + setState(408); + match(IN); + setState(409); + expr(0); + setState(411); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==FOR || _la==IF) { + { + setState(410); + comp_iter(); + } + } + + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + @SuppressWarnings("CheckReturnValue") + public static class Comp_ifContext extends ParserRuleContext { + public TerminalNode IF() { return getToken(Python3Parser.IF, 0); } + public ExprContext expr() { + return getRuleContext(ExprContext.class,0); + } + public Comp_iterContext comp_iter() { + return getRuleContext(Comp_iterContext.class,0); + } + public Comp_ifContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_comp_if; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof Python3ParserListener ) ((Python3ParserListener)listener).enterComp_if(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof Python3ParserListener ) ((Python3ParserListener)listener).exitComp_if(this); + } + } + + public final Comp_ifContext comp_if() throws RecognitionException { + Comp_ifContext _localctx = new Comp_ifContext(_ctx, getState()); + enterRule(_localctx, 52, RULE_comp_if); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(413); + match(IF); + setState(414); + expr(0); + setState(416); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==FOR || _la==IF) { + { + setState(415); + comp_iter(); + } + } + + } + } + 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 17: + return expr_sempred((ExprContext)_localctx, predIndex); + } + return true; + } + private boolean expr_sempred(ExprContext _localctx, int predIndex) { + switch (predIndex) { + case 0: + return precpred(_ctx, 13); + case 1: + return precpred(_ctx, 11); + case 2: + return precpred(_ctx, 10); + case 3: + return precpred(_ctx, 9); + case 4: + return precpred(_ctx, 8); + case 5: + return precpred(_ctx, 7); + case 6: + return precpred(_ctx, 6); + case 7: + return precpred(_ctx, 4); + case 8: + return precpred(_ctx, 3); + case 9: + return precpred(_ctx, 2); + case 10: + return precpred(_ctx, 1); + } + return true; + } + + public static final String _serializedATN = + "\u0004\u0001L\u01a3\u0002\u0000\u0007\u0000\u0002\u0001\u0007\u0001\u0002"+ + "\u0002\u0007\u0002\u0002\u0003\u0007\u0003\u0002\u0004\u0007\u0004\u0002"+ + "\u0005\u0007\u0005\u0002\u0006\u0007\u0006\u0002\u0007\u0007\u0007\u0002"+ + "\b\u0007\b\u0002\t\u0007\t\u0002\n\u0007\n\u0002\u000b\u0007\u000b\u0002"+ + "\f\u0007\f\u0002\r\u0007\r\u0002\u000e\u0007\u000e\u0002\u000f\u0007\u000f"+ + "\u0002\u0010\u0007\u0010\u0002\u0011\u0007\u0011\u0002\u0012\u0007\u0012"+ + "\u0002\u0013\u0007\u0013\u0002\u0014\u0007\u0014\u0002\u0015\u0007\u0015"+ + "\u0002\u0016\u0007\u0016\u0002\u0017\u0007\u0017\u0002\u0018\u0007\u0018"+ + "\u0002\u0019\u0007\u0019\u0002\u001a\u0007\u001a\u0001\u0000\u0005\u0000"+ + "8\b\u0000\n\u0000\f\u0000;\t\u0000\u0001\u0000\u0001\u0000\u0005\u0000"+ + "?\b\u0000\n\u0000\f\u0000B\t\u0000\u0001\u0000\u0001\u0000\u0001\u0001"+ + "\u0001\u0001\u0001\u0001\u0005\u0001I\b\u0001\n\u0001\f\u0001L\t\u0001"+ + "\u0001\u0001\u0003\u0001O\b\u0001\u0001\u0001\u0001\u0001\u0001\u0002"+ + "\u0001\u0002\u0001\u0002\u0001\u0002\u0003\u0002W\b\u0002\u0001\u0003"+ + "\u0001\u0003\u0001\u0003\u0001\u0003\u0003\u0003]\b\u0003\u0001\u0004"+ + "\u0001\u0004\u0001\u0004\u0001\u0004\u0001\u0005\u0001\u0005\u0003\u0005"+ + "e\b\u0005\u0001\u0006\u0001\u0006\u0001\u0006\u0001\u0006\u0003\u0006"+ + "k\b\u0006\u0001\u0006\u0001\u0006\u0001\u0006\u0001\u0006\u0001\u0006"+ + "\u0001\u0006\u0005\u0006s\b\u0006\n\u0006\f\u0006v\t\u0006\u0001\u0006"+ + "\u0003\u0006y\b\u0006\u0003\u0006{\b\u0006\u0001\u0007\u0001\u0007\u0001"+ + "\u0007\u0005\u0007\u0080\b\u0007\n\u0007\f\u0007\u0083\t\u0007\u0001\b"+ + "\u0001\b\u0001\b\u0001\b\u0003\b\u0089\b\b\u0001\b\u0001\b\u0001\b\u0001"+ + "\b\u0001\t\u0001\t\u0001\t\u0003\t\u0092\b\t\u0001\t\u0001\t\u0001\t\u0001"+ + "\t\u0003\t\u0098\b\t\u0005\t\u009a\b\t\n\t\f\t\u009d\t\t\u0001\n\u0001"+ + "\n\u0001\n\u0003\n\u00a2\b\n\u0001\u000b\u0001\u000b\u0001\f\u0001\f\u0001"+ + "\f\u0001\f\u0001\f\u0001\f\u0001\f\u0001\f\u0001\f\u0005\f\u00af\b\f\n"+ + "\f\f\f\u00b2\t\f\u0001\f\u0001\f\u0001\f\u0003\f\u00b7\b\f\u0001\r\u0001"+ + "\r\u0001\r\u0001\r\u0001\r\u0001\r\u0001\r\u0003\r\u00c0\b\r\u0001\u000e"+ + "\u0001\u000e\u0001\u000e\u0001\u000e\u0001\u000e\u0001\u000e\u0001\u000e"+ + "\u0003\u000e\u00c9\b\u000e\u0001\u000f\u0001\u000f\u0001\u000f\u0001\u000f"+ + "\u0001\u000f\u0004\u000f\u00d0\b\u000f\u000b\u000f\f\u000f\u00d1\u0001"+ + "\u000f\u0001\u000f\u0003\u000f\u00d6\b\u000f\u0001\u0010\u0001\u0010\u0001"+ + "\u0010\u0001\u0010\u0001\u0010\u0001\u0010\u0001\u0010\u0001\u0010\u0001"+ + "\u0010\u0001\u0010\u0001\u0010\u0001\u0010\u0001\u0010\u0003\u0010\u00e5"+ + "\b\u0010\u0001\u0011\u0001\u0011\u0001\u0011\u0005\u0011\u00ea\b\u0011"+ + "\n\u0011\f\u0011\u00ed\t\u0011\u0001\u0011\u0004\u0011\u00f0\b\u0011\u000b"+ + "\u0011\f\u0011\u00f1\u0001\u0011\u0001\u0011\u0001\u0011\u0003\u0011\u00f7"+ + "\b\u0011\u0001\u0011\u0001\u0011\u0001\u0011\u0001\u0011\u0001\u0011\u0001"+ + "\u0011\u0001\u0011\u0001\u0011\u0001\u0011\u0001\u0011\u0001\u0011\u0001"+ + "\u0011\u0001\u0011\u0001\u0011\u0001\u0011\u0001\u0011\u0001\u0011\u0001"+ + "\u0011\u0001\u0011\u0001\u0011\u0001\u0011\u0001\u0011\u0001\u0011\u0001"+ + "\u0011\u0001\u0011\u0001\u0011\u0001\u0011\u0001\u0011\u0001\u0011\u0001"+ + "\u0011\u0001\u0011\u0001\u0011\u0001\u0011\u0001\u0011\u0001\u0011\u0001"+ + "\u0011\u0001\u0011\u0005\u0011\u011e\b\u0011\n\u0011\f\u0011\u0121\t\u0011"+ + "\u0001\u0012\u0001\u0012\u0003\u0012\u0125\b\u0012\u0001\u0012\u0001\u0012"+ + "\u0001\u0012\u0003\u0012\u012a\b\u0012\u0001\u0012\u0001\u0012\u0001\u0012"+ + "\u0003\u0012\u012f\b\u0012\u0001\u0012\u0001\u0012\u0001\u0012\u0001\u0012"+ + "\u0004\u0012\u0135\b\u0012\u000b\u0012\f\u0012\u0136\u0001\u0012\u0001"+ + "\u0012\u0001\u0012\u0001\u0012\u0003\u0012\u013d\b\u0012\u0001\u0013\u0001"+ + "\u0013\u0001\u0013\u0001\u0013\u0005\u0013\u0143\b\u0013\n\u0013\f\u0013"+ + "\u0146\t\u0013\u0001\u0013\u0003\u0013\u0149\b\u0013\u0003\u0013\u014b"+ + "\b\u0013\u0001\u0014\u0001\u0014\u0003\u0014\u014f\b\u0014\u0001\u0014"+ + "\u0001\u0014\u0001\u0014\u0001\u0014\u0001\u0014\u0005\u0014\u0156\b\u0014"+ + "\n\u0014\f\u0014\u0159\t\u0014\u0001\u0014\u0003\u0014\u015c\b\u0014\u0001"+ + "\u0014\u0001\u0014\u0001\u0014\u0001\u0014\u0001\u0014\u0001\u0014\u0003"+ + "\u0014\u0164\b\u0014\u0001\u0014\u0001\u0014\u0003\u0014\u0168\b\u0014"+ + "\u0001\u0014\u0001\u0014\u0003\u0014\u016c\b\u0014\u0003\u0014\u016e\b"+ + "\u0014\u0001\u0014\u0003\u0014\u0171\b\u0014\u0001\u0015\u0001\u0015\u0001"+ + "\u0015\u0005\u0015\u0176\b\u0015\n\u0015\f\u0015\u0179\t\u0015\u0001\u0015"+ + "\u0003\u0015\u017c\b\u0015\u0001\u0016\u0001\u0016\u0001\u0016\u0005\u0016"+ + "\u0181\b\u0016\n\u0016\f\u0016\u0184\t\u0016\u0001\u0016\u0003\u0016\u0187"+ + "\b\u0016\u0001\u0017\u0001\u0017\u0003\u0017\u018b\b\u0017\u0001\u0017"+ + "\u0001\u0017\u0001\u0017\u0001\u0017\u0003\u0017\u0191\b\u0017\u0001\u0018"+ + "\u0001\u0018\u0003\u0018\u0195\b\u0018\u0001\u0019\u0001\u0019\u0001\u0019"+ + "\u0001\u0019\u0001\u0019\u0003\u0019\u019c\b\u0019\u0001\u001a\u0001\u001a"+ + "\u0001\u001a\u0003\u001a\u01a1\b\u001a\u0001\u001a\u0000\u0001\"\u001b"+ + "\u0000\u0002\u0004\u0006\b\n\f\u000e\u0010\u0012\u0014\u0016\u0018\u001a"+ + "\u001c\u001e \"$&(*,.024\u0000\u0005\u0002\u0000%%>J\u0002\u0000-.22\u0003"+ + "\u0000\u001e\u001e/1<<\u0001\u0000-.\u0001\u0000+,\u01e0\u00009\u0001"+ + "\u0000\u0000\u0000\u0002E\u0001\u0000\u0000\u0000\u0004V\u0001\u0000\u0000"+ + "\u0000\u0006\\\u0001\u0000\u0000\u0000\b^\u0001\u0000\u0000\u0000\nb\u0001"+ + "\u0000\u0000\u0000\fz\u0001\u0000\u0000\u0000\u000e|\u0001\u0000\u0000"+ + "\u0000\u0010\u0084\u0001\u0000\u0000\u0000\u0012\u008e\u0001\u0000\u0000"+ + "\u0000\u0014\u009e\u0001\u0000\u0000\u0000\u0016\u00a3\u0001\u0000\u0000"+ + "\u0000\u0018\u00a5\u0001\u0000\u0000\u0000\u001a\u00b8\u0001\u0000\u0000"+ + "\u0000\u001c\u00c1\u0001\u0000\u0000\u0000\u001e\u00d5\u0001\u0000\u0000"+ + "\u0000 \u00e4\u0001\u0000\u0000\u0000\"\u00f6\u0001\u0000\u0000\u0000"+ + "$\u013c\u0001\u0000\u0000\u0000&\u013e\u0001\u0000\u0000\u0000(\u0170"+ + "\u0001\u0000\u0000\u0000*\u0172\u0001\u0000\u0000\u0000,\u017d\u0001\u0000"+ + "\u0000\u0000.\u0190\u0001\u0000\u0000\u00000\u0194\u0001\u0000\u0000\u0000"+ + "2\u0196\u0001\u0000\u0000\u00004\u019d\u0001\u0000\u0000\u000068\u0005"+ + "\u0018\u0000\u000076\u0001\u0000\u0000\u00008;\u0001\u0000\u0000\u0000"+ + "97\u0001\u0000\u0000\u00009:\u0001\u0000\u0000\u0000:@\u0001\u0000\u0000"+ + "\u0000;9\u0001\u0000\u0000\u0000<?\u0003\u0002\u0001\u0000=?\u0003\u0004"+ + "\u0002\u0000><\u0001\u0000\u0000\u0000>=\u0001\u0000\u0000\u0000?B\u0001"+ + "\u0000\u0000\u0000@>\u0001\u0000\u0000\u0000@A\u0001\u0000\u0000\u0000"+ + "AC\u0001\u0000\u0000\u0000B@\u0001\u0000\u0000\u0000CD\u0005\u0000\u0000"+ + "\u0001D\u0001\u0001\u0000\u0000\u0000EJ\u0003\u0006\u0003\u0000FG\u0005"+ + "#\u0000\u0000GI\u0003\u0006\u0003\u0000HF\u0001\u0000\u0000\u0000IL\u0001"+ + "\u0000\u0000\u0000JH\u0001\u0000\u0000\u0000JK\u0001\u0000\u0000\u0000"+ + "KN\u0001\u0000\u0000\u0000LJ\u0001\u0000\u0000\u0000MO\u0005#\u0000\u0000"+ + "NM\u0001\u0000\u0000\u0000NO\u0001\u0000\u0000\u0000OP\u0001\u0000\u0000"+ + "\u0000PQ\u0005\u0018\u0000\u0000Q\u0003\u0001\u0000\u0000\u0000RW\u0003"+ + "\u0018\f\u0000SW\u0003\u001a\r\u0000TW\u0003\u001c\u000e\u0000UW\u0003"+ + "\u0010\b\u0000VR\u0001\u0000\u0000\u0000VS\u0001\u0000\u0000\u0000VT\u0001"+ + "\u0000\u0000\u0000VU\u0001\u0000\u0000\u0000W\u0005\u0001\u0000\u0000"+ + "\u0000X]\u0003\b\u0004\u0000Y]\u0003\"\u0011\u0000Z]\u0003\n\u0005\u0000"+ + "[]\u0003\f\u0006\u0000\\X\u0001\u0000\u0000\u0000\\Y\u0001\u0000\u0000"+ + "\u0000\\Z\u0001\u0000\u0000\u0000\\[\u0001\u0000\u0000\u0000]\u0007\u0001"+ + "\u0000\u0000\u0000^_\u0003*\u0015\u0000_`\u0003\u0016\u000b\u0000`a\u0003"+ + "*\u0015\u0000a\t\u0001\u0000\u0000\u0000bd\u0005\u0014\u0000\u0000ce\u0003"+ + "*\u0015\u0000dc\u0001\u0000\u0000\u0000de\u0001\u0000\u0000\u0000e\u000b"+ + "\u0001\u0000\u0000\u0000fg\u0005\u000e\u0000\u0000gj\u0003\u000e\u0007"+ + "\u0000hi\u0005\u0006\u0000\u0000ik\u0005\u0019\u0000\u0000jh\u0001\u0000"+ + "\u0000\u0000jk\u0001\u0000\u0000\u0000k{\u0001\u0000\u0000\u0000lm\u0005"+ + "\f\u0000\u0000mn\u0003\u000e\u0007\u0000nx\u0005\u000e\u0000\u0000ot\u0005"+ + "\u0019\u0000\u0000pq\u0005!\u0000\u0000qs\u0005\u0019\u0000\u0000rp\u0001"+ + "\u0000\u0000\u0000sv\u0001\u0000\u0000\u0000tr\u0001\u0000\u0000\u0000"+ + "tu\u0001\u0000\u0000\u0000uy\u0001\u0000\u0000\u0000vt\u0001\u0000\u0000"+ + "\u0000wy\u0005\u001e\u0000\u0000xo\u0001\u0000\u0000\u0000xw\u0001\u0000"+ + "\u0000\u0000y{\u0001\u0000\u0000\u0000zf\u0001\u0000\u0000\u0000zl\u0001"+ + "\u0000\u0000\u0000{\r\u0001\u0000\u0000\u0000|\u0081\u0005\u0019\u0000"+ + "\u0000}~\u0005\u001c\u0000\u0000~\u0080\u0005\u0019\u0000\u0000\u007f"+ + "}\u0001\u0000\u0000\u0000\u0080\u0083\u0001\u0000\u0000\u0000\u0081\u007f"+ + "\u0001\u0000\u0000\u0000\u0081\u0082\u0001\u0000\u0000\u0000\u0082\u000f"+ + "\u0001\u0000\u0000\u0000\u0083\u0081\u0001\u0000\u0000\u0000\u0084\u0085"+ + "\u0005\u0007\u0000\u0000\u0085\u0086\u0005\u0019\u0000\u0000\u0086\u0088"+ + "\u0005\u001f\u0000\u0000\u0087\u0089\u0003\u0012\t\u0000\u0088\u0087\u0001"+ + "\u0000\u0000\u0000\u0088\u0089\u0001\u0000\u0000\u0000\u0089\u008a\u0001"+ + "\u0000\u0000\u0000\u008a\u008b\u0005 \u0000\u0000\u008b\u008c\u0005\""+ + "\u0000\u0000\u008c\u008d\u0003\u001e\u000f\u0000\u008d\u0011\u0001\u0000"+ + "\u0000\u0000\u008e\u0091\u0003\u0014\n\u0000\u008f\u0090\u0005%\u0000"+ + "\u0000\u0090\u0092\u0003\"\u0011\u0000\u0091\u008f\u0001\u0000\u0000\u0000"+ + "\u0091\u0092\u0001\u0000\u0000\u0000\u0092\u009b\u0001\u0000\u0000\u0000"+ + "\u0093\u0094\u0005!\u0000\u0000\u0094\u0097\u0003\u0014\n\u0000\u0095"+ + "\u0096\u0005%\u0000\u0000\u0096\u0098\u0003\"\u0011\u0000\u0097\u0095"+ + "\u0001\u0000\u0000\u0000\u0097\u0098\u0001\u0000\u0000\u0000\u0098\u009a"+ + "\u0001\u0000\u0000\u0000\u0099\u0093\u0001\u0000\u0000\u0000\u009a\u009d"+ + "\u0001\u0000\u0000\u0000\u009b\u0099\u0001\u0000\u0000\u0000\u009b\u009c"+ + "\u0001\u0000\u0000\u0000\u009c\u0013\u0001\u0000\u0000\u0000\u009d\u009b"+ + "\u0001\u0000\u0000\u0000\u009e\u00a1\u0005\u0019\u0000\u0000\u009f\u00a0"+ + "\u0005\"\u0000\u0000\u00a0\u00a2\u0003\"\u0011\u0000\u00a1\u009f\u0001"+ + "\u0000\u0000\u0000\u00a1\u00a2\u0001\u0000\u0000\u0000\u00a2\u0015\u0001"+ + "\u0000\u0000\u0000\u00a3\u00a4\u0007\u0000\u0000\u0000\u00a4\u0017\u0001"+ + "\u0000\u0000\u0000\u00a5\u00a6\u0005\r\u0000\u0000\u00a6\u00a7\u0003\""+ + "\u0011\u0000\u00a7\u00a8\u0005\"\u0000\u0000\u00a8\u00b0\u0003\u001e\u000f"+ + "\u0000\u00a9\u00aa\u0005\b\u0000\u0000\u00aa\u00ab\u0003\"\u0011\u0000"+ + "\u00ab\u00ac\u0005\"\u0000\u0000\u00ac\u00ad\u0003\u001e\u000f\u0000\u00ad"+ + "\u00af\u0001\u0000\u0000\u0000\u00ae\u00a9\u0001\u0000\u0000\u0000\u00af"+ + "\u00b2\u0001\u0000\u0000\u0000\u00b0\u00ae\u0001\u0000\u0000\u0000\u00b0"+ + "\u00b1\u0001\u0000\u0000\u0000\u00b1\u00b6\u0001\u0000\u0000\u0000\u00b2"+ + "\u00b0\u0001\u0000\u0000\u0000\u00b3\u00b4\u0005\t\u0000\u0000\u00b4\u00b5"+ + "\u0005\"\u0000\u0000\u00b5\u00b7\u0003\u001e\u000f\u0000\u00b6\u00b3\u0001"+ + "\u0000\u0000\u0000\u00b6\u00b7\u0001\u0000\u0000\u0000\u00b7\u0019\u0001"+ + "\u0000\u0000\u0000\u00b8\u00b9\u0005\u0017\u0000\u0000\u00b9\u00ba\u0003"+ + "\"\u0011\u0000\u00ba\u00bb\u0005\"\u0000\u0000\u00bb\u00bf\u0003\u001e"+ + "\u000f\u0000\u00bc\u00bd\u0005\t\u0000\u0000\u00bd\u00be\u0005\"\u0000"+ + "\u0000\u00be\u00c0\u0003\u001e\u000f\u0000\u00bf\u00bc\u0001\u0000\u0000"+ + "\u0000\u00bf\u00c0\u0001\u0000\u0000\u0000\u00c0\u001b\u0001\u0000\u0000"+ + "\u0000\u00c1\u00c2\u0005\u000b\u0000\u0000\u00c2\u00c3\u0003*\u0015\u0000"+ + "\u00c3\u00c4\u0005\"\u0000\u0000\u00c4\u00c8\u0003\u001e\u000f\u0000\u00c5"+ + "\u00c6\u0005\t\u0000\u0000\u00c6\u00c7\u0005\"\u0000\u0000\u00c7\u00c9"+ + "\u0003\u001e\u000f\u0000\u00c8\u00c5\u0001\u0000\u0000\u0000\u00c8\u00c9"+ + "\u0001\u0000\u0000\u0000\u00c9\u001d\u0001\u0000\u0000\u0000\u00ca\u00d6"+ + "\u0003\u0002\u0001\u0000\u00cb\u00cc\u0005\u0018\u0000\u0000\u00cc\u00cf"+ + "\u0005\u0001\u0000\u0000\u00cd\u00d0\u0003\u0002\u0001\u0000\u00ce\u00d0"+ + "\u0003\u0004\u0002\u0000\u00cf\u00cd\u0001\u0000\u0000\u0000\u00cf\u00ce"+ + "\u0001\u0000\u0000\u0000\u00d0\u00d1\u0001\u0000\u0000\u0000\u00d1\u00cf"+ + "\u0001\u0000\u0000\u0000\u00d1\u00d2\u0001\u0000\u0000\u0000\u00d2\u00d3"+ + "\u0001\u0000\u0000\u0000\u00d3\u00d4\u0005\u0002\u0000\u0000\u00d4\u00d6"+ + "\u0001\u0000\u0000\u0000\u00d5\u00ca\u0001\u0000\u0000\u0000\u00d5\u00cb"+ + "\u0001\u0000\u0000\u0000\u00d6\u001f\u0001\u0000\u0000\u0000\u00d7\u00e5"+ + "\u00055\u0000\u0000\u00d8\u00e5\u00056\u0000\u0000\u00d9\u00e5\u00057"+ + "\u0000\u0000\u00da\u00e5\u00058\u0000\u0000\u00db\u00e5\u00059\u0000\u0000"+ + "\u00dc\u00e5\u0005:\u0000\u0000\u00dd\u00e5\u0005;\u0000\u0000\u00de\u00e5"+ + "\u0005\u000f\u0000\u0000\u00df\u00e0\u0005\u0012\u0000\u0000\u00e0\u00e5"+ + "\u0005\u000f\u0000\u0000\u00e1\u00e5\u0005\u0010\u0000\u0000\u00e2\u00e3"+ + "\u0005\u0010\u0000\u0000\u00e3\u00e5\u0005\u0012\u0000\u0000\u00e4\u00d7"+ + "\u0001\u0000\u0000\u0000\u00e4\u00d8\u0001\u0000\u0000\u0000\u00e4\u00d9"+ + "\u0001\u0000\u0000\u0000\u00e4\u00da\u0001\u0000\u0000\u0000\u00e4\u00db"+ + "\u0001\u0000\u0000\u0000\u00e4\u00dc\u0001\u0000\u0000\u0000\u00e4\u00dd"+ + "\u0001\u0000\u0000\u0000\u00e4\u00de\u0001\u0000\u0000\u0000\u00e4\u00df"+ + "\u0001\u0000\u0000\u0000\u00e4\u00e1\u0001\u0000\u0000\u0000\u00e4\u00e2"+ + "\u0001\u0000\u0000\u0000\u00e5!\u0001\u0000\u0000\u0000\u00e6\u00e7\u0006"+ + "\u0011\uffff\uffff\u0000\u00e7\u00eb\u0003$\u0012\u0000\u00e8\u00ea\u0003"+ + "(\u0014\u0000\u00e9\u00e8\u0001\u0000\u0000\u0000\u00ea\u00ed\u0001\u0000"+ + "\u0000\u0000\u00eb\u00e9\u0001\u0000\u0000\u0000\u00eb\u00ec\u0001\u0000"+ + "\u0000\u0000\u00ec\u00f7\u0001\u0000\u0000\u0000\u00ed\u00eb\u0001\u0000"+ + "\u0000\u0000\u00ee\u00f0\u0007\u0001\u0000\u0000\u00ef\u00ee\u0001\u0000"+ + "\u0000\u0000\u00f0\u00f1\u0001\u0000\u0000\u0000\u00f1\u00ef\u0001\u0000"+ + "\u0000\u0000\u00f1\u00f2\u0001\u0000\u0000\u0000\u00f2\u00f3\u0001\u0000"+ + "\u0000\u0000\u00f3\u00f7\u0003\"\u0011\f\u00f4\u00f5\u0005\u0012\u0000"+ + "\u0000\u00f5\u00f7\u0003\"\u0011\u0005\u00f6\u00e6\u0001\u0000\u0000\u0000"+ + "\u00f6\u00ef\u0001\u0000\u0000\u0000\u00f6\u00f4\u0001\u0000\u0000\u0000"+ + "\u00f7\u011f\u0001\u0000\u0000\u0000\u00f8\u00f9\n\r\u0000\u0000\u00f9"+ + "\u00fa\u0005$\u0000\u0000\u00fa\u011e\u0003\"\u0011\u000e\u00fb\u00fc"+ + "\n\u000b\u0000\u0000\u00fc\u00fd\u0007\u0002\u0000\u0000\u00fd\u011e\u0003"+ + "\"\u0011\f\u00fe\u00ff\n\n\u0000\u0000\u00ff\u0100\u0007\u0003\u0000\u0000"+ + "\u0100\u011e\u0003\"\u0011\u000b\u0101\u0102\n\t\u0000\u0000\u0102\u0103"+ + "\u0007\u0004\u0000\u0000\u0103\u011e\u0003\"\u0011\n\u0104\u0105\n\b\u0000"+ + "\u0000\u0105\u0106\u0005*\u0000\u0000\u0106\u011e\u0003\"\u0011\t\u0107"+ + "\u0108\n\u0007\u0000\u0000\u0108\u0109\u0005)\u0000\u0000\u0109\u011e"+ + "\u0003\"\u0011\b\u010a\u010b\n\u0006\u0000\u0000\u010b\u010c\u0005(\u0000"+ + "\u0000\u010c\u011e\u0003\"\u0011\u0007\u010d\u010e\n\u0004\u0000\u0000"+ + "\u010e\u010f\u0003 \u0010\u0000\u010f\u0110\u0003\"\u0011\u0005\u0110"+ + "\u011e\u0001\u0000\u0000\u0000\u0111\u0112\n\u0003\u0000\u0000\u0112\u0113"+ + "\u0005\u0005\u0000\u0000\u0113\u011e\u0003\"\u0011\u0004\u0114\u0115\n"+ + "\u0002\u0000\u0000\u0115\u0116\u0005\u0013\u0000\u0000\u0116\u011e\u0003"+ + "\"\u0011\u0003\u0117\u0118\n\u0001\u0000\u0000\u0118\u0119\u0005\r\u0000"+ + "\u0000\u0119\u011a\u0003\"\u0011\u0000\u011a\u011b\u0005\t\u0000\u0000"+ + "\u011b\u011c\u0003\"\u0011\u0002\u011c\u011e\u0001\u0000\u0000\u0000\u011d"+ + "\u00f8\u0001\u0000\u0000\u0000\u011d\u00fb\u0001\u0000\u0000\u0000\u011d"+ + "\u00fe\u0001\u0000\u0000\u0000\u011d\u0101\u0001\u0000\u0000\u0000\u011d"+ + "\u0104\u0001\u0000\u0000\u0000\u011d\u0107\u0001\u0000\u0000\u0000\u011d"+ + "\u010a\u0001\u0000\u0000\u0000\u011d\u010d\u0001\u0000\u0000\u0000\u011d"+ + "\u0111\u0001\u0000\u0000\u0000\u011d\u0114\u0001\u0000\u0000\u0000\u011d"+ + "\u0117\u0001\u0000\u0000\u0000\u011e\u0121\u0001\u0000\u0000\u0000\u011f"+ + "\u011d\u0001\u0000\u0000\u0000\u011f\u0120\u0001\u0000\u0000\u0000\u0120"+ + "#\u0001\u0000\u0000\u0000\u0121\u011f\u0001\u0000\u0000\u0000\u0122\u0124"+ + "\u0005\u001f\u0000\u0000\u0123\u0125\u0003&\u0013\u0000\u0124\u0123\u0001"+ + "\u0000\u0000\u0000\u0124\u0125\u0001\u0000\u0000\u0000\u0125\u0126\u0001"+ + "\u0000\u0000\u0000\u0126\u013d\u0005 \u0000\u0000\u0127\u0129\u0005&\u0000"+ + "\u0000\u0128\u012a\u0003&\u0013\u0000\u0129\u0128\u0001\u0000\u0000\u0000"+ + "\u0129\u012a\u0001\u0000\u0000\u0000\u012a\u012b\u0001\u0000\u0000\u0000"+ + "\u012b\u013d\u0005\'\u0000\u0000\u012c\u012e\u00053\u0000\u0000\u012d"+ + "\u012f\u0003&\u0013\u0000\u012e\u012d\u0001\u0000\u0000\u0000\u012e\u012f"+ + "\u0001\u0000\u0000\u0000\u012f\u0130\u0001\u0000\u0000\u0000\u0130\u013d"+ + "\u00054\u0000\u0000\u0131\u013d\u0005\u0019\u0000\u0000\u0132\u013d\u0005"+ + "\u0004\u0000\u0000\u0133\u0135\u0005\u0003\u0000\u0000\u0134\u0133\u0001"+ + "\u0000\u0000\u0000\u0135\u0136\u0001\u0000\u0000\u0000\u0136\u0134\u0001"+ + "\u0000\u0000\u0000\u0136\u0137\u0001\u0000\u0000\u0000\u0137\u013d\u0001"+ + "\u0000\u0000\u0000\u0138\u013d\u0005\u001d\u0000\u0000\u0139\u013d\u0005"+ + "\u0011\u0000\u0000\u013a\u013d\u0005\u0015\u0000\u0000\u013b\u013d\u0005"+ + "\n\u0000\u0000\u013c\u0122\u0001\u0000\u0000\u0000\u013c\u0127\u0001\u0000"+ + "\u0000\u0000\u013c\u012c\u0001\u0000\u0000\u0000\u013c\u0131\u0001\u0000"+ + "\u0000\u0000\u013c\u0132\u0001\u0000\u0000\u0000\u013c\u0134\u0001\u0000"+ + "\u0000\u0000\u013c\u0138\u0001\u0000\u0000\u0000\u013c\u0139\u0001\u0000"+ + "\u0000\u0000\u013c\u013a\u0001\u0000\u0000\u0000\u013c\u013b\u0001\u0000"+ + "\u0000\u0000\u013d%\u0001\u0000\u0000\u0000\u013e\u014a\u0003\"\u0011"+ + "\u0000\u013f\u014b\u00032\u0019\u0000\u0140\u0141\u0005!\u0000\u0000\u0141"+ + "\u0143\u0003\"\u0011\u0000\u0142\u0140\u0001\u0000\u0000\u0000\u0143\u0146"+ + "\u0001\u0000\u0000\u0000\u0144\u0142\u0001\u0000\u0000\u0000\u0144\u0145"+ + "\u0001\u0000\u0000\u0000\u0145\u0148\u0001\u0000\u0000\u0000\u0146\u0144"+ + "\u0001\u0000\u0000\u0000\u0147\u0149\u0005!\u0000\u0000\u0148\u0147\u0001"+ + "\u0000\u0000\u0000\u0148\u0149\u0001\u0000\u0000\u0000\u0149\u014b\u0001"+ + "\u0000\u0000\u0000\u014a\u013f\u0001\u0000\u0000\u0000\u014a\u0144\u0001"+ + "\u0000\u0000\u0000\u014b\'\u0001\u0000\u0000\u0000\u014c\u014e\u0005\u001f"+ + "\u0000\u0000\u014d\u014f\u0003,\u0016\u0000\u014e\u014d\u0001\u0000\u0000"+ + "\u0000\u014e\u014f\u0001\u0000\u0000\u0000\u014f\u0150\u0001\u0000\u0000"+ + "\u0000\u0150\u0171\u0005 \u0000\u0000\u0151\u0152\u0005&\u0000\u0000\u0152"+ + "\u0157\u0003\"\u0011\u0000\u0153\u0154\u0005!\u0000\u0000\u0154\u0156"+ + "\u0003\"\u0011\u0000\u0155\u0153\u0001\u0000\u0000\u0000\u0156\u0159\u0001"+ + "\u0000\u0000\u0000\u0157\u0155\u0001\u0000\u0000\u0000\u0157\u0158\u0001"+ + "\u0000\u0000\u0000\u0158\u015b\u0001\u0000\u0000\u0000\u0159\u0157\u0001"+ + "\u0000\u0000\u0000\u015a\u015c\u0005!\u0000\u0000\u015b\u015a\u0001\u0000"+ + "\u0000\u0000\u015b\u015c\u0001\u0000\u0000\u0000\u015c\u015d\u0001\u0000"+ + "\u0000\u0000\u015d\u015e\u0005\'\u0000\u0000\u015e\u0171\u0001\u0000\u0000"+ + "\u0000\u015f\u0160\u0005\u001c\u0000\u0000\u0160\u0171\u0005\u0019\u0000"+ + "\u0000\u0161\u0163\u0005&\u0000\u0000\u0162\u0164\u0003\"\u0011\u0000"+ + "\u0163\u0162\u0001\u0000\u0000\u0000\u0163\u0164\u0001\u0000\u0000\u0000"+ + "\u0164\u0165\u0001\u0000\u0000\u0000\u0165\u0167\u0005\"\u0000\u0000\u0166"+ + "\u0168\u0003\"\u0011\u0000\u0167\u0166\u0001\u0000\u0000\u0000\u0167\u0168"+ + "\u0001\u0000\u0000\u0000\u0168\u016d\u0001\u0000\u0000\u0000\u0169\u016b"+ + "\u0005\"\u0000\u0000\u016a\u016c\u0003\"\u0011\u0000\u016b\u016a\u0001"+ + "\u0000\u0000\u0000\u016b\u016c\u0001\u0000\u0000\u0000\u016c\u016e\u0001"+ + "\u0000\u0000\u0000\u016d\u0169\u0001\u0000\u0000\u0000\u016d\u016e\u0001"+ + "\u0000\u0000\u0000\u016e\u016f\u0001\u0000\u0000\u0000\u016f\u0171\u0005"+ + "\'\u0000\u0000\u0170\u014c\u0001\u0000\u0000\u0000\u0170\u0151\u0001\u0000"+ + "\u0000\u0000\u0170\u015f\u0001\u0000\u0000\u0000\u0170\u0161\u0001\u0000"+ + "\u0000\u0000\u0171)\u0001\u0000\u0000\u0000\u0172\u0177\u0003\"\u0011"+ + "\u0000\u0173\u0174\u0005!\u0000\u0000\u0174\u0176\u0003\"\u0011\u0000"+ + "\u0175\u0173\u0001\u0000\u0000\u0000\u0176\u0179\u0001\u0000\u0000\u0000"+ + "\u0177\u0175\u0001\u0000\u0000\u0000\u0177\u0178\u0001\u0000\u0000\u0000"+ + "\u0178\u017b\u0001\u0000\u0000\u0000\u0179\u0177\u0001\u0000\u0000\u0000"+ + "\u017a\u017c\u0005!\u0000\u0000\u017b\u017a\u0001\u0000\u0000\u0000\u017b"+ + "\u017c\u0001\u0000\u0000\u0000\u017c+\u0001\u0000\u0000\u0000\u017d\u0182"+ + "\u0003.\u0017\u0000\u017e\u017f\u0005!\u0000\u0000\u017f\u0181\u0003."+ + "\u0017\u0000\u0180\u017e\u0001\u0000\u0000\u0000\u0181\u0184\u0001\u0000"+ + "\u0000\u0000\u0182\u0180\u0001\u0000\u0000\u0000\u0182\u0183\u0001\u0000"+ + "\u0000\u0000\u0183\u0186\u0001\u0000\u0000\u0000\u0184\u0182\u0001\u0000"+ + "\u0000\u0000\u0185\u0187\u0005!\u0000\u0000\u0186\u0185\u0001\u0000\u0000"+ + "\u0000\u0186\u0187\u0001\u0000\u0000\u0000\u0187-\u0001\u0000\u0000\u0000"+ + "\u0188\u018a\u0003\"\u0011\u0000\u0189\u018b\u00032\u0019\u0000\u018a"+ + "\u0189\u0001\u0000\u0000\u0000\u018a\u018b\u0001\u0000\u0000\u0000\u018b"+ + "\u0191\u0001\u0000\u0000\u0000\u018c\u018d\u0003\"\u0011\u0000\u018d\u018e"+ + "\u0005%\u0000\u0000\u018e\u018f\u0003\"\u0011\u0000\u018f\u0191\u0001"+ + "\u0000\u0000\u0000\u0190\u0188\u0001\u0000\u0000\u0000\u0190\u018c\u0001"+ + "\u0000\u0000\u0000\u0191/\u0001\u0000\u0000\u0000\u0192\u0195\u00032\u0019"+ + "\u0000\u0193\u0195\u00034\u001a\u0000\u0194\u0192\u0001\u0000\u0000\u0000"+ + "\u0194\u0193\u0001\u0000\u0000\u0000\u01951\u0001\u0000\u0000\u0000\u0196"+ + "\u0197\u0005\u000b\u0000\u0000\u0197\u0198\u0003*\u0015\u0000\u0198\u0199"+ + "\u0005\u000f\u0000\u0000\u0199\u019b\u0003\"\u0011\u0000\u019a\u019c\u0003"+ + "0\u0018\u0000\u019b\u019a\u0001\u0000\u0000\u0000\u019b\u019c\u0001\u0000"+ + "\u0000\u0000\u019c3\u0001\u0000\u0000\u0000\u019d\u019e\u0005\r\u0000"+ + "\u0000\u019e\u01a0\u0003\"\u0011\u0000\u019f\u01a1\u00030\u0018\u0000"+ + "\u01a0\u019f\u0001\u0000\u0000\u0000\u01a0\u01a1\u0001\u0000\u0000\u0000"+ + "\u01a15\u0001\u0000\u0000\u000089>@JNV\\djtxz\u0081\u0088\u0091\u0097"+ + "\u009b\u00a1\u00b0\u00b6\u00bf\u00c8\u00cf\u00d1\u00d5\u00e4\u00eb\u00f1"+ + "\u00f6\u011d\u011f\u0124\u0129\u012e\u0136\u013c\u0144\u0148\u014a\u014e"+ + "\u0157\u015b\u0163\u0167\u016b\u016d\u0170\u0177\u017b\u0182\u0186\u018a"+ + "\u0190\u0194\u019b\u01a0"; + 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); + } + } +}
\ No newline at end of file |