forked from NUDT-compiler/nudt-compiler-cpp
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.
2649 lines
82 KiB
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;
|