diff --git a/Sysy.g4 b/Sysy.g4 index 9b28b6d..52f5b53 100644 --- a/Sysy.g4 +++ b/Sysy.g4 @@ -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 \ No newline at end of file +// 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:'||'; diff --git a/include/antlrgen/SysyLexer.h b/include/antlrgen/SysyLexer.h index f68e3e9..4b2dada 100644 --- a/include/antlrgen/SysyLexer.h +++ b/include/antlrgen/SysyLexer.h @@ -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); diff --git a/include/antlrgen/SysyParser.h b/include/antlrgen/SysyParser.h index c45e7c4..4e3acb0 100644 --- a/include/antlrgen/SysyParser.h +++ b/include/antlrgen/SysyParser.h @@ -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 constDef(); ConstDefContext* constDef(size_t i); + antlr4::tree::TerminalNode *SEMICOLON(); + std::vector 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 LBRACKET(); + antlr4::tree::TerminalNode* LBRACKET(size_t i); std::vector constExp(); ConstExpContext* constExp(size_t i); + std::vector 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 constInitVal(); ConstInitValContext* constInitVal(size_t i); + std::vector COMMA(); + antlr4::tree::TerminalNode* COMMA(size_t i); virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override; - + public: + std::vector arrDim; }; ConstInitValContext* constInitVal(); @@ -194,6 +209,9 @@ public: BTypeContext *bType(); std::vector varDef(); VarDefContext* varDef(size_t i); + antlr4::tree::TerminalNode *SEMICOLON(); + std::vector 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 LBRACKET(); + antlr4::tree::TerminalNode* LBRACKET(size_t i); std::vector constExp(); ConstExpContext* constExp(size_t i); + std::vector 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 initVal(); InitValContext* initVal(size_t i); + std::vector 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 funcFParam(); FuncFParamContext* funcFParam(size_t i); + std::vector 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 LBRACKET(); + antlr4::tree::TerminalNode* LBRACKET(size_t i); + std::vector RBRACKET(); + antlr4::tree::TerminalNode* RBRACKET(size_t i); std::vector 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 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 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 LBRACKET(); + antlr4::tree::TerminalNode* LBRACKET(size_t i); std::vector exp(); ExpContext* exp(size_t i); + std::vector 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 funcRParam(); FuncRParamContext* funcRParam(size_t i); + std::vector 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; diff --git a/src/antlrgen/SysyLexer.cpp b/src/antlrgen/SysyLexer.cpp index b53071e..61cdff4 100644 --- a/src/antlrgen/SysyLexer.cpp +++ b/src/antlrgen/SysyLexer.cpp @@ -49,12 +49,13 @@ void sysylexerLexerInitialize() { assert(sysylexerLexerStaticData == nullptr); auto staticData = std::make_unique( std::vector{ - "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{ "DEFAULT_TOKEN_CHANNEL", "HIDDEN" @@ -63,16 +64,19 @@ void sysylexerLexerInitialize() { "DEFAULT_MODE" }, std::vector{ - "", "'const'", "','", "';'", "'int'", "'['", "']'", "'='", "'{'", - "'}'", "'('", "')'", "'void'", "'if'", "'else'", "'while'", "'break'", - "'continue'", "'return'", "'+'", "'-'", "'!'", "'*'", "'/'", "'%'", - "'<'", "'>'", "'<='", "'>='", "'=='", "'!='", "'&&'", "'||'" + "", "", "", "", "", "", "", "", "", "'const'", "','", "';'", "'int'", + "'['", "']'", "'='", "'{'", "'}'", "'('", "')'", "'void'", "'if'", + "'else'", "'while'", "'break'", "'continue'", "'return'", "'+'", "'-'", + "'!'", "'*'", "'/'", "'%'", "'<'", "'>'", "'<='", "'>='", "'=='", + "'!='", "'&&'", "'||'" }, std::vector{ - "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", - "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "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])); diff --git a/src/antlrgen/SysyParser.cpp b/src/antlrgen/SysyParser.cpp index 2fb3a05..42f6c86 100644 --- a/src/antlrgen/SysyParser.cpp +++ b/src/antlrgen/SysyParser.cpp @@ -52,16 +52,19 @@ void sysyParserInitialize() { "constExp" }, std::vector{ - "", "'const'", "','", "';'", "'int'", "'['", "']'", "'='", "'{'", - "'}'", "'('", "')'", "'void'", "'if'", "'else'", "'while'", "'break'", - "'continue'", "'return'", "'+'", "'-'", "'!'", "'*'", "'/'", "'%'", - "'<'", "'>'", "'<='", "'>='", "'=='", "'!='", "'&&'", "'||'" + "", "", "", "", "", "", "", "", "", "'const'", "','", "';'", "'int'", + "'['", "']'", "'='", "'{'", "'}'", "'('", "')'", "'void'", "'if'", + "'else'", "'while'", "'break'", "'continue'", "'return'", "'+'", "'-'", + "'!'", "'*'", "'/'", "'%'", "'<'", "'>'", "'<='", "'>='", "'=='", + "'!='", "'&&'", "'||'" }, std::vector{ - "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", - "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "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[] = { @@ -95,8 +98,8 @@ void sysyParserInitialize() { 9,31,1,32,1,32,1,32,1,32,1,32,1,32,5,32,359,8,32,10,32,12,32,362,9,32, 1,33,1,33,1,33,0,6,54,56,58,60,62,64,34,0,2,4,6,8,10,12,14,16,18,20,22, 24,26,28,30,32,34,36,38,40,42,44,46,48,50,52,54,56,58,60,62,64,66,0,7, - 2,0,4,4,12,12,1,0,34,36,1,0,19,21,1,0,22,24,1,0,19,20,1,0,25,28,1,0,29, - 30,375,0,68,1,0,0,0,2,72,1,0,0,0,4,78,1,0,0,0,6,80,1,0,0,0,8,92,1,0,0, + 2,0,12,12,20,20,1,0,2,4,1,0,27,29,1,0,30,32,1,0,27,28,1,0,33,36,1,0,37, + 38,375,0,68,1,0,0,0,2,72,1,0,0,0,4,78,1,0,0,0,6,80,1,0,0,0,8,92,1,0,0, 0,10,94,1,0,0,0,12,120,1,0,0,0,14,122,1,0,0,0,16,133,1,0,0,0,18,160,1, 0,0,0,20,162,1,0,0,0,22,171,1,0,0,0,24,173,1,0,0,0,26,181,1,0,0,0,28, 196,1,0,0,0,30,207,1,0,0,0,32,243,1,0,0,0,34,245,1,0,0,0,36,247,1,0,0, @@ -106,84 +109,85 @@ void sysyParserInitialize() { 0,66,363,1,0,0,0,68,69,3,2,1,0,69,1,1,0,0,0,70,73,3,20,10,0,71,73,3,4, 2,0,72,70,1,0,0,0,72,71,1,0,0,0,73,74,1,0,0,0,74,72,1,0,0,0,74,75,1,0, 0,0,75,3,1,0,0,0,76,79,3,6,3,0,77,79,3,14,7,0,78,76,1,0,0,0,78,77,1,0, - 0,0,79,5,1,0,0,0,80,81,5,1,0,0,81,82,3,8,4,0,82,87,3,10,5,0,83,84,5,2, + 0,0,79,5,1,0,0,0,80,81,5,9,0,0,81,82,3,8,4,0,82,87,3,10,5,0,83,84,5,10, 0,0,84,86,3,10,5,0,85,83,1,0,0,0,86,89,1,0,0,0,87,85,1,0,0,0,87,88,1, - 0,0,0,88,90,1,0,0,0,89,87,1,0,0,0,90,91,5,3,0,0,91,7,1,0,0,0,92,93,5, - 4,0,0,93,9,1,0,0,0,94,101,5,33,0,0,95,96,5,5,0,0,96,97,3,66,33,0,97,98, - 5,6,0,0,98,100,1,0,0,0,99,95,1,0,0,0,100,103,1,0,0,0,101,99,1,0,0,0,101, - 102,1,0,0,0,102,104,1,0,0,0,103,101,1,0,0,0,104,105,5,7,0,0,105,106,3, - 12,6,0,106,11,1,0,0,0,107,121,3,66,33,0,108,117,5,8,0,0,109,114,3,12, - 6,0,110,111,5,2,0,0,111,113,3,12,6,0,112,110,1,0,0,0,113,116,1,0,0,0, - 114,112,1,0,0,0,114,115,1,0,0,0,115,118,1,0,0,0,116,114,1,0,0,0,117,109, - 1,0,0,0,117,118,1,0,0,0,118,119,1,0,0,0,119,121,5,9,0,0,120,107,1,0,0, - 0,120,108,1,0,0,0,121,13,1,0,0,0,122,123,3,8,4,0,123,128,3,16,8,0,124, - 125,5,2,0,0,125,127,3,16,8,0,126,124,1,0,0,0,127,130,1,0,0,0,128,126, - 1,0,0,0,128,129,1,0,0,0,129,131,1,0,0,0,130,128,1,0,0,0,131,132,5,3,0, - 0,132,15,1,0,0,0,133,140,5,33,0,0,134,135,5,5,0,0,135,136,3,66,33,0,136, - 137,5,6,0,0,137,139,1,0,0,0,138,134,1,0,0,0,139,142,1,0,0,0,140,138,1, - 0,0,0,140,141,1,0,0,0,141,145,1,0,0,0,142,140,1,0,0,0,143,144,5,7,0,0, - 144,146,3,18,9,0,145,143,1,0,0,0,145,146,1,0,0,0,146,17,1,0,0,0,147,161, - 3,34,17,0,148,157,5,8,0,0,149,154,3,18,9,0,150,151,5,2,0,0,151,153,3, - 18,9,0,152,150,1,0,0,0,153,156,1,0,0,0,154,152,1,0,0,0,154,155,1,0,0, - 0,155,158,1,0,0,0,156,154,1,0,0,0,157,149,1,0,0,0,157,158,1,0,0,0,158, - 159,1,0,0,0,159,161,5,9,0,0,160,147,1,0,0,0,160,148,1,0,0,0,161,19,1, - 0,0,0,162,163,3,22,11,0,163,164,5,33,0,0,164,166,5,10,0,0,165,167,3,24, - 12,0,166,165,1,0,0,0,166,167,1,0,0,0,167,168,1,0,0,0,168,169,5,11,0,0, - 169,170,3,28,14,0,170,21,1,0,0,0,171,172,7,0,0,0,172,23,1,0,0,0,173,178, - 3,26,13,0,174,175,5,2,0,0,175,177,3,26,13,0,176,174,1,0,0,0,177,180,1, - 0,0,0,178,176,1,0,0,0,178,179,1,0,0,0,179,25,1,0,0,0,180,178,1,0,0,0, - 181,182,3,8,4,0,182,194,5,33,0,0,183,184,5,5,0,0,184,191,5,6,0,0,185, - 186,5,5,0,0,186,187,3,34,17,0,187,188,5,6,0,0,188,190,1,0,0,0,189,185, - 1,0,0,0,190,193,1,0,0,0,191,189,1,0,0,0,191,192,1,0,0,0,192,195,1,0,0, - 0,193,191,1,0,0,0,194,183,1,0,0,0,194,195,1,0,0,0,195,27,1,0,0,0,196, - 200,5,8,0,0,197,199,3,30,15,0,198,197,1,0,0,0,199,202,1,0,0,0,200,198, - 1,0,0,0,200,201,1,0,0,0,201,203,1,0,0,0,202,200,1,0,0,0,203,204,5,9,0, - 0,204,29,1,0,0,0,205,208,3,4,2,0,206,208,3,32,16,0,207,205,1,0,0,0,207, - 206,1,0,0,0,208,31,1,0,0,0,209,210,3,38,19,0,210,211,5,7,0,0,211,212, - 3,34,17,0,212,213,5,3,0,0,213,244,1,0,0,0,214,216,3,34,17,0,215,214,1, - 0,0,0,215,216,1,0,0,0,216,217,1,0,0,0,217,244,5,3,0,0,218,244,3,28,14, - 0,219,220,5,13,0,0,220,221,5,10,0,0,221,222,3,36,18,0,222,223,5,11,0, - 0,223,226,3,32,16,0,224,225,5,14,0,0,225,227,3,32,16,0,226,224,1,0,0, - 0,226,227,1,0,0,0,227,244,1,0,0,0,228,229,5,15,0,0,229,230,5,10,0,0,230, - 231,3,36,18,0,231,232,5,11,0,0,232,233,3,32,16,0,233,244,1,0,0,0,234, - 235,5,16,0,0,235,244,5,3,0,0,236,237,5,17,0,0,237,244,5,3,0,0,238,240, - 5,18,0,0,239,241,3,34,17,0,240,239,1,0,0,0,240,241,1,0,0,0,241,242,1, - 0,0,0,242,244,5,3,0,0,243,209,1,0,0,0,243,215,1,0,0,0,243,218,1,0,0,0, - 243,219,1,0,0,0,243,228,1,0,0,0,243,234,1,0,0,0,243,236,1,0,0,0,243,238, - 1,0,0,0,244,33,1,0,0,0,245,246,3,56,28,0,246,35,1,0,0,0,247,248,3,64, - 32,0,248,37,1,0,0,0,249,256,5,33,0,0,250,251,5,5,0,0,251,252,3,34,17, - 0,252,253,5,6,0,0,253,255,1,0,0,0,254,250,1,0,0,0,255,258,1,0,0,0,256, - 254,1,0,0,0,256,257,1,0,0,0,257,39,1,0,0,0,258,256,1,0,0,0,259,260,5, - 10,0,0,260,261,3,34,17,0,261,262,5,11,0,0,262,266,1,0,0,0,263,266,3,38, - 19,0,264,266,3,42,21,0,265,259,1,0,0,0,265,263,1,0,0,0,265,264,1,0,0, - 0,266,41,1,0,0,0,267,268,3,44,22,0,268,43,1,0,0,0,269,270,7,1,0,0,270, - 45,1,0,0,0,271,282,3,40,20,0,272,273,5,33,0,0,273,275,5,10,0,0,274,276, - 3,50,25,0,275,274,1,0,0,0,275,276,1,0,0,0,276,277,1,0,0,0,277,282,5,11, - 0,0,278,279,3,48,24,0,279,280,3,46,23,0,280,282,1,0,0,0,281,271,1,0,0, - 0,281,272,1,0,0,0,281,278,1,0,0,0,282,47,1,0,0,0,283,284,7,2,0,0,284, - 49,1,0,0,0,285,290,3,52,26,0,286,287,5,2,0,0,287,289,3,52,26,0,288,286, - 1,0,0,0,289,292,1,0,0,0,290,288,1,0,0,0,290,291,1,0,0,0,291,51,1,0,0, - 0,292,290,1,0,0,0,293,296,3,34,17,0,294,296,5,40,0,0,295,293,1,0,0,0, - 295,294,1,0,0,0,296,53,1,0,0,0,297,298,6,27,-1,0,298,299,3,46,23,0,299, - 305,1,0,0,0,300,301,10,1,0,0,301,302,7,3,0,0,302,304,3,46,23,0,303,300, - 1,0,0,0,304,307,1,0,0,0,305,303,1,0,0,0,305,306,1,0,0,0,306,55,1,0,0, - 0,307,305,1,0,0,0,308,309,6,28,-1,0,309,310,3,54,27,0,310,316,1,0,0,0, - 311,312,10,1,0,0,312,313,7,4,0,0,313,315,3,54,27,0,314,311,1,0,0,0,315, - 318,1,0,0,0,316,314,1,0,0,0,316,317,1,0,0,0,317,57,1,0,0,0,318,316,1, - 0,0,0,319,320,6,29,-1,0,320,321,3,56,28,0,321,327,1,0,0,0,322,323,10, - 1,0,0,323,324,7,5,0,0,324,326,3,56,28,0,325,322,1,0,0,0,326,329,1,0,0, - 0,327,325,1,0,0,0,327,328,1,0,0,0,328,59,1,0,0,0,329,327,1,0,0,0,330, - 331,6,30,-1,0,331,332,3,58,29,0,332,338,1,0,0,0,333,334,10,1,0,0,334, - 335,7,6,0,0,335,337,3,58,29,0,336,333,1,0,0,0,337,340,1,0,0,0,338,336, - 1,0,0,0,338,339,1,0,0,0,339,61,1,0,0,0,340,338,1,0,0,0,341,342,6,31,-1, - 0,342,343,3,60,30,0,343,349,1,0,0,0,344,345,10,1,0,0,345,346,5,31,0,0, - 346,348,3,60,30,0,347,344,1,0,0,0,348,351,1,0,0,0,349,347,1,0,0,0,349, - 350,1,0,0,0,350,63,1,0,0,0,351,349,1,0,0,0,352,353,6,32,-1,0,353,354, - 3,62,31,0,354,360,1,0,0,0,355,356,10,1,0,0,356,357,5,32,0,0,357,359,3, - 62,31,0,358,355,1,0,0,0,359,362,1,0,0,0,360,358,1,0,0,0,360,361,1,0,0, - 0,361,65,1,0,0,0,362,360,1,0,0,0,363,364,3,56,28,0,364,67,1,0,0,0,36, - 72,74,78,87,101,114,117,120,128,140,145,154,157,160,166,178,191,194,200, - 207,215,226,240,243,256,265,275,281,290,295,305,316,327,338,349,360 + 0,0,0,88,90,1,0,0,0,89,87,1,0,0,0,90,91,5,11,0,0,91,7,1,0,0,0,92,93,5, + 12,0,0,93,9,1,0,0,0,94,101,5,1,0,0,95,96,5,13,0,0,96,97,3,66,33,0,97, + 98,5,14,0,0,98,100,1,0,0,0,99,95,1,0,0,0,100,103,1,0,0,0,101,99,1,0,0, + 0,101,102,1,0,0,0,102,104,1,0,0,0,103,101,1,0,0,0,104,105,5,15,0,0,105, + 106,3,12,6,0,106,11,1,0,0,0,107,121,3,66,33,0,108,117,5,16,0,0,109,114, + 3,12,6,0,110,111,5,10,0,0,111,113,3,12,6,0,112,110,1,0,0,0,113,116,1, + 0,0,0,114,112,1,0,0,0,114,115,1,0,0,0,115,118,1,0,0,0,116,114,1,0,0,0, + 117,109,1,0,0,0,117,118,1,0,0,0,118,119,1,0,0,0,119,121,5,17,0,0,120, + 107,1,0,0,0,120,108,1,0,0,0,121,13,1,0,0,0,122,123,3,8,4,0,123,128,3, + 16,8,0,124,125,5,10,0,0,125,127,3,16,8,0,126,124,1,0,0,0,127,130,1,0, + 0,0,128,126,1,0,0,0,128,129,1,0,0,0,129,131,1,0,0,0,130,128,1,0,0,0,131, + 132,5,11,0,0,132,15,1,0,0,0,133,140,5,1,0,0,134,135,5,13,0,0,135,136, + 3,66,33,0,136,137,5,14,0,0,137,139,1,0,0,0,138,134,1,0,0,0,139,142,1, + 0,0,0,140,138,1,0,0,0,140,141,1,0,0,0,141,145,1,0,0,0,142,140,1,0,0,0, + 143,144,5,15,0,0,144,146,3,18,9,0,145,143,1,0,0,0,145,146,1,0,0,0,146, + 17,1,0,0,0,147,161,3,34,17,0,148,157,5,16,0,0,149,154,3,18,9,0,150,151, + 5,10,0,0,151,153,3,18,9,0,152,150,1,0,0,0,153,156,1,0,0,0,154,152,1,0, + 0,0,154,155,1,0,0,0,155,158,1,0,0,0,156,154,1,0,0,0,157,149,1,0,0,0,157, + 158,1,0,0,0,158,159,1,0,0,0,159,161,5,17,0,0,160,147,1,0,0,0,160,148, + 1,0,0,0,161,19,1,0,0,0,162,163,3,22,11,0,163,164,5,1,0,0,164,166,5,18, + 0,0,165,167,3,24,12,0,166,165,1,0,0,0,166,167,1,0,0,0,167,168,1,0,0,0, + 168,169,5,19,0,0,169,170,3,28,14,0,170,21,1,0,0,0,171,172,7,0,0,0,172, + 23,1,0,0,0,173,178,3,26,13,0,174,175,5,10,0,0,175,177,3,26,13,0,176,174, + 1,0,0,0,177,180,1,0,0,0,178,176,1,0,0,0,178,179,1,0,0,0,179,25,1,0,0, + 0,180,178,1,0,0,0,181,182,3,8,4,0,182,194,5,1,0,0,183,184,5,13,0,0,184, + 191,5,14,0,0,185,186,5,13,0,0,186,187,3,34,17,0,187,188,5,14,0,0,188, + 190,1,0,0,0,189,185,1,0,0,0,190,193,1,0,0,0,191,189,1,0,0,0,191,192,1, + 0,0,0,192,195,1,0,0,0,193,191,1,0,0,0,194,183,1,0,0,0,194,195,1,0,0,0, + 195,27,1,0,0,0,196,200,5,16,0,0,197,199,3,30,15,0,198,197,1,0,0,0,199, + 202,1,0,0,0,200,198,1,0,0,0,200,201,1,0,0,0,201,203,1,0,0,0,202,200,1, + 0,0,0,203,204,5,17,0,0,204,29,1,0,0,0,205,208,3,4,2,0,206,208,3,32,16, + 0,207,205,1,0,0,0,207,206,1,0,0,0,208,31,1,0,0,0,209,210,3,38,19,0,210, + 211,5,15,0,0,211,212,3,34,17,0,212,213,5,11,0,0,213,244,1,0,0,0,214,216, + 3,34,17,0,215,214,1,0,0,0,215,216,1,0,0,0,216,217,1,0,0,0,217,244,5,11, + 0,0,218,244,3,28,14,0,219,220,5,21,0,0,220,221,5,18,0,0,221,222,3,36, + 18,0,222,223,5,19,0,0,223,226,3,32,16,0,224,225,5,22,0,0,225,227,3,32, + 16,0,226,224,1,0,0,0,226,227,1,0,0,0,227,244,1,0,0,0,228,229,5,23,0,0, + 229,230,5,18,0,0,230,231,3,36,18,0,231,232,5,19,0,0,232,233,3,32,16,0, + 233,244,1,0,0,0,234,235,5,24,0,0,235,244,5,11,0,0,236,237,5,25,0,0,237, + 244,5,11,0,0,238,240,5,26,0,0,239,241,3,34,17,0,240,239,1,0,0,0,240,241, + 1,0,0,0,241,242,1,0,0,0,242,244,5,11,0,0,243,209,1,0,0,0,243,215,1,0, + 0,0,243,218,1,0,0,0,243,219,1,0,0,0,243,228,1,0,0,0,243,234,1,0,0,0,243, + 236,1,0,0,0,243,238,1,0,0,0,244,33,1,0,0,0,245,246,3,56,28,0,246,35,1, + 0,0,0,247,248,3,64,32,0,248,37,1,0,0,0,249,256,5,1,0,0,250,251,5,13,0, + 0,251,252,3,34,17,0,252,253,5,14,0,0,253,255,1,0,0,0,254,250,1,0,0,0, + 255,258,1,0,0,0,256,254,1,0,0,0,256,257,1,0,0,0,257,39,1,0,0,0,258,256, + 1,0,0,0,259,260,5,18,0,0,260,261,3,34,17,0,261,262,5,19,0,0,262,266,1, + 0,0,0,263,266,3,38,19,0,264,266,3,42,21,0,265,259,1,0,0,0,265,263,1,0, + 0,0,265,264,1,0,0,0,266,41,1,0,0,0,267,268,3,44,22,0,268,43,1,0,0,0,269, + 270,7,1,0,0,270,45,1,0,0,0,271,282,3,40,20,0,272,273,5,1,0,0,273,275, + 5,18,0,0,274,276,3,50,25,0,275,274,1,0,0,0,275,276,1,0,0,0,276,277,1, + 0,0,0,277,282,5,19,0,0,278,279,3,48,24,0,279,280,3,46,23,0,280,282,1, + 0,0,0,281,271,1,0,0,0,281,272,1,0,0,0,281,278,1,0,0,0,282,47,1,0,0,0, + 283,284,7,2,0,0,284,49,1,0,0,0,285,290,3,52,26,0,286,287,5,10,0,0,287, + 289,3,52,26,0,288,286,1,0,0,0,289,292,1,0,0,0,290,288,1,0,0,0,290,291, + 1,0,0,0,291,51,1,0,0,0,292,290,1,0,0,0,293,296,3,34,17,0,294,296,5,8, + 0,0,295,293,1,0,0,0,295,294,1,0,0,0,296,53,1,0,0,0,297,298,6,27,-1,0, + 298,299,3,46,23,0,299,305,1,0,0,0,300,301,10,1,0,0,301,302,7,3,0,0,302, + 304,3,46,23,0,303,300,1,0,0,0,304,307,1,0,0,0,305,303,1,0,0,0,305,306, + 1,0,0,0,306,55,1,0,0,0,307,305,1,0,0,0,308,309,6,28,-1,0,309,310,3,54, + 27,0,310,316,1,0,0,0,311,312,10,1,0,0,312,313,7,4,0,0,313,315,3,54,27, + 0,314,311,1,0,0,0,315,318,1,0,0,0,316,314,1,0,0,0,316,317,1,0,0,0,317, + 57,1,0,0,0,318,316,1,0,0,0,319,320,6,29,-1,0,320,321,3,56,28,0,321,327, + 1,0,0,0,322,323,10,1,0,0,323,324,7,5,0,0,324,326,3,56,28,0,325,322,1, + 0,0,0,326,329,1,0,0,0,327,325,1,0,0,0,327,328,1,0,0,0,328,59,1,0,0,0, + 329,327,1,0,0,0,330,331,6,30,-1,0,331,332,3,58,29,0,332,338,1,0,0,0,333, + 334,10,1,0,0,334,335,7,6,0,0,335,337,3,58,29,0,336,333,1,0,0,0,337,340, + 1,0,0,0,338,336,1,0,0,0,338,339,1,0,0,0,339,61,1,0,0,0,340,338,1,0,0, + 0,341,342,6,31,-1,0,342,343,3,60,30,0,343,349,1,0,0,0,344,345,10,1,0, + 0,345,346,5,39,0,0,346,348,3,60,30,0,347,344,1,0,0,0,348,351,1,0,0,0, + 349,347,1,0,0,0,349,350,1,0,0,0,350,63,1,0,0,0,351,349,1,0,0,0,352,353, + 6,32,-1,0,353,354,3,62,31,0,354,360,1,0,0,0,355,356,10,1,0,0,356,357, + 5,40,0,0,357,359,3,62,31,0,358,355,1,0,0,0,359,362,1,0,0,0,360,358,1, + 0,0,0,360,361,1,0,0,0,361,65,1,0,0,0,362,360,1,0,0,0,363,364,3,56,28, + 0,364,67,1,0,0,0,36,72,74,78,87,101,114,117,120,128,140,145,154,157,160, + 166,178,191,194,200,207,215,226,240,243,256,265,275,281,290,295,305,316, + 327,338,349,360 }; staticData->serializedATN = antlr4::atn::SerializedATNView(serializedATNSegment, sizeof(serializedATNSegment) / sizeof(serializedATNSegment[0])); @@ -356,7 +360,7 @@ SysyParser::CompUnitContext* SysyParser::compUnit() { _errHandler->sync(this); _la = _input->LA(1); } while ((((_la & ~ 0x3fULL) == 0) && - ((1ULL << _la) & 4114) != 0)); + ((1ULL << _la) & 1053184) != 0)); } catch (RecognitionException &e) { @@ -410,14 +414,14 @@ SysyParser::DeclContext* SysyParser::decl() { setState(78); _errHandler->sync(this); switch (_input->LA(1)) { - case SysyParser::T__0: { + case SysyParser::CONST: { enterOuterAlt(_localctx, 1); setState(76); constDecl(); break; } - case SysyParser::T__3: { + case SysyParser::INT: { enterOuterAlt(_localctx, 2); setState(77); varDecl(); @@ -444,6 +448,10 @@ SysyParser::ConstDeclContext::ConstDeclContext(ParserRuleContext *parent, size_t : ParserRuleContext(parent, invokingState) { } +tree::TerminalNode* SysyParser::ConstDeclContext::CONST() { + return getToken(SysyParser::CONST, 0); +} + SysyParser::BTypeContext* SysyParser::ConstDeclContext::bType() { return getRuleContext(0); } @@ -456,6 +464,18 @@ SysyParser::ConstDefContext* SysyParser::ConstDeclContext::constDef(size_t i) { return getRuleContext(i); } +tree::TerminalNode* SysyParser::ConstDeclContext::SEMICOLON() { + return getToken(SysyParser::SEMICOLON, 0); +} + +std::vector SysyParser::ConstDeclContext::COMMA() { + return getTokens(SysyParser::COMMA); +} + +tree::TerminalNode* SysyParser::ConstDeclContext::COMMA(size_t i) { + return getToken(SysyParser::COMMA, i); +} + size_t SysyParser::ConstDeclContext::getRuleIndex() const { return SysyParser::RuleConstDecl; @@ -484,7 +504,7 @@ SysyParser::ConstDeclContext* SysyParser::constDecl() { try { enterOuterAlt(_localctx, 1); setState(80); - match(SysyParser::T__0); + match(SysyParser::CONST); setState(81); bType(); setState(82); @@ -492,9 +512,9 @@ SysyParser::ConstDeclContext* SysyParser::constDecl() { setState(87); _errHandler->sync(this); _la = _input->LA(1); - while (_la == SysyParser::T__1) { + while (_la == SysyParser::COMMA) { setState(83); - match(SysyParser::T__1); + match(SysyParser::COMMA); setState(84); constDef(); setState(89); @@ -502,7 +522,7 @@ SysyParser::ConstDeclContext* SysyParser::constDecl() { _la = _input->LA(1); } setState(90); - match(SysyParser::T__2); + match(SysyParser::SEMICOLON); } catch (RecognitionException &e) { @@ -520,6 +540,10 @@ SysyParser::BTypeContext::BTypeContext(ParserRuleContext *parent, size_t invokin : ParserRuleContext(parent, invokingState) { } +tree::TerminalNode* SysyParser::BTypeContext::INT() { + return getToken(SysyParser::INT, 0); +} + size_t SysyParser::BTypeContext::getRuleIndex() const { return SysyParser::RuleBType; @@ -547,7 +571,7 @@ SysyParser::BTypeContext* SysyParser::bType() { try { enterOuterAlt(_localctx, 1); setState(92); - match(SysyParser::T__3); + match(SysyParser::INT); } catch (RecognitionException &e) { @@ -569,10 +593,22 @@ tree::TerminalNode* SysyParser::ConstDefContext::IDENT() { return getToken(SysyParser::IDENT, 0); } +tree::TerminalNode* SysyParser::ConstDefContext::ASSING() { + return getToken(SysyParser::ASSING, 0); +} + SysyParser::ConstInitValContext* SysyParser::ConstDefContext::constInitVal() { return getRuleContext(0); } +std::vector SysyParser::ConstDefContext::LBRACKET() { + return getTokens(SysyParser::LBRACKET); +} + +tree::TerminalNode* SysyParser::ConstDefContext::LBRACKET(size_t i) { + return getToken(SysyParser::LBRACKET, i); +} + std::vector SysyParser::ConstDefContext::constExp() { return getRuleContexts(); } @@ -581,6 +617,14 @@ SysyParser::ConstExpContext* SysyParser::ConstDefContext::constExp(size_t i) { return getRuleContext(i); } +std::vector SysyParser::ConstDefContext::RBRACKET() { + return getTokens(SysyParser::RBRACKET); +} + +tree::TerminalNode* SysyParser::ConstDefContext::RBRACKET(size_t i) { + return getToken(SysyParser::RBRACKET, i); +} + size_t SysyParser::ConstDefContext::getRuleIndex() const { return SysyParser::RuleConstDef; @@ -613,19 +657,19 @@ SysyParser::ConstDefContext* SysyParser::constDef() { setState(101); _errHandler->sync(this); _la = _input->LA(1); - while (_la == SysyParser::T__4) { + while (_la == SysyParser::LBRACKET) { setState(95); - match(SysyParser::T__4); + match(SysyParser::LBRACKET); setState(96); constExp(); setState(97); - match(SysyParser::T__5); + match(SysyParser::RBRACKET); setState(103); _errHandler->sync(this); _la = _input->LA(1); } setState(104); - match(SysyParser::T__6); + match(SysyParser::ASSING); setState(105); constInitVal(); @@ -649,6 +693,14 @@ SysyParser::ConstExpContext* SysyParser::ConstInitValContext::constExp() { return getRuleContext(0); } +tree::TerminalNode* SysyParser::ConstInitValContext::LBRACE() { + return getToken(SysyParser::LBRACE, 0); +} + +tree::TerminalNode* SysyParser::ConstInitValContext::RBRACE() { + return getToken(SysyParser::RBRACE, 0); +} + std::vector SysyParser::ConstInitValContext::constInitVal() { return getRuleContexts(); } @@ -657,6 +709,14 @@ SysyParser::ConstInitValContext* SysyParser::ConstInitValContext::constInitVal(s return getRuleContext(i); } +std::vector SysyParser::ConstInitValContext::COMMA() { + return getTokens(SysyParser::COMMA); +} + +tree::TerminalNode* SysyParser::ConstInitValContext::COMMA(size_t i) { + return getToken(SysyParser::COMMA, i); +} + size_t SysyParser::ConstInitValContext::getRuleIndex() const { return SysyParser::RuleConstInitVal; @@ -686,38 +746,38 @@ SysyParser::ConstInitValContext* SysyParser::constInitVal() { setState(120); _errHandler->sync(this); switch (_input->LA(1)) { - case SysyParser::T__9: - case SysyParser::T__18: - case SysyParser::T__19: - case SysyParser::T__20: case SysyParser::IDENT: case SysyParser::DECIMAL_CONST: case SysyParser::OCTAL_CONST: - case SysyParser::HEXADECIMAL_CONST: { + case SysyParser::HEXADECIMAL_CONST: + case SysyParser::LPAREN: + case SysyParser::ADD: + case SysyParser::SUB: + case SysyParser::NOT: { enterOuterAlt(_localctx, 1); setState(107); constExp(); break; } - case SysyParser::T__7: { + case SysyParser::LBRACE: { enterOuterAlt(_localctx, 2); setState(108); - match(SysyParser::T__7); + match(SysyParser::LBRACE); setState(117); _errHandler->sync(this); _la = _input->LA(1); if ((((_la & ~ 0x3fULL) == 0) && - ((1ULL << _la) & 128852690176) != 0)) { + ((1ULL << _la) & 939851806) != 0)) { setState(109); constInitVal(); setState(114); _errHandler->sync(this); _la = _input->LA(1); - while (_la == SysyParser::T__1) { + while (_la == SysyParser::COMMA) { setState(110); - match(SysyParser::T__1); + match(SysyParser::COMMA); setState(111); constInitVal(); setState(116); @@ -726,7 +786,7 @@ SysyParser::ConstInitValContext* SysyParser::constInitVal() { } } setState(119); - match(SysyParser::T__8); + match(SysyParser::RBRACE); break; } @@ -762,6 +822,18 @@ SysyParser::VarDefContext* SysyParser::VarDeclContext::varDef(size_t i) { return getRuleContext(i); } +tree::TerminalNode* SysyParser::VarDeclContext::SEMICOLON() { + return getToken(SysyParser::SEMICOLON, 0); +} + +std::vector SysyParser::VarDeclContext::COMMA() { + return getTokens(SysyParser::COMMA); +} + +tree::TerminalNode* SysyParser::VarDeclContext::COMMA(size_t i) { + return getToken(SysyParser::COMMA, i); +} + size_t SysyParser::VarDeclContext::getRuleIndex() const { return SysyParser::RuleVarDecl; @@ -796,9 +868,9 @@ SysyParser::VarDeclContext* SysyParser::varDecl() { setState(128); _errHandler->sync(this); _la = _input->LA(1); - while (_la == SysyParser::T__1) { + while (_la == SysyParser::COMMA) { setState(124); - match(SysyParser::T__1); + match(SysyParser::COMMA); setState(125); varDef(); setState(130); @@ -806,7 +878,7 @@ SysyParser::VarDeclContext* SysyParser::varDecl() { _la = _input->LA(1); } setState(131); - match(SysyParser::T__2); + match(SysyParser::SEMICOLON); } catch (RecognitionException &e) { @@ -828,6 +900,14 @@ tree::TerminalNode* SysyParser::VarDefContext::IDENT() { return getToken(SysyParser::IDENT, 0); } +std::vector SysyParser::VarDefContext::LBRACKET() { + return getTokens(SysyParser::LBRACKET); +} + +tree::TerminalNode* SysyParser::VarDefContext::LBRACKET(size_t i) { + return getToken(SysyParser::LBRACKET, i); +} + std::vector SysyParser::VarDefContext::constExp() { return getRuleContexts(); } @@ -836,6 +916,18 @@ SysyParser::ConstExpContext* SysyParser::VarDefContext::constExp(size_t i) { return getRuleContext(i); } +std::vector SysyParser::VarDefContext::RBRACKET() { + return getTokens(SysyParser::RBRACKET); +} + +tree::TerminalNode* SysyParser::VarDefContext::RBRACKET(size_t i) { + return getToken(SysyParser::RBRACKET, i); +} + +tree::TerminalNode* SysyParser::VarDefContext::ASSING() { + return getToken(SysyParser::ASSING, 0); +} + SysyParser::InitValContext* SysyParser::VarDefContext::initVal() { return getRuleContext(0); } @@ -872,13 +964,13 @@ SysyParser::VarDefContext* SysyParser::varDef() { setState(140); _errHandler->sync(this); _la = _input->LA(1); - while (_la == SysyParser::T__4) { + while (_la == SysyParser::LBRACKET) { setState(134); - match(SysyParser::T__4); + match(SysyParser::LBRACKET); setState(135); constExp(); setState(136); - match(SysyParser::T__5); + match(SysyParser::RBRACKET); setState(142); _errHandler->sync(this); _la = _input->LA(1); @@ -887,9 +979,9 @@ SysyParser::VarDefContext* SysyParser::varDef() { _errHandler->sync(this); _la = _input->LA(1); - if (_la == SysyParser::T__6) { + if (_la == SysyParser::ASSING) { setState(143); - match(SysyParser::T__6); + match(SysyParser::ASSING); setState(144); initVal(); } @@ -914,6 +1006,14 @@ SysyParser::ExpContext* SysyParser::InitValContext::exp() { return getRuleContext(0); } +tree::TerminalNode* SysyParser::InitValContext::LBRACE() { + return getToken(SysyParser::LBRACE, 0); +} + +tree::TerminalNode* SysyParser::InitValContext::RBRACE() { + return getToken(SysyParser::RBRACE, 0); +} + std::vector SysyParser::InitValContext::initVal() { return getRuleContexts(); } @@ -922,6 +1022,14 @@ SysyParser::InitValContext* SysyParser::InitValContext::initVal(size_t i) { return getRuleContext(i); } +std::vector SysyParser::InitValContext::COMMA() { + return getTokens(SysyParser::COMMA); +} + +tree::TerminalNode* SysyParser::InitValContext::COMMA(size_t i) { + return getToken(SysyParser::COMMA, i); +} + size_t SysyParser::InitValContext::getRuleIndex() const { return SysyParser::RuleInitVal; @@ -951,38 +1059,38 @@ SysyParser::InitValContext* SysyParser::initVal() { setState(160); _errHandler->sync(this); switch (_input->LA(1)) { - case SysyParser::T__9: - case SysyParser::T__18: - case SysyParser::T__19: - case SysyParser::T__20: case SysyParser::IDENT: case SysyParser::DECIMAL_CONST: case SysyParser::OCTAL_CONST: - case SysyParser::HEXADECIMAL_CONST: { + case SysyParser::HEXADECIMAL_CONST: + case SysyParser::LPAREN: + case SysyParser::ADD: + case SysyParser::SUB: + case SysyParser::NOT: { enterOuterAlt(_localctx, 1); setState(147); exp(); break; } - case SysyParser::T__7: { + case SysyParser::LBRACE: { enterOuterAlt(_localctx, 2); setState(148); - match(SysyParser::T__7); + match(SysyParser::LBRACE); setState(157); _errHandler->sync(this); _la = _input->LA(1); if ((((_la & ~ 0x3fULL) == 0) && - ((1ULL << _la) & 128852690176) != 0)) { + ((1ULL << _la) & 939851806) != 0)) { setState(149); initVal(); setState(154); _errHandler->sync(this); _la = _input->LA(1); - while (_la == SysyParser::T__1) { + while (_la == SysyParser::COMMA) { setState(150); - match(SysyParser::T__1); + match(SysyParser::COMMA); setState(151); initVal(); setState(156); @@ -991,7 +1099,7 @@ SysyParser::InitValContext* SysyParser::initVal() { } } setState(159); - match(SysyParser::T__8); + match(SysyParser::RBRACE); break; } @@ -1023,6 +1131,14 @@ tree::TerminalNode* SysyParser::FuncDefContext::IDENT() { return getToken(SysyParser::IDENT, 0); } +tree::TerminalNode* SysyParser::FuncDefContext::LPAREN() { + return getToken(SysyParser::LPAREN, 0); +} + +tree::TerminalNode* SysyParser::FuncDefContext::RPAREN() { + return getToken(SysyParser::RPAREN, 0); +} + SysyParser::BlockContext* SysyParser::FuncDefContext::block() { return getRuleContext(0); } @@ -1063,17 +1179,17 @@ SysyParser::FuncDefContext* SysyParser::funcDef() { setState(163); match(SysyParser::IDENT); setState(164); - match(SysyParser::T__9); + match(SysyParser::LPAREN); setState(166); _errHandler->sync(this); _la = _input->LA(1); - if (_la == SysyParser::T__3) { + if (_la == SysyParser::INT) { setState(165); funcFParams(); } setState(168); - match(SysyParser::T__10); + match(SysyParser::RPAREN); setState(169); block(); @@ -1093,6 +1209,14 @@ SysyParser::FuncTypeContext::FuncTypeContext(ParserRuleContext *parent, size_t i : ParserRuleContext(parent, invokingState) { } +tree::TerminalNode* SysyParser::FuncTypeContext::VOID() { + return getToken(SysyParser::VOID, 0); +} + +tree::TerminalNode* SysyParser::FuncTypeContext::INT() { + return getToken(SysyParser::INT, 0); +} + size_t SysyParser::FuncTypeContext::getRuleIndex() const { return SysyParser::RuleFuncType; @@ -1122,9 +1246,9 @@ SysyParser::FuncTypeContext* SysyParser::funcType() { enterOuterAlt(_localctx, 1); setState(171); _la = _input->LA(1); - if (!(_la == SysyParser::T__3 + if (!(_la == SysyParser::INT - || _la == SysyParser::T__11)) { + || _la == SysyParser::VOID)) { _errHandler->recoverInline(this); } else { @@ -1156,6 +1280,14 @@ SysyParser::FuncFParamContext* SysyParser::FuncFParamsContext::funcFParam(size_t return getRuleContext(i); } +std::vector SysyParser::FuncFParamsContext::COMMA() { + return getTokens(SysyParser::COMMA); +} + +tree::TerminalNode* SysyParser::FuncFParamsContext::COMMA(size_t i) { + return getToken(SysyParser::COMMA, i); +} + size_t SysyParser::FuncFParamsContext::getRuleIndex() const { return SysyParser::RuleFuncFParams; @@ -1188,9 +1320,9 @@ SysyParser::FuncFParamsContext* SysyParser::funcFParams() { setState(178); _errHandler->sync(this); _la = _input->LA(1); - while (_la == SysyParser::T__1) { + while (_la == SysyParser::COMMA) { setState(174); - match(SysyParser::T__1); + match(SysyParser::COMMA); setState(175); funcFParam(); setState(180); @@ -1222,6 +1354,22 @@ tree::TerminalNode* SysyParser::FuncFParamContext::IDENT() { return getToken(SysyParser::IDENT, 0); } +std::vector SysyParser::FuncFParamContext::LBRACKET() { + return getTokens(SysyParser::LBRACKET); +} + +tree::TerminalNode* SysyParser::FuncFParamContext::LBRACKET(size_t i) { + return getToken(SysyParser::LBRACKET, i); +} + +std::vector SysyParser::FuncFParamContext::RBRACKET() { + return getTokens(SysyParser::RBRACKET); +} + +tree::TerminalNode* SysyParser::FuncFParamContext::RBRACKET(size_t i) { + return getToken(SysyParser::RBRACKET, i); +} + std::vector SysyParser::FuncFParamContext::exp() { return getRuleContexts(); } @@ -1265,21 +1413,21 @@ SysyParser::FuncFParamContext* SysyParser::funcFParam() { _errHandler->sync(this); _la = _input->LA(1); - if (_la == SysyParser::T__4) { + if (_la == SysyParser::LBRACKET) { setState(183); - match(SysyParser::T__4); + match(SysyParser::LBRACKET); setState(184); - match(SysyParser::T__5); + match(SysyParser::RBRACKET); setState(191); _errHandler->sync(this); _la = _input->LA(1); - while (_la == SysyParser::T__4) { + while (_la == SysyParser::LBRACKET) { setState(185); - match(SysyParser::T__4); + match(SysyParser::LBRACKET); setState(186); exp(); setState(187); - match(SysyParser::T__5); + match(SysyParser::RBRACKET); setState(193); _errHandler->sync(this); _la = _input->LA(1); @@ -1302,6 +1450,14 @@ SysyParser::BlockContext::BlockContext(ParserRuleContext *parent, size_t invokin : ParserRuleContext(parent, invokingState) { } +tree::TerminalNode* SysyParser::BlockContext::LBRACE() { + return getToken(SysyParser::LBRACE, 0); +} + +tree::TerminalNode* SysyParser::BlockContext::RBRACE() { + return getToken(SysyParser::RBRACE, 0); +} + std::vector SysyParser::BlockContext::blockItem() { return getRuleContexts(); } @@ -1338,12 +1494,12 @@ SysyParser::BlockContext* SysyParser::block() { try { enterOuterAlt(_localctx, 1); setState(196); - match(SysyParser::T__7); + match(SysyParser::LBRACE); setState(200); _errHandler->sync(this); _la = _input->LA(1); while ((((_la & ~ 0x3fULL) == 0) && - ((1ULL << _la) & 128853189914) != 0)) { + ((1ULL << _la) & 1067784734) != 0)) { setState(197); blockItem(); setState(202); @@ -1351,7 +1507,7 @@ SysyParser::BlockContext* SysyParser::block() { _la = _input->LA(1); } setState(203); - match(SysyParser::T__8); + match(SysyParser::RBRACE); } catch (RecognitionException &e) { @@ -1405,29 +1561,29 @@ SysyParser::BlockItemContext* SysyParser::blockItem() { setState(207); _errHandler->sync(this); switch (_input->LA(1)) { - case SysyParser::T__0: - case SysyParser::T__3: { + case SysyParser::CONST: + case SysyParser::INT: { enterOuterAlt(_localctx, 1); setState(205); decl(); break; } - case SysyParser::T__2: - case SysyParser::T__7: - case SysyParser::T__9: - case SysyParser::T__12: - case SysyParser::T__14: - 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::IDENT: case SysyParser::DECIMAL_CONST: case SysyParser::OCTAL_CONST: - case SysyParser::HEXADECIMAL_CONST: { + case SysyParser::HEXADECIMAL_CONST: + case SysyParser::SEMICOLON: + case SysyParser::LBRACE: + case SysyParser::LPAREN: + case SysyParser::IF: + case SysyParser::WHILE: + case SysyParser::BREAK: + case SysyParser::CONTINUE: + case SysyParser::RETURN: + case SysyParser::ADD: + case SysyParser::SUB: + case SysyParser::NOT: { enterOuterAlt(_localctx, 2); setState(206); stmt(); @@ -1465,10 +1621,22 @@ void SysyParser::StmtContext::copyFrom(StmtContext *ctx) { //----------------- WhileStmtContext ------------------------------------------------------------------ +tree::TerminalNode* SysyParser::WhileStmtContext::WHILE() { + return getToken(SysyParser::WHILE, 0); +} + +tree::TerminalNode* SysyParser::WhileStmtContext::LPAREN() { + return getToken(SysyParser::LPAREN, 0); +} + SysyParser::CondContext* SysyParser::WhileStmtContext::cond() { return getRuleContext(0); } +tree::TerminalNode* SysyParser::WhileStmtContext::RPAREN() { + return getToken(SysyParser::RPAREN, 0); +} + SysyParser::StmtContext* SysyParser::WhileStmtContext::stmt() { return getRuleContext(0); } @@ -1484,10 +1652,22 @@ std::any SysyParser::WhileStmtContext::accept(tree::ParseTreeVisitor *visitor) { } //----------------- IfStmtContext ------------------------------------------------------------------ +tree::TerminalNode* SysyParser::IfStmtContext::IF() { + return getToken(SysyParser::IF, 0); +} + +tree::TerminalNode* SysyParser::IfStmtContext::LPAREN() { + return getToken(SysyParser::LPAREN, 0); +} + SysyParser::CondContext* SysyParser::IfStmtContext::cond() { return getRuleContext(0); } +tree::TerminalNode* SysyParser::IfStmtContext::RPAREN() { + return getToken(SysyParser::RPAREN, 0); +} + std::vector SysyParser::IfStmtContext::stmt() { return getRuleContexts(); } @@ -1496,6 +1676,10 @@ SysyParser::StmtContext* SysyParser::IfStmtContext::stmt(size_t i) { return getRuleContext(i); } +tree::TerminalNode* SysyParser::IfStmtContext::ELSE() { + return getToken(SysyParser::ELSE, 0); +} + SysyParser::IfStmtContext::IfStmtContext(StmtContext *ctx) { copyFrom(ctx); } @@ -1526,10 +1710,18 @@ SysyParser::LValContext* SysyParser::AssignStmtContext::lVal() { return getRuleContext(0); } +tree::TerminalNode* SysyParser::AssignStmtContext::ASSING() { + return getToken(SysyParser::ASSING, 0); +} + SysyParser::ExpContext* SysyParser::AssignStmtContext::exp() { return getRuleContext(0); } +tree::TerminalNode* SysyParser::AssignStmtContext::SEMICOLON() { + return getToken(SysyParser::SEMICOLON, 0); +} + SysyParser::AssignStmtContext::AssignStmtContext(StmtContext *ctx) { copyFrom(ctx); } @@ -1541,6 +1733,14 @@ std::any SysyParser::AssignStmtContext::accept(tree::ParseTreeVisitor *visitor) } //----------------- BreakStmtContext ------------------------------------------------------------------ +tree::TerminalNode* SysyParser::BreakStmtContext::BREAK() { + return getToken(SysyParser::BREAK, 0); +} + +tree::TerminalNode* SysyParser::BreakStmtContext::SEMICOLON() { + return getToken(SysyParser::SEMICOLON, 0); +} + SysyParser::BreakStmtContext::BreakStmtContext(StmtContext *ctx) { copyFrom(ctx); } @@ -1552,6 +1752,10 @@ std::any SysyParser::BreakStmtContext::accept(tree::ParseTreeVisitor *visitor) { } //----------------- ExpStmtContext ------------------------------------------------------------------ +tree::TerminalNode* SysyParser::ExpStmtContext::SEMICOLON() { + return getToken(SysyParser::SEMICOLON, 0); +} + SysyParser::ExpContext* SysyParser::ExpStmtContext::exp() { return getRuleContext(0); } @@ -1567,6 +1771,14 @@ std::any SysyParser::ExpStmtContext::accept(tree::ParseTreeVisitor *visitor) { } //----------------- ReturnStmtContext ------------------------------------------------------------------ +tree::TerminalNode* SysyParser::ReturnStmtContext::RETURN() { + return getToken(SysyParser::RETURN, 0); +} + +tree::TerminalNode* SysyParser::ReturnStmtContext::SEMICOLON() { + return getToken(SysyParser::SEMICOLON, 0); +} + SysyParser::ExpContext* SysyParser::ReturnStmtContext::exp() { return getRuleContext(0); } @@ -1582,6 +1794,14 @@ std::any SysyParser::ReturnStmtContext::accept(tree::ParseTreeVisitor *visitor) } //----------------- ContinueStmtContext ------------------------------------------------------------------ +tree::TerminalNode* SysyParser::ContinueStmtContext::CONTINUE() { + return getToken(SysyParser::CONTINUE, 0); +} + +tree::TerminalNode* SysyParser::ContinueStmtContext::SEMICOLON() { + return getToken(SysyParser::SEMICOLON, 0); +} + SysyParser::ContinueStmtContext::ContinueStmtContext(StmtContext *ctx) { copyFrom(ctx); } @@ -1613,11 +1833,11 @@ SysyParser::StmtContext* SysyParser::stmt() { setState(209); lVal(); setState(210); - match(SysyParser::T__6); + match(SysyParser::ASSING); setState(211); exp(); setState(212); - match(SysyParser::T__2); + match(SysyParser::SEMICOLON); break; } @@ -1629,12 +1849,12 @@ SysyParser::StmtContext* SysyParser::stmt() { _la = _input->LA(1); if ((((_la & ~ 0x3fULL) == 0) && - ((1ULL << _la) & 128852689920) != 0)) { + ((1ULL << _la) & 939786270) != 0)) { setState(214); exp(); } setState(217); - match(SysyParser::T__2); + match(SysyParser::SEMICOLON); break; } @@ -1650,13 +1870,13 @@ SysyParser::StmtContext* SysyParser::stmt() { _localctx = _tracker.createInstance(_localctx); enterOuterAlt(_localctx, 4); setState(219); - match(SysyParser::T__12); + match(SysyParser::IF); setState(220); - match(SysyParser::T__9); + match(SysyParser::LPAREN); setState(221); cond(); setState(222); - match(SysyParser::T__10); + match(SysyParser::RPAREN); setState(223); stmt(); setState(226); @@ -1665,7 +1885,7 @@ SysyParser::StmtContext* SysyParser::stmt() { switch (getInterpreter()->adaptivePredict(_input, 21, _ctx)) { case 1: { setState(224); - match(SysyParser::T__13); + match(SysyParser::ELSE); setState(225); stmt(); break; @@ -1681,13 +1901,13 @@ SysyParser::StmtContext* SysyParser::stmt() { _localctx = _tracker.createInstance(_localctx); enterOuterAlt(_localctx, 5); setState(228); - match(SysyParser::T__14); + match(SysyParser::WHILE); setState(229); - match(SysyParser::T__9); + match(SysyParser::LPAREN); setState(230); cond(); setState(231); - match(SysyParser::T__10); + match(SysyParser::RPAREN); setState(232); stmt(); break; @@ -1697,9 +1917,9 @@ SysyParser::StmtContext* SysyParser::stmt() { _localctx = _tracker.createInstance(_localctx); enterOuterAlt(_localctx, 6); setState(234); - match(SysyParser::T__15); + match(SysyParser::BREAK); setState(235); - match(SysyParser::T__2); + match(SysyParser::SEMICOLON); break; } @@ -1707,9 +1927,9 @@ SysyParser::StmtContext* SysyParser::stmt() { _localctx = _tracker.createInstance(_localctx); enterOuterAlt(_localctx, 7); setState(236); - match(SysyParser::T__16); + match(SysyParser::CONTINUE); setState(237); - match(SysyParser::T__2); + match(SysyParser::SEMICOLON); break; } @@ -1717,18 +1937,18 @@ SysyParser::StmtContext* SysyParser::stmt() { _localctx = _tracker.createInstance(_localctx); enterOuterAlt(_localctx, 8); setState(238); - match(SysyParser::T__17); + match(SysyParser::RETURN); setState(240); _errHandler->sync(this); _la = _input->LA(1); if ((((_la & ~ 0x3fULL) == 0) && - ((1ULL << _la) & 128852689920) != 0)) { + ((1ULL << _la) & 939786270) != 0)) { setState(239); exp(); } setState(242); - match(SysyParser::T__2); + match(SysyParser::SEMICOLON); break; } @@ -1854,6 +2074,14 @@ tree::TerminalNode* SysyParser::LValContext::IDENT() { return getToken(SysyParser::IDENT, 0); } +std::vector SysyParser::LValContext::LBRACKET() { + return getTokens(SysyParser::LBRACKET); +} + +tree::TerminalNode* SysyParser::LValContext::LBRACKET(size_t i) { + return getToken(SysyParser::LBRACKET, i); +} + std::vector SysyParser::LValContext::exp() { return getRuleContexts(); } @@ -1862,6 +2090,14 @@ SysyParser::ExpContext* SysyParser::LValContext::exp(size_t i) { return getRuleContext(i); } +std::vector SysyParser::LValContext::RBRACKET() { + return getTokens(SysyParser::RBRACKET); +} + +tree::TerminalNode* SysyParser::LValContext::RBRACKET(size_t i) { + return getToken(SysyParser::RBRACKET, i); +} + size_t SysyParser::LValContext::getRuleIndex() const { return SysyParser::RuleLVal; @@ -1897,11 +2133,11 @@ SysyParser::LValContext* SysyParser::lVal() { while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1) { setState(250); - match(SysyParser::T__4); + match(SysyParser::LBRACKET); setState(251); exp(); setState(252); - match(SysyParser::T__5); + match(SysyParser::RBRACKET); } setState(258); _errHandler->sync(this); @@ -1924,10 +2160,18 @@ SysyParser::PrimaryExpContext::PrimaryExpContext(ParserRuleContext *parent, size : ParserRuleContext(parent, invokingState) { } +tree::TerminalNode* SysyParser::PrimaryExpContext::LPAREN() { + return getToken(SysyParser::LPAREN, 0); +} + SysyParser::ExpContext* SysyParser::PrimaryExpContext::exp() { return getRuleContext(0); } +tree::TerminalNode* SysyParser::PrimaryExpContext::RPAREN() { + return getToken(SysyParser::RPAREN, 0); +} + SysyParser::LValContext* SysyParser::PrimaryExpContext::lVal() { return getRuleContext(0); } @@ -1964,14 +2208,14 @@ SysyParser::PrimaryExpContext* SysyParser::primaryExp() { setState(265); _errHandler->sync(this); switch (_input->LA(1)) { - case SysyParser::T__9: { + case SysyParser::LPAREN: { enterOuterAlt(_localctx, 1); setState(259); - match(SysyParser::T__9); + match(SysyParser::LPAREN); setState(260); exp(); setState(261); - match(SysyParser::T__10); + match(SysyParser::RPAREN); break; } @@ -2102,7 +2346,7 @@ SysyParser::IntConstContext* SysyParser::intConst() { setState(269); _la = _input->LA(1); if (!((((_la & ~ 0x3fULL) == 0) && - ((1ULL << _la) & 120259084288) != 0))) { + ((1ULL << _la) & 28) != 0))) { _errHandler->recoverInline(this); } else { @@ -2134,6 +2378,14 @@ tree::TerminalNode* SysyParser::UnaryExpContext::IDENT() { return getToken(SysyParser::IDENT, 0); } +tree::TerminalNode* SysyParser::UnaryExpContext::LPAREN() { + return getToken(SysyParser::LPAREN, 0); +} + +tree::TerminalNode* SysyParser::UnaryExpContext::RPAREN() { + return getToken(SysyParser::RPAREN, 0); +} + SysyParser::FuncRParamsContext* SysyParser::UnaryExpContext::funcRParams() { return getRuleContext(0); } @@ -2187,18 +2439,18 @@ SysyParser::UnaryExpContext* SysyParser::unaryExp() { setState(272); match(SysyParser::IDENT); setState(273); - match(SysyParser::T__9); + match(SysyParser::LPAREN); setState(275); _errHandler->sync(this); _la = _input->LA(1); if ((((_la & ~ 0x3fULL) == 0) && - ((1ULL << _la) & 1228364317696) != 0)) { + ((1ULL << _la) & 939786526) != 0)) { setState(274); funcRParams(); } setState(277); - match(SysyParser::T__10); + match(SysyParser::RPAREN); break; } @@ -2231,6 +2483,18 @@ SysyParser::UnaryOpContext::UnaryOpContext(ParserRuleContext *parent, size_t inv : ParserRuleContext(parent, invokingState) { } +tree::TerminalNode* SysyParser::UnaryOpContext::ADD() { + return getToken(SysyParser::ADD, 0); +} + +tree::TerminalNode* SysyParser::UnaryOpContext::SUB() { + return getToken(SysyParser::SUB, 0); +} + +tree::TerminalNode* SysyParser::UnaryOpContext::NOT() { + return getToken(SysyParser::NOT, 0); +} + size_t SysyParser::UnaryOpContext::getRuleIndex() const { return SysyParser::RuleUnaryOp; @@ -2261,7 +2525,7 @@ SysyParser::UnaryOpContext* SysyParser::unaryOp() { setState(283); _la = _input->LA(1); if (!((((_la & ~ 0x3fULL) == 0) && - ((1ULL << _la) & 3670016) != 0))) { + ((1ULL << _la) & 939524096) != 0))) { _errHandler->recoverInline(this); } else { @@ -2293,6 +2557,14 @@ SysyParser::FuncRParamContext* SysyParser::FuncRParamsContext::funcRParam(size_t return getRuleContext(i); } +std::vector SysyParser::FuncRParamsContext::COMMA() { + return getTokens(SysyParser::COMMA); +} + +tree::TerminalNode* SysyParser::FuncRParamsContext::COMMA(size_t i) { + return getToken(SysyParser::COMMA, i); +} + size_t SysyParser::FuncRParamsContext::getRuleIndex() const { return SysyParser::RuleFuncRParams; @@ -2325,9 +2597,9 @@ SysyParser::FuncRParamsContext* SysyParser::funcRParams() { setState(290); _errHandler->sync(this); _la = _input->LA(1); - while (_la == SysyParser::T__1) { + while (_la == SysyParser::COMMA) { setState(286); - match(SysyParser::T__1); + match(SysyParser::COMMA); setState(287); funcRParam(); setState(292); @@ -2387,14 +2659,14 @@ SysyParser::FuncRParamContext* SysyParser::funcRParam() { setState(295); _errHandler->sync(this); switch (_input->LA(1)) { - case SysyParser::T__9: - case SysyParser::T__18: - case SysyParser::T__19: - case SysyParser::T__20: case SysyParser::IDENT: case SysyParser::DECIMAL_CONST: case SysyParser::OCTAL_CONST: - case SysyParser::HEXADECIMAL_CONST: { + case SysyParser::HEXADECIMAL_CONST: + case SysyParser::LPAREN: + case SysyParser::ADD: + case SysyParser::SUB: + case SysyParser::NOT: { enterOuterAlt(_localctx, 1); setState(293); exp(); @@ -2436,6 +2708,18 @@ SysyParser::MulExpContext* SysyParser::MulExpContext::mulExp() { return getRuleContext(0); } +tree::TerminalNode* SysyParser::MulExpContext::MUL() { + return getToken(SysyParser::MUL, 0); +} + +tree::TerminalNode* SysyParser::MulExpContext::DIV() { + return getToken(SysyParser::DIV, 0); +} + +tree::TerminalNode* SysyParser::MulExpContext::MOD() { + return getToken(SysyParser::MOD, 0); +} + size_t SysyParser::MulExpContext::getRuleIndex() const { return SysyParser::RuleMulExp; @@ -2494,7 +2778,7 @@ SysyParser::MulExpContext* SysyParser::mulExp(int precedence) { setState(301); _la = _input->LA(1); if (!((((_la & ~ 0x3fULL) == 0) && - ((1ULL << _la) & 29360128) != 0))) { + ((1ULL << _la) & 7516192768) != 0))) { _errHandler->recoverInline(this); } else { @@ -2531,6 +2815,14 @@ SysyParser::AddExpContext* SysyParser::AddExpContext::addExp() { return getRuleContext(0); } +tree::TerminalNode* SysyParser::AddExpContext::ADD() { + return getToken(SysyParser::ADD, 0); +} + +tree::TerminalNode* SysyParser::AddExpContext::SUB() { + return getToken(SysyParser::SUB, 0); +} + size_t SysyParser::AddExpContext::getRuleIndex() const { return SysyParser::RuleAddExp; @@ -2588,9 +2880,9 @@ SysyParser::AddExpContext* SysyParser::addExp(int precedence) { if (!(precpred(_ctx, 1))) throw FailedPredicateException(this, "precpred(_ctx, 1)"); setState(312); _la = _input->LA(1); - if (!(_la == SysyParser::T__18 + if (!(_la == SysyParser::ADD - || _la == SysyParser::T__19)) { + || _la == SysyParser::SUB)) { _errHandler->recoverInline(this); } else { @@ -2627,6 +2919,22 @@ SysyParser::RelExpContext* SysyParser::RelExpContext::relExp() { return getRuleContext(0); } +tree::TerminalNode* SysyParser::RelExpContext::LT() { + return getToken(SysyParser::LT, 0); +} + +tree::TerminalNode* SysyParser::RelExpContext::GT() { + return getToken(SysyParser::GT, 0); +} + +tree::TerminalNode* SysyParser::RelExpContext::LE() { + return getToken(SysyParser::LE, 0); +} + +tree::TerminalNode* SysyParser::RelExpContext::GE() { + return getToken(SysyParser::GE, 0); +} + size_t SysyParser::RelExpContext::getRuleIndex() const { return SysyParser::RuleRelExp; @@ -2685,7 +2993,7 @@ SysyParser::RelExpContext* SysyParser::relExp(int precedence) { setState(323); _la = _input->LA(1); if (!((((_la & ~ 0x3fULL) == 0) && - ((1ULL << _la) & 503316480) != 0))) { + ((1ULL << _la) & 128849018880) != 0))) { _errHandler->recoverInline(this); } else { @@ -2722,6 +3030,14 @@ SysyParser::EqExpContext* SysyParser::EqExpContext::eqExp() { return getRuleContext(0); } +tree::TerminalNode* SysyParser::EqExpContext::EQ() { + return getToken(SysyParser::EQ, 0); +} + +tree::TerminalNode* SysyParser::EqExpContext::NE() { + return getToken(SysyParser::NE, 0); +} + size_t SysyParser::EqExpContext::getRuleIndex() const { return SysyParser::RuleEqExp; @@ -2779,9 +3095,9 @@ SysyParser::EqExpContext* SysyParser::eqExp(int precedence) { if (!(precpred(_ctx, 1))) throw FailedPredicateException(this, "precpred(_ctx, 1)"); setState(334); _la = _input->LA(1); - if (!(_la == SysyParser::T__28 + if (!(_la == SysyParser::EQ - || _la == SysyParser::T__29)) { + || _la == SysyParser::NE)) { _errHandler->recoverInline(this); } else { @@ -2818,6 +3134,10 @@ SysyParser::LAndExpContext* SysyParser::LAndExpContext::lAndExp() { return getRuleContext(0); } +tree::TerminalNode* SysyParser::LAndExpContext::AND() { + return getToken(SysyParser::AND, 0); +} + size_t SysyParser::LAndExpContext::getRuleIndex() const { return SysyParser::RuleLAndExp; @@ -2874,7 +3194,7 @@ SysyParser::LAndExpContext* SysyParser::lAndExp(int precedence) { if (!(precpred(_ctx, 1))) throw FailedPredicateException(this, "precpred(_ctx, 1)"); setState(345); - match(SysyParser::T__30); + match(SysyParser::AND); setState(346); eqExp(0); } @@ -2905,6 +3225,10 @@ SysyParser::LOrExpContext* SysyParser::LOrExpContext::lOrExp() { return getRuleContext(0); } +tree::TerminalNode* SysyParser::LOrExpContext::OR() { + return getToken(SysyParser::OR, 0); +} + size_t SysyParser::LOrExpContext::getRuleIndex() const { return SysyParser::RuleLOrExp; @@ -2961,7 +3285,7 @@ SysyParser::LOrExpContext* SysyParser::lOrExp(int precedence) { if (!(precpred(_ctx, 1))) throw FailedPredicateException(this, "precpred(_ctx, 1)"); setState(356); - match(SysyParser::T__31); + match(SysyParser::OR); setState(357); lAndExp(0); }