37 lines
972 B
C++
37 lines
972 B
C++
#include "DeclarationVisitor.h"
|
|
|
|
#include "generated/ifccParser.h"
|
|
|
|
std::any DeclarationVisitor::visitProg(ifccParser::ProgContext *ctx) {
|
|
symbolTable->addScope("main");
|
|
scopeStack.push_back("main");
|
|
this->visitChildren(ctx);
|
|
scopeStack.pop_back();
|
|
return 0;
|
|
}
|
|
|
|
std::any DeclarationVisitor::visitStmt(ifccParser::StmtContext *ctx) {
|
|
return this->visitChildren(ctx);
|
|
}
|
|
|
|
std::any DeclarationVisitor::visitDecl_stmt(ifccParser::Decl_stmtContext *ctx) {
|
|
std::vector<antlr4::tree::TerminalNode*> vars = ctx->VAR_NAME();
|
|
for (auto var : vars) {
|
|
std::string name = var->getText();
|
|
symbolTable->declare(currentScope(), name);
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
std::any DeclarationVisitor::visitSet_stmt(ifccParser::Set_stmtContext *ctx) {
|
|
return 0;
|
|
}
|
|
|
|
std::any DeclarationVisitor::visitVal(ifccParser::ValContext *ctx) {
|
|
return 0;
|
|
}
|
|
|
|
std::any DeclarationVisitor::visitReturn_stmt(ifccParser::Return_stmtContext *ctx) {
|
|
return 0;
|
|
}
|