🛰️航天仿真算法库 SpaceAST
0.0.1
载入中...
搜索中...
未找到
SymbolScope.hpp
浏览该文件的文档.
1
20
21
#pragma once
22
23
#include "AstGlobal.h"
24
#include <unordered_map>
25
#include <string>
26
#include <vector>
27
#include "AstUtil/SharedPtr.hpp"
28
#include "AstScript/Expr.hpp"
29
30
AST_NAMESPACE_BEGIN
31
32
33
38
class
SymbolScope
{
39
public
:
40
using
SymbolMap = std::unordered_map<std::string, SharedPtr<Expr>>;
41
using
SymbolPair = std::pair<std::string, SharedPtr<Expr>>;
42
using
SymbolList = std::vector<SymbolPair>;
43
45
SymbolScope
() =
default
;
46
49
explicit
SymbolScope
(
SymbolScope
* parent)
50
: parent_(parent)
51
{}
52
53
~SymbolScope
() =
default
;
54
59
bool
addSymbol(
StringView
name,
Expr
* expr);
60
64
void
setSymbol(
StringView
name,
Expr
* expr);
65
70
Expr
* findSymbol(
StringView
name,
bool
searchParent =
true
)
const
;
71
75
Expr
* resolveSymbol(
StringView
name);
76
80
bool
removeSymbol(
StringView
name);
81
86
bool
hasSymbol(
StringView
name,
bool
searchParent =
true
)
const
;
87
90
SymbolList getSymbols()
const
;
91
94
SymbolScope
* parent()
const
;
95
98
void
setParent(
SymbolScope
* parent);
99
100
protected
:
101
SymbolMap
symbols_
;
102
SymbolScope
* parent_ =
nullptr
;
103
};
104
105
AST_NAMESPACE_END
ast::Expr
表达式基类
定义
Expr.hpp:39
ast::StringViewBasic< char >
ast::SymbolScope
符号作用域
定义
SymbolScope.hpp:38
ast::SymbolScope::symbols_
SymbolMap symbols_
符号作用域中的符号
定义
SymbolScope.hpp:101
ast::SymbolScope::SymbolScope
SymbolScope(SymbolScope *parent)
构造函数,指定父符号作用域
定义
SymbolScope.hpp:49
ast::SymbolScope::SymbolScope
SymbolScope()=default
默认构造函数
src
AstScript
Interpreter
SymbolScope.hpp
制作者
1.12.0