VapourSynth-llvmexpr
Loading...
Searching...
No Matches
SymbolTable.cpp
Go to the documentation of this file.
1
19
20
#include "
SymbolTable.hpp
"
21
22
namespace
infix2postfix
{
23
24
SymbolTable::SymbolTable
(
SymbolTable
* parent) : parent(parent) {}
25
26
bool
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
34
std::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
SymbolTable.hpp
infix2postfix::SymbolTable::define
bool define(const std::shared_ptr< Symbol > &symbol)
Definition
SymbolTable.cpp:26
infix2postfix::SymbolTable::resolve
std::shared_ptr< Symbol > resolve(const std::string &name) const
Definition
SymbolTable.cpp:34
infix2postfix::SymbolTable::SymbolTable
SymbolTable(SymbolTable *parent=nullptr)
Definition
SymbolTable.cpp:24
infix2postfix
Definition
AnalysisEngine.cpp:29
llvmexpr
frontend
infix2postfix
SymbolTable.cpp
Generated by
1.16.0