24#include <unordered_map>
27#include "AstUtil/SharedPtr.hpp"
28#include "AstScript/Expr.hpp"
64 using SymbolMap = std::unordered_map<std::string, SharedPtr<Expr>>;
65 using SymbolPair = std::pair<std::string, SharedPtr<Expr>>;
66 using SymbolList = std::vector<SymbolPair>;
82 Expr* findSymbol(
StringView name,
bool searchParent =
true)
const override;
101 bool hasSymbol(
StringView name,
bool searchParent =
true)
const;
105 SymbolList getSymbols()
const;
virtual Expr * findSymbol(StringView name, bool searchParent=true) const =0
查找符号作用域中的符号
virtual Expr * resolveSymbol(StringView name)=0
解析符号作用域中的符号,如果不存在则创建一个新的变量
virtual errc_t addSymbol(StringView name, Expr *expr)=0
添加符号到符号作用域
符号作用域
定义 SymbolScope.hpp:62
SymbolMap symbols_
符号作用域中的符号
定义 SymbolScope.hpp:116
SymbolScope(SymbolScope *parent)
构造函数,指定父符号作用域
定义 SymbolScope.hpp:73
SymbolScope()=default
默认构造函数