50 lines
1.0 KiB
C++
50 lines
1.0 KiB
C++
#pragma once
|
|
|
|
#include <vector>
|
|
#include <string>
|
|
#include "antlr4-runtime.h"
|
|
#include "SymbolTable.h"
|
|
#include "generated/ifccBaseVisitor.h"
|
|
|
|
|
|
class DeclarationVisitor : public ifccBaseVisitor {
|
|
SymbolTable *symbolTable = new SymbolTable();
|
|
|
|
std::vector<std::string> 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;
|
|
}
|
|
};
|
|
|
|
|