Add synonyms for tokens

This commit is contained in:
ridethepig 2023-05-02 14:57:17 +08:00
parent 32e3dc7a77
commit 5ee500cb00
5 changed files with 772 additions and 329 deletions

39
Sysy.g4
View File

@ -69,7 +69,9 @@ funcRParam: exp | StringLiteral;
mulExp:
unaryExp
| mulExp ('*' | '/' | '%') unaryExp; // ANTLR4 has support for direct left recursion
| mulExp ('*' | '/' | '%') unaryExp;
// ANTLR4 has support for direct left recursion
// Though it is not a good idea, when the expression is too long, stack will explode
addExp: mulExp | addExp ('+' | '-') mulExp;
@ -111,4 +113,37 @@ fragment SChar:
| '\\\r\n' ; // Added line
StringLiteral: '"' (SChar+)? '"';
// https://github.com/antlr/antlr4/blob/master/doc/lexer-rules.md
// https://github.com/antlr/antlr4/blob/master/doc/lexer-rules.md
CONST:'const';
COMMA:',';
SEMICOLON:';';
INT:'int';
LBRACKET:'[';
RBRACKET:']';
ASSING:'=';
LBRACE:'{';
RBRACE:'}';
LPAREN:'(';
RPAREN:')';
VOID:'void';
IF:'if';
ELSE:'else';
WHILE:'while';
BREAK:'break';
CONTINUE:'continue';
RETURN:'return';
ADD:'+';
SUB:'-';
NOT:'!';
MUL:'*';
DIV:'/';
MOD:'%';
LT:'<';
GT:'>';
LE:'<=';
GE:'>=';
EQ:'==';
NE:'!=';
AND:'&&';
OR:'||';

View File

