You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
nudt-compiler-cpp/src/antlr4/SysYParser.cpp

2649 lines
82 KiB

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