fix format bug for elsestme and stmt def in .g4

This commit is contained in:
Downright
2025-03-05 13:43:27 +08:00
parent 6f51e76804
commit 51ed88f761
4 changed files with 4 additions and 3 deletions

View File

@ -155,7 +155,7 @@ std::any ASTPrinter::visitStmt(SysYParser::StmtContext *ctx){
cout << getIndent() << "}" << endl; cout << getIndent() << "}" << endl;
} }
if (ctx->stmt().size() > 1) { if (ctx->stmt().size() > 1) {
cout << getIndent() << "else" << endl; cout << getIndent() << "else";
if(ctx->stmt(1)->blockStmt())ctx->stmt(1)->accept(this); if(ctx->stmt(1)->blockStmt())ctx->stmt(1)->accept(this);
else{ else{
cout << " {"<< endl; cout << " {"<< endl;

View File

@ -137,6 +137,7 @@ blockStmt: LBRACE blockItem* RBRACE;
blockItem: decl | stmt; blockItem: decl | stmt;
stmt: lValue ASSIGN exp SEMICOLON stmt: lValue ASSIGN exp SEMICOLON
| exp? SEMICOLON
| blockStmt | blockStmt
| IF LPAREN cond RPAREN stmt (ELSE stmt)? | IF LPAREN cond RPAREN stmt (ELSE stmt)?
| WHILE LPAREN cond RPAREN stmt | WHILE LPAREN cond RPAREN stmt

View File

@ -6,7 +6,7 @@ using namespace std;
namespace sysy { namespace sysy {
any SysYIRGenerator::visitModule(SysYParser::ModuleContext *ctx) { any SysYIRGenerator::visitCompUnit(SysYParser::CompUnitContext *ctx) {
// create the IR module // create the IR module
auto pModule = new Module(); auto pModule = new Module();
assert(pModule); assert(pModule);

View File

@ -20,7 +20,7 @@ public:
Module *get() const { return module.get(); } Module *get() const { return module.get(); }
public: public:
std::any visitModule(SysYParser::ModuleContext *ctx) override; std::any visitCompUnit(SysYParser::CompUnitContext *ctx) override;
std::any visitFuncRParams(SysYParser::FuncRParamsContext *ctx) override; std::any visitFuncRParams(SysYParser::FuncRParamsContext *ctx) override;
std::any visitNumber(SysYParser::NumberContext *ctx) override; std::any visitNumber(SysYParser::NumberContext *ctx) override;
std::any visitString(SysYParser::StringContext *ctx) override; std::any visitString(SysYParser::StringContext *ctx) override;