🛰️航天仿真算法库 SpaceAST 0.0.1
载入中...
搜索中...
未找到
ast::SymbolScope类 参考

#include <SymbolScope.hpp>

Public 类型

using SymbolMap = std::unordered_map<std::string, SharedPtr<Expr>>
 
using SymbolPair = std::pair<std::string, SharedPtr<Expr>>
 
using SymbolList = std::vector<SymbolPair>
 

Public 成员函数

 SymbolScope ()=default
 
 SymbolScope (SymbolScope *parent)
 
bool addSymbol (StringView name, Expr *expr)
 
void setSymbol (StringView name, Expr *expr)
 
ExprfindSymbol (StringView name, bool searchParent=true) const
 
ExprresolveSymbol (StringView name)
 
bool removeSymbol (StringView name)
 
bool hasSymbol (StringView name, bool searchParent=true) const
 
SymbolList getSymbols () const
 
SymbolScopeparent () const
 
void setParent (SymbolScope *parent)
 

Protected 属性

SymbolMap symbols_
 
SymbolScopeparent_ = nullptr
 

详细描述

符号作用域


符号作用域用于存储符号(Symbol )与变量(Variable)、函数(Function)等的映射关系。

构造及析构函数说明

◆ SymbolScope()

ast::SymbolScope::SymbolScope ( SymbolScope * parent)
inlineexplicit

构造函数,指定父符号作用域

参数
parent父符号作用域指针

成员函数说明

◆ addSymbol()

bool ast::SymbolScope::addSymbol ( StringView name,
Expr * expr )

添加符号到符号作用域

参数
name符号名称
expr符号对应的表达式
返回
是否添加成功(如果符号已存在则返回false)

◆ findSymbol()

Expr * ast::SymbolScope::findSymbol ( StringView name,
bool searchParent = true ) const

查找符号作用域中的符号

参数
name符号名称
searchParent是否向上查找父符号作用域
返回
符号对应的表达式,如果不存在则返回nullptr

◆ getSymbols()

SymbolScope::SymbolList ast::SymbolScope::getSymbols ( ) const

获取当前符号表中的所有符号

返回
符号列表

◆ hasSymbol()

bool ast::SymbolScope::hasSymbol ( StringView name,
bool searchParent = true ) const

检查符号是否存在

参数
name符号名称
searchParent是否向上查找父符号表
返回
符号是否存在

◆ parent()

SymbolScope * ast::SymbolScope::parent ( ) const

获取父符号作用域

返回
父符号作用域指针

◆ removeSymbol()

bool ast::SymbolScope::removeSymbol ( StringView name)

删除符号

参数
name符号名称
返回
是否删除成功

◆ resolveSymbol()

Expr * ast::SymbolScope::resolveSymbol ( StringView name)

解析符号作用域中的符号,如果不存在则创建一个新的变量

参数
name符号名称
返回
符号对应的表达式指针

◆ setParent()

void ast::SymbolScope::setParent ( SymbolScope * parent)

设置父符号作用域

参数
parent父符号作用域指针

◆ setSymbol()

void ast::SymbolScope::setSymbol ( StringView name,
Expr * expr )

添加或更新符号

参数
name符号名称
expr符号对应的表达式

该类的文档由以下文件生成: