🛰️航天仿真算法库 SpaceAST 0.0.1
载入中...
搜索中...
未找到
ExprExpandVisitor.hpp
浏览该文件的文档.
1
20
21#pragma once
22
23#include "AstGlobal.h"
24#include "ExprVisitor.hpp"
25#include "AstScript/Expr.hpp"
26
27AST_NAMESPACE_BEGIN
28
34#ifndef SWIG
35
36class ExprExpandVisitor final: public ExprVisitor
37{
38public:
39 ExprExpandVisitor() = default;
40 ~ExprExpandVisitor() override = default;
41
42 void visit(Symbol& symbol) override;
43 void visit(Variable& var) override;
44 void visit(ValNull& val) override;
45 void visit(ValInt& val) override;
46 void visit(ValDouble& val) override;
47 void visit(ValString& val) override;
48 void visit(ValBool& val) override;
49 void visit(ValQuantity& val) override;
50 void visit(ValRange& val) override;
51 void visit(ValDict& val) override;
52 void visit(ValNamedVector& val) override;
53 void visit(OpAssign& op) override;
54 void visit(OpBin& op) override;
55 void visit(OpUnary& op) override;
56 void visit(Function& func) override;
57 void visit(Macro& macro) override;
58 void visit(ExprBlock& block) override;
59 void visit(ExprCondition& expr) override;
60 void visit(ExprIf& expr) override;
61 void visit(ExprWhile& expr) override;
62 void visit(ExprForRange& expr) override;
63 void visit(ExprRange& expr) override;
64 void visit(ExprVector& expr) override;
65 void visit(ExprCatHorizontal& expr) override;
66 void visit(ExprCatVertical& expr) override;
67 void visit(ExprCall& expr) override;
68 void visit(ExprMacroExpand& expr) override;
69 void visit(ExprAttribute& expr) override;
70 void visit(ExprCalculation& expr) override;
71 void visit(Expr& expr) override;
72public:
73 Expr* takeResult() {return result_.take();}
74 void setResult(Expr* result) {result_ = result;}
75private:
76 void visitValue(Value& value);
77 SharedPtr<Expr> result_;
78};
79
80#endif
81
84AST_NAMESPACE_END
85
属性表达式
定义 ExprAttribute.hpp:36
代码块表达式
定义 ExprBlock.hpp:32
定义 ExprCalculation.hpp:46
函数调用表达式
定义 ExprCall.hpp:35
水平拼接表达式 (空格分隔),例如[a b c]、[1 2 3]
定义 ExprCatHorizontal.hpp:34
垂直拼接表达式 (换行或;分隔),例如[a; b; c]、[1; 2; 3]
定义 ExprCatVertical.hpp:34
条件表达式 (三元运算符 ? :)
定义 ExprCondition.hpp:33
定义 ExprExpandVisitor.hpp:37
for 循环表达式(范围风格)
定义 ExprLoop.hpp:87
if条件语句表达式
定义 ExprIf.hpp:35
宏展开表达式
定义 ExprMacroExpand.hpp:35
范围表达式
定义 ExprRange.hpp:36
向量表达式,逗号分隔,例如 [1, 2, 3]、[a, b, c]
定义 ExprVector.hpp:36
表达式访问器
定义 ExprVisitor.hpp:62
while 循环表达式
定义 ExprLoop.hpp:44
表达式基类
定义 Expr.hpp:40
函数对象基类
定义 Function.hpp:36
宏对象基类
定义 Macro.hpp:36
赋值运算符表达式
定义 OpAssign.hpp:35
二元运算符表达式
定义 OpBin.hpp:34
一元运算符表达式
定义 OpUnary.hpp:34
共享指针
定义 SharedPtr.hpp:33
符号表达式
定义 Symbol.hpp:34
布尔值
定义 ValBool.hpp:31
字典值
定义 ValDict.hpp:38
双精度浮点值
定义 ValDouble.hpp:31
整数值
定义 ValInt.hpp:31
命名向量值类
定义 ValNamedVector.hpp:37
空值
定义 ValNull.hpp:31
数量值
定义 ValQuantity.hpp:33
范围值
定义 ValRange.hpp:34
字符串值
定义 ValString.hpp:34
值对象基类
定义 Value.hpp:43
变量
定义 Variable.hpp:40