add tag4stmt in .g4,format cpp modification needed

This commit is contained in:
Downright
2025-03-19 20:35:37 +08:00
parent d4d7e6494b
commit 3e80cb8f3f
2 changed files with 24 additions and 15 deletions

View File

@@ -25,6 +25,15 @@ public:
std::any visitFuncFParams(SysYParser::FuncFParamsContext *ctx) override;
std::any visitFuncFParam(SysYParser::FuncFParamContext *ctx) override;
std::any visitBlockStmt(SysYParser::BlockStmtContext *ctx) override;
// std::any visitAssignStmt(SysYParser::AssignStmtContext *ctx) override;
// std::any visitExpStmt(SysYParser::ExpStmtContext *ctx) override;
// std::any visitIfStmt(SysYParser::IfStmtContext *ctx) override;
// std::any visitWhileStmt(SysYParser::WhileStmtContext *ctx) override;
// std::any visitBreakStmt(SysYParser::BreakStmtContext *ctx) override;
// std::any visitContinueStmt(SysYParser::ContinueStmtContext *ctx) override;
// std::any visitReturnStmt(SysYParser::ReturnStmtContext *ctx) override;
// std::any visitBlockItem(SysYParser::BlockItemContext *ctx) override;
std::any visitStmt(SysYParser::StmtContext *ctx) override;
// std::any visitExp(SysYParser::ExpContext *ctx) override;

View File

@@ -136,29 +136,29 @@ blockStmt: LBRACE blockItem* RBRACE;
blockItem: decl | stmt;
stmt: lValue ASSIGN exp SEMICOLON
| exp? SEMICOLON
| blockStmt
| IF LPAREN cond RPAREN stmt (ELSE stmt)?
| WHILE LPAREN cond RPAREN stmt
| BREAK SEMICOLON
| CONTINUE SEMICOLON
| RETURN exp? SEMICOLON;
stmt: lValue ASSIGN exp SEMICOLON #assignStmt
| exp? SEMICOLON #expStmt
| blockStmt #blkStmt
| IF LPAREN cond RPAREN stmt (ELSE stmt)? #ifStmt
| WHILE LPAREN cond RPAREN stmt #whileStmt
| BREAK SEMICOLON #breakStmt
| CONTINUE SEMICOLON #continueStmt
| RETURN exp? SEMICOLON #returnStmt;
exp: addExp;
cond: lOrExp;
lValue: Ident (LBRACK exp RBRACK)*;
// 为了方便测试 primaryExp 可以是一个string
primaryExp: LPAREN exp RPAREN
| lValue
| number
| string;
primaryExp: LPAREN exp RPAREN #parenExp
| lValue #lVal
| number #num
| string #str;
number: ILITERAL | FLITERAL;
unaryExp: primaryExp
| Ident LPAREN (funcRParams)? RPAREN
| unaryOp unaryExp;
unaryExp: primaryExp #primExp
| Ident LPAREN (funcRParams)? RPAREN #call
| unaryOp unaryExp #unExp;
unaryOp: ADD|SUB|NOT;
funcRParams: exp (COMMA exp)*;