// Generated from /workspace/millet-porridge-III/grammar/GoParser.g4 by ANTLR 4.9.3 #include "GoParserListener.h" #include "GoParser.h" using namespace antlrcpp; using namespace antlr4; GoParser::GoParser(TokenStream *input) : Parser(input) { _interpreter = new atn::ParserATNSimulator(this, _atn, _decisionToDFA, _sharedContextCache); } GoParser::~GoParser() { delete _interpreter; } std::string GoParser::getGrammarFileName() const { return "GoParser.g4"; } const std::vector& GoParser::getRuleNames() const { return _ruleNames; } dfa::Vocabulary& GoParser::getVocabulary() const { return _vocabulary; } //----------------- SourceFileContext ------------------------------------------------------------------ GoParser::SourceFileContext::SourceFileContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } GoParser::PackageClauseContext* GoParser::SourceFileContext::packageClause() { return getRuleContext(0); } tree::TerminalNode* GoParser::SourceFileContext::EOF() { return getToken(GoParser::EOF, 0); } std::vector GoParser::SourceFileContext::eoss() { return getRuleContexts(); } GoParser::EossContext* GoParser::SourceFileContext::eoss(size_t i) { return getRuleContext(i); } std::vector GoParser::SourceFileContext::importDecl() { return getRuleContexts(); } GoParser::ImportDeclContext* GoParser::SourceFileContext::importDecl(size_t i) { return getRuleContext(i); } std::vector GoParser::SourceFileContext::functionDecl() { return getRuleContexts(); } GoParser::FunctionDeclContext* GoParser::SourceFileContext::functionDecl(size_t i) { return getRuleContext(i); } std::vector GoParser::SourceFileContext::methodDecl() { return getRuleContexts(); } GoParser::MethodDeclContext* GoParser::SourceFileContext::methodDecl(size_t i) { return getRuleContext(i); } std::vector GoParser::SourceFileContext::declaration() { return getRuleContexts(); } GoParser::DeclarationContext* GoParser::SourceFileContext::declaration(size_t i) { return getRuleContext(i); } size_t GoParser::SourceFileContext::getRuleIndex() const { return GoParser::RuleSourceFile; } void GoParser::SourceFileContext::enterRule(tree::ParseTreeListener *listener) { auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->enterSourceFile(this); } void GoParser::SourceFileContext::exitRule(tree::ParseTreeListener *listener) { auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->exitSourceFile(this); } GoParser::SourceFileContext* GoParser::sourceFile() { SourceFileContext *_localctx = _tracker.createInstance(_ctx, getState()); enterRule(_localctx, 0, GoParser::RuleSourceFile); size_t _la = 0; #if __cplusplus > 201703L auto onExit = finally([=, this] { #else auto onExit = finally([=] { #endif exitRule(); }); try { enterOuterAlt(_localctx, 1); setState(198); packageClause(); setState(202); _errHandler->sync(this); _la = _input->LA(1); while ((((_la & ~ 0x3fULL) == 0) && ((1ULL << _la) & ((1ULL << GoParser::SEMI) | (1ULL << GoParser::HUANHANG) | (1ULL << GoParser::HUANHANGG) | (1ULL << GoParser::EOSSS))) != 0)) { setState(199); eoss(); setState(204); _errHandler->sync(this); _la = _input->LA(1); } setState(214); _errHandler->sync(this); _la = _input->LA(1); while (_la == GoParser::IMPORT) { setState(205); importDecl(); setState(209); _errHandler->sync(this); _la = _input->LA(1); while ((((_la & ~ 0x3fULL) == 0) && ((1ULL << _la) & ((1ULL << GoParser::SEMI) | (1ULL << GoParser::HUANHANG) | (1ULL << GoParser::HUANHANGG) | (1ULL << GoParser::EOSSS))) != 0)) { setState(206); eoss(); setState(211); _errHandler->sync(this); _la = _input->LA(1); } setState(216); _errHandler->sync(this); _la = _input->LA(1); } setState(230); _errHandler->sync(this); _la = _input->LA(1); while ((((_la & ~ 0x3fULL) == 0) && ((1ULL << _la) & ((1ULL << GoParser::FUNC) | (1ULL << GoParser::CONST) | (1ULL << GoParser::TYPE) | (1ULL << GoParser::VAR))) != 0)) { setState(220); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 3, _ctx)) { case 1: { setState(217); functionDecl(); break; } case 2: { setState(218); methodDecl(); break; } case 3: { setState(219); declaration(); break; } default: break; } setState(225); _errHandler->sync(this); _la = _input->LA(1); while ((((_la & ~ 0x3fULL) == 0) && ((1ULL << _la) & ((1ULL << GoParser::SEMI) | (1ULL << GoParser::HUANHANG) | (1ULL << GoParser::HUANHANGG) | (1ULL << GoParser::EOSSS))) != 0)) { setState(222); eoss(); setState(227); _errHandler->sync(this); _la = _input->LA(1); } setState(232); _errHandler->sync(this); _la = _input->LA(1); } setState(233); match(GoParser::EOF); } catch (RecognitionException &e) { _errHandler->reportError(this, e); _localctx->exception = std::current_exception(); _errHandler->recover(this, _localctx->exception); } return _localctx; } //----------------- PackageClauseContext ------------------------------------------------------------------ GoParser::PackageClauseContext::PackageClauseContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } tree::TerminalNode* GoParser::PackageClauseContext::PACKAGE() { return getToken(GoParser::PACKAGE, 0); } tree::TerminalNode* GoParser::PackageClauseContext::IDENTIFIER() { return getToken(GoParser::IDENTIFIER, 0); } size_t GoParser::PackageClauseContext::getRuleIndex() const { return GoParser::RulePackageClause; } void GoParser::PackageClauseContext::enterRule(tree::ParseTreeListener *listener) { auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->enterPackageClause(this); } void GoParser::PackageClauseContext::exitRule(tree::ParseTreeListener *listener) { auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->exitPackageClause(this); } GoParser::PackageClauseContext* GoParser::packageClause() { PackageClauseContext *_localctx = _tracker.createInstance(_ctx, getState()); enterRule(_localctx, 2, GoParser::RulePackageClause); #if __cplusplus > 201703L auto onExit = finally([=, this] { #else auto onExit = finally([=] { #endif exitRule(); }); try { enterOuterAlt(_localctx, 1); setState(235); match(GoParser::PACKAGE); setState(236); antlrcpp::downCast(_localctx)->packageName = match(GoParser::IDENTIFIER); } catch (RecognitionException &e) { _errHandler->reportError(this, e); _localctx->exception = std::current_exception(); _errHandler->recover(this, _localctx->exception); } return _localctx; } //----------------- ImportDeclContext ------------------------------------------------------------------ GoParser::ImportDeclContext::ImportDeclContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } tree::TerminalNode* GoParser::ImportDeclContext::IMPORT() { return getToken(GoParser::IMPORT, 0); } std::vector GoParser::ImportDeclContext::importSpec() { return getRuleContexts(); } GoParser::ImportSpecContext* GoParser::ImportDeclContext::importSpec(size_t i) { return getRuleContext(i); } tree::TerminalNode* GoParser::ImportDeclContext::L_PAREN() { return getToken(GoParser::L_PAREN, 0); } tree::TerminalNode* GoParser::ImportDeclContext::R_PAREN() { return getToken(GoParser::R_PAREN, 0); } std::vector GoParser::ImportDeclContext::eoss() { return getRuleContexts(); } GoParser::EossContext* GoParser::ImportDeclContext::eoss(size_t i) { return getRuleContext(i); } size_t GoParser::ImportDeclContext::getRuleIndex() const { return GoParser::RuleImportDecl; } void GoParser::ImportDeclContext::enterRule(tree::ParseTreeListener *listener) { auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->enterImportDecl(this); } void GoParser::ImportDeclContext::exitRule(tree::ParseTreeListener *listener) { auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->exitImportDecl(this); } GoParser::ImportDeclContext* GoParser::importDecl() { ImportDeclContext *_localctx = _tracker.createInstance(_ctx, getState()); enterRule(_localctx, 4, GoParser::RuleImportDecl); size_t _la = 0; #if __cplusplus > 201703L auto onExit = finally([=, this] { #else auto onExit = finally([=] { #endif exitRule(); }); try { enterOuterAlt(_localctx, 1); setState(238); match(GoParser::IMPORT); setState(250); _errHandler->sync(this); switch (_input->LA(1)) { case GoParser::IDENTIFIER: case GoParser::DOT: case GoParser::RAW_STRING_LIT: case GoParser::INTERPRETED_STRING_LIT: { setState(239); importSpec(); break; } case GoParser::L_PAREN: { setState(240); match(GoParser::L_PAREN); setState(246); _errHandler->sync(this); _la = _input->LA(1); while (((((_la - 27) & ~ 0x3fULL) == 0) && ((1ULL << (_la - 27)) & ((1ULL << (GoParser::IDENTIFIER - 27)) | (1ULL << (GoParser::DOT - 27)) | (1ULL << (GoParser::RAW_STRING_LIT - 27)) | (1ULL << (GoParser::INTERPRETED_STRING_LIT - 27)))) != 0)) { setState(241); importSpec(); setState(242); eoss(); setState(248); _errHandler->sync(this); _la = _input->LA(1); } setState(249); match(GoParser::R_PAREN); break; } default: throw NoViableAltException(this); } } catch (RecognitionException &e) { _errHandler->reportError(this, e); _localctx->exception = std::current_exception(); _errHandler->recover(this, _localctx->exception); } return _localctx; } //----------------- ImportSpecContext ------------------------------------------------------------------ GoParser::ImportSpecContext::ImportSpecContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } GoParser::ImportPathContext* GoParser::ImportSpecContext::importPath() { return getRuleContext(0); } tree::TerminalNode* GoParser::ImportSpecContext::DOT() { return getToken(GoParser::DOT, 0); } tree::TerminalNode* GoParser::ImportSpecContext::IDENTIFIER() { return getToken(GoParser::IDENTIFIER, 0); } size_t GoParser::ImportSpecContext::getRuleIndex() const { return GoParser::RuleImportSpec; } void GoParser::ImportSpecContext::enterRule(tree::ParseTreeListener *listener) { auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->enterImportSpec(this); } void GoParser::ImportSpecContext::exitRule(tree::ParseTreeListener *listener) { auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->exitImportSpec(this); } GoParser::ImportSpecContext* GoParser::importSpec() { ImportSpecContext *_localctx = _tracker.createInstance(_ctx, getState()); enterRule(_localctx, 6, GoParser::RuleImportSpec); size_t _la = 0; #if __cplusplus > 201703L auto onExit = finally([=, this] { #else auto onExit = finally([=] { #endif exitRule(); }); try { enterOuterAlt(_localctx, 1); setState(253); _errHandler->sync(this); _la = _input->LA(1); if (_la == GoParser::IDENTIFIER || _la == GoParser::DOT) { setState(252); antlrcpp::downCast(_localctx)->alias = _input->LT(1); _la = _input->LA(1); if (!(_la == GoParser::IDENTIFIER || _la == GoParser::DOT)) { antlrcpp::downCast(_localctx)->alias = _errHandler->recoverInline(this); } else { _errHandler->reportMatch(this); consume(); } } setState(255); importPath(); } catch (RecognitionException &e) { _errHandler->reportError(this, e); _localctx->exception = std::current_exception(); _errHandler->recover(this, _localctx->exception); } return _localctx; } //----------------- ImportPathContext ------------------------------------------------------------------ GoParser::ImportPathContext::ImportPathContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } GoParser::String_Context* GoParser::ImportPathContext::string_() { return getRuleContext(0); } size_t GoParser::ImportPathContext::getRuleIndex() const { return GoParser::RuleImportPath; } void GoParser::ImportPathContext::enterRule(tree::ParseTreeListener *listener) { auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->enterImportPath(this); } void GoParser::ImportPathContext::exitRule(tree::ParseTreeListener *listener) { auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->exitImportPath(this); } GoParser::ImportPathContext* GoParser::importPath() { ImportPathContext *_localctx = _tracker.createInstance(_ctx, getState()); enterRule(_localctx, 8, GoParser::RuleImportPath); #if __cplusplus > 201703L auto onExit = finally([=, this] { #else auto onExit = finally([=] { #endif exitRule(); }); try { enterOuterAlt(_localctx, 1); setState(257); string_(); } catch (RecognitionException &e) { _errHandler->reportError(this, e); _localctx->exception = std::current_exception(); _errHandler->recover(this, _localctx->exception); } return _localctx; } //----------------- DeclarationContext ------------------------------------------------------------------ GoParser::DeclarationContext::DeclarationContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } GoParser::ConstDeclContext* GoParser::DeclarationContext::constDecl() { return getRuleContext(0); } GoParser::TypeDeclContext* GoParser::DeclarationContext::typeDecl() { return getRuleContext(0); } GoParser::VarDeclContext* GoParser::DeclarationContext::varDecl() { return getRuleContext(0); } size_t GoParser::DeclarationContext::getRuleIndex() const { return GoParser::RuleDeclaration; } void GoParser::DeclarationContext::enterRule(tree::ParseTreeListener *listener) { auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->enterDeclaration(this); } void GoParser::DeclarationContext::exitRule(tree::ParseTreeListener *listener) { auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->exitDeclaration(this); } GoParser::DeclarationContext* GoParser::declaration() { DeclarationContext *_localctx = _tracker.createInstance(_ctx, getState()); enterRule(_localctx, 10, GoParser::RuleDeclaration); #if __cplusplus > 201703L auto onExit = finally([=, this] { #else auto onExit = finally([=] { #endif exitRule(); }); try { setState(262); _errHandler->sync(this); switch (_input->LA(1)) { case GoParser::CONST: { enterOuterAlt(_localctx, 1); setState(259); constDecl(); break; } case GoParser::TYPE: { enterOuterAlt(_localctx, 2); setState(260); typeDecl(); break; } case GoParser::VAR: { enterOuterAlt(_localctx, 3); setState(261); 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 ------------------------------------------------------------------ GoParser::ConstDeclContext::ConstDeclContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } tree::TerminalNode* GoParser::ConstDeclContext::CONST() { return getToken(GoParser::CONST, 0); } std::vector GoParser::ConstDeclContext::constSpec() { return getRuleContexts(); } GoParser::ConstSpecContext* GoParser::ConstDeclContext::constSpec(size_t i) { return getRuleContext(i); } tree::TerminalNode* GoParser::ConstDeclContext::L_PAREN() { return getToken(GoParser::L_PAREN, 0); } tree::TerminalNode* GoParser::ConstDeclContext::R_PAREN() { return getToken(GoParser::R_PAREN, 0); } std::vector GoParser::ConstDeclContext::eoss() { return getRuleContexts(); } GoParser::EossContext* GoParser::ConstDeclContext::eoss(size_t i) { return getRuleContext(i); } size_t GoParser::ConstDeclContext::getRuleIndex() const { return GoParser::RuleConstDecl; } void GoParser::ConstDeclContext::enterRule(tree::ParseTreeListener *listener) { auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->enterConstDecl(this); } void GoParser::ConstDeclContext::exitRule(tree::ParseTreeListener *listener) { auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->exitConstDecl(this); } GoParser::ConstDeclContext* GoParser::constDecl() { ConstDeclContext *_localctx = _tracker.createInstance(_ctx, getState()); enterRule(_localctx, 12, GoParser::RuleConstDecl); size_t _la = 0; #if __cplusplus > 201703L auto onExit = finally([=, this] { #else auto onExit = finally([=] { #endif exitRule(); }); try { enterOuterAlt(_localctx, 1); setState(264); match(GoParser::CONST); setState(276); _errHandler->sync(this); switch (_input->LA(1)) { case GoParser::IDENTIFIER: { setState(265); constSpec(); break; } case GoParser::L_PAREN: { setState(266); match(GoParser::L_PAREN); setState(272); _errHandler->sync(this); _la = _input->LA(1); while (_la == GoParser::IDENTIFIER) { setState(267); constSpec(); setState(268); eoss(); setState(274); _errHandler->sync(this); _la = _input->LA(1); } setState(275); match(GoParser::R_PAREN); break; } default: throw NoViableAltException(this); } } catch (RecognitionException &e) { _errHandler->reportError(this, e); _localctx->exception = std::current_exception(); _errHandler->recover(this, _localctx->exception); } return _localctx; } //----------------- ConstSpecContext ------------------------------------------------------------------ GoParser::ConstSpecContext::ConstSpecContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } GoParser::IdentifierListContext* GoParser::ConstSpecContext::identifierList() { return getRuleContext(0); } tree::TerminalNode* GoParser::ConstSpecContext::ASSIGN() { return getToken(GoParser::ASSIGN, 0); } GoParser::ExpressionListContext* GoParser::ConstSpecContext::expressionList() { return getRuleContext(0); } GoParser::Type_Context* GoParser::ConstSpecContext::type_() { return getRuleContext(0); } size_t GoParser::ConstSpecContext::getRuleIndex() const { return GoParser::RuleConstSpec; } void GoParser::ConstSpecContext::enterRule(tree::ParseTreeListener *listener) { auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->enterConstSpec(this); } void GoParser::ConstSpecContext::exitRule(tree::ParseTreeListener *listener) { auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->exitConstSpec(this); } GoParser::ConstSpecContext* GoParser::constSpec() { ConstSpecContext *_localctx = _tracker.createInstance(_ctx, getState()); enterRule(_localctx, 14, GoParser::RuleConstSpec); size_t _la = 0; #if __cplusplus > 201703L auto onExit = finally([=, this] { #else auto onExit = finally([=] { #endif exitRule(); }); try { enterOuterAlt(_localctx, 1); setState(278); identifierList(); setState(284); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 13, _ctx)) { case 1: { setState(280); _errHandler->sync(this); _la = _input->LA(1); if (((((_la - 3) & ~ 0x3fULL) == 0) && ((1ULL << (_la - 3)) & ((1ULL << (GoParser::FUNC - 3)) | (1ULL << (GoParser::INTERFACE - 3)) | (1ULL << (GoParser::MAP - 3)) | (1ULL << (GoParser::STRUCT - 3)) | (1ULL << (GoParser::CHAN - 3)) | (1ULL << (GoParser::IDENTIFIER - 3)) | (1ULL << (GoParser::L_PAREN - 3)) | (1ULL << (GoParser::L_BRACKET - 3)) | (1ULL << (GoParser::STAR - 3)) | (1ULL << (GoParser::RECEIVE - 3)))) != 0)) { setState(279); type_(); } setState(282); match(GoParser::ASSIGN); setState(283); expressionList(); break; } default: break; } } catch (RecognitionException &e) { _errHandler->reportError(this, e); _localctx->exception = std::current_exception(); _errHandler->recover(this, _localctx->exception); } return _localctx; } //----------------- IdentifierListContext ------------------------------------------------------------------ GoParser::IdentifierListContext::IdentifierListContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } std::vector GoParser::IdentifierListContext::IDENTIFIER() { return getTokens(GoParser::IDENTIFIER); } tree::TerminalNode* GoParser::IdentifierListContext::IDENTIFIER(size_t i) { return getToken(GoParser::IDENTIFIER, i); } std::vector GoParser::IdentifierListContext::COMMA() { return getTokens(GoParser::COMMA); } tree::TerminalNode* GoParser::IdentifierListContext::COMMA(size_t i) { return getToken(GoParser::COMMA, i); } size_t GoParser::IdentifierListContext::getRuleIndex() const { return GoParser::RuleIdentifierList; } void GoParser::IdentifierListContext::enterRule(tree::ParseTreeListener *listener) { auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->enterIdentifierList(this); } void GoParser::IdentifierListContext::exitRule(tree::ParseTreeListener *listener) { auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->exitIdentifierList(this); } GoParser::IdentifierListContext* GoParser::identifierList() { IdentifierListContext *_localctx = _tracker.createInstance(_ctx, getState()); enterRule(_localctx, 16, GoParser::RuleIdentifierList); size_t _la = 0; #if __cplusplus > 201703L auto onExit = finally([=, this] { #else auto onExit = finally([=] { #endif exitRule(); }); try { enterOuterAlt(_localctx, 1); setState(286); match(GoParser::IDENTIFIER); setState(291); _errHandler->sync(this); _la = _input->LA(1); while (_la == GoParser::COMMA) { setState(287); match(GoParser::COMMA); setState(288); match(GoParser::IDENTIFIER); setState(293); _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; } //----------------- ExpressionListContext ------------------------------------------------------------------ GoParser::ExpressionListContext::ExpressionListContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } std::vector GoParser::ExpressionListContext::expression() { return getRuleContexts(); } GoParser::ExpressionContext* GoParser::ExpressionListContext::expression(size_t i) { return getRuleContext(i); } std::vector GoParser::ExpressionListContext::COMMA() { return getTokens(GoParser::COMMA); } tree::TerminalNode* GoParser::ExpressionListContext::COMMA(size_t i) { return getToken(GoParser::COMMA, i); } size_t GoParser::ExpressionListContext::getRuleIndex() const { return GoParser::RuleExpressionList; } void GoParser::ExpressionListContext::enterRule(tree::ParseTreeListener *listener) { auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->enterExpressionList(this); } void GoParser::ExpressionListContext::exitRule(tree::ParseTreeListener *listener) { auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->exitExpressionList(this); } GoParser::ExpressionListContext* GoParser::expressionList() { ExpressionListContext *_localctx = _tracker.createInstance(_ctx, getState()); enterRule(_localctx, 18, GoParser::RuleExpressionList); #if __cplusplus > 201703L auto onExit = finally([=, this] { #else auto onExit = finally([=] { #endif exitRule(); }); try { size_t alt; enterOuterAlt(_localctx, 1); setState(294); expression(0); setState(299); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 15, _ctx); while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1) { setState(295); match(GoParser::COMMA); setState(296); expression(0); } setState(301); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 15, _ctx); } } catch (RecognitionException &e) { _errHandler->reportError(this, e); _localctx->exception = std::current_exception(); _errHandler->recover(this, _localctx->exception); } return _localctx; } //----------------- TypeDeclContext ------------------------------------------------------------------ GoParser::TypeDeclContext::TypeDeclContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } tree::TerminalNode* GoParser::TypeDeclContext::TYPE() { return getToken(GoParser::TYPE, 0); } std::vector GoParser::TypeDeclContext::typeSpec() { return getRuleContexts(); } GoParser::TypeSpecContext* GoParser::TypeDeclContext::typeSpec(size_t i) { return getRuleContext(i); } tree::TerminalNode* GoParser::TypeDeclContext::L_PAREN() { return getToken(GoParser::L_PAREN, 0); } tree::TerminalNode* GoParser::TypeDeclContext::R_PAREN() { return getToken(GoParser::R_PAREN, 0); } std::vector GoParser::TypeDeclContext::eoss() { return getRuleContexts(); } GoParser::EossContext* GoParser::TypeDeclContext::eoss(size_t i) { return getRuleContext(i); } size_t GoParser::TypeDeclContext::getRuleIndex() const { return GoParser::RuleTypeDecl; } void GoParser::TypeDeclContext::enterRule(tree::ParseTreeListener *listener) { auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->enterTypeDecl(this); } void GoParser::TypeDeclContext::exitRule(tree::ParseTreeListener *listener) { auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->exitTypeDecl(this); } GoParser::TypeDeclContext* GoParser::typeDecl() { TypeDeclContext *_localctx = _tracker.createInstance(_ctx, getState()); enterRule(_localctx, 20, GoParser::RuleTypeDecl); size_t _la = 0; #if __cplusplus > 201703L auto onExit = finally([=, this] { #else auto onExit = finally([=] { #endif exitRule(); }); try { enterOuterAlt(_localctx, 1); setState(302); match(GoParser::TYPE); setState(314); _errHandler->sync(this); switch (_input->LA(1)) { case GoParser::IDENTIFIER: { setState(303); typeSpec(); break; } case GoParser::L_PAREN: { setState(304); match(GoParser::L_PAREN); setState(310); _errHandler->sync(this); _la = _input->LA(1); while (_la == GoParser::IDENTIFIER) { setState(305); typeSpec(); setState(306); eoss(); setState(312); _errHandler->sync(this); _la = _input->LA(1); } setState(313); match(GoParser::R_PAREN); break; } default: throw NoViableAltException(this); } } catch (RecognitionException &e) { _errHandler->reportError(this, e); _localctx->exception = std::current_exception(); _errHandler->recover(this, _localctx->exception); } return _localctx; } //----------------- TypeSpecContext ------------------------------------------------------------------ GoParser::TypeSpecContext::TypeSpecContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } tree::TerminalNode* GoParser::TypeSpecContext::IDENTIFIER() { return getToken(GoParser::IDENTIFIER, 0); } GoParser::Type_Context* GoParser::TypeSpecContext::type_() { return getRuleContext(0); } tree::TerminalNode* GoParser::TypeSpecContext::ASSIGN() { return getToken(GoParser::ASSIGN, 0); } size_t GoParser::TypeSpecContext::getRuleIndex() const { return GoParser::RuleTypeSpec; } void GoParser::TypeSpecContext::enterRule(tree::ParseTreeListener *listener) { auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->enterTypeSpec(this); } void GoParser::TypeSpecContext::exitRule(tree::ParseTreeListener *listener) { auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->exitTypeSpec(this); } GoParser::TypeSpecContext* GoParser::typeSpec() { TypeSpecContext *_localctx = _tracker.createInstance(_ctx, getState()); enterRule(_localctx, 22, GoParser::RuleTypeSpec); size_t _la = 0; #if __cplusplus > 201703L auto onExit = finally([=, this] { #else auto onExit = finally([=] { #endif exitRule(); }); try { enterOuterAlt(_localctx, 1); setState(316); match(GoParser::IDENTIFIER); setState(318); _errHandler->sync(this); _la = _input->LA(1); if (_la == GoParser::ASSIGN) { setState(317); match(GoParser::ASSIGN); } setState(320); type_(); } catch (RecognitionException &e) { _errHandler->reportError(this, e); _localctx->exception = std::current_exception(); _errHandler->recover(this, _localctx->exception); } return _localctx; } //----------------- FunctionDeclContext ------------------------------------------------------------------ GoParser::FunctionDeclContext::FunctionDeclContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } tree::TerminalNode* GoParser::FunctionDeclContext::FUNC() { return getToken(GoParser::FUNC, 0); } tree::TerminalNode* GoParser::FunctionDeclContext::IDENTIFIER() { return getToken(GoParser::IDENTIFIER, 0); } GoParser::SignatureContext* GoParser::FunctionDeclContext::signature() { return getRuleContext(0); } GoParser::BlockContext* GoParser::FunctionDeclContext::block() { return getRuleContext(0); } size_t GoParser::FunctionDeclContext::getRuleIndex() const { return GoParser::RuleFunctionDecl; } void GoParser::FunctionDeclContext::enterRule(tree::ParseTreeListener *listener) { auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->enterFunctionDecl(this); } void GoParser::FunctionDeclContext::exitRule(tree::ParseTreeListener *listener) { auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->exitFunctionDecl(this); } GoParser::FunctionDeclContext* GoParser::functionDecl() { FunctionDeclContext *_localctx = _tracker.createInstance(_ctx, getState()); enterRule(_localctx, 24, GoParser::RuleFunctionDecl); size_t _la = 0; #if __cplusplus > 201703L auto onExit = finally([=, this] { #else auto onExit = finally([=] { #endif exitRule(); }); try { enterOuterAlt(_localctx, 1); setState(322); match(GoParser::FUNC); setState(323); match(GoParser::IDENTIFIER); setState(324); signature(); setState(326); _errHandler->sync(this); _la = _input->LA(1); if (_la == GoParser::L_CURLY) { setState(325); block(); } } catch (RecognitionException &e) { _errHandler->reportError(this, e); _localctx->exception = std::current_exception(); _errHandler->recover(this, _localctx->exception); } return _localctx; } //----------------- MethodDeclContext ------------------------------------------------------------------ GoParser::MethodDeclContext::MethodDeclContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } tree::TerminalNode* GoParser::MethodDeclContext::FUNC() { return getToken(GoParser::FUNC, 0); } GoParser::ReceiverContext* GoParser::MethodDeclContext::receiver() { return getRuleContext(0); } tree::TerminalNode* GoParser::MethodDeclContext::IDENTIFIER() { return getToken(GoParser::IDENTIFIER, 0); } GoParser::SignatureContext* GoParser::MethodDeclContext::signature() { return getRuleContext(0); } GoParser::BlockContext* GoParser::MethodDeclContext::block() { return getRuleContext(0); } size_t GoParser::MethodDeclContext::getRuleIndex() const { return GoParser::RuleMethodDecl; } void GoParser::MethodDeclContext::enterRule(tree::ParseTreeListener *listener) { auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->enterMethodDecl(this); } void GoParser::MethodDeclContext::exitRule(tree::ParseTreeListener *listener) { auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->exitMethodDecl(this); } GoParser::MethodDeclContext* GoParser::methodDecl() { MethodDeclContext *_localctx = _tracker.createInstance(_ctx, getState()); enterRule(_localctx, 26, GoParser::RuleMethodDecl); size_t _la = 0; #if __cplusplus > 201703L auto onExit = finally([=, this] { #else auto onExit = finally([=] { #endif exitRule(); }); try { enterOuterAlt(_localctx, 1); setState(328); match(GoParser::FUNC); setState(329); receiver(); setState(330); match(GoParser::IDENTIFIER); setState(331); signature(); setState(333); _errHandler->sync(this); _la = _input->LA(1); if (_la == GoParser::L_CURLY) { setState(332); block(); } } catch (RecognitionException &e) { _errHandler->reportError(this, e); _localctx->exception = std::current_exception(); _errHandler->recover(this, _localctx->exception); } return _localctx; } //----------------- ReceiverContext ------------------------------------------------------------------ GoParser::ReceiverContext::ReceiverContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } GoParser::ParametersContext* GoParser::ReceiverContext::parameters() { return getRuleContext(0); } size_t GoParser::ReceiverContext::getRuleIndex() const { return GoParser::RuleReceiver; } void GoParser::ReceiverContext::enterRule(tree::ParseTreeListener *listener) { auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->enterReceiver(this); } void GoParser::ReceiverContext::exitRule(tree::ParseTreeListener *listener) { auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->exitReceiver(this); } GoParser::ReceiverContext* GoParser::receiver() { ReceiverContext *_localctx = _tracker.createInstance(_ctx, getState()); enterRule(_localctx, 28, GoParser::RuleReceiver); #if __cplusplus > 201703L auto onExit = finally([=, this] { #else auto onExit = finally([=] { #endif exitRule(); }); try { enterOuterAlt(_localctx, 1); setState(335); parameters(); } catch (RecognitionException &e) { _errHandler->reportError(this, e); _localctx->exception = std::current_exception(); _errHandler->recover(this, _localctx->exception); } return _localctx; } //----------------- VarDeclContext ------------------------------------------------------------------ GoParser::VarDeclContext::VarDeclContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } tree::TerminalNode* GoParser::VarDeclContext::VAR() { return getToken(GoParser::VAR, 0); } std::vector GoParser::VarDeclContext::varSpec() { return getRuleContexts(); } GoParser::VarSpecContext* GoParser::VarDeclContext::varSpec(size_t i) { return getRuleContext(i); } tree::TerminalNode* GoParser::VarDeclContext::L_PAREN() { return getToken(GoParser::L_PAREN, 0); } tree::TerminalNode* GoParser::VarDeclContext::R_PAREN() { return getToken(GoParser::R_PAREN, 0); } std::vector GoParser::VarDeclContext::eoss() { return getRuleContexts(); } GoParser::EossContext* GoParser::VarDeclContext::eoss(size_t i) { return getRuleContext(i); } size_t GoParser::VarDeclContext::getRuleIndex() const { return GoParser::RuleVarDecl; } void GoParser::VarDeclContext::enterRule(tree::ParseTreeListener *listener) { auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->enterVarDecl(this); } void GoParser::VarDeclContext::exitRule(tree::ParseTreeListener *listener) { auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->exitVarDecl(this); } GoParser::VarDeclContext* GoParser::varDecl() { VarDeclContext *_localctx = _tracker.createInstance(_ctx, getState()); enterRule(_localctx, 30, GoParser::RuleVarDecl); size_t _la = 0; #if __cplusplus > 201703L auto onExit = finally([=, this] { #else auto onExit = finally([=] { #endif exitRule(); }); try { enterOuterAlt(_localctx, 1); setState(337); match(GoParser::VAR); setState(349); _errHandler->sync(this); switch (_input->LA(1)) { case GoParser::IDENTIFIER: { setState(338); varSpec(); break; } case GoParser::L_PAREN: { setState(339); match(GoParser::L_PAREN); setState(345); _errHandler->sync(this); _la = _input->LA(1); while (_la == GoParser::IDENTIFIER) { setState(340); varSpec(); setState(341); eoss(); setState(347); _errHandler->sync(this); _la = _input->LA(1); } setState(348); match(GoParser::R_PAREN); break; } default: throw NoViableAltException(this); } } catch (RecognitionException &e) { _errHandler->reportError(this, e); _localctx->exception = std::current_exception(); _errHandler->recover(this, _localctx->exception); } return _localctx; } //----------------- VarSpecContext ------------------------------------------------------------------ GoParser::VarSpecContext::VarSpecContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } GoParser::IdentifierListContext* GoParser::VarSpecContext::identifierList() { return getRuleContext(0); } GoParser::Type_Context* GoParser::VarSpecContext::type_() { return getRuleContext(0); } tree::TerminalNode* GoParser::VarSpecContext::ASSIGN() { return getToken(GoParser::ASSIGN, 0); } GoParser::ExpressionListContext* GoParser::VarSpecContext::expressionList() { return getRuleContext(0); } size_t GoParser::VarSpecContext::getRuleIndex() const { return GoParser::RuleVarSpec; } void GoParser::VarSpecContext::enterRule(tree::ParseTreeListener *listener) { auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->enterVarSpec(this); } void GoParser::VarSpecContext::exitRule(tree::ParseTreeListener *listener) { auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->exitVarSpec(this); } GoParser::VarSpecContext* GoParser::varSpec() { VarSpecContext *_localctx = _tracker.createInstance(_ctx, getState()); enterRule(_localctx, 32, GoParser::RuleVarSpec); size_t _la = 0; #if __cplusplus > 201703L auto onExit = finally([=, this] { #else auto onExit = finally([=] { #endif exitRule(); }); try { enterOuterAlt(_localctx, 1); setState(351); identifierList(); setState(359); _errHandler->sync(this); switch (_input->LA(1)) { case GoParser::FUNC: case GoParser::INTERFACE: case GoParser::MAP: case GoParser::STRUCT: case GoParser::CHAN: case GoParser::IDENTIFIER: case GoParser::L_PAREN: case GoParser::L_BRACKET: case GoParser::STAR: case GoParser::RECEIVE: { setState(352); type_(); setState(355); _errHandler->sync(this); _la = _input->LA(1); if (_la == GoParser::ASSIGN) { setState(353); match(GoParser::ASSIGN); setState(354); expressionList(); } break; } case GoParser::ASSIGN: { setState(357); match(GoParser::ASSIGN); setState(358); expressionList(); break; } default: throw NoViableAltException(this); } } catch (RecognitionException &e) { _errHandler->reportError(this, e); _localctx->exception = std::current_exception(); _errHandler->recover(this, _localctx->exception); } return _localctx; } //----------------- BlockContext ------------------------------------------------------------------ GoParser::BlockContext::BlockContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } tree::TerminalNode* GoParser::BlockContext::L_CURLY() { return getToken(GoParser::L_CURLY, 0); } tree::TerminalNode* GoParser::BlockContext::R_CURLY() { return getToken(GoParser::R_CURLY, 0); } std::vector GoParser::BlockContext::eoss() { return getRuleContexts(); } GoParser::EossContext* GoParser::BlockContext::eoss(size_t i) { return getRuleContext(i); } GoParser::StatementListContext* GoParser::BlockContext::statementList() { return getRuleContext(0); } size_t GoParser::BlockContext::getRuleIndex() const { return GoParser::RuleBlock; } void GoParser::BlockContext::enterRule(tree::ParseTreeListener *listener) { auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->enterBlock(this); } void GoParser::BlockContext::exitRule(tree::ParseTreeListener *listener) { auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->exitBlock(this); } GoParser::BlockContext* GoParser::block() { BlockContext *_localctx = _tracker.createInstance(_ctx, getState()); enterRule(_localctx, 34, GoParser::RuleBlock); size_t _la = 0; #if __cplusplus > 201703L auto onExit = finally([=, this] { #else auto onExit = finally([=] { #endif exitRule(); }); try { enterOuterAlt(_localctx, 1); setState(361); match(GoParser::L_CURLY); setState(365); _errHandler->sync(this); _la = _input->LA(1); while ((((_la & ~ 0x3fULL) == 0) && ((1ULL << _la) & ((1ULL << GoParser::SEMI) | (1ULL << GoParser::HUANHANG) | (1ULL << GoParser::HUANHANGG) | (1ULL << GoParser::EOSSS))) != 0)) { setState(362); eoss(); setState(367); _errHandler->sync(this); _la = _input->LA(1); } setState(369); _errHandler->sync(this); _la = _input->LA(1); if ((((_la & ~ 0x3fULL) == 0) && ((1ULL << _la) & ((1ULL << GoParser::BREAK) | (1ULL << GoParser::FUNC) | (1ULL << GoParser::INTERFACE) | (1ULL << GoParser::SELECT) | (1ULL << GoParser::DEFER) | (1ULL << GoParser::GO) | (1ULL << GoParser::MAP) | (1ULL << GoParser::STRUCT) | (1ULL << GoParser::CHAN) | (1ULL << GoParser::GOTO) | (1ULL << GoParser::SWITCH) | (1ULL << GoParser::CONST) | (1ULL << GoParser::FALLTHROUGH) | (1ULL << GoParser::IF) | (1ULL << GoParser::TYPE) | (1ULL << GoParser::CONTINUE) | (1ULL << GoParser::FOR) | (1ULL << GoParser::RETURN) | (1ULL << GoParser::VAR) | (1ULL << GoParser::NIL_LIT) | (1ULL << GoParser::IDENTIFIER) | (1ULL << GoParser::L_PAREN) | (1ULL << GoParser::L_CURLY) | (1ULL << GoParser::L_BRACKET) | (1ULL << GoParser::EXCLAMATION) | (1ULL << GoParser::PLUS) | (1ULL << GoParser::MINUS) | (1ULL << GoParser::CARET))) != 0) || ((((_la - 64) & ~ 0x3fULL) == 0) && ((1ULL << (_la - 64)) & ((1ULL << (GoParser::STAR - 64)) | (1ULL << (GoParser::AMPERSAND - 64)) | (1ULL << (GoParser::RECEIVE - 64)) | (1ULL << (GoParser::DECIMAL_LIT - 64)) | (1ULL << (GoParser::BINARY_LIT - 64)) | (1ULL << (GoParser::OCTAL_LIT - 64)) | (1ULL << (GoParser::HEX_LIT - 64)) | (1ULL << (GoParser::FLOAT_LIT - 64)) | (1ULL << (GoParser::IMAGINARY_LIT - 64)) | (1ULL << (GoParser::RUNE_LIT - 64)) | (1ULL << (GoParser::RAW_STRING_LIT - 64)) | (1ULL << (GoParser::INTERPRETED_STRING_LIT - 64)))) != 0)) { setState(368); statementList(); } setState(371); match(GoParser::R_CURLY); } catch (RecognitionException &e) { _errHandler->reportError(this, e); _localctx->exception = std::current_exception(); _errHandler->recover(this, _localctx->exception); } return _localctx; } //----------------- StatementListContext ------------------------------------------------------------------ GoParser::StatementListContext::StatementListContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } std::vector GoParser::StatementListContext::statement() { return getRuleContexts(); } GoParser::StatementContext* GoParser::StatementListContext::statement(size_t i) { return getRuleContext(i); } std::vector GoParser::StatementListContext::eoss() { return getRuleContexts(); } GoParser::EossContext* GoParser::StatementListContext::eoss(size_t i) { return getRuleContext(i); } size_t GoParser::StatementListContext::getRuleIndex() const { return GoParser::RuleStatementList; } void GoParser::StatementListContext::enterRule(tree::ParseTreeListener *listener) { auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->enterStatementList(this); } void GoParser::StatementListContext::exitRule(tree::ParseTreeListener *listener) { auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->exitStatementList(this); } GoParser::StatementListContext* GoParser::statementList() { StatementListContext *_localctx = _tracker.createInstance(_ctx, getState()); enterRule(_localctx, 36, GoParser::RuleStatementList); size_t _la = 0; #if __cplusplus > 201703L auto onExit = finally([=, this] { #else auto onExit = finally([=] { #endif exitRule(); }); try { enterOuterAlt(_localctx, 1); setState(379); _errHandler->sync(this); _la = _input->LA(1); do { setState(373); statement(); setState(375); _errHandler->sync(this); _la = _input->LA(1); do { setState(374); eoss(); setState(377); _errHandler->sync(this); _la = _input->LA(1); } while ((((_la & ~ 0x3fULL) == 0) && ((1ULL << _la) & ((1ULL << GoParser::SEMI) | (1ULL << GoParser::HUANHANG) | (1ULL << GoParser::HUANHANGG) | (1ULL << GoParser::EOSSS))) != 0)); setState(381); _errHandler->sync(this); _la = _input->LA(1); } while ((((_la & ~ 0x3fULL) == 0) && ((1ULL << _la) & ((1ULL << GoParser::BREAK) | (1ULL << GoParser::FUNC) | (1ULL << GoParser::INTERFACE) | (1ULL << GoParser::SELECT) | (1ULL << GoParser::DEFER) | (1ULL << GoParser::GO) | (1ULL << GoParser::MAP) | (1ULL << GoParser::STRUCT) | (1ULL << GoParser::CHAN) | (1ULL << GoParser::GOTO) | (1ULL << GoParser::SWITCH) | (1ULL << GoParser::CONST) | (1ULL << GoParser::FALLTHROUGH) | (1ULL << GoParser::IF) | (1ULL << GoParser::TYPE) | (1ULL << GoParser::CONTINUE) | (1ULL << GoParser::FOR) | (1ULL << GoParser::RETURN) | (1ULL << GoParser::VAR) | (1ULL << GoParser::NIL_LIT) | (1ULL << GoParser::IDENTIFIER) | (1ULL << GoParser::L_PAREN) | (1ULL << GoParser::L_CURLY) | (1ULL << GoParser::L_BRACKET) | (1ULL << GoParser::EXCLAMATION) | (1ULL << GoParser::PLUS) | (1ULL << GoParser::MINUS) | (1ULL << GoParser::CARET))) != 0) || ((((_la - 64) & ~ 0x3fULL) == 0) && ((1ULL << (_la - 64)) & ((1ULL << (GoParser::STAR - 64)) | (1ULL << (GoParser::AMPERSAND - 64)) | (1ULL << (GoParser::RECEIVE - 64)) | (1ULL << (GoParser::DECIMAL_LIT - 64)) | (1ULL << (GoParser::BINARY_LIT - 64)) | (1ULL << (GoParser::OCTAL_LIT - 64)) | (1ULL << (GoParser::HEX_LIT - 64)) | (1ULL << (GoParser::FLOAT_LIT - 64)) | (1ULL << (GoParser::IMAGINARY_LIT - 64)) | (1ULL << (GoParser::RUNE_LIT - 64)) | (1ULL << (GoParser::RAW_STRING_LIT - 64)) | (1ULL << (GoParser::INTERPRETED_STRING_LIT - 64)))) != 0)); } catch (RecognitionException &e) { _errHandler->reportError(this, e); _localctx->exception = std::current_exception(); _errHandler->recover(this, _localctx->exception); } return _localctx; } //----------------- StatementContext ------------------------------------------------------------------ GoParser::StatementContext::StatementContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } GoParser::DeclarationContext* GoParser::StatementContext::declaration() { return getRuleContext(0); } GoParser::LabeledStmtContext* GoParser::StatementContext::labeledStmt() { return getRuleContext(0); } GoParser::SimpleStmtContext* GoParser::StatementContext::simpleStmt() { return getRuleContext(0); } GoParser::GoStmtContext* GoParser::StatementContext::goStmt() { return getRuleContext(0); } GoParser::ReturnStmtContext* GoParser::StatementContext::returnStmt() { return getRuleContext(0); } GoParser::BreakStmtContext* GoParser::StatementContext::breakStmt() { return getRuleContext(0); } GoParser::ContinueStmtContext* GoParser::StatementContext::continueStmt() { return getRuleContext(0); } GoParser::GotoStmtContext* GoParser::StatementContext::gotoStmt() { return getRuleContext(0); } GoParser::FallthroughStmtContext* GoParser::StatementContext::fallthroughStmt() { return getRuleContext(0); } GoParser::BlockContext* GoParser::StatementContext::block() { return getRuleContext(0); } GoParser::IfStmtContext* GoParser::StatementContext::ifStmt() { return getRuleContext(0); } GoParser::SwitchStmtContext* GoParser::StatementContext::switchStmt() { return getRuleContext(0); } GoParser::SelectStmtContext* GoParser::StatementContext::selectStmt() { return getRuleContext(0); } GoParser::ForStmtContext* GoParser::StatementContext::forStmt() { return getRuleContext(0); } GoParser::DeferStmtContext* GoParser::StatementContext::deferStmt() { return getRuleContext(0); } size_t GoParser::StatementContext::getRuleIndex() const { return GoParser::RuleStatement; } void GoParser::StatementContext::enterRule(tree::ParseTreeListener *listener) { auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->enterStatement(this); } void GoParser::StatementContext::exitRule(tree::ParseTreeListener *listener) { auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->exitStatement(this); } GoParser::StatementContext* GoParser::statement() { StatementContext *_localctx = _tracker.createInstance(_ctx, getState()); enterRule(_localctx, 38, GoParser::RuleStatement); #if __cplusplus > 201703L auto onExit = finally([=, this] { #else auto onExit = finally([=] { #endif exitRule(); }); try { setState(398); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 29, _ctx)) { case 1: { enterOuterAlt(_localctx, 1); setState(383); declaration(); break; } case 2: { enterOuterAlt(_localctx, 2); setState(384); labeledStmt(); break; } case 3: { enterOuterAlt(_localctx, 3); setState(385); simpleStmt(); break; } case 4: { enterOuterAlt(_localctx, 4); setState(386); goStmt(); break; } case 5: { enterOuterAlt(_localctx, 5); setState(387); returnStmt(); break; } case 6: { enterOuterAlt(_localctx, 6); setState(388); breakStmt(); break; } case 7: { enterOuterAlt(_localctx, 7); setState(389); continueStmt(); break; } case 8: { enterOuterAlt(_localctx, 8); setState(390); gotoStmt(); break; } case 9: { enterOuterAlt(_localctx, 9); setState(391); fallthroughStmt(); break; } case 10: { enterOuterAlt(_localctx, 10); setState(392); block(); break; } case 11: { enterOuterAlt(_localctx, 11); setState(393); ifStmt(); break; } case 12: { enterOuterAlt(_localctx, 12); setState(394); switchStmt(); break; } case 13: { enterOuterAlt(_localctx, 13); setState(395); selectStmt(); break; } case 14: { enterOuterAlt(_localctx, 14); setState(396); forStmt(); break; } case 15: { enterOuterAlt(_localctx, 15); setState(397); deferStmt(); break; } default: break; } } catch (RecognitionException &e) { _errHandler->reportError(this, e); _localctx->exception = std::current_exception(); _errHandler->recover(this, _localctx->exception); } return _localctx; } //----------------- SimpleStmtContext ------------------------------------------------------------------ GoParser::SimpleStmtContext::SimpleStmtContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } GoParser::SendStmtContext* GoParser::SimpleStmtContext::sendStmt() { return getRuleContext(0); } GoParser::IncDecStmtContext* GoParser::SimpleStmtContext::incDecStmt() { return getRuleContext(0); } GoParser::AssignmentContext* GoParser::SimpleStmtContext::assignment() { return getRuleContext(0); } GoParser::ExpressionStmtContext* GoParser::SimpleStmtContext::expressionStmt() { return getRuleContext(0); } GoParser::ShortVarDeclContext* GoParser::SimpleStmtContext::shortVarDecl() { return getRuleContext(0); } size_t GoParser::SimpleStmtContext::getRuleIndex() const { return GoParser::RuleSimpleStmt; } void GoParser::SimpleStmtContext::enterRule(tree::ParseTreeListener *listener) { auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->enterSimpleStmt(this); } void GoParser::SimpleStmtContext::exitRule(tree::ParseTreeListener *listener) { auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->exitSimpleStmt(this); } GoParser::SimpleStmtContext* GoParser::simpleStmt() { SimpleStmtContext *_localctx = _tracker.createInstance(_ctx, getState()); enterRule(_localctx, 40, GoParser::RuleSimpleStmt); #if __cplusplus > 201703L auto onExit = finally([=, this] { #else auto onExit = finally([=] { #endif exitRule(); }); try { setState(405); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 30, _ctx)) { case 1: { enterOuterAlt(_localctx, 1); setState(400); sendStmt(); break; } case 2: { enterOuterAlt(_localctx, 2); setState(401); incDecStmt(); break; } case 3: { enterOuterAlt(_localctx, 3); setState(402); assignment(); break; } case 4: { enterOuterAlt(_localctx, 4); setState(403); expressionStmt(); break; } case 5: { enterOuterAlt(_localctx, 5); setState(404); shortVarDecl(); break; } default: break; } } catch (RecognitionException &e) { _errHandler->reportError(this, e); _localctx->exception = std::current_exception(); _errHandler->recover(this, _localctx->exception); } return _localctx; } //----------------- ExpressionStmtContext ------------------------------------------------------------------ GoParser::ExpressionStmtContext::ExpressionStmtContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } GoParser::ExpressionContext* GoParser::ExpressionStmtContext::expression() { return getRuleContext(0); } size_t GoParser::ExpressionStmtContext::getRuleIndex() const { return GoParser::RuleExpressionStmt; } void GoParser::ExpressionStmtContext::enterRule(tree::ParseTreeListener *listener) { auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->enterExpressionStmt(this); } void GoParser::ExpressionStmtContext::exitRule(tree::ParseTreeListener *listener) { auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->exitExpressionStmt(this); } GoParser::ExpressionStmtContext* GoParser::expressionStmt() { ExpressionStmtContext *_localctx = _tracker.createInstance(_ctx, getState()); enterRule(_localctx, 42, GoParser::RuleExpressionStmt); #if __cplusplus > 201703L auto onExit = finally([=, this] { #else auto onExit = finally([=] { #endif exitRule(); }); try { enterOuterAlt(_localctx, 1); setState(407); expression(0); } catch (RecognitionException &e) { _errHandler->reportError(this, e); _localctx->exception = std::current_exception(); _errHandler->recover(this, _localctx->exception); } return _localctx; } //----------------- SendStmtContext ------------------------------------------------------------------ GoParser::SendStmtContext::SendStmtContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } tree::TerminalNode* GoParser::SendStmtContext::RECEIVE() { return getToken(GoParser::RECEIVE, 0); } std::vector GoParser::SendStmtContext::expression() { return getRuleContexts(); } GoParser::ExpressionContext* GoParser::SendStmtContext::expression(size_t i) { return getRuleContext(i); } size_t GoParser::SendStmtContext::getRuleIndex() const { return GoParser::RuleSendStmt; } void GoParser::SendStmtContext::enterRule(tree::ParseTreeListener *listener) { auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->enterSendStmt(this); } void GoParser::SendStmtContext::exitRule(tree::ParseTreeListener *listener) { auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->exitSendStmt(this); } GoParser::SendStmtContext* GoParser::sendStmt() { SendStmtContext *_localctx = _tracker.createInstance(_ctx, getState()); enterRule(_localctx, 44, GoParser::RuleSendStmt); #if __cplusplus > 201703L auto onExit = finally([=, this] { #else auto onExit = finally([=] { #endif exitRule(); }); try { enterOuterAlt(_localctx, 1); setState(409); antlrcpp::downCast(_localctx)->channel = expression(0); setState(410); match(GoParser::RECEIVE); setState(411); expression(0); } catch (RecognitionException &e) { _errHandler->reportError(this, e); _localctx->exception = std::current_exception(); _errHandler->recover(this, _localctx->exception); } return _localctx; } //----------------- IncDecStmtContext ------------------------------------------------------------------ GoParser::IncDecStmtContext::IncDecStmtContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } GoParser::ExpressionContext* GoParser::IncDecStmtContext::expression() { return getRuleContext(0); } tree::TerminalNode* GoParser::IncDecStmtContext::PLUS_PLUS() { return getToken(GoParser::PLUS_PLUS, 0); } tree::TerminalNode* GoParser::IncDecStmtContext::MINUS_MINUS() { return getToken(GoParser::MINUS_MINUS, 0); } size_t GoParser::IncDecStmtContext::getRuleIndex() const { return GoParser::RuleIncDecStmt; } void GoParser::IncDecStmtContext::enterRule(tree::ParseTreeListener *listener) { auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->enterIncDecStmt(this); } void GoParser::IncDecStmtContext::exitRule(tree::ParseTreeListener *listener) { auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->exitIncDecStmt(this); } GoParser::IncDecStmtContext* GoParser::incDecStmt() { IncDecStmtContext *_localctx = _tracker.createInstance(_ctx, getState()); enterRule(_localctx, 46, GoParser::RuleIncDecStmt); size_t _la = 0; #if __cplusplus > 201703L auto onExit = finally([=, this] { #else auto onExit = finally([=] { #endif exitRule(); }); try { enterOuterAlt(_localctx, 1); setState(413); expression(0); setState(414); _la = _input->LA(1); if (!(_la == GoParser::PLUS_PLUS || _la == GoParser::MINUS_MINUS)) { _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; } //----------------- AssignmentContext ------------------------------------------------------------------ GoParser::AssignmentContext::AssignmentContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } std::vector GoParser::AssignmentContext::expressionList() { return getRuleContexts(); } GoParser::ExpressionListContext* GoParser::AssignmentContext::expressionList(size_t i) { return getRuleContext(i); } GoParser::Assign_opContext* GoParser::AssignmentContext::assign_op() { return getRuleContext(0); } size_t GoParser::AssignmentContext::getRuleIndex() const { return GoParser::RuleAssignment; } void GoParser::AssignmentContext::enterRule(tree::ParseTreeListener *listener) { auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->enterAssignment(this); } void GoParser::AssignmentContext::exitRule(tree::ParseTreeListener *listener) { auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->exitAssignment(this); } GoParser::AssignmentContext* GoParser::assignment() { AssignmentContext *_localctx = _tracker.createInstance(_ctx, getState()); enterRule(_localctx, 48, GoParser::RuleAssignment); #if __cplusplus > 201703L auto onExit = finally([=, this] { #else auto onExit = finally([=] { #endif exitRule(); }); try { enterOuterAlt(_localctx, 1); setState(416); expressionList(); setState(417); assign_op(); setState(418); expressionList(); } catch (RecognitionException &e) { _errHandler->reportError(this, e); _localctx->exception = std::current_exception(); _errHandler->recover(this, _localctx->exception); } return _localctx; } //----------------- Assign_opContext ------------------------------------------------------------------ GoParser::Assign_opContext::Assign_opContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } tree::TerminalNode* GoParser::Assign_opContext::ASSIGN() { return getToken(GoParser::ASSIGN, 0); } tree::TerminalNode* GoParser::Assign_opContext::PLUS() { return getToken(GoParser::PLUS, 0); } tree::TerminalNode* GoParser::Assign_opContext::MINUS() { return getToken(GoParser::MINUS, 0); } tree::TerminalNode* GoParser::Assign_opContext::OR() { return getToken(GoParser::OR, 0); } tree::TerminalNode* GoParser::Assign_opContext::CARET() { return getToken(GoParser::CARET, 0); } tree::TerminalNode* GoParser::Assign_opContext::STAR() { return getToken(GoParser::STAR, 0); } tree::TerminalNode* GoParser::Assign_opContext::DIV() { return getToken(GoParser::DIV, 0); } tree::TerminalNode* GoParser::Assign_opContext::MOD() { return getToken(GoParser::MOD, 0); } tree::TerminalNode* GoParser::Assign_opContext::LSHIFT() { return getToken(GoParser::LSHIFT, 0); } tree::TerminalNode* GoParser::Assign_opContext::RSHIFT() { return getToken(GoParser::RSHIFT, 0); } tree::TerminalNode* GoParser::Assign_opContext::AMPERSAND() { return getToken(GoParser::AMPERSAND, 0); } tree::TerminalNode* GoParser::Assign_opContext::BIT_CLEAR() { return getToken(GoParser::BIT_CLEAR, 0); } size_t GoParser::Assign_opContext::getRuleIndex() const { return GoParser::RuleAssign_op; } void GoParser::Assign_opContext::enterRule(tree::ParseTreeListener *listener) { auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->enterAssign_op(this); } void GoParser::Assign_opContext::exitRule(tree::ParseTreeListener *listener) { auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->exitAssign_op(this); } GoParser::Assign_opContext* GoParser::assign_op() { Assign_opContext *_localctx = _tracker.createInstance(_ctx, getState()); enterRule(_localctx, 50, GoParser::RuleAssign_op); size_t _la = 0; #if __cplusplus > 201703L auto onExit = finally([=, this] { #else auto onExit = finally([=] { #endif exitRule(); }); try { enterOuterAlt(_localctx, 1); setState(421); _errHandler->sync(this); _la = _input->LA(1); if (((((_la - 54) & ~ 0x3fULL) == 0) && ((1ULL << (_la - 54)) & ((1ULL << (GoParser::OR - 54)) | (1ULL << (GoParser::DIV - 54)) | (1ULL << (GoParser::MOD - 54)) | (1ULL << (GoParser::LSHIFT - 54)) | (1ULL << (GoParser::RSHIFT - 54)) | (1ULL << (GoParser::BIT_CLEAR - 54)) | (1ULL << (GoParser::PLUS - 54)) | (1ULL << (GoParser::MINUS - 54)) | (1ULL << (GoParser::CARET - 54)) | (1ULL << (GoParser::STAR - 54)) | (1ULL << (GoParser::AMPERSAND - 54)))) != 0)) { setState(420); _la = _input->LA(1); if (!(((((_la - 54) & ~ 0x3fULL) == 0) && ((1ULL << (_la - 54)) & ((1ULL << (GoParser::OR - 54)) | (1ULL << (GoParser::DIV - 54)) | (1ULL << (GoParser::MOD - 54)) | (1ULL << (GoParser::LSHIFT - 54)) | (1ULL << (GoParser::RSHIFT - 54)) | (1ULL << (GoParser::BIT_CLEAR - 54)) | (1ULL << (GoParser::PLUS - 54)) | (1ULL << (GoParser::MINUS - 54)) | (1ULL << (GoParser::CARET - 54)) | (1ULL << (GoParser::STAR - 54)) | (1ULL << (GoParser::AMPERSAND - 54)))) != 0))) { _errHandler->recoverInline(this); } else { _errHandler->reportMatch(this); consume(); } } setState(423); match(GoParser::ASSIGN); } catch (RecognitionException &e) { _errHandler->reportError(this, e); _localctx->exception = std::current_exception(); _errHandler->recover(this, _localctx->exception); } return _localctx; } //----------------- ShortVarDeclContext ------------------------------------------------------------------ GoParser::ShortVarDeclContext::ShortVarDeclContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } GoParser::IdentifierListContext* GoParser::ShortVarDeclContext::identifierList() { return getRuleContext(0); } tree::TerminalNode* GoParser::ShortVarDeclContext::DECLARE_ASSIGN() { return getToken(GoParser::DECLARE_ASSIGN, 0); } GoParser::ExpressionListContext* GoParser::ShortVarDeclContext::expressionList() { return getRuleContext(0); } size_t GoParser::ShortVarDeclContext::getRuleIndex() const { return GoParser::RuleShortVarDecl; } void GoParser::ShortVarDeclContext::enterRule(tree::ParseTreeListener *listener) { auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->enterShortVarDecl(this); } void GoParser::ShortVarDeclContext::exitRule(tree::ParseTreeListener *listener) { auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->exitShortVarDecl(this); } GoParser::ShortVarDeclContext* GoParser::shortVarDecl() { ShortVarDeclContext *_localctx = _tracker.createInstance(_ctx, getState()); enterRule(_localctx, 52, GoParser::RuleShortVarDecl); #if __cplusplus > 201703L auto onExit = finally([=, this] { #else auto onExit = finally([=] { #endif exitRule(); }); try { enterOuterAlt(_localctx, 1); setState(425); identifierList(); setState(426); match(GoParser::DECLARE_ASSIGN); setState(427); expressionList(); } catch (RecognitionException &e) { _errHandler->reportError(this, e); _localctx->exception = std::current_exception(); _errHandler->recover(this, _localctx->exception); } return _localctx; } //----------------- EmptyStmtContext ------------------------------------------------------------------ GoParser::EmptyStmtContext::EmptyStmtContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } tree::TerminalNode* GoParser::EmptyStmtContext::EOSSS() { return getToken(GoParser::EOSSS, 0); } tree::TerminalNode* GoParser::EmptyStmtContext::SEMI() { return getToken(GoParser::SEMI, 0); } size_t GoParser::EmptyStmtContext::getRuleIndex() const { return GoParser::RuleEmptyStmt; } void GoParser::EmptyStmtContext::enterRule(tree::ParseTreeListener *listener) { auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->enterEmptyStmt(this); } void GoParser::EmptyStmtContext::exitRule(tree::ParseTreeListener *listener) { auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->exitEmptyStmt(this); } GoParser::EmptyStmtContext* GoParser::emptyStmt() { EmptyStmtContext *_localctx = _tracker.createInstance(_ctx, getState()); enterRule(_localctx, 54, GoParser::RuleEmptyStmt); size_t _la = 0; #if __cplusplus > 201703L auto onExit = finally([=, this] { #else auto onExit = finally([=] { #endif exitRule(); }); try { enterOuterAlt(_localctx, 1); setState(429); _la = _input->LA(1); if (!(_la == GoParser::SEMI || _la == GoParser::EOSSS)) { _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; } //----------------- LabeledStmtContext ------------------------------------------------------------------ GoParser::LabeledStmtContext::LabeledStmtContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } tree::TerminalNode* GoParser::LabeledStmtContext::IDENTIFIER() { return getToken(GoParser::IDENTIFIER, 0); } tree::TerminalNode* GoParser::LabeledStmtContext::COLON() { return getToken(GoParser::COLON, 0); } GoParser::StatementContext* GoParser::LabeledStmtContext::statement() { return getRuleContext(0); } size_t GoParser::LabeledStmtContext::getRuleIndex() const { return GoParser::RuleLabeledStmt; } void GoParser::LabeledStmtContext::enterRule(tree::ParseTreeListener *listener) { auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->enterLabeledStmt(this); } void GoParser::LabeledStmtContext::exitRule(tree::ParseTreeListener *listener) { auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->exitLabeledStmt(this); } GoParser::LabeledStmtContext* GoParser::labeledStmt() { LabeledStmtContext *_localctx = _tracker.createInstance(_ctx, getState()); enterRule(_localctx, 56, GoParser::RuleLabeledStmt); size_t _la = 0; #if __cplusplus > 201703L auto onExit = finally([=, this] { #else auto onExit = finally([=] { #endif exitRule(); }); try { enterOuterAlt(_localctx, 1); setState(431); match(GoParser::IDENTIFIER); setState(432); match(GoParser::COLON); setState(434); _errHandler->sync(this); _la = _input->LA(1); if ((((_la & ~ 0x3fULL) == 0) && ((1ULL << _la) & ((1ULL << GoParser::BREAK) | (1ULL << GoParser::FUNC) | (1ULL << GoParser::INTERFACE) | (1ULL << GoParser::SELECT) | (1ULL << GoParser::DEFER) | (1ULL << GoParser::GO) | (1ULL << GoParser::MAP) | (1ULL << GoParser::STRUCT) | (1ULL << GoParser::CHAN) | (1ULL << GoParser::GOTO) | (1ULL << GoParser::SWITCH) | (1ULL << GoParser::CONST) | (1ULL << GoParser::FALLTHROUGH) | (1ULL << GoParser::IF) | (1ULL << GoParser::TYPE) | (1ULL << GoParser::CONTINUE) | (1ULL << GoParser::FOR) | (1ULL << GoParser::RETURN) | (1ULL << GoParser::VAR) | (1ULL << GoParser::NIL_LIT) | (1ULL << GoParser::IDENTIFIER) | (1ULL << GoParser::L_PAREN) | (1ULL << GoParser::L_CURLY) | (1ULL << GoParser::L_BRACKET) | (1ULL << GoParser::EXCLAMATION) | (1ULL << GoParser::PLUS) | (1ULL << GoParser::MINUS) | (1ULL << GoParser::CARET))) != 0) || ((((_la - 64) & ~ 0x3fULL) == 0) && ((1ULL << (_la - 64)) & ((1ULL << (GoParser::STAR - 64)) | (1ULL << (GoParser::AMPERSAND - 64)) | (1ULL << (GoParser::RECEIVE - 64)) | (1ULL << (GoParser::DECIMAL_LIT - 64)) | (1ULL << (GoParser::BINARY_LIT - 64)) | (1ULL << (GoParser::OCTAL_LIT - 64)) | (1ULL << (GoParser::HEX_LIT - 64)) | (1ULL << (GoParser::FLOAT_LIT - 64)) | (1ULL << (GoParser::IMAGINARY_LIT - 64)) | (1ULL << (GoParser::RUNE_LIT - 64)) | (1ULL << (GoParser::RAW_STRING_LIT - 64)) | (1ULL << (GoParser::INTERPRETED_STRING_LIT - 64)))) != 0)) { setState(433); statement(); } } catch (RecognitionException &e) { _errHandler->reportError(this, e); _localctx->exception = std::current_exception(); _errHandler->recover(this, _localctx->exception); } return _localctx; } //----------------- ReturnStmtContext ------------------------------------------------------------------ GoParser::ReturnStmtContext::ReturnStmtContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } tree::TerminalNode* GoParser::ReturnStmtContext::RETURN() { return getToken(GoParser::RETURN, 0); } GoParser::ExpressionListContext* GoParser::ReturnStmtContext::expressionList() { return getRuleContext(0); } size_t GoParser::ReturnStmtContext::getRuleIndex() const { return GoParser::RuleReturnStmt; } void GoParser::ReturnStmtContext::enterRule(tree::ParseTreeListener *listener) { auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->enterReturnStmt(this); } void GoParser::ReturnStmtContext::exitRule(tree::ParseTreeListener *listener) { auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->exitReturnStmt(this); } GoParser::ReturnStmtContext* GoParser::returnStmt() { ReturnStmtContext *_localctx = _tracker.createInstance(_ctx, getState()); enterRule(_localctx, 58, GoParser::RuleReturnStmt); size_t _la = 0; #if __cplusplus > 201703L auto onExit = finally([=, this] { #else auto onExit = finally([=] { #endif exitRule(); }); try { enterOuterAlt(_localctx, 1); setState(436); match(GoParser::RETURN); setState(438); _errHandler->sync(this); _la = _input->LA(1); if ((((_la & ~ 0x3fULL) == 0) && ((1ULL << _la) & ((1ULL << GoParser::FUNC) | (1ULL << GoParser::INTERFACE) | (1ULL << GoParser::MAP) | (1ULL << GoParser::STRUCT) | (1ULL << GoParser::CHAN) | (1ULL << GoParser::NIL_LIT) | (1ULL << GoParser::IDENTIFIER) | (1ULL << GoParser::L_PAREN) | (1ULL << GoParser::L_BRACKET) | (1ULL << GoParser::EXCLAMATION) | (1ULL << GoParser::PLUS) | (1ULL << GoParser::MINUS) | (1ULL << GoParser::CARET))) != 0) || ((((_la - 64) & ~ 0x3fULL) == 0) && ((1ULL << (_la - 64)) & ((1ULL << (GoParser::STAR - 64)) | (1ULL << (GoParser::AMPERSAND - 64)) | (1ULL << (GoParser::RECEIVE - 64)) | (1ULL << (GoParser::DECIMAL_LIT - 64)) | (1ULL << (GoParser::BINARY_LIT - 64)) | (1ULL << (GoParser::OCTAL_LIT - 64)) | (1ULL << (GoParser::HEX_LIT - 64)) | (1ULL << (GoParser::FLOAT_LIT - 64)) | (1ULL << (GoParser::IMAGINARY_LIT - 64)) | (1ULL << (GoParser::RUNE_LIT - 64)) | (1ULL << (GoParser::RAW_STRING_LIT - 64)) | (1ULL << (GoParser::INTERPRETED_STRING_LIT - 64)))) != 0)) { setState(437); expressionList(); } } catch (RecognitionException &e) { _errHandler->reportError(this, e); _localctx->exception = std::current_exception(); _errHandler->recover(this, _localctx->exception); } return _localctx; } //----------------- BreakStmtContext ------------------------------------------------------------------ GoParser::BreakStmtContext::BreakStmtContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } tree::TerminalNode* GoParser::BreakStmtContext::BREAK() { return getToken(GoParser::BREAK, 0); } tree::TerminalNode* GoParser::BreakStmtContext::IDENTIFIER() { return getToken(GoParser::IDENTIFIER, 0); } size_t GoParser::BreakStmtContext::getRuleIndex() const { return GoParser::RuleBreakStmt; } void GoParser::BreakStmtContext::enterRule(tree::ParseTreeListener *listener) { auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->enterBreakStmt(this); } void GoParser::BreakStmtContext::exitRule(tree::ParseTreeListener *listener) { auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->exitBreakStmt(this); } GoParser::BreakStmtContext* GoParser::breakStmt() { BreakStmtContext *_localctx = _tracker.createInstance(_ctx, getState()); enterRule(_localctx, 60, GoParser::RuleBreakStmt); size_t _la = 0; #if __cplusplus > 201703L auto onExit = finally([=, this] { #else auto onExit = finally([=] { #endif exitRule(); }); try { enterOuterAlt(_localctx, 1); setState(440); match(GoParser::BREAK); setState(442); _errHandler->sync(this); _la = _input->LA(1); if (_la == GoParser::IDENTIFIER) { setState(441); match(GoParser::IDENTIFIER); } } catch (RecognitionException &e) { _errHandler->reportError(this, e); _localctx->exception = std::current_exception(); _errHandler->recover(this, _localctx->exception); } return _localctx; } //----------------- ContinueStmtContext ------------------------------------------------------------------ GoParser::ContinueStmtContext::ContinueStmtContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } tree::TerminalNode* GoParser::ContinueStmtContext::CONTINUE() { return getToken(GoParser::CONTINUE, 0); } tree::TerminalNode* GoParser::ContinueStmtContext::IDENTIFIER() { return getToken(GoParser::IDENTIFIER, 0); } size_t GoParser::ContinueStmtContext::getRuleIndex() const { return GoParser::RuleContinueStmt; } void GoParser::ContinueStmtContext::enterRule(tree::ParseTreeListener *listener) { auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->enterContinueStmt(this); } void GoParser::ContinueStmtContext::exitRule(tree::ParseTreeListener *listener) { auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->exitContinueStmt(this); } GoParser::ContinueStmtContext* GoParser::continueStmt() { ContinueStmtContext *_localctx = _tracker.createInstance(_ctx, getState()); enterRule(_localctx, 62, GoParser::RuleContinueStmt); size_t _la = 0; #if __cplusplus > 201703L auto onExit = finally([=, this] { #else auto onExit = finally([=] { #endif exitRule(); }); try { enterOuterAlt(_localctx, 1); setState(444); match(GoParser::CONTINUE); setState(446); _errHandler->sync(this); _la = _input->LA(1); if (_la == GoParser::IDENTIFIER) { setState(445); match(GoParser::IDENTIFIER); } } catch (RecognitionException &e) { _errHandler->reportError(this, e); _localctx->exception = std::current_exception(); _errHandler->recover(this, _localctx->exception); } return _localctx; } //----------------- GotoStmtContext ------------------------------------------------------------------ GoParser::GotoStmtContext::GotoStmtContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } tree::TerminalNode* GoParser::GotoStmtContext::GOTO() { return getToken(GoParser::GOTO, 0); } tree::TerminalNode* GoParser::GotoStmtContext::IDENTIFIER() { return getToken(GoParser::IDENTIFIER, 0); } size_t GoParser::GotoStmtContext::getRuleIndex() const { return GoParser::RuleGotoStmt; } void GoParser::GotoStmtContext::enterRule(tree::ParseTreeListener *listener) { auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->enterGotoStmt(this); } void GoParser::GotoStmtContext::exitRule(tree::ParseTreeListener *listener) { auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->exitGotoStmt(this); } GoParser::GotoStmtContext* GoParser::gotoStmt() { GotoStmtContext *_localctx = _tracker.createInstance(_ctx, getState()); enterRule(_localctx, 64, GoParser::RuleGotoStmt); #if __cplusplus > 201703L auto onExit = finally([=, this] { #else auto onExit = finally([=] { #endif exitRule(); }); try { enterOuterAlt(_localctx, 1); setState(448); match(GoParser::GOTO); setState(449); match(GoParser::IDENTIFIER); } catch (RecognitionException &e) { _errHandler->reportError(this, e); _localctx->exception = std::current_exception(); _errHandler->recover(this, _localctx->exception); } return _localctx; } //----------------- FallthroughStmtContext ------------------------------------------------------------------ GoParser::FallthroughStmtContext::FallthroughStmtContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } tree::TerminalNode* GoParser::FallthroughStmtContext::FALLTHROUGH() { return getToken(GoParser::FALLTHROUGH, 0); } size_t GoParser::FallthroughStmtContext::getRuleIndex() const { return GoParser::RuleFallthroughStmt; } void GoParser::FallthroughStmtContext::enterRule(tree::ParseTreeListener *listener) { auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->enterFallthroughStmt(this); } void GoParser::FallthroughStmtContext::exitRule(tree::ParseTreeListener *listener) { auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->exitFallthroughStmt(this); } GoParser::FallthroughStmtContext* GoParser::fallthroughStmt() { FallthroughStmtContext *_localctx = _tracker.createInstance(_ctx, getState()); enterRule(_localctx, 66, GoParser::RuleFallthroughStmt); #if __cplusplus > 201703L auto onExit = finally([=, this] { #else auto onExit = finally([=] { #endif exitRule(); }); try { enterOuterAlt(_localctx, 1); setState(451); match(GoParser::FALLTHROUGH); } catch (RecognitionException &e) { _errHandler->reportError(this, e); _localctx->exception = std::current_exception(); _errHandler->recover(this, _localctx->exception); } return _localctx; } //----------------- DeferStmtContext ------------------------------------------------------------------ GoParser::DeferStmtContext::DeferStmtContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } tree::TerminalNode* GoParser::DeferStmtContext::DEFER() { return getToken(GoParser::DEFER, 0); } GoParser::ExpressionContext* GoParser::DeferStmtContext::expression() { return getRuleContext(0); } size_t GoParser::DeferStmtContext::getRuleIndex() const { return GoParser::RuleDeferStmt; } void GoParser::DeferStmtContext::enterRule(tree::ParseTreeListener *listener) { auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->enterDeferStmt(this); } void GoParser::DeferStmtContext::exitRule(tree::ParseTreeListener *listener) { auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->exitDeferStmt(this); } GoParser::DeferStmtContext* GoParser::deferStmt() { DeferStmtContext *_localctx = _tracker.createInstance(_ctx, getState()); enterRule(_localctx, 68, GoParser::RuleDeferStmt); #if __cplusplus > 201703L auto onExit = finally([=, this] { #else auto onExit = finally([=] { #endif exitRule(); }); try { enterOuterAlt(_localctx, 1); setState(453); match(GoParser::DEFER); setState(454); expression(0); } catch (RecognitionException &e) { _errHandler->reportError(this, e); _localctx->exception = std::current_exception(); _errHandler->recover(this, _localctx->exception); } return _localctx; } //----------------- IfStmtContext ------------------------------------------------------------------ GoParser::IfStmtContext::IfStmtContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } tree::TerminalNode* GoParser::IfStmtContext::IF() { return getToken(GoParser::IF, 0); } std::vector GoParser::IfStmtContext::block() { return getRuleContexts(); } GoParser::BlockContext* GoParser::IfStmtContext::block(size_t i) { return getRuleContext(i); } GoParser::ExpressionContext* GoParser::IfStmtContext::expression() { return getRuleContext(0); } GoParser::EossContext* GoParser::IfStmtContext::eoss() { return getRuleContext(0); } GoParser::SimpleStmtContext* GoParser::IfStmtContext::simpleStmt() { return getRuleContext(0); } tree::TerminalNode* GoParser::IfStmtContext::ELSE() { return getToken(GoParser::ELSE, 0); } GoParser::IfStmtContext* GoParser::IfStmtContext::ifStmt() { return getRuleContext(0); } size_t GoParser::IfStmtContext::getRuleIndex() const { return GoParser::RuleIfStmt; } void GoParser::IfStmtContext::enterRule(tree::ParseTreeListener *listener) { auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->enterIfStmt(this); } void GoParser::IfStmtContext::exitRule(tree::ParseTreeListener *listener) { auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->exitIfStmt(this); } GoParser::IfStmtContext* GoParser::ifStmt() { IfStmtContext *_localctx = _tracker.createInstance(_ctx, getState()); enterRule(_localctx, 70, GoParser::RuleIfStmt); size_t _la = 0; #if __cplusplus > 201703L auto onExit = finally([=, this] { #else auto onExit = finally([=] { #endif exitRule(); }); try { enterOuterAlt(_localctx, 1); setState(456); match(GoParser::IF); setState(465); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 36, _ctx)) { case 1: { setState(457); expression(0); break; } case 2: { setState(458); eoss(); setState(459); expression(0); break; } case 3: { setState(461); simpleStmt(); setState(462); eoss(); setState(463); expression(0); break; } default: break; } setState(467); block(); setState(473); _errHandler->sync(this); _la = _input->LA(1); if (_la == GoParser::ELSE) { setState(468); match(GoParser::ELSE); setState(471); _errHandler->sync(this); switch (_input->LA(1)) { case GoParser::IF: { setState(469); ifStmt(); break; } case GoParser::L_CURLY: { setState(470); block(); break; } default: throw NoViableAltException(this); } } } catch (RecognitionException &e) { _errHandler->reportError(this, e); _localctx->exception = std::current_exception(); _errHandler->recover(this, _localctx->exception); } return _localctx; } //----------------- SwitchStmtContext ------------------------------------------------------------------ GoParser::SwitchStmtContext::SwitchStmtContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } GoParser::ExprSwitchStmtContext* GoParser::SwitchStmtContext::exprSwitchStmt() { return getRuleContext(0); } GoParser::TypeSwitchStmtContext* GoParser::SwitchStmtContext::typeSwitchStmt() { return getRuleContext(0); } size_t GoParser::SwitchStmtContext::getRuleIndex() const { return GoParser::RuleSwitchStmt; } void GoParser::SwitchStmtContext::enterRule(tree::ParseTreeListener *listener) { auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->enterSwitchStmt(this); } void GoParser::SwitchStmtContext::exitRule(tree::ParseTreeListener *listener) { auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->exitSwitchStmt(this); } GoParser::SwitchStmtContext* GoParser::switchStmt() { SwitchStmtContext *_localctx = _tracker.createInstance(_ctx, getState()); enterRule(_localctx, 72, GoParser::RuleSwitchStmt); #if __cplusplus > 201703L auto onExit = finally([=, this] { #else auto onExit = finally([=] { #endif exitRule(); }); try { setState(477); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 39, _ctx)) { case 1: { enterOuterAlt(_localctx, 1); setState(475); exprSwitchStmt(); break; } case 2: { enterOuterAlt(_localctx, 2); setState(476); typeSwitchStmt(); break; } default: break; } } catch (RecognitionException &e) { _errHandler->reportError(this, e); _localctx->exception = std::current_exception(); _errHandler->recover(this, _localctx->exception); } return _localctx; } //----------------- ExprSwitchStmtContext ------------------------------------------------------------------ GoParser::ExprSwitchStmtContext::ExprSwitchStmtContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } tree::TerminalNode* GoParser::ExprSwitchStmtContext::SWITCH() { return getToken(GoParser::SWITCH, 0); } tree::TerminalNode* GoParser::ExprSwitchStmtContext::L_CURLY() { return getToken(GoParser::L_CURLY, 0); } tree::TerminalNode* GoParser::ExprSwitchStmtContext::R_CURLY() { return getToken(GoParser::R_CURLY, 0); } GoParser::EossContext* GoParser::ExprSwitchStmtContext::eoss() { return getRuleContext(0); } std::vector GoParser::ExprSwitchStmtContext::exprCaseClause() { return getRuleContexts(); } GoParser::ExprCaseClauseContext* GoParser::ExprSwitchStmtContext::exprCaseClause(size_t i) { return getRuleContext(i); } GoParser::ExpressionContext* GoParser::ExprSwitchStmtContext::expression() { return getRuleContext(0); } GoParser::SimpleStmtContext* GoParser::ExprSwitchStmtContext::simpleStmt() { return getRuleContext(0); } size_t GoParser::ExprSwitchStmtContext::getRuleIndex() const { return GoParser::RuleExprSwitchStmt; } void GoParser::ExprSwitchStmtContext::enterRule(tree::ParseTreeListener *listener) { auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->enterExprSwitchStmt(this); } void GoParser::ExprSwitchStmtContext::exitRule(tree::ParseTreeListener *listener) { auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->exitExprSwitchStmt(this); } GoParser::ExprSwitchStmtContext* GoParser::exprSwitchStmt() { ExprSwitchStmtContext *_localctx = _tracker.createInstance(_ctx, getState()); enterRule(_localctx, 74, GoParser::RuleExprSwitchStmt); size_t _la = 0; #if __cplusplus > 201703L auto onExit = finally([=, this] { #else auto onExit = finally([=] { #endif exitRule(); }); try { enterOuterAlt(_localctx, 1); setState(479); match(GoParser::SWITCH); setState(490); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 43, _ctx)) { case 1: { setState(481); _errHandler->sync(this); _la = _input->LA(1); if ((((_la & ~ 0x3fULL) == 0) && ((1ULL << _la) & ((1ULL << GoParser::FUNC) | (1ULL << GoParser::INTERFACE) | (1ULL << GoParser::MAP) | (1ULL << GoParser::STRUCT) | (1ULL << GoParser::CHAN) | (1ULL << GoParser::NIL_LIT) | (1ULL << GoParser::IDENTIFIER) | (1ULL << GoParser::L_PAREN) | (1ULL << GoParser::L_BRACKET) | (1ULL << GoParser::EXCLAMATION) | (1ULL << GoParser::PLUS) | (1ULL << GoParser::MINUS) | (1ULL << GoParser::CARET))) != 0) || ((((_la - 64) & ~ 0x3fULL) == 0) && ((1ULL << (_la - 64)) & ((1ULL << (GoParser::STAR - 64)) | (1ULL << (GoParser::AMPERSAND - 64)) | (1ULL << (GoParser::RECEIVE - 64)) | (1ULL << (GoParser::DECIMAL_LIT - 64)) | (1ULL << (GoParser::BINARY_LIT - 64)) | (1ULL << (GoParser::OCTAL_LIT - 64)) | (1ULL << (GoParser::HEX_LIT - 64)) | (1ULL << (GoParser::FLOAT_LIT - 64)) | (1ULL << (GoParser::IMAGINARY_LIT - 64)) | (1ULL << (GoParser::RUNE_LIT - 64)) | (1ULL << (GoParser::RAW_STRING_LIT - 64)) | (1ULL << (GoParser::INTERPRETED_STRING_LIT - 64)))) != 0)) { setState(480); expression(0); } break; } case 2: { setState(484); _errHandler->sync(this); _la = _input->LA(1); if ((((_la & ~ 0x3fULL) == 0) && ((1ULL << _la) & ((1ULL << GoParser::FUNC) | (1ULL << GoParser::INTERFACE) | (1ULL << GoParser::MAP) | (1ULL << GoParser::STRUCT) | (1ULL << GoParser::CHAN) | (1ULL << GoParser::NIL_LIT) | (1ULL << GoParser::IDENTIFIER) | (1ULL << GoParser::L_PAREN) | (1ULL << GoParser::L_BRACKET) | (1ULL << GoParser::EXCLAMATION) | (1ULL << GoParser::PLUS) | (1ULL << GoParser::MINUS) | (1ULL << GoParser::CARET))) != 0) || ((((_la - 64) & ~ 0x3fULL) == 0) && ((1ULL << (_la - 64)) & ((1ULL << (GoParser::STAR - 64)) | (1ULL << (GoParser::AMPERSAND - 64)) | (1ULL << (GoParser::RECEIVE - 64)) | (1ULL << (GoParser::DECIMAL_LIT - 64)) | (1ULL << (GoParser::BINARY_LIT - 64)) | (1ULL << (GoParser::OCTAL_LIT - 64)) | (1ULL << (GoParser::HEX_LIT - 64)) | (1ULL << (GoParser::FLOAT_LIT - 64)) | (1ULL << (GoParser::IMAGINARY_LIT - 64)) | (1ULL << (GoParser::RUNE_LIT - 64)) | (1ULL << (GoParser::RAW_STRING_LIT - 64)) | (1ULL << (GoParser::INTERPRETED_STRING_LIT - 64)))) != 0)) { setState(483); simpleStmt(); } setState(486); eoss(); setState(488); _errHandler->sync(this); _la = _input->LA(1); if ((((_la & ~ 0x3fULL) == 0) && ((1ULL << _la) & ((1ULL << GoParser::FUNC) | (1ULL << GoParser::INTERFACE) | (1ULL << GoParser::MAP) | (1ULL << GoParser::STRUCT) | (1ULL << GoParser::CHAN) | (1ULL << GoParser::NIL_LIT) | (1ULL << GoParser::IDENTIFIER) | (1ULL << GoParser::L_PAREN) | (1ULL << GoParser::L_BRACKET) | (1ULL << GoParser::EXCLAMATION) | (1ULL << GoParser::PLUS) | (1ULL << GoParser::MINUS) | (1ULL << GoParser::CARET))) != 0) || ((((_la - 64) & ~ 0x3fULL) == 0) && ((1ULL << (_la - 64)) & ((1ULL << (GoParser::STAR - 64)) | (1ULL << (GoParser::AMPERSAND - 64)) | (1ULL << (GoParser::RECEIVE - 64)) | (1ULL << (GoParser::DECIMAL_LIT - 64)) | (1ULL << (GoParser::BINARY_LIT - 64)) | (1ULL << (GoParser::OCTAL_LIT - 64)) | (1ULL << (GoParser::HEX_LIT - 64)) | (1ULL << (GoParser::FLOAT_LIT - 64)) | (1ULL << (GoParser::IMAGINARY_LIT - 64)) | (1ULL << (GoParser::RUNE_LIT - 64)) | (1ULL << (GoParser::RAW_STRING_LIT - 64)) | (1ULL << (GoParser::INTERPRETED_STRING_LIT - 64)))) != 0)) { setState(487); expression(0); } break; } default: break; } setState(492); match(GoParser::L_CURLY); setState(496); _errHandler->sync(this); _la = _input->LA(1); while (_la == GoParser::DEFAULT || _la == GoParser::CASE) { setState(493); exprCaseClause(); setState(498); _errHandler->sync(this); _la = _input->LA(1); } setState(499); match(GoParser::R_CURLY); } catch (RecognitionException &e) { _errHandler->reportError(this, e); _localctx->exception = std::current_exception(); _errHandler->recover(this, _localctx->exception); } return _localctx; } //----------------- ExprCaseClauseContext ------------------------------------------------------------------ GoParser::ExprCaseClauseContext::ExprCaseClauseContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } GoParser::ExprSwitchCaseContext* GoParser::ExprCaseClauseContext::exprSwitchCase() { return getRuleContext(0); } tree::TerminalNode* GoParser::ExprCaseClauseContext::COLON() { return getToken(GoParser::COLON, 0); } GoParser::StatementListContext* GoParser::ExprCaseClauseContext::statementList() { return getRuleContext(0); } size_t GoParser::ExprCaseClauseContext::getRuleIndex() const { return GoParser::RuleExprCaseClause; } void GoParser::ExprCaseClauseContext::enterRule(tree::ParseTreeListener *listener) { auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->enterExprCaseClause(this); } void GoParser::ExprCaseClauseContext::exitRule(tree::ParseTreeListener *listener) { auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->exitExprCaseClause(this); } GoParser::ExprCaseClauseContext* GoParser::exprCaseClause() { ExprCaseClauseContext *_localctx = _tracker.createInstance(_ctx, getState()); enterRule(_localctx, 76, GoParser::RuleExprCaseClause); size_t _la = 0; #if __cplusplus > 201703L auto onExit = finally([=, this] { #else auto onExit = finally([=] { #endif exitRule(); }); try { enterOuterAlt(_localctx, 1); setState(501); exprSwitchCase(); setState(502); match(GoParser::COLON); setState(504); _errHandler->sync(this); _la = _input->LA(1); if ((((_la & ~ 0x3fULL) == 0) && ((1ULL << _la) & ((1ULL << GoParser::BREAK) | (1ULL << GoParser::FUNC) | (1ULL << GoParser::INTERFACE) | (1ULL << GoParser::SELECT) | (1ULL << GoParser::DEFER) | (1ULL << GoParser::GO) | (1ULL << GoParser::MAP) | (1ULL << GoParser::STRUCT) | (1ULL << GoParser::CHAN) | (1ULL << GoParser::GOTO) | (1ULL << GoParser::SWITCH) | (1ULL << GoParser::CONST) | (1ULL << GoParser::FALLTHROUGH) | (1ULL << GoParser::IF) | (1ULL << GoParser::TYPE) | (1ULL << GoParser::CONTINUE) | (1ULL << GoParser::FOR) | (1ULL << GoParser::RETURN) | (1ULL << GoParser::VAR) | (1ULL << GoParser::NIL_LIT) | (1ULL << GoParser::IDENTIFIER) | (1ULL << GoParser::L_PAREN) | (1ULL << GoParser::L_CURLY) | (1ULL << GoParser::L_BRACKET) | (1ULL << GoParser::EXCLAMATION) | (1ULL << GoParser::PLUS) | (1ULL << GoParser::MINUS) | (1ULL << GoParser::CARET))) != 0) || ((((_la - 64) & ~ 0x3fULL) == 0) && ((1ULL << (_la - 64)) & ((1ULL << (GoParser::STAR - 64)) | (1ULL << (GoParser::AMPERSAND - 64)) | (1ULL << (GoParser::RECEIVE - 64)) | (1ULL << (GoParser::DECIMAL_LIT - 64)) | (1ULL << (GoParser::BINARY_LIT - 64)) | (1ULL << (GoParser::OCTAL_LIT - 64)) | (1ULL << (GoParser::HEX_LIT - 64)) | (1ULL << (GoParser::FLOAT_LIT - 64)) | (1ULL << (GoParser::IMAGINARY_LIT - 64)) | (1ULL << (GoParser::RUNE_LIT - 64)) | (1ULL << (GoParser::RAW_STRING_LIT - 64)) | (1ULL << (GoParser::INTERPRETED_STRING_LIT - 64)))) != 0)) { setState(503); statementList(); } } catch (RecognitionException &e) { _errHandler->reportError(this, e); _localctx->exception = std::current_exception(); _errHandler->recover(this, _localctx->exception); } return _localctx; } //----------------- ExprSwitchCaseContext ------------------------------------------------------------------ GoParser::ExprSwitchCaseContext::ExprSwitchCaseContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } tree::TerminalNode* GoParser::ExprSwitchCaseContext::CASE() { return getToken(GoParser::CASE, 0); } GoParser::ExpressionListContext* GoParser::ExprSwitchCaseContext::expressionList() { return getRuleContext(0); } tree::TerminalNode* GoParser::ExprSwitchCaseContext::DEFAULT() { return getToken(GoParser::DEFAULT, 0); } size_t GoParser::ExprSwitchCaseContext::getRuleIndex() const { return GoParser::RuleExprSwitchCase; } void GoParser::ExprSwitchCaseContext::enterRule(tree::ParseTreeListener *listener) { auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->enterExprSwitchCase(this); } void GoParser::ExprSwitchCaseContext::exitRule(tree::ParseTreeListener *listener) { auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->exitExprSwitchCase(this); } GoParser::ExprSwitchCaseContext* GoParser::exprSwitchCase() { ExprSwitchCaseContext *_localctx = _tracker.createInstance(_ctx, getState()); enterRule(_localctx, 78, GoParser::RuleExprSwitchCase); #if __cplusplus > 201703L auto onExit = finally([=, this] { #else auto onExit = finally([=] { #endif exitRule(); }); try { setState(509); _errHandler->sync(this); switch (_input->LA(1)) { case GoParser::CASE: { enterOuterAlt(_localctx, 1); setState(506); match(GoParser::CASE); setState(507); expressionList(); break; } case GoParser::DEFAULT: { enterOuterAlt(_localctx, 2); setState(508); match(GoParser::DEFAULT); break; } default: throw NoViableAltException(this); } } catch (RecognitionException &e) { _errHandler->reportError(this, e); _localctx->exception = std::current_exception(); _errHandler->recover(this, _localctx->exception); } return _localctx; } //----------------- TypeSwitchStmtContext ------------------------------------------------------------------ GoParser::TypeSwitchStmtContext::TypeSwitchStmtContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } tree::TerminalNode* GoParser::TypeSwitchStmtContext::SWITCH() { return getToken(GoParser::SWITCH, 0); } tree::TerminalNode* GoParser::TypeSwitchStmtContext::L_CURLY() { return getToken(GoParser::L_CURLY, 0); } tree::TerminalNode* GoParser::TypeSwitchStmtContext::R_CURLY() { return getToken(GoParser::R_CURLY, 0); } GoParser::TypeSwitchGuardContext* GoParser::TypeSwitchStmtContext::typeSwitchGuard() { return getRuleContext(0); } GoParser::EossContext* GoParser::TypeSwitchStmtContext::eoss() { return getRuleContext(0); } GoParser::SimpleStmtContext* GoParser::TypeSwitchStmtContext::simpleStmt() { return getRuleContext(0); } std::vector GoParser::TypeSwitchStmtContext::typeCaseClause() { return getRuleContexts(); } GoParser::TypeCaseClauseContext* GoParser::TypeSwitchStmtContext::typeCaseClause(size_t i) { return getRuleContext(i); } size_t GoParser::TypeSwitchStmtContext::getRuleIndex() const { return GoParser::RuleTypeSwitchStmt; } void GoParser::TypeSwitchStmtContext::enterRule(tree::ParseTreeListener *listener) { auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->enterTypeSwitchStmt(this); } void GoParser::TypeSwitchStmtContext::exitRule(tree::ParseTreeListener *listener) { auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->exitTypeSwitchStmt(this); } GoParser::TypeSwitchStmtContext* GoParser::typeSwitchStmt() { TypeSwitchStmtContext *_localctx = _tracker.createInstance(_ctx, getState()); enterRule(_localctx, 80, GoParser::RuleTypeSwitchStmt); size_t _la = 0; #if __cplusplus > 201703L auto onExit = finally([=, this] { #else auto onExit = finally([=] { #endif exitRule(); }); try { enterOuterAlt(_localctx, 1); setState(511); match(GoParser::SWITCH); setState(520); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 47, _ctx)) { case 1: { setState(512); typeSwitchGuard(); break; } case 2: { setState(513); eoss(); setState(514); typeSwitchGuard(); break; } case 3: { setState(516); simpleStmt(); setState(517); eoss(); setState(518); typeSwitchGuard(); break; } default: break; } setState(522); match(GoParser::L_CURLY); setState(526); _errHandler->sync(this); _la = _input->LA(1); while (_la == GoParser::DEFAULT || _la == GoParser::CASE) { setState(523); typeCaseClause(); setState(528); _errHandler->sync(this); _la = _input->LA(1); } setState(529); match(GoParser::R_CURLY); } catch (RecognitionException &e) { _errHandler->reportError(this, e); _localctx->exception = std::current_exception(); _errHandler->recover(this, _localctx->exception); } return _localctx; } //----------------- TypeSwitchGuardContext ------------------------------------------------------------------ GoParser::TypeSwitchGuardContext::TypeSwitchGuardContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } GoParser::PrimaryExprContext* GoParser::TypeSwitchGuardContext::primaryExpr() { return getRuleContext(0); } tree::TerminalNode* GoParser::TypeSwitchGuardContext::DOT() { return getToken(GoParser::DOT, 0); } tree::TerminalNode* GoParser::TypeSwitchGuardContext::L_PAREN() { return getToken(GoParser::L_PAREN, 0); } tree::TerminalNode* GoParser::TypeSwitchGuardContext::TYPE() { return getToken(GoParser::TYPE, 0); } tree::TerminalNode* GoParser::TypeSwitchGuardContext::R_PAREN() { return getToken(GoParser::R_PAREN, 0); } tree::TerminalNode* GoParser::TypeSwitchGuardContext::IDENTIFIER() { return getToken(GoParser::IDENTIFIER, 0); } tree::TerminalNode* GoParser::TypeSwitchGuardContext::DECLARE_ASSIGN() { return getToken(GoParser::DECLARE_ASSIGN, 0); } size_t GoParser::TypeSwitchGuardContext::getRuleIndex() const { return GoParser::RuleTypeSwitchGuard; } void GoParser::TypeSwitchGuardContext::enterRule(tree::ParseTreeListener *listener) { auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->enterTypeSwitchGuard(this); } void GoParser::TypeSwitchGuardContext::exitRule(tree::ParseTreeListener *listener) { auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->exitTypeSwitchGuard(this); } GoParser::TypeSwitchGuardContext* GoParser::typeSwitchGuard() { TypeSwitchGuardContext *_localctx = _tracker.createInstance(_ctx, getState()); enterRule(_localctx, 82, GoParser::RuleTypeSwitchGuard); #if __cplusplus > 201703L auto onExit = finally([=, this] { #else auto onExit = finally([=] { #endif exitRule(); }); try { enterOuterAlt(_localctx, 1); setState(533); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 49, _ctx)) { case 1: { setState(531); match(GoParser::IDENTIFIER); setState(532); match(GoParser::DECLARE_ASSIGN); break; } default: break; } setState(535); primaryExpr(0); setState(536); match(GoParser::DOT); setState(537); match(GoParser::L_PAREN); setState(538); match(GoParser::TYPE); setState(539); match(GoParser::R_PAREN); } catch (RecognitionException &e) { _errHandler->reportError(this, e); _localctx->exception = std::current_exception(); _errHandler->recover(this, _localctx->exception); } return _localctx; } //----------------- TypeCaseClauseContext ------------------------------------------------------------------ GoParser::TypeCaseClauseContext::TypeCaseClauseContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } GoParser::TypeSwitchCaseContext* GoParser::TypeCaseClauseContext::typeSwitchCase() { return getRuleContext(0); } tree::TerminalNode* GoParser::TypeCaseClauseContext::COLON() { return getToken(GoParser::COLON, 0); } GoParser::StatementListContext* GoParser::TypeCaseClauseContext::statementList() { return getRuleContext(0); } size_t GoParser::TypeCaseClauseContext::getRuleIndex() const { return GoParser::RuleTypeCaseClause; } void GoParser::TypeCaseClauseContext::enterRule(tree::ParseTreeListener *listener) { auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->enterTypeCaseClause(this); } void GoParser::TypeCaseClauseContext::exitRule(tree::ParseTreeListener *listener) { auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->exitTypeCaseClause(this); } GoParser::TypeCaseClauseContext* GoParser::typeCaseClause() { TypeCaseClauseContext *_localctx = _tracker.createInstance(_ctx, getState()); enterRule(_localctx, 84, GoParser::RuleTypeCaseClause); size_t _la = 0; #if __cplusplus > 201703L auto onExit = finally([=, this] { #else auto onExit = finally([=] { #endif exitRule(); }); try { enterOuterAlt(_localctx, 1); setState(541); typeSwitchCase(); setState(542); match(GoParser::COLON); setState(544); _errHandler->sync(this); _la = _input->LA(1); if ((((_la & ~ 0x3fULL) == 0) && ((1ULL << _la) & ((1ULL << GoParser::BREAK) | (1ULL << GoParser::FUNC) | (1ULL << GoParser::INTERFACE) | (1ULL << GoParser::SELECT) | (1ULL << GoParser::DEFER) | (1ULL << GoParser::GO) | (1ULL << GoParser::MAP) | (1ULL << GoParser::STRUCT) | (1ULL << GoParser::CHAN) | (1ULL << GoParser::GOTO) | (1ULL << GoParser::SWITCH) | (1ULL << GoParser::CONST) | (1ULL << GoParser::FALLTHROUGH) | (1ULL << GoParser::IF) | (1ULL << GoParser::TYPE) | (1ULL << GoParser::CONTINUE) | (1ULL << GoParser::FOR) | (1ULL << GoParser::RETURN) | (1ULL << GoParser::VAR) | (1ULL << GoParser::NIL_LIT) | (1ULL << GoParser::IDENTIFIER) | (1ULL << GoParser::L_PAREN) | (1ULL << GoParser::L_CURLY) | (1ULL << GoParser::L_BRACKET) | (1ULL << GoParser::EXCLAMATION) | (1ULL << GoParser::PLUS) | (1ULL << GoParser::MINUS) | (1ULL << GoParser::CARET))) != 0) || ((((_la - 64) & ~ 0x3fULL) == 0) && ((1ULL << (_la - 64)) & ((1ULL << (GoParser::STAR - 64)) | (1ULL << (GoParser::AMPERSAND - 64)) | (1ULL << (GoParser::RECEIVE - 64)) | (1ULL << (GoParser::DECIMAL_LIT - 64)) | (1ULL << (GoParser::BINARY_LIT - 64)) | (1ULL << (GoParser::OCTAL_LIT - 64)) | (1ULL << (GoParser::HEX_LIT - 64)) | (1ULL << (GoParser::FLOAT_LIT - 64)) | (1ULL << (GoParser::IMAGINARY_LIT - 64)) | (1ULL << (GoParser::RUNE_LIT - 64)) | (1ULL << (GoParser::RAW_STRING_LIT - 64)) | (1ULL << (GoParser::INTERPRETED_STRING_LIT - 64)))) != 0)) { setState(543); statementList(); } } catch (RecognitionException &e) { _errHandler->reportError(this, e); _localctx->exception = std::current_exception(); _errHandler->recover(this, _localctx->exception); } return _localctx; } //----------------- TypeSwitchCaseContext ------------------------------------------------------------------ GoParser::TypeSwitchCaseContext::TypeSwitchCaseContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } tree::TerminalNode* GoParser::TypeSwitchCaseContext::CASE() { return getToken(GoParser::CASE, 0); } GoParser::TypeListContext* GoParser::TypeSwitchCaseContext::typeList() { return getRuleContext(0); } tree::TerminalNode* GoParser::TypeSwitchCaseContext::DEFAULT() { return getToken(GoParser::DEFAULT, 0); } size_t GoParser::TypeSwitchCaseContext::getRuleIndex() const { return GoParser::RuleTypeSwitchCase; } void GoParser::TypeSwitchCaseContext::enterRule(tree::ParseTreeListener *listener) { auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->enterTypeSwitchCase(this); } void GoParser::TypeSwitchCaseContext::exitRule(tree::ParseTreeListener *listener) { auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->exitTypeSwitchCase(this); } GoParser::TypeSwitchCaseContext* GoParser::typeSwitchCase() { TypeSwitchCaseContext *_localctx = _tracker.createInstance(_ctx, getState()); enterRule(_localctx, 86, GoParser::RuleTypeSwitchCase); #if __cplusplus > 201703L auto onExit = finally([=, this] { #else auto onExit = finally([=] { #endif exitRule(); }); try { setState(549); _errHandler->sync(this); switch (_input->LA(1)) { case GoParser::CASE: { enterOuterAlt(_localctx, 1); setState(546); match(GoParser::CASE); setState(547); typeList(); break; } case GoParser::DEFAULT: { enterOuterAlt(_localctx, 2); setState(548); match(GoParser::DEFAULT); break; } default: throw NoViableAltException(this); } } catch (RecognitionException &e) { _errHandler->reportError(this, e); _localctx->exception = std::current_exception(); _errHandler->recover(this, _localctx->exception); } return _localctx; } //----------------- TypeListContext ------------------------------------------------------------------ GoParser::TypeListContext::TypeListContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } std::vector GoParser::TypeListContext::type_() { return getRuleContexts(); } GoParser::Type_Context* GoParser::TypeListContext::type_(size_t i) { return getRuleContext(i); } std::vector GoParser::TypeListContext::NIL_LIT() { return getTokens(GoParser::NIL_LIT); } tree::TerminalNode* GoParser::TypeListContext::NIL_LIT(size_t i) { return getToken(GoParser::NIL_LIT, i); } std::vector GoParser::TypeListContext::COMMA() { return getTokens(GoParser::COMMA); } tree::TerminalNode* GoParser::TypeListContext::COMMA(size_t i) { return getToken(GoParser::COMMA, i); } size_t GoParser::TypeListContext::getRuleIndex() const { return GoParser::RuleTypeList; } void GoParser::TypeListContext::enterRule(tree::ParseTreeListener *listener) { auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->enterTypeList(this); } void GoParser::TypeListContext::exitRule(tree::ParseTreeListener *listener) { auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->exitTypeList(this); } GoParser::TypeListContext* GoParser::typeList() { TypeListContext *_localctx = _tracker.createInstance(_ctx, getState()); enterRule(_localctx, 88, GoParser::RuleTypeList); size_t _la = 0; #if __cplusplus > 201703L auto onExit = finally([=, this] { #else auto onExit = finally([=] { #endif exitRule(); }); try { enterOuterAlt(_localctx, 1); setState(553); _errHandler->sync(this); switch (_input->LA(1)) { case GoParser::FUNC: case GoParser::INTERFACE: case GoParser::MAP: case GoParser::STRUCT: case GoParser::CHAN: case GoParser::IDENTIFIER: case GoParser::L_PAREN: case GoParser::L_BRACKET: case GoParser::STAR: case GoParser::RECEIVE: { setState(551); type_(); break; } case GoParser::NIL_LIT: { setState(552); match(GoParser::NIL_LIT); break; } default: throw NoViableAltException(this); } setState(562); _errHandler->sync(this); _la = _input->LA(1); while (_la == GoParser::COMMA) { setState(555); match(GoParser::COMMA); setState(558); _errHandler->sync(this); switch (_input->LA(1)) { case GoParser::FUNC: case GoParser::INTERFACE: case GoParser::MAP: case GoParser::STRUCT: case GoParser::CHAN: case GoParser::IDENTIFIER: case GoParser::L_PAREN: case GoParser::L_BRACKET: case GoParser::STAR: case GoParser::RECEIVE: { setState(556); type_(); break; } case GoParser::NIL_LIT: { setState(557); match(GoParser::NIL_LIT); break; } default: throw NoViableAltException(this); } setState(564); _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; } //----------------- SelectStmtContext ------------------------------------------------------------------ GoParser::SelectStmtContext::SelectStmtContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } tree::TerminalNode* GoParser::SelectStmtContext::SELECT() { return getToken(GoParser::SELECT, 0); } tree::TerminalNode* GoParser::SelectStmtContext::L_CURLY() { return getToken(GoParser::L_CURLY, 0); } tree::TerminalNode* GoParser::SelectStmtContext::R_CURLY() { return getToken(GoParser::R_CURLY, 0); } std::vector GoParser::SelectStmtContext::commClause() { return getRuleContexts(); } GoParser::CommClauseContext* GoParser::SelectStmtContext::commClause(size_t i) { return getRuleContext(i); } size_t GoParser::SelectStmtContext::getRuleIndex() const { return GoParser::RuleSelectStmt; } void GoParser::SelectStmtContext::enterRule(tree::ParseTreeListener *listener) { auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->enterSelectStmt(this); } void GoParser::SelectStmtContext::exitRule(tree::ParseTreeListener *listener) { auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->exitSelectStmt(this); } GoParser::SelectStmtContext* GoParser::selectStmt() { SelectStmtContext *_localctx = _tracker.createInstance(_ctx, getState()); enterRule(_localctx, 90, GoParser::RuleSelectStmt); size_t _la = 0; #if __cplusplus > 201703L auto onExit = finally([=, this] { #else auto onExit = finally([=] { #endif exitRule(); }); try { enterOuterAlt(_localctx, 1); setState(565); match(GoParser::SELECT); setState(566); match(GoParser::L_CURLY); setState(570); _errHandler->sync(this); _la = _input->LA(1); while (_la == GoParser::DEFAULT || _la == GoParser::CASE) { setState(567); commClause(); setState(572); _errHandler->sync(this); _la = _input->LA(1); } setState(573); match(GoParser::R_CURLY); } catch (RecognitionException &e) { _errHandler->reportError(this, e); _localctx->exception = std::current_exception(); _errHandler->recover(this, _localctx->exception); } return _localctx; } //----------------- CommClauseContext ------------------------------------------------------------------ GoParser::CommClauseContext::CommClauseContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } GoParser::CommCaseContext* GoParser::CommClauseContext::commCase() { return getRuleContext(0); } tree::TerminalNode* GoParser::CommClauseContext::COLON() { return getToken(GoParser::COLON, 0); } GoParser::StatementListContext* GoParser::CommClauseContext::statementList() { return getRuleContext(0); } size_t GoParser::CommClauseContext::getRuleIndex() const { return GoParser::RuleCommClause; } void GoParser::CommClauseContext::enterRule(tree::ParseTreeListener *listener) { auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->enterCommClause(this); } void GoParser::CommClauseContext::exitRule(tree::ParseTreeListener *listener) { auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->exitCommClause(this); } GoParser::CommClauseContext* GoParser::commClause() { CommClauseContext *_localctx = _tracker.createInstance(_ctx, getState()); enterRule(_localctx, 92, GoParser::RuleCommClause); size_t _la = 0; #if __cplusplus > 201703L auto onExit = finally([=, this] { #else auto onExit = finally([=] { #endif exitRule(); }); try { enterOuterAlt(_localctx, 1); setState(575); commCase(); setState(576); match(GoParser::COLON); setState(578); _errHandler->sync(this); _la = _input->LA(1); if ((((_la & ~ 0x3fULL) == 0) && ((1ULL << _la) & ((1ULL << GoParser::BREAK) | (1ULL << GoParser::FUNC) | (1ULL << GoParser::INTERFACE) | (1ULL << GoParser::SELECT) | (1ULL << GoParser::DEFER) | (1ULL << GoParser::GO) | (1ULL << GoParser::MAP) | (1ULL << GoParser::STRUCT) | (1ULL << GoParser::CHAN) | (1ULL << GoParser::GOTO) | (1ULL << GoParser::SWITCH) | (1ULL << GoParser::CONST) | (1ULL << GoParser::FALLTHROUGH) | (1ULL << GoParser::IF) | (1ULL << GoParser::TYPE) | (1ULL << GoParser::CONTINUE) | (1ULL << GoParser::FOR) | (1ULL << GoParser::RETURN) | (1ULL << GoParser::VAR) | (1ULL << GoParser::NIL_LIT) | (1ULL << GoParser::IDENTIFIER) | (1ULL << GoParser::L_PAREN) | (1ULL << GoParser::L_CURLY) | (1ULL << GoParser::L_BRACKET) | (1ULL << GoParser::EXCLAMATION) | (1ULL << GoParser::PLUS) | (1ULL << GoParser::MINUS) | (1ULL << GoParser::CARET))) != 0) || ((((_la - 64) & ~ 0x3fULL) == 0) && ((1ULL << (_la - 64)) & ((1ULL << (GoParser::STAR - 64)) | (1ULL << (GoParser::AMPERSAND - 64)) | (1ULL << (GoParser::RECEIVE - 64)) | (1ULL << (GoParser::DECIMAL_LIT - 64)) | (1ULL << (GoParser::BINARY_LIT - 64)) | (1ULL << (GoParser::OCTAL_LIT - 64)) | (1ULL << (GoParser::HEX_LIT - 64)) | (1ULL << (GoParser::FLOAT_LIT - 64)) | (1ULL << (GoParser::IMAGINARY_LIT - 64)) | (1ULL << (GoParser::RUNE_LIT - 64)) | (1ULL << (GoParser::RAW_STRING_LIT - 64)) | (1ULL << (GoParser::INTERPRETED_STRING_LIT - 64)))) != 0)) { setState(577); statementList(); } } catch (RecognitionException &e) { _errHandler->reportError(this, e); _localctx->exception = std::current_exception(); _errHandler->recover(this, _localctx->exception); } return _localctx; } //----------------- CommCaseContext ------------------------------------------------------------------ GoParser::CommCaseContext::CommCaseContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } tree::TerminalNode* GoParser::CommCaseContext::CASE() { return getToken(GoParser::CASE, 0); } GoParser::SendStmtContext* GoParser::CommCaseContext::sendStmt() { return getRuleContext(0); } GoParser::RecvStmtContext* GoParser::CommCaseContext::recvStmt() { return getRuleContext(0); } tree::TerminalNode* GoParser::CommCaseContext::DEFAULT() { return getToken(GoParser::DEFAULT, 0); } size_t GoParser::CommCaseContext::getRuleIndex() const { return GoParser::RuleCommCase; } void GoParser::CommCaseContext::enterRule(tree::ParseTreeListener *listener) { auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->enterCommCase(this); } void GoParser::CommCaseContext::exitRule(tree::ParseTreeListener *listener) { auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->exitCommCase(this); } GoParser::CommCaseContext* GoParser::commCase() { CommCaseContext *_localctx = _tracker.createInstance(_ctx, getState()); enterRule(_localctx, 94, GoParser::RuleCommCase); #if __cplusplus > 201703L auto onExit = finally([=, this] { #else auto onExit = finally([=] { #endif exitRule(); }); try { setState(586); _errHandler->sync(this); switch (_input->LA(1)) { case GoParser::CASE: { enterOuterAlt(_localctx, 1); setState(580); match(GoParser::CASE); setState(583); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 57, _ctx)) { case 1: { setState(581); sendStmt(); break; } case 2: { setState(582); recvStmt(); break; } default: break; } break; } case GoParser::DEFAULT: { enterOuterAlt(_localctx, 2); setState(585); match(GoParser::DEFAULT); break; } default: throw NoViableAltException(this); } } catch (RecognitionException &e) { _errHandler->reportError(this, e); _localctx->exception = std::current_exception(); _errHandler->recover(this, _localctx->exception); } return _localctx; } //----------------- RecvStmtContext ------------------------------------------------------------------ GoParser::RecvStmtContext::RecvStmtContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } GoParser::ExpressionContext* GoParser::RecvStmtContext::expression() { return getRuleContext(0); } GoParser::ExpressionListContext* GoParser::RecvStmtContext::expressionList() { return getRuleContext(0); } tree::TerminalNode* GoParser::RecvStmtContext::ASSIGN() { return getToken(GoParser::ASSIGN, 0); } GoParser::IdentifierListContext* GoParser::RecvStmtContext::identifierList() { return getRuleContext(0); } tree::TerminalNode* GoParser::RecvStmtContext::DECLARE_ASSIGN() { return getToken(GoParser::DECLARE_ASSIGN, 0); } size_t GoParser::RecvStmtContext::getRuleIndex() const { return GoParser::RuleRecvStmt; } void GoParser::RecvStmtContext::enterRule(tree::ParseTreeListener *listener) { auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->enterRecvStmt(this); } void GoParser::RecvStmtContext::exitRule(tree::ParseTreeListener *listener) { auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->exitRecvStmt(this); } GoParser::RecvStmtContext* GoParser::recvStmt() { RecvStmtContext *_localctx = _tracker.createInstance(_ctx, getState()); enterRule(_localctx, 96, GoParser::RuleRecvStmt); #if __cplusplus > 201703L auto onExit = finally([=, this] { #else auto onExit = finally([=] { #endif exitRule(); }); try { enterOuterAlt(_localctx, 1); setState(594); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 59, _ctx)) { case 1: { setState(588); expressionList(); setState(589); match(GoParser::ASSIGN); break; } case 2: { setState(591); identifierList(); setState(592); match(GoParser::DECLARE_ASSIGN); break; } default: break; } setState(596); antlrcpp::downCast(_localctx)->recvExpr = expression(0); } catch (RecognitionException &e) { _errHandler->reportError(this, e); _localctx->exception = std::current_exception(); _errHandler->recover(this, _localctx->exception); } return _localctx; } //----------------- ForStmtContext ------------------------------------------------------------------ GoParser::ForStmtContext::ForStmtContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } tree::TerminalNode* GoParser::ForStmtContext::FOR() { return getToken(GoParser::FOR, 0); } GoParser::BlockContext* GoParser::ForStmtContext::block() { return getRuleContext(0); } GoParser::ExpressionContext* GoParser::ForStmtContext::expression() { return getRuleContext(0); } GoParser::ForClauseContext* GoParser::ForStmtContext::forClause() { return getRuleContext(0); } GoParser::RangeClauseContext* GoParser::ForStmtContext::rangeClause() { return getRuleContext(0); } size_t GoParser::ForStmtContext::getRuleIndex() const { return GoParser::RuleForStmt; } void GoParser::ForStmtContext::enterRule(tree::ParseTreeListener *listener) { auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->enterForStmt(this); } void GoParser::ForStmtContext::exitRule(tree::ParseTreeListener *listener) { auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->exitForStmt(this); } GoParser::ForStmtContext* GoParser::forStmt() { ForStmtContext *_localctx = _tracker.createInstance(_ctx, getState()); enterRule(_localctx, 98, GoParser::RuleForStmt); #if __cplusplus > 201703L auto onExit = finally([=, this] { #else auto onExit = finally([=] { #endif exitRule(); }); try { enterOuterAlt(_localctx, 1); setState(598); match(GoParser::FOR); setState(602); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 60, _ctx)) { case 1: { setState(599); expression(0); break; } case 2: { setState(600); forClause(); break; } case 3: { setState(601); rangeClause(); break; } default: break; } setState(604); block(); } catch (RecognitionException &e) { _errHandler->reportError(this, e); _localctx->exception = std::current_exception(); _errHandler->recover(this, _localctx->exception); } return _localctx; } //----------------- ForClauseContext ------------------------------------------------------------------ GoParser::ForClauseContext::ForClauseContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } std::vector GoParser::ForClauseContext::eoss() { return getRuleContexts(); } GoParser::EossContext* GoParser::ForClauseContext::eoss(size_t i) { return getRuleContext(i); } GoParser::ExpressionContext* GoParser::ForClauseContext::expression() { return getRuleContext(0); } std::vector GoParser::ForClauseContext::simpleStmt() { return getRuleContexts(); } GoParser::SimpleStmtContext* GoParser::ForClauseContext::simpleStmt(size_t i) { return getRuleContext(i); } size_t GoParser::ForClauseContext::getRuleIndex() const { return GoParser::RuleForClause; } void GoParser::ForClauseContext::enterRule(tree::ParseTreeListener *listener) { auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->enterForClause(this); } void GoParser::ForClauseContext::exitRule(tree::ParseTreeListener *listener) { auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->exitForClause(this); } GoParser::ForClauseContext* GoParser::forClause() { ForClauseContext *_localctx = _tracker.createInstance(_ctx, getState()); enterRule(_localctx, 100, GoParser::RuleForClause); size_t _la = 0; #if __cplusplus > 201703L auto onExit = finally([=, this] { #else auto onExit = finally([=] { #endif exitRule(); }); try { enterOuterAlt(_localctx, 1); setState(607); _errHandler->sync(this); _la = _input->LA(1); if ((((_la & ~ 0x3fULL) == 0) && ((1ULL << _la) & ((1ULL << GoParser::FUNC) | (1ULL << GoParser::INTERFACE) | (1ULL << GoParser::MAP) | (1ULL << GoParser::STRUCT) | (1ULL << GoParser::CHAN) | (1ULL << GoParser::NIL_LIT) | (1ULL << GoParser::IDENTIFIER) | (1ULL << GoParser::L_PAREN) | (1ULL << GoParser::L_BRACKET) | (1ULL << GoParser::EXCLAMATION) | (1ULL << GoParser::PLUS) | (1ULL << GoParser::MINUS) | (1ULL << GoParser::CARET))) != 0) || ((((_la - 64) & ~ 0x3fULL) == 0) && ((1ULL << (_la - 64)) & ((1ULL << (GoParser::STAR - 64)) | (1ULL << (GoParser::AMPERSAND - 64)) | (1ULL << (GoParser::RECEIVE - 64)) | (1ULL << (GoParser::DECIMAL_LIT - 64)) | (1ULL << (GoParser::BINARY_LIT - 64)) | (1ULL << (GoParser::OCTAL_LIT - 64)) | (1ULL << (GoParser::HEX_LIT - 64)) | (1ULL << (GoParser::FLOAT_LIT - 64)) | (1ULL << (GoParser::IMAGINARY_LIT - 64)) | (1ULL << (GoParser::RUNE_LIT - 64)) | (1ULL << (GoParser::RAW_STRING_LIT - 64)) | (1ULL << (GoParser::INTERPRETED_STRING_LIT - 64)))) != 0)) { setState(606); antlrcpp::downCast(_localctx)->initStmt = simpleStmt(); } setState(609); eoss(); setState(611); _errHandler->sync(this); _la = _input->LA(1); if ((((_la & ~ 0x3fULL) == 0) && ((1ULL << _la) & ((1ULL << GoParser::FUNC) | (1ULL << GoParser::INTERFACE) | (1ULL << GoParser::MAP) | (1ULL << GoParser::STRUCT) | (1ULL << GoParser::CHAN) | (1ULL << GoParser::NIL_LIT) | (1ULL << GoParser::IDENTIFIER) | (1ULL << GoParser::L_PAREN) | (1ULL << GoParser::L_BRACKET) | (1ULL << GoParser::EXCLAMATION) | (1ULL << GoParser::PLUS) | (1ULL << GoParser::MINUS) | (1ULL << GoParser::CARET))) != 0) || ((((_la - 64) & ~ 0x3fULL) == 0) && ((1ULL << (_la - 64)) & ((1ULL << (GoParser::STAR - 64)) | (1ULL << (GoParser::AMPERSAND - 64)) | (1ULL << (GoParser::RECEIVE - 64)) | (1ULL << (GoParser::DECIMAL_LIT - 64)) | (1ULL << (GoParser::BINARY_LIT - 64)) | (1ULL << (GoParser::OCTAL_LIT - 64)) | (1ULL << (GoParser::HEX_LIT - 64)) | (1ULL << (GoParser::FLOAT_LIT - 64)) | (1ULL << (GoParser::IMAGINARY_LIT - 64)) | (1ULL << (GoParser::RUNE_LIT - 64)) | (1ULL << (GoParser::RAW_STRING_LIT - 64)) | (1ULL << (GoParser::INTERPRETED_STRING_LIT - 64)))) != 0)) { setState(610); expression(0); } setState(613); eoss(); setState(615); _errHandler->sync(this); _la = _input->LA(1); if ((((_la & ~ 0x3fULL) == 0) && ((1ULL << _la) & ((1ULL << GoParser::FUNC) | (1ULL << GoParser::INTERFACE) | (1ULL << GoParser::MAP) | (1ULL << GoParser::STRUCT) | (1ULL << GoParser::CHAN) | (1ULL << GoParser::NIL_LIT) | (1ULL << GoParser::IDENTIFIER) | (1ULL << GoParser::L_PAREN) | (1ULL << GoParser::L_BRACKET) | (1ULL << GoParser::EXCLAMATION) | (1ULL << GoParser::PLUS) | (1ULL << GoParser::MINUS) | (1ULL << GoParser::CARET))) != 0) || ((((_la - 64) & ~ 0x3fULL) == 0) && ((1ULL << (_la - 64)) & ((1ULL << (GoParser::STAR - 64)) | (1ULL << (GoParser::AMPERSAND - 64)) | (1ULL << (GoParser::RECEIVE - 64)) | (1ULL << (GoParser::DECIMAL_LIT - 64)) | (1ULL << (GoParser::BINARY_LIT - 64)) | (1ULL << (GoParser::OCTAL_LIT - 64)) | (1ULL << (GoParser::HEX_LIT - 64)) | (1ULL << (GoParser::FLOAT_LIT - 64)) | (1ULL << (GoParser::IMAGINARY_LIT - 64)) | (1ULL << (GoParser::RUNE_LIT - 64)) | (1ULL << (GoParser::RAW_STRING_LIT - 64)) | (1ULL << (GoParser::INTERPRETED_STRING_LIT - 64)))) != 0)) { setState(614); antlrcpp::downCast(_localctx)->postStmt = simpleStmt(); } } catch (RecognitionException &e) { _errHandler->reportError(this, e); _localctx->exception = std::current_exception(); _errHandler->recover(this, _localctx->exception); } return _localctx; } //----------------- RangeClauseContext ------------------------------------------------------------------ GoParser::RangeClauseContext::RangeClauseContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } tree::TerminalNode* GoParser::RangeClauseContext::RANGE() { return getToken(GoParser::RANGE, 0); } GoParser::ExpressionContext* GoParser::RangeClauseContext::expression() { return getRuleContext(0); } GoParser::ExpressionListContext* GoParser::RangeClauseContext::expressionList() { return getRuleContext(0); } tree::TerminalNode* GoParser::RangeClauseContext::ASSIGN() { return getToken(GoParser::ASSIGN, 0); } GoParser::IdentifierListContext* GoParser::RangeClauseContext::identifierList() { return getRuleContext(0); } tree::TerminalNode* GoParser::RangeClauseContext::DECLARE_ASSIGN() { return getToken(GoParser::DECLARE_ASSIGN, 0); } size_t GoParser::RangeClauseContext::getRuleIndex() const { return GoParser::RuleRangeClause; } void GoParser::RangeClauseContext::enterRule(tree::ParseTreeListener *listener) { auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->enterRangeClause(this); } void GoParser::RangeClauseContext::exitRule(tree::ParseTreeListener *listener) { auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->exitRangeClause(this); } GoParser::RangeClauseContext* GoParser::rangeClause() { RangeClauseContext *_localctx = _tracker.createInstance(_ctx, getState()); enterRule(_localctx, 102, GoParser::RuleRangeClause); #if __cplusplus > 201703L auto onExit = finally([=, this] { #else auto onExit = finally([=] { #endif exitRule(); }); try { enterOuterAlt(_localctx, 1); setState(623); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 64, _ctx)) { case 1: { setState(617); expressionList(); setState(618); match(GoParser::ASSIGN); break; } case 2: { setState(620); identifierList(); setState(621); match(GoParser::DECLARE_ASSIGN); break; } default: break; } setState(625); match(GoParser::RANGE); setState(626); expression(0); } catch (RecognitionException &e) { _errHandler->reportError(this, e); _localctx->exception = std::current_exception(); _errHandler->recover(this, _localctx->exception); } return _localctx; } //----------------- GoStmtContext ------------------------------------------------------------------ GoParser::GoStmtContext::GoStmtContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } tree::TerminalNode* GoParser::GoStmtContext::GO() { return getToken(GoParser::GO, 0); } GoParser::ExpressionContext* GoParser::GoStmtContext::expression() { return getRuleContext(0); } size_t GoParser::GoStmtContext::getRuleIndex() const { return GoParser::RuleGoStmt; } void GoParser::GoStmtContext::enterRule(tree::ParseTreeListener *listener) { auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->enterGoStmt(this); } void GoParser::GoStmtContext::exitRule(tree::ParseTreeListener *listener) { auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->exitGoStmt(this); } GoParser::GoStmtContext* GoParser::goStmt() { GoStmtContext *_localctx = _tracker.createInstance(_ctx, getState()); enterRule(_localctx, 104, GoParser::RuleGoStmt); #if __cplusplus > 201703L auto onExit = finally([=, this] { #else auto onExit = finally([=] { #endif exitRule(); }); try { enterOuterAlt(_localctx, 1); setState(628); match(GoParser::GO); setState(629); expression(0); } catch (RecognitionException &e) { _errHandler->reportError(this, e); _localctx->exception = std::current_exception(); _errHandler->recover(this, _localctx->exception); } return _localctx; } //----------------- Type_Context ------------------------------------------------------------------ GoParser::Type_Context::Type_Context(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } GoParser::TypeNameContext* GoParser::Type_Context::typeName() { return getRuleContext(0); } GoParser::TypeLitContext* GoParser::Type_Context::typeLit() { return getRuleContext(0); } tree::TerminalNode* GoParser::Type_Context::L_PAREN() { return getToken(GoParser::L_PAREN, 0); } GoParser::Type_Context* GoParser::Type_Context::type_() { return getRuleContext(0); } tree::TerminalNode* GoParser::Type_Context::R_PAREN() { return getToken(GoParser::R_PAREN, 0); } size_t GoParser::Type_Context::getRuleIndex() const { return GoParser::RuleType_; } void GoParser::Type_Context::enterRule(tree::ParseTreeListener *listener) { auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->enterType_(this); } void GoParser::Type_Context::exitRule(tree::ParseTreeListener *listener) { auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->exitType_(this); } GoParser::Type_Context* GoParser::type_() { Type_Context *_localctx = _tracker.createInstance(_ctx, getState()); enterRule(_localctx, 106, GoParser::RuleType_); #if __cplusplus > 201703L auto onExit = finally([=, this] { #else auto onExit = finally([=] { #endif exitRule(); }); try { setState(637); _errHandler->sync(this); switch (_input->LA(1)) { case GoParser::IDENTIFIER: { enterOuterAlt(_localctx, 1); setState(631); typeName(); break; } case GoParser::FUNC: case GoParser::INTERFACE: case GoParser::MAP: case GoParser::STRUCT: case GoParser::CHAN: case GoParser::L_BRACKET: case GoParser::STAR: case GoParser::RECEIVE: { enterOuterAlt(_localctx, 2); setState(632); typeLit(); break; } case GoParser::L_PAREN: { enterOuterAlt(_localctx, 3); setState(633); match(GoParser::L_PAREN); setState(634); type_(); setState(635); match(GoParser::R_PAREN); break; } default: throw NoViableAltException(this); } } catch (RecognitionException &e) { _errHandler->reportError(this, e); _localctx->exception = std::current_exception(); _errHandler->recover(this, _localctx->exception); } return _localctx; } //----------------- TypeNameContext ------------------------------------------------------------------ GoParser::TypeNameContext::TypeNameContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } GoParser::QualifiedIdentContext* GoParser::TypeNameContext::qualifiedIdent() { return getRuleContext(0); } tree::TerminalNode* GoParser::TypeNameContext::IDENTIFIER() { return getToken(GoParser::IDENTIFIER, 0); } size_t GoParser::TypeNameContext::getRuleIndex() const { return GoParser::RuleTypeName; } void GoParser::TypeNameContext::enterRule(tree::ParseTreeListener *listener) { auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->enterTypeName(this); } void GoParser::TypeNameContext::exitRule(tree::ParseTreeListener *listener) { auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->exitTypeName(this); } GoParser::TypeNameContext* GoParser::typeName() { TypeNameContext *_localctx = _tracker.createInstance(_ctx, getState()); enterRule(_localctx, 108, GoParser::RuleTypeName); #if __cplusplus > 201703L auto onExit = finally([=, this] { #else auto onExit = finally([=] { #endif exitRule(); }); try { setState(641); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 66, _ctx)) { case 1: { enterOuterAlt(_localctx, 1); setState(639); qualifiedIdent(); break; } case 2: { enterOuterAlt(_localctx, 2); setState(640); match(GoParser::IDENTIFIER); break; } default: break; } } catch (RecognitionException &e) { _errHandler->reportError(this, e); _localctx->exception = std::current_exception(); _errHandler->recover(this, _localctx->exception); } return _localctx; } //----------------- TypeLitContext ------------------------------------------------------------------ GoParser::TypeLitContext::TypeLitContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } GoParser::ArrayTypeContext* GoParser::TypeLitContext::arrayType() { return getRuleContext(0); } GoParser::StructTypeContext* GoParser::TypeLitContext::structType() { return getRuleContext(0); } GoParser::PointerTypeContext* GoParser::TypeLitContext::pointerType() { return getRuleContext(0); } GoParser::FunctionTypeContext* GoParser::TypeLitContext::functionType() { return getRuleContext(0); } GoParser::InterfaceTypeContext* GoParser::TypeLitContext::interfaceType() { return getRuleContext(0); } GoParser::SliceTypeContext* GoParser::TypeLitContext::sliceType() { return getRuleContext(0); } GoParser::MapTypeContext* GoParser::TypeLitContext::mapType() { return getRuleContext(0); } GoParser::ChannelTypeContext* GoParser::TypeLitContext::channelType() { return getRuleContext(0); } size_t GoParser::TypeLitContext::getRuleIndex() const { return GoParser::RuleTypeLit; } void GoParser::TypeLitContext::enterRule(tree::ParseTreeListener *listener) { auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->enterTypeLit(this); } void GoParser::TypeLitContext::exitRule(tree::ParseTreeListener *listener) { auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->exitTypeLit(this); } GoParser::TypeLitContext* GoParser::typeLit() { TypeLitContext *_localctx = _tracker.createInstance(_ctx, getState()); enterRule(_localctx, 110, GoParser::RuleTypeLit); #if __cplusplus > 201703L auto onExit = finally([=, this] { #else auto onExit = finally([=] { #endif exitRule(); }); try { setState(651); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 67, _ctx)) { case 1: { enterOuterAlt(_localctx, 1); setState(643); arrayType(); break; } case 2: { enterOuterAlt(_localctx, 2); setState(644); structType(); break; } case 3: { enterOuterAlt(_localctx, 3); setState(645); pointerType(); break; } case 4: { enterOuterAlt(_localctx, 4); setState(646); functionType(); break; } case 5: { enterOuterAlt(_localctx, 5); setState(647); interfaceType(); break; } case 6: { enterOuterAlt(_localctx, 6); setState(648); sliceType(); break; } case 7: { enterOuterAlt(_localctx, 7); setState(649); mapType(); break; } case 8: { enterOuterAlt(_localctx, 8); setState(650); channelType(); break; } default: break; } } catch (RecognitionException &e) { _errHandler->reportError(this, e); _localctx->exception = std::current_exception(); _errHandler->recover(this, _localctx->exception); } return _localctx; } //----------------- ArrayTypeContext ------------------------------------------------------------------ GoParser::ArrayTypeContext::ArrayTypeContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } tree::TerminalNode* GoParser::ArrayTypeContext::L_BRACKET() { return getToken(GoParser::L_BRACKET, 0); } GoParser::ArrayLengthContext* GoParser::ArrayTypeContext::arrayLength() { return getRuleContext(0); } tree::TerminalNode* GoParser::ArrayTypeContext::R_BRACKET() { return getToken(GoParser::R_BRACKET, 0); } GoParser::ElementTypeContext* GoParser::ArrayTypeContext::elementType() { return getRuleContext(0); } size_t GoParser::ArrayTypeContext::getRuleIndex() const { return GoParser::RuleArrayType; } void GoParser::ArrayTypeContext::enterRule(tree::ParseTreeListener *listener) { auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->enterArrayType(this); } void GoParser::ArrayTypeContext::exitRule(tree::ParseTreeListener *listener) { auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->exitArrayType(this); } GoParser::ArrayTypeContext* GoParser::arrayType() { ArrayTypeContext *_localctx = _tracker.createInstance(_ctx, getState()); enterRule(_localctx, 112, GoParser::RuleArrayType); #if __cplusplus > 201703L auto onExit = finally([=, this] { #else auto onExit = finally([=] { #endif exitRule(); }); try { enterOuterAlt(_localctx, 1); setState(653); match(GoParser::L_BRACKET); setState(654); arrayLength(); setState(655); match(GoParser::R_BRACKET); setState(656); elementType(); } catch (RecognitionException &e) { _errHandler->reportError(this, e); _localctx->exception = std::current_exception(); _errHandler->recover(this, _localctx->exception); } return _localctx; } //----------------- ArrayLengthContext ------------------------------------------------------------------ GoParser::ArrayLengthContext::ArrayLengthContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } GoParser::ExpressionContext* GoParser::ArrayLengthContext::expression() { return getRuleContext(0); } size_t GoParser::ArrayLengthContext::getRuleIndex() const { return GoParser::RuleArrayLength; } void GoParser::ArrayLengthContext::enterRule(tree::ParseTreeListener *listener) { auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->enterArrayLength(this); } void GoParser::ArrayLengthContext::exitRule(tree::ParseTreeListener *listener) { auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->exitArrayLength(this); } GoParser::ArrayLengthContext* GoParser::arrayLength() { ArrayLengthContext *_localctx = _tracker.createInstance(_ctx, getState()); enterRule(_localctx, 114, GoParser::RuleArrayLength); #if __cplusplus > 201703L auto onExit = finally([=, this] { #else auto onExit = finally([=] { #endif exitRule(); }); try { enterOuterAlt(_localctx, 1); setState(658); expression(0); } catch (RecognitionException &e) { _errHandler->reportError(this, e); _localctx->exception = std::current_exception(); _errHandler->recover(this, _localctx->exception); } return _localctx; } //----------------- ElementTypeContext ------------------------------------------------------------------ GoParser::ElementTypeContext::ElementTypeContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } GoParser::Type_Context* GoParser::ElementTypeContext::type_() { return getRuleContext(0); } size_t GoParser::ElementTypeContext::getRuleIndex() const { return GoParser::RuleElementType; } void GoParser::ElementTypeContext::enterRule(tree::ParseTreeListener *listener) { auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->enterElementType(this); } void GoParser::ElementTypeContext::exitRule(tree::ParseTreeListener *listener) { auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->exitElementType(this); } GoParser::ElementTypeContext* GoParser::elementType() { ElementTypeContext *_localctx = _tracker.createInstance(_ctx, getState()); enterRule(_localctx, 116, GoParser::RuleElementType); #if __cplusplus > 201703L auto onExit = finally([=, this] { #else auto onExit = finally([=] { #endif exitRule(); }); try { enterOuterAlt(_localctx, 1); setState(660); type_(); } catch (RecognitionException &e) { _errHandler->reportError(this, e); _localctx->exception = std::current_exception(); _errHandler->recover(this, _localctx->exception); } return _localctx; } //----------------- PointerTypeContext ------------------------------------------------------------------ GoParser::PointerTypeContext::PointerTypeContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } tree::TerminalNode* GoParser::PointerTypeContext::STAR() { return getToken(GoParser::STAR, 0); } GoParser::Type_Context* GoParser::PointerTypeContext::type_() { return getRuleContext(0); } size_t GoParser::PointerTypeContext::getRuleIndex() const { return GoParser::RulePointerType; } void GoParser::PointerTypeContext::enterRule(tree::ParseTreeListener *listener) { auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->enterPointerType(this); } void GoParser::PointerTypeContext::exitRule(tree::ParseTreeListener *listener) { auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->exitPointerType(this); } GoParser::PointerTypeContext* GoParser::pointerType() { PointerTypeContext *_localctx = _tracker.createInstance(_ctx, getState()); enterRule(_localctx, 118, GoParser::RulePointerType); #if __cplusplus > 201703L auto onExit = finally([=, this] { #else auto onExit = finally([=] { #endif exitRule(); }); try { enterOuterAlt(_localctx, 1); setState(662); match(GoParser::STAR); setState(663); type_(); } catch (RecognitionException &e) { _errHandler->reportError(this, e); _localctx->exception = std::current_exception(); _errHandler->recover(this, _localctx->exception); } return _localctx; } //----------------- InterfaceTypeContext ------------------------------------------------------------------ GoParser::InterfaceTypeContext::InterfaceTypeContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } tree::TerminalNode* GoParser::InterfaceTypeContext::INTERFACE() { return getToken(GoParser::INTERFACE, 0); } tree::TerminalNode* GoParser::InterfaceTypeContext::L_CURLY() { return getToken(GoParser::L_CURLY, 0); } tree::TerminalNode* GoParser::InterfaceTypeContext::R_CURLY() { return getToken(GoParser::R_CURLY, 0); } std::vector GoParser::InterfaceTypeContext::eoss() { return getRuleContexts(); } GoParser::EossContext* GoParser::InterfaceTypeContext::eoss(size_t i) { return getRuleContext(i); } std::vector GoParser::InterfaceTypeContext::methodSpec() { return getRuleContexts(); } GoParser::MethodSpecContext* GoParser::InterfaceTypeContext::methodSpec(size_t i) { return getRuleContext(i); } std::vector GoParser::InterfaceTypeContext::typeName() { return getRuleContexts(); } GoParser::TypeNameContext* GoParser::InterfaceTypeContext::typeName(size_t i) { return getRuleContext(i); } size_t GoParser::InterfaceTypeContext::getRuleIndex() const { return GoParser::RuleInterfaceType; } void GoParser::InterfaceTypeContext::enterRule(tree::ParseTreeListener *listener) { auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->enterInterfaceType(this); } void GoParser::InterfaceTypeContext::exitRule(tree::ParseTreeListener *listener) { auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->exitInterfaceType(this); } GoParser::InterfaceTypeContext* GoParser::interfaceType() { InterfaceTypeContext *_localctx = _tracker.createInstance(_ctx, getState()); enterRule(_localctx, 120, GoParser::RuleInterfaceType); size_t _la = 0; #if __cplusplus > 201703L auto onExit = finally([=, this] { #else auto onExit = finally([=] { #endif exitRule(); }); try { enterOuterAlt(_localctx, 1); setState(665); match(GoParser::INTERFACE); setState(666); match(GoParser::L_CURLY); setState(675); _errHandler->sync(this); _la = _input->LA(1); while (_la == GoParser::IDENTIFIER) { setState(669); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 68, _ctx)) { case 1: { setState(667); methodSpec(); break; } case 2: { setState(668); typeName(); break; } default: break; } setState(671); eoss(); setState(677); _errHandler->sync(this); _la = _input->LA(1); } setState(678); match(GoParser::R_CURLY); } catch (RecognitionException &e) { _errHandler->reportError(this, e); _localctx->exception = std::current_exception(); _errHandler->recover(this, _localctx->exception); } return _localctx; } //----------------- SliceTypeContext ------------------------------------------------------------------ GoParser::SliceTypeContext::SliceTypeContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } tree::TerminalNode* GoParser::SliceTypeContext::L_BRACKET() { return getToken(GoParser::L_BRACKET, 0); } tree::TerminalNode* GoParser::SliceTypeContext::R_BRACKET() { return getToken(GoParser::R_BRACKET, 0); } GoParser::ElementTypeContext* GoParser::SliceTypeContext::elementType() { return getRuleContext(0); } size_t GoParser::SliceTypeContext::getRuleIndex() const { return GoParser::RuleSliceType; } void GoParser::SliceTypeContext::enterRule(tree::ParseTreeListener *listener) { auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->enterSliceType(this); } void GoParser::SliceTypeContext::exitRule(tree::ParseTreeListener *listener) { auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->exitSliceType(this); } GoParser::SliceTypeContext* GoParser::sliceType() { SliceTypeContext *_localctx = _tracker.createInstance(_ctx, getState()); enterRule(_localctx, 122, GoParser::RuleSliceType); #if __cplusplus > 201703L auto onExit = finally([=, this] { #else auto onExit = finally([=] { #endif exitRule(); }); try { enterOuterAlt(_localctx, 1); setState(680); match(GoParser::L_BRACKET); setState(681); match(GoParser::R_BRACKET); setState(682); elementType(); } catch (RecognitionException &e) { _errHandler->reportError(this, e); _localctx->exception = std::current_exception(); _errHandler->recover(this, _localctx->exception); } return _localctx; } //----------------- MapTypeContext ------------------------------------------------------------------ GoParser::MapTypeContext::MapTypeContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } tree::TerminalNode* GoParser::MapTypeContext::MAP() { return getToken(GoParser::MAP, 0); } tree::TerminalNode* GoParser::MapTypeContext::L_BRACKET() { return getToken(GoParser::L_BRACKET, 0); } GoParser::Type_Context* GoParser::MapTypeContext::type_() { return getRuleContext(0); } tree::TerminalNode* GoParser::MapTypeContext::R_BRACKET() { return getToken(GoParser::R_BRACKET, 0); } GoParser::ElementTypeContext* GoParser::MapTypeContext::elementType() { return getRuleContext(0); } size_t GoParser::MapTypeContext::getRuleIndex() const { return GoParser::RuleMapType; } void GoParser::MapTypeContext::enterRule(tree::ParseTreeListener *listener) { auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->enterMapType(this); } void GoParser::MapTypeContext::exitRule(tree::ParseTreeListener *listener) { auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->exitMapType(this); } GoParser::MapTypeContext* GoParser::mapType() { MapTypeContext *_localctx = _tracker.createInstance(_ctx, getState()); enterRule(_localctx, 124, GoParser::RuleMapType); #if __cplusplus > 201703L auto onExit = finally([=, this] { #else auto onExit = finally([=] { #endif exitRule(); }); try { enterOuterAlt(_localctx, 1); setState(684); match(GoParser::MAP); setState(685); match(GoParser::L_BRACKET); setState(686); type_(); setState(687); match(GoParser::R_BRACKET); setState(688); elementType(); } catch (RecognitionException &e) { _errHandler->reportError(this, e); _localctx->exception = std::current_exception(); _errHandler->recover(this, _localctx->exception); } return _localctx; } //----------------- ChannelTypeContext ------------------------------------------------------------------ GoParser::ChannelTypeContext::ChannelTypeContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } GoParser::ElementTypeContext* GoParser::ChannelTypeContext::elementType() { return getRuleContext(0); } tree::TerminalNode* GoParser::ChannelTypeContext::CHAN() { return getToken(GoParser::CHAN, 0); } tree::TerminalNode* GoParser::ChannelTypeContext::RECEIVE() { return getToken(GoParser::RECEIVE, 0); } size_t GoParser::ChannelTypeContext::getRuleIndex() const { return GoParser::RuleChannelType; } void GoParser::ChannelTypeContext::enterRule(tree::ParseTreeListener *listener) { auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->enterChannelType(this); } void GoParser::ChannelTypeContext::exitRule(tree::ParseTreeListener *listener) { auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->exitChannelType(this); } GoParser::ChannelTypeContext* GoParser::channelType() { ChannelTypeContext *_localctx = _tracker.createInstance(_ctx, getState()); enterRule(_localctx, 126, GoParser::RuleChannelType); #if __cplusplus > 201703L auto onExit = finally([=, this] { #else auto onExit = finally([=] { #endif exitRule(); }); try { enterOuterAlt(_localctx, 1); setState(695); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 70, _ctx)) { case 1: { setState(690); match(GoParser::CHAN); break; } case 2: { setState(691); match(GoParser::CHAN); setState(692); match(GoParser::RECEIVE); break; } case 3: { setState(693); match(GoParser::RECEIVE); setState(694); match(GoParser::CHAN); break; } default: break; } setState(697); elementType(); } catch (RecognitionException &e) { _errHandler->reportError(this, e); _localctx->exception = std::current_exception(); _errHandler->recover(this, _localctx->exception); } return _localctx; } //----------------- MethodSpecContext ------------------------------------------------------------------ GoParser::MethodSpecContext::MethodSpecContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } tree::TerminalNode* GoParser::MethodSpecContext::IDENTIFIER() { return getToken(GoParser::IDENTIFIER, 0); } GoParser::ParametersContext* GoParser::MethodSpecContext::parameters() { return getRuleContext(0); } GoParser::ResultContext* GoParser::MethodSpecContext::result() { return getRuleContext(0); } size_t GoParser::MethodSpecContext::getRuleIndex() const { return GoParser::RuleMethodSpec; } void GoParser::MethodSpecContext::enterRule(tree::ParseTreeListener *listener) { auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->enterMethodSpec(this); } void GoParser::MethodSpecContext::exitRule(tree::ParseTreeListener *listener) { auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->exitMethodSpec(this); } GoParser::MethodSpecContext* GoParser::methodSpec() { MethodSpecContext *_localctx = _tracker.createInstance(_ctx, getState()); enterRule(_localctx, 128, GoParser::RuleMethodSpec); #if __cplusplus > 201703L auto onExit = finally([=, this] { #else auto onExit = finally([=] { #endif exitRule(); }); try { setState(705); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 71, _ctx)) { case 1: { enterOuterAlt(_localctx, 1); setState(699); match(GoParser::IDENTIFIER); setState(700); parameters(); setState(701); result(); break; } case 2: { enterOuterAlt(_localctx, 2); setState(703); match(GoParser::IDENTIFIER); setState(704); parameters(); break; } default: break; } } catch (RecognitionException &e) { _errHandler->reportError(this, e); _localctx->exception = std::current_exception(); _errHandler->recover(this, _localctx->exception); } return _localctx; } //----------------- FunctionTypeContext ------------------------------------------------------------------ GoParser::FunctionTypeContext::FunctionTypeContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } tree::TerminalNode* GoParser::FunctionTypeContext::FUNC() { return getToken(GoParser::FUNC, 0); } GoParser::SignatureContext* GoParser::FunctionTypeContext::signature() { return getRuleContext(0); } size_t GoParser::FunctionTypeContext::getRuleIndex() const { return GoParser::RuleFunctionType; } void GoParser::FunctionTypeContext::enterRule(tree::ParseTreeListener *listener) { auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->enterFunctionType(this); } void GoParser::FunctionTypeContext::exitRule(tree::ParseTreeListener *listener) { auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->exitFunctionType(this); } GoParser::FunctionTypeContext* GoParser::functionType() { FunctionTypeContext *_localctx = _tracker.createInstance(_ctx, getState()); enterRule(_localctx, 130, GoParser::RuleFunctionType); #if __cplusplus > 201703L auto onExit = finally([=, this] { #else auto onExit = finally([=] { #endif exitRule(); }); try { enterOuterAlt(_localctx, 1); setState(707); match(GoParser::FUNC); setState(708); signature(); } catch (RecognitionException &e) { _errHandler->reportError(this, e); _localctx->exception = std::current_exception(); _errHandler->recover(this, _localctx->exception); } return _localctx; } //----------------- SignatureContext ------------------------------------------------------------------ GoParser::SignatureContext::SignatureContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } GoParser::ParametersContext* GoParser::SignatureContext::parameters() { return getRuleContext(0); } GoParser::ResultContext* GoParser::SignatureContext::result() { return getRuleContext(0); } size_t GoParser::SignatureContext::getRuleIndex() const { return GoParser::RuleSignature; } void GoParser::SignatureContext::enterRule(tree::ParseTreeListener *listener) { auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->enterSignature(this); } void GoParser::SignatureContext::exitRule(tree::ParseTreeListener *listener) { auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->exitSignature(this); } GoParser::SignatureContext* GoParser::signature() { SignatureContext *_localctx = _tracker.createInstance(_ctx, getState()); enterRule(_localctx, 132, GoParser::RuleSignature); #if __cplusplus > 201703L auto onExit = finally([=, this] { #else auto onExit = finally([=] { #endif exitRule(); }); try { setState(714); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 72, _ctx)) { case 1: { enterOuterAlt(_localctx, 1); setState(710); parameters(); setState(711); result(); break; } case 2: { enterOuterAlt(_localctx, 2); setState(713); parameters(); break; } default: break; } } catch (RecognitionException &e) { _errHandler->reportError(this, e); _localctx->exception = std::current_exception(); _errHandler->recover(this, _localctx->exception); } return _localctx; } //----------------- ResultContext ------------------------------------------------------------------ GoParser::ResultContext::ResultContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } GoParser::ParametersContext* GoParser::ResultContext::parameters() { return getRuleContext(0); } GoParser::Type_Context* GoParser::ResultContext::type_() { return getRuleContext(0); } size_t GoParser::ResultContext::getRuleIndex() const { return GoParser::RuleResult; } void GoParser::ResultContext::enterRule(tree::ParseTreeListener *listener) { auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->enterResult(this); } void GoParser::ResultContext::exitRule(tree::ParseTreeListener *listener) { auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->exitResult(this); } GoParser::ResultContext* GoParser::result() { ResultContext *_localctx = _tracker.createInstance(_ctx, getState()); enterRule(_localctx, 134, GoParser::RuleResult); #if __cplusplus > 201703L auto onExit = finally([=, this] { #else auto onExit = finally([=] { #endif exitRule(); }); try { setState(718); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 73, _ctx)) { case 1: { enterOuterAlt(_localctx, 1); setState(716); parameters(); break; } case 2: { enterOuterAlt(_localctx, 2); setState(717); type_(); break; } default: break; } } catch (RecognitionException &e) { _errHandler->reportError(this, e); _localctx->exception = std::current_exception(); _errHandler->recover(this, _localctx->exception); } return _localctx; } //----------------- ParametersContext ------------------------------------------------------------------ GoParser::ParametersContext::ParametersContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } tree::TerminalNode* GoParser::ParametersContext::L_PAREN() { return getToken(GoParser::L_PAREN, 0); } tree::TerminalNode* GoParser::ParametersContext::R_PAREN() { return getToken(GoParser::R_PAREN, 0); } std::vector GoParser::ParametersContext::parameterDecl() { return getRuleContexts(); } GoParser::ParameterDeclContext* GoParser::ParametersContext::parameterDecl(size_t i) { return getRuleContext(i); } std::vector GoParser::ParametersContext::COMMA() { return getTokens(GoParser::COMMA); } tree::TerminalNode* GoParser::ParametersContext::COMMA(size_t i) { return getToken(GoParser::COMMA, i); } size_t GoParser::ParametersContext::getRuleIndex() const { return GoParser::RuleParameters; } void GoParser::ParametersContext::enterRule(tree::ParseTreeListener *listener) { auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->enterParameters(this); } void GoParser::ParametersContext::exitRule(tree::ParseTreeListener *listener) { auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->exitParameters(this); } GoParser::ParametersContext* GoParser::parameters() { ParametersContext *_localctx = _tracker.createInstance(_ctx, getState()); enterRule(_localctx, 136, GoParser::RuleParameters); size_t _la = 0; #if __cplusplus > 201703L auto onExit = finally([=, this] { #else auto onExit = finally([=] { #endif exitRule(); }); try { size_t alt; enterOuterAlt(_localctx, 1); setState(720); match(GoParser::L_PAREN); setState(732); _errHandler->sync(this); _la = _input->LA(1); if (((((_la - 3) & ~ 0x3fULL) == 0) && ((1ULL << (_la - 3)) & ((1ULL << (GoParser::FUNC - 3)) | (1ULL << (GoParser::INTERFACE - 3)) | (1ULL << (GoParser::MAP - 3)) | (1ULL << (GoParser::STRUCT - 3)) | (1ULL << (GoParser::CHAN - 3)) | (1ULL << (GoParser::IDENTIFIER - 3)) | (1ULL << (GoParser::L_PAREN - 3)) | (1ULL << (GoParser::L_BRACKET - 3)) | (1ULL << (GoParser::ELLIPSIS - 3)) | (1ULL << (GoParser::STAR - 3)) | (1ULL << (GoParser::RECEIVE - 3)))) != 0)) { setState(721); parameterDecl(); setState(726); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 74, _ctx); while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1) { setState(722); match(GoParser::COMMA); setState(723); parameterDecl(); } setState(728); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 74, _ctx); } setState(730); _errHandler->sync(this); _la = _input->LA(1); if (_la == GoParser::COMMA) { setState(729); match(GoParser::COMMA); } } setState(734); match(GoParser::R_PAREN); } catch (RecognitionException &e) { _errHandler->reportError(this, e); _localctx->exception = std::current_exception(); _errHandler->recover(this, _localctx->exception); } return _localctx; } //----------------- ParameterDeclContext ------------------------------------------------------------------ GoParser::ParameterDeclContext::ParameterDeclContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } GoParser::Type_Context* GoParser::ParameterDeclContext::type_() { return getRuleContext(0); } GoParser::IdentifierListContext* GoParser::ParameterDeclContext::identifierList() { return getRuleContext(0); } tree::TerminalNode* GoParser::ParameterDeclContext::ELLIPSIS() { return getToken(GoParser::ELLIPSIS, 0); } size_t GoParser::ParameterDeclContext::getRuleIndex() const { return GoParser::RuleParameterDecl; } void GoParser::ParameterDeclContext::enterRule(tree::ParseTreeListener *listener) { auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->enterParameterDecl(this); } void GoParser::ParameterDeclContext::exitRule(tree::ParseTreeListener *listener) { auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->exitParameterDecl(this); } GoParser::ParameterDeclContext* GoParser::parameterDecl() { ParameterDeclContext *_localctx = _tracker.createInstance(_ctx, getState()); enterRule(_localctx, 138, GoParser::RuleParameterDecl); size_t _la = 0; #if __cplusplus > 201703L auto onExit = finally([=, this] { #else auto onExit = finally([=] { #endif exitRule(); }); try { enterOuterAlt(_localctx, 1); setState(737); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 77, _ctx)) { case 1: { setState(736); identifierList(); break; } default: break; } setState(740); _errHandler->sync(this); _la = _input->LA(1); if (_la == GoParser::ELLIPSIS) { setState(739); match(GoParser::ELLIPSIS); } setState(742); type_(); } catch (RecognitionException &e) { _errHandler->reportError(this, e); _localctx->exception = std::current_exception(); _errHandler->recover(this, _localctx->exception); } return _localctx; } //----------------- ExpressionContext ------------------------------------------------------------------ GoParser::ExpressionContext::ExpressionContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } size_t GoParser::ExpressionContext::getRuleIndex() const { return GoParser::RuleExpression; } void GoParser::ExpressionContext::copyFrom(ExpressionContext *ctx) { ParserRuleContext::copyFrom(ctx); } //----------------- LogicalAndOperationContext ------------------------------------------------------------------ std::vector GoParser::LogicalAndOperationContext::expression() { return getRuleContexts(); } GoParser::ExpressionContext* GoParser::LogicalAndOperationContext::expression(size_t i) { return getRuleContext(i); } tree::TerminalNode* GoParser::LogicalAndOperationContext::LOGICAL_AND() { return getToken(GoParser::LOGICAL_AND, 0); } GoParser::LogicalAndOperationContext::LogicalAndOperationContext(ExpressionContext *ctx) { copyFrom(ctx); } void GoParser::LogicalAndOperationContext::enterRule(tree::ParseTreeListener *listener) { auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->enterLogicalAndOperation(this); } void GoParser::LogicalAndOperationContext::exitRule(tree::ParseTreeListener *listener) { auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->exitLogicalAndOperation(this); } //----------------- UnaryOperationContext ------------------------------------------------------------------ GoParser::ExpressionContext* GoParser::UnaryOperationContext::expression() { return getRuleContext(0); } tree::TerminalNode* GoParser::UnaryOperationContext::PLUS() { return getToken(GoParser::PLUS, 0); } tree::TerminalNode* GoParser::UnaryOperationContext::MINUS() { return getToken(GoParser::MINUS, 0); } tree::TerminalNode* GoParser::UnaryOperationContext::EXCLAMATION() { return getToken(GoParser::EXCLAMATION, 0); } tree::TerminalNode* GoParser::UnaryOperationContext::CARET() { return getToken(GoParser::CARET, 0); } tree::TerminalNode* GoParser::UnaryOperationContext::STAR() { return getToken(GoParser::STAR, 0); } tree::TerminalNode* GoParser::UnaryOperationContext::AMPERSAND() { return getToken(GoParser::AMPERSAND, 0); } tree::TerminalNode* GoParser::UnaryOperationContext::RECEIVE() { return getToken(GoParser::RECEIVE, 0); } GoParser::UnaryOperationContext::UnaryOperationContext(ExpressionContext *ctx) { copyFrom(ctx); } void GoParser::UnaryOperationContext::enterRule(tree::ParseTreeListener *listener) { auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->enterUnaryOperation(this); } void GoParser::UnaryOperationContext::exitRule(tree::ParseTreeListener *listener) { auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->exitUnaryOperation(this); } //----------------- PrimaryExpressionContext ------------------------------------------------------------------ GoParser::PrimaryExprContext* GoParser::PrimaryExpressionContext::primaryExpr() { return getRuleContext(0); } GoParser::PrimaryExpressionContext::PrimaryExpressionContext(ExpressionContext *ctx) { copyFrom(ctx); } void GoParser::PrimaryExpressionContext::enterRule(tree::ParseTreeListener *listener) { auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->enterPrimaryExpression(this); } void GoParser::PrimaryExpressionContext::exitRule(tree::ParseTreeListener *listener) { auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->exitPrimaryExpression(this); } //----------------- PlusMinusOperationContext ------------------------------------------------------------------ std::vector GoParser::PlusMinusOperationContext::expression() { return getRuleContexts(); } GoParser::ExpressionContext* GoParser::PlusMinusOperationContext::expression(size_t i) { return getRuleContext(i); } tree::TerminalNode* GoParser::PlusMinusOperationContext::PLUS() { return getToken(GoParser::PLUS, 0); } tree::TerminalNode* GoParser::PlusMinusOperationContext::MINUS() { return getToken(GoParser::MINUS, 0); } tree::TerminalNode* GoParser::PlusMinusOperationContext::OR() { return getToken(GoParser::OR, 0); } tree::TerminalNode* GoParser::PlusMinusOperationContext::CARET() { return getToken(GoParser::CARET, 0); } GoParser::PlusMinusOperationContext::PlusMinusOperationContext(ExpressionContext *ctx) { copyFrom(ctx); } void GoParser::PlusMinusOperationContext::enterRule(tree::ParseTreeListener *listener) { auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->enterPlusMinusOperation(this); } void GoParser::PlusMinusOperationContext::exitRule(tree::ParseTreeListener *listener) { auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->exitPlusMinusOperation(this); } //----------------- RelationOperationContext ------------------------------------------------------------------ std::vector GoParser::RelationOperationContext::expression() { return getRuleContexts(); } GoParser::ExpressionContext* GoParser::RelationOperationContext::expression(size_t i) { return getRuleContext(i); } tree::TerminalNode* GoParser::RelationOperationContext::EQUALS() { return getToken(GoParser::EQUALS, 0); } tree::TerminalNode* GoParser::RelationOperationContext::NOT_EQUALS() { return getToken(GoParser::NOT_EQUALS, 0); } tree::TerminalNode* GoParser::RelationOperationContext::LESS() { return getToken(GoParser::LESS, 0); } tree::TerminalNode* GoParser::RelationOperationContext::LESS_OR_EQUALS() { return getToken(GoParser::LESS_OR_EQUALS, 0); } tree::TerminalNode* GoParser::RelationOperationContext::GREATER() { return getToken(GoParser::GREATER, 0); } tree::TerminalNode* GoParser::RelationOperationContext::GREATER_OR_EQUALS() { return getToken(GoParser::GREATER_OR_EQUALS, 0); } GoParser::RelationOperationContext::RelationOperationContext(ExpressionContext *ctx) { copyFrom(ctx); } void GoParser::RelationOperationContext::enterRule(tree::ParseTreeListener *listener) { auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->enterRelationOperation(this); } void GoParser::RelationOperationContext::exitRule(tree::ParseTreeListener *listener) { auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->exitRelationOperation(this); } //----------------- MulDivOperationContext ------------------------------------------------------------------ std::vector GoParser::MulDivOperationContext::expression() { return getRuleContexts(); } GoParser::ExpressionContext* GoParser::MulDivOperationContext::expression(size_t i) { return getRuleContext(i); } tree::TerminalNode* GoParser::MulDivOperationContext::STAR() { return getToken(GoParser::STAR, 0); } tree::TerminalNode* GoParser::MulDivOperationContext::DIV() { return getToken(GoParser::DIV, 0); } tree::TerminalNode* GoParser::MulDivOperationContext::MOD() { return getToken(GoParser::MOD, 0); } tree::TerminalNode* GoParser::MulDivOperationContext::LSHIFT() { return getToken(GoParser::LSHIFT, 0); } tree::TerminalNode* GoParser::MulDivOperationContext::RSHIFT() { return getToken(GoParser::RSHIFT, 0); } tree::TerminalNode* GoParser::MulDivOperationContext::AMPERSAND() { return getToken(GoParser::AMPERSAND, 0); } tree::TerminalNode* GoParser::MulDivOperationContext::BIT_CLEAR() { return getToken(GoParser::BIT_CLEAR, 0); } GoParser::MulDivOperationContext::MulDivOperationContext(ExpressionContext *ctx) { copyFrom(ctx); } void GoParser::MulDivOperationContext::enterRule(tree::ParseTreeListener *listener) { auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->enterMulDivOperation(this); } void GoParser::MulDivOperationContext::exitRule(tree::ParseTreeListener *listener) { auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->exitMulDivOperation(this); } //----------------- LogicalOrOperationContext ------------------------------------------------------------------ std::vector GoParser::LogicalOrOperationContext::expression() { return getRuleContexts(); } GoParser::ExpressionContext* GoParser::LogicalOrOperationContext::expression(size_t i) { return getRuleContext(i); } tree::TerminalNode* GoParser::LogicalOrOperationContext::LOGICAL_OR() { return getToken(GoParser::LOGICAL_OR, 0); } GoParser::LogicalOrOperationContext::LogicalOrOperationContext(ExpressionContext *ctx) { copyFrom(ctx); } void GoParser::LogicalOrOperationContext::enterRule(tree::ParseTreeListener *listener) { auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->enterLogicalOrOperation(this); } void GoParser::LogicalOrOperationContext::exitRule(tree::ParseTreeListener *listener) { auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->exitLogicalOrOperation(this); } GoParser::ExpressionContext* GoParser::expression() { return expression(0); } GoParser::ExpressionContext* GoParser::expression(int precedence) { ParserRuleContext *parentContext = _ctx; size_t parentState = getState(); GoParser::ExpressionContext *_localctx = _tracker.createInstance(_ctx, parentState); GoParser::ExpressionContext *previousContext = _localctx; (void)previousContext; // Silence compiler, in case the context is not used by generated code. size_t startState = 140; enterRecursionRule(_localctx, 140, GoParser::RuleExpression, precedence); size_t _la = 0; #if __cplusplus > 201703L auto onExit = finally([=, this] { #else auto onExit = finally([=] { #endif unrollRecursionContexts(parentContext); }); try { size_t alt; enterOuterAlt(_localctx, 1); setState(748); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 79, _ctx)) { case 1: { _localctx = _tracker.createInstance(_localctx); _ctx = _localctx; previousContext = _localctx; setState(745); primaryExpr(0); break; } case 2: { _localctx = _tracker.createInstance(_localctx); _ctx = _localctx; previousContext = _localctx; setState(746); antlrcpp::downCast(_localctx)->unary_op = _input->LT(1); _la = _input->LA(1); if (!(((((_la - 60) & ~ 0x3fULL) == 0) && ((1ULL << (_la - 60)) & ((1ULL << (GoParser::EXCLAMATION - 60)) | (1ULL << (GoParser::PLUS - 60)) | (1ULL << (GoParser::MINUS - 60)) | (1ULL << (GoParser::CARET - 60)) | (1ULL << (GoParser::STAR - 60)) | (1ULL << (GoParser::AMPERSAND - 60)) | (1ULL << (GoParser::RECEIVE - 60)))) != 0))) { antlrcpp::downCast(_localctx)->unary_op = _errHandler->recoverInline(this); } else { _errHandler->reportMatch(this); consume(); } setState(747); expression(6); break; } default: break; } _ctx->stop = _input->LT(-1); setState(767); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 81, _ctx); while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1) { if (!_parseListeners.empty()) triggerExitRuleEvent(); previousContext = _localctx; setState(765); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 80, _ctx)) { case 1: { auto newContext = _tracker.createInstance(_tracker.createInstance(parentContext, parentState)); _localctx = newContext; pushNewRecursionContext(newContext, startState, RuleExpression); setState(750); if (!(precpred(_ctx, 5))) throw FailedPredicateException(this, "precpred(_ctx, 5)"); setState(751); antlrcpp::downCast(_localctx)->mul_op = _input->LT(1); _la = _input->LA(1); if (!(((((_la - 55) & ~ 0x3fULL) == 0) && ((1ULL << (_la - 55)) & ((1ULL << (GoParser::DIV - 55)) | (1ULL << (GoParser::MOD - 55)) | (1ULL << (GoParser::LSHIFT - 55)) | (1ULL << (GoParser::RSHIFT - 55)) | (1ULL << (GoParser::BIT_CLEAR - 55)) | (1ULL << (GoParser::STAR - 55)) | (1ULL << (GoParser::AMPERSAND - 55)))) != 0))) { antlrcpp::downCast(_localctx)->mul_op = _errHandler->recoverInline(this); } else { _errHandler->reportMatch(this); consume(); } setState(752); expression(6); break; } case 2: { auto newContext = _tracker.createInstance(_tracker.createInstance(parentContext, parentState)); _localctx = newContext; pushNewRecursionContext(newContext, startState, RuleExpression); setState(753); if (!(precpred(_ctx, 4))) throw FailedPredicateException(this, "precpred(_ctx, 4)"); setState(754); antlrcpp::downCast(_localctx)->add_op = _input->LT(1); _la = _input->LA(1); if (!((((_la & ~ 0x3fULL) == 0) && ((1ULL << _la) & ((1ULL << GoParser::OR) | (1ULL << GoParser::PLUS) | (1ULL << GoParser::MINUS) | (1ULL << GoParser::CARET))) != 0))) { antlrcpp::downCast(_localctx)->add_op = _errHandler->recoverInline(this); } else { _errHandler->reportMatch(this); consume(); } setState(755); expression(5); break; } case 3: { auto newContext = _tracker.createInstance(_tracker.createInstance(parentContext, parentState)); _localctx = newContext; pushNewRecursionContext(newContext, startState, RuleExpression); setState(756); if (!(precpred(_ctx, 3))) throw FailedPredicateException(this, "precpred(_ctx, 3)"); setState(757); antlrcpp::downCast(_localctx)->rel_op = _input->LT(1); _la = _input->LA(1); if (!((((_la & ~ 0x3fULL) == 0) && ((1ULL << _la) & ((1ULL << GoParser::EQUALS) | (1ULL << GoParser::NOT_EQUALS) | (1ULL << GoParser::LESS) | (1ULL << GoParser::LESS_OR_EQUALS) | (1ULL << GoParser::GREATER) | (1ULL << GoParser::GREATER_OR_EQUALS))) != 0))) { antlrcpp::downCast(_localctx)->rel_op = _errHandler->recoverInline(this); } else { _errHandler->reportMatch(this); consume(); } setState(758); expression(4); break; } case 4: { auto newContext = _tracker.createInstance(_tracker.createInstance(parentContext, parentState)); _localctx = newContext; pushNewRecursionContext(newContext, startState, RuleExpression); setState(759); if (!(precpred(_ctx, 2))) throw FailedPredicateException(this, "precpred(_ctx, 2)"); setState(760); match(GoParser::LOGICAL_AND); setState(761); expression(3); break; } case 5: { auto newContext = _tracker.createInstance(_tracker.createInstance(parentContext, parentState)); _localctx = newContext; pushNewRecursionContext(newContext, startState, RuleExpression); setState(762); if (!(precpred(_ctx, 1))) throw FailedPredicateException(this, "precpred(_ctx, 1)"); setState(763); match(GoParser::LOGICAL_OR); setState(764); expression(2); break; } default: break; } } setState(769); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 81, _ctx); } } catch (RecognitionException &e) { _errHandler->reportError(this, e); _localctx->exception = std::current_exception(); _errHandler->recover(this, _localctx->exception); } return _localctx; } //----------------- PrimaryExprContext ------------------------------------------------------------------ GoParser::PrimaryExprContext::PrimaryExprContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } GoParser::OperandContext* GoParser::PrimaryExprContext::operand() { return getRuleContext(0); } GoParser::ConversionContext* GoParser::PrimaryExprContext::conversion() { return getRuleContext(0); } GoParser::MethodExprContext* GoParser::PrimaryExprContext::methodExpr() { return getRuleContext(0); } GoParser::PrimaryExprContext* GoParser::PrimaryExprContext::primaryExpr() { return getRuleContext(0); } GoParser::IndexContext* GoParser::PrimaryExprContext::index() { return getRuleContext(0); } GoParser::Slice_Context* GoParser::PrimaryExprContext::slice_() { return getRuleContext(0); } GoParser::TypeAssertionContext* GoParser::PrimaryExprContext::typeAssertion() { return getRuleContext(0); } GoParser::ArgumentsContext* GoParser::PrimaryExprContext::arguments() { return getRuleContext(0); } tree::TerminalNode* GoParser::PrimaryExprContext::DOT() { return getToken(GoParser::DOT, 0); } tree::TerminalNode* GoParser::PrimaryExprContext::IDENTIFIER() { return getToken(GoParser::IDENTIFIER, 0); } size_t GoParser::PrimaryExprContext::getRuleIndex() const { return GoParser::RulePrimaryExpr; } void GoParser::PrimaryExprContext::enterRule(tree::ParseTreeListener *listener) { auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->enterPrimaryExpr(this); } void GoParser::PrimaryExprContext::exitRule(tree::ParseTreeListener *listener) { auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->exitPrimaryExpr(this); } GoParser::PrimaryExprContext* GoParser::primaryExpr() { return primaryExpr(0); } GoParser::PrimaryExprContext* GoParser::primaryExpr(int precedence) { ParserRuleContext *parentContext = _ctx; size_t parentState = getState(); GoParser::PrimaryExprContext *_localctx = _tracker.createInstance(_ctx, parentState); GoParser::PrimaryExprContext *previousContext = _localctx; (void)previousContext; // Silence compiler, in case the context is not used by generated code. size_t startState = 142; enterRecursionRule(_localctx, 142, GoParser::RulePrimaryExpr, precedence); #if __cplusplus > 201703L auto onExit = finally([=, this] { #else auto onExit = finally([=] { #endif unrollRecursionContexts(parentContext); }); try { size_t alt; enterOuterAlt(_localctx, 1); setState(774); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 82, _ctx)) { case 1: { setState(771); operand(); break; } case 2: { setState(772); conversion(); break; } case 3: { setState(773); methodExpr(); break; } default: break; } _ctx->stop = _input->LT(-1); setState(787); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 84, _ctx); while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1) { if (!_parseListeners.empty()) triggerExitRuleEvent(); previousContext = _localctx; _localctx = _tracker.createInstance(parentContext, parentState); pushNewRecursionContext(_localctx, startState, RulePrimaryExpr); setState(776); if (!(precpred(_ctx, 1))) throw FailedPredicateException(this, "precpred(_ctx, 1)"); setState(783); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 83, _ctx)) { case 1: { setState(777); match(GoParser::DOT); setState(778); match(GoParser::IDENTIFIER); break; } case 2: { setState(779); index(); break; } case 3: { setState(780); slice_(); break; } case 4: { setState(781); typeAssertion(); break; } case 5: { setState(782); arguments(); break; } default: break; } } setState(789); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 84, _ctx); } } catch (RecognitionException &e) { _errHandler->reportError(this, e); _localctx->exception = std::current_exception(); _errHandler->recover(this, _localctx->exception); } return _localctx; } //----------------- ConversionContext ------------------------------------------------------------------ GoParser::ConversionContext::ConversionContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } GoParser::NonNamedTypeContext* GoParser::ConversionContext::nonNamedType() { return getRuleContext(0); } tree::TerminalNode* GoParser::ConversionContext::L_PAREN() { return getToken(GoParser::L_PAREN, 0); } GoParser::ExpressionContext* GoParser::ConversionContext::expression() { return getRuleContext(0); } tree::TerminalNode* GoParser::ConversionContext::R_PAREN() { return getToken(GoParser::R_PAREN, 0); } tree::TerminalNode* GoParser::ConversionContext::COMMA() { return getToken(GoParser::COMMA, 0); } size_t GoParser::ConversionContext::getRuleIndex() const { return GoParser::RuleConversion; } void GoParser::ConversionContext::enterRule(tree::ParseTreeListener *listener) { auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->enterConversion(this); } void GoParser::ConversionContext::exitRule(tree::ParseTreeListener *listener) { auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->exitConversion(this); } GoParser::ConversionContext* GoParser::conversion() { ConversionContext *_localctx = _tracker.createInstance(_ctx, getState()); enterRule(_localctx, 144, GoParser::RuleConversion); size_t _la = 0; #if __cplusplus > 201703L auto onExit = finally([=, this] { #else auto onExit = finally([=] { #endif exitRule(); }); try { enterOuterAlt(_localctx, 1); setState(790); nonNamedType(); setState(791); match(GoParser::L_PAREN); setState(792); expression(0); setState(794); _errHandler->sync(this); _la = _input->LA(1); if (_la == GoParser::COMMA) { setState(793); match(GoParser::COMMA); } setState(796); match(GoParser::R_PAREN); } catch (RecognitionException &e) { _errHandler->reportError(this, e); _localctx->exception = std::current_exception(); _errHandler->recover(this, _localctx->exception); } return _localctx; } //----------------- NonNamedTypeContext ------------------------------------------------------------------ GoParser::NonNamedTypeContext::NonNamedTypeContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } GoParser::TypeLitContext* GoParser::NonNamedTypeContext::typeLit() { return getRuleContext(0); } tree::TerminalNode* GoParser::NonNamedTypeContext::L_PAREN() { return getToken(GoParser::L_PAREN, 0); } GoParser::NonNamedTypeContext* GoParser::NonNamedTypeContext::nonNamedType() { return getRuleContext(0); } tree::TerminalNode* GoParser::NonNamedTypeContext::R_PAREN() { return getToken(GoParser::R_PAREN, 0); } size_t GoParser::NonNamedTypeContext::getRuleIndex() const { return GoParser::RuleNonNamedType; } void GoParser::NonNamedTypeContext::enterRule(tree::ParseTreeListener *listener) { auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->enterNonNamedType(this); } void GoParser::NonNamedTypeContext::exitRule(tree::ParseTreeListener *listener) { auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->exitNonNamedType(this); } GoParser::NonNamedTypeContext* GoParser::nonNamedType() { NonNamedTypeContext *_localctx = _tracker.createInstance(_ctx, getState()); enterRule(_localctx, 146, GoParser::RuleNonNamedType); #if __cplusplus > 201703L auto onExit = finally([=, this] { #else auto onExit = finally([=] { #endif exitRule(); }); try { setState(803); _errHandler->sync(this); switch (_input->LA(1)) { case GoParser::FUNC: case GoParser::INTERFACE: case GoParser::MAP: case GoParser::STRUCT: case GoParser::CHAN: case GoParser::L_BRACKET: case GoParser::STAR: case GoParser::RECEIVE: { enterOuterAlt(_localctx, 1); setState(798); typeLit(); break; } case GoParser::L_PAREN: { enterOuterAlt(_localctx, 2); setState(799); match(GoParser::L_PAREN); setState(800); nonNamedType(); setState(801); match(GoParser::R_PAREN); break; } default: throw NoViableAltException(this); } } catch (RecognitionException &e) { _errHandler->reportError(this, e); _localctx->exception = std::current_exception(); _errHandler->recover(this, _localctx->exception); } return _localctx; } //----------------- OperandContext ------------------------------------------------------------------ GoParser::OperandContext::OperandContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } GoParser::LiteralContext* GoParser::OperandContext::literal() { return getRuleContext(0); } GoParser::OperandNameContext* GoParser::OperandContext::operandName() { return getRuleContext(0); } tree::TerminalNode* GoParser::OperandContext::L_PAREN() { return getToken(GoParser::L_PAREN, 0); } GoParser::ExpressionContext* GoParser::OperandContext::expression() { return getRuleContext(0); } tree::TerminalNode* GoParser::OperandContext::R_PAREN() { return getToken(GoParser::R_PAREN, 0); } size_t GoParser::OperandContext::getRuleIndex() const { return GoParser::RuleOperand; } void GoParser::OperandContext::enterRule(tree::ParseTreeListener *listener) { auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->enterOperand(this); } void GoParser::OperandContext::exitRule(tree::ParseTreeListener *listener) { auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->exitOperand(this); } GoParser::OperandContext* GoParser::operand() { OperandContext *_localctx = _tracker.createInstance(_ctx, getState()); enterRule(_localctx, 148, GoParser::RuleOperand); #if __cplusplus > 201703L auto onExit = finally([=, this] { #else auto onExit = finally([=] { #endif exitRule(); }); try { setState(811); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 87, _ctx)) { case 1: { enterOuterAlt(_localctx, 1); setState(805); literal(); break; } case 2: { enterOuterAlt(_localctx, 2); setState(806); operandName(); break; } case 3: { enterOuterAlt(_localctx, 3); setState(807); match(GoParser::L_PAREN); setState(808); expression(0); setState(809); match(GoParser::R_PAREN); break; } default: break; } } catch (RecognitionException &e) { _errHandler->reportError(this, e); _localctx->exception = std::current_exception(); _errHandler->recover(this, _localctx->exception); } return _localctx; } //----------------- LiteralContext ------------------------------------------------------------------ GoParser::LiteralContext::LiteralContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } GoParser::BasicLitContext* GoParser::LiteralContext::basicLit() { return getRuleContext(0); } GoParser::CompositeLitContext* GoParser::LiteralContext::compositeLit() { return getRuleContext(0); } GoParser::FunctionLitContext* GoParser::LiteralContext::functionLit() { return getRuleContext(0); } size_t GoParser::LiteralContext::getRuleIndex() const { return GoParser::RuleLiteral; } void GoParser::LiteralContext::enterRule(tree::ParseTreeListener *listener) { auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->enterLiteral(this); } void GoParser::LiteralContext::exitRule(tree::ParseTreeListener *listener) { auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->exitLiteral(this); } GoParser::LiteralContext* GoParser::literal() { LiteralContext *_localctx = _tracker.createInstance(_ctx, getState()); enterRule(_localctx, 150, GoParser::RuleLiteral); #if __cplusplus > 201703L auto onExit = finally([=, this] { #else auto onExit = finally([=] { #endif exitRule(); }); try { setState(816); _errHandler->sync(this); switch (_input->LA(1)) { case GoParser::NIL_LIT: case GoParser::DECIMAL_LIT: case GoParser::BINARY_LIT: case GoParser::OCTAL_LIT: case GoParser::HEX_LIT: case GoParser::FLOAT_LIT: case GoParser::IMAGINARY_LIT: case GoParser::RUNE_LIT: case GoParser::RAW_STRING_LIT: case GoParser::INTERPRETED_STRING_LIT: { enterOuterAlt(_localctx, 1); setState(813); basicLit(); break; } case GoParser::MAP: case GoParser::STRUCT: case GoParser::IDENTIFIER: case GoParser::L_BRACKET: { enterOuterAlt(_localctx, 2); setState(814); compositeLit(); break; } case GoParser::FUNC: { enterOuterAlt(_localctx, 3); setState(815); functionLit(); break; } default: throw NoViableAltException(this); } } catch (RecognitionException &e) { _errHandler->reportError(this, e); _localctx->exception = std::current_exception(); _errHandler->recover(this, _localctx->exception); } return _localctx; } //----------------- BasicLitContext ------------------------------------------------------------------ GoParser::BasicLitContext::BasicLitContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } tree::TerminalNode* GoParser::BasicLitContext::NIL_LIT() { return getToken(GoParser::NIL_LIT, 0); } GoParser::IntegerContext* GoParser::BasicLitContext::integer() { return getRuleContext(0); } GoParser::String_Context* GoParser::BasicLitContext::string_() { return getRuleContext(0); } tree::TerminalNode* GoParser::BasicLitContext::FLOAT_LIT() { return getToken(GoParser::FLOAT_LIT, 0); } size_t GoParser::BasicLitContext::getRuleIndex() const { return GoParser::RuleBasicLit; } void GoParser::BasicLitContext::enterRule(tree::ParseTreeListener *listener) { auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->enterBasicLit(this); } void GoParser::BasicLitContext::exitRule(tree::ParseTreeListener *listener) { auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->exitBasicLit(this); } GoParser::BasicLitContext* GoParser::basicLit() { BasicLitContext *_localctx = _tracker.createInstance(_ctx, getState()); enterRule(_localctx, 152, GoParser::RuleBasicLit); #if __cplusplus > 201703L auto onExit = finally([=, this] { #else auto onExit = finally([=] { #endif exitRule(); }); try { setState(822); _errHandler->sync(this); switch (_input->LA(1)) { case GoParser::NIL_LIT: { enterOuterAlt(_localctx, 1); setState(818); match(GoParser::NIL_LIT); break; } case GoParser::DECIMAL_LIT: case GoParser::BINARY_LIT: case GoParser::OCTAL_LIT: case GoParser::HEX_LIT: case GoParser::IMAGINARY_LIT: case GoParser::RUNE_LIT: { enterOuterAlt(_localctx, 2); setState(819); integer(); break; } case GoParser::RAW_STRING_LIT: case GoParser::INTERPRETED_STRING_LIT: { enterOuterAlt(_localctx, 3); setState(820); string_(); break; } case GoParser::FLOAT_LIT: { enterOuterAlt(_localctx, 4); setState(821); match(GoParser::FLOAT_LIT); break; } default: throw NoViableAltException(this); } } catch (RecognitionException &e) { _errHandler->reportError(this, e); _localctx->exception = std::current_exception(); _errHandler->recover(this, _localctx->exception); } return _localctx; } //----------------- IntegerContext ------------------------------------------------------------------ GoParser::IntegerContext::IntegerContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } tree::TerminalNode* GoParser::IntegerContext::DECIMAL_LIT() { return getToken(GoParser::DECIMAL_LIT, 0); } tree::TerminalNode* GoParser::IntegerContext::BINARY_LIT() { return getToken(GoParser::BINARY_LIT, 0); } tree::TerminalNode* GoParser::IntegerContext::OCTAL_LIT() { return getToken(GoParser::OCTAL_LIT, 0); } tree::TerminalNode* GoParser::IntegerContext::HEX_LIT() { return getToken(GoParser::HEX_LIT, 0); } tree::TerminalNode* GoParser::IntegerContext::IMAGINARY_LIT() { return getToken(GoParser::IMAGINARY_LIT, 0); } tree::TerminalNode* GoParser::IntegerContext::RUNE_LIT() { return getToken(GoParser::RUNE_LIT, 0); } size_t GoParser::IntegerContext::getRuleIndex() const { return GoParser::RuleInteger; } void GoParser::IntegerContext::enterRule(tree::ParseTreeListener *listener) { auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->enterInteger(this); } void GoParser::IntegerContext::exitRule(tree::ParseTreeListener *listener) { auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->exitInteger(this); } GoParser::IntegerContext* GoParser::integer() { IntegerContext *_localctx = _tracker.createInstance(_ctx, getState()); enterRule(_localctx, 154, GoParser::RuleInteger); size_t _la = 0; #if __cplusplus > 201703L auto onExit = finally([=, this] { #else auto onExit = finally([=] { #endif exitRule(); }); try { enterOuterAlt(_localctx, 1); setState(824); _la = _input->LA(1); if (!(((((_la - 67) & ~ 0x3fULL) == 0) && ((1ULL << (_la - 67)) & ((1ULL << (GoParser::DECIMAL_LIT - 67)) | (1ULL << (GoParser::BINARY_LIT - 67)) | (1ULL << (GoParser::OCTAL_LIT - 67)) | (1ULL << (GoParser::HEX_LIT - 67)) | (1ULL << (GoParser::IMAGINARY_LIT - 67)) | (1ULL << (GoParser::RUNE_LIT - 67)))) != 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; } //----------------- OperandNameContext ------------------------------------------------------------------ GoParser::OperandNameContext::OperandNameContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } tree::TerminalNode* GoParser::OperandNameContext::IDENTIFIER() { return getToken(GoParser::IDENTIFIER, 0); } size_t GoParser::OperandNameContext::getRuleIndex() const { return GoParser::RuleOperandName; } void GoParser::OperandNameContext::enterRule(tree::ParseTreeListener *listener) { auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->enterOperandName(this); } void GoParser::OperandNameContext::exitRule(tree::ParseTreeListener *listener) { auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->exitOperandName(this); } GoParser::OperandNameContext* GoParser::operandName() { OperandNameContext *_localctx = _tracker.createInstance(_ctx, getState()); enterRule(_localctx, 156, GoParser::RuleOperandName); #if __cplusplus > 201703L auto onExit = finally([=, this] { #else auto onExit = finally([=] { #endif exitRule(); }); try { enterOuterAlt(_localctx, 1); setState(826); match(GoParser::IDENTIFIER); } catch (RecognitionException &e) { _errHandler->reportError(this, e); _localctx->exception = std::current_exception(); _errHandler->recover(this, _localctx->exception); } return _localctx; } //----------------- QualifiedIdentContext ------------------------------------------------------------------ GoParser::QualifiedIdentContext::QualifiedIdentContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } std::vector GoParser::QualifiedIdentContext::IDENTIFIER() { return getTokens(GoParser::IDENTIFIER); } tree::TerminalNode* GoParser::QualifiedIdentContext::IDENTIFIER(size_t i) { return getToken(GoParser::IDENTIFIER, i); } tree::TerminalNode* GoParser::QualifiedIdentContext::DOT() { return getToken(GoParser::DOT, 0); } size_t GoParser::QualifiedIdentContext::getRuleIndex() const { return GoParser::RuleQualifiedIdent; } void GoParser::QualifiedIdentContext::enterRule(tree::ParseTreeListener *listener) { auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->enterQualifiedIdent(this); } void GoParser::QualifiedIdentContext::exitRule(tree::ParseTreeListener *listener) { auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->exitQualifiedIdent(this); } GoParser::QualifiedIdentContext* GoParser::qualifiedIdent() { QualifiedIdentContext *_localctx = _tracker.createInstance(_ctx, getState()); enterRule(_localctx, 158, GoParser::RuleQualifiedIdent); #if __cplusplus > 201703L auto onExit = finally([=, this] { #else auto onExit = finally([=] { #endif exitRule(); }); try { enterOuterAlt(_localctx, 1); setState(828); match(GoParser::IDENTIFIER); setState(829); match(GoParser::DOT); setState(830); match(GoParser::IDENTIFIER); } catch (RecognitionException &e) { _errHandler->reportError(this, e); _localctx->exception = std::current_exception(); _errHandler->recover(this, _localctx->exception); } return _localctx; } //----------------- CompositeLitContext ------------------------------------------------------------------ GoParser::CompositeLitContext::CompositeLitContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } GoParser::LiteralTypeContext* GoParser::CompositeLitContext::literalType() { return getRuleContext(0); } GoParser::LiteralValueContext* GoParser::CompositeLitContext::literalValue() { return getRuleContext(0); } size_t GoParser::CompositeLitContext::getRuleIndex() const { return GoParser::RuleCompositeLit; } void GoParser::CompositeLitContext::enterRule(tree::ParseTreeListener *listener) { auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->enterCompositeLit(this); } void GoParser::CompositeLitContext::exitRule(tree::ParseTreeListener *listener) { auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->exitCompositeLit(this); } GoParser::CompositeLitContext* GoParser::compositeLit() { CompositeLitContext *_localctx = _tracker.createInstance(_ctx, getState()); enterRule(_localctx, 160, GoParser::RuleCompositeLit); #if __cplusplus > 201703L auto onExit = finally([=, this] { #else auto onExit = finally([=] { #endif exitRule(); }); try { enterOuterAlt(_localctx, 1); setState(832); literalType(); setState(833); literalValue(); } catch (RecognitionException &e) { _errHandler->reportError(this, e); _localctx->exception = std::current_exception(); _errHandler->recover(this, _localctx->exception); } return _localctx; } //----------------- LiteralTypeContext ------------------------------------------------------------------ GoParser::LiteralTypeContext::LiteralTypeContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } GoParser::StructTypeContext* GoParser::LiteralTypeContext::structType() { return getRuleContext(0); } GoParser::ArrayTypeContext* GoParser::LiteralTypeContext::arrayType() { return getRuleContext(0); } tree::TerminalNode* GoParser::LiteralTypeContext::L_BRACKET() { return getToken(GoParser::L_BRACKET, 0); } tree::TerminalNode* GoParser::LiteralTypeContext::ELLIPSIS() { return getToken(GoParser::ELLIPSIS, 0); } tree::TerminalNode* GoParser::LiteralTypeContext::R_BRACKET() { return getToken(GoParser::R_BRACKET, 0); } GoParser::ElementTypeContext* GoParser::LiteralTypeContext::elementType() { return getRuleContext(0); } GoParser::SliceTypeContext* GoParser::LiteralTypeContext::sliceType() { return getRuleContext(0); } GoParser::MapTypeContext* GoParser::LiteralTypeContext::mapType() { return getRuleContext(0); } GoParser::TypeNameContext* GoParser::LiteralTypeContext::typeName() { return getRuleContext(0); } size_t GoParser::LiteralTypeContext::getRuleIndex() const { return GoParser::RuleLiteralType; } void GoParser::LiteralTypeContext::enterRule(tree::ParseTreeListener *listener) { auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->enterLiteralType(this); } void GoParser::LiteralTypeContext::exitRule(tree::ParseTreeListener *listener) { auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->exitLiteralType(this); } GoParser::LiteralTypeContext* GoParser::literalType() { LiteralTypeContext *_localctx = _tracker.createInstance(_ctx, getState()); enterRule(_localctx, 162, GoParser::RuleLiteralType); #if __cplusplus > 201703L auto onExit = finally([=, this] { #else auto onExit = finally([=] { #endif exitRule(); }); try { setState(844); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 90, _ctx)) { case 1: { enterOuterAlt(_localctx, 1); setState(835); structType(); break; } case 2: { enterOuterAlt(_localctx, 2); setState(836); arrayType(); break; } case 3: { enterOuterAlt(_localctx, 3); setState(837); match(GoParser::L_BRACKET); setState(838); match(GoParser::ELLIPSIS); setState(839); match(GoParser::R_BRACKET); setState(840); elementType(); break; } case 4: { enterOuterAlt(_localctx, 4); setState(841); sliceType(); break; } case 5: { enterOuterAlt(_localctx, 5); setState(842); mapType(); break; } case 6: { enterOuterAlt(_localctx, 6); setState(843); typeName(); break; } default: break; } } catch (RecognitionException &e) { _errHandler->reportError(this, e); _localctx->exception = std::current_exception(); _errHandler->recover(this, _localctx->exception); } return _localctx; } //----------------- LiteralValueContext ------------------------------------------------------------------ GoParser::LiteralValueContext::LiteralValueContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } tree::TerminalNode* GoParser::LiteralValueContext::L_CURLY() { return getToken(GoParser::L_CURLY, 0); } tree::TerminalNode* GoParser::LiteralValueContext::R_CURLY() { return getToken(GoParser::R_CURLY, 0); } GoParser::ElementListContext* GoParser::LiteralValueContext::elementList() { return getRuleContext(0); } tree::TerminalNode* GoParser::LiteralValueContext::COMMA() { return getToken(GoParser::COMMA, 0); } size_t GoParser::LiteralValueContext::getRuleIndex() const { return GoParser::RuleLiteralValue; } void GoParser::LiteralValueContext::enterRule(tree::ParseTreeListener *listener) { auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->enterLiteralValue(this); } void GoParser::LiteralValueContext::exitRule(tree::ParseTreeListener *listener) { auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->exitLiteralValue(this); } GoParser::LiteralValueContext* GoParser::literalValue() { LiteralValueContext *_localctx = _tracker.createInstance(_ctx, getState()); enterRule(_localctx, 164, GoParser::RuleLiteralValue); size_t _la = 0; #if __cplusplus > 201703L auto onExit = finally([=, this] { #else auto onExit = finally([=] { #endif exitRule(); }); try { enterOuterAlt(_localctx, 1); setState(846); match(GoParser::L_CURLY); setState(851); _errHandler->sync(this); _la = _input->LA(1); if ((((_la & ~ 0x3fULL) == 0) && ((1ULL << _la) & ((1ULL << GoParser::FUNC) | (1ULL << GoParser::INTERFACE) | (1ULL << GoParser::MAP) | (1ULL << GoParser::STRUCT) | (1ULL << GoParser::CHAN) | (1ULL << GoParser::NIL_LIT) | (1ULL << GoParser::IDENTIFIER) | (1ULL << GoParser::L_PAREN) | (1ULL << GoParser::L_CURLY) | (1ULL << GoParser::L_BRACKET) | (1ULL << GoParser::EXCLAMATION) | (1ULL << GoParser::PLUS) | (1ULL << GoParser::MINUS) | (1ULL << GoParser::CARET))) != 0) || ((((_la - 64) & ~ 0x3fULL) == 0) && ((1ULL << (_la - 64)) & ((1ULL << (GoParser::STAR - 64)) | (1ULL << (GoParser::AMPERSAND - 64)) | (1ULL << (GoParser::RECEIVE - 64)) | (1ULL << (GoParser::DECIMAL_LIT - 64)) | (1ULL << (GoParser::BINARY_LIT - 64)) | (1ULL << (GoParser::OCTAL_LIT - 64)) | (1ULL << (GoParser::HEX_LIT - 64)) | (1ULL << (GoParser::FLOAT_LIT - 64)) | (1ULL << (GoParser::IMAGINARY_LIT - 64)) | (1ULL << (GoParser::RUNE_LIT - 64)) | (1ULL << (GoParser::RAW_STRING_LIT - 64)) | (1ULL << (GoParser::INTERPRETED_STRING_LIT - 64)))) != 0)) { setState(847); elementList(); setState(849); _errHandler->sync(this); _la = _input->LA(1); if (_la == GoParser::COMMA) { setState(848); match(GoParser::COMMA); } } setState(853); match(GoParser::R_CURLY); } catch (RecognitionException &e) { _errHandler->reportError(this, e); _localctx->exception = std::current_exception(); _errHandler->recover(this, _localctx->exception); } return _localctx; } //----------------- ElementListContext ------------------------------------------------------------------ GoParser::ElementListContext::ElementListContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } std::vector GoParser::ElementListContext::keyedElement() { return getRuleContexts(); } GoParser::KeyedElementContext* GoParser::ElementListContext::keyedElement(size_t i) { return getRuleContext(i); } std::vector GoParser::ElementListContext::COMMA() { return getTokens(GoParser::COMMA); } tree::TerminalNode* GoParser::ElementListContext::COMMA(size_t i) { return getToken(GoParser::COMMA, i); } size_t GoParser::ElementListContext::getRuleIndex() const { return GoParser::RuleElementList; } void GoParser::ElementListContext::enterRule(tree::ParseTreeListener *listener) { auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->enterElementList(this); } void GoParser::ElementListContext::exitRule(tree::ParseTreeListener *listener) { auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->exitElementList(this); } GoParser::ElementListContext* GoParser::elementList() { ElementListContext *_localctx = _tracker.createInstance(_ctx, getState()); enterRule(_localctx, 166, GoParser::RuleElementList); #if __cplusplus > 201703L auto onExit = finally([=, this] { #else auto onExit = finally([=] { #endif exitRule(); }); try { size_t alt; enterOuterAlt(_localctx, 1); setState(855); keyedElement(); setState(860); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 93, _ctx); while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1) { setState(856); match(GoParser::COMMA); setState(857); keyedElement(); } setState(862); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 93, _ctx); } } catch (RecognitionException &e) { _errHandler->reportError(this, e); _localctx->exception = std::current_exception(); _errHandler->recover(this, _localctx->exception); } return _localctx; } //----------------- KeyedElementContext ------------------------------------------------------------------ GoParser::KeyedElementContext::KeyedElementContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } GoParser::ElementContext* GoParser::KeyedElementContext::element() { return getRuleContext(0); } GoParser::KeyContext* GoParser::KeyedElementContext::key() { return getRuleContext(0); } tree::TerminalNode* GoParser::KeyedElementContext::COLON() { return getToken(GoParser::COLON, 0); } size_t GoParser::KeyedElementContext::getRuleIndex() const { return GoParser::RuleKeyedElement; } void GoParser::KeyedElementContext::enterRule(tree::ParseTreeListener *listener) { auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->enterKeyedElement(this); } void GoParser::KeyedElementContext::exitRule(tree::ParseTreeListener *listener) { auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->exitKeyedElement(this); } GoParser::KeyedElementContext* GoParser::keyedElement() { KeyedElementContext *_localctx = _tracker.createInstance(_ctx, getState()); enterRule(_localctx, 168, GoParser::RuleKeyedElement); #if __cplusplus > 201703L auto onExit = finally([=, this] { #else auto onExit = finally([=] { #endif exitRule(); }); try { enterOuterAlt(_localctx, 1); setState(866); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 94, _ctx)) { case 1: { setState(863); key(); setState(864); match(GoParser::COLON); break; } default: break; } setState(868); element(); } catch (RecognitionException &e) { _errHandler->reportError(this, e); _localctx->exception = std::current_exception(); _errHandler->recover(this, _localctx->exception); } return _localctx; } //----------------- KeyContext ------------------------------------------------------------------ GoParser::KeyContext::KeyContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } GoParser::ExpressionContext* GoParser::KeyContext::expression() { return getRuleContext(0); } GoParser::LiteralValueContext* GoParser::KeyContext::literalValue() { return getRuleContext(0); } size_t GoParser::KeyContext::getRuleIndex() const { return GoParser::RuleKey; } void GoParser::KeyContext::enterRule(tree::ParseTreeListener *listener) { auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->enterKey(this); } void GoParser::KeyContext::exitRule(tree::ParseTreeListener *listener) { auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->exitKey(this); } GoParser::KeyContext* GoParser::key() { KeyContext *_localctx = _tracker.createInstance(_ctx, getState()); enterRule(_localctx, 170, GoParser::RuleKey); #if __cplusplus > 201703L auto onExit = finally([=, this] { #else auto onExit = finally([=] { #endif exitRule(); }); try { setState(872); _errHandler->sync(this); switch (_input->LA(1)) { case GoParser::FUNC: case GoParser::INTERFACE: case GoParser::MAP: case GoParser::STRUCT: case GoParser::CHAN: case GoParser::NIL_LIT: case GoParser::IDENTIFIER: case GoParser::L_PAREN: case GoParser::L_BRACKET: case GoParser::EXCLAMATION: case GoParser::PLUS: case GoParser::MINUS: case GoParser::CARET: case GoParser::STAR: case GoParser::AMPERSAND: case GoParser::RECEIVE: case GoParser::DECIMAL_LIT: case GoParser::BINARY_LIT: case GoParser::OCTAL_LIT: case GoParser::HEX_LIT: case GoParser::FLOAT_LIT: case GoParser::IMAGINARY_LIT: case GoParser::RUNE_LIT: case GoParser::RAW_STRING_LIT: case GoParser::INTERPRETED_STRING_LIT: { enterOuterAlt(_localctx, 1); setState(870); expression(0); break; } case GoParser::L_CURLY: { enterOuterAlt(_localctx, 2); setState(871); literalValue(); break; } default: throw NoViableAltException(this); } } catch (RecognitionException &e) { _errHandler->reportError(this, e); _localctx->exception = std::current_exception(); _errHandler->recover(this, _localctx->exception); } return _localctx; } //----------------- ElementContext ------------------------------------------------------------------ GoParser::ElementContext::ElementContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } GoParser::ExpressionContext* GoParser::ElementContext::expression() { return getRuleContext(0); } GoParser::LiteralValueContext* GoParser::ElementContext::literalValue() { return getRuleContext(0); } size_t GoParser::ElementContext::getRuleIndex() const { return GoParser::RuleElement; } void GoParser::ElementContext::enterRule(tree::ParseTreeListener *listener) { auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->enterElement(this); } void GoParser::ElementContext::exitRule(tree::ParseTreeListener *listener) { auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->exitElement(this); } GoParser::ElementContext* GoParser::element() { ElementContext *_localctx = _tracker.createInstance(_ctx, getState()); enterRule(_localctx, 172, GoParser::RuleElement); #if __cplusplus > 201703L auto onExit = finally([=, this] { #else auto onExit = finally([=] { #endif exitRule(); }); try { setState(876); _errHandler->sync(this); switch (_input->LA(1)) { case GoParser::FUNC: case GoParser::INTERFACE: case GoParser::MAP: case GoParser::STRUCT: case GoParser::CHAN: case GoParser::NIL_LIT: case GoParser::IDENTIFIER: case GoParser::L_PAREN: case GoParser::L_BRACKET: case GoParser::EXCLAMATION: case GoParser::PLUS: case GoParser::MINUS: case GoParser::CARET: case GoParser::STAR: case GoParser::AMPERSAND: case GoParser::RECEIVE: case GoParser::DECIMAL_LIT: case GoParser::BINARY_LIT: case GoParser::OCTAL_LIT: case GoParser::HEX_LIT: case GoParser::FLOAT_LIT: case GoParser::IMAGINARY_LIT: case GoParser::RUNE_LIT: case GoParser::RAW_STRING_LIT: case GoParser::INTERPRETED_STRING_LIT: { enterOuterAlt(_localctx, 1); setState(874); expression(0); break; } case GoParser::L_CURLY: { enterOuterAlt(_localctx, 2); setState(875); literalValue(); break; } default: throw NoViableAltException(this); } } catch (RecognitionException &e) { _errHandler->reportError(this, e); _localctx->exception = std::current_exception(); _errHandler->recover(this, _localctx->exception); } return _localctx; } //----------------- StructTypeContext ------------------------------------------------------------------ GoParser::StructTypeContext::StructTypeContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } tree::TerminalNode* GoParser::StructTypeContext::STRUCT() { return getToken(GoParser::STRUCT, 0); } tree::TerminalNode* GoParser::StructTypeContext::L_CURLY() { return getToken(GoParser::L_CURLY, 0); } tree::TerminalNode* GoParser::StructTypeContext::R_CURLY() { return getToken(GoParser::R_CURLY, 0); } std::vector GoParser::StructTypeContext::fieldDecl() { return getRuleContexts(); } GoParser::FieldDeclContext* GoParser::StructTypeContext::fieldDecl(size_t i) { return getRuleContext(i); } std::vector GoParser::StructTypeContext::eoss() { return getRuleContexts(); } GoParser::EossContext* GoParser::StructTypeContext::eoss(size_t i) { return getRuleContext(i); } size_t GoParser::StructTypeContext::getRuleIndex() const { return GoParser::RuleStructType; } void GoParser::StructTypeContext::enterRule(tree::ParseTreeListener *listener) { auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->enterStructType(this); } void GoParser::StructTypeContext::exitRule(tree::ParseTreeListener *listener) { auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->exitStructType(this); } GoParser::StructTypeContext* GoParser::structType() { StructTypeContext *_localctx = _tracker.createInstance(_ctx, getState()); enterRule(_localctx, 174, GoParser::RuleStructType); size_t _la = 0; #if __cplusplus > 201703L auto onExit = finally([=, this] { #else auto onExit = finally([=] { #endif exitRule(); }); try { enterOuterAlt(_localctx, 1); setState(878); match(GoParser::STRUCT); setState(879); match(GoParser::L_CURLY); setState(885); _errHandler->sync(this); _la = _input->LA(1); while (_la == GoParser::IDENTIFIER || _la == GoParser::STAR) { setState(880); fieldDecl(); setState(881); eoss(); setState(887); _errHandler->sync(this); _la = _input->LA(1); } setState(888); match(GoParser::R_CURLY); } catch (RecognitionException &e) { _errHandler->reportError(this, e); _localctx->exception = std::current_exception(); _errHandler->recover(this, _localctx->exception); } return _localctx; } //----------------- FieldDeclContext ------------------------------------------------------------------ GoParser::FieldDeclContext::FieldDeclContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } GoParser::IdentifierListContext* GoParser::FieldDeclContext::identifierList() { return getRuleContext(0); } GoParser::Type_Context* GoParser::FieldDeclContext::type_() { return getRuleContext(0); } GoParser::EmbeddedFieldContext* GoParser::FieldDeclContext::embeddedField() { return getRuleContext(0); } GoParser::String_Context* GoParser::FieldDeclContext::string_() { return getRuleContext(0); } size_t GoParser::FieldDeclContext::getRuleIndex() const { return GoParser::RuleFieldDecl; } void GoParser::FieldDeclContext::enterRule(tree::ParseTreeListener *listener) { auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->enterFieldDecl(this); } void GoParser::FieldDeclContext::exitRule(tree::ParseTreeListener *listener) { auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->exitFieldDecl(this); } GoParser::FieldDeclContext* GoParser::fieldDecl() { FieldDeclContext *_localctx = _tracker.createInstance(_ctx, getState()); enterRule(_localctx, 176, GoParser::RuleFieldDecl); size_t _la = 0; #if __cplusplus > 201703L auto onExit = finally([=, this] { #else auto onExit = finally([=] { #endif exitRule(); }); try { enterOuterAlt(_localctx, 1); setState(894); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 98, _ctx)) { case 1: { setState(890); identifierList(); setState(891); type_(); break; } case 2: { setState(893); embeddedField(); break; } default: break; } setState(897); _errHandler->sync(this); _la = _input->LA(1); if (_la == GoParser::RAW_STRING_LIT || _la == GoParser::INTERPRETED_STRING_LIT) { setState(896); antlrcpp::downCast(_localctx)->tag = string_(); } } catch (RecognitionException &e) { _errHandler->reportError(this, e); _localctx->exception = std::current_exception(); _errHandler->recover(this, _localctx->exception); } return _localctx; } //----------------- String_Context ------------------------------------------------------------------ GoParser::String_Context::String_Context(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } tree::TerminalNode* GoParser::String_Context::RAW_STRING_LIT() { return getToken(GoParser::RAW_STRING_LIT, 0); } tree::TerminalNode* GoParser::String_Context::INTERPRETED_STRING_LIT() { return getToken(GoParser::INTERPRETED_STRING_LIT, 0); } size_t GoParser::String_Context::getRuleIndex() const { return GoParser::RuleString_; } void GoParser::String_Context::enterRule(tree::ParseTreeListener *listener) { auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->enterString_(this); } void GoParser::String_Context::exitRule(tree::ParseTreeListener *listener) { auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->exitString_(this); } GoParser::String_Context* GoParser::string_() { String_Context *_localctx = _tracker.createInstance(_ctx, getState()); enterRule(_localctx, 178, GoParser::RuleString_); size_t _la = 0; #if __cplusplus > 201703L auto onExit = finally([=, this] { #else auto onExit = finally([=] { #endif exitRule(); }); try { enterOuterAlt(_localctx, 1); setState(899); _la = _input->LA(1); if (!(_la == GoParser::RAW_STRING_LIT || _la == GoParser::INTERPRETED_STRING_LIT)) { _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; } //----------------- EmbeddedFieldContext ------------------------------------------------------------------ GoParser::EmbeddedFieldContext::EmbeddedFieldContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } GoParser::TypeNameContext* GoParser::EmbeddedFieldContext::typeName() { return getRuleContext(0); } tree::TerminalNode* GoParser::EmbeddedFieldContext::STAR() { return getToken(GoParser::STAR, 0); } size_t GoParser::EmbeddedFieldContext::getRuleIndex() const { return GoParser::RuleEmbeddedField; } void GoParser::EmbeddedFieldContext::enterRule(tree::ParseTreeListener *listener) { auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->enterEmbeddedField(this); } void GoParser::EmbeddedFieldContext::exitRule(tree::ParseTreeListener *listener) { auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->exitEmbeddedField(this); } GoParser::EmbeddedFieldContext* GoParser::embeddedField() { EmbeddedFieldContext *_localctx = _tracker.createInstance(_ctx, getState()); enterRule(_localctx, 180, GoParser::RuleEmbeddedField); size_t _la = 0; #if __cplusplus > 201703L auto onExit = finally([=, this] { #else auto onExit = finally([=] { #endif exitRule(); }); try { enterOuterAlt(_localctx, 1); setState(902); _errHandler->sync(this); _la = _input->LA(1); if (_la == GoParser::STAR) { setState(901); match(GoParser::STAR); } setState(904); typeName(); } catch (RecognitionException &e) { _errHandler->reportError(this, e); _localctx->exception = std::current_exception(); _errHandler->recover(this, _localctx->exception); } return _localctx; } //----------------- FunctionLitContext ------------------------------------------------------------------ GoParser::FunctionLitContext::FunctionLitContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } tree::TerminalNode* GoParser::FunctionLitContext::FUNC() { return getToken(GoParser::FUNC, 0); } GoParser::SignatureContext* GoParser::FunctionLitContext::signature() { return getRuleContext(0); } GoParser::BlockContext* GoParser::FunctionLitContext::block() { return getRuleContext(0); } size_t GoParser::FunctionLitContext::getRuleIndex() const { return GoParser::RuleFunctionLit; } void GoParser::FunctionLitContext::enterRule(tree::ParseTreeListener *listener) { auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->enterFunctionLit(this); } void GoParser::FunctionLitContext::exitRule(tree::ParseTreeListener *listener) { auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->exitFunctionLit(this); } GoParser::FunctionLitContext* GoParser::functionLit() { FunctionLitContext *_localctx = _tracker.createInstance(_ctx, getState()); enterRule(_localctx, 182, GoParser::RuleFunctionLit); #if __cplusplus > 201703L auto onExit = finally([=, this] { #else auto onExit = finally([=] { #endif exitRule(); }); try { enterOuterAlt(_localctx, 1); setState(906); match(GoParser::FUNC); setState(907); signature(); setState(908); block(); } catch (RecognitionException &e) { _errHandler->reportError(this, e); _localctx->exception = std::current_exception(); _errHandler->recover(this, _localctx->exception); } return _localctx; } //----------------- IndexContext ------------------------------------------------------------------ GoParser::IndexContext::IndexContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } tree::TerminalNode* GoParser::IndexContext::L_BRACKET() { return getToken(GoParser::L_BRACKET, 0); } GoParser::ExpressionContext* GoParser::IndexContext::expression() { return getRuleContext(0); } tree::TerminalNode* GoParser::IndexContext::R_BRACKET() { return getToken(GoParser::R_BRACKET, 0); } size_t GoParser::IndexContext::getRuleIndex() const { return GoParser::RuleIndex; } void GoParser::IndexContext::enterRule(tree::ParseTreeListener *listener) { auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->enterIndex(this); } void GoParser::IndexContext::exitRule(tree::ParseTreeListener *listener) { auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->exitIndex(this); } GoParser::IndexContext* GoParser::index() { IndexContext *_localctx = _tracker.createInstance(_ctx, getState()); enterRule(_localctx, 184, GoParser::RuleIndex); #if __cplusplus > 201703L auto onExit = finally([=, this] { #else auto onExit = finally([=] { #endif exitRule(); }); try { enterOuterAlt(_localctx, 1); setState(910); match(GoParser::L_BRACKET); setState(911); expression(0); setState(912); match(GoParser::R_BRACKET); } catch (RecognitionException &e) { _errHandler->reportError(this, e); _localctx->exception = std::current_exception(); _errHandler->recover(this, _localctx->exception); } return _localctx; } //----------------- Slice_Context ------------------------------------------------------------------ GoParser::Slice_Context::Slice_Context(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } tree::TerminalNode* GoParser::Slice_Context::L_BRACKET() { return getToken(GoParser::L_BRACKET, 0); } tree::TerminalNode* GoParser::Slice_Context::R_BRACKET() { return getToken(GoParser::R_BRACKET, 0); } std::vector GoParser::Slice_Context::COLON() { return getTokens(GoParser::COLON); } tree::TerminalNode* GoParser::Slice_Context::COLON(size_t i) { return getToken(GoParser::COLON, i); } std::vector GoParser::Slice_Context::expression() { return getRuleContexts(); } GoParser::ExpressionContext* GoParser::Slice_Context::expression(size_t i) { return getRuleContext(i); } size_t GoParser::Slice_Context::getRuleIndex() const { return GoParser::RuleSlice_; } void GoParser::Slice_Context::enterRule(tree::ParseTreeListener *listener) { auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->enterSlice_(this); } void GoParser::Slice_Context::exitRule(tree::ParseTreeListener *listener) { auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->exitSlice_(this); } GoParser::Slice_Context* GoParser::slice_() { Slice_Context *_localctx = _tracker.createInstance(_ctx, getState()); enterRule(_localctx, 186, GoParser::RuleSlice_); size_t _la = 0; #if __cplusplus > 201703L auto onExit = finally([=, this] { #else auto onExit = finally([=] { #endif exitRule(); }); try { enterOuterAlt(_localctx, 1); setState(914); match(GoParser::L_BRACKET); setState(930); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 104, _ctx)) { case 1: { setState(916); _errHandler->sync(this); _la = _input->LA(1); if ((((_la & ~ 0x3fULL) == 0) && ((1ULL << _la) & ((1ULL << GoParser::FUNC) | (1ULL << GoParser::INTERFACE) | (1ULL << GoParser::MAP) | (1ULL << GoParser::STRUCT) | (1ULL << GoParser::CHAN) | (1ULL << GoParser::NIL_LIT) | (1ULL << GoParser::IDENTIFIER) | (1ULL << GoParser::L_PAREN) | (1ULL << GoParser::L_BRACKET) | (1ULL << GoParser::EXCLAMATION) | (1ULL << GoParser::PLUS) | (1ULL << GoParser::MINUS) | (1ULL << GoParser::CARET))) != 0) || ((((_la - 64) & ~ 0x3fULL) == 0) && ((1ULL << (_la - 64)) & ((1ULL << (GoParser::STAR - 64)) | (1ULL << (GoParser::AMPERSAND - 64)) | (1ULL << (GoParser::RECEIVE - 64)) | (1ULL << (GoParser::DECIMAL_LIT - 64)) | (1ULL << (GoParser::BINARY_LIT - 64)) | (1ULL << (GoParser::OCTAL_LIT - 64)) | (1ULL << (GoParser::HEX_LIT - 64)) | (1ULL << (GoParser::FLOAT_LIT - 64)) | (1ULL << (GoParser::IMAGINARY_LIT - 64)) | (1ULL << (GoParser::RUNE_LIT - 64)) | (1ULL << (GoParser::RAW_STRING_LIT - 64)) | (1ULL << (GoParser::INTERPRETED_STRING_LIT - 64)))) != 0)) { setState(915); expression(0); } setState(918); match(GoParser::COLON); setState(920); _errHandler->sync(this); _la = _input->LA(1); if ((((_la & ~ 0x3fULL) == 0) && ((1ULL << _la) & ((1ULL << GoParser::FUNC) | (1ULL << GoParser::INTERFACE) | (1ULL << GoParser::MAP) | (1ULL << GoParser::STRUCT) | (1ULL << GoParser::CHAN) | (1ULL << GoParser::NIL_LIT) | (1ULL << GoParser::IDENTIFIER) | (1ULL << GoParser::L_PAREN) | (1ULL << GoParser::L_BRACKET) | (1ULL << GoParser::EXCLAMATION) | (1ULL << GoParser::PLUS) | (1ULL << GoParser::MINUS) | (1ULL << GoParser::CARET))) != 0) || ((((_la - 64) & ~ 0x3fULL) == 0) && ((1ULL << (_la - 64)) & ((1ULL << (GoParser::STAR - 64)) | (1ULL << (GoParser::AMPERSAND - 64)) | (1ULL << (GoParser::RECEIVE - 64)) | (1ULL << (GoParser::DECIMAL_LIT - 64)) | (1ULL << (GoParser::BINARY_LIT - 64)) | (1ULL << (GoParser::OCTAL_LIT - 64)) | (1ULL << (GoParser::HEX_LIT - 64)) | (1ULL << (GoParser::FLOAT_LIT - 64)) | (1ULL << (GoParser::IMAGINARY_LIT - 64)) | (1ULL << (GoParser::RUNE_LIT - 64)) | (1ULL << (GoParser::RAW_STRING_LIT - 64)) | (1ULL << (GoParser::INTERPRETED_STRING_LIT - 64)))) != 0)) { setState(919); expression(0); } break; } case 2: { setState(923); _errHandler->sync(this); _la = _input->LA(1); if ((((_la & ~ 0x3fULL) == 0) && ((1ULL << _la) & ((1ULL << GoParser::FUNC) | (1ULL << GoParser::INTERFACE) | (1ULL << GoParser::MAP) | (1ULL << GoParser::STRUCT) | (1ULL << GoParser::CHAN) | (1ULL << GoParser::NIL_LIT) | (1ULL << GoParser::IDENTIFIER) | (1ULL << GoParser::L_PAREN) | (1ULL << GoParser::L_BRACKET) | (1ULL << GoParser::EXCLAMATION) | (1ULL << GoParser::PLUS) | (1ULL << GoParser::MINUS) | (1ULL << GoParser::CARET))) != 0) || ((((_la - 64) & ~ 0x3fULL) == 0) && ((1ULL << (_la - 64)) & ((1ULL << (GoParser::STAR - 64)) | (1ULL << (GoParser::AMPERSAND - 64)) | (1ULL << (GoParser::RECEIVE - 64)) | (1ULL << (GoParser::DECIMAL_LIT - 64)) | (1ULL << (GoParser::BINARY_LIT - 64)) | (1ULL << (GoParser::OCTAL_LIT - 64)) | (1ULL << (GoParser::HEX_LIT - 64)) | (1ULL << (GoParser::FLOAT_LIT - 64)) | (1ULL << (GoParser::IMAGINARY_LIT - 64)) | (1ULL << (GoParser::RUNE_LIT - 64)) | (1ULL << (GoParser::RAW_STRING_LIT - 64)) | (1ULL << (GoParser::INTERPRETED_STRING_LIT - 64)))) != 0)) { setState(922); expression(0); } setState(925); match(GoParser::COLON); setState(926); expression(0); setState(927); match(GoParser::COLON); setState(928); expression(0); break; } default: break; } setState(932); match(GoParser::R_BRACKET); } catch (RecognitionException &e) { _errHandler->reportError(this, e); _localctx->exception = std::current_exception(); _errHandler->recover(this, _localctx->exception); } return _localctx; } //----------------- TypeAssertionContext ------------------------------------------------------------------ GoParser::TypeAssertionContext::TypeAssertionContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } tree::TerminalNode* GoParser::TypeAssertionContext::DOT() { return getToken(GoParser::DOT, 0); } tree::TerminalNode* GoParser::TypeAssertionContext::L_PAREN() { return getToken(GoParser::L_PAREN, 0); } GoParser::Type_Context* GoParser::TypeAssertionContext::type_() { return getRuleContext(0); } tree::TerminalNode* GoParser::TypeAssertionContext::R_PAREN() { return getToken(GoParser::R_PAREN, 0); } size_t GoParser::TypeAssertionContext::getRuleIndex() const { return GoParser::RuleTypeAssertion; } void GoParser::TypeAssertionContext::enterRule(tree::ParseTreeListener *listener) { auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->enterTypeAssertion(this); } void GoParser::TypeAssertionContext::exitRule(tree::ParseTreeListener *listener) { auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->exitTypeAssertion(this); } GoParser::TypeAssertionContext* GoParser::typeAssertion() { TypeAssertionContext *_localctx = _tracker.createInstance(_ctx, getState()); enterRule(_localctx, 188, GoParser::RuleTypeAssertion); #if __cplusplus > 201703L auto onExit = finally([=, this] { #else auto onExit = finally([=] { #endif exitRule(); }); try { enterOuterAlt(_localctx, 1); setState(934); match(GoParser::DOT); setState(935); match(GoParser::L_PAREN); setState(936); type_(); setState(937); match(GoParser::R_PAREN); } catch (RecognitionException &e) { _errHandler->reportError(this, e); _localctx->exception = std::current_exception(); _errHandler->recover(this, _localctx->exception); } return _localctx; } //----------------- ArgumentsContext ------------------------------------------------------------------ GoParser::ArgumentsContext::ArgumentsContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } tree::TerminalNode* GoParser::ArgumentsContext::L_PAREN() { return getToken(GoParser::L_PAREN, 0); } tree::TerminalNode* GoParser::ArgumentsContext::R_PAREN() { return getToken(GoParser::R_PAREN, 0); } GoParser::ExpressionListContext* GoParser::ArgumentsContext::expressionList() { return getRuleContext(0); } GoParser::NonNamedTypeContext* GoParser::ArgumentsContext::nonNamedType() { return getRuleContext(0); } tree::TerminalNode* GoParser::ArgumentsContext::ELLIPSIS() { return getToken(GoParser::ELLIPSIS, 0); } std::vector GoParser::ArgumentsContext::COMMA() { return getTokens(GoParser::COMMA); } tree::TerminalNode* GoParser::ArgumentsContext::COMMA(size_t i) { return getToken(GoParser::COMMA, i); } size_t GoParser::ArgumentsContext::getRuleIndex() const { return GoParser::RuleArguments; } void GoParser::ArgumentsContext::enterRule(tree::ParseTreeListener *listener) { auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->enterArguments(this); } void GoParser::ArgumentsContext::exitRule(tree::ParseTreeListener *listener) { auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->exitArguments(this); } GoParser::ArgumentsContext* GoParser::arguments() { ArgumentsContext *_localctx = _tracker.createInstance(_ctx, getState()); enterRule(_localctx, 190, GoParser::RuleArguments); size_t _la = 0; #if __cplusplus > 201703L auto onExit = finally([=, this] { #else auto onExit = finally([=] { #endif exitRule(); }); try { enterOuterAlt(_localctx, 1); setState(939); match(GoParser::L_PAREN); setState(954); _errHandler->sync(this); _la = _input->LA(1); if ((((_la & ~ 0x3fULL) == 0) && ((1ULL << _la) & ((1ULL << GoParser::FUNC) | (1ULL << GoParser::INTERFACE) | (1ULL << GoParser::MAP) | (1ULL << GoParser::STRUCT) | (1ULL << GoParser::CHAN) | (1ULL << GoParser::NIL_LIT) | (1ULL << GoParser::IDENTIFIER) | (1ULL << GoParser::L_PAREN) | (1ULL << GoParser::L_BRACKET) | (1ULL << GoParser::EXCLAMATION) | (1ULL << GoParser::PLUS) | (1ULL << GoParser::MINUS) | (1ULL << GoParser::CARET))) != 0) || ((((_la - 64) & ~ 0x3fULL) == 0) && ((1ULL << (_la - 64)) & ((1ULL << (GoParser::STAR - 64)) | (1ULL << (GoParser::AMPERSAND - 64)) | (1ULL << (GoParser::RECEIVE - 64)) | (1ULL << (GoParser::DECIMAL_LIT - 64)) | (1ULL << (GoParser::BINARY_LIT - 64)) | (1ULL << (GoParser::OCTAL_LIT - 64)) | (1ULL << (GoParser::HEX_LIT - 64)) | (1ULL << (GoParser::FLOAT_LIT - 64)) | (1ULL << (GoParser::IMAGINARY_LIT - 64)) | (1ULL << (GoParser::RUNE_LIT - 64)) | (1ULL << (GoParser::RAW_STRING_LIT - 64)) | (1ULL << (GoParser::INTERPRETED_STRING_LIT - 64)))) != 0)) { setState(946); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 106, _ctx)) { case 1: { setState(940); expressionList(); break; } case 2: { setState(941); nonNamedType(); setState(944); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 105, _ctx)) { case 1: { setState(942); match(GoParser::COMMA); setState(943); expressionList(); break; } default: break; } break; } default: break; } setState(949); _errHandler->sync(this); _la = _input->LA(1); if (_la == GoParser::ELLIPSIS) { setState(948); match(GoParser::ELLIPSIS); } setState(952); _errHandler->sync(this); _la = _input->LA(1); if (_la == GoParser::COMMA) { setState(951); match(GoParser::COMMA); } } setState(956); match(GoParser::R_PAREN); } catch (RecognitionException &e) { _errHandler->reportError(this, e); _localctx->exception = std::current_exception(); _errHandler->recover(this, _localctx->exception); } return _localctx; } //----------------- MethodExprContext ------------------------------------------------------------------ GoParser::MethodExprContext::MethodExprContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } GoParser::NonNamedTypeContext* GoParser::MethodExprContext::nonNamedType() { return getRuleContext(0); } tree::TerminalNode* GoParser::MethodExprContext::DOT() { return getToken(GoParser::DOT, 0); } tree::TerminalNode* GoParser::MethodExprContext::IDENTIFIER() { return getToken(GoParser::IDENTIFIER, 0); } size_t GoParser::MethodExprContext::getRuleIndex() const { return GoParser::RuleMethodExpr; } void GoParser::MethodExprContext::enterRule(tree::ParseTreeListener *listener) { auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->enterMethodExpr(this); } void GoParser::MethodExprContext::exitRule(tree::ParseTreeListener *listener) { auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->exitMethodExpr(this); } GoParser::MethodExprContext* GoParser::methodExpr() { MethodExprContext *_localctx = _tracker.createInstance(_ctx, getState()); enterRule(_localctx, 192, GoParser::RuleMethodExpr); #if __cplusplus > 201703L auto onExit = finally([=, this] { #else auto onExit = finally([=] { #endif exitRule(); }); try { enterOuterAlt(_localctx, 1); setState(958); nonNamedType(); setState(959); match(GoParser::DOT); setState(960); match(GoParser::IDENTIFIER); } catch (RecognitionException &e) { _errHandler->reportError(this, e); _localctx->exception = std::current_exception(); _errHandler->recover(this, _localctx->exception); } return _localctx; } //----------------- ReceiverTypeContext ------------------------------------------------------------------ GoParser::ReceiverTypeContext::ReceiverTypeContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } GoParser::Type_Context* GoParser::ReceiverTypeContext::type_() { return getRuleContext(0); } size_t GoParser::ReceiverTypeContext::getRuleIndex() const { return GoParser::RuleReceiverType; } void GoParser::ReceiverTypeContext::enterRule(tree::ParseTreeListener *listener) { auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->enterReceiverType(this); } void GoParser::ReceiverTypeContext::exitRule(tree::ParseTreeListener *listener) { auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->exitReceiverType(this); } GoParser::ReceiverTypeContext* GoParser::receiverType() { ReceiverTypeContext *_localctx = _tracker.createInstance(_ctx, getState()); enterRule(_localctx, 194, GoParser::RuleReceiverType); #if __cplusplus > 201703L auto onExit = finally([=, this] { #else auto onExit = finally([=] { #endif exitRule(); }); try { enterOuterAlt(_localctx, 1); setState(962); type_(); } catch (RecognitionException &e) { _errHandler->reportError(this, e); _localctx->exception = std::current_exception(); _errHandler->recover(this, _localctx->exception); } return _localctx; } //----------------- EossContext ------------------------------------------------------------------ GoParser::EossContext::EossContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } tree::TerminalNode* GoParser::EossContext::SEMI() { return getToken(GoParser::SEMI, 0); } tree::TerminalNode* GoParser::EossContext::EOSSS() { return getToken(GoParser::EOSSS, 0); } tree::TerminalNode* GoParser::EossContext::HUANHANG() { return getToken(GoParser::HUANHANG, 0); } tree::TerminalNode* GoParser::EossContext::HUANHANGG() { return getToken(GoParser::HUANHANGG, 0); } size_t GoParser::EossContext::getRuleIndex() const { return GoParser::RuleEoss; } void GoParser::EossContext::enterRule(tree::ParseTreeListener *listener) { auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->enterEoss(this); } void GoParser::EossContext::exitRule(tree::ParseTreeListener *listener) { auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->exitEoss(this); } GoParser::EossContext* GoParser::eoss() { EossContext *_localctx = _tracker.createInstance(_ctx, getState()); enterRule(_localctx, 196, GoParser::RuleEoss); size_t _la = 0; #if __cplusplus > 201703L auto onExit = finally([=, this] { #else auto onExit = finally([=] { #endif exitRule(); }); try { enterOuterAlt(_localctx, 1); setState(964); _la = _input->LA(1); if (!((((_la & ~ 0x3fULL) == 0) && ((1ULL << _la) & ((1ULL << GoParser::SEMI) | (1ULL << GoParser::HUANHANG) | (1ULL << GoParser::HUANHANGG) | (1ULL << GoParser::EOSSS))) != 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; } bool GoParser::sempred(RuleContext *context, size_t ruleIndex, size_t predicateIndex) { switch (ruleIndex) { case 70: return expressionSempred(antlrcpp::downCast(context), predicateIndex); case 71: return primaryExprSempred(antlrcpp::downCast(context), predicateIndex); default: break; } return true; } bool GoParser::expressionSempred(ExpressionContext *_localctx, size_t predicateIndex) { switch (predicateIndex) { case 0: return precpred(_ctx, 5); case 1: return precpred(_ctx, 4); case 2: return precpred(_ctx, 3); case 3: return precpred(_ctx, 2); case 4: return precpred(_ctx, 1); default: break; } return true; } bool GoParser::primaryExprSempred(PrimaryExprContext *_localctx, size_t predicateIndex) { switch (predicateIndex) { case 5: return precpred(_ctx, 1); default: break; } return true; } // Static vars and initialization. std::vector GoParser::_decisionToDFA; atn::PredictionContextCache GoParser::_sharedContextCache; // We own the ATN which in turn owns the ATN states. atn::ATN GoParser::_atn; std::vector GoParser::_serializedATN; std::vector GoParser::_ruleNames = { "sourceFile", "packageClause", "importDecl", "importSpec", "importPath", "declaration", "constDecl", "constSpec", "identifierList", "expressionList", "typeDecl", "typeSpec", "functionDecl", "methodDecl", "receiver", "varDecl", "varSpec", "block", "statementList", "statement", "simpleStmt", "expressionStmt", "sendStmt", "incDecStmt", "assignment", "assign_op", "shortVarDecl", "emptyStmt", "labeledStmt", "returnStmt", "breakStmt", "continueStmt", "gotoStmt", "fallthroughStmt", "deferStmt", "ifStmt", "switchStmt", "exprSwitchStmt", "exprCaseClause", "exprSwitchCase", "typeSwitchStmt", "typeSwitchGuard", "typeCaseClause", "typeSwitchCase", "typeList", "selectStmt", "commClause", "commCase", "recvStmt", "forStmt", "forClause", "rangeClause", "goStmt", "type_", "typeName", "typeLit", "arrayType", "arrayLength", "elementType", "pointerType", "interfaceType", "sliceType", "mapType", "channelType", "methodSpec", "functionType", "signature", "result", "parameters", "parameterDecl", "expression", "primaryExpr", "conversion", "nonNamedType", "operand", "literal", "basicLit", "integer", "operandName", "qualifiedIdent", "compositeLit", "literalType", "literalValue", "elementList", "keyedElement", "key", "element", "structType", "fieldDecl", "string_", "embeddedField", "functionLit", "index", "slice_", "typeAssertion", "arguments", "methodExpr", "receiverType", "eoss" }; std::vector GoParser::_literalNames = { "", "'break'", "'default'", "'func'", "'interface'", "'select'", "'case'", "'defer'", "'go'", "'map'", "'struct'", "'chan'", "'else'", "'goto'", "'package'", "'switch'", "'const'", "'fallthrough'", "'if'", "'range'", "'type'", "'continue'", "'for'", "'import'", "'return'", "'var'", "'nil'", "", "'('", "')'", "'{'", "'}'", "'['", "']'", "'='", "','", "';'", "'\n'", "'\r\n'", "':'", "'.'", "'++'", "'--'", "':='", "'...'", "", "'||'", "'&&'", "'=='", "'!='", "'<'", "'<='", "'>'", "'>='", "'|'", "'/'", "'%'", "'<<'", "'>>'", "'&^'", "'!'", "'+'", "'-'", "'^'", "'*'", "'&'", "'<-'" }; std::vector GoParser::_symbolicNames = { "", "BREAK", "DEFAULT", "FUNC", "INTERFACE", "SELECT", "CASE", "DEFER", "GO", "MAP", "STRUCT", "CHAN", "ELSE", "GOTO", "PACKAGE", "SWITCH", "CONST", "FALLTHROUGH", "IF", "RANGE", "TYPE", "CONTINUE", "FOR", "IMPORT", "RETURN", "VAR", "NIL_LIT", "IDENTIFIER", "L_PAREN", "R_PAREN", "L_CURLY", "R_CURLY", "L_BRACKET", "R_BRACKET", "ASSIGN", "COMMA", "SEMI", "HUANHANG", "HUANHANGG", "COLON", "DOT", "PLUS_PLUS", "MINUS_MINUS", "DECLARE_ASSIGN", "ELLIPSIS", "EOSSS", "LOGICAL_OR", "LOGICAL_AND", "EQUALS", "NOT_EQUALS", "LESS", "LESS_OR_EQUALS", "GREATER", "GREATER_OR_EQUALS", "OR", "DIV", "MOD", "LSHIFT", "RSHIFT", "BIT_CLEAR", "EXCLAMATION", "PLUS", "MINUS", "CARET", "STAR", "AMPERSAND", "RECEIVE", "DECIMAL_LIT", "BINARY_LIT", "OCTAL_LIT", "HEX_LIT", "FLOAT_LIT", "DECIMAL_FLOAT_LIT", "HEX_FLOAT_LIT", "IMAGINARY_LIT", "RUNE_LIT", "BYTE_VALUE", "OCTAL_BYTE_VALUE", "HEX_BYTE_VALUE", "LITTLE_U_VALUE", "BIG_U_VALUE", "RAW_STRING_LIT", "INTERPRETED_STRING_LIT", "WS", "COMMENT", "TERMINATOR", "LINE_COMMENT", "WS_NLSEMI", "COMMENT_NLSEMI", "LINE_COMMENT_NLSEMI" }; dfa::Vocabulary GoParser::_vocabulary(_literalNames, _symbolicNames); std::vector GoParser::_tokenNames; GoParser::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); } } static const uint16_t serializedATNSegment0[] = { 0x3, 0x608b, 0xa72a, 0x8133, 0xb9ed, 0x417c, 0x3be7, 0x7786, 0x5964, 0x3, 0x5b, 0x3c9, 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, 0x4, 0x21, 0x9, 0x21, 0x4, 0x22, 0x9, 0x22, 0x4, 0x23, 0x9, 0x23, 0x4, 0x24, 0x9, 0x24, 0x4, 0x25, 0x9, 0x25, 0x4, 0x26, 0x9, 0x26, 0x4, 0x27, 0x9, 0x27, 0x4, 0x28, 0x9, 0x28, 0x4, 0x29, 0x9, 0x29, 0x4, 0x2a, 0x9, 0x2a, 0x4, 0x2b, 0x9, 0x2b, 0x4, 0x2c, 0x9, 0x2c, 0x4, 0x2d, 0x9, 0x2d, 0x4, 0x2e, 0x9, 0x2e, 0x4, 0x2f, 0x9, 0x2f, 0x4, 0x30, 0x9, 0x30, 0x4, 0x31, 0x9, 0x31, 0x4, 0x32, 0x9, 0x32, 0x4, 0x33, 0x9, 0x33, 0x4, 0x34, 0x9, 0x34, 0x4, 0x35, 0x9, 0x35, 0x4, 0x36, 0x9, 0x36, 0x4, 0x37, 0x9, 0x37, 0x4, 0x38, 0x9, 0x38, 0x4, 0x39, 0x9, 0x39, 0x4, 0x3a, 0x9, 0x3a, 0x4, 0x3b, 0x9, 0x3b, 0x4, 0x3c, 0x9, 0x3c, 0x4, 0x3d, 0x9, 0x3d, 0x4, 0x3e, 0x9, 0x3e, 0x4, 0x3f, 0x9, 0x3f, 0x4, 0x40, 0x9, 0x40, 0x4, 0x41, 0x9, 0x41, 0x4, 0x42, 0x9, 0x42, 0x4, 0x43, 0x9, 0x43, 0x4, 0x44, 0x9, 0x44, 0x4, 0x45, 0x9, 0x45, 0x4, 0x46, 0x9, 0x46, 0x4, 0x47, 0x9, 0x47, 0x4, 0x48, 0x9, 0x48, 0x4, 0x49, 0x9, 0x49, 0x4, 0x4a, 0x9, 0x4a, 0x4, 0x4b, 0x9, 0x4b, 0x4, 0x4c, 0x9, 0x4c, 0x4, 0x4d, 0x9, 0x4d, 0x4, 0x4e, 0x9, 0x4e, 0x4, 0x4f, 0x9, 0x4f, 0x4, 0x50, 0x9, 0x50, 0x4, 0x51, 0x9, 0x51, 0x4, 0x52, 0x9, 0x52, 0x4, 0x53, 0x9, 0x53, 0x4, 0x54, 0x9, 0x54, 0x4, 0x55, 0x9, 0x55, 0x4, 0x56, 0x9, 0x56, 0x4, 0x57, 0x9, 0x57, 0x4, 0x58, 0x9, 0x58, 0x4, 0x59, 0x9, 0x59, 0x4, 0x5a, 0x9, 0x5a, 0x4, 0x5b, 0x9, 0x5b, 0x4, 0x5c, 0x9, 0x5c, 0x4, 0x5d, 0x9, 0x5d, 0x4, 0x5e, 0x9, 0x5e, 0x4, 0x5f, 0x9, 0x5f, 0x4, 0x60, 0x9, 0x60, 0x4, 0x61, 0x9, 0x61, 0x4, 0x62, 0x9, 0x62, 0x4, 0x63, 0x9, 0x63, 0x4, 0x64, 0x9, 0x64, 0x3, 0x2, 0x3, 0x2, 0x7, 0x2, 0xcb, 0xa, 0x2, 0xc, 0x2, 0xe, 0x2, 0xce, 0xb, 0x2, 0x3, 0x2, 0x3, 0x2, 0x7, 0x2, 0xd2, 0xa, 0x2, 0xc, 0x2, 0xe, 0x2, 0xd5, 0xb, 0x2, 0x7, 0x2, 0xd7, 0xa, 0x2, 0xc, 0x2, 0xe, 0x2, 0xda, 0xb, 0x2, 0x3, 0x2, 0x3, 0x2, 0x3, 0x2, 0x5, 0x2, 0xdf, 0xa, 0x2, 0x3, 0x2, 0x7, 0x2, 0xe2, 0xa, 0x2, 0xc, 0x2, 0xe, 0x2, 0xe5, 0xb, 0x2, 0x7, 0x2, 0xe7, 0xa, 0x2, 0xc, 0x2, 0xe, 0x2, 0xea, 0xb, 0x2, 0x3, 0x2, 0x3, 0x2, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x4, 0x3, 0x4, 0x3, 0x4, 0x3, 0x4, 0x3, 0x4, 0x3, 0x4, 0x7, 0x4, 0xf7, 0xa, 0x4, 0xc, 0x4, 0xe, 0x4, 0xfa, 0xb, 0x4, 0x3, 0x4, 0x5, 0x4, 0xfd, 0xa, 0x4, 0x3, 0x5, 0x5, 0x5, 0x100, 0xa, 0x5, 0x3, 0x5, 0x3, 0x5, 0x3, 0x6, 0x3, 0x6, 0x3, 0x7, 0x3, 0x7, 0x3, 0x7, 0x5, 0x7, 0x109, 0xa, 0x7, 0x3, 0x8, 0x3, 0x8, 0x3, 0x8, 0x3, 0x8, 0x3, 0x8, 0x3, 0x8, 0x7, 0x8, 0x111, 0xa, 0x8, 0xc, 0x8, 0xe, 0x8, 0x114, 0xb, 0x8, 0x3, 0x8, 0x5, 0x8, 0x117, 0xa, 0x8, 0x3, 0x9, 0x3, 0x9, 0x5, 0x9, 0x11b, 0xa, 0x9, 0x3, 0x9, 0x3, 0x9, 0x5, 0x9, 0x11f, 0xa, 0x9, 0x3, 0xa, 0x3, 0xa, 0x3, 0xa, 0x7, 0xa, 0x124, 0xa, 0xa, 0xc, 0xa, 0xe, 0xa, 0x127, 0xb, 0xa, 0x3, 0xb, 0x3, 0xb, 0x3, 0xb, 0x7, 0xb, 0x12c, 0xa, 0xb, 0xc, 0xb, 0xe, 0xb, 0x12f, 0xb, 0xb, 0x3, 0xc, 0x3, 0xc, 0x3, 0xc, 0x3, 0xc, 0x3, 0xc, 0x3, 0xc, 0x7, 0xc, 0x137, 0xa, 0xc, 0xc, 0xc, 0xe, 0xc, 0x13a, 0xb, 0xc, 0x3, 0xc, 0x5, 0xc, 0x13d, 0xa, 0xc, 0x3, 0xd, 0x3, 0xd, 0x5, 0xd, 0x141, 0xa, 0xd, 0x3, 0xd, 0x3, 0xd, 0x3, 0xe, 0x3, 0xe, 0x3, 0xe, 0x3, 0xe, 0x5, 0xe, 0x149, 0xa, 0xe, 0x3, 0xf, 0x3, 0xf, 0x3, 0xf, 0x3, 0xf, 0x3, 0xf, 0x5, 0xf, 0x150, 0xa, 0xf, 0x3, 0x10, 0x3, 0x10, 0x3, 0x11, 0x3, 0x11, 0x3, 0x11, 0x3, 0x11, 0x3, 0x11, 0x3, 0x11, 0x7, 0x11, 0x15a, 0xa, 0x11, 0xc, 0x11, 0xe, 0x11, 0x15d, 0xb, 0x11, 0x3, 0x11, 0x5, 0x11, 0x160, 0xa, 0x11, 0x3, 0x12, 0x3, 0x12, 0x3, 0x12, 0x3, 0x12, 0x5, 0x12, 0x166, 0xa, 0x12, 0x3, 0x12, 0x3, 0x12, 0x5, 0x12, 0x16a, 0xa, 0x12, 0x3, 0x13, 0x3, 0x13, 0x7, 0x13, 0x16e, 0xa, 0x13, 0xc, 0x13, 0xe, 0x13, 0x171, 0xb, 0x13, 0x3, 0x13, 0x5, 0x13, 0x174, 0xa, 0x13, 0x3, 0x13, 0x3, 0x13, 0x3, 0x14, 0x3, 0x14, 0x6, 0x14, 0x17a, 0xa, 0x14, 0xd, 0x14, 0xe, 0x14, 0x17b, 0x6, 0x14, 0x17e, 0xa, 0x14, 0xd, 0x14, 0xe, 0x14, 0x17f, 0x3, 0x15, 0x3, 0x15, 0x3, 0x15, 0x3, 0x15, 0x3, 0x15, 0x3, 0x15, 0x3, 0x15, 0x3, 0x15, 0x3, 0x15, 0x3, 0x15, 0x3, 0x15, 0x3, 0x15, 0x3, 0x15, 0x3, 0x15, 0x3, 0x15, 0x5, 0x15, 0x191, 0xa, 0x15, 0x3, 0x16, 0x3, 0x16, 0x3, 0x16, 0x3, 0x16, 0x3, 0x16, 0x5, 0x16, 0x198, 0xa, 0x16, 0x3, 0x17, 0x3, 0x17, 0x3, 0x18, 0x3, 0x18, 0x3, 0x18, 0x3, 0x18, 0x3, 0x19, 0x3, 0x19, 0x3, 0x19, 0x3, 0x1a, 0x3, 0x1a, 0x3, 0x1a, 0x3, 0x1a, 0x3, 0x1b, 0x5, 0x1b, 0x1a8, 0xa, 0x1b, 0x3, 0x1b, 0x3, 0x1b, 0x3, 0x1c, 0x3, 0x1c, 0x3, 0x1c, 0x3, 0x1c, 0x3, 0x1d, 0x3, 0x1d, 0x3, 0x1e, 0x3, 0x1e, 0x3, 0x1e, 0x5, 0x1e, 0x1b5, 0xa, 0x1e, 0x3, 0x1f, 0x3, 0x1f, 0x5, 0x1f, 0x1b9, 0xa, 0x1f, 0x3, 0x20, 0x3, 0x20, 0x5, 0x20, 0x1bd, 0xa, 0x20, 0x3, 0x21, 0x3, 0x21, 0x5, 0x21, 0x1c1, 0xa, 0x21, 0x3, 0x22, 0x3, 0x22, 0x3, 0x22, 0x3, 0x23, 0x3, 0x23, 0x3, 0x24, 0x3, 0x24, 0x3, 0x24, 0x3, 0x25, 0x3, 0x25, 0x3, 0x25, 0x3, 0x25, 0x3, 0x25, 0x3, 0x25, 0x3, 0x25, 0x3, 0x25, 0x3, 0x25, 0x5, 0x25, 0x1d4, 0xa, 0x25, 0x3, 0x25, 0x3, 0x25, 0x3, 0x25, 0x3, 0x25, 0x5, 0x25, 0x1da, 0xa, 0x25, 0x5, 0x25, 0x1dc, 0xa, 0x25, 0x3, 0x26, 0x3, 0x26, 0x5, 0x26, 0x1e0, 0xa, 0x26, 0x3, 0x27, 0x3, 0x27, 0x5, 0x27, 0x1e4, 0xa, 0x27, 0x3, 0x27, 0x5, 0x27, 0x1e7, 0xa, 0x27, 0x3, 0x27, 0x3, 0x27, 0x5, 0x27, 0x1eb, 0xa, 0x27, 0x5, 0x27, 0x1ed, 0xa, 0x27, 0x3, 0x27, 0x3, 0x27, 0x7, 0x27, 0x1f1, 0xa, 0x27, 0xc, 0x27, 0xe, 0x27, 0x1f4, 0xb, 0x27, 0x3, 0x27, 0x3, 0x27, 0x3, 0x28, 0x3, 0x28, 0x3, 0x28, 0x5, 0x28, 0x1fb, 0xa, 0x28, 0x3, 0x29, 0x3, 0x29, 0x3, 0x29, 0x5, 0x29, 0x200, 0xa, 0x29, 0x3, 0x2a, 0x3, 0x2a, 0x3, 0x2a, 0x3, 0x2a, 0x3, 0x2a, 0x3, 0x2a, 0x3, 0x2a, 0x3, 0x2a, 0x3, 0x2a, 0x5, 0x2a, 0x20b, 0xa, 0x2a, 0x3, 0x2a, 0x3, 0x2a, 0x7, 0x2a, 0x20f, 0xa, 0x2a, 0xc, 0x2a, 0xe, 0x2a, 0x212, 0xb, 0x2a, 0x3, 0x2a, 0x3, 0x2a, 0x3, 0x2b, 0x3, 0x2b, 0x5, 0x2b, 0x218, 0xa, 0x2b, 0x3, 0x2b, 0x3, 0x2b, 0x3, 0x2b, 0x3, 0x2b, 0x3, 0x2b, 0x3, 0x2b, 0x3, 0x2c, 0x3, 0x2c, 0x3, 0x2c, 0x5, 0x2c, 0x223, 0xa, 0x2c, 0x3, 0x2d, 0x3, 0x2d, 0x3, 0x2d, 0x5, 0x2d, 0x228, 0xa, 0x2d, 0x3, 0x2e, 0x3, 0x2e, 0x5, 0x2e, 0x22c, 0xa, 0x2e, 0x3, 0x2e, 0x3, 0x2e, 0x3, 0x2e, 0x5, 0x2e, 0x231, 0xa, 0x2e, 0x7, 0x2e, 0x233, 0xa, 0x2e, 0xc, 0x2e, 0xe, 0x2e, 0x236, 0xb, 0x2e, 0x3, 0x2f, 0x3, 0x2f, 0x3, 0x2f, 0x7, 0x2f, 0x23b, 0xa, 0x2f, 0xc, 0x2f, 0xe, 0x2f, 0x23e, 0xb, 0x2f, 0x3, 0x2f, 0x3, 0x2f, 0x3, 0x30, 0x3, 0x30, 0x3, 0x30, 0x5, 0x30, 0x245, 0xa, 0x30, 0x3, 0x31, 0x3, 0x31, 0x3, 0x31, 0x5, 0x31, 0x24a, 0xa, 0x31, 0x3, 0x31, 0x5, 0x31, 0x24d, 0xa, 0x31, 0x3, 0x32, 0x3, 0x32, 0x3, 0x32, 0x3, 0x32, 0x3, 0x32, 0x3, 0x32, 0x5, 0x32, 0x255, 0xa, 0x32, 0x3, 0x32, 0x3, 0x32, 0x3, 0x33, 0x3, 0x33, 0x3, 0x33, 0x3, 0x33, 0x5, 0x33, 0x25d, 0xa, 0x33, 0x3, 0x33, 0x3, 0x33, 0x3, 0x34, 0x5, 0x34, 0x262, 0xa, 0x34, 0x3, 0x34, 0x3, 0x34, 0x5, 0x34, 0x266, 0xa, 0x34, 0x3, 0x34, 0x3, 0x34, 0x5, 0x34, 0x26a, 0xa, 0x34, 0x3, 0x35, 0x3, 0x35, 0x3, 0x35, 0x3, 0x35, 0x3, 0x35, 0x3, 0x35, 0x5, 0x35, 0x272, 0xa, 0x35, 0x3, 0x35, 0x3, 0x35, 0x3, 0x35, 0x3, 0x36, 0x3, 0x36, 0x3, 0x36, 0x3, 0x37, 0x3, 0x37, 0x3, 0x37, 0x3, 0x37, 0x3, 0x37, 0x3, 0x37, 0x5, 0x37, 0x280, 0xa, 0x37, 0x3, 0x38, 0x3, 0x38, 0x5, 0x38, 0x284, 0xa, 0x38, 0x3, 0x39, 0x3, 0x39, 0x3, 0x39, 0x3, 0x39, 0x3, 0x39, 0x3, 0x39, 0x3, 0x39, 0x3, 0x39, 0x5, 0x39, 0x28e, 0xa, 0x39, 0x3, 0x3a, 0x3, 0x3a, 0x3, 0x3a, 0x3, 0x3a, 0x3, 0x3a, 0x3, 0x3b, 0x3, 0x3b, 0x3, 0x3c, 0x3, 0x3c, 0x3, 0x3d, 0x3, 0x3d, 0x3, 0x3d, 0x3, 0x3e, 0x3, 0x3e, 0x3, 0x3e, 0x3, 0x3e, 0x5, 0x3e, 0x2a0, 0xa, 0x3e, 0x3, 0x3e, 0x3, 0x3e, 0x7, 0x3e, 0x2a4, 0xa, 0x3e, 0xc, 0x3e, 0xe, 0x3e, 0x2a7, 0xb, 0x3e, 0x3, 0x3e, 0x3, 0x3e, 0x3, 0x3f, 0x3, 0x3f, 0x3, 0x3f, 0x3, 0x3f, 0x3, 0x40, 0x3, 0x40, 0x3, 0x40, 0x3, 0x40, 0x3, 0x40, 0x3, 0x40, 0x3, 0x41, 0x3, 0x41, 0x3, 0x41, 0x3, 0x41, 0x3, 0x41, 0x5, 0x41, 0x2ba, 0xa, 0x41, 0x3, 0x41, 0x3, 0x41, 0x3, 0x42, 0x3, 0x42, 0x3, 0x42, 0x3, 0x42, 0x3, 0x42, 0x3, 0x42, 0x5, 0x42, 0x2c4, 0xa, 0x42, 0x3, 0x43, 0x3, 0x43, 0x3, 0x43, 0x3, 0x44, 0x3, 0x44, 0x3, 0x44, 0x3, 0x44, 0x5, 0x44, 0x2cd, 0xa, 0x44, 0x3, 0x45, 0x3, 0x45, 0x5, 0x45, 0x2d1, 0xa, 0x45, 0x3, 0x46, 0x3, 0x46, 0x3, 0x46, 0x3, 0x46, 0x7, 0x46, 0x2d7, 0xa, 0x46, 0xc, 0x46, 0xe, 0x46, 0x2da, 0xb, 0x46, 0x3, 0x46, 0x5, 0x46, 0x2dd, 0xa, 0x46, 0x5, 0x46, 0x2df, 0xa, 0x46, 0x3, 0x46, 0x3, 0x46, 0x3, 0x47, 0x5, 0x47, 0x2e4, 0xa, 0x47, 0x3, 0x47, 0x5, 0x47, 0x2e7, 0xa, 0x47, 0x3, 0x47, 0x3, 0x47, 0x3, 0x48, 0x3, 0x48, 0x3, 0x48, 0x3, 0x48, 0x5, 0x48, 0x2ef, 0xa, 0x48, 0x3, 0x48, 0x3, 0x48, 0x3, 0x48, 0x3, 0x48, 0x3, 0x48, 0x3, 0x48, 0x3, 0x48, 0x3, 0x48, 0x3, 0x48, 0x3, 0x48, 0x3, 0x48, 0x3, 0x48, 0x3, 0x48, 0x3, 0x48, 0x3, 0x48, 0x7, 0x48, 0x300, 0xa, 0x48, 0xc, 0x48, 0xe, 0x48, 0x303, 0xb, 0x48, 0x3, 0x49, 0x3, 0x49, 0x3, 0x49, 0x3, 0x49, 0x5, 0x49, 0x309, 0xa, 0x49, 0x3, 0x49, 0x3, 0x49, 0x3, 0x49, 0x3, 0x49, 0x3, 0x49, 0x3, 0x49, 0x3, 0x49, 0x5, 0x49, 0x312, 0xa, 0x49, 0x7, 0x49, 0x314, 0xa, 0x49, 0xc, 0x49, 0xe, 0x49, 0x317, 0xb, 0x49, 0x3, 0x4a, 0x3, 0x4a, 0x3, 0x4a, 0x3, 0x4a, 0x5, 0x4a, 0x31d, 0xa, 0x4a, 0x3, 0x4a, 0x3, 0x4a, 0x3, 0x4b, 0x3, 0x4b, 0x3, 0x4b, 0x3, 0x4b, 0x3, 0x4b, 0x5, 0x4b, 0x326, 0xa, 0x4b, 0x3, 0x4c, 0x3, 0x4c, 0x3, 0x4c, 0x3, 0x4c, 0x3, 0x4c, 0x3, 0x4c, 0x5, 0x4c, 0x32e, 0xa, 0x4c, 0x3, 0x4d, 0x3, 0x4d, 0x3, 0x4d, 0x5, 0x4d, 0x333, 0xa, 0x4d, 0x3, 0x4e, 0x3, 0x4e, 0x3, 0x4e, 0x3, 0x4e, 0x5, 0x4e, 0x339, 0xa, 0x4e, 0x3, 0x4f, 0x3, 0x4f, 0x3, 0x50, 0x3, 0x50, 0x3, 0x51, 0x3, 0x51, 0x3, 0x51, 0x3, 0x51, 0x3, 0x52, 0x3, 0x52, 0x3, 0x52, 0x3, 0x53, 0x3, 0x53, 0x3, 0x53, 0x3, 0x53, 0x3, 0x53, 0x3, 0x53, 0x3, 0x53, 0x3, 0x53, 0x3, 0x53, 0x5, 0x53, 0x34f, 0xa, 0x53, 0x3, 0x54, 0x3, 0x54, 0x3, 0x54, 0x5, 0x54, 0x354, 0xa, 0x54, 0x5, 0x54, 0x356, 0xa, 0x54, 0x3, 0x54, 0x3, 0x54, 0x3, 0x55, 0x3, 0x55, 0x3, 0x55, 0x7, 0x55, 0x35d, 0xa, 0x55, 0xc, 0x55, 0xe, 0x55, 0x360, 0xb, 0x55, 0x3, 0x56, 0x3, 0x56, 0x3, 0x56, 0x5, 0x56, 0x365, 0xa, 0x56, 0x3, 0x56, 0x3, 0x56, 0x3, 0x57, 0x3, 0x57, 0x5, 0x57, 0x36b, 0xa, 0x57, 0x3, 0x58, 0x3, 0x58, 0x5, 0x58, 0x36f, 0xa, 0x58, 0x3, 0x59, 0x3, 0x59, 0x3, 0x59, 0x3, 0x59, 0x3, 0x59, 0x7, 0x59, 0x376, 0xa, 0x59, 0xc, 0x59, 0xe, 0x59, 0x379, 0xb, 0x59, 0x3, 0x59, 0x3, 0x59, 0x3, 0x5a, 0x3, 0x5a, 0x3, 0x5a, 0x3, 0x5a, 0x5, 0x5a, 0x381, 0xa, 0x5a, 0x3, 0x5a, 0x5, 0x5a, 0x384, 0xa, 0x5a, 0x3, 0x5b, 0x3, 0x5b, 0x3, 0x5c, 0x5, 0x5c, 0x389, 0xa, 0x5c, 0x3, 0x5c, 0x3, 0x5c, 0x3, 0x5d, 0x3, 0x5d, 0x3, 0x5d, 0x3, 0x5d, 0x3, 0x5e, 0x3, 0x5e, 0x3, 0x5e, 0x3, 0x5e, 0x3, 0x5f, 0x3, 0x5f, 0x5, 0x5f, 0x397, 0xa, 0x5f, 0x3, 0x5f, 0x3, 0x5f, 0x5, 0x5f, 0x39b, 0xa, 0x5f, 0x3, 0x5f, 0x5, 0x5f, 0x39e, 0xa, 0x5f, 0x3, 0x5f, 0x3, 0x5f, 0x3, 0x5f, 0x3, 0x5f, 0x3, 0x5f, 0x5, 0x5f, 0x3a5, 0xa, 0x5f, 0x3, 0x5f, 0x3, 0x5f, 0x3, 0x60, 0x3, 0x60, 0x3, 0x60, 0x3, 0x60, 0x3, 0x60, 0x3, 0x61, 0x3, 0x61, 0x3, 0x61, 0x3, 0x61, 0x3, 0x61, 0x5, 0x61, 0x3b3, 0xa, 0x61, 0x5, 0x61, 0x3b5, 0xa, 0x61, 0x3, 0x61, 0x5, 0x61, 0x3b8, 0xa, 0x61, 0x3, 0x61, 0x5, 0x61, 0x3bb, 0xa, 0x61, 0x5, 0x61, 0x3bd, 0xa, 0x61, 0x3, 0x61, 0x3, 0x61, 0x3, 0x62, 0x3, 0x62, 0x3, 0x62, 0x3, 0x62, 0x3, 0x63, 0x3, 0x63, 0x3, 0x64, 0x3, 0x64, 0x3, 0x64, 0x2, 0x4, 0x8e, 0x90, 0x65, 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, 0x40, 0x42, 0x44, 0x46, 0x48, 0x4a, 0x4c, 0x4e, 0x50, 0x52, 0x54, 0x56, 0x58, 0x5a, 0x5c, 0x5e, 0x60, 0x62, 0x64, 0x66, 0x68, 0x6a, 0x6c, 0x6e, 0x70, 0x72, 0x74, 0x76, 0x78, 0x7a, 0x7c, 0x7e, 0x80, 0x82, 0x84, 0x86, 0x88, 0x8a, 0x8c, 0x8e, 0x90, 0x92, 0x94, 0x96, 0x98, 0x9a, 0x9c, 0x9e, 0xa0, 0xa2, 0xa4, 0xa6, 0xa8, 0xaa, 0xac, 0xae, 0xb0, 0xb2, 0xb4, 0xb6, 0xb8, 0xba, 0xbc, 0xbe, 0xc0, 0xc2, 0xc4, 0xc6, 0x2, 0xd, 0x4, 0x2, 0x1d, 0x1d, 0x2a, 0x2a, 0x3, 0x2, 0x2b, 0x2c, 0x4, 0x2, 0x38, 0x3d, 0x3f, 0x43, 0x4, 0x2, 0x26, 0x26, 0x2f, 0x2f, 0x3, 0x2, 0x3e, 0x44, 0x4, 0x2, 0x39, 0x3d, 0x42, 0x43, 0x4, 0x2, 0x38, 0x38, 0x3f, 0x41, 0x3, 0x2, 0x32, 0x37, 0x4, 0x2, 0x45, 0x48, 0x4c, 0x4d, 0x3, 0x2, 0x53, 0x54, 0x4, 0x2, 0x26, 0x28, 0x2f, 0x2f, 0x2, 0x402, 0x2, 0xc8, 0x3, 0x2, 0x2, 0x2, 0x4, 0xed, 0x3, 0x2, 0x2, 0x2, 0x6, 0xf0, 0x3, 0x2, 0x2, 0x2, 0x8, 0xff, 0x3, 0x2, 0x2, 0x2, 0xa, 0x103, 0x3, 0x2, 0x2, 0x2, 0xc, 0x108, 0x3, 0x2, 0x2, 0x2, 0xe, 0x10a, 0x3, 0x2, 0x2, 0x2, 0x10, 0x118, 0x3, 0x2, 0x2, 0x2, 0x12, 0x120, 0x3, 0x2, 0x2, 0x2, 0x14, 0x128, 0x3, 0x2, 0x2, 0x2, 0x16, 0x130, 0x3, 0x2, 0x2, 0x2, 0x18, 0x13e, 0x3, 0x2, 0x2, 0x2, 0x1a, 0x144, 0x3, 0x2, 0x2, 0x2, 0x1c, 0x14a, 0x3, 0x2, 0x2, 0x2, 0x1e, 0x151, 0x3, 0x2, 0x2, 0x2, 0x20, 0x153, 0x3, 0x2, 0x2, 0x2, 0x22, 0x161, 0x3, 0x2, 0x2, 0x2, 0x24, 0x16b, 0x3, 0x2, 0x2, 0x2, 0x26, 0x17d, 0x3, 0x2, 0x2, 0x2, 0x28, 0x190, 0x3, 0x2, 0x2, 0x2, 0x2a, 0x197, 0x3, 0x2, 0x2, 0x2, 0x2c, 0x199, 0x3, 0x2, 0x2, 0x2, 0x2e, 0x19b, 0x3, 0x2, 0x2, 0x2, 0x30, 0x19f, 0x3, 0x2, 0x2, 0x2, 0x32, 0x1a2, 0x3, 0x2, 0x2, 0x2, 0x34, 0x1a7, 0x3, 0x2, 0x2, 0x2, 0x36, 0x1ab, 0x3, 0x2, 0x2, 0x2, 0x38, 0x1af, 0x3, 0x2, 0x2, 0x2, 0x3a, 0x1b1, 0x3, 0x2, 0x2, 0x2, 0x3c, 0x1b6, 0x3, 0x2, 0x2, 0x2, 0x3e, 0x1ba, 0x3, 0x2, 0x2, 0x2, 0x40, 0x1be, 0x3, 0x2, 0x2, 0x2, 0x42, 0x1c2, 0x3, 0x2, 0x2, 0x2, 0x44, 0x1c5, 0x3, 0x2, 0x2, 0x2, 0x46, 0x1c7, 0x3, 0x2, 0x2, 0x2, 0x48, 0x1ca, 0x3, 0x2, 0x2, 0x2, 0x4a, 0x1df, 0x3, 0x2, 0x2, 0x2, 0x4c, 0x1e1, 0x3, 0x2, 0x2, 0x2, 0x4e, 0x1f7, 0x3, 0x2, 0x2, 0x2, 0x50, 0x1ff, 0x3, 0x2, 0x2, 0x2, 0x52, 0x201, 0x3, 0x2, 0x2, 0x2, 0x54, 0x217, 0x3, 0x2, 0x2, 0x2, 0x56, 0x21f, 0x3, 0x2, 0x2, 0x2, 0x58, 0x227, 0x3, 0x2, 0x2, 0x2, 0x5a, 0x22b, 0x3, 0x2, 0x2, 0x2, 0x5c, 0x237, 0x3, 0x2, 0x2, 0x2, 0x5e, 0x241, 0x3, 0x2, 0x2, 0x2, 0x60, 0x24c, 0x3, 0x2, 0x2, 0x2, 0x62, 0x254, 0x3, 0x2, 0x2, 0x2, 0x64, 0x258, 0x3, 0x2, 0x2, 0x2, 0x66, 0x261, 0x3, 0x2, 0x2, 0x2, 0x68, 0x271, 0x3, 0x2, 0x2, 0x2, 0x6a, 0x276, 0x3, 0x2, 0x2, 0x2, 0x6c, 0x27f, 0x3, 0x2, 0x2, 0x2, 0x6e, 0x283, 0x3, 0x2, 0x2, 0x2, 0x70, 0x28d, 0x3, 0x2, 0x2, 0x2, 0x72, 0x28f, 0x3, 0x2, 0x2, 0x2, 0x74, 0x294, 0x3, 0x2, 0x2, 0x2, 0x76, 0x296, 0x3, 0x2, 0x2, 0x2, 0x78, 0x298, 0x3, 0x2, 0x2, 0x2, 0x7a, 0x29b, 0x3, 0x2, 0x2, 0x2, 0x7c, 0x2aa, 0x3, 0x2, 0x2, 0x2, 0x7e, 0x2ae, 0x3, 0x2, 0x2, 0x2, 0x80, 0x2b9, 0x3, 0x2, 0x2, 0x2, 0x82, 0x2c3, 0x3, 0x2, 0x2, 0x2, 0x84, 0x2c5, 0x3, 0x2, 0x2, 0x2, 0x86, 0x2cc, 0x3, 0x2, 0x2, 0x2, 0x88, 0x2d0, 0x3, 0x2, 0x2, 0x2, 0x8a, 0x2d2, 0x3, 0x2, 0x2, 0x2, 0x8c, 0x2e3, 0x3, 0x2, 0x2, 0x2, 0x8e, 0x2ee, 0x3, 0x2, 0x2, 0x2, 0x90, 0x308, 0x3, 0x2, 0x2, 0x2, 0x92, 0x318, 0x3, 0x2, 0x2, 0x2, 0x94, 0x325, 0x3, 0x2, 0x2, 0x2, 0x96, 0x32d, 0x3, 0x2, 0x2, 0x2, 0x98, 0x332, 0x3, 0x2, 0x2, 0x2, 0x9a, 0x338, 0x3, 0x2, 0x2, 0x2, 0x9c, 0x33a, 0x3, 0x2, 0x2, 0x2, 0x9e, 0x33c, 0x3, 0x2, 0x2, 0x2, 0xa0, 0x33e, 0x3, 0x2, 0x2, 0x2, 0xa2, 0x342, 0x3, 0x2, 0x2, 0x2, 0xa4, 0x34e, 0x3, 0x2, 0x2, 0x2, 0xa6, 0x350, 0x3, 0x2, 0x2, 0x2, 0xa8, 0x359, 0x3, 0x2, 0x2, 0x2, 0xaa, 0x364, 0x3, 0x2, 0x2, 0x2, 0xac, 0x36a, 0x3, 0x2, 0x2, 0x2, 0xae, 0x36e, 0x3, 0x2, 0x2, 0x2, 0xb0, 0x370, 0x3, 0x2, 0x2, 0x2, 0xb2, 0x380, 0x3, 0x2, 0x2, 0x2, 0xb4, 0x385, 0x3, 0x2, 0x2, 0x2, 0xb6, 0x388, 0x3, 0x2, 0x2, 0x2, 0xb8, 0x38c, 0x3, 0x2, 0x2, 0x2, 0xba, 0x390, 0x3, 0x2, 0x2, 0x2, 0xbc, 0x394, 0x3, 0x2, 0x2, 0x2, 0xbe, 0x3a8, 0x3, 0x2, 0x2, 0x2, 0xc0, 0x3ad, 0x3, 0x2, 0x2, 0x2, 0xc2, 0x3c0, 0x3, 0x2, 0x2, 0x2, 0xc4, 0x3c4, 0x3, 0x2, 0x2, 0x2, 0xc6, 0x3c6, 0x3, 0x2, 0x2, 0x2, 0xc8, 0xcc, 0x5, 0x4, 0x3, 0x2, 0xc9, 0xcb, 0x5, 0xc6, 0x64, 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, 0xd8, 0x3, 0x2, 0x2, 0x2, 0xce, 0xcc, 0x3, 0x2, 0x2, 0x2, 0xcf, 0xd3, 0x5, 0x6, 0x4, 0x2, 0xd0, 0xd2, 0x5, 0xc6, 0x64, 0x2, 0xd1, 0xd0, 0x3, 0x2, 0x2, 0x2, 0xd2, 0xd5, 0x3, 0x2, 0x2, 0x2, 0xd3, 0xd1, 0x3, 0x2, 0x2, 0x2, 0xd3, 0xd4, 0x3, 0x2, 0x2, 0x2, 0xd4, 0xd7, 0x3, 0x2, 0x2, 0x2, 0xd5, 0xd3, 0x3, 0x2, 0x2, 0x2, 0xd6, 0xcf, 0x3, 0x2, 0x2, 0x2, 0xd7, 0xda, 0x3, 0x2, 0x2, 0x2, 0xd8, 0xd6, 0x3, 0x2, 0x2, 0x2, 0xd8, 0xd9, 0x3, 0x2, 0x2, 0x2, 0xd9, 0xe8, 0x3, 0x2, 0x2, 0x2, 0xda, 0xd8, 0x3, 0x2, 0x2, 0x2, 0xdb, 0xdf, 0x5, 0x1a, 0xe, 0x2, 0xdc, 0xdf, 0x5, 0x1c, 0xf, 0x2, 0xdd, 0xdf, 0x5, 0xc, 0x7, 0x2, 0xde, 0xdb, 0x3, 0x2, 0x2, 0x2, 0xde, 0xdc, 0x3, 0x2, 0x2, 0x2, 0xde, 0xdd, 0x3, 0x2, 0x2, 0x2, 0xdf, 0xe3, 0x3, 0x2, 0x2, 0x2, 0xe0, 0xe2, 0x5, 0xc6, 0x64, 0x2, 0xe1, 0xe0, 0x3, 0x2, 0x2, 0x2, 0xe2, 0xe5, 0x3, 0x2, 0x2, 0x2, 0xe3, 0xe1, 0x3, 0x2, 0x2, 0x2, 0xe3, 0xe4, 0x3, 0x2, 0x2, 0x2, 0xe4, 0xe7, 0x3, 0x2, 0x2, 0x2, 0xe5, 0xe3, 0x3, 0x2, 0x2, 0x2, 0xe6, 0xde, 0x3, 0x2, 0x2, 0x2, 0xe7, 0xea, 0x3, 0x2, 0x2, 0x2, 0xe8, 0xe6, 0x3, 0x2, 0x2, 0x2, 0xe8, 0xe9, 0x3, 0x2, 0x2, 0x2, 0xe9, 0xeb, 0x3, 0x2, 0x2, 0x2, 0xea, 0xe8, 0x3, 0x2, 0x2, 0x2, 0xeb, 0xec, 0x7, 0x2, 0x2, 0x3, 0xec, 0x3, 0x3, 0x2, 0x2, 0x2, 0xed, 0xee, 0x7, 0x10, 0x2, 0x2, 0xee, 0xef, 0x7, 0x1d, 0x2, 0x2, 0xef, 0x5, 0x3, 0x2, 0x2, 0x2, 0xf0, 0xfc, 0x7, 0x19, 0x2, 0x2, 0xf1, 0xfd, 0x5, 0x8, 0x5, 0x2, 0xf2, 0xf8, 0x7, 0x1e, 0x2, 0x2, 0xf3, 0xf4, 0x5, 0x8, 0x5, 0x2, 0xf4, 0xf5, 0x5, 0xc6, 0x64, 0x2, 0xf5, 0xf7, 0x3, 0x2, 0x2, 0x2, 0xf6, 0xf3, 0x3, 0x2, 0x2, 0x2, 0xf7, 0xfa, 0x3, 0x2, 0x2, 0x2, 0xf8, 0xf6, 0x3, 0x2, 0x2, 0x2, 0xf8, 0xf9, 0x3, 0x2, 0x2, 0x2, 0xf9, 0xfb, 0x3, 0x2, 0x2, 0x2, 0xfa, 0xf8, 0x3, 0x2, 0x2, 0x2, 0xfb, 0xfd, 0x7, 0x1f, 0x2, 0x2, 0xfc, 0xf1, 0x3, 0x2, 0x2, 0x2, 0xfc, 0xf2, 0x3, 0x2, 0x2, 0x2, 0xfd, 0x7, 0x3, 0x2, 0x2, 0x2, 0xfe, 0x100, 0x9, 0x2, 0x2, 0x2, 0xff, 0xfe, 0x3, 0x2, 0x2, 0x2, 0xff, 0x100, 0x3, 0x2, 0x2, 0x2, 0x100, 0x101, 0x3, 0x2, 0x2, 0x2, 0x101, 0x102, 0x5, 0xa, 0x6, 0x2, 0x102, 0x9, 0x3, 0x2, 0x2, 0x2, 0x103, 0x104, 0x5, 0xb4, 0x5b, 0x2, 0x104, 0xb, 0x3, 0x2, 0x2, 0x2, 0x105, 0x109, 0x5, 0xe, 0x8, 0x2, 0x106, 0x109, 0x5, 0x16, 0xc, 0x2, 0x107, 0x109, 0x5, 0x20, 0x11, 0x2, 0x108, 0x105, 0x3, 0x2, 0x2, 0x2, 0x108, 0x106, 0x3, 0x2, 0x2, 0x2, 0x108, 0x107, 0x3, 0x2, 0x2, 0x2, 0x109, 0xd, 0x3, 0x2, 0x2, 0x2, 0x10a, 0x116, 0x7, 0x12, 0x2, 0x2, 0x10b, 0x117, 0x5, 0x10, 0x9, 0x2, 0x10c, 0x112, 0x7, 0x1e, 0x2, 0x2, 0x10d, 0x10e, 0x5, 0x10, 0x9, 0x2, 0x10e, 0x10f, 0x5, 0xc6, 0x64, 0x2, 0x10f, 0x111, 0x3, 0x2, 0x2, 0x2, 0x110, 0x10d, 0x3, 0x2, 0x2, 0x2, 0x111, 0x114, 0x3, 0x2, 0x2, 0x2, 0x112, 0x110, 0x3, 0x2, 0x2, 0x2, 0x112, 0x113, 0x3, 0x2, 0x2, 0x2, 0x113, 0x115, 0x3, 0x2, 0x2, 0x2, 0x114, 0x112, 0x3, 0x2, 0x2, 0x2, 0x115, 0x117, 0x7, 0x1f, 0x2, 0x2, 0x116, 0x10b, 0x3, 0x2, 0x2, 0x2, 0x116, 0x10c, 0x3, 0x2, 0x2, 0x2, 0x117, 0xf, 0x3, 0x2, 0x2, 0x2, 0x118, 0x11e, 0x5, 0x12, 0xa, 0x2, 0x119, 0x11b, 0x5, 0x6c, 0x37, 0x2, 0x11a, 0x119, 0x3, 0x2, 0x2, 0x2, 0x11a, 0x11b, 0x3, 0x2, 0x2, 0x2, 0x11b, 0x11c, 0x3, 0x2, 0x2, 0x2, 0x11c, 0x11d, 0x7, 0x24, 0x2, 0x2, 0x11d, 0x11f, 0x5, 0x14, 0xb, 0x2, 0x11e, 0x11a, 0x3, 0x2, 0x2, 0x2, 0x11e, 0x11f, 0x3, 0x2, 0x2, 0x2, 0x11f, 0x11, 0x3, 0x2, 0x2, 0x2, 0x120, 0x125, 0x7, 0x1d, 0x2, 0x2, 0x121, 0x122, 0x7, 0x25, 0x2, 0x2, 0x122, 0x124, 0x7, 0x1d, 0x2, 0x2, 0x123, 0x121, 0x3, 0x2, 0x2, 0x2, 0x124, 0x127, 0x3, 0x2, 0x2, 0x2, 0x125, 0x123, 0x3, 0x2, 0x2, 0x2, 0x125, 0x126, 0x3, 0x2, 0x2, 0x2, 0x126, 0x13, 0x3, 0x2, 0x2, 0x2, 0x127, 0x125, 0x3, 0x2, 0x2, 0x2, 0x128, 0x12d, 0x5, 0x8e, 0x48, 0x2, 0x129, 0x12a, 0x7, 0x25, 0x2, 0x2, 0x12a, 0x12c, 0x5, 0x8e, 0x48, 0x2, 0x12b, 0x129, 0x3, 0x2, 0x2, 0x2, 0x12c, 0x12f, 0x3, 0x2, 0x2, 0x2, 0x12d, 0x12b, 0x3, 0x2, 0x2, 0x2, 0x12d, 0x12e, 0x3, 0x2, 0x2, 0x2, 0x12e, 0x15, 0x3, 0x2, 0x2, 0x2, 0x12f, 0x12d, 0x3, 0x2, 0x2, 0x2, 0x130, 0x13c, 0x7, 0x16, 0x2, 0x2, 0x131, 0x13d, 0x5, 0x18, 0xd, 0x2, 0x132, 0x138, 0x7, 0x1e, 0x2, 0x2, 0x133, 0x134, 0x5, 0x18, 0xd, 0x2, 0x134, 0x135, 0x5, 0xc6, 0x64, 0x2, 0x135, 0x137, 0x3, 0x2, 0x2, 0x2, 0x136, 0x133, 0x3, 0x2, 0x2, 0x2, 0x137, 0x13a, 0x3, 0x2, 0x2, 0x2, 0x138, 0x136, 0x3, 0x2, 0x2, 0x2, 0x138, 0x139, 0x3, 0x2, 0x2, 0x2, 0x139, 0x13b, 0x3, 0x2, 0x2, 0x2, 0x13a, 0x138, 0x3, 0x2, 0x2, 0x2, 0x13b, 0x13d, 0x7, 0x1f, 0x2, 0x2, 0x13c, 0x131, 0x3, 0x2, 0x2, 0x2, 0x13c, 0x132, 0x3, 0x2, 0x2, 0x2, 0x13d, 0x17, 0x3, 0x2, 0x2, 0x2, 0x13e, 0x140, 0x7, 0x1d, 0x2, 0x2, 0x13f, 0x141, 0x7, 0x24, 0x2, 0x2, 0x140, 0x13f, 0x3, 0x2, 0x2, 0x2, 0x140, 0x141, 0x3, 0x2, 0x2, 0x2, 0x141, 0x142, 0x3, 0x2, 0x2, 0x2, 0x142, 0x143, 0x5, 0x6c, 0x37, 0x2, 0x143, 0x19, 0x3, 0x2, 0x2, 0x2, 0x144, 0x145, 0x7, 0x5, 0x2, 0x2, 0x145, 0x146, 0x7, 0x1d, 0x2, 0x2, 0x146, 0x148, 0x5, 0x86, 0x44, 0x2, 0x147, 0x149, 0x5, 0x24, 0x13, 0x2, 0x148, 0x147, 0x3, 0x2, 0x2, 0x2, 0x148, 0x149, 0x3, 0x2, 0x2, 0x2, 0x149, 0x1b, 0x3, 0x2, 0x2, 0x2, 0x14a, 0x14b, 0x7, 0x5, 0x2, 0x2, 0x14b, 0x14c, 0x5, 0x1e, 0x10, 0x2, 0x14c, 0x14d, 0x7, 0x1d, 0x2, 0x2, 0x14d, 0x14f, 0x5, 0x86, 0x44, 0x2, 0x14e, 0x150, 0x5, 0x24, 0x13, 0x2, 0x14f, 0x14e, 0x3, 0x2, 0x2, 0x2, 0x14f, 0x150, 0x3, 0x2, 0x2, 0x2, 0x150, 0x1d, 0x3, 0x2, 0x2, 0x2, 0x151, 0x152, 0x5, 0x8a, 0x46, 0x2, 0x152, 0x1f, 0x3, 0x2, 0x2, 0x2, 0x153, 0x15f, 0x7, 0x1b, 0x2, 0x2, 0x154, 0x160, 0x5, 0x22, 0x12, 0x2, 0x155, 0x15b, 0x7, 0x1e, 0x2, 0x2, 0x156, 0x157, 0x5, 0x22, 0x12, 0x2, 0x157, 0x158, 0x5, 0xc6, 0x64, 0x2, 0x158, 0x15a, 0x3, 0x2, 0x2, 0x2, 0x159, 0x156, 0x3, 0x2, 0x2, 0x2, 0x15a, 0x15d, 0x3, 0x2, 0x2, 0x2, 0x15b, 0x159, 0x3, 0x2, 0x2, 0x2, 0x15b, 0x15c, 0x3, 0x2, 0x2, 0x2, 0x15c, 0x15e, 0x3, 0x2, 0x2, 0x2, 0x15d, 0x15b, 0x3, 0x2, 0x2, 0x2, 0x15e, 0x160, 0x7, 0x1f, 0x2, 0x2, 0x15f, 0x154, 0x3, 0x2, 0x2, 0x2, 0x15f, 0x155, 0x3, 0x2, 0x2, 0x2, 0x160, 0x21, 0x3, 0x2, 0x2, 0x2, 0x161, 0x169, 0x5, 0x12, 0xa, 0x2, 0x162, 0x165, 0x5, 0x6c, 0x37, 0x2, 0x163, 0x164, 0x7, 0x24, 0x2, 0x2, 0x164, 0x166, 0x5, 0x14, 0xb, 0x2, 0x165, 0x163, 0x3, 0x2, 0x2, 0x2, 0x165, 0x166, 0x3, 0x2, 0x2, 0x2, 0x166, 0x16a, 0x3, 0x2, 0x2, 0x2, 0x167, 0x168, 0x7, 0x24, 0x2, 0x2, 0x168, 0x16a, 0x5, 0x14, 0xb, 0x2, 0x169, 0x162, 0x3, 0x2, 0x2, 0x2, 0x169, 0x167, 0x3, 0x2, 0x2, 0x2, 0x16a, 0x23, 0x3, 0x2, 0x2, 0x2, 0x16b, 0x16f, 0x7, 0x20, 0x2, 0x2, 0x16c, 0x16e, 0x5, 0xc6, 0x64, 0x2, 0x16d, 0x16c, 0x3, 0x2, 0x2, 0x2, 0x16e, 0x171, 0x3, 0x2, 0x2, 0x2, 0x16f, 0x16d, 0x3, 0x2, 0x2, 0x2, 0x16f, 0x170, 0x3, 0x2, 0x2, 0x2, 0x170, 0x173, 0x3, 0x2, 0x2, 0x2, 0x171, 0x16f, 0x3, 0x2, 0x2, 0x2, 0x172, 0x174, 0x5, 0x26, 0x14, 0x2, 0x173, 0x172, 0x3, 0x2, 0x2, 0x2, 0x173, 0x174, 0x3, 0x2, 0x2, 0x2, 0x174, 0x175, 0x3, 0x2, 0x2, 0x2, 0x175, 0x176, 0x7, 0x21, 0x2, 0x2, 0x176, 0x25, 0x3, 0x2, 0x2, 0x2, 0x177, 0x179, 0x5, 0x28, 0x15, 0x2, 0x178, 0x17a, 0x5, 0xc6, 0x64, 0x2, 0x179, 0x178, 0x3, 0x2, 0x2, 0x2, 0x17a, 0x17b, 0x3, 0x2, 0x2, 0x2, 0x17b, 0x179, 0x3, 0x2, 0x2, 0x2, 0x17b, 0x17c, 0x3, 0x2, 0x2, 0x2, 0x17c, 0x17e, 0x3, 0x2, 0x2, 0x2, 0x17d, 0x177, 0x3, 0x2, 0x2, 0x2, 0x17e, 0x17f, 0x3, 0x2, 0x2, 0x2, 0x17f, 0x17d, 0x3, 0x2, 0x2, 0x2, 0x17f, 0x180, 0x3, 0x2, 0x2, 0x2, 0x180, 0x27, 0x3, 0x2, 0x2, 0x2, 0x181, 0x191, 0x5, 0xc, 0x7, 0x2, 0x182, 0x191, 0x5, 0x3a, 0x1e, 0x2, 0x183, 0x191, 0x5, 0x2a, 0x16, 0x2, 0x184, 0x191, 0x5, 0x6a, 0x36, 0x2, 0x185, 0x191, 0x5, 0x3c, 0x1f, 0x2, 0x186, 0x191, 0x5, 0x3e, 0x20, 0x2, 0x187, 0x191, 0x5, 0x40, 0x21, 0x2, 0x188, 0x191, 0x5, 0x42, 0x22, 0x2, 0x189, 0x191, 0x5, 0x44, 0x23, 0x2, 0x18a, 0x191, 0x5, 0x24, 0x13, 0x2, 0x18b, 0x191, 0x5, 0x48, 0x25, 0x2, 0x18c, 0x191, 0x5, 0x4a, 0x26, 0x2, 0x18d, 0x191, 0x5, 0x5c, 0x2f, 0x2, 0x18e, 0x191, 0x5, 0x64, 0x33, 0x2, 0x18f, 0x191, 0x5, 0x46, 0x24, 0x2, 0x190, 0x181, 0x3, 0x2, 0x2, 0x2, 0x190, 0x182, 0x3, 0x2, 0x2, 0x2, 0x190, 0x183, 0x3, 0x2, 0x2, 0x2, 0x190, 0x184, 0x3, 0x2, 0x2, 0x2, 0x190, 0x185, 0x3, 0x2, 0x2, 0x2, 0x190, 0x186, 0x3, 0x2, 0x2, 0x2, 0x190, 0x187, 0x3, 0x2, 0x2, 0x2, 0x190, 0x188, 0x3, 0x2, 0x2, 0x2, 0x190, 0x189, 0x3, 0x2, 0x2, 0x2, 0x190, 0x18a, 0x3, 0x2, 0x2, 0x2, 0x190, 0x18b, 0x3, 0x2, 0x2, 0x2, 0x190, 0x18c, 0x3, 0x2, 0x2, 0x2, 0x190, 0x18d, 0x3, 0x2, 0x2, 0x2, 0x190, 0x18e, 0x3, 0x2, 0x2, 0x2, 0x190, 0x18f, 0x3, 0x2, 0x2, 0x2, 0x191, 0x29, 0x3, 0x2, 0x2, 0x2, 0x192, 0x198, 0x5, 0x2e, 0x18, 0x2, 0x193, 0x198, 0x5, 0x30, 0x19, 0x2, 0x194, 0x198, 0x5, 0x32, 0x1a, 0x2, 0x195, 0x198, 0x5, 0x2c, 0x17, 0x2, 0x196, 0x198, 0x5, 0x36, 0x1c, 0x2, 0x197, 0x192, 0x3, 0x2, 0x2, 0x2, 0x197, 0x193, 0x3, 0x2, 0x2, 0x2, 0x197, 0x194, 0x3, 0x2, 0x2, 0x2, 0x197, 0x195, 0x3, 0x2, 0x2, 0x2, 0x197, 0x196, 0x3, 0x2, 0x2, 0x2, 0x198, 0x2b, 0x3, 0x2, 0x2, 0x2, 0x199, 0x19a, 0x5, 0x8e, 0x48, 0x2, 0x19a, 0x2d, 0x3, 0x2, 0x2, 0x2, 0x19b, 0x19c, 0x5, 0x8e, 0x48, 0x2, 0x19c, 0x19d, 0x7, 0x44, 0x2, 0x2, 0x19d, 0x19e, 0x5, 0x8e, 0x48, 0x2, 0x19e, 0x2f, 0x3, 0x2, 0x2, 0x2, 0x19f, 0x1a0, 0x5, 0x8e, 0x48, 0x2, 0x1a0, 0x1a1, 0x9, 0x3, 0x2, 0x2, 0x1a1, 0x31, 0x3, 0x2, 0x2, 0x2, 0x1a2, 0x1a3, 0x5, 0x14, 0xb, 0x2, 0x1a3, 0x1a4, 0x5, 0x34, 0x1b, 0x2, 0x1a4, 0x1a5, 0x5, 0x14, 0xb, 0x2, 0x1a5, 0x33, 0x3, 0x2, 0x2, 0x2, 0x1a6, 0x1a8, 0x9, 0x4, 0x2, 0x2, 0x1a7, 0x1a6, 0x3, 0x2, 0x2, 0x2, 0x1a7, 0x1a8, 0x3, 0x2, 0x2, 0x2, 0x1a8, 0x1a9, 0x3, 0x2, 0x2, 0x2, 0x1a9, 0x1aa, 0x7, 0x24, 0x2, 0x2, 0x1aa, 0x35, 0x3, 0x2, 0x2, 0x2, 0x1ab, 0x1ac, 0x5, 0x12, 0xa, 0x2, 0x1ac, 0x1ad, 0x7, 0x2d, 0x2, 0x2, 0x1ad, 0x1ae, 0x5, 0x14, 0xb, 0x2, 0x1ae, 0x37, 0x3, 0x2, 0x2, 0x2, 0x1af, 0x1b0, 0x9, 0x5, 0x2, 0x2, 0x1b0, 0x39, 0x3, 0x2, 0x2, 0x2, 0x1b1, 0x1b2, 0x7, 0x1d, 0x2, 0x2, 0x1b2, 0x1b4, 0x7, 0x29, 0x2, 0x2, 0x1b3, 0x1b5, 0x5, 0x28, 0x15, 0x2, 0x1b4, 0x1b3, 0x3, 0x2, 0x2, 0x2, 0x1b4, 0x1b5, 0x3, 0x2, 0x2, 0x2, 0x1b5, 0x3b, 0x3, 0x2, 0x2, 0x2, 0x1b6, 0x1b8, 0x7, 0x1a, 0x2, 0x2, 0x1b7, 0x1b9, 0x5, 0x14, 0xb, 0x2, 0x1b8, 0x1b7, 0x3, 0x2, 0x2, 0x2, 0x1b8, 0x1b9, 0x3, 0x2, 0x2, 0x2, 0x1b9, 0x3d, 0x3, 0x2, 0x2, 0x2, 0x1ba, 0x1bc, 0x7, 0x3, 0x2, 0x2, 0x1bb, 0x1bd, 0x7, 0x1d, 0x2, 0x2, 0x1bc, 0x1bb, 0x3, 0x2, 0x2, 0x2, 0x1bc, 0x1bd, 0x3, 0x2, 0x2, 0x2, 0x1bd, 0x3f, 0x3, 0x2, 0x2, 0x2, 0x1be, 0x1c0, 0x7, 0x17, 0x2, 0x2, 0x1bf, 0x1c1, 0x7, 0x1d, 0x2, 0x2, 0x1c0, 0x1bf, 0x3, 0x2, 0x2, 0x2, 0x1c0, 0x1c1, 0x3, 0x2, 0x2, 0x2, 0x1c1, 0x41, 0x3, 0x2, 0x2, 0x2, 0x1c2, 0x1c3, 0x7, 0xf, 0x2, 0x2, 0x1c3, 0x1c4, 0x7, 0x1d, 0x2, 0x2, 0x1c4, 0x43, 0x3, 0x2, 0x2, 0x2, 0x1c5, 0x1c6, 0x7, 0x13, 0x2, 0x2, 0x1c6, 0x45, 0x3, 0x2, 0x2, 0x2, 0x1c7, 0x1c8, 0x7, 0x9, 0x2, 0x2, 0x1c8, 0x1c9, 0x5, 0x8e, 0x48, 0x2, 0x1c9, 0x47, 0x3, 0x2, 0x2, 0x2, 0x1ca, 0x1d3, 0x7, 0x14, 0x2, 0x2, 0x1cb, 0x1d4, 0x5, 0x8e, 0x48, 0x2, 0x1cc, 0x1cd, 0x5, 0xc6, 0x64, 0x2, 0x1cd, 0x1ce, 0x5, 0x8e, 0x48, 0x2, 0x1ce, 0x1d4, 0x3, 0x2, 0x2, 0x2, 0x1cf, 0x1d0, 0x5, 0x2a, 0x16, 0x2, 0x1d0, 0x1d1, 0x5, 0xc6, 0x64, 0x2, 0x1d1, 0x1d2, 0x5, 0x8e, 0x48, 0x2, 0x1d2, 0x1d4, 0x3, 0x2, 0x2, 0x2, 0x1d3, 0x1cb, 0x3, 0x2, 0x2, 0x2, 0x1d3, 0x1cc, 0x3, 0x2, 0x2, 0x2, 0x1d3, 0x1cf, 0x3, 0x2, 0x2, 0x2, 0x1d4, 0x1d5, 0x3, 0x2, 0x2, 0x2, 0x1d5, 0x1db, 0x5, 0x24, 0x13, 0x2, 0x1d6, 0x1d9, 0x7, 0xe, 0x2, 0x2, 0x1d7, 0x1da, 0x5, 0x48, 0x25, 0x2, 0x1d8, 0x1da, 0x5, 0x24, 0x13, 0x2, 0x1d9, 0x1d7, 0x3, 0x2, 0x2, 0x2, 0x1d9, 0x1d8, 0x3, 0x2, 0x2, 0x2, 0x1da, 0x1dc, 0x3, 0x2, 0x2, 0x2, 0x1db, 0x1d6, 0x3, 0x2, 0x2, 0x2, 0x1db, 0x1dc, 0x3, 0x2, 0x2, 0x2, 0x1dc, 0x49, 0x3, 0x2, 0x2, 0x2, 0x1dd, 0x1e0, 0x5, 0x4c, 0x27, 0x2, 0x1de, 0x1e0, 0x5, 0x52, 0x2a, 0x2, 0x1df, 0x1dd, 0x3, 0x2, 0x2, 0x2, 0x1df, 0x1de, 0x3, 0x2, 0x2, 0x2, 0x1e0, 0x4b, 0x3, 0x2, 0x2, 0x2, 0x1e1, 0x1ec, 0x7, 0x11, 0x2, 0x2, 0x1e2, 0x1e4, 0x5, 0x8e, 0x48, 0x2, 0x1e3, 0x1e2, 0x3, 0x2, 0x2, 0x2, 0x1e3, 0x1e4, 0x3, 0x2, 0x2, 0x2, 0x1e4, 0x1ed, 0x3, 0x2, 0x2, 0x2, 0x1e5, 0x1e7, 0x5, 0x2a, 0x16, 0x2, 0x1e6, 0x1e5, 0x3, 0x2, 0x2, 0x2, 0x1e6, 0x1e7, 0x3, 0x2, 0x2, 0x2, 0x1e7, 0x1e8, 0x3, 0x2, 0x2, 0x2, 0x1e8, 0x1ea, 0x5, 0xc6, 0x64, 0x2, 0x1e9, 0x1eb, 0x5, 0x8e, 0x48, 0x2, 0x1ea, 0x1e9, 0x3, 0x2, 0x2, 0x2, 0x1ea, 0x1eb, 0x3, 0x2, 0x2, 0x2, 0x1eb, 0x1ed, 0x3, 0x2, 0x2, 0x2, 0x1ec, 0x1e3, 0x3, 0x2, 0x2, 0x2, 0x1ec, 0x1e6, 0x3, 0x2, 0x2, 0x2, 0x1ed, 0x1ee, 0x3, 0x2, 0x2, 0x2, 0x1ee, 0x1f2, 0x7, 0x20, 0x2, 0x2, 0x1ef, 0x1f1, 0x5, 0x4e, 0x28, 0x2, 0x1f0, 0x1ef, 0x3, 0x2, 0x2, 0x2, 0x1f1, 0x1f4, 0x3, 0x2, 0x2, 0x2, 0x1f2, 0x1f0, 0x3, 0x2, 0x2, 0x2, 0x1f2, 0x1f3, 0x3, 0x2, 0x2, 0x2, 0x1f3, 0x1f5, 0x3, 0x2, 0x2, 0x2, 0x1f4, 0x1f2, 0x3, 0x2, 0x2, 0x2, 0x1f5, 0x1f6, 0x7, 0x21, 0x2, 0x2, 0x1f6, 0x4d, 0x3, 0x2, 0x2, 0x2, 0x1f7, 0x1f8, 0x5, 0x50, 0x29, 0x2, 0x1f8, 0x1fa, 0x7, 0x29, 0x2, 0x2, 0x1f9, 0x1fb, 0x5, 0x26, 0x14, 0x2, 0x1fa, 0x1f9, 0x3, 0x2, 0x2, 0x2, 0x1fa, 0x1fb, 0x3, 0x2, 0x2, 0x2, 0x1fb, 0x4f, 0x3, 0x2, 0x2, 0x2, 0x1fc, 0x1fd, 0x7, 0x8, 0x2, 0x2, 0x1fd, 0x200, 0x5, 0x14, 0xb, 0x2, 0x1fe, 0x200, 0x7, 0x4, 0x2, 0x2, 0x1ff, 0x1fc, 0x3, 0x2, 0x2, 0x2, 0x1ff, 0x1fe, 0x3, 0x2, 0x2, 0x2, 0x200, 0x51, 0x3, 0x2, 0x2, 0x2, 0x201, 0x20a, 0x7, 0x11, 0x2, 0x2, 0x202, 0x20b, 0x5, 0x54, 0x2b, 0x2, 0x203, 0x204, 0x5, 0xc6, 0x64, 0x2, 0x204, 0x205, 0x5, 0x54, 0x2b, 0x2, 0x205, 0x20b, 0x3, 0x2, 0x2, 0x2, 0x206, 0x207, 0x5, 0x2a, 0x16, 0x2, 0x207, 0x208, 0x5, 0xc6, 0x64, 0x2, 0x208, 0x209, 0x5, 0x54, 0x2b, 0x2, 0x209, 0x20b, 0x3, 0x2, 0x2, 0x2, 0x20a, 0x202, 0x3, 0x2, 0x2, 0x2, 0x20a, 0x203, 0x3, 0x2, 0x2, 0x2, 0x20a, 0x206, 0x3, 0x2, 0x2, 0x2, 0x20b, 0x20c, 0x3, 0x2, 0x2, 0x2, 0x20c, 0x210, 0x7, 0x20, 0x2, 0x2, 0x20d, 0x20f, 0x5, 0x56, 0x2c, 0x2, 0x20e, 0x20d, 0x3, 0x2, 0x2, 0x2, 0x20f, 0x212, 0x3, 0x2, 0x2, 0x2, 0x210, 0x20e, 0x3, 0x2, 0x2, 0x2, 0x210, 0x211, 0x3, 0x2, 0x2, 0x2, 0x211, 0x213, 0x3, 0x2, 0x2, 0x2, 0x212, 0x210, 0x3, 0x2, 0x2, 0x2, 0x213, 0x214, 0x7, 0x21, 0x2, 0x2, 0x214, 0x53, 0x3, 0x2, 0x2, 0x2, 0x215, 0x216, 0x7, 0x1d, 0x2, 0x2, 0x216, 0x218, 0x7, 0x2d, 0x2, 0x2, 0x217, 0x215, 0x3, 0x2, 0x2, 0x2, 0x217, 0x218, 0x3, 0x2, 0x2, 0x2, 0x218, 0x219, 0x3, 0x2, 0x2, 0x2, 0x219, 0x21a, 0x5, 0x90, 0x49, 0x2, 0x21a, 0x21b, 0x7, 0x2a, 0x2, 0x2, 0x21b, 0x21c, 0x7, 0x1e, 0x2, 0x2, 0x21c, 0x21d, 0x7, 0x16, 0x2, 0x2, 0x21d, 0x21e, 0x7, 0x1f, 0x2, 0x2, 0x21e, 0x55, 0x3, 0x2, 0x2, 0x2, 0x21f, 0x220, 0x5, 0x58, 0x2d, 0x2, 0x220, 0x222, 0x7, 0x29, 0x2, 0x2, 0x221, 0x223, 0x5, 0x26, 0x14, 0x2, 0x222, 0x221, 0x3, 0x2, 0x2, 0x2, 0x222, 0x223, 0x3, 0x2, 0x2, 0x2, 0x223, 0x57, 0x3, 0x2, 0x2, 0x2, 0x224, 0x225, 0x7, 0x8, 0x2, 0x2, 0x225, 0x228, 0x5, 0x5a, 0x2e, 0x2, 0x226, 0x228, 0x7, 0x4, 0x2, 0x2, 0x227, 0x224, 0x3, 0x2, 0x2, 0x2, 0x227, 0x226, 0x3, 0x2, 0x2, 0x2, 0x228, 0x59, 0x3, 0x2, 0x2, 0x2, 0x229, 0x22c, 0x5, 0x6c, 0x37, 0x2, 0x22a, 0x22c, 0x7, 0x1c, 0x2, 0x2, 0x22b, 0x229, 0x3, 0x2, 0x2, 0x2, 0x22b, 0x22a, 0x3, 0x2, 0x2, 0x2, 0x22c, 0x234, 0x3, 0x2, 0x2, 0x2, 0x22d, 0x230, 0x7, 0x25, 0x2, 0x2, 0x22e, 0x231, 0x5, 0x6c, 0x37, 0x2, 0x22f, 0x231, 0x7, 0x1c, 0x2, 0x2, 0x230, 0x22e, 0x3, 0x2, 0x2, 0x2, 0x230, 0x22f, 0x3, 0x2, 0x2, 0x2, 0x231, 0x233, 0x3, 0x2, 0x2, 0x2, 0x232, 0x22d, 0x3, 0x2, 0x2, 0x2, 0x233, 0x236, 0x3, 0x2, 0x2, 0x2, 0x234, 0x232, 0x3, 0x2, 0x2, 0x2, 0x234, 0x235, 0x3, 0x2, 0x2, 0x2, 0x235, 0x5b, 0x3, 0x2, 0x2, 0x2, 0x236, 0x234, 0x3, 0x2, 0x2, 0x2, 0x237, 0x238, 0x7, 0x7, 0x2, 0x2, 0x238, 0x23c, 0x7, 0x20, 0x2, 0x2, 0x239, 0x23b, 0x5, 0x5e, 0x30, 0x2, 0x23a, 0x239, 0x3, 0x2, 0x2, 0x2, 0x23b, 0x23e, 0x3, 0x2, 0x2, 0x2, 0x23c, 0x23a, 0x3, 0x2, 0x2, 0x2, 0x23c, 0x23d, 0x3, 0x2, 0x2, 0x2, 0x23d, 0x23f, 0x3, 0x2, 0x2, 0x2, 0x23e, 0x23c, 0x3, 0x2, 0x2, 0x2, 0x23f, 0x240, 0x7, 0x21, 0x2, 0x2, 0x240, 0x5d, 0x3, 0x2, 0x2, 0x2, 0x241, 0x242, 0x5, 0x60, 0x31, 0x2, 0x242, 0x244, 0x7, 0x29, 0x2, 0x2, 0x243, 0x245, 0x5, 0x26, 0x14, 0x2, 0x244, 0x243, 0x3, 0x2, 0x2, 0x2, 0x244, 0x245, 0x3, 0x2, 0x2, 0x2, 0x245, 0x5f, 0x3, 0x2, 0x2, 0x2, 0x246, 0x249, 0x7, 0x8, 0x2, 0x2, 0x247, 0x24a, 0x5, 0x2e, 0x18, 0x2, 0x248, 0x24a, 0x5, 0x62, 0x32, 0x2, 0x249, 0x247, 0x3, 0x2, 0x2, 0x2, 0x249, 0x248, 0x3, 0x2, 0x2, 0x2, 0x24a, 0x24d, 0x3, 0x2, 0x2, 0x2, 0x24b, 0x24d, 0x7, 0x4, 0x2, 0x2, 0x24c, 0x246, 0x3, 0x2, 0x2, 0x2, 0x24c, 0x24b, 0x3, 0x2, 0x2, 0x2, 0x24d, 0x61, 0x3, 0x2, 0x2, 0x2, 0x24e, 0x24f, 0x5, 0x14, 0xb, 0x2, 0x24f, 0x250, 0x7, 0x24, 0x2, 0x2, 0x250, 0x255, 0x3, 0x2, 0x2, 0x2, 0x251, 0x252, 0x5, 0x12, 0xa, 0x2, 0x252, 0x253, 0x7, 0x2d, 0x2, 0x2, 0x253, 0x255, 0x3, 0x2, 0x2, 0x2, 0x254, 0x24e, 0x3, 0x2, 0x2, 0x2, 0x254, 0x251, 0x3, 0x2, 0x2, 0x2, 0x254, 0x255, 0x3, 0x2, 0x2, 0x2, 0x255, 0x256, 0x3, 0x2, 0x2, 0x2, 0x256, 0x257, 0x5, 0x8e, 0x48, 0x2, 0x257, 0x63, 0x3, 0x2, 0x2, 0x2, 0x258, 0x25c, 0x7, 0x18, 0x2, 0x2, 0x259, 0x25d, 0x5, 0x8e, 0x48, 0x2, 0x25a, 0x25d, 0x5, 0x66, 0x34, 0x2, 0x25b, 0x25d, 0x5, 0x68, 0x35, 0x2, 0x25c, 0x259, 0x3, 0x2, 0x2, 0x2, 0x25c, 0x25a, 0x3, 0x2, 0x2, 0x2, 0x25c, 0x25b, 0x3, 0x2, 0x2, 0x2, 0x25c, 0x25d, 0x3, 0x2, 0x2, 0x2, 0x25d, 0x25e, 0x3, 0x2, 0x2, 0x2, 0x25e, 0x25f, 0x5, 0x24, 0x13, 0x2, 0x25f, 0x65, 0x3, 0x2, 0x2, 0x2, 0x260, 0x262, 0x5, 0x2a, 0x16, 0x2, 0x261, 0x260, 0x3, 0x2, 0x2, 0x2, 0x261, 0x262, 0x3, 0x2, 0x2, 0x2, 0x262, 0x263, 0x3, 0x2, 0x2, 0x2, 0x263, 0x265, 0x5, 0xc6, 0x64, 0x2, 0x264, 0x266, 0x5, 0x8e, 0x48, 0x2, 0x265, 0x264, 0x3, 0x2, 0x2, 0x2, 0x265, 0x266, 0x3, 0x2, 0x2, 0x2, 0x266, 0x267, 0x3, 0x2, 0x2, 0x2, 0x267, 0x269, 0x5, 0xc6, 0x64, 0x2, 0x268, 0x26a, 0x5, 0x2a, 0x16, 0x2, 0x269, 0x268, 0x3, 0x2, 0x2, 0x2, 0x269, 0x26a, 0x3, 0x2, 0x2, 0x2, 0x26a, 0x67, 0x3, 0x2, 0x2, 0x2, 0x26b, 0x26c, 0x5, 0x14, 0xb, 0x2, 0x26c, 0x26d, 0x7, 0x24, 0x2, 0x2, 0x26d, 0x272, 0x3, 0x2, 0x2, 0x2, 0x26e, 0x26f, 0x5, 0x12, 0xa, 0x2, 0x26f, 0x270, 0x7, 0x2d, 0x2, 0x2, 0x270, 0x272, 0x3, 0x2, 0x2, 0x2, 0x271, 0x26b, 0x3, 0x2, 0x2, 0x2, 0x271, 0x26e, 0x3, 0x2, 0x2, 0x2, 0x271, 0x272, 0x3, 0x2, 0x2, 0x2, 0x272, 0x273, 0x3, 0x2, 0x2, 0x2, 0x273, 0x274, 0x7, 0x15, 0x2, 0x2, 0x274, 0x275, 0x5, 0x8e, 0x48, 0x2, 0x275, 0x69, 0x3, 0x2, 0x2, 0x2, 0x276, 0x277, 0x7, 0xa, 0x2, 0x2, 0x277, 0x278, 0x5, 0x8e, 0x48, 0x2, 0x278, 0x6b, 0x3, 0x2, 0x2, 0x2, 0x279, 0x280, 0x5, 0x6e, 0x38, 0x2, 0x27a, 0x280, 0x5, 0x70, 0x39, 0x2, 0x27b, 0x27c, 0x7, 0x1e, 0x2, 0x2, 0x27c, 0x27d, 0x5, 0x6c, 0x37, 0x2, 0x27d, 0x27e, 0x7, 0x1f, 0x2, 0x2, 0x27e, 0x280, 0x3, 0x2, 0x2, 0x2, 0x27f, 0x279, 0x3, 0x2, 0x2, 0x2, 0x27f, 0x27a, 0x3, 0x2, 0x2, 0x2, 0x27f, 0x27b, 0x3, 0x2, 0x2, 0x2, 0x280, 0x6d, 0x3, 0x2, 0x2, 0x2, 0x281, 0x284, 0x5, 0xa0, 0x51, 0x2, 0x282, 0x284, 0x7, 0x1d, 0x2, 0x2, 0x283, 0x281, 0x3, 0x2, 0x2, 0x2, 0x283, 0x282, 0x3, 0x2, 0x2, 0x2, 0x284, 0x6f, 0x3, 0x2, 0x2, 0x2, 0x285, 0x28e, 0x5, 0x72, 0x3a, 0x2, 0x286, 0x28e, 0x5, 0xb0, 0x59, 0x2, 0x287, 0x28e, 0x5, 0x78, 0x3d, 0x2, 0x288, 0x28e, 0x5, 0x84, 0x43, 0x2, 0x289, 0x28e, 0x5, 0x7a, 0x3e, 0x2, 0x28a, 0x28e, 0x5, 0x7c, 0x3f, 0x2, 0x28b, 0x28e, 0x5, 0x7e, 0x40, 0x2, 0x28c, 0x28e, 0x5, 0x80, 0x41, 0x2, 0x28d, 0x285, 0x3, 0x2, 0x2, 0x2, 0x28d, 0x286, 0x3, 0x2, 0x2, 0x2, 0x28d, 0x287, 0x3, 0x2, 0x2, 0x2, 0x28d, 0x288, 0x3, 0x2, 0x2, 0x2, 0x28d, 0x289, 0x3, 0x2, 0x2, 0x2, 0x28d, 0x28a, 0x3, 0x2, 0x2, 0x2, 0x28d, 0x28b, 0x3, 0x2, 0x2, 0x2, 0x28d, 0x28c, 0x3, 0x2, 0x2, 0x2, 0x28e, 0x71, 0x3, 0x2, 0x2, 0x2, 0x28f, 0x290, 0x7, 0x22, 0x2, 0x2, 0x290, 0x291, 0x5, 0x74, 0x3b, 0x2, 0x291, 0x292, 0x7, 0x23, 0x2, 0x2, 0x292, 0x293, 0x5, 0x76, 0x3c, 0x2, 0x293, 0x73, 0x3, 0x2, 0x2, 0x2, 0x294, 0x295, 0x5, 0x8e, 0x48, 0x2, 0x295, 0x75, 0x3, 0x2, 0x2, 0x2, 0x296, 0x297, 0x5, 0x6c, 0x37, 0x2, 0x297, 0x77, 0x3, 0x2, 0x2, 0x2, 0x298, 0x299, 0x7, 0x42, 0x2, 0x2, 0x299, 0x29a, 0x5, 0x6c, 0x37, 0x2, 0x29a, 0x79, 0x3, 0x2, 0x2, 0x2, 0x29b, 0x29c, 0x7, 0x6, 0x2, 0x2, 0x29c, 0x2a5, 0x7, 0x20, 0x2, 0x2, 0x29d, 0x2a0, 0x5, 0x82, 0x42, 0x2, 0x29e, 0x2a0, 0x5, 0x6e, 0x38, 0x2, 0x29f, 0x29d, 0x3, 0x2, 0x2, 0x2, 0x29f, 0x29e, 0x3, 0x2, 0x2, 0x2, 0x2a0, 0x2a1, 0x3, 0x2, 0x2, 0x2, 0x2a1, 0x2a2, 0x5, 0xc6, 0x64, 0x2, 0x2a2, 0x2a4, 0x3, 0x2, 0x2, 0x2, 0x2a3, 0x29f, 0x3, 0x2, 0x2, 0x2, 0x2a4, 0x2a7, 0x3, 0x2, 0x2, 0x2, 0x2a5, 0x2a3, 0x3, 0x2, 0x2, 0x2, 0x2a5, 0x2a6, 0x3, 0x2, 0x2, 0x2, 0x2a6, 0x2a8, 0x3, 0x2, 0x2, 0x2, 0x2a7, 0x2a5, 0x3, 0x2, 0x2, 0x2, 0x2a8, 0x2a9, 0x7, 0x21, 0x2, 0x2, 0x2a9, 0x7b, 0x3, 0x2, 0x2, 0x2, 0x2aa, 0x2ab, 0x7, 0x22, 0x2, 0x2, 0x2ab, 0x2ac, 0x7, 0x23, 0x2, 0x2, 0x2ac, 0x2ad, 0x5, 0x76, 0x3c, 0x2, 0x2ad, 0x7d, 0x3, 0x2, 0x2, 0x2, 0x2ae, 0x2af, 0x7, 0xb, 0x2, 0x2, 0x2af, 0x2b0, 0x7, 0x22, 0x2, 0x2, 0x2b0, 0x2b1, 0x5, 0x6c, 0x37, 0x2, 0x2b1, 0x2b2, 0x7, 0x23, 0x2, 0x2, 0x2b2, 0x2b3, 0x5, 0x76, 0x3c, 0x2, 0x2b3, 0x7f, 0x3, 0x2, 0x2, 0x2, 0x2b4, 0x2ba, 0x7, 0xd, 0x2, 0x2, 0x2b5, 0x2b6, 0x7, 0xd, 0x2, 0x2, 0x2b6, 0x2ba, 0x7, 0x44, 0x2, 0x2, 0x2b7, 0x2b8, 0x7, 0x44, 0x2, 0x2, 0x2b8, 0x2ba, 0x7, 0xd, 0x2, 0x2, 0x2b9, 0x2b4, 0x3, 0x2, 0x2, 0x2, 0x2b9, 0x2b5, 0x3, 0x2, 0x2, 0x2, 0x2b9, 0x2b7, 0x3, 0x2, 0x2, 0x2, 0x2ba, 0x2bb, 0x3, 0x2, 0x2, 0x2, 0x2bb, 0x2bc, 0x5, 0x76, 0x3c, 0x2, 0x2bc, 0x81, 0x3, 0x2, 0x2, 0x2, 0x2bd, 0x2be, 0x7, 0x1d, 0x2, 0x2, 0x2be, 0x2bf, 0x5, 0x8a, 0x46, 0x2, 0x2bf, 0x2c0, 0x5, 0x88, 0x45, 0x2, 0x2c0, 0x2c4, 0x3, 0x2, 0x2, 0x2, 0x2c1, 0x2c2, 0x7, 0x1d, 0x2, 0x2, 0x2c2, 0x2c4, 0x5, 0x8a, 0x46, 0x2, 0x2c3, 0x2bd, 0x3, 0x2, 0x2, 0x2, 0x2c3, 0x2c1, 0x3, 0x2, 0x2, 0x2, 0x2c4, 0x83, 0x3, 0x2, 0x2, 0x2, 0x2c5, 0x2c6, 0x7, 0x5, 0x2, 0x2, 0x2c6, 0x2c7, 0x5, 0x86, 0x44, 0x2, 0x2c7, 0x85, 0x3, 0x2, 0x2, 0x2, 0x2c8, 0x2c9, 0x5, 0x8a, 0x46, 0x2, 0x2c9, 0x2ca, 0x5, 0x88, 0x45, 0x2, 0x2ca, 0x2cd, 0x3, 0x2, 0x2, 0x2, 0x2cb, 0x2cd, 0x5, 0x8a, 0x46, 0x2, 0x2cc, 0x2c8, 0x3, 0x2, 0x2, 0x2, 0x2cc, 0x2cb, 0x3, 0x2, 0x2, 0x2, 0x2cd, 0x87, 0x3, 0x2, 0x2, 0x2, 0x2ce, 0x2d1, 0x5, 0x8a, 0x46, 0x2, 0x2cf, 0x2d1, 0x5, 0x6c, 0x37, 0x2, 0x2d0, 0x2ce, 0x3, 0x2, 0x2, 0x2, 0x2d0, 0x2cf, 0x3, 0x2, 0x2, 0x2, 0x2d1, 0x89, 0x3, 0x2, 0x2, 0x2, 0x2d2, 0x2de, 0x7, 0x1e, 0x2, 0x2, 0x2d3, 0x2d8, 0x5, 0x8c, 0x47, 0x2, 0x2d4, 0x2d5, 0x7, 0x25, 0x2, 0x2, 0x2d5, 0x2d7, 0x5, 0x8c, 0x47, 0x2, 0x2d6, 0x2d4, 0x3, 0x2, 0x2, 0x2, 0x2d7, 0x2da, 0x3, 0x2, 0x2, 0x2, 0x2d8, 0x2d6, 0x3, 0x2, 0x2, 0x2, 0x2d8, 0x2d9, 0x3, 0x2, 0x2, 0x2, 0x2d9, 0x2dc, 0x3, 0x2, 0x2, 0x2, 0x2da, 0x2d8, 0x3, 0x2, 0x2, 0x2, 0x2db, 0x2dd, 0x7, 0x25, 0x2, 0x2, 0x2dc, 0x2db, 0x3, 0x2, 0x2, 0x2, 0x2dc, 0x2dd, 0x3, 0x2, 0x2, 0x2, 0x2dd, 0x2df, 0x3, 0x2, 0x2, 0x2, 0x2de, 0x2d3, 0x3, 0x2, 0x2, 0x2, 0x2de, 0x2df, 0x3, 0x2, 0x2, 0x2, 0x2df, 0x2e0, 0x3, 0x2, 0x2, 0x2, 0x2e0, 0x2e1, 0x7, 0x1f, 0x2, 0x2, 0x2e1, 0x8b, 0x3, 0x2, 0x2, 0x2, 0x2e2, 0x2e4, 0x5, 0x12, 0xa, 0x2, 0x2e3, 0x2e2, 0x3, 0x2, 0x2, 0x2, 0x2e3, 0x2e4, 0x3, 0x2, 0x2, 0x2, 0x2e4, 0x2e6, 0x3, 0x2, 0x2, 0x2, 0x2e5, 0x2e7, 0x7, 0x2e, 0x2, 0x2, 0x2e6, 0x2e5, 0x3, 0x2, 0x2, 0x2, 0x2e6, 0x2e7, 0x3, 0x2, 0x2, 0x2, 0x2e7, 0x2e8, 0x3, 0x2, 0x2, 0x2, 0x2e8, 0x2e9, 0x5, 0x6c, 0x37, 0x2, 0x2e9, 0x8d, 0x3, 0x2, 0x2, 0x2, 0x2ea, 0x2eb, 0x8, 0x48, 0x1, 0x2, 0x2eb, 0x2ef, 0x5, 0x90, 0x49, 0x2, 0x2ec, 0x2ed, 0x9, 0x6, 0x2, 0x2, 0x2ed, 0x2ef, 0x5, 0x8e, 0x48, 0x8, 0x2ee, 0x2ea, 0x3, 0x2, 0x2, 0x2, 0x2ee, 0x2ec, 0x3, 0x2, 0x2, 0x2, 0x2ef, 0x301, 0x3, 0x2, 0x2, 0x2, 0x2f0, 0x2f1, 0xc, 0x7, 0x2, 0x2, 0x2f1, 0x2f2, 0x9, 0x7, 0x2, 0x2, 0x2f2, 0x300, 0x5, 0x8e, 0x48, 0x8, 0x2f3, 0x2f4, 0xc, 0x6, 0x2, 0x2, 0x2f4, 0x2f5, 0x9, 0x8, 0x2, 0x2, 0x2f5, 0x300, 0x5, 0x8e, 0x48, 0x7, 0x2f6, 0x2f7, 0xc, 0x5, 0x2, 0x2, 0x2f7, 0x2f8, 0x9, 0x9, 0x2, 0x2, 0x2f8, 0x300, 0x5, 0x8e, 0x48, 0x6, 0x2f9, 0x2fa, 0xc, 0x4, 0x2, 0x2, 0x2fa, 0x2fb, 0x7, 0x31, 0x2, 0x2, 0x2fb, 0x300, 0x5, 0x8e, 0x48, 0x5, 0x2fc, 0x2fd, 0xc, 0x3, 0x2, 0x2, 0x2fd, 0x2fe, 0x7, 0x30, 0x2, 0x2, 0x2fe, 0x300, 0x5, 0x8e, 0x48, 0x4, 0x2ff, 0x2f0, 0x3, 0x2, 0x2, 0x2, 0x2ff, 0x2f3, 0x3, 0x2, 0x2, 0x2, 0x2ff, 0x2f6, 0x3, 0x2, 0x2, 0x2, 0x2ff, 0x2f9, 0x3, 0x2, 0x2, 0x2, 0x2ff, 0x2fc, 0x3, 0x2, 0x2, 0x2, 0x300, 0x303, 0x3, 0x2, 0x2, 0x2, 0x301, 0x2ff, 0x3, 0x2, 0x2, 0x2, 0x301, 0x302, 0x3, 0x2, 0x2, 0x2, 0x302, 0x8f, 0x3, 0x2, 0x2, 0x2, 0x303, 0x301, 0x3, 0x2, 0x2, 0x2, 0x304, 0x305, 0x8, 0x49, 0x1, 0x2, 0x305, 0x309, 0x5, 0x96, 0x4c, 0x2, 0x306, 0x309, 0x5, 0x92, 0x4a, 0x2, 0x307, 0x309, 0x5, 0xc2, 0x62, 0x2, 0x308, 0x304, 0x3, 0x2, 0x2, 0x2, 0x308, 0x306, 0x3, 0x2, 0x2, 0x2, 0x308, 0x307, 0x3, 0x2, 0x2, 0x2, 0x309, 0x315, 0x3, 0x2, 0x2, 0x2, 0x30a, 0x311, 0xc, 0x3, 0x2, 0x2, 0x30b, 0x30c, 0x7, 0x2a, 0x2, 0x2, 0x30c, 0x312, 0x7, 0x1d, 0x2, 0x2, 0x30d, 0x312, 0x5, 0xba, 0x5e, 0x2, 0x30e, 0x312, 0x5, 0xbc, 0x5f, 0x2, 0x30f, 0x312, 0x5, 0xbe, 0x60, 0x2, 0x310, 0x312, 0x5, 0xc0, 0x61, 0x2, 0x311, 0x30b, 0x3, 0x2, 0x2, 0x2, 0x311, 0x30d, 0x3, 0x2, 0x2, 0x2, 0x311, 0x30e, 0x3, 0x2, 0x2, 0x2, 0x311, 0x30f, 0x3, 0x2, 0x2, 0x2, 0x311, 0x310, 0x3, 0x2, 0x2, 0x2, 0x312, 0x314, 0x3, 0x2, 0x2, 0x2, 0x313, 0x30a, 0x3, 0x2, 0x2, 0x2, 0x314, 0x317, 0x3, 0x2, 0x2, 0x2, 0x315, 0x313, 0x3, 0x2, 0x2, 0x2, 0x315, 0x316, 0x3, 0x2, 0x2, 0x2, 0x316, 0x91, 0x3, 0x2, 0x2, 0x2, 0x317, 0x315, 0x3, 0x2, 0x2, 0x2, 0x318, 0x319, 0x5, 0x94, 0x4b, 0x2, 0x319, 0x31a, 0x7, 0x1e, 0x2, 0x2, 0x31a, 0x31c, 0x5, 0x8e, 0x48, 0x2, 0x31b, 0x31d, 0x7, 0x25, 0x2, 0x2, 0x31c, 0x31b, 0x3, 0x2, 0x2, 0x2, 0x31c, 0x31d, 0x3, 0x2, 0x2, 0x2, 0x31d, 0x31e, 0x3, 0x2, 0x2, 0x2, 0x31e, 0x31f, 0x7, 0x1f, 0x2, 0x2, 0x31f, 0x93, 0x3, 0x2, 0x2, 0x2, 0x320, 0x326, 0x5, 0x70, 0x39, 0x2, 0x321, 0x322, 0x7, 0x1e, 0x2, 0x2, 0x322, 0x323, 0x5, 0x94, 0x4b, 0x2, 0x323, 0x324, 0x7, 0x1f, 0x2, 0x2, 0x324, 0x326, 0x3, 0x2, 0x2, 0x2, 0x325, 0x320, 0x3, 0x2, 0x2, 0x2, 0x325, 0x321, 0x3, 0x2, 0x2, 0x2, 0x326, 0x95, 0x3, 0x2, 0x2, 0x2, 0x327, 0x32e, 0x5, 0x98, 0x4d, 0x2, 0x328, 0x32e, 0x5, 0x9e, 0x50, 0x2, 0x329, 0x32a, 0x7, 0x1e, 0x2, 0x2, 0x32a, 0x32b, 0x5, 0x8e, 0x48, 0x2, 0x32b, 0x32c, 0x7, 0x1f, 0x2, 0x2, 0x32c, 0x32e, 0x3, 0x2, 0x2, 0x2, 0x32d, 0x327, 0x3, 0x2, 0x2, 0x2, 0x32d, 0x328, 0x3, 0x2, 0x2, 0x2, 0x32d, 0x329, 0x3, 0x2, 0x2, 0x2, 0x32e, 0x97, 0x3, 0x2, 0x2, 0x2, 0x32f, 0x333, 0x5, 0x9a, 0x4e, 0x2, 0x330, 0x333, 0x5, 0xa2, 0x52, 0x2, 0x331, 0x333, 0x5, 0xb8, 0x5d, 0x2, 0x332, 0x32f, 0x3, 0x2, 0x2, 0x2, 0x332, 0x330, 0x3, 0x2, 0x2, 0x2, 0x332, 0x331, 0x3, 0x2, 0x2, 0x2, 0x333, 0x99, 0x3, 0x2, 0x2, 0x2, 0x334, 0x339, 0x7, 0x1c, 0x2, 0x2, 0x335, 0x339, 0x5, 0x9c, 0x4f, 0x2, 0x336, 0x339, 0x5, 0xb4, 0x5b, 0x2, 0x337, 0x339, 0x7, 0x49, 0x2, 0x2, 0x338, 0x334, 0x3, 0x2, 0x2, 0x2, 0x338, 0x335, 0x3, 0x2, 0x2, 0x2, 0x338, 0x336, 0x3, 0x2, 0x2, 0x2, 0x338, 0x337, 0x3, 0x2, 0x2, 0x2, 0x339, 0x9b, 0x3, 0x2, 0x2, 0x2, 0x33a, 0x33b, 0x9, 0xa, 0x2, 0x2, 0x33b, 0x9d, 0x3, 0x2, 0x2, 0x2, 0x33c, 0x33d, 0x7, 0x1d, 0x2, 0x2, 0x33d, 0x9f, 0x3, 0x2, 0x2, 0x2, 0x33e, 0x33f, 0x7, 0x1d, 0x2, 0x2, 0x33f, 0x340, 0x7, 0x2a, 0x2, 0x2, 0x340, 0x341, 0x7, 0x1d, 0x2, 0x2, 0x341, 0xa1, 0x3, 0x2, 0x2, 0x2, 0x342, 0x343, 0x5, 0xa4, 0x53, 0x2, 0x343, 0x344, 0x5, 0xa6, 0x54, 0x2, 0x344, 0xa3, 0x3, 0x2, 0x2, 0x2, 0x345, 0x34f, 0x5, 0xb0, 0x59, 0x2, 0x346, 0x34f, 0x5, 0x72, 0x3a, 0x2, 0x347, 0x348, 0x7, 0x22, 0x2, 0x2, 0x348, 0x349, 0x7, 0x2e, 0x2, 0x2, 0x349, 0x34a, 0x7, 0x23, 0x2, 0x2, 0x34a, 0x34f, 0x5, 0x76, 0x3c, 0x2, 0x34b, 0x34f, 0x5, 0x7c, 0x3f, 0x2, 0x34c, 0x34f, 0x5, 0x7e, 0x40, 0x2, 0x34d, 0x34f, 0x5, 0x6e, 0x38, 0x2, 0x34e, 0x345, 0x3, 0x2, 0x2, 0x2, 0x34e, 0x346, 0x3, 0x2, 0x2, 0x2, 0x34e, 0x347, 0x3, 0x2, 0x2, 0x2, 0x34e, 0x34b, 0x3, 0x2, 0x2, 0x2, 0x34e, 0x34c, 0x3, 0x2, 0x2, 0x2, 0x34e, 0x34d, 0x3, 0x2, 0x2, 0x2, 0x34f, 0xa5, 0x3, 0x2, 0x2, 0x2, 0x350, 0x355, 0x7, 0x20, 0x2, 0x2, 0x351, 0x353, 0x5, 0xa8, 0x55, 0x2, 0x352, 0x354, 0x7, 0x25, 0x2, 0x2, 0x353, 0x352, 0x3, 0x2, 0x2, 0x2, 0x353, 0x354, 0x3, 0x2, 0x2, 0x2, 0x354, 0x356, 0x3, 0x2, 0x2, 0x2, 0x355, 0x351, 0x3, 0x2, 0x2, 0x2, 0x355, 0x356, 0x3, 0x2, 0x2, 0x2, 0x356, 0x357, 0x3, 0x2, 0x2, 0x2, 0x357, 0x358, 0x7, 0x21, 0x2, 0x2, 0x358, 0xa7, 0x3, 0x2, 0x2, 0x2, 0x359, 0x35e, 0x5, 0xaa, 0x56, 0x2, 0x35a, 0x35b, 0x7, 0x25, 0x2, 0x2, 0x35b, 0x35d, 0x5, 0xaa, 0x56, 0x2, 0x35c, 0x35a, 0x3, 0x2, 0x2, 0x2, 0x35d, 0x360, 0x3, 0x2, 0x2, 0x2, 0x35e, 0x35c, 0x3, 0x2, 0x2, 0x2, 0x35e, 0x35f, 0x3, 0x2, 0x2, 0x2, 0x35f, 0xa9, 0x3, 0x2, 0x2, 0x2, 0x360, 0x35e, 0x3, 0x2, 0x2, 0x2, 0x361, 0x362, 0x5, 0xac, 0x57, 0x2, 0x362, 0x363, 0x7, 0x29, 0x2, 0x2, 0x363, 0x365, 0x3, 0x2, 0x2, 0x2, 0x364, 0x361, 0x3, 0x2, 0x2, 0x2, 0x364, 0x365, 0x3, 0x2, 0x2, 0x2, 0x365, 0x366, 0x3, 0x2, 0x2, 0x2, 0x366, 0x367, 0x5, 0xae, 0x58, 0x2, 0x367, 0xab, 0x3, 0x2, 0x2, 0x2, 0x368, 0x36b, 0x5, 0x8e, 0x48, 0x2, 0x369, 0x36b, 0x5, 0xa6, 0x54, 0x2, 0x36a, 0x368, 0x3, 0x2, 0x2, 0x2, 0x36a, 0x369, 0x3, 0x2, 0x2, 0x2, 0x36b, 0xad, 0x3, 0x2, 0x2, 0x2, 0x36c, 0x36f, 0x5, 0x8e, 0x48, 0x2, 0x36d, 0x36f, 0x5, 0xa6, 0x54, 0x2, 0x36e, 0x36c, 0x3, 0x2, 0x2, 0x2, 0x36e, 0x36d, 0x3, 0x2, 0x2, 0x2, 0x36f, 0xaf, 0x3, 0x2, 0x2, 0x2, 0x370, 0x371, 0x7, 0xc, 0x2, 0x2, 0x371, 0x377, 0x7, 0x20, 0x2, 0x2, 0x372, 0x373, 0x5, 0xb2, 0x5a, 0x2, 0x373, 0x374, 0x5, 0xc6, 0x64, 0x2, 0x374, 0x376, 0x3, 0x2, 0x2, 0x2, 0x375, 0x372, 0x3, 0x2, 0x2, 0x2, 0x376, 0x379, 0x3, 0x2, 0x2, 0x2, 0x377, 0x375, 0x3, 0x2, 0x2, 0x2, 0x377, 0x378, 0x3, 0x2, 0x2, 0x2, 0x378, 0x37a, 0x3, 0x2, 0x2, 0x2, 0x379, 0x377, 0x3, 0x2, 0x2, 0x2, 0x37a, 0x37b, 0x7, 0x21, 0x2, 0x2, 0x37b, 0xb1, 0x3, 0x2, 0x2, 0x2, 0x37c, 0x37d, 0x5, 0x12, 0xa, 0x2, 0x37d, 0x37e, 0x5, 0x6c, 0x37, 0x2, 0x37e, 0x381, 0x3, 0x2, 0x2, 0x2, 0x37f, 0x381, 0x5, 0xb6, 0x5c, 0x2, 0x380, 0x37c, 0x3, 0x2, 0x2, 0x2, 0x380, 0x37f, 0x3, 0x2, 0x2, 0x2, 0x381, 0x383, 0x3, 0x2, 0x2, 0x2, 0x382, 0x384, 0x5, 0xb4, 0x5b, 0x2, 0x383, 0x382, 0x3, 0x2, 0x2, 0x2, 0x383, 0x384, 0x3, 0x2, 0x2, 0x2, 0x384, 0xb3, 0x3, 0x2, 0x2, 0x2, 0x385, 0x386, 0x9, 0xb, 0x2, 0x2, 0x386, 0xb5, 0x3, 0x2, 0x2, 0x2, 0x387, 0x389, 0x7, 0x42, 0x2, 0x2, 0x388, 0x387, 0x3, 0x2, 0x2, 0x2, 0x388, 0x389, 0x3, 0x2, 0x2, 0x2, 0x389, 0x38a, 0x3, 0x2, 0x2, 0x2, 0x38a, 0x38b, 0x5, 0x6e, 0x38, 0x2, 0x38b, 0xb7, 0x3, 0x2, 0x2, 0x2, 0x38c, 0x38d, 0x7, 0x5, 0x2, 0x2, 0x38d, 0x38e, 0x5, 0x86, 0x44, 0x2, 0x38e, 0x38f, 0x5, 0x24, 0x13, 0x2, 0x38f, 0xb9, 0x3, 0x2, 0x2, 0x2, 0x390, 0x391, 0x7, 0x22, 0x2, 0x2, 0x391, 0x392, 0x5, 0x8e, 0x48, 0x2, 0x392, 0x393, 0x7, 0x23, 0x2, 0x2, 0x393, 0xbb, 0x3, 0x2, 0x2, 0x2, 0x394, 0x3a4, 0x7, 0x22, 0x2, 0x2, 0x395, 0x397, 0x5, 0x8e, 0x48, 0x2, 0x396, 0x395, 0x3, 0x2, 0x2, 0x2, 0x396, 0x397, 0x3, 0x2, 0x2, 0x2, 0x397, 0x398, 0x3, 0x2, 0x2, 0x2, 0x398, 0x39a, 0x7, 0x29, 0x2, 0x2, 0x399, 0x39b, 0x5, 0x8e, 0x48, 0x2, 0x39a, 0x399, 0x3, 0x2, 0x2, 0x2, 0x39a, 0x39b, 0x3, 0x2, 0x2, 0x2, 0x39b, 0x3a5, 0x3, 0x2, 0x2, 0x2, 0x39c, 0x39e, 0x5, 0x8e, 0x48, 0x2, 0x39d, 0x39c, 0x3, 0x2, 0x2, 0x2, 0x39d, 0x39e, 0x3, 0x2, 0x2, 0x2, 0x39e, 0x39f, 0x3, 0x2, 0x2, 0x2, 0x39f, 0x3a0, 0x7, 0x29, 0x2, 0x2, 0x3a0, 0x3a1, 0x5, 0x8e, 0x48, 0x2, 0x3a1, 0x3a2, 0x7, 0x29, 0x2, 0x2, 0x3a2, 0x3a3, 0x5, 0x8e, 0x48, 0x2, 0x3a3, 0x3a5, 0x3, 0x2, 0x2, 0x2, 0x3a4, 0x396, 0x3, 0x2, 0x2, 0x2, 0x3a4, 0x39d, 0x3, 0x2, 0x2, 0x2, 0x3a5, 0x3a6, 0x3, 0x2, 0x2, 0x2, 0x3a6, 0x3a7, 0x7, 0x23, 0x2, 0x2, 0x3a7, 0xbd, 0x3, 0x2, 0x2, 0x2, 0x3a8, 0x3a9, 0x7, 0x2a, 0x2, 0x2, 0x3a9, 0x3aa, 0x7, 0x1e, 0x2, 0x2, 0x3aa, 0x3ab, 0x5, 0x6c, 0x37, 0x2, 0x3ab, 0x3ac, 0x7, 0x1f, 0x2, 0x2, 0x3ac, 0xbf, 0x3, 0x2, 0x2, 0x2, 0x3ad, 0x3bc, 0x7, 0x1e, 0x2, 0x2, 0x3ae, 0x3b5, 0x5, 0x14, 0xb, 0x2, 0x3af, 0x3b2, 0x5, 0x94, 0x4b, 0x2, 0x3b0, 0x3b1, 0x7, 0x25, 0x2, 0x2, 0x3b1, 0x3b3, 0x5, 0x14, 0xb, 0x2, 0x3b2, 0x3b0, 0x3, 0x2, 0x2, 0x2, 0x3b2, 0x3b3, 0x3, 0x2, 0x2, 0x2, 0x3b3, 0x3b5, 0x3, 0x2, 0x2, 0x2, 0x3b4, 0x3ae, 0x3, 0x2, 0x2, 0x2, 0x3b4, 0x3af, 0x3, 0x2, 0x2, 0x2, 0x3b5, 0x3b7, 0x3, 0x2, 0x2, 0x2, 0x3b6, 0x3b8, 0x7, 0x2e, 0x2, 0x2, 0x3b7, 0x3b6, 0x3, 0x2, 0x2, 0x2, 0x3b7, 0x3b8, 0x3, 0x2, 0x2, 0x2, 0x3b8, 0x3ba, 0x3, 0x2, 0x2, 0x2, 0x3b9, 0x3bb, 0x7, 0x25, 0x2, 0x2, 0x3ba, 0x3b9, 0x3, 0x2, 0x2, 0x2, 0x3ba, 0x3bb, 0x3, 0x2, 0x2, 0x2, 0x3bb, 0x3bd, 0x3, 0x2, 0x2, 0x2, 0x3bc, 0x3b4, 0x3, 0x2, 0x2, 0x2, 0x3bc, 0x3bd, 0x3, 0x2, 0x2, 0x2, 0x3bd, 0x3be, 0x3, 0x2, 0x2, 0x2, 0x3be, 0x3bf, 0x7, 0x1f, 0x2, 0x2, 0x3bf, 0xc1, 0x3, 0x2, 0x2, 0x2, 0x3c0, 0x3c1, 0x5, 0x94, 0x4b, 0x2, 0x3c1, 0x3c2, 0x7, 0x2a, 0x2, 0x2, 0x3c2, 0x3c3, 0x7, 0x1d, 0x2, 0x2, 0x3c3, 0xc3, 0x3, 0x2, 0x2, 0x2, 0x3c4, 0x3c5, 0x5, 0x6c, 0x37, 0x2, 0x3c5, 0xc5, 0x3, 0x2, 0x2, 0x2, 0x3c6, 0x3c7, 0x9, 0xc, 0x2, 0x2, 0x3c7, 0xc7, 0x3, 0x2, 0x2, 0x2, 0x70, 0xcc, 0xd3, 0xd8, 0xde, 0xe3, 0xe8, 0xf8, 0xfc, 0xff, 0x108, 0x112, 0x116, 0x11a, 0x11e, 0x125, 0x12d, 0x138, 0x13c, 0x140, 0x148, 0x14f, 0x15b, 0x15f, 0x165, 0x169, 0x16f, 0x173, 0x17b, 0x17f, 0x190, 0x197, 0x1a7, 0x1b4, 0x1b8, 0x1bc, 0x1c0, 0x1d3, 0x1d9, 0x1db, 0x1df, 0x1e3, 0x1e6, 0x1ea, 0x1ec, 0x1f2, 0x1fa, 0x1ff, 0x20a, 0x210, 0x217, 0x222, 0x227, 0x22b, 0x230, 0x234, 0x23c, 0x244, 0x249, 0x24c, 0x254, 0x25c, 0x261, 0x265, 0x269, 0x271, 0x27f, 0x283, 0x28d, 0x29f, 0x2a5, 0x2b9, 0x2c3, 0x2cc, 0x2d0, 0x2d8, 0x2dc, 0x2de, 0x2e3, 0x2e6, 0x2ee, 0x2ff, 0x301, 0x308, 0x311, 0x315, 0x31c, 0x325, 0x32d, 0x332, 0x338, 0x34e, 0x353, 0x355, 0x35e, 0x364, 0x36a, 0x36e, 0x377, 0x380, 0x383, 0x388, 0x396, 0x39a, 0x39d, 0x3a4, 0x3b2, 0x3b4, 0x3b7, 0x3ba, 0x3bc, }; _serializedATN.insert(_serializedATN.end(), serializedATNSegment0, serializedATNSegment0 + sizeof(serializedATNSegment0) / sizeof(serializedATNSegment0[0])); 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); } } GoParser::Initializer GoParser::_init;