#include "CodeGenVisitor.h" #include "generated/ifccParser.h" antlrcpp::Any CodeGenVisitor::visitStmt(ifccParser::StmtContext *ctx) { return this->visitChildren(ctx); } antlrcpp::Any CodeGenVisitor::visitDecl_stmt(ifccParser::Decl_stmtContext *ctx) { return 0; } antlrcpp::Any CodeGenVisitor::visitSet_stmt(ifccParser::Set_stmtContext *ctx) { return 0; } antlrcpp::Any CodeGenVisitor::visitVal(ifccParser::ValContext *ctx) { // TODO: return either the const or the variable value from the symbol table return 0; } antlrcpp::Any CodeGenVisitor::visitProg(ifccParser::ProgContext *ctx) { #ifdef __APPLE__ std::cout << ".globl _main\n" ; std::cout << " _main: \n" ; #else std::cout << ".globl main\n" ; std::cout << " main: \n" ; #endif this->visitChildren(ctx); std::cout << " ret\n"; return 0; } antlrcpp::Any CodeGenVisitor::visitReturn_stmt(ifccParser::Return_stmtContext *ctx) { int retval = stoi(ctx->val()->getText()); #ifdef __APPLE__ std::cout << " mov w0, #" << retval << "\n" ; #else std::cout << " movl $" << retval << ", %eax\n" ; #endif return 0; }