@ -13,13 +13,13 @@ namespace antlrSysY {
class SysyLexer : public antlr4::Lexer {
public:
enum {
T__0 = 1, T__1 = 2, T__2 = 3, T__3 = 4, T__4 = 5, T__5 = 6, T__6 = 7,
T__7 = 8, T__8 = 9, T__9 = 10, T__10 = 11, T__11 = 12, T__12 = 13, T__13 = 14,
T__14 = 15, T__15 = 16, T__16 = 17, T__17 = 18, T__18 = 19, T__19 = 20,
T__20 = 21, T__21 = 22, T__22 = 23, T__23 = 24, T__24 = 25, T__25 = 26,
T__26 = 27, T__27 = 28, T__28 = 29, T__29 = 30, T__30 = 31, T__31 = 32,
IDENT = 33, DECIMAL_CONST = 34, OCTAL_CONST = 35, HEXADECIMAL_CONST = 36,
WS = 37, SINGLELINE_COMMENT = 38, MULTILINE_COMMENT = 39, StringLiteral = 40
IDENT = 1, DECIMAL_CONST = 2, OCTAL_CONST = 3, HEXADECIMAL_CONST = 4,
WS = 5, SINGLELINE_COMMENT = 6, MULTILINE_COMMENT = 7, StringLiteral = 8,
CONST = 9, COMMA = 10, SEMICOLON = 11, INT = 12, LBRACKET = 13, RBRACKET = 14,
ASSING = 15, LBRACE = 16, RBRACE = 17, LPAREN = 18, RPAREN = 19, VOID = 20,
IF = 21, ELSE = 22, WHILE = 23, BREAK = 24, CONTINUE = 25, RETURN = 26,
ADD = 27, SUB = 28, NOT = 29, MUL = 30, DIV = 31, MOD = 32, LT = 33,
GT = 34, LE = 35, GE = 36, EQ = 37, NE = 38, AND = 39, OR = 40
};
explicit SysyLexer(antlr4::CharStream *input);

View File

@ -13,13 +13,13 @@ namespace antlrSysY {
class SysyParser : public antlr4::Parser {
public:
enum {
T__0 = 1, T__1 = 2, T__2 = 3, T__3 = 4, T__4 = 5, T__5 = 6, T__6 = 7,
T__7 = 8, T__8 = 9, T__9 = 10, T__10 = 11, T__11 = 12, T__12 = 13, T__13 = 14,
T__14 = 15, T__15 = 16, T__16 = 17, T__17 = 18, T__18 = 19, T__19 = 20,
T__20 = 21, T__21 = 22, T__22 = 23, T__23 = 24, T__24 = 25, T__25 = 26,
T__26 = 27, T__27 = 28, T__28 = 29, T__29 = 30, T__30 = 31, T__31 = 32,
IDENT = 33, DECIMAL_CONST = 34, OCTAL_CONST = 35, HEXADECIMAL_CONST = 36,
WS = 37, SINGLELINE_COMMENT = 38, MULTILINE_COMMENT = 39, StringLiteral = 40
IDENT = 1, DECIMAL_CONST = 2, OCTAL_CONST = 3, HEXADECIMAL_CONST = 4,
WS = 5, SINGLELINE_COMMENT = 6, MULTILINE_COMMENT = 7, StringLiteral = 8,
CONST = 9, COMMA = 10, SEMICOLON = 11, INT = 12, LBRACKET = 13, RBRACKET = 14,
ASSING = 15, LBRACE = 16, RBRACE = 17, LPAREN = 18, RPAREN = 19, VOID = 20,
IF = 21, ELSE = 22, WHILE = 23, BREAK = 24, CONTINUE = 25, RETURN = 26,
ADD = 27, SUB = 28, NOT = 29, MUL = 30, DIV = 31, MOD = 32, LT = 33,
GT = 34, LE = 35, GE = 36, EQ = 37, NE = 38, AND = 39, OR = 40
};
enum {
@ -133,9 +133,13 @@ public:
public:
ConstDeclContext(antlr4::ParserRuleContext *parent, size_t invokingState);
virtual size_t getRuleIndex() const override;
antlr4::tree::TerminalNode *CONST();
BTypeContext *bType();
std::vector<ConstDefContext *> constDef();
ConstDefContext* constDef(size_t i);
antlr4::tree::TerminalNode *SEMICOLON();
std::vector<antlr4::tree::TerminalNode *> COMMA();
antlr4::tree::TerminalNode* COMMA(size_t i);
virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override;
@ -148,6 +152,7 @@ public:
public:
BTypeContext(antlr4::ParserRuleContext *parent, size_t invokingState);
virtual size_t getRuleIndex() const override;
antlr4::tree::TerminalNode *INT();
virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override;
@ -161,9 +166,14 @@ public:
ConstDefContext(antlr4::ParserRuleContext *parent, size_t invokingState);
virtual size_t getRuleIndex() const override;
antlr4::tree::TerminalNode *IDENT();
antlr4::tree::TerminalNode *ASSING();
ConstInitValContext *constInitVal();
std::vector<antlr4::tree::TerminalNode *> LBRACKET();
antlr4::tree::TerminalNode* LBRACKET(size_t i);
std::vector<ConstExpContext *> constExp();
ConstExpContext* constExp(size_t i);
std::vector<antlr4::tree::TerminalNode *> RBRACKET();
antlr4::tree::TerminalNode* RBRACKET(size_t i);
virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override;
@ -177,12 +187,17 @@ public:
ConstInitValContext(antlr4::ParserRuleContext *parent, size_t invokingState);
virtual size_t getRuleIndex() const override;
ConstExpContext *constExp();
antlr4::tree::TerminalNode *LBRACE();
antlr4::tree::TerminalNode *RBRACE();
std::vector<ConstInitValContext *> constInitVal();
ConstInitValContext* constInitVal(size_t i);
std::vector<antlr4::tree::TerminalNode *> COMMA();
antlr4::tree::TerminalNode* COMMA(size_t i);
virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override;
public:
std::vector<int> arrDim;
};
ConstInitValContext* constInitVal();
@ -194,6 +209,9 @@ public:
BTypeContext *bType();
std::vector<VarDefContext *> varDef();
VarDefContext* varDef(size_t i);
antlr4::tree::TerminalNode *SEMICOLON();
std::vector<antlr4::tree::TerminalNode *> COMMA();
antlr4::tree::TerminalNode* COMMA(size_t i);
virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override;
@ -207,8 +225,13 @@ public:
VarDefContext(antlr4::ParserRuleContext *parent, size_t invokingState);
virtual size_t getRuleIndex() const override;
antlr4::tree::TerminalNode *IDENT();
std::vector<antlr4::tree::TerminalNode *> LBRACKET();
antlr4::tree::TerminalNode* LBRACKET(size_t i);
std::vector<ConstExpContext *> constExp();
ConstExpContext* constExp(size_t i);
std::vector<antlr4::tree::TerminalNode *> RBRACKET();
antlr4::tree::TerminalNode* RBRACKET(size_t i);
antlr4::tree::TerminalNode *ASSING();
InitValContext *initVal();
@ -223,8 +246,12 @@ public:
InitValContext(antlr4::ParserRuleContext *parent, size_t invokingState);
virtual size_t getRuleIndex() const override;
ExpContext *exp();
antlr4::tree::TerminalNode *LBRACE();
antlr4::tree::TerminalNode *RBRACE();
std::vector<InitValContext *> initVal();
InitValContext* initVal(size_t i);
std::vector<antlr4::tree::TerminalNode *> COMMA();
antlr4::tree::TerminalNode* COMMA(size_t i);
virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override;
@ -239,6 +266,8 @@ public:
virtual size_t getRuleIndex() const override;
FuncTypeContext *funcType();
antlr4::tree::TerminalNode *IDENT();
antlr4::tree::TerminalNode *LPAREN();
antlr4::tree::TerminalNode *RPAREN();
BlockContext *block();
FuncFParamsContext *funcFParams();
@ -253,6 +282,8 @@ public:
public:
FuncTypeContext(antlr4::ParserRuleContext *parent, size_t invokingState);
virtual size_t getRuleIndex() const override;
antlr4::tree::TerminalNode *VOID();
antlr4::tree::TerminalNode *INT();
virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override;
@ -267,6 +298,8 @@ public:
virtual size_t getRuleIndex() const override;
std::vector<FuncFParamContext *> funcFParam();
FuncFParamContext* funcFParam(size_t i);
std::vector<antlr4::tree::TerminalNode *> COMMA();
antlr4::tree::TerminalNode* COMMA(size_t i);
virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override;
@ -281,6 +314,10 @@ public:
virtual size_t getRuleIndex() const override;
BTypeContext *bType();
antlr4::tree::TerminalNode *IDENT();
std::vector<antlr4::tree::TerminalNode *> LBRACKET();
antlr4::tree::TerminalNode* LBRACKET(size_t i);
std::vector<antlr4::tree::TerminalNode *> RBRACKET();
antlr4::tree::TerminalNode* RBRACKET(size_t i);
std::vector<ExpContext *> exp();
ExpContext* exp(size_t i);
@ -295,6 +332,8 @@ public:
public:
BlockContext(antlr4::ParserRuleContext *parent, size_t invokingState);
virtual size_t getRuleIndex() const override;
antlr4::tree::TerminalNode *LBRACE();
antlr4::tree::TerminalNode *RBRACE();
std::vector<BlockItemContext *> blockItem();
BlockItemContext* blockItem(size_t i);
@ -336,7 +375,10 @@ public:
public:
WhileStmtContext(StmtContext *ctx);
antlr4::tree::TerminalNode *WHILE();
antlr4::tree::TerminalNode *LPAREN();
CondContext *cond();
antlr4::tree::TerminalNode *RPAREN();
StmtContext *stmt();
virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override;
@ -346,9 +388,13 @@ public:
public:
IfStmtContext(StmtContext *ctx);
antlr4::tree::TerminalNode *IF();
antlr4::tree::TerminalNode *LPAREN();
CondContext *cond();
antlr4::tree::TerminalNode *RPAREN();
std::vector<StmtContext *> stmt();
StmtContext* stmt(size_t i);
antlr4::tree::TerminalNode *ELSE();
virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override;
};
@ -367,7 +413,9 @@ public:
AssignStmtContext(StmtContext *ctx);
LValContext *lVal();
antlr4::tree::TerminalNode *ASSING();
ExpContext *exp();
antlr4::tree::TerminalNode *SEMICOLON();
virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override;
};
@ -376,6 +424,8 @@ public:
public:
BreakStmtContext(StmtContext *ctx);
antlr4::tree::TerminalNode *BREAK();
antlr4::tree::TerminalNode *SEMICOLON();
virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override;
};
@ -384,6 +434,7 @@ public:
public:
ExpStmtContext(StmtContext *ctx);
antlr4::tree::TerminalNode *SEMICOLON();
ExpContext *exp();
virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override;
@ -393,6 +444,8 @@ public:
public:
ReturnStmtContext(StmtContext *ctx);
antlr4::tree::TerminalNode *RETURN();
antlr4::tree::TerminalNode *SEMICOLON();
ExpContext *exp();
virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override;
@ -402,6 +455,8 @@ public:
public:
ContinueStmtContext(StmtContext *ctx);
antlr4::tree::TerminalNode *CONTINUE();
antlr4::tree::TerminalNode *SEMICOLON();
virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override;
};
@ -439,8 +494,12 @@ public:
LValContext(antlr4::ParserRuleContext *parent, size_t invokingState);
virtual size_t getRuleIndex() const override;
antlr4::tree::TerminalNode *IDENT();
std::vector<antlr4::tree::TerminalNode *> LBRACKET();
antlr4::tree::TerminalNode* LBRACKET(size_t i);
std::vector<ExpContext *> exp();
ExpContext* exp(size_t i);
std::vector<antlr4::tree::TerminalNode *> RBRACKET();
antlr4::tree::TerminalNode* RBRACKET(size_t i);
virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override;
@ -453,7 +512,9 @@ public:
public:
PrimaryExpContext(antlr4::ParserRuleContext *parent, size_t invokingState);
virtual size_t getRuleIndex() const override;
antlr4::tree::TerminalNode *LPAREN();
ExpContext *exp();
antlr4::tree::TerminalNode *RPAREN();
LValContext *lVal();
NumberContext *number();
@ -498,6 +559,8 @@ public:
virtual size_t getRuleIndex() const override;
PrimaryExpContext *primaryExp();
antlr4::tree::TerminalNode *IDENT();
antlr4::tree::TerminalNode *LPAREN();
antlr4::tree::TerminalNode *RPAREN();
FuncRParamsContext *funcRParams();
UnaryOpContext *unaryOp();
UnaryExpContext *unaryExp();
@ -513,6 +576,9 @@ public:
public:
UnaryOpContext(antlr4::ParserRuleContext *parent, size_t invokingState);
virtual size_t getRuleIndex() const override;
antlr4::tree::TerminalNode *ADD();
antlr4::tree::TerminalNode *SUB();
antlr4::tree::TerminalNode *NOT();
virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override;
@ -527,6 +593,8 @@ public:
virtual size_t getRuleIndex() const override;
std::vector<FuncRParamContext *> funcRParam();
FuncRParamContext* funcRParam(size_t i);
std::vector<antlr4::tree::TerminalNode *> COMMA();
antlr4::tree::TerminalNode* COMMA(size_t i);
virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override;
@ -555,6 +623,9 @@ public:
virtual size_t getRuleIndex() const override;
UnaryExpContext *unaryExp();
MulExpContext *mulExp();
antlr4::tree::TerminalNode *MUL();
antlr4::tree::TerminalNode *DIV();
antlr4::tree::TerminalNode *MOD();
virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override;
@ -569,6 +640,8 @@ public:
virtual size_t getRuleIndex() const override;
MulExpContext *mulExp();
AddExpContext *addExp();
antlr4::tree::TerminalNode *ADD();
antlr4::tree::TerminalNode *SUB();
virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override;
@ -583,6 +656,10 @@ public:
virtual size_t getRuleIndex() const override;
AddExpContext *addExp();
RelExpContext *relExp();
antlr4::tree::TerminalNode *LT();
antlr4::tree::TerminalNode *GT();
antlr4::tree::TerminalNode *LE();
antlr4::tree::TerminalNode *GE();
virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override;
@ -597,6 +674,8 @@ public:
virtual size_t getRuleIndex() const override;
RelExpContext *relExp();
EqExpContext *eqExp();
antlr4::tree::TerminalNode *EQ();
antlr4::tree::TerminalNode *NE();
virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override;
@ -611,6 +690,7 @@ public:
virtual size_t getRuleIndex() const override;
EqExpContext *eqExp();
LAndExpContext *lAndExp();
antlr4::tree::TerminalNode *AND();
virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override;
@ -625,6 +705,7 @@ public:
virtual size_t getRuleIndex() const override;
LAndExpContext *lAndExp();
LOrExpContext *lOrExp();
antlr4::tree::TerminalNode *OR();
virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override;

