diff --git a/Student/task2/demo/go_upstairs_gen.cpp b/Student/task2/demo/go_upstairs_gen.cpp index 7c11b5c..f680b52 100644 --- a/Student/task2/demo/go_upstairs_gen.cpp +++ b/Student/task2/demo/go_upstairs_gen.cpp @@ -22,7 +22,7 @@ int main() { auto module = new Module("SysY code"); // module name是什么无关紧要 - auto builder = new IRBuilder(nullptr, module); + auto builder = new IRStmtBuilder(nullptr, module); Type *Int32Type = Type::get_int32_type(module); // 全局数组,num,x diff --git a/include/SysYFIR/IRStmtBuilder.h b/include/SysYFIR/IRStmtBuilder.h index 9bcc736..69e99c9 100644 --- a/include/SysYFIR/IRStmtBuilder.h +++ b/include/SysYFIR/IRStmtBuilder.h @@ -5,13 +5,13 @@ #include "Instruction.h" #include "Value.h" -class IRBuilder { +class IRStmtBuilder { private: BasicBlock *BB_; Module *m_; public: - IRBuilder(BasicBlock *bb, Module *m) : BB_(bb), m_(m) {}; - ~IRBuilder() = default; + IRStmtBuilder(BasicBlock *bb, Module *m) : BB_(bb), m_(m) {}; + ~IRStmtBuilder() = default; Module *get_module(){return m_;} BasicBlock *get_insert_block() { return this->BB_; } void set_insert_point(BasicBlock *bb) { this->BB_ = bb; } //在某个基本块中插入指令 diff --git a/include/SysYFIRBuilder/IRBuilder.h b/include/SysYFIRBuilder/IRBuilder.h index 68a6031..67afb3a 100644 --- a/include/SysYFIRBuilder/IRBuilder.h +++ b/include/SysYFIRBuilder/IRBuilder.h @@ -69,7 +69,7 @@ private: std::vector> name2func; }; -class SysYFBuilder: public SyntaxTree::Visitor +class IRBuilder: public SyntaxTree::Visitor { private: virtual void visit(SyntaxTree::InitVal &) override final; @@ -95,13 +95,13 @@ private: virtual void visit(SyntaxTree::BreakStmt &) override final; virtual void visit(SyntaxTree::ContinueStmt &) override final; - IRBuilder *builder; + IRStmtBuilder *builder; Scope scope; std::unique_ptr module; public: - SysYFBuilder(){ + IRBuilder(){ module = std::unique_ptr(new Module("SysYF code")); - builder = new IRBuilder(nullptr, module.get()); + builder = new IRStmtBuilder(nullptr, module.get()); auto TyVoid = Type::get_void_type(module.get()); auto TyInt32 = Type::get_int32_type(module.get()); auto TyInt32Ptr = Type::get_int32_ptr_type(module.get()); diff --git a/src/SysYFIRBuilder/IRBuilder.cpp b/src/SysYFIRBuilder/IRBuilder.cpp index 8a07fb6..3890091 100644 --- a/src/SysYFIRBuilder/IRBuilder.cpp +++ b/src/SysYFIRBuilder/IRBuilder.cpp @@ -17,7 +17,7 @@ Type *FLOAT_T; Type *INT32PTR_T; Type *FLOATPTR_T; -void SysYFBuilder::visit(SyntaxTree::Assembly &node) { +void IRBuilder::visit(SyntaxTree::Assembly &node) { VOID_T = Type::get_void_type(module.get()); INT1_T = Type::get_int1_type(module.get()); INT32_T = Type::get_int32_type(module.get()); @@ -31,44 +31,44 @@ void SysYFBuilder::visit(SyntaxTree::Assembly &node) { // You need to fill them -void SysYFBuilder::visit(SyntaxTree::InitVal &node) {} +void IRBuilder::visit(SyntaxTree::InitVal &node) {} -void SysYFBuilder::visit(SyntaxTree::FuncDef &node) {} +void IRBuilder::visit(SyntaxTree::FuncDef &node) {} -void SysYFBuilder::visit(SyntaxTree::FuncFParamList &node) {} +void IRBuilder::visit(SyntaxTree::FuncFParamList &node) {} -void SysYFBuilder::visit(SyntaxTree::FuncParam &node) {} +void IRBuilder::visit(SyntaxTree::FuncParam &node) {} -void SysYFBuilder::visit(SyntaxTree::VarDef &node) {} +void IRBuilder::visit(SyntaxTree::VarDef &node) {} -void SysYFBuilder::visit(SyntaxTree::LVal &node) {} +void IRBuilder::visit(SyntaxTree::LVal &node) {} -void SysYFBuilder::visit(SyntaxTree::AssignStmt &node) {} +void IRBuilder::visit(SyntaxTree::AssignStmt &node) {} -void SysYFBuilder::visit(SyntaxTree::Literal &node) {} +void IRBuilder::visit(SyntaxTree::Literal &node) {} -void SysYFBuilder::visit(SyntaxTree::ReturnStmt &node) {} +void IRBuilder::visit(SyntaxTree::ReturnStmt &node) {} -void SysYFBuilder::visit(SyntaxTree::BlockStmt &node) {} +void IRBuilder::visit(SyntaxTree::BlockStmt &node) {} -void SysYFBuilder::visit(SyntaxTree::EmptyStmt &node) {} +void IRBuilder::visit(SyntaxTree::EmptyStmt &node) {} -void SysYFBuilder::visit(SyntaxTree::ExprStmt &node) {} +void IRBuilder::visit(SyntaxTree::ExprStmt &node) {} -void SysYFBuilder::visit(SyntaxTree::UnaryCondExpr &node) {} +void IRBuilder::visit(SyntaxTree::UnaryCondExpr &node) {} -void SysYFBuilder::visit(SyntaxTree::BinaryCondExpr &node) {} +void IRBuilder::visit(SyntaxTree::BinaryCondExpr &node) {} -void SysYFBuilder::visit(SyntaxTree::BinaryExpr &node) {} +void IRBuilder::visit(SyntaxTree::BinaryExpr &node) {} -void SysYFBuilder::visit(SyntaxTree::UnaryExpr &node) {} +void IRBuilder::visit(SyntaxTree::UnaryExpr &node) {} -void SysYFBuilder::visit(SyntaxTree::FuncCallStmt &node) {} +void IRBuilder::visit(SyntaxTree::FuncCallStmt &node) {} -void SysYFBuilder::visit(SyntaxTree::IfStmt &node) {} +void IRBuilder::visit(SyntaxTree::IfStmt &node) {} -void SysYFBuilder::visit(SyntaxTree::WhileStmt &node) {} +void IRBuilder::visit(SyntaxTree::WhileStmt &node) {} -void SysYFBuilder::visit(SyntaxTree::BreakStmt &node) {} +void IRBuilder::visit(SyntaxTree::BreakStmt &node) {} -void SysYFBuilder::visit(SyntaxTree::ContinueStmt &node) {} +void IRBuilder::visit(SyntaxTree::ContinueStmt &node) {} diff --git a/src/main.cpp b/src/main.cpp index f98d4a7..fd1336f 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -14,7 +14,7 @@ void print_help(const std::string& exe_name) { int main(int argc, char *argv[]) { - SysYFBuilder builder; + IRBuilder builder; SysYFDriver driver; SyntaxTreePrinter printer; ErrorReporter reporter(std::cerr);