VapourSynth-llvmexpr
Loading...
Searching...
No Matches
SymbolTable.cpp
Go to the documentation of this file.
1
19
20#include "SymbolTable.hpp"
21
22namespace infix2postfix {
23
24SymbolTable::SymbolTable(SymbolTable* parent) : parent(parent) {}
25
26bool SymbolTable::define(const std::shared_ptr<Symbol>& symbol) {
27 if (symbols.contains(symbol->name)) {
28 return false;
29 }
30 symbols[symbol->name] = symbol;
31 return true;
32}
33
34std::shared_ptr<Symbol> SymbolTable::resolve(const std::string& name) const {
35 auto it = symbols.find(name);
36 if (it != symbols.end()) {
37 return it->second;
38 }
39 if (parent != nullptr) {
40 return parent->resolve(name);
41 }
42 return nullptr;
43}
44
45} // namespace infix2postfix
bool define(const std::shared_ptr< Symbol > &symbol)
std::shared_ptr< Symbol > resolve(const std::string &name) const
SymbolTable(SymbolTable *parent=nullptr)