#pragma once #include #include #include "antlr4-runtime.h" #include "SymbolTable.h" #include "generated/ifccBaseVisitor.h" class DeclarationVisitor : public ifccBaseVisitor { SymbolTable *symbolTable = new SymbolTable(); std::vector scopeStack; const std::string ¤tScope() const { return scopeStack.back(); } public: ~DeclarationVisitor() override { delete symbolTable; } [[nodiscard]] SymbolTable *getSymbolTable() const { return symbolTable; } std::any visitProg(ifccParser::ProgContext *ctx) override; std::any visitStmt(ifccParser::StmtContext *ctx) override; std::any visitReturn_stmt(ifccParser::Return_stmtContext *ctx) override { return 0; } std::any visitDecl_stmt(ifccParser::Decl_stmtContext *ctx) override; std::any visitSet_stmt(ifccParser::Set_stmtContext *ctx) override { return 0; } std::any visitVal(ifccParser::ValContext *ctx) override { return 0; } std::any visitExpr(ifccParser::ExprContext *ctx) override { return 0; } };