🛰️航天仿真算法库 SpaceAST 0.0.1
载入中...
搜索中...
未找到
ExprLoop.hpp
浏览该文件的文档.
1
20
21#pragma once
22
23#include "AstGlobal.h"
24#include "Expr.hpp"
25#include "ExprBlock.hpp"
26#include "AstUtil/SharedPtr.hpp"
27
28AST_NAMESPACE_BEGIN
29
32class AST_SCRIPT_API ExprLoop: public Expr
33{
34public:
35 using Expr::Expr;
36 ~ExprLoop() override = default;
37};
38
39
43class AST_SCRIPT_API ExprWhile: public ExprLoop
44{
45public:
46 AST_EXPR(ExprWhile)
47
48
49 ExprWhile();
50
54 ExprWhile(Expr* condition, Expr* body);
55
56 ~ExprWhile() override = default;
57
60 Value* eval() const override;
61
63 errc_t setValue(Value* val) override;
64
68 std::string getExpression(Object* context=nullptr) const override;
69
71 Expr* condition() const { return condition_.get(); }
72
74 Expr* body() const { return body_.get(); }
75
76protected:
79};
80
81
82
86class AST_SCRIPT_API ExprForRange: public ExprLoop
87{
88public:
89 AST_EXPR(ExprForRange)
90
91
93
98 ExprForRange(Expr* variable, Expr* range, Expr* body);
99
100 ~ExprForRange() override = default;
101
104 Value* eval() const override;
105
107 errc_t setValue(Value* val) override;
108
112 std::string getExpression(Object* context=nullptr) const override;
113
115 Expr* variable() const { return variable_.get(); }
116
118 Expr* range() const { return range_.get(); }
119
121 Expr* body() const { return body_.get(); }
122
123protected:
127};
128
129
130AST_NAMESPACE_END
for 循环表达式(范围风格)
定义 ExprLoop.hpp:87
Expr * variable() const
获取循环变量表达式
定义 ExprLoop.hpp:115
SharedPtr< Expr > variable_
循环变量
定义 ExprLoop.hpp:124
Expr * body() const
获取循环体表达式
定义 ExprLoop.hpp:121
Expr * range() const
获取范围表达式
定义 ExprLoop.hpp:118
SharedPtr< Expr > range_
范围表达式
定义 ExprLoop.hpp:125
SharedPtr< Expr > body_
循环体
定义 ExprLoop.hpp:126
循环表达式基类
定义 ExprLoop.hpp:33
while 循环表达式
定义 ExprLoop.hpp:44
Expr * condition() const
获取循环条件表达式
定义 ExprLoop.hpp:71
SharedPtr< Expr > condition_
循环条件表达式
定义 ExprLoop.hpp:77
SharedPtr< Expr > body_
循环体
定义 ExprLoop.hpp:78
Expr * body() const
获取循环体表达式
定义 ExprLoop.hpp:74
表达式基类
定义 Expr.hpp:40
virtual errc_t setValue(Value *val)
设置表达式的值
定义 Expr.hpp:56
virtual Value * eval() const =0
求值
virtual std::string getExpression(Object *context=nullptr) const =0
获取表达式的字符串表示
对象基类,继承自该类的对象可以使用运行时类型信息相关功能,实现强弱引用计数、运行时元信息(属性访问、序列化等)等基础功能
定义 Object.hpp:95
共享指针
定义 SharedPtr.hpp:33
值对象基类
定义 Value.hpp:43