View File

@ -49,12 +49,13 @@ void sysylexerLexerInitialize() {
assert(sysylexerLexerStaticData == nullptr);
auto staticData = std::make_unique<SysyLexerStaticData>(
std::vector<std::string>{
"T__0", "T__1", "T__2", "T__3", "T__4", "T__5", "T__6", "T__7", "T__8",
"T__9", "T__10", "T__11", "T__12", "T__13", "T__14", "T__15", "T__16",
"T__17", "T__18", "T__19", "T__20", "T__21", "T__22", "T__23", "T__24",
"T__25", "T__26", "T__27", "T__28", "T__29", "T__30", "T__31", "IDENT",
"DECIMAL_CONST", "OCTAL_CONST", "HEXADECIMAL_CONST", "WS", "SINGLELINE_COMMENT",
"MULTILINE_COMMENT", "EscapeSequence", "SChar", "StringLiteral"
"IDENT", "DECIMAL_CONST", "OCTAL_CONST", "HEXADECIMAL_CONST", "WS",
"SINGLELINE_COMMENT", "MULTILINE_COMMENT", "EscapeSequence", "SChar",
"StringLiteral", "CONST", "COMMA", "SEMICOLON", "INT", "LBRACKET",
"RBRACKET", "ASSING", "LBRACE", "RBRACE", "LPAREN", "RPAREN", "VOID",
"IF", "ELSE", "WHILE", "BREAK", "CONTINUE", "RETURN", "ADD", "SUB",
"NOT", "MUL", "DIV", "MOD", "LT", "GT", "LE", "GE", "EQ", "NE", "AND",
"OR"
},
std::vector<std::string>{
"DEFAULT_TOKEN_CHANNEL", "HIDDEN"
@ -63,16 +64,19 @@ void sysylexerLexerInitialize() {
"DEFAULT_MODE"
},
std::vector<std::string>{
"", "'const'", "','", "';'", "'int'", "'['", "']'", "'='", "'{'",
"'}'", "'('", "')'", "'void'", "'if'", "'else'", "'while'", "'break'",
"'continue'", "'return'", "'+'", "'-'", "'!'", "'*'", "'/'", "'%'",
"'<'", "'>'", "'<='", "'>='", "'=='", "'!='", "'&&'", "'||'"
"", "", "", "", "", "", "", "", "", "'const'", "','", "';'", "'int'",
"'['", "']'", "'='", "'{'", "'}'", "'('", "')'", "'void'", "'if'",
"'else'", "'while'", "'break'", "'continue'", "'return'", "'+'", "'-'",
"'!'", "'*'", "'/'", "'%'", "'<'", "'>'", "'<='", "'>='", "'=='",
"'!='", "'&&'", "'||'"
},
std::vector<std::string>{
"", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "",
"", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "IDENT",
"DECIMAL_CONST", "OCTAL_CONST", "HEXADECIMAL_CONST", "WS", "SINGLELINE_COMMENT",
"MULTILINE_COMMENT", "StringLiteral"
"", "IDENT", "DECIMAL_CONST", "OCTAL_CONST", "HEXADECIMAL_CONST",
"WS", "SINGLELINE_COMMENT", "MULTILINE_COMMENT", "StringLiteral",
"CONST", "COMMA", "SEMICOLON", "INT", "LBRACKET", "RBRACKET", "ASSING",
"LBRACE", "RBRACE", "LPAREN", "RPAREN", "VOID", "IF", "ELSE", "WHILE",
"BREAK", "CONTINUE", "RETURN", "ADD", "SUB", "NOT", "MUL", "DIV",
"MOD", "LT", "GT", "LE", "GE", "EQ", "NE", "AND", "OR"
}
);
static const int32_t serializedATNSegment[] = {
@ -82,102 +86,101 @@ void sysylexerLexerInitialize() {
7,21,2,22,7,22,2,23,7,23,2,24,7,24,2,25,7,25,2,26,7,26,2,27,7,27,2,28,
7,28,2,29,7,29,2,30,7,30,2,31,7,31,2,32,7,32,2,33,7,33,2,34,7,34,2,35,
7,35,2,36,7,36,2,37,7,37,2,38,7,38,2,39,7,39,2,40,7,40,2,41,7,41,1,0,
1,0,1,0,1,0,1,0,1,0,1,1,1,1,1,2,1,2,1,3,1,3,1,3,1,3,1,4,1,4,1,5,1,5,1,
6,1,6,1,7,1,7,1,8,1,8,1,9,1,9,1,10,1,10,1,11,1,11,1,11,1,11,1,11,1,12,
1,12,1,12,1,13,1,13,1,13,1,13,1,13,1,14,1,14,1,14,1,14,1,14,1,14,1,15,
1,15,1,15,1,15,1,15,1,15,1,16,1,16,1,16,1,16,1,16,1,16,1,16,1,16,1,16,
1,17,1,17,1,17,1,17,1,17,1,17,1,17,1,18,1,18,1,19,1,19,1,20,1,20,1,21,
1,21,1,22,1,22,1,23,1,23,1,24,1,24,1,25,1,25,1,26,1,26,1,26,1,27,1,27,
1,27,1,28,1,28,1,28,1,29,1,29,1,29,1,30,1,30,1,30,1,31,1,31,1,31,1,32,
1,32,1,32,4,32,192,8,32,11,32,12,32,193,3,32,196,8,32,1,33,1,33,1,33,
4,33,201,8,33,11,33,12,33,202,3,33,205,8,33,1,34,1,34,1,34,4,34,210,8,
34,11,34,12,34,211,3,34,214,8,34,1,35,1,35,1,35,1,35,3,35,220,8,35,1,
35,4,35,223,8,35,11,35,12,35,224,1,36,4,36,228,8,36,11,36,12,36,229,1,
36,1,36,1,37,1,37,1,37,1,37,5,37,238,8,37,10,37,12,37,241,9,37,1,37,1,
37,1,38,1,38,1,38,1,38,5,38,249,8,38,10,38,12,38,252,9,38,1,38,1,38,1,
38,1,38,1,38,1,39,1,39,1,39,1,39,1,39,3,39,264,8,39,1,39,3,39,267,8,39,
1,39,1,39,1,39,1,39,4,39,273,8,39,11,39,12,39,274,3,39,277,8,39,1,40,
1,40,1,40,1,40,1,40,1,40,1,40,3,40,286,8,40,1,41,1,41,4,41,290,8,41,11,
41,12,41,291,3,41,294,8,41,1,41,1,41,1,250,0,42,1,1,3,2,5,3,7,4,9,5,11,
6,13,7,15,8,17,9,19,10,21,11,23,12,25,13,27,14,29,15,31,16,33,17,35,18,
37,19,39,20,41,21,43,22,45,23,47,24,49,25,51,26,53,27,55,28,57,29,59,
30,61,31,63,32,65,33,67,34,69,35,71,36,73,37,75,38,77,39,79,0,81,0,83,
40,1,0,10,3,0,65,90,95,95,97,122,4,0,48,57,65,90,95,95,97,122,1,0,49,
57,1,0,48,57,1,0,48,55,3,0,48,57,65,70,97,102,3,0,9,10,13,13,32,32,2,
0,10,10,13,13,10,0,34,34,39,39,63,63,92,92,97,98,102,102,110,110,114,
114,116,116,118,118,4,0,10,10,13,13,34,34,92,92,315,0,1,1,0,0,0,0,3,1,
0,0,0,0,5,1,0,0,0,0,7,1,0,0,0,0,9,1,0,0,0,0,11,1,0,0,0,0,13,1,0,0,0,0,
15,1,0,0,0,0,17,1,0,0,0,0,19,1,0,0,0,0,21,1,0,0,0,0,23,1,0,0,0,0,25,1,
0,0,0,0,27,1,0,0,0,0,29,1,0,0,0,0,31,1,0,0,0,0,33,1,0,0,0,0,35,1,0,0,
0,0,37,1,0,0,0,0,39,1,0,0,0,0,41,1,0,0,0,0,43,1,0,0,0,0,45,1,0,0,0,0,
47,1,0,0,0,0,49,1,0,0,0,0,51,1,0,0,0,0,53,1,0,0,0,0,55,1,0,0,0,0,57,1,
0,0,0,0,59,1,0,0,0,0,61,1,0,0,0,0,63,1,0,0,0,0,65,1,0,0,0,0,67,1,0,0,
0,0,69,1,0,0,0,0,71,1,0,0,0,0,73,1,0,0,0,0,75,1,0,0,0,0,77,1,0,0,0,0,
83,1,0,0,0,1,85,1,0,0,0,3,91,1,0,0,0,5,93,1,0,0,0,7,95,1,0,0,0,9,99,1,
0,0,0,11,101,1,0,0,0,13,103,1,0,0,0,15,105,1,0,0,0,17,107,1,0,0,0,19,
109,1,0,0,0,21,111,1,0,0,0,23,113,1,0,0,0,25,118,1,0,0,0,27,121,1,0,0,
0,29,126,1,0,0,0,31,132,1,0,0,0,33,138,1,0,0,0,35,147,1,0,0,0,37,154,
1,0,0,0,39,156,1,0,0,0,41,158,1,0,0,0,43,160,1,0,0,0,45,162,1,0,0,0,47,
164,1,0,0,0,49,166,1,0,0,0,51,168,1,0,0,0,53,170,1,0,0,0,55,173,1,0,0,
0,57,176,1,0,0,0,59,179,1,0,0,0,61,182,1,0,0,0,63,185,1,0,0,0,65,195,
1,0,0,0,67,204,1,0,0,0,69,213,1,0,0,0,71,219,1,0,0,0,73,227,1,0,0,0,75,
233,1,0,0,0,77,244,1,0,0,0,79,276,1,0,0,0,81,285,1,0,0,0,83,287,1,0,0,
0,85,86,5,99,0,0,86,87,5,111,0,0,87,88,5,110,0,0,88,89,5,115,0,0,89,90,
5,116,0,0,90,2,1,0,0,0,91,92,5,44,0,0,92,4,1,0,0,0,93,94,5,59,0,0,94,
6,1,0,0,0,95,96,5,105,0,0,96,97,5,110,0,0,97,98,5,116,0,0,98,8,1,0,0,
0,99,100,5,91,0,0,100,10,1,0,0,0,101,102,5,93,0,0,102,12,1,0,0,0,103,
104,5,61,0,0,104,14,1,0,0,0,105,106,5,123,0,0,106,16,1,0,0,0,107,108,
5,125,0,0,108,18,1,0,0,0,109,110,5,40,0,0,110,20,1,0,0,0,111,112,5,41,
0,0,112,22,1,0,0,0,113,114,5,118,0,0,114,115,5,111,0,0,115,116,5,105,
0,0,116,117,5,100,0,0,117,24,1,0,0,0,118,119,5,105,0,0,119,120,5,102,
0,0,120,26,1,0,0,0,121,122,5,101,0,0,122,123,5,108,0,0,123,124,5,115,
0,0,124,125,5,101,0,0,125,28,1,0,0,0,126,127,5,119,0,0,127,128,5,104,
0,0,128,129,5,105,0,0,129,130,5,108,0,0,130,131,5,101,0,0,131,30,1,0,
0,0,132,133,5,98,0,0,133,134,5,114,0,0,134,135,5,101,0,0,135,136,5,97,
0,0,136,137,5,107,0,0,137,32,1,0,0,0,138,139,5,99,0,0,139,140,5,111,0,
0,140,141,5,110,0,0,141,142,5,116,0,0,142,143,5,105,0,0,143,144,5,110,
0,0,144,145,5,117,0,0,145,146,5,101,0,0,146,34,1,0,0,0,147,148,5,114,
0,0,148,149,5,101,0,0,149,150,5,116,0,0,150,151,5,117,0,0,151,152,5,114,
0,0,152,153,5,110,0,0,153,36,1,0,0,0,154,155,5,43,0,0,155,38,1,0,0,0,
156,157,5,45,0,0,157,40,1,0,0,0,158,159,5,33,0,0,159,42,1,0,0,0,160,161,
5,42,0,0,161,44,1,0,0,0,162,163,5,47,0,0,163,46,1,0,0,0,164,165,5,37,
0,0,165,48,1,0,0,0,166,167,5,60,0,0,167,50,1,0,0,0,168,169,5,62,0,0,169,
52,1,0,0,0,170,171,5,60,0,0,171,172,5,61,0,0,172,54,1,0,0,0,173,174,5,
62,0,0,174,175,5,61,0,0,175,56,1,0,0,0,176,177,5,61,0,0,177,178,5,61,
0,0,178,58,1,0,0,0,179,180,5,33,0,0,180,181,5,61,0,0,181,60,1,0,0,0,182,
183,5,38,0,0,183,184,5,38,0,0,184,62,1,0,0,0,185,186,5,124,0,0,186,187,
5,124,0,0,187,64,1,0,0,0,188,196,7,0,0,0,189,191,7,0,0,0,190,192,7,1,
0,0,191,190,1,0,0,0,192,193,1,0,0,0,193,191,1,0,0,0,193,194,1,0,0,0,194,
196,1,0,0,0,195,188,1,0,0,0,195,189,1,0,0,0,196,66,1,0,0,0,197,205,7,
2,0,0,198,200,7,2,0,0,199,201,7,3,0,0,200,199,1,0,0,0,201,202,1,0,0,0,
202,200,1,0,0,0,202,203,1,0,0,0,203,205,1,0,0,0,204,197,1,0,0,0,204,198,
1,0,0,0,205,68,1,0,0,0,206,214,5,48,0,0,207,209,5,48,0,0,208,210,7,4,
0,0,209,208,1,0,0,0,210,211,1,0,0,0,211,209,1,0,0,0,211,212,1,0,0,0,212,
214,1,0,0,0,213,206,1,0,0,0,213,207,1,0,0,0,214,70,1,0,0,0,215,216,5,
48,0,0,216,220,5,120,0,0,217,218,5,48,0,0,218,220,5,88,0,0,219,215,1,
0,0,0,219,217,1,0,0,0,220,222,1,0,0,0,221,223,7,5,0,0,222,221,1,0,0,0,
223,224,1,0,0,0,224,222,1,0,0,0,224,225,1,0,0,0,225,72,1,0,0,0,226,228,
7,6,0,0,227,226,1,0,0,0,228,229,1,0,0,0,229,227,1,0,0,0,229,230,1,0,0,
0,230,231,1,0,0,0,231,232,6,36,0,0,232,74,1,0,0,0,233,234,5,47,0,0,234,
235,5,47,0,0,235,239,1,0,0,0,236,238,8,7,0,0,237,236,1,0,0,0,238,241,
1,0,0,0,239,237,1,0,0,0,239,240,1,0,0,0,240,242,1,0,0,0,241,239,1,0,0,
0,242,243,6,37,0,0,243,76,1,0,0,0,244,245,5,47,0,0,245,246,5,42,0,0,246,
250,1,0,0,0,247,249,9,0,0,0,248,247,1,0,0,0,249,252,1,0,0,0,250,251,1,
0,0,0,250,248,1,0,0,0,251,253,1,0,0,0,252,250,1,0,0,0,253,254,5,42,0,
0,254,255,5,47,0,0,255,256,1,0,0,0,256,257,6,38,0,0,257,78,1,0,0,0,258,
259,5,92,0,0,259,277,7,8,0,0,260,261,5,92,0,0,261,263,7,4,0,0,262,264,
7,4,0,0,263,262,1,0,0,0,263,264,1,0,0,0,264,266,1,0,0,0,265,267,7,4,0,
0,266,265,1,0,0,0,266,267,1,0,0,0,267,277,1,0,0,0,268,269,5,92,0,0,269,
270,5,120,0,0,270,272,1,0,0,0,271,273,7,5,0,0,272,271,1,0,0,0,273,274,
1,0,0,0,274,272,1,0,0,0,274,275,1,0,0,0,275,277,1,0,0,0,276,258,1,0,0,
0,276,260,1,0,0,0,276,268,1,0,0,0,277,80,1,0,0,0,278,286,8,9,0,0,279,
286,3,79,39,0,280,281,5,92,0,0,281,286,5,10,0,0,282,283,5,92,0,0,283,
284,5,13,0,0,284,286,5,10,0,0,285,278,1,0,0,0,285,279,1,0,0,0,285,280,
1,0,0,0,285,282,1,0,0,0,286,82,1,0,0,0,287,293,5,34,0,0,288,290,3,81,
40,0,289,288,1,0,0,0,290,291,1,0,0,0,291,289,1,0,0,0,291,292,1,0,0,0,
292,294,1,0,0,0,293,289,1,0,0,0,293,294,1,0,0,0,294,295,1,0,0,0,295,296,
5,34,0,0,296,84,1,0,0,0,19,0,193,195,202,204,211,213,219,224,229,239,
250,263,266,274,276,285,291,293,1,6,0,0
1,0,1,0,4,0,89,8,0,11,0,12,0,90,3,0,93,8,0,1,1,1,1,1,1,4,1,98,8,1,11,
1,12,1,99,3,1,102,8,1,1,2,1,2,1,2,4,2,107,8,2,11,2,12,2,108,3,2,111,8,
2,1,3,1,3,1,3,1,3,3,3,117,8,3,1,3,4,3,120,8,3,11,3,12,3,121,1,4,4,4,125,
8,4,11,4,12,4,126,1,4,1,4,1,5,1,5,1,5,1,5,5,5,135,8,5,10,5,12,5,138,9,
5,1,5,1,5,1,6,1,6,1,6,1,6,5,6,146,8,6,10,6,12,6,149,9,6,1,6,1,6,1,6,1,
6,1,6,1,7,1,7,1,7,1,7,1,7,3,7,161,8,7,1,7,3,7,164,8,7,1,7,1,7,1,7,1,7,
4,7,170,8,7,11,7,12,7,171,3,7,174,8,7,1,8,1,8,1,8,1,8,1,8,1,8,1,8,3,8,
183,8,8,1,9,1,9,4,9,187,8,9,11,9,12,9,188,3,9,191,8,9,1,9,1,9,1,10,1,
10,1,10,1,10,1,10,1,10,1,11,1,11,1,12,1,12,1,13,1,13,1,13,1,13,1,14,1,
14,1,15,1,15,1,16,1,16,1,17,1,17,1,18,1,18,1,19,1,19,1,20,1,20,1,21,1,
21,1,21,1,21,1,21,1,22,1,22,1,22,1,23,1,23,1,23,1,23,1,23,1,24,1,24,1,
24,1,24,1,24,1,24,1,25,1,25,1,25,1,25,1,25,1,25,1,26,1,26,1,26,1,26,1,
26,1,26,1,26,1,26,1,26,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,28,1,28,1,
29,1,29,1,30,1,30,1,31,1,31,1,32,1,32,1,33,1,33,1,34,1,34,1,35,1,35,1,
36,1,36,1,36,1,37,1,37,1,37,1,38,1,38,1,38,1,39,1,39,1,39,1,40,1,40,1,
40,1,41,1,41,1,41,1,147,0,42,1,1,3,2,5,3,7,4,9,5,11,6,13,7,15,0,17,0,
19,8,21,9,23,10,25,11,27,12,29,13,31,14,33,15,35,16,37,17,39,18,41,19,
43,20,45,21,47,22,49,23,51,24,53,25,55,26,57,27,59,28,61,29,63,30,65,
31,67,32,69,33,71,34,73,35,75,36,77,37,79,38,81,39,83,40,1,0,10,3,0,65,
90,95,95,97,122,4,0,48,57,65,90,95,95,97,122,1,0,49,57,1,0,48,57,1,0,
48,55,3,0,48,57,65,70,97,102,3,0,9,10,13,13,32,32,2,0,10,10,13,13,10,
0,34,34,39,39,63,63,92,92,97,98,102,102,110,110,114,114,116,116,118,118,
4,0,10,10,13,13,34,34,92,92,315,0,1,1,0,0,0,0,3,1,0,0,0,0,5,1,0,0,0,0,
7,1,0,0,0,0,9,1,0,0,0,0,11,1,0,0,0,0,13,1,0,0,0,0,19,1,0,0,0,0,21,1,0,
0,0,0,23,1,0,0,0,0,25,1,0,0,0,0,27,1,0,0,0,0,29,1,0,0,0,0,31,1,0,0,0,
0,33,1,0,0,0,0,35,1,0,0,0,0,37,1,0,0,0,0,39,1,0,0,0,0,41,1,0,0,0,0,43,
1,0,0,0,0,45,1,0,0,0,0,47,1,0,0,0,0,49,1,0,0,0,0,51,1,0,0,0,0,53,1,0,
0,0,0,55,1,0,0,0,0,57,1,0,0,0,0,59,1,0,0,0,0,61,1,0,0,0,0,63,1,0,0,0,
0,65,1,0,0,0,0,67,1,0,0,0,0,69,1,0,0,0,0,71,1,0,0,0,0,73,1,0,0,0,0,75,
1,0,0,0,0,77,1,0,0,0,0,79,1,0,0,0,0,81,1,0,0,0,0,83,1,0,0,0,1,92,1,0,
0,0,3,101,1,0,0,0,5,110,1,0,0,0,7,116,1,0,0,0,9,124,1,0,0,0,11,130,1,
0,0,0,13,141,1,0,0,0,15,173,1,0,0,0,17,182,1,0,0,0,19,184,1,0,0,0,21,
194,1,0,0,0,23,200,1,0,0,0,25,202,1,0,0,0,27,204,1,0,0,0,29,208,1,0,0,
0,31,210,1,0,0,0,33,212,1,0,0,0,35,214,1,0,0,0,37,216,1,0,0,0,39,218,
1,0,0,0,41,220,1,0,0,0,43,222,1,0,0,0,45,227,1,0,0,0,47,230,1,0,0,0,49,
235,1,0,0,0,51,241,1,0,0,0,53,247,1,0,0,0,55,256,1,0,0,0,57,263,1,0,0,
0,59,265,1,0,0,0,61,267,1,0,0,0,63,269,1,0,0,0,65,271,1,0,0,0,67,273,
1,0,0,0,69,275,1,0,0,0,71,277,1,0,0,0,73,279,1,0,0,0,75,282,1,0,0,0,77,
285,1,0,0,0,79,288,1,0,0,0,81,291,1,0,0,0,83,294,1,0,0,0,85,93,7,0,0,
0,86,88,7,0,0,0,87,89,7,1,0,0,88,87,1,0,0,0,89,90,1,0,0,0,90,88,1,0,0,
0,90,91,1,0,0,0,91,93,1,0,0,0,92,85,1,0,0,0,92,86,1,0,0,0,93,2,1,0,0,
0,94,102,7,2,0,0,95,97,7,2,0,0,96,98,7,3,0,0,97,96,1,0,0,0,98,99,1,0,
0,0,99,97,1,0,0,0,99,100,1,0,0,0,100,102,1,0,0,0,101,94,1,0,0,0,101,95,
1,0,0,0,102,4,1,0,0,0,103,111,5,48,0,0,104,106,5,48,0,0,105,107,7,4,0,
0,106,105,1,0,0,0,107,108,1,0,0,0,108,106,1,0,0,0,108,109,1,0,0,0,109,
111,1,0,0,0,110,103,1,0,0,0,110,104,1,0,0,0,111,6,1,0,0,0,112,113,5,48,
0,0,113,117,5,120,0,0,114,115,5,48,0,0,115,117,5,88,0,0,116,112,1,0,0,
0,116,114,1,0,0,0,117,119,1,0,0,0,118,120,7,5,0,0,119,118,1,0,0,0,120,
121,1,0,0,0,121,119,1,0,0,0,121,122,1,0,0,0,122,8,1,0,0,0,123,125,7,6,
0,0,124,123,1,0,0,0,125,126,1,0,0,0,126,124,1,0,0,0,126,127,1,0,0,0,127,
128,1,0,0,0,128,129,6,4,0,0,129,10,1,0,0,0,130,131,5,47,0,0,131,132,5,
47,0,0,132,136,1,0,0,0,133,135,8,7,0,0,134,133,1,0,0,0,135,138,1,0,0,
0,136,134,1,0,0,0,136,137,1,0,0,0,137,139,1,0,0,0,138,136,1,0,0,0,139,
140,6,5,0,0,140,12,1,0,0,0,141,142,5,47,0,0,142,143,5,42,0,0,143,147,
1,0,0,0,144,146,9,0,0,0,145,144,1,0,0,0,146,149,1,0,0,0,147,148,1,0,0,
0,147,145,1,0,0,0,148,150,1,0,0,0,149,147,1,0,0,0,150,151,5,42,0,0,151,
152,5,47,0,0,152,153,1,0,0,0,153,154,6,6,0,0,154,14,1,0,0,0,155,156,5,
92,0,0,156,174,7,8,0,0,157,158,5,92,0,0,158,160,7,4,0,0,159,161,7,4,0,
0,160,159,1,0,0,0,160,161,1,0,0,0,161,163,1,0,0,0,162,164,7,4,0,0,163,
162,1,0,0,0,163,164,1,0,0,0,164,174,1,0,0,0,165,166,5,92,0,0,166,167,
5,120,0,0,167,169,1,0,0,0,168,170,7,5,0,0,169,168,1,0,0,0,170,171,1,0,
0,0,171,169,1,0,0,0,171,172,1,0,0,0,172,174,1,0,0,0,173,155,1,0,0,0,173,
157,1,0,0,0,173,165,1,0,0,0,174,16,1,0,0,0,175,183,8,9,0,0,176,183,3,
15,7,0,177,178,5,92,0,0,178,183,5,10,0,0,179,180,5,92,0,0,180,181,5,13,
0,0,181,183,5,10,0,0,182,175,1,0,0,0,182,176,1,0,0,0,182,177,1,0,0,0,
182,179,1,0,0,0,183,18,1,0,0,0,184,190,5,34,0,0,185,187,3,17,8,0,186,
185,1,0,0,0,187,188,1,0,0,0,188,186,1,0,0,0,188,189,1,0,0,0,189,191,1,
0,0,0,190,186,1,0,0,0,190,191,1,0,0,0,191,192,1,0,0,0,192,193,5,34,0,
0,193,20,1,0,0,0,194,195,5,99,0,0,195,196,5,111,0,0,196,197,5,110,0,0,
197,198,5,115,0,0,198,199,5,116,0,0,199,22,1,0,0,0,200,201,5,44,0,0,201,
24,1,0,0,0,202,203,5,59,0,0,203,26,1,0,0,0,204,205,5,105,0,0,205,206,
5,110,0,0,206,207,5,116,0,0,207,28,1,0,0,0,208,209,5,91,0,0,209,30,1,
0,0,0,210,211,5,93,0,0,211,32,1,0,0,0,212,213,5,61,0,0,213,34,1,0,0,0,
214,215,5,123,0,0,215,36,1,0,0,0,216,217,5,125,0,0,217,38,1,0,0,0,218,
219,5,40,0,0,219,40,1,0,0,0,220,221,5,41,0,0,221,42,1,0,0,0,222,223,5,
118,0,0,223,224,5,111,0,0,224,225,5,105,0,0,225,226,5,100,0,0,226,44,
1,0,0,0,227,228,5,105,0,0,228,229,5,102,0,0,229,46,1,0,0,0,230,231,5,
101,0,0,231,232,5,108,0,0,232,233,5,115,0,0,233,234,5,101,0,0,234,48,
1,0,0,0,235,236,5,119,0,0,236,237,5,104,0,0,237,238,5,105,0,0,238,239,
5,108,0,0,239,240,5,101,0,0,240,50,1,0,0,0,241,242,5,98,0,0,242,243,5,
114,0,0,243,244,5,101,0,0,244,245,5,97,0,0,245,246,5,107,0,0,246,52,1,
0,0,0,247,248,5,99,0,0,248,249,5,111,0,0,249,250,5,110,0,0,250,251,5,
116,0,0,251,252,5,105,0,0,252,253,5,110,0,0,253,254,5,117,0,0,254,255,
5,101,0,0,255,54,1,0,0,0,256,257,5,114,0,0,257,258,5,101,0,0,258,259,
5,116,0,0,259,260,5,117,0,0,260,261,5,114,0,0,261,262,5,110,0,0,262,56,
1,0,0,0,263,264,5,43,0,0,264,58,1,0,0,0,265,266,5,45,0,0,266,60,1,0,0,
0,267,268,5,33,0,0,268,62,1,0,0,0,269,270,5,42,0,0,270,64,1,0,0,0,271,
272,5,47,0,0,272,66,1,0,0,0,273,274,5,37,0,0,274,68,1,0,0,0,275,276,5,
60,0,0,276,70,1,0,0,0,277,278,5,62,0,0,278,72,1,0,0,0,279,280,5,60,0,
0,280,281,5,61,0,0,281,74,1,0,0,0,282,283,5,62,0,0,283,284,5,61,0,0,284,
76,1,0,0,0,285,286,5,61,0,0,286,287,5,61,0,0,287,78,1,0,0,0,288,289,5,
33,0,0,289,290,5,61,0,0,290,80,1,0,0,0,291,292,5,38,0,0,292,293,5,38,
0,0,293,82,1,0,0,0,294,295,5,124,0,0,295,296,5,124,0,0,296,84,1,0,0,0,
19,0,90,92,99,101,108,110,116,121,126,136,147,160,163,171,173,182,188,
190,1,6,0,0
};
staticData->serializedATN = antlr4::atn::SerializedATNView(serializedATNSegment, sizeof(serializedATNSegment) / sizeof(serializedATNSegment[0]));

File diff suppressed because it is too large Load Diff