You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
nudt-compiler-cpp/src/sem/SymbolTable.h

25 lines
610 B

// 极简符号表:记录局部变量定义点。
#pragma once
#include <string>
#include <unordered_map>
#include "SysYParser.h"
class SymbolTable {
public:
void Add(const std::string& name, SysYParser::VarDeclContext* decl) {
table_[name] = decl;
}
bool Contains(const std::string& name) const {
return table_.find(name) != table_.end();
}
SysYParser::VarDeclContext* Lookup(const std::string& name) const {
auto it = table_.find(name);
return it == table_.end() ? nullptr : it->second;
}
private:
std::unordered_map<std::string, SysYParser::VarDeclContext*> table_;
};