Initial commit from sysy-main
This commit is contained in:
46
src/ASTPrinter.h
Normal file
46
src/ASTPrinter.h
Normal file
@@ -0,0 +1,46 @@
|
||||
#pragma once
|
||||
|
||||
#include "SysYBaseVisitor.h"
|
||||
#include "SysYParser.h"
|
||||
#include <iostream>
|
||||
#include <string>
|
||||
|
||||
class ASTPrinter : public SysYBaseVisitor {
|
||||
private:
|
||||
int indentLevel = 0;
|
||||
|
||||
std::string getIndent() {
|
||||
return std::string(indentLevel * 4, ' ');
|
||||
}
|
||||
|
||||
public:
|
||||
std::any visitModule(SysYParser::ModuleContext *ctx) override;
|
||||
|
||||
std::any visitConstDecl(SysYParser::ConstDeclContext *ctx) override;
|
||||
std::any visitVarDecl(SysYParser::VarDeclContext *ctx) override;
|
||||
std::any visitVarDef(SysYParser::VarDefContext *ctx) override;
|
||||
std::any visitConstDef(SysYParser::ConstDefContext *ctx) override; // 新增
|
||||
std::any visitFuncDef(SysYParser::FuncDefContext *ctx) override;
|
||||
|
||||
std::any visitFuncFParams(SysYParser::FuncFParamsContext *ctx) override;
|
||||
std::any visitFuncFParam(SysYParser::FuncFParamContext *ctx) override;
|
||||
std::any visitFuncRParams(SysYParser::FuncRParamsContext *ctx) override;
|
||||
|
||||
std::any visitExpAsRParam(SysYParser::ExpAsRParamContext *ctx) override;
|
||||
std::any visitStringAsRParam(SysYParser::StringAsRParamContext *ctx) override;
|
||||
std::any visitExpsAsRParam(SysYParser::ExpsAsRParamContext *ctx) override;
|
||||
|
||||
std::any visitExp(SysYParser::ExpContext *ctx) override;
|
||||
std::any visitCond(SysYParser::CondContext *ctx) override;
|
||||
std::any visitLVal(SysYParser::LValContext *ctx) override;
|
||||
std::any visitAddExp(SysYParser::AddExpContext *ctx) override;
|
||||
std::any visitMulExp(SysYParser::MulExpContext *ctx) override;
|
||||
std::any visitUnaryExp(SysYParser::UnaryExpContext *ctx) override;
|
||||
|
||||
std::any visitNumber(SysYParser::NumberContext *ctx) override;
|
||||
std::any visitString(SysYParser::StringContext *ctx) override;
|
||||
|
||||
std::any visitStmt(SysYParser::StmtContext *ctx) override;
|
||||
std::any visitBlock(SysYParser::BlockContext *ctx) override;
|
||||
// std::any ASTPrinter::visitLorExp(SysYParser::LorExpContext *ctx) override;
|
||||
};
|
||||
Reference in New Issue
Block a user