// Generated from SysY.g4 by ANTLR 4.7.2 #include "SysYVisitor.h" #include "SysYParser.h" using namespace antlrcpp; using namespace antlr4; SysYParser::SysYParser(TokenStream *input) : Parser(input) { _interpreter = new atn::ParserATNSimulator(this, _atn, _decisionToDFA, _sharedContextCache); } SysYParser::~SysYParser() { delete _interpreter; } std::string SysYParser::getGrammarFileName() const { return "SysY.g4"; } const std::vector& SysYParser::getRuleNames() const { return _ruleNames; } dfa::Vocabulary& SysYParser::getVocabulary() const { return _vocabulary; } //----------------- CompUnitContext ------------------------------------------------------------------ SysYParser::CompUnitContext::CompUnitContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } std::vector SysYParser::CompUnitContext::decl() { return getRuleContexts(); } SysYParser::DeclContext* SysYParser::CompUnitContext::decl(size_t i) { return getRuleContext(i); } std::vector SysYParser::CompUnitContext::funcDef() { return getRuleContexts(); } SysYParser::FuncDefContext* SysYParser::CompUnitContext::funcDef(size_t i) { return getRuleContext(i); } size_t SysYParser::CompUnitContext::getRuleIndex() const { return SysYParser::RuleCompUnit; } antlrcpp::Any SysYParser::CompUnitContext::accept(tree::ParseTreeVisitor *visitor) { if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitCompUnit(this); else return visitor->visitChildren(this); } SysYParser::CompUnitContext* SysYParser::compUnit() { CompUnitContext *_localctx = _tracker.createInstance(_ctx, getState()); enterRule(_localctx, 0, SysYParser::RuleCompUnit); size_t _la = 0; auto onExit = finally([=] { exitRule(); }); try { enterOuterAlt(_localctx, 1); setState(64); _errHandler->sync(this); _la = _input->LA(1); do { setState(64); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 0, _ctx)) { case 1: { setState(62); decl(); break; } case 2: { setState(63); funcDef(); break; } } setState(66); _errHandler->sync(this); _la = _input->LA(1); } while ((((_la & ~ 0x3fULL) == 0) && ((1ULL << _la) & ((1ULL << SysYParser::T__0) | (1ULL << SysYParser::T__3) | (1ULL << SysYParser::T__4) | (1ULL << SysYParser::T__12))) != 0)); } catch (RecognitionException &e) { _errHandler->reportError(this, e); _localctx->exception = std::current_exception(); _errHandler->recover(this, _localctx->exception); } return _localctx; } //----------------- DeclContext ------------------------------------------------------------------ SysYParser::DeclContext::DeclContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } SysYParser::ConstDeclContext* SysYParser::DeclContext::constDecl() { return getRuleContext(0); } SysYParser::VarDeclContext* SysYParser::DeclContext::varDecl() { return getRuleContext(0); } size_t SysYParser::DeclContext::getRuleIndex() const { return SysYParser::RuleDecl; } antlrcpp::Any SysYParser::DeclContext::accept(tree::ParseTreeVisitor *visitor) { if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitDecl(this); else return visitor->visitChildren(this); } SysYParser::DeclContext* SysYParser::decl() { DeclContext *_localctx = _tracker.createInstance(_ctx, getState()); enterRule(_localctx, 2, SysYParser::RuleDecl); auto onExit = finally([=] { exitRule(); }); try { setState(70); _errHandler->sync(this); switch (_input->LA(1)) { case SysYParser::T__0: { enterOuterAlt(_localctx, 1); setState(68); constDecl(); break; } case SysYParser::T__3: case SysYParser::T__4: { enterOuterAlt(_localctx, 2); setState(69); varDecl(); break; } default: throw NoViableAltException(this); } } catch (RecognitionException &e) { _errHandler->reportError(this, e); _localctx->exception = std::current_exception(); _errHandler->recover(this, _localctx->exception); } return _localctx; } //----------------- ConstDeclContext ------------------------------------------------------------------ SysYParser::ConstDeclContext::ConstDeclContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } SysYParser::BTypeContext* SysYParser::ConstDeclContext::bType() { return getRuleContext(0); } std::vector SysYParser::ConstDeclContext::constDef() { return getRuleContexts(); } SysYParser::ConstDefContext* SysYParser::ConstDeclContext::constDef(size_t i) { return getRuleContext(i); } size_t SysYParser::ConstDeclContext::getRuleIndex() const { return SysYParser::RuleConstDecl; } antlrcpp::Any SysYParser::ConstDeclContext::accept(tree::ParseTreeVisitor *visitor) { if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitConstDecl(this); else return visitor->visitChildren(this); } SysYParser::ConstDeclContext* SysYParser::constDecl() { ConstDeclContext *_localctx = _tracker.createInstance(_ctx, getState()); enterRule(_localctx, 4, SysYParser::RuleConstDecl); size_t _la = 0; auto onExit = finally([=] { exitRule(); }); try { enterOuterAlt(_localctx, 1); setState(72); match(SysYParser::T__0); setState(73); bType(); setState(74); constDef(); setState(79); _errHandler->sync(this); _la = _input->LA(1); while (_la == SysYParser::T__1) { setState(75); match(SysYParser::T__1); setState(76); constDef(); setState(81); _errHandler->sync(this); _la = _input->LA(1); } setState(82); match(SysYParser::T__2); } catch (RecognitionException &e) { _errHandler->reportError(this, e); _localctx->exception = std::current_exception(); _errHandler->recover(this, _localctx->exception); } return _localctx; } //----------------- BTypeContext ------------------------------------------------------------------ SysYParser::BTypeContext::BTypeContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } size_t SysYParser::BTypeContext::getRuleIndex() const { return SysYParser::RuleBType; } antlrcpp::Any SysYParser::BTypeContext::accept(tree::ParseTreeVisitor *visitor) { if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitBType(this); else return visitor->visitChildren(this); } SysYParser::BTypeContext* SysYParser::bType() { BTypeContext *_localctx = _tracker.createInstance(_ctx, getState()); enterRule(_localctx, 6, SysYParser::RuleBType); size_t _la = 0; auto onExit = finally([=] { exitRule(); }); try { enterOuterAlt(_localctx, 1); setState(84); _la = _input->LA(1); if (!(_la == SysYParser::T__3 || _la == SysYParser::T__4)) { _errHandler->recoverInline(this); } else { _errHandler->reportMatch(this); consume(); } } catch (RecognitionException &e) { _errHandler->reportError(this, e); _localctx->exception = std::current_exception(); _errHandler->recover(this, _localctx->exception); } return _localctx; } //----------------- ConstDefContext ------------------------------------------------------------------ SysYParser::ConstDefContext::ConstDefContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } tree::TerminalNode* SysYParser::ConstDefContext::Ident() { return getToken(SysYParser::Ident, 0); } SysYParser::ConstInitValContext* SysYParser::ConstDefContext::constInitVal() { return getRuleContext(0); } std::vector SysYParser::ConstDefContext::constExp() { return getRuleContexts(); } SysYParser::ConstExpContext* SysYParser::ConstDefContext::constExp(size_t i) { return getRuleContext(i); } size_t SysYParser::ConstDefContext::getRuleIndex() const { return SysYParser::RuleConstDef; } antlrcpp::Any SysYParser::ConstDefContext::accept(tree::ParseTreeVisitor *visitor) { if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitConstDef(this); else return visitor->visitChildren(this); } SysYParser::ConstDefContext* SysYParser::constDef() { ConstDefContext *_localctx = _tracker.createInstance(_ctx, getState()); enterRule(_localctx, 8, SysYParser::RuleConstDef); size_t _la = 0; auto onExit = finally([=] { exitRule(); }); try { enterOuterAlt(_localctx, 1); setState(86); match(SysYParser::Ident); setState(93); _errHandler->sync(this); _la = _input->LA(1); while (_la == SysYParser::T__5) { setState(87); match(SysYParser::T__5); setState(88); constExp(); setState(89); match(SysYParser::T__6); setState(95); _errHandler->sync(this); _la = _input->LA(1); } setState(96); match(SysYParser::T__7); setState(97); constInitVal(); } catch (RecognitionException &e) { _errHandler->reportError(this, e); _localctx->exception = std::current_exception(); _errHandler->recover(this, _localctx->exception); } return _localctx; } //----------------- ConstInitValContext ------------------------------------------------------------------ SysYParser::ConstInitValContext::ConstInitValContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } SysYParser::ConstExpContext* SysYParser::ConstInitValContext::constExp() { return getRuleContext(0); } std::vector SysYParser::ConstInitValContext::constInitVal() { return getRuleContexts(); } SysYParser::ConstInitValContext* SysYParser::ConstInitValContext::constInitVal(size_t i) { return getRuleContext(i); } size_t SysYParser::ConstInitValContext::getRuleIndex() const { return SysYParser::RuleConstInitVal; } antlrcpp::Any SysYParser::ConstInitValContext::accept(tree::ParseTreeVisitor *visitor) { if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitConstInitVal(this); else return visitor->visitChildren(this); } SysYParser::ConstInitValContext* SysYParser::constInitVal() { ConstInitValContext *_localctx = _tracker.createInstance(_ctx, getState()); enterRule(_localctx, 10, SysYParser::RuleConstInitVal); size_t _la = 0; auto onExit = finally([=] { exitRule(); }); try { setState(112); _errHandler->sync(this); switch (_input->LA(1)) { case SysYParser::T__10: case SysYParser::T__19: case SysYParser::T__20: case SysYParser::T__21: case SysYParser::FloatConst: case SysYParser::IntConst: case SysYParser::Ident: { enterOuterAlt(_localctx, 1); setState(99); constExp(); break; } case SysYParser::T__8: { enterOuterAlt(_localctx, 2); setState(100); match(SysYParser::T__8); setState(109); _errHandler->sync(this); _la = _input->LA(1); if ((((_la & ~ 0x3fULL) == 0) && ((1ULL << _la) & ((1ULL << SysYParser::T__8) | (1ULL << SysYParser::T__10) | (1ULL << SysYParser::T__19) | (1ULL << SysYParser::T__20) | (1ULL << SysYParser::T__21) | (1ULL << SysYParser::FloatConst) | (1ULL << SysYParser::IntConst) | (1ULL << SysYParser::Ident))) != 0)) { setState(101); constInitVal(); setState(106); _errHandler->sync(this); _la = _input->LA(1); while (_la == SysYParser::T__1) { setState(102); match(SysYParser::T__1); setState(103); constInitVal(); setState(108); _errHandler->sync(this); _la = _input->LA(1); } } setState(111); match(SysYParser::T__9); break; } default: throw NoViableAltException(this); } } catch (RecognitionException &e) { _errHandler->reportError(this, e); _localctx->exception = std::current_exception(); _errHandler->recover(this, _localctx->exception); } return _localctx; } //----------------- VarDeclContext ------------------------------------------------------------------ SysYParser::VarDeclContext::VarDeclContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } SysYParser::BTypeContext* SysYParser::VarDeclContext::bType() { return getRuleContext(0); } std::vector SysYParser::VarDeclContext::varDef() { return getRuleContexts(); } SysYParser::VarDefContext* SysYParser::VarDeclContext::varDef(size_t i) { return getRuleContext(i); } size_t SysYParser::VarDeclContext::getRuleIndex() const { return SysYParser::RuleVarDecl; } antlrcpp::Any SysYParser::VarDeclContext::accept(tree::ParseTreeVisitor *visitor) { if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitVarDecl(this); else return visitor->visitChildren(this); } SysYParser::VarDeclContext* SysYParser::varDecl() { VarDeclContext *_localctx = _tracker.createInstance(_ctx, getState()); enterRule(_localctx, 12, SysYParser::RuleVarDecl); size_t _la = 0; auto onExit = finally([=] { exitRule(); }); try { enterOuterAlt(_localctx, 1); setState(114); bType(); setState(115); varDef(); setState(120); _errHandler->sync(this); _la = _input->LA(1); while (_la == SysYParser::T__1) { setState(116); match(SysYParser::T__1); setState(117); varDef(); setState(122); _errHandler->sync(this); _la = _input->LA(1); } setState(123); match(SysYParser::T__2); } catch (RecognitionException &e) { _errHandler->reportError(this, e); _localctx->exception = std::current_exception(); _errHandler->recover(this, _localctx->exception); } return _localctx; } //----------------- VarDefContext ------------------------------------------------------------------ SysYParser::VarDefContext::VarDefContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } tree::TerminalNode* SysYParser::VarDefContext::Ident() { return getToken(SysYParser::Ident, 0); } std::vector SysYParser::VarDefContext::constExp() { return getRuleContexts(); } SysYParser::ConstExpContext* SysYParser::VarDefContext::constExp(size_t i) { return getRuleContext(i); } SysYParser::InitValContext* SysYParser::VarDefContext::initVal() { return getRuleContext(0); } size_t SysYParser::VarDefContext::getRuleIndex() const { return SysYParser::RuleVarDef; } antlrcpp::Any SysYParser::VarDefContext::accept(tree::ParseTreeVisitor *visitor) { if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitVarDef(this); else return visitor->visitChildren(this); } SysYParser::VarDefContext* SysYParser::varDef() { VarDefContext *_localctx = _tracker.createInstance(_ctx, getState()); enterRule(_localctx, 14, SysYParser::RuleVarDef); size_t _la = 0; auto onExit = finally([=] { exitRule(); }); try { setState(147); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 11, _ctx)) { case 1: { enterOuterAlt(_localctx, 1); setState(125); match(SysYParser::Ident); setState(132); _errHandler->sync(this); _la = _input->LA(1); while (_la == SysYParser::T__5) { setState(126); match(SysYParser::T__5); setState(127); constExp(); setState(128); match(SysYParser::T__6); setState(134); _errHandler->sync(this); _la = _input->LA(1); } break; } case 2: { enterOuterAlt(_localctx, 2); setState(135); match(SysYParser::Ident); setState(142); _errHandler->sync(this); _la = _input->LA(1); while (_la == SysYParser::T__5) { setState(136); match(SysYParser::T__5); setState(137); constExp(); setState(138); match(SysYParser::T__6); setState(144); _errHandler->sync(this); _la = _input->LA(1); } setState(145); match(SysYParser::T__7); setState(146); initVal(); break; } } } catch (RecognitionException &e) { _errHandler->reportError(this, e); _localctx->exception = std::current_exception(); _errHandler->recover(this, _localctx->exception); } return _localctx; } //----------------- InitValContext ------------------------------------------------------------------ SysYParser::InitValContext::InitValContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } SysYParser::ExpContext* SysYParser::InitValContext::exp() { return getRuleContext(0); } std::vector SysYParser::InitValContext::initVal() { return getRuleContexts(); } SysYParser::InitValContext* SysYParser::InitValContext::initVal(size_t i) { return getRuleContext(i); } size_t SysYParser::InitValContext::getRuleIndex() const { return SysYParser::RuleInitVal; } antlrcpp::Any SysYParser::InitValContext::accept(tree::ParseTreeVisitor *visitor) { if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitInitVal(this); else return visitor->visitChildren(this); } SysYParser::InitValContext* SysYParser::initVal() { InitValContext *_localctx = _tracker.createInstance(_ctx, getState()); enterRule(_localctx, 16, SysYParser::RuleInitVal); size_t _la = 0; auto onExit = finally([=] { exitRule(); }); try { setState(162); _errHandler->sync(this); switch (_input->LA(1)) { case SysYParser::T__10: case SysYParser::T__19: case SysYParser::T__20: case SysYParser::T__21: case SysYParser::FloatConst: case SysYParser::IntConst: case SysYParser::Ident: { enterOuterAlt(_localctx, 1); setState(149); exp(); break; } case SysYParser::T__8: { enterOuterAlt(_localctx, 2); setState(150); match(SysYParser::T__8); setState(159); _errHandler->sync(this); _la = _input->LA(1); if ((((_la & ~ 0x3fULL) == 0) && ((1ULL << _la) & ((1ULL << SysYParser::T__8) | (1ULL << SysYParser::T__10) | (1ULL << SysYParser::T__19) | (1ULL << SysYParser::T__20) | (1ULL << SysYParser::T__21) | (1ULL << SysYParser::FloatConst) | (1ULL << SysYParser::IntConst) | (1ULL << SysYParser::Ident))) != 0)) { setState(151); initVal(); setState(156); _errHandler->sync(this); _la = _input->LA(1); while (_la == SysYParser::T__1) { setState(152); match(SysYParser::T__1); setState(153); initVal(); setState(158); _errHandler->sync(this); _la = _input->LA(1); } } setState(161); match(SysYParser::T__9); break; } default: throw NoViableAltException(this); } } catch (RecognitionException &e) { _errHandler->reportError(this, e); _localctx->exception = std::current_exception(); _errHandler->recover(this, _localctx->exception); } return _localctx; } //----------------- FuncDefContext ------------------------------------------------------------------ SysYParser::FuncDefContext::FuncDefContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } SysYParser::FuncTypeContext* SysYParser::FuncDefContext::funcType() { return getRuleContext(0); } tree::TerminalNode* SysYParser::FuncDefContext::Ident() { return getToken(SysYParser::Ident, 0); } SysYParser::BlockContext* SysYParser::FuncDefContext::block() { return getRuleContext(0); } SysYParser::FuncFParamsContext* SysYParser::FuncDefContext::funcFParams() { return getRuleContext(0); } size_t SysYParser::FuncDefContext::getRuleIndex() const { return SysYParser::RuleFuncDef; } antlrcpp::Any SysYParser::FuncDefContext::accept(tree::ParseTreeVisitor *visitor) { if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitFuncDef(this); else return visitor->visitChildren(this); } SysYParser::FuncDefContext* SysYParser::funcDef() { FuncDefContext *_localctx = _tracker.createInstance(_ctx, getState()); enterRule(_localctx, 18, SysYParser::RuleFuncDef); size_t _la = 0; auto onExit = finally([=] { exitRule(); }); try { enterOuterAlt(_localctx, 1); setState(164); funcType(); setState(165); match(SysYParser::Ident); setState(166); match(SysYParser::T__10); setState(168); _errHandler->sync(this); _la = _input->LA(1); if (_la == SysYParser::T__3 || _la == SysYParser::T__4) { setState(167); funcFParams(); } setState(170); match(SysYParser::T__11); setState(171); block(); } catch (RecognitionException &e) { _errHandler->reportError(this, e); _localctx->exception = std::current_exception(); _errHandler->recover(this, _localctx->exception); } return _localctx; } //----------------- FuncTypeContext ------------------------------------------------------------------ SysYParser::FuncTypeContext::FuncTypeContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } size_t SysYParser::FuncTypeContext::getRuleIndex() const { return SysYParser::RuleFuncType; } antlrcpp::Any SysYParser::FuncTypeContext::accept(tree::ParseTreeVisitor *visitor) { if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitFuncType(this); else return visitor->visitChildren(this); } SysYParser::FuncTypeContext* SysYParser::funcType() { FuncTypeContext *_localctx = _tracker.createInstance(_ctx, getState()); enterRule(_localctx, 20, SysYParser::RuleFuncType); size_t _la = 0; auto onExit = finally([=] { exitRule(); }); try { enterOuterAlt(_localctx, 1); setState(173); _la = _input->LA(1); if (!((((_la & ~ 0x3fULL) == 0) && ((1ULL << _la) & ((1ULL << SysYParser::T__3) | (1ULL << SysYParser::T__4) | (1ULL << SysYParser::T__12))) != 0))) { _errHandler->recoverInline(this); } else { _errHandler->reportMatch(this); consume(); } } catch (RecognitionException &e) { _errHandler->reportError(this, e); _localctx->exception = std::current_exception(); _errHandler->recover(this, _localctx->exception); } return _localctx; } //----------------- FuncFParamsContext ------------------------------------------------------------------ SysYParser::FuncFParamsContext::FuncFParamsContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } std::vector SysYParser::FuncFParamsContext::funcFParam() { return getRuleContexts(); } SysYParser::FuncFParamContext* SysYParser::FuncFParamsContext::funcFParam(size_t i) { return getRuleContext(i); } size_t SysYParser::FuncFParamsContext::getRuleIndex() const { return SysYParser::RuleFuncFParams; } antlrcpp::Any SysYParser::FuncFParamsContext::accept(tree::ParseTreeVisitor *visitor) { if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitFuncFParams(this); else return visitor->visitChildren(this); } SysYParser::FuncFParamsContext* SysYParser::funcFParams() { FuncFParamsContext *_localctx = _tracker.createInstance(_ctx, getState()); enterRule(_localctx, 22, SysYParser::RuleFuncFParams); size_t _la = 0; auto onExit = finally([=] { exitRule(); }); try { enterOuterAlt(_localctx, 1); setState(175); funcFParam(); setState(180); _errHandler->sync(this); _la = _input->LA(1); while (_la == SysYParser::T__1) { setState(176); match(SysYParser::T__1); setState(177); funcFParam(); setState(182); _errHandler->sync(this); _la = _input->LA(1); } } catch (RecognitionException &e) { _errHandler->reportError(this, e); _localctx->exception = std::current_exception(); _errHandler->recover(this, _localctx->exception); } return _localctx; } //----------------- FuncFParamContext ------------------------------------------------------------------ SysYParser::FuncFParamContext::FuncFParamContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } SysYParser::BTypeContext* SysYParser::FuncFParamContext::bType() { return getRuleContext(0); } tree::TerminalNode* SysYParser::FuncFParamContext::Ident() { return getToken(SysYParser::Ident, 0); } std::vector SysYParser::FuncFParamContext::exp() { return getRuleContexts(); } SysYParser::ExpContext* SysYParser::FuncFParamContext::exp(size_t i) { return getRuleContext(i); } size_t SysYParser::FuncFParamContext::getRuleIndex() const { return SysYParser::RuleFuncFParam; } antlrcpp::Any SysYParser::FuncFParamContext::accept(tree::ParseTreeVisitor *visitor) { if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitFuncFParam(this); else return visitor->visitChildren(this); } SysYParser::FuncFParamContext* SysYParser::funcFParam() { FuncFParamContext *_localctx = _tracker.createInstance(_ctx, getState()); enterRule(_localctx, 24, SysYParser::RuleFuncFParam); size_t _la = 0; auto onExit = finally([=] { exitRule(); }); try { enterOuterAlt(_localctx, 1); setState(183); bType(); setState(184); match(SysYParser::Ident); setState(196); _errHandler->sync(this); _la = _input->LA(1); if (_la == SysYParser::T__5) { setState(185); match(SysYParser::T__5); setState(186); match(SysYParser::T__6); setState(193); _errHandler->sync(this); _la = _input->LA(1); while (_la == SysYParser::T__5) { setState(187); match(SysYParser::T__5); setState(188); exp(); setState(189); match(SysYParser::T__6); setState(195); _errHandler->sync(this); _la = _input->LA(1); } } } catch (RecognitionException &e) { _errHandler->reportError(this, e); _localctx->exception = std::current_exception(); _errHandler->recover(this, _localctx->exception); } return _localctx; } //----------------- BlockContext ------------------------------------------------------------------ SysYParser::BlockContext::BlockContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } std::vector SysYParser::BlockContext::blockItem() { return getRuleContexts(); } SysYParser::BlockItemContext* SysYParser::BlockContext::blockItem(size_t i) { return getRuleContext(i); } size_t SysYParser::BlockContext::getRuleIndex() const { return SysYParser::RuleBlock; } antlrcpp::Any SysYParser::BlockContext::accept(tree::ParseTreeVisitor *visitor) { if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitBlock(this); else return visitor->visitChildren(this); } SysYParser::BlockContext* SysYParser::block() { BlockContext *_localctx = _tracker.createInstance(_ctx, getState()); enterRule(_localctx, 26, SysYParser::RuleBlock); size_t _la = 0; auto onExit = finally([=] { exitRule(); }); try { enterOuterAlt(_localctx, 1); setState(198); match(SysYParser::T__8); setState(202); _errHandler->sync(this); _la = _input->LA(1); while ((((_la & ~ 0x3fULL) == 0) && ((1ULL << _la) & ((1ULL << SysYParser::T__0) | (1ULL << SysYParser::T__2) | (1ULL << SysYParser::T__3) | (1ULL << SysYParser::T__4) | (1ULL << SysYParser::T__8) | (1ULL << SysYParser::T__10) | (1ULL << SysYParser::T__13) | (1ULL << SysYParser::T__15) | (1ULL << SysYParser::T__16) | (1ULL << SysYParser::T__17) | (1ULL << SysYParser::T__18) | (1ULL << SysYParser::T__19) | (1ULL << SysYParser::T__20) | (1ULL << SysYParser::T__21) | (1ULL << SysYParser::FloatConst) | (1ULL << SysYParser::IntConst) | (1ULL << SysYParser::Ident))) != 0)) { setState(199); blockItem(); setState(204); _errHandler->sync(this); _la = _input->LA(1); } setState(205); match(SysYParser::T__9); } catch (RecognitionException &e) { _errHandler->reportError(this, e); _localctx->exception = std::current_exception(); _errHandler->recover(this, _localctx->exception); } return _localctx; } //----------------- BlockItemContext ------------------------------------------------------------------ SysYParser::BlockItemContext::BlockItemContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } SysYParser::DeclContext* SysYParser::BlockItemContext::decl() { return getRuleContext(0); } SysYParser::StmtContext* SysYParser::BlockItemContext::stmt() { return getRuleContext(0); } size_t SysYParser::BlockItemContext::getRuleIndex() const { return SysYParser::RuleBlockItem; } antlrcpp::Any SysYParser::BlockItemContext::accept(tree::ParseTreeVisitor *visitor) { if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitBlockItem(this); else return visitor->visitChildren(this); } SysYParser::BlockItemContext* SysYParser::blockItem() { BlockItemContext *_localctx = _tracker.createInstance(_ctx, getState()); enterRule(_localctx, 28, SysYParser::RuleBlockItem); auto onExit = finally([=] { exitRule(); }); try { setState(209); _errHandler->sync(this); switch (_input->LA(1)) { case SysYParser::T__0: case SysYParser::T__3: case SysYParser::T__4: { enterOuterAlt(_localctx, 1); setState(207); decl(); break; } case SysYParser::T__2: case SysYParser::T__8: case SysYParser::T__10: case SysYParser::T__13: case SysYParser::T__15: case SysYParser::T__16: case SysYParser::T__17: case SysYParser::T__18: case SysYParser::T__19: case SysYParser::T__20: case SysYParser::T__21: case SysYParser::FloatConst: case SysYParser::IntConst: case SysYParser::Ident: { enterOuterAlt(_localctx, 2); setState(208); stmt(); break; } default: throw NoViableAltException(this); } } catch (RecognitionException &e) { _errHandler->reportError(this, e); _localctx->exception = std::current_exception(); _errHandler->recover(this, _localctx->exception); } return _localctx; } //----------------- StmtContext ------------------------------------------------------------------ SysYParser::StmtContext::StmtContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } SysYParser::LValContext* SysYParser::StmtContext::lVal() { return getRuleContext(0); } SysYParser::ExpContext* SysYParser::StmtContext::exp() { return getRuleContext(0); } SysYParser::BlockContext* SysYParser::StmtContext::block() { return getRuleContext(0); } SysYParser::CondContext* SysYParser::StmtContext::cond() { return getRuleContext(0); } std::vector SysYParser::StmtContext::stmt() { return getRuleContexts(); } SysYParser::StmtContext* SysYParser::StmtContext::stmt(size_t i) { return getRuleContext(i); } size_t SysYParser::StmtContext::getRuleIndex() const { return SysYParser::RuleStmt; } antlrcpp::Any SysYParser::StmtContext::accept(tree::ParseTreeVisitor *visitor) { if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitStmt(this); else return visitor->visitChildren(this); } SysYParser::StmtContext* SysYParser::stmt() { StmtContext *_localctx = _tracker.createInstance(_ctx, getState()); enterRule(_localctx, 30, SysYParser::RuleStmt); size_t _la = 0; auto onExit = finally([=] { exitRule(); }); try { setState(245); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 24, _ctx)) { case 1: { enterOuterAlt(_localctx, 1); setState(211); lVal(); setState(212); match(SysYParser::T__7); setState(213); exp(); setState(214); match(SysYParser::T__2); break; } case 2: { enterOuterAlt(_localctx, 2); setState(217); _errHandler->sync(this); _la = _input->LA(1); if ((((_la & ~ 0x3fULL) == 0) && ((1ULL << _la) & ((1ULL << SysYParser::T__10) | (1ULL << SysYParser::T__19) | (1ULL << SysYParser::T__20) | (1ULL << SysYParser::T__21) | (1ULL << SysYParser::FloatConst) | (1ULL << SysYParser::IntConst) | (1ULL << SysYParser::Ident))) != 0)) { setState(216); exp(); } setState(219); match(SysYParser::T__2); break; } case 3: { enterOuterAlt(_localctx, 3); setState(220); block(); break; } case 4: { enterOuterAlt(_localctx, 4); setState(221); match(SysYParser::T__13); setState(222); match(SysYParser::T__10); setState(223); cond(); setState(224); match(SysYParser::T__11); setState(225); stmt(); setState(228); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 22, _ctx)) { case 1: { setState(226); match(SysYParser::T__14); setState(227); stmt(); break; } } break; } case 5: { enterOuterAlt(_localctx, 5); setState(230); match(SysYParser::T__15); setState(231); match(SysYParser::T__10); setState(232); cond(); setState(233); match(SysYParser::T__11); setState(234); stmt(); break; } case 6: { enterOuterAlt(_localctx, 6); setState(236); match(SysYParser::T__16); setState(237); match(SysYParser::T__2); break; } case 7: { enterOuterAlt(_localctx, 7); setState(238); match(SysYParser::T__17); setState(239); match(SysYParser::T__2); break; } case 8: { enterOuterAlt(_localctx, 8); setState(240); match(SysYParser::T__18); setState(242); _errHandler->sync(this); _la = _input->LA(1); if ((((_la & ~ 0x3fULL) == 0) && ((1ULL << _la) & ((1ULL << SysYParser::T__10) | (1ULL << SysYParser::T__19) | (1ULL << SysYParser::T__20) | (1ULL << SysYParser::T__21) | (1ULL << SysYParser::FloatConst) | (1ULL << SysYParser::IntConst) | (1ULL << SysYParser::Ident))) != 0)) { setState(241); exp(); } setState(244); match(SysYParser::T__2); break; } } } catch (RecognitionException &e) { _errHandler->reportError(this, e); _localctx->exception = std::current_exception(); _errHandler->recover(this, _localctx->exception); } return _localctx; } //----------------- ExpContext ------------------------------------------------------------------ SysYParser::ExpContext::ExpContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } SysYParser::AddExpContext* SysYParser::ExpContext::addExp() { return getRuleContext(0); } size_t SysYParser::ExpContext::getRuleIndex() const { return SysYParser::RuleExp; } antlrcpp::Any SysYParser::ExpContext::accept(tree::ParseTreeVisitor *visitor) { if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitExp(this); else return visitor->visitChildren(this); } SysYParser::ExpContext* SysYParser::exp() { ExpContext *_localctx = _tracker.createInstance(_ctx, getState()); enterRule(_localctx, 32, SysYParser::RuleExp); auto onExit = finally([=] { exitRule(); }); try { enterOuterAlt(_localctx, 1); setState(247); addExp(); } catch (RecognitionException &e) { _errHandler->reportError(this, e); _localctx->exception = std::current_exception(); _errHandler->recover(this, _localctx->exception); } return _localctx; } //----------------- CondContext ------------------------------------------------------------------ SysYParser::CondContext::CondContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } SysYParser::LOrExpContext* SysYParser::CondContext::lOrExp() { return getRuleContext(0); } size_t SysYParser::CondContext::getRuleIndex() const { return SysYParser::RuleCond; } antlrcpp::Any SysYParser::CondContext::accept(tree::ParseTreeVisitor *visitor) { if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitCond(this); else return visitor->visitChildren(this); } SysYParser::CondContext* SysYParser::cond() { CondContext *_localctx = _tracker.createInstance(_ctx, getState()); enterRule(_localctx, 34, SysYParser::RuleCond); auto onExit = finally([=] { exitRule(); }); try { enterOuterAlt(_localctx, 1); setState(249); lOrExp(); } catch (RecognitionException &e) { _errHandler->reportError(this, e); _localctx->exception = std::current_exception(); _errHandler->recover(this, _localctx->exception); } return _localctx; } //----------------- LValContext ------------------------------------------------------------------ SysYParser::LValContext::LValContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } tree::TerminalNode* SysYParser::LValContext::Ident() { return getToken(SysYParser::Ident, 0); } std::vector SysYParser::LValContext::exp() { return getRuleContexts(); } SysYParser::ExpContext* SysYParser::LValContext::exp(size_t i) { return getRuleContext(i); } size_t SysYParser::LValContext::getRuleIndex() const { return SysYParser::RuleLVal; } antlrcpp::Any SysYParser::LValContext::accept(tree::ParseTreeVisitor *visitor) { if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitLVal(this); else return visitor->visitChildren(this); } SysYParser::LValContext* SysYParser::lVal() { LValContext *_localctx = _tracker.createInstance(_ctx, getState()); enterRule(_localctx, 36, SysYParser::RuleLVal); size_t _la = 0; auto onExit = finally([=] { exitRule(); }); try { enterOuterAlt(_localctx, 1); setState(251); match(SysYParser::Ident); setState(258); _errHandler->sync(this); _la = _input->LA(1); while (_la == SysYParser::T__5) { setState(252); match(SysYParser::T__5); setState(253); exp(); setState(254); match(SysYParser::T__6); setState(260); _errHandler->sync(this); _la = _input->LA(1); } } catch (RecognitionException &e) { _errHandler->reportError(this, e); _localctx->exception = std::current_exception(); _errHandler->recover(this, _localctx->exception); } return _localctx; } //----------------- PrimaryExpContext ------------------------------------------------------------------ SysYParser::PrimaryExpContext::PrimaryExpContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } SysYParser::ExpContext* SysYParser::PrimaryExpContext::exp() { return getRuleContext(0); } SysYParser::LValContext* SysYParser::PrimaryExpContext::lVal() { return getRuleContext(0); } SysYParser::NumberContext* SysYParser::PrimaryExpContext::number() { return getRuleContext(0); } size_t SysYParser::PrimaryExpContext::getRuleIndex() const { return SysYParser::RulePrimaryExp; } antlrcpp::Any SysYParser::PrimaryExpContext::accept(tree::ParseTreeVisitor *visitor) { if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitPrimaryExp(this); else return visitor->visitChildren(this); } SysYParser::PrimaryExpContext* SysYParser::primaryExp() { PrimaryExpContext *_localctx = _tracker.createInstance(_ctx, getState()); enterRule(_localctx, 38, SysYParser::RulePrimaryExp); auto onExit = finally([=] { exitRule(); }); try { setState(267); _errHandler->sync(this); switch (_input->LA(1)) { case SysYParser::T__10: { enterOuterAlt(_localctx, 1); setState(261); match(SysYParser::T__10); setState(262); exp(); setState(263); match(SysYParser::T__11); break; } case SysYParser::Ident: { enterOuterAlt(_localctx, 2); setState(265); lVal(); break; } case SysYParser::FloatConst: case SysYParser::IntConst: { enterOuterAlt(_localctx, 3); setState(266); number(); break; } default: throw NoViableAltException(this); } } catch (RecognitionException &e) { _errHandler->reportError(this, e); _localctx->exception = std::current_exception(); _errHandler->recover(this, _localctx->exception); } return _localctx; } //----------------- NumberContext ------------------------------------------------------------------ SysYParser::NumberContext::NumberContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } tree::TerminalNode* SysYParser::NumberContext::FloatConst() { return getToken(SysYParser::FloatConst, 0); } tree::TerminalNode* SysYParser::NumberContext::IntConst() { return getToken(SysYParser::IntConst, 0); } size_t SysYParser::NumberContext::getRuleIndex() const { return SysYParser::RuleNumber; } antlrcpp::Any SysYParser::NumberContext::accept(tree::ParseTreeVisitor *visitor) { if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitNumber(this); else return visitor->visitChildren(this); } SysYParser::NumberContext* SysYParser::number() { NumberContext *_localctx = _tracker.createInstance(_ctx, getState()); enterRule(_localctx, 40, SysYParser::RuleNumber); size_t _la = 0; auto onExit = finally([=] { exitRule(); }); try { enterOuterAlt(_localctx, 1); setState(269); _la = _input->LA(1); if (!(_la == SysYParser::FloatConst || _la == SysYParser::IntConst)) { _errHandler->recoverInline(this); } else { _errHandler->reportMatch(this); consume(); } } catch (RecognitionException &e) { _errHandler->reportError(this, e); _localctx->exception = std::current_exception(); _errHandler->recover(this, _localctx->exception); } return _localctx; } //----------------- UnaryExpContext ------------------------------------------------------------------ SysYParser::UnaryExpContext::UnaryExpContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } SysYParser::PrimaryExpContext* SysYParser::UnaryExpContext::primaryExp() { return getRuleContext(0); } tree::TerminalNode* SysYParser::UnaryExpContext::Ident() { return getToken(SysYParser::Ident, 0); } SysYParser::FuncRParamsContext* SysYParser::UnaryExpContext::funcRParams() { return getRuleContext(0); } SysYParser::UnaryOpContext* SysYParser::UnaryExpContext::unaryOp() { return getRuleContext(0); } SysYParser::UnaryExpContext* SysYParser::UnaryExpContext::unaryExp() { return getRuleContext(0); } size_t SysYParser::UnaryExpContext::getRuleIndex() const { return SysYParser::RuleUnaryExp; } antlrcpp::Any SysYParser::UnaryExpContext::accept(tree::ParseTreeVisitor *visitor) { if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitUnaryExp(this); else return visitor->visitChildren(this); } SysYParser::UnaryExpContext* SysYParser::unaryExp() { UnaryExpContext *_localctx = _tracker.createInstance(_ctx, getState()); enterRule(_localctx, 42, SysYParser::RuleUnaryExp); size_t _la = 0; auto onExit = finally([=] { exitRule(); }); try { setState(281); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 28, _ctx)) { case 1: { enterOuterAlt(_localctx, 1); setState(271); primaryExp(); break; } case 2: { enterOuterAlt(_localctx, 2); setState(272); match(SysYParser::Ident); setState(273); match(SysYParser::T__10); setState(275); _errHandler->sync(this); _la = _input->LA(1); if ((((_la & ~ 0x3fULL) == 0) && ((1ULL << _la) & ((1ULL << SysYParser::T__10) | (1ULL << SysYParser::T__19) | (1ULL << SysYParser::T__20) | (1ULL << SysYParser::T__21) | (1ULL << SysYParser::FloatConst) | (1ULL << SysYParser::IntConst) | (1ULL << SysYParser::Ident))) != 0)) { setState(274); funcRParams(); } setState(277); match(SysYParser::T__11); break; } case 3: { enterOuterAlt(_localctx, 3); setState(278); unaryOp(); setState(279); unaryExp(); break; } } } catch (RecognitionException &e) { _errHandler->reportError(this, e); _localctx->exception = std::current_exception(); _errHandler->recover(this, _localctx->exception); } return _localctx; } //----------------- UnaryOpContext ------------------------------------------------------------------ SysYParser::UnaryOpContext::UnaryOpContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } size_t SysYParser::UnaryOpContext::getRuleIndex() const { return SysYParser::RuleUnaryOp; } antlrcpp::Any SysYParser::UnaryOpContext::accept(tree::ParseTreeVisitor *visitor) { if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitUnaryOp(this); else return visitor->visitChildren(this); } SysYParser::UnaryOpContext* SysYParser::unaryOp() { UnaryOpContext *_localctx = _tracker.createInstance(_ctx, getState()); enterRule(_localctx, 44, SysYParser::RuleUnaryOp); size_t _la = 0; auto onExit = finally([=] { exitRule(); }); try { enterOuterAlt(_localctx, 1); setState(283); _la = _input->LA(1); if (!((((_la & ~ 0x3fULL) == 0) && ((1ULL << _la) & ((1ULL << SysYParser::T__19) | (1ULL << SysYParser::T__20) | (1ULL << SysYParser::T__21))) != 0))) { _errHandler->recoverInline(this); } else { _errHandler->reportMatch(this); consume(); } } catch (RecognitionException &e) { _errHandler->reportError(this, e); _localctx->exception = std::current_exception(); _errHandler->recover(this, _localctx->exception); } return _localctx; } //----------------- FuncRParamsContext ------------------------------------------------------------------ SysYParser::FuncRParamsContext::FuncRParamsContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } std::vector SysYParser::FuncRParamsContext::exp() { return getRuleContexts(); } SysYParser::ExpContext* SysYParser::FuncRParamsContext::exp(size_t i) { return getRuleContext(i); } size_t SysYParser::FuncRParamsContext::getRuleIndex() const { return SysYParser::RuleFuncRParams; } antlrcpp::Any SysYParser::FuncRParamsContext::accept(tree::ParseTreeVisitor *visitor) { if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitFuncRParams(this); else return visitor->visitChildren(this); } SysYParser::FuncRParamsContext* SysYParser::funcRParams() { FuncRParamsContext *_localctx = _tracker.createInstance(_ctx, getState()); enterRule(_localctx, 46, SysYParser::RuleFuncRParams); size_t _la = 0; auto onExit = finally([=] { exitRule(); }); try { enterOuterAlt(_localctx, 1); setState(285); exp(); setState(290); _errHandler->sync(this); _la = _input->LA(1); while (_la == SysYParser::T__1) { setState(286); match(SysYParser::T__1); setState(287); exp(); setState(292); _errHandler->sync(this); _la = _input->LA(1); } } catch (RecognitionException &e) { _errHandler->reportError(this, e); _localctx->exception = std::current_exception(); _errHandler->recover(this, _localctx->exception); } return _localctx; } //----------------- MulExpContext ------------------------------------------------------------------ SysYParser::MulExpContext::MulExpContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } std::vector SysYParser::MulExpContext::unaryExp() { return getRuleContexts(); } SysYParser::UnaryExpContext* SysYParser::MulExpContext::unaryExp(size_t i) { return getRuleContext(i); } size_t SysYParser::MulExpContext::getRuleIndex() const { return SysYParser::RuleMulExp; } antlrcpp::Any SysYParser::MulExpContext::accept(tree::ParseTreeVisitor *visitor) { if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitMulExp(this); else return visitor->visitChildren(this); } SysYParser::MulExpContext* SysYParser::mulExp() { MulExpContext *_localctx = _tracker.createInstance(_ctx, getState()); enterRule(_localctx, 48, SysYParser::RuleMulExp); size_t _la = 0; auto onExit = finally([=] { exitRule(); }); try { enterOuterAlt(_localctx, 1); setState(293); unaryExp(); setState(298); _errHandler->sync(this); _la = _input->LA(1); while ((((_la & ~ 0x3fULL) == 0) && ((1ULL << _la) & ((1ULL << SysYParser::T__22) | (1ULL << SysYParser::T__23) | (1ULL << SysYParser::T__24))) != 0)) { setState(294); _la = _input->LA(1); if (!((((_la & ~ 0x3fULL) == 0) && ((1ULL << _la) & ((1ULL << SysYParser::T__22) | (1ULL << SysYParser::T__23) | (1ULL << SysYParser::T__24))) != 0))) { _errHandler->recoverInline(this); } else { _errHandler->reportMatch(this); consume(); } setState(295); unaryExp(); setState(300); _errHandler->sync(this); _la = _input->LA(1); } } catch (RecognitionException &e) { _errHandler->reportError(this, e); _localctx->exception = std::current_exception(); _errHandler->recover(this, _localctx->exception); } return _localctx; } //----------------- AddExpContext ------------------------------------------------------------------ SysYParser::AddExpContext::AddExpContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } std::vector SysYParser::AddExpContext::mulExp() { return getRuleContexts(); } SysYParser::MulExpContext* SysYParser::AddExpContext::mulExp(size_t i) { return getRuleContext(i); } size_t SysYParser::AddExpContext::getRuleIndex() const { return SysYParser::RuleAddExp; } antlrcpp::Any SysYParser::AddExpContext::accept(tree::ParseTreeVisitor *visitor) { if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitAddExp(this); else return visitor->visitChildren(this); } SysYParser::AddExpContext* SysYParser::addExp() { AddExpContext *_localctx = _tracker.createInstance(_ctx, getState()); enterRule(_localctx, 50, SysYParser::RuleAddExp); size_t _la = 0; auto onExit = finally([=] { exitRule(); }); try { enterOuterAlt(_localctx, 1); setState(301); mulExp(); setState(306); _errHandler->sync(this); _la = _input->LA(1); while (_la == SysYParser::T__19 || _la == SysYParser::T__20) { setState(302); _la = _input->LA(1); if (!(_la == SysYParser::T__19 || _la == SysYParser::T__20)) { _errHandler->recoverInline(this); } else { _errHandler->reportMatch(this); consume(); } setState(303); mulExp(); setState(308); _errHandler->sync(this); _la = _input->LA(1); } } catch (RecognitionException &e) { _errHandler->reportError(this, e); _localctx->exception = std::current_exception(); _errHandler->recover(this, _localctx->exception); } return _localctx; } //----------------- RelExpContext ------------------------------------------------------------------ SysYParser::RelExpContext::RelExpContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } std::vector SysYParser::RelExpContext::addExp() { return getRuleContexts(); } SysYParser::AddExpContext* SysYParser::RelExpContext::addExp(size_t i) { return getRuleContext(i); } size_t SysYParser::RelExpContext::getRuleIndex() const { return SysYParser::RuleRelExp; } antlrcpp::Any SysYParser::RelExpContext::accept(tree::ParseTreeVisitor *visitor) { if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitRelExp(this); else return visitor->visitChildren(this); } SysYParser::RelExpContext* SysYParser::relExp() { RelExpContext *_localctx = _tracker.createInstance(_ctx, getState()); enterRule(_localctx, 52, SysYParser::RuleRelExp); size_t _la = 0; auto onExit = finally([=] { exitRule(); }); try { enterOuterAlt(_localctx, 1); setState(309); addExp(); setState(314); _errHandler->sync(this); _la = _input->LA(1); while ((((_la & ~ 0x3fULL) == 0) && ((1ULL << _la) & ((1ULL << SysYParser::T__25) | (1ULL << SysYParser::T__26) | (1ULL << SysYParser::T__27) | (1ULL << SysYParser::T__28))) != 0)) { setState(310); _la = _input->LA(1); if (!((((_la & ~ 0x3fULL) == 0) && ((1ULL << _la) & ((1ULL << SysYParser::T__25) | (1ULL << SysYParser::T__26) | (1ULL << SysYParser::T__27) | (1ULL << SysYParser::T__28))) != 0))) { _errHandler->recoverInline(this); } else { _errHandler->reportMatch(this); consume(); } setState(311); addExp(); setState(316); _errHandler->sync(this); _la = _input->LA(1); } } catch (RecognitionException &e) { _errHandler->reportError(this, e); _localctx->exception = std::current_exception(); _errHandler->recover(this, _localctx->exception); } return _localctx; } //----------------- EqExpContext ------------------------------------------------------------------ SysYParser::EqExpContext::EqExpContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } std::vector SysYParser::EqExpContext::relExp() { return getRuleContexts(); } SysYParser::RelExpContext* SysYParser::EqExpContext::relExp(size_t i) { return getRuleContext(i); } size_t SysYParser::EqExpContext::getRuleIndex() const { return SysYParser::RuleEqExp; } antlrcpp::Any SysYParser::EqExpContext::accept(tree::ParseTreeVisitor *visitor) { if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitEqExp(this); else return visitor->visitChildren(this); } SysYParser::EqExpContext* SysYParser::eqExp() { EqExpContext *_localctx = _tracker.createInstance(_ctx, getState()); enterRule(_localctx, 54, SysYParser::RuleEqExp); size_t _la = 0; auto onExit = finally([=] { exitRule(); }); try { enterOuterAlt(_localctx, 1); setState(317); relExp(); setState(322); _errHandler->sync(this); _la = _input->LA(1); while (_la == SysYParser::T__29 || _la == SysYParser::T__30) { setState(318); _la = _input->LA(1); if (!(_la == SysYParser::T__29 || _la == SysYParser::T__30)) { _errHandler->recoverInline(this); } else { _errHandler->reportMatch(this); consume(); } setState(319); relExp(); setState(324); _errHandler->sync(this); _la = _input->LA(1); } } catch (RecognitionException &e) { _errHandler->reportError(this, e); _localctx->exception = std::current_exception(); _errHandler->recover(this, _localctx->exception); } return _localctx; } //----------------- LAndExpContext ------------------------------------------------------------------ SysYParser::LAndExpContext::LAndExpContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } std::vector SysYParser::LAndExpContext::eqExp() { return getRuleContexts(); } SysYParser::EqExpContext* SysYParser::LAndExpContext::eqExp(size_t i) { return getRuleContext(i); } size_t SysYParser::LAndExpContext::getRuleIndex() const { return SysYParser::RuleLAndExp; } antlrcpp::Any SysYParser::LAndExpContext::accept(tree::ParseTreeVisitor *visitor) { if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitLAndExp(this); else return visitor->visitChildren(this); } SysYParser::LAndExpContext* SysYParser::lAndExp() { LAndExpContext *_localctx = _tracker.createInstance(_ctx, getState()); enterRule(_localctx, 56, SysYParser::RuleLAndExp); size_t _la = 0; auto onExit = finally([=] { exitRule(); }); try { enterOuterAlt(_localctx, 1); setState(325); eqExp(); setState(330); _errHandler->sync(this); _la = _input->LA(1); while (_la == SysYParser::T__31) { setState(326); match(SysYParser::T__31); setState(327); eqExp(); setState(332); _errHandler->sync(this); _la = _input->LA(1); } } catch (RecognitionException &e) { _errHandler->reportError(this, e); _localctx->exception = std::current_exception(); _errHandler->recover(this, _localctx->exception); } return _localctx; } //----------------- LOrExpContext ------------------------------------------------------------------ SysYParser::LOrExpContext::LOrExpContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } std::vector SysYParser::LOrExpContext::lAndExp() { return getRuleContexts(); } SysYParser::LAndExpContext* SysYParser::LOrExpContext::lAndExp(size_t i) { return getRuleContext(i); } size_t SysYParser::LOrExpContext::getRuleIndex() const { return SysYParser::RuleLOrExp; } antlrcpp::Any SysYParser::LOrExpContext::accept(tree::ParseTreeVisitor *visitor) { if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitLOrExp(this); else return visitor->visitChildren(this); } SysYParser::LOrExpContext* SysYParser::lOrExp() { LOrExpContext *_localctx = _tracker.createInstance(_ctx, getState()); enterRule(_localctx, 58, SysYParser::RuleLOrExp); size_t _la = 0; auto onExit = finally([=] { exitRule(); }); try { enterOuterAlt(_localctx, 1); setState(333); lAndExp(); setState(338); _errHandler->sync(this); _la = _input->LA(1); while (_la == SysYParser::T__32) { setState(334); match(SysYParser::T__32); setState(335); lAndExp(); setState(340); _errHandler->sync(this); _la = _input->LA(1); } } catch (RecognitionException &e) { _errHandler->reportError(this, e); _localctx->exception = std::current_exception(); _errHandler->recover(this, _localctx->exception); } return _localctx; } //----------------- ConstExpContext ------------------------------------------------------------------ SysYParser::ConstExpContext::ConstExpContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } SysYParser::AddExpContext* SysYParser::ConstExpContext::addExp() { return getRuleContext(0); } size_t SysYParser::ConstExpContext::getRuleIndex() const { return SysYParser::RuleConstExp; } antlrcpp::Any SysYParser::ConstExpContext::accept(tree::ParseTreeVisitor *visitor) { if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitConstExp(this); else return visitor->visitChildren(this); } SysYParser::ConstExpContext* SysYParser::constExp() { ConstExpContext *_localctx = _tracker.createInstance(_ctx, getState()); enterRule(_localctx, 60, SysYParser::RuleConstExp); auto onExit = finally([=] { exitRule(); }); try { enterOuterAlt(_localctx, 1); setState(341); addExp(); } catch (RecognitionException &e) { _errHandler->reportError(this, e); _localctx->exception = std::current_exception(); _errHandler->recover(this, _localctx->exception); } return _localctx; } // Static vars and initialization. std::vector SysYParser::_decisionToDFA; atn::PredictionContextCache SysYParser::_sharedContextCache; // We own the ATN which in turn owns the ATN states. atn::ATN SysYParser::_atn; std::vector SysYParser::_serializedATN; std::vector SysYParser::_ruleNames = { "compUnit", "decl", "constDecl", "bType", "constDef", "constInitVal", "varDecl", "varDef", "initVal", "funcDef", "funcType", "funcFParams", "funcFParam", "block", "blockItem", "stmt", "exp", "cond", "lVal", "primaryExp", "number", "unaryExp", "unaryOp", "funcRParams", "mulExp", "addExp", "relExp", "eqExp", "lAndExp", "lOrExp", "constExp" }; std::vector SysYParser::_literalNames = { "", "'const'", "','", "';'", "'int'", "'float'", "'['", "']'", "'='", "'{'", "'}'", "'('", "')'", "'void'", "'if'", "'else'", "'while'", "'break'", "'continue'", "'return'", "'+'", "'-'", "'!'", "'*'", "'/'", "'%'", "'<'", "'>'", "'<='", "'>='", "'=='", "'!='", "'&&'", "'||'" }; std::vector SysYParser::_symbolicNames = { "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "FloatConst", "IntConst", "Ident", "WS", "LINE_COMMENT", "BLOCK_COMMENT" }; dfa::Vocabulary SysYParser::_vocabulary(_literalNames, _symbolicNames); std::vector SysYParser::_tokenNames; SysYParser::Initializer::Initializer() { for (size_t i = 0; i < _symbolicNames.size(); ++i) { std::string name = _vocabulary.getLiteralName(i); if (name.empty()) { name = _vocabulary.getSymbolicName(i); } if (name.empty()) { _tokenNames.push_back(""); } else { _tokenNames.push_back(name); } } _serializedATN = { 0x3, 0x608b, 0xa72a, 0x8133, 0xb9ed, 0x417c, 0x3be7, 0x7786, 0x5964, 0x3, 0x29, 0x15a, 0x4, 0x2, 0x9, 0x2, 0x4, 0x3, 0x9, 0x3, 0x4, 0x4, 0x9, 0x4, 0x4, 0x5, 0x9, 0x5, 0x4, 0x6, 0x9, 0x6, 0x4, 0x7, 0x9, 0x7, 0x4, 0x8, 0x9, 0x8, 0x4, 0x9, 0x9, 0x9, 0x4, 0xa, 0x9, 0xa, 0x4, 0xb, 0x9, 0xb, 0x4, 0xc, 0x9, 0xc, 0x4, 0xd, 0x9, 0xd, 0x4, 0xe, 0x9, 0xe, 0x4, 0xf, 0x9, 0xf, 0x4, 0x10, 0x9, 0x10, 0x4, 0x11, 0x9, 0x11, 0x4, 0x12, 0x9, 0x12, 0x4, 0x13, 0x9, 0x13, 0x4, 0x14, 0x9, 0x14, 0x4, 0x15, 0x9, 0x15, 0x4, 0x16, 0x9, 0x16, 0x4, 0x17, 0x9, 0x17, 0x4, 0x18, 0x9, 0x18, 0x4, 0x19, 0x9, 0x19, 0x4, 0x1a, 0x9, 0x1a, 0x4, 0x1b, 0x9, 0x1b, 0x4, 0x1c, 0x9, 0x1c, 0x4, 0x1d, 0x9, 0x1d, 0x4, 0x1e, 0x9, 0x1e, 0x4, 0x1f, 0x9, 0x1f, 0x4, 0x20, 0x9, 0x20, 0x3, 0x2, 0x3, 0x2, 0x6, 0x2, 0x43, 0xa, 0x2, 0xd, 0x2, 0xe, 0x2, 0x44, 0x3, 0x3, 0x3, 0x3, 0x5, 0x3, 0x49, 0xa, 0x3, 0x3, 0x4, 0x3, 0x4, 0x3, 0x4, 0x3, 0x4, 0x3, 0x4, 0x7, 0x4, 0x50, 0xa, 0x4, 0xc, 0x4, 0xe, 0x4, 0x53, 0xb, 0x4, 0x3, 0x4, 0x3, 0x4, 0x3, 0x5, 0x3, 0x5, 0x3, 0x6, 0x3, 0x6, 0x3, 0x6, 0x3, 0x6, 0x3, 0x6, 0x7, 0x6, 0x5e, 0xa, 0x6, 0xc, 0x6, 0xe, 0x6, 0x61, 0xb, 0x6, 0x3, 0x6, 0x3, 0x6, 0x3, 0x6, 0x3, 0x7, 0x3, 0x7, 0x3, 0x7, 0x3, 0x7, 0x3, 0x7, 0x7, 0x7, 0x6b, 0xa, 0x7, 0xc, 0x7, 0xe, 0x7, 0x6e, 0xb, 0x7, 0x5, 0x7, 0x70, 0xa, 0x7, 0x3, 0x7, 0x5, 0x7, 0x73, 0xa, 0x7, 0x3, 0x8, 0x3, 0x8, 0x3, 0x8, 0x3, 0x8, 0x7, 0x8, 0x79, 0xa, 0x8, 0xc, 0x8, 0xe, 0x8, 0x7c, 0xb, 0x8, 0x3, 0x8, 0x3, 0x8, 0x3, 0x9, 0x3, 0x9, 0x3, 0x9, 0x3, 0x9, 0x3, 0x9, 0x7, 0x9, 0x85, 0xa, 0x9, 0xc, 0x9, 0xe, 0x9, 0x88, 0xb, 0x9, 0x3, 0x9, 0x3, 0x9, 0x3, 0x9, 0x3, 0x9, 0x3, 0x9, 0x7, 0x9, 0x8f, 0xa, 0x9, 0xc, 0x9, 0xe, 0x9, 0x92, 0xb, 0x9, 0x3, 0x9, 0x3, 0x9, 0x5, 0x9, 0x96, 0xa, 0x9, 0x3, 0xa, 0x3, 0xa, 0x3, 0xa, 0x3, 0xa, 0x3, 0xa, 0x7, 0xa, 0x9d, 0xa, 0xa, 0xc, 0xa, 0xe, 0xa, 0xa0, 0xb, 0xa, 0x5, 0xa, 0xa2, 0xa, 0xa, 0x3, 0xa, 0x5, 0xa, 0xa5, 0xa, 0xa, 0x3, 0xb, 0x3, 0xb, 0x3, 0xb, 0x3, 0xb, 0x5, 0xb, 0xab, 0xa, 0xb, 0x3, 0xb, 0x3, 0xb, 0x3, 0xb, 0x3, 0xc, 0x3, 0xc, 0x3, 0xd, 0x3, 0xd, 0x3, 0xd, 0x7, 0xd, 0xb5, 0xa, 0xd, 0xc, 0xd, 0xe, 0xd, 0xb8, 0xb, 0xd, 0x3, 0xe, 0x3, 0xe, 0x3, 0xe, 0x3, 0xe, 0x3, 0xe, 0x3, 0xe, 0x3, 0xe, 0x3, 0xe, 0x7, 0xe, 0xc2, 0xa, 0xe, 0xc, 0xe, 0xe, 0xe, 0xc5, 0xb, 0xe, 0x5, 0xe, 0xc7, 0xa, 0xe, 0x3, 0xf, 0x3, 0xf, 0x7, 0xf, 0xcb, 0xa, 0xf, 0xc, 0xf, 0xe, 0xf, 0xce, 0xb, 0xf, 0x3, 0xf, 0x3, 0xf, 0x3, 0x10, 0x3, 0x10, 0x5, 0x10, 0xd4, 0xa, 0x10, 0x3, 0x11, 0x3, 0x11, 0x3, 0x11, 0x3, 0x11, 0x3, 0x11, 0x3, 0x11, 0x5, 0x11, 0xdc, 0xa, 0x11, 0x3, 0x11, 0x3, 0x11, 0x3, 0x11, 0x3, 0x11, 0x3, 0x11, 0x3, 0x11, 0x3, 0x11, 0x3, 0x11, 0x3, 0x11, 0x5, 0x11, 0xe7, 0xa, 0x11, 0x3, 0x11, 0x3, 0x11, 0x3, 0x11, 0x3, 0x11, 0x3, 0x11, 0x3, 0x11, 0x3, 0x11, 0x3, 0x11, 0x3, 0x11, 0x3, 0x11, 0x3, 0x11, 0x3, 0x11, 0x5, 0x11, 0xf5, 0xa, 0x11, 0x3, 0x11, 0x5, 0x11, 0xf8, 0xa, 0x11, 0x3, 0x12, 0x3, 0x12, 0x3, 0x13, 0x3, 0x13, 0x3, 0x14, 0x3, 0x14, 0x3, 0x14, 0x3, 0x14, 0x3, 0x14, 0x7, 0x14, 0x103, 0xa, 0x14, 0xc, 0x14, 0xe, 0x14, 0x106, 0xb, 0x14, 0x3, 0x15, 0x3, 0x15, 0x3, 0x15, 0x3, 0x15, 0x3, 0x15, 0x3, 0x15, 0x5, 0x15, 0x10e, 0xa, 0x15, 0x3, 0x16, 0x3, 0x16, 0x3, 0x17, 0x3, 0x17, 0x3, 0x17, 0x3, 0x17, 0x5, 0x17, 0x116, 0xa, 0x17, 0x3, 0x17, 0x3, 0x17, 0x3, 0x17, 0x3, 0x17, 0x5, 0x17, 0x11c, 0xa, 0x17, 0x3, 0x18, 0x3, 0x18, 0x3, 0x19, 0x3, 0x19, 0x3, 0x19, 0x7, 0x19, 0x123, 0xa, 0x19, 0xc, 0x19, 0xe, 0x19, 0x126, 0xb, 0x19, 0x3, 0x1a, 0x3, 0x1a, 0x3, 0x1a, 0x7, 0x1a, 0x12b, 0xa, 0x1a, 0xc, 0x1a, 0xe, 0x1a, 0x12e, 0xb, 0x1a, 0x3, 0x1b, 0x3, 0x1b, 0x3, 0x1b, 0x7, 0x1b, 0x133, 0xa, 0x1b, 0xc, 0x1b, 0xe, 0x1b, 0x136, 0xb, 0x1b, 0x3, 0x1c, 0x3, 0x1c, 0x3, 0x1c, 0x7, 0x1c, 0x13b, 0xa, 0x1c, 0xc, 0x1c, 0xe, 0x1c, 0x13e, 0xb, 0x1c, 0x3, 0x1d, 0x3, 0x1d, 0x3, 0x1d, 0x7, 0x1d, 0x143, 0xa, 0x1d, 0xc, 0x1d, 0xe, 0x1d, 0x146, 0xb, 0x1d, 0x3, 0x1e, 0x3, 0x1e, 0x3, 0x1e, 0x7, 0x1e, 0x14b, 0xa, 0x1e, 0xc, 0x1e, 0xe, 0x1e, 0x14e, 0xb, 0x1e, 0x3, 0x1f, 0x3, 0x1f, 0x3, 0x1f, 0x7, 0x1f, 0x153, 0xa, 0x1f, 0xc, 0x1f, 0xe, 0x1f, 0x156, 0xb, 0x1f, 0x3, 0x20, 0x3, 0x20, 0x3, 0x20, 0x2, 0x2, 0x21, 0x2, 0x4, 0x6, 0x8, 0xa, 0xc, 0xe, 0x10, 0x12, 0x14, 0x16, 0x18, 0x1a, 0x1c, 0x1e, 0x20, 0x22, 0x24, 0x26, 0x28, 0x2a, 0x2c, 0x2e, 0x30, 0x32, 0x34, 0x36, 0x38, 0x3a, 0x3c, 0x3e, 0x2, 0xa, 0x3, 0x2, 0x6, 0x7, 0x4, 0x2, 0x6, 0x7, 0xf, 0xf, 0x3, 0x2, 0x24, 0x25, 0x3, 0x2, 0x16, 0x18, 0x3, 0x2, 0x19, 0x1b, 0x3, 0x2, 0x16, 0x17, 0x3, 0x2, 0x1c, 0x1f, 0x3, 0x2, 0x20, 0x21, 0x2, 0x166, 0x2, 0x42, 0x3, 0x2, 0x2, 0x2, 0x4, 0x48, 0x3, 0x2, 0x2, 0x2, 0x6, 0x4a, 0x3, 0x2, 0x2, 0x2, 0x8, 0x56, 0x3, 0x2, 0x2, 0x2, 0xa, 0x58, 0x3, 0x2, 0x2, 0x2, 0xc, 0x72, 0x3, 0x2, 0x2, 0x2, 0xe, 0x74, 0x3, 0x2, 0x2, 0x2, 0x10, 0x95, 0x3, 0x2, 0x2, 0x2, 0x12, 0xa4, 0x3, 0x2, 0x2, 0x2, 0x14, 0xa6, 0x3, 0x2, 0x2, 0x2, 0x16, 0xaf, 0x3, 0x2, 0x2, 0x2, 0x18, 0xb1, 0x3, 0x2, 0x2, 0x2, 0x1a, 0xb9, 0x3, 0x2, 0x2, 0x2, 0x1c, 0xc8, 0x3, 0x2, 0x2, 0x2, 0x1e, 0xd3, 0x3, 0x2, 0x2, 0x2, 0x20, 0xf7, 0x3, 0x2, 0x2, 0x2, 0x22, 0xf9, 0x3, 0x2, 0x2, 0x2, 0x24, 0xfb, 0x3, 0x2, 0x2, 0x2, 0x26, 0xfd, 0x3, 0x2, 0x2, 0x2, 0x28, 0x10d, 0x3, 0x2, 0x2, 0x2, 0x2a, 0x10f, 0x3, 0x2, 0x2, 0x2, 0x2c, 0x11b, 0x3, 0x2, 0x2, 0x2, 0x2e, 0x11d, 0x3, 0x2, 0x2, 0x2, 0x30, 0x11f, 0x3, 0x2, 0x2, 0x2, 0x32, 0x127, 0x3, 0x2, 0x2, 0x2, 0x34, 0x12f, 0x3, 0x2, 0x2, 0x2, 0x36, 0x137, 0x3, 0x2, 0x2, 0x2, 0x38, 0x13f, 0x3, 0x2, 0x2, 0x2, 0x3a, 0x147, 0x3, 0x2, 0x2, 0x2, 0x3c, 0x14f, 0x3, 0x2, 0x2, 0x2, 0x3e, 0x157, 0x3, 0x2, 0x2, 0x2, 0x40, 0x43, 0x5, 0x4, 0x3, 0x2, 0x41, 0x43, 0x5, 0x14, 0xb, 0x2, 0x42, 0x40, 0x3, 0x2, 0x2, 0x2, 0x42, 0x41, 0x3, 0x2, 0x2, 0x2, 0x43, 0x44, 0x3, 0x2, 0x2, 0x2, 0x44, 0x42, 0x3, 0x2, 0x2, 0x2, 0x44, 0x45, 0x3, 0x2, 0x2, 0x2, 0x45, 0x3, 0x3, 0x2, 0x2, 0x2, 0x46, 0x49, 0x5, 0x6, 0x4, 0x2, 0x47, 0x49, 0x5, 0xe, 0x8, 0x2, 0x48, 0x46, 0x3, 0x2, 0x2, 0x2, 0x48, 0x47, 0x3, 0x2, 0x2, 0x2, 0x49, 0x5, 0x3, 0x2, 0x2, 0x2, 0x4a, 0x4b, 0x7, 0x3, 0x2, 0x2, 0x4b, 0x4c, 0x5, 0x8, 0x5, 0x2, 0x4c, 0x51, 0x5, 0xa, 0x6, 0x2, 0x4d, 0x4e, 0x7, 0x4, 0x2, 0x2, 0x4e, 0x50, 0x5, 0xa, 0x6, 0x2, 0x4f, 0x4d, 0x3, 0x2, 0x2, 0x2, 0x50, 0x53, 0x3, 0x2, 0x2, 0x2, 0x51, 0x4f, 0x3, 0x2, 0x2, 0x2, 0x51, 0x52, 0x3, 0x2, 0x2, 0x2, 0x52, 0x54, 0x3, 0x2, 0x2, 0x2, 0x53, 0x51, 0x3, 0x2, 0x2, 0x2, 0x54, 0x55, 0x7, 0x5, 0x2, 0x2, 0x55, 0x7, 0x3, 0x2, 0x2, 0x2, 0x56, 0x57, 0x9, 0x2, 0x2, 0x2, 0x57, 0x9, 0x3, 0x2, 0x2, 0x2, 0x58, 0x5f, 0x7, 0x26, 0x2, 0x2, 0x59, 0x5a, 0x7, 0x8, 0x2, 0x2, 0x5a, 0x5b, 0x5, 0x3e, 0x20, 0x2, 0x5b, 0x5c, 0x7, 0x9, 0x2, 0x2, 0x5c, 0x5e, 0x3, 0x2, 0x2, 0x2, 0x5d, 0x59, 0x3, 0x2, 0x2, 0x2, 0x5e, 0x61, 0x3, 0x2, 0x2, 0x2, 0x5f, 0x5d, 0x3, 0x2, 0x2, 0x2, 0x5f, 0x60, 0x3, 0x2, 0x2, 0x2, 0x60, 0x62, 0x3, 0x2, 0x2, 0x2, 0x61, 0x5f, 0x3, 0x2, 0x2, 0x2, 0x62, 0x63, 0x7, 0xa, 0x2, 0x2, 0x63, 0x64, 0x5, 0xc, 0x7, 0x2, 0x64, 0xb, 0x3, 0x2, 0x2, 0x2, 0x65, 0x73, 0x5, 0x3e, 0x20, 0x2, 0x66, 0x6f, 0x7, 0xb, 0x2, 0x2, 0x67, 0x6c, 0x5, 0xc, 0x7, 0x2, 0x68, 0x69, 0x7, 0x4, 0x2, 0x2, 0x69, 0x6b, 0x5, 0xc, 0x7, 0x2, 0x6a, 0x68, 0x3, 0x2, 0x2, 0x2, 0x6b, 0x6e, 0x3, 0x2, 0x2, 0x2, 0x6c, 0x6a, 0x3, 0x2, 0x2, 0x2, 0x6c, 0x6d, 0x3, 0x2, 0x2, 0x2, 0x6d, 0x70, 0x3, 0x2, 0x2, 0x2, 0x6e, 0x6c, 0x3, 0x2, 0x2, 0x2, 0x6f, 0x67, 0x3, 0x2, 0x2, 0x2, 0x6f, 0x70, 0x3, 0x2, 0x2, 0x2, 0x70, 0x71, 0x3, 0x2, 0x2, 0x2, 0x71, 0x73, 0x7, 0xc, 0x2, 0x2, 0x72, 0x65, 0x3, 0x2, 0x2, 0x2, 0x72, 0x66, 0x3, 0x2, 0x2, 0x2, 0x73, 0xd, 0x3, 0x2, 0x2, 0x2, 0x74, 0x75, 0x5, 0x8, 0x5, 0x2, 0x75, 0x7a, 0x5, 0x10, 0x9, 0x2, 0x76, 0x77, 0x7, 0x4, 0x2, 0x2, 0x77, 0x79, 0x5, 0x10, 0x9, 0x2, 0x78, 0x76, 0x3, 0x2, 0x2, 0x2, 0x79, 0x7c, 0x3, 0x2, 0x2, 0x2, 0x7a, 0x78, 0x3, 0x2, 0x2, 0x2, 0x7a, 0x7b, 0x3, 0x2, 0x2, 0x2, 0x7b, 0x7d, 0x3, 0x2, 0x2, 0x2, 0x7c, 0x7a, 0x3, 0x2, 0x2, 0x2, 0x7d, 0x7e, 0x7, 0x5, 0x2, 0x2, 0x7e, 0xf, 0x3, 0x2, 0x2, 0x2, 0x7f, 0x86, 0x7, 0x26, 0x2, 0x2, 0x80, 0x81, 0x7, 0x8, 0x2, 0x2, 0x81, 0x82, 0x5, 0x3e, 0x20, 0x2, 0x82, 0x83, 0x7, 0x9, 0x2, 0x2, 0x83, 0x85, 0x3, 0x2, 0x2, 0x2, 0x84, 0x80, 0x3, 0x2, 0x2, 0x2, 0x85, 0x88, 0x3, 0x2, 0x2, 0x2, 0x86, 0x84, 0x3, 0x2, 0x2, 0x2, 0x86, 0x87, 0x3, 0x2, 0x2, 0x2, 0x87, 0x96, 0x3, 0x2, 0x2, 0x2, 0x88, 0x86, 0x3, 0x2, 0x2, 0x2, 0x89, 0x90, 0x7, 0x26, 0x2, 0x2, 0x8a, 0x8b, 0x7, 0x8, 0x2, 0x2, 0x8b, 0x8c, 0x5, 0x3e, 0x20, 0x2, 0x8c, 0x8d, 0x7, 0x9, 0x2, 0x2, 0x8d, 0x8f, 0x3, 0x2, 0x2, 0x2, 0x8e, 0x8a, 0x3, 0x2, 0x2, 0x2, 0x8f, 0x92, 0x3, 0x2, 0x2, 0x2, 0x90, 0x8e, 0x3, 0x2, 0x2, 0x2, 0x90, 0x91, 0x3, 0x2, 0x2, 0x2, 0x91, 0x93, 0x3, 0x2, 0x2, 0x2, 0x92, 0x90, 0x3, 0x2, 0x2, 0x2, 0x93, 0x94, 0x7, 0xa, 0x2, 0x2, 0x94, 0x96, 0x5, 0x12, 0xa, 0x2, 0x95, 0x7f, 0x3, 0x2, 0x2, 0x2, 0x95, 0x89, 0x3, 0x2, 0x2, 0x2, 0x96, 0x11, 0x3, 0x2, 0x2, 0x2, 0x97, 0xa5, 0x5, 0x22, 0x12, 0x2, 0x98, 0xa1, 0x7, 0xb, 0x2, 0x2, 0x99, 0x9e, 0x5, 0x12, 0xa, 0x2, 0x9a, 0x9b, 0x7, 0x4, 0x2, 0x2, 0x9b, 0x9d, 0x5, 0x12, 0xa, 0x2, 0x9c, 0x9a, 0x3, 0x2, 0x2, 0x2, 0x9d, 0xa0, 0x3, 0x2, 0x2, 0x2, 0x9e, 0x9c, 0x3, 0x2, 0x2, 0x2, 0x9e, 0x9f, 0x3, 0x2, 0x2, 0x2, 0x9f, 0xa2, 0x3, 0x2, 0x2, 0x2, 0xa0, 0x9e, 0x3, 0x2, 0x2, 0x2, 0xa1, 0x99, 0x3, 0x2, 0x2, 0x2, 0xa1, 0xa2, 0x3, 0x2, 0x2, 0x2, 0xa2, 0xa3, 0x3, 0x2, 0x2, 0x2, 0xa3, 0xa5, 0x7, 0xc, 0x2, 0x2, 0xa4, 0x97, 0x3, 0x2, 0x2, 0x2, 0xa4, 0x98, 0x3, 0x2, 0x2, 0x2, 0xa5, 0x13, 0x3, 0x2, 0x2, 0x2, 0xa6, 0xa7, 0x5, 0x16, 0xc, 0x2, 0xa7, 0xa8, 0x7, 0x26, 0x2, 0x2, 0xa8, 0xaa, 0x7, 0xd, 0x2, 0x2, 0xa9, 0xab, 0x5, 0x18, 0xd, 0x2, 0xaa, 0xa9, 0x3, 0x2, 0x2, 0x2, 0xaa, 0xab, 0x3, 0x2, 0x2, 0x2, 0xab, 0xac, 0x3, 0x2, 0x2, 0x2, 0xac, 0xad, 0x7, 0xe, 0x2, 0x2, 0xad, 0xae, 0x5, 0x1c, 0xf, 0x2, 0xae, 0x15, 0x3, 0x2, 0x2, 0x2, 0xaf, 0xb0, 0x9, 0x3, 0x2, 0x2, 0xb0, 0x17, 0x3, 0x2, 0x2, 0x2, 0xb1, 0xb6, 0x5, 0x1a, 0xe, 0x2, 0xb2, 0xb3, 0x7, 0x4, 0x2, 0x2, 0xb3, 0xb5, 0x5, 0x1a, 0xe, 0x2, 0xb4, 0xb2, 0x3, 0x2, 0x2, 0x2, 0xb5, 0xb8, 0x3, 0x2, 0x2, 0x2, 0xb6, 0xb4, 0x3, 0x2, 0x2, 0x2, 0xb6, 0xb7, 0x3, 0x2, 0x2, 0x2, 0xb7, 0x19, 0x3, 0x2, 0x2, 0x2, 0xb8, 0xb6, 0x3, 0x2, 0x2, 0x2, 0xb9, 0xba, 0x5, 0x8, 0x5, 0x2, 0xba, 0xc6, 0x7, 0x26, 0x2, 0x2, 0xbb, 0xbc, 0x7, 0x8, 0x2, 0x2, 0xbc, 0xc3, 0x7, 0x9, 0x2, 0x2, 0xbd, 0xbe, 0x7, 0x8, 0x2, 0x2, 0xbe, 0xbf, 0x5, 0x22, 0x12, 0x2, 0xbf, 0xc0, 0x7, 0x9, 0x2, 0x2, 0xc0, 0xc2, 0x3, 0x2, 0x2, 0x2, 0xc1, 0xbd, 0x3, 0x2, 0x2, 0x2, 0xc2, 0xc5, 0x3, 0x2, 0x2, 0x2, 0xc3, 0xc1, 0x3, 0x2, 0x2, 0x2, 0xc3, 0xc4, 0x3, 0x2, 0x2, 0x2, 0xc4, 0xc7, 0x3, 0x2, 0x2, 0x2, 0xc5, 0xc3, 0x3, 0x2, 0x2, 0x2, 0xc6, 0xbb, 0x3, 0x2, 0x2, 0x2, 0xc6, 0xc7, 0x3, 0x2, 0x2, 0x2, 0xc7, 0x1b, 0x3, 0x2, 0x2, 0x2, 0xc8, 0xcc, 0x7, 0xb, 0x2, 0x2, 0xc9, 0xcb, 0x5, 0x1e, 0x10, 0x2, 0xca, 0xc9, 0x3, 0x2, 0x2, 0x2, 0xcb, 0xce, 0x3, 0x2, 0x2, 0x2, 0xcc, 0xca, 0x3, 0x2, 0x2, 0x2, 0xcc, 0xcd, 0x3, 0x2, 0x2, 0x2, 0xcd, 0xcf, 0x3, 0x2, 0x2, 0x2, 0xce, 0xcc, 0x3, 0x2, 0x2, 0x2, 0xcf, 0xd0, 0x7, 0xc, 0x2, 0x2, 0xd0, 0x1d, 0x3, 0x2, 0x2, 0x2, 0xd1, 0xd4, 0x5, 0x4, 0x3, 0x2, 0xd2, 0xd4, 0x5, 0x20, 0x11, 0x2, 0xd3, 0xd1, 0x3, 0x2, 0x2, 0x2, 0xd3, 0xd2, 0x3, 0x2, 0x2, 0x2, 0xd4, 0x1f, 0x3, 0x2, 0x2, 0x2, 0xd5, 0xd6, 0x5, 0x26, 0x14, 0x2, 0xd6, 0xd7, 0x7, 0xa, 0x2, 0x2, 0xd7, 0xd8, 0x5, 0x22, 0x12, 0x2, 0xd8, 0xd9, 0x7, 0x5, 0x2, 0x2, 0xd9, 0xf8, 0x3, 0x2, 0x2, 0x2, 0xda, 0xdc, 0x5, 0x22, 0x12, 0x2, 0xdb, 0xda, 0x3, 0x2, 0x2, 0x2, 0xdb, 0xdc, 0x3, 0x2, 0x2, 0x2, 0xdc, 0xdd, 0x3, 0x2, 0x2, 0x2, 0xdd, 0xf8, 0x7, 0x5, 0x2, 0x2, 0xde, 0xf8, 0x5, 0x1c, 0xf, 0x2, 0xdf, 0xe0, 0x7, 0x10, 0x2, 0x2, 0xe0, 0xe1, 0x7, 0xd, 0x2, 0x2, 0xe1, 0xe2, 0x5, 0x24, 0x13, 0x2, 0xe2, 0xe3, 0x7, 0xe, 0x2, 0x2, 0xe3, 0xe6, 0x5, 0x20, 0x11, 0x2, 0xe4, 0xe5, 0x7, 0x11, 0x2, 0x2, 0xe5, 0xe7, 0x5, 0x20, 0x11, 0x2, 0xe6, 0xe4, 0x3, 0x2, 0x2, 0x2, 0xe6, 0xe7, 0x3, 0x2, 0x2, 0x2, 0xe7, 0xf8, 0x3, 0x2, 0x2, 0x2, 0xe8, 0xe9, 0x7, 0x12, 0x2, 0x2, 0xe9, 0xea, 0x7, 0xd, 0x2, 0x2, 0xea, 0xeb, 0x5, 0x24, 0x13, 0x2, 0xeb, 0xec, 0x7, 0xe, 0x2, 0x2, 0xec, 0xed, 0x5, 0x20, 0x11, 0x2, 0xed, 0xf8, 0x3, 0x2, 0x2, 0x2, 0xee, 0xef, 0x7, 0x13, 0x2, 0x2, 0xef, 0xf8, 0x7, 0x5, 0x2, 0x2, 0xf0, 0xf1, 0x7, 0x14, 0x2, 0x2, 0xf1, 0xf8, 0x7, 0x5, 0x2, 0x2, 0xf2, 0xf4, 0x7, 0x15, 0x2, 0x2, 0xf3, 0xf5, 0x5, 0x22, 0x12, 0x2, 0xf4, 0xf3, 0x3, 0x2, 0x2, 0x2, 0xf4, 0xf5, 0x3, 0x2, 0x2, 0x2, 0xf5, 0xf6, 0x3, 0x2, 0x2, 0x2, 0xf6, 0xf8, 0x7, 0x5, 0x2, 0x2, 0xf7, 0xd5, 0x3, 0x2, 0x2, 0x2, 0xf7, 0xdb, 0x3, 0x2, 0x2, 0x2, 0xf7, 0xde, 0x3, 0x2, 0x2, 0x2, 0xf7, 0xdf, 0x3, 0x2, 0x2, 0x2, 0xf7, 0xe8, 0x3, 0x2, 0x2, 0x2, 0xf7, 0xee, 0x3, 0x2, 0x2, 0x2, 0xf7, 0xf0, 0x3, 0x2, 0x2, 0x2, 0xf7, 0xf2, 0x3, 0x2, 0x2, 0x2, 0xf8, 0x21, 0x3, 0x2, 0x2, 0x2, 0xf9, 0xfa, 0x5, 0x34, 0x1b, 0x2, 0xfa, 0x23, 0x3, 0x2, 0x2, 0x2, 0xfb, 0xfc, 0x5, 0x3c, 0x1f, 0x2, 0xfc, 0x25, 0x3, 0x2, 0x2, 0x2, 0xfd, 0x104, 0x7, 0x26, 0x2, 0x2, 0xfe, 0xff, 0x7, 0x8, 0x2, 0x2, 0xff, 0x100, 0x5, 0x22, 0x12, 0x2, 0x100, 0x101, 0x7, 0x9, 0x2, 0x2, 0x101, 0x103, 0x3, 0x2, 0x2, 0x2, 0x102, 0xfe, 0x3, 0x2, 0x2, 0x2, 0x103, 0x106, 0x3, 0x2, 0x2, 0x2, 0x104, 0x102, 0x3, 0x2, 0x2, 0x2, 0x104, 0x105, 0x3, 0x2, 0x2, 0x2, 0x105, 0x27, 0x3, 0x2, 0x2, 0x2, 0x106, 0x104, 0x3, 0x2, 0x2, 0x2, 0x107, 0x108, 0x7, 0xd, 0x2, 0x2, 0x108, 0x109, 0x5, 0x22, 0x12, 0x2, 0x109, 0x10a, 0x7, 0xe, 0x2, 0x2, 0x10a, 0x10e, 0x3, 0x2, 0x2, 0x2, 0x10b, 0x10e, 0x5, 0x26, 0x14, 0x2, 0x10c, 0x10e, 0x5, 0x2a, 0x16, 0x2, 0x10d, 0x107, 0x3, 0x2, 0x2, 0x2, 0x10d, 0x10b, 0x3, 0x2, 0x2, 0x2, 0x10d, 0x10c, 0x3, 0x2, 0x2, 0x2, 0x10e, 0x29, 0x3, 0x2, 0x2, 0x2, 0x10f, 0x110, 0x9, 0x4, 0x2, 0x2, 0x110, 0x2b, 0x3, 0x2, 0x2, 0x2, 0x111, 0x11c, 0x5, 0x28, 0x15, 0x2, 0x112, 0x113, 0x7, 0x26, 0x2, 0x2, 0x113, 0x115, 0x7, 0xd, 0x2, 0x2, 0x114, 0x116, 0x5, 0x30, 0x19, 0x2, 0x115, 0x114, 0x3, 0x2, 0x2, 0x2, 0x115, 0x116, 0x3, 0x2, 0x2, 0x2, 0x116, 0x117, 0x3, 0x2, 0x2, 0x2, 0x117, 0x11c, 0x7, 0xe, 0x2, 0x2, 0x118, 0x119, 0x5, 0x2e, 0x18, 0x2, 0x119, 0x11a, 0x5, 0x2c, 0x17, 0x2, 0x11a, 0x11c, 0x3, 0x2, 0x2, 0x2, 0x11b, 0x111, 0x3, 0x2, 0x2, 0x2, 0x11b, 0x112, 0x3, 0x2, 0x2, 0x2, 0x11b, 0x118, 0x3, 0x2, 0x2, 0x2, 0x11c, 0x2d, 0x3, 0x2, 0x2, 0x2, 0x11d, 0x11e, 0x9, 0x5, 0x2, 0x2, 0x11e, 0x2f, 0x3, 0x2, 0x2, 0x2, 0x11f, 0x124, 0x5, 0x22, 0x12, 0x2, 0x120, 0x121, 0x7, 0x4, 0x2, 0x2, 0x121, 0x123, 0x5, 0x22, 0x12, 0x2, 0x122, 0x120, 0x3, 0x2, 0x2, 0x2, 0x123, 0x126, 0x3, 0x2, 0x2, 0x2, 0x124, 0x122, 0x3, 0x2, 0x2, 0x2, 0x124, 0x125, 0x3, 0x2, 0x2, 0x2, 0x125, 0x31, 0x3, 0x2, 0x2, 0x2, 0x126, 0x124, 0x3, 0x2, 0x2, 0x2, 0x127, 0x12c, 0x5, 0x2c, 0x17, 0x2, 0x128, 0x129, 0x9, 0x6, 0x2, 0x2, 0x129, 0x12b, 0x5, 0x2c, 0x17, 0x2, 0x12a, 0x128, 0x3, 0x2, 0x2, 0x2, 0x12b, 0x12e, 0x3, 0x2, 0x2, 0x2, 0x12c, 0x12a, 0x3, 0x2, 0x2, 0x2, 0x12c, 0x12d, 0x3, 0x2, 0x2, 0x2, 0x12d, 0x33, 0x3, 0x2, 0x2, 0x2, 0x12e, 0x12c, 0x3, 0x2, 0x2, 0x2, 0x12f, 0x134, 0x5, 0x32, 0x1a, 0x2, 0x130, 0x131, 0x9, 0x7, 0x2, 0x2, 0x131, 0x133, 0x5, 0x32, 0x1a, 0x2, 0x132, 0x130, 0x3, 0x2, 0x2, 0x2, 0x133, 0x136, 0x3, 0x2, 0x2, 0x2, 0x134, 0x132, 0x3, 0x2, 0x2, 0x2, 0x134, 0x135, 0x3, 0x2, 0x2, 0x2, 0x135, 0x35, 0x3, 0x2, 0x2, 0x2, 0x136, 0x134, 0x3, 0x2, 0x2, 0x2, 0x137, 0x13c, 0x5, 0x34, 0x1b, 0x2, 0x138, 0x139, 0x9, 0x8, 0x2, 0x2, 0x139, 0x13b, 0x5, 0x34, 0x1b, 0x2, 0x13a, 0x138, 0x3, 0x2, 0x2, 0x2, 0x13b, 0x13e, 0x3, 0x2, 0x2, 0x2, 0x13c, 0x13a, 0x3, 0x2, 0x2, 0x2, 0x13c, 0x13d, 0x3, 0x2, 0x2, 0x2, 0x13d, 0x37, 0x3, 0x2, 0x2, 0x2, 0x13e, 0x13c, 0x3, 0x2, 0x2, 0x2, 0x13f, 0x144, 0x5, 0x36, 0x1c, 0x2, 0x140, 0x141, 0x9, 0x9, 0x2, 0x2, 0x141, 0x143, 0x5, 0x36, 0x1c, 0x2, 0x142, 0x140, 0x3, 0x2, 0x2, 0x2, 0x143, 0x146, 0x3, 0x2, 0x2, 0x2, 0x144, 0x142, 0x3, 0x2, 0x2, 0x2, 0x144, 0x145, 0x3, 0x2, 0x2, 0x2, 0x145, 0x39, 0x3, 0x2, 0x2, 0x2, 0x146, 0x144, 0x3, 0x2, 0x2, 0x2, 0x147, 0x14c, 0x5, 0x38, 0x1d, 0x2, 0x148, 0x149, 0x7, 0x22, 0x2, 0x2, 0x149, 0x14b, 0x5, 0x38, 0x1d, 0x2, 0x14a, 0x148, 0x3, 0x2, 0x2, 0x2, 0x14b, 0x14e, 0x3, 0x2, 0x2, 0x2, 0x14c, 0x14a, 0x3, 0x2, 0x2, 0x2, 0x14c, 0x14d, 0x3, 0x2, 0x2, 0x2, 0x14d, 0x3b, 0x3, 0x2, 0x2, 0x2, 0x14e, 0x14c, 0x3, 0x2, 0x2, 0x2, 0x14f, 0x154, 0x5, 0x3a, 0x1e, 0x2, 0x150, 0x151, 0x7, 0x23, 0x2, 0x2, 0x151, 0x153, 0x5, 0x3a, 0x1e, 0x2, 0x152, 0x150, 0x3, 0x2, 0x2, 0x2, 0x153, 0x156, 0x3, 0x2, 0x2, 0x2, 0x154, 0x152, 0x3, 0x2, 0x2, 0x2, 0x154, 0x155, 0x3, 0x2, 0x2, 0x2, 0x155, 0x3d, 0x3, 0x2, 0x2, 0x2, 0x156, 0x154, 0x3, 0x2, 0x2, 0x2, 0x157, 0x158, 0x5, 0x34, 0x1b, 0x2, 0x158, 0x3f, 0x3, 0x2, 0x2, 0x2, 0x26, 0x42, 0x44, 0x48, 0x51, 0x5f, 0x6c, 0x6f, 0x72, 0x7a, 0x86, 0x90, 0x95, 0x9e, 0xa1, 0xa4, 0xaa, 0xb6, 0xc3, 0xc6, 0xcc, 0xd3, 0xdb, 0xe6, 0xf4, 0xf7, 0x104, 0x10d, 0x115, 0x11b, 0x124, 0x12c, 0x134, 0x13c, 0x144, 0x14c, 0x154, }; atn::ATNDeserializer deserializer; _atn = deserializer.deserialize(_serializedATN); size_t count = _atn.getNumberOfDecisions(); _decisionToDFA.reserve(count); for (size_t i = 0; i < count; i++) { _decisionToDFA.emplace_back(_atn.getDecisionState(i), i); } } SysYParser::Initializer SysYParser::_init;