🛰️航天仿真算法库 SpaceAST 0.0.1
载入中...
搜索中...
未找到
脚本模块

详细描述

提供脚本解释器相关功能,包含表达式、值、变量、符号等。

符号

参见
src/AstScript

class  ast::Breakpoint
 
class  ast::Debugger
 
class  ast::Expr
 
class  ast::ExprBlock
 
class  ast::ExprCall
 
class  ast::ExprCatHorizontal
 
class  ast::ExprCatVertical
 
class  ast::ExprCondition
 
class  ast::ExprContainer
 
class  ast::ExprIf
 
class  ast::ExprLoop
 
class  ast::ExprWhile
 
class  ast::ExprForRange
 
class  ast::ExprMacroExpand
 
class  ast::ExprMatch
 
class  ast::ExprRange
 
class  ast::ExprVector
 
class  ast::Function
 
class  ast::BackTrace
 
class  ast::CallStack
 
class  ast::Interpreter
 
class  ast::StackFrame
 
class  ast::SymbolScope
 
class  ast::SymbolTable
 
class  ast::Macro
 
class  ast::Op
 
class  ast::OpAssign
 
class  ast::OpBin
 
class  ast::OpUnary
 
class  ast::Lexer
 
class  ast::Parser
 
class  ast::Scanner
 
class  ast::ValArray< T, NDIM >
 
class  ast::ValBool
 
class  ast::ValDouble
 
class  ast::ValInt
 
class  ast::ValNull
 
class  ast::ValQuantity
 
class  ast::ValRange
 
class  ast::ValScalar< Scalar >
 
class  ast::ValString
 
class  ast::Value
 
class  ast::ValVector< T >
 
class  ast::Symbol
 
class  ast::Variable
 

宏定义

#define AST_EXPR(CLASS)
 

类型定义

typedef Value *(* ast::OpBinFunc) (Value *left, Value *right)
 
typedef Value *(* ast::OpAssignFunc) (Expr *left, Expr *right)
 
typedef Value *(* ast::OpUnaryFunc) (Value *value)
 
typedef Value *(* ast::IterateFunc) (Value *value, int &index)
 

枚举

enum  ast::EOpBinType {
  ast::eAdd , ast::eSub , ast::eMul , ast::eDiv ,
  ast::ePow , ast::eMod , ast::eAnd , ast::eOr ,
  ast::eBitOr , ast::eBitAnd , ast::eBitXor , ast::eBitLeftShift ,
  ast::eBitRightShift , ast::eBitURightShift , ast::eElemMul , ast::eElemDiv ,
  ast::eElemPow , ast::eElemMod , ast::eElemAnd , ast::eElemOr ,
  ast::eLt , ast::eLe , ast::eEq , ast::eGt ,
  ast::eGe , ast::eNe , ast::numOpBinType , ast::invalidOpBin =numOpBinType ,
  ast::eCatVertical , ast::eCatHorizontal
}
 
enum  ast::EOpAssignType {
  ast::eAssign , ast::eDelayAssign , ast::eBindAssign , ast::eAddAssign ,
  ast::eSubAssign , ast::eMulAssign , ast::eDivAssign , ast::eModAssign ,
  ast::ePowAssign , ast::eElemMulAssign , ast::eElemDivAssign , ast::eElemModAssign ,
  ast::eElemPowAssign , ast::eElemAndAssign , ast::eElemOrAssign , ast::numOpAssignType
}
 
enum  ast::EOpUnaryType {
  ast::eNot , ast::eNeg , ast::eInc , ast::eDec ,
  ast::eBitNot , ast::numOpUnaryType , ast::eIterate
}
 
enum  { eIterBegin =0 }
 

函数

Variableast::aNewVariable (StringView name, Expr *expr=nullptr, bool bind=false)
 
Variableast::aNewVariable (Expr *expr, bool bind)
 
Symbolast::aNewSymbol (StringView name)
 
Exprast::aNewOpAssign (EOpAssignType op, Expr *left, Expr *right)
 
Exprast::aNewOpBin (EOpBinType op, Expr *left, Expr *right)
 
Exprast::aNewOpUnary (EOpUnaryType op, Expr *expr)
 
Exprast::aNewExprCondition (Expr *condition, Expr *thenExpr, Expr *elseExpr=nullptr)
 
Exprast::aNewExprRange (Expr *start, Expr *stop, Expr *step=nullptr)
 
Valueast::aNewValueString (StringView value)
 
Valueast::aNewValueInt (int value)
 
Valueast::aNewValueBool (bool value)
 
Valueast::aNewValueDouble (double value)
 
Valueast::aNewValueQuantity (const Quantity &value)
 
Valueast::aValueNull ()
 
Exprast::aParseExpr (StringView script)
 
Valueast::aEval (StringView script)
 
Valueast::aEvalExpr (Expr *expr)
 
bool ast::aValueIsBool (Value *value)
 
bool ast::aValueIsDouble (Value *value)
 
bool ast::aValueIsInt (Value *value)
 
bool ast::aValueIsArithmetic (Value *value)
 
bool ast::aValueIsQuantity (Value *value)
 
double ast::aValueToDouble (Value *value)
 
bool ast::aValueUnboxBool (Value *value)
 
double ast::aValueUnboxDouble (Value *value)
 
int ast::aValueUnboxInt (Value *value)
 
Quantity ast::aValueUnboxQuantity (Value *value)
 
std::string ast::aFormatExpr (Expr *expr, Object *context=nullptr)
 
OpBinFunc ast::aGetOpBinFunc (EOpBinType op, Class *leftType, Class *rightType)
 
OpAssignFunc ast::aGetOpAssignFunc (EOpAssignType op, Class *leftType, Class *rightType)
 
OpUnaryFunc ast::aGetOpUnaryFunc (EOpUnaryType op, Class *type)
 
IterateFunc ast::aGetIterateFunc (Class *type)
 
Valueast::aDoOpBin (EOpBinType op, Value *left, Value *right)
 
Valueast::aDoOpUnary (EOpUnaryType op, Value *value)
 
Valueast::aDoOpAssign (EOpAssignType op, Expr *left, Expr *right)
 
Valueast::aIterateBegin (Value *container, int &index)
 
Valueast::aIterateNext (Value *container, int &index)
 
A_ALWAYS_INLINE Valueast::aNewValue (int value)
 
A_ALWAYS_INLINE Valueast::aNewValue (double value)
 
A_ALWAYS_INLINE Valueast::aNewValue (bool value)
 
A_ALWAYS_INLINE Valueast::aNewValue (const Quantity &value)
 
A_ALWAYS_INLINE Valueast::aNewValue (StringView value)
 
Interpreterast::aScript_GetInterpreter ()
 
void ast::aScript_SetInterpreter (Interpreter *interpreter)
 
void ast::aScript_RemoveInterpreter (Interpreter *interpreter)
 
SymbolScopeast::aScript_CurrentSymbolScope ()
 
Exprast::aScript_FindSymbol (StringView name)
 
Exprast::aScript_FindSymbol (const Symbol *symbol)
 
Exprast::aScript_ResolveSymbol (StringView name)
 
Exprast::aScript_ResolveSymbol (const Symbol *symbol)
 
void ast::aScript_SetErrString (StringView err)
 
void ast::aScript_FormartErrStringV (StringView fmt, va_list args)
 
void ast::aScript_FormatErrString (StringView fmt,...)
 

宏定义说明

◆ AST_EXPR

#define AST_EXPR ( CLASS)
值:
AST_OBJECT(CLASS)\
void accept(ExprVisitor& visitor) override{visitor.visit(*this);};

枚举类型说明

◆ EOpAssignType

枚举值
eAssign 

赋值 =

eDelayAssign 

延迟赋值 :=

eBindAssign 

绑定赋值 =&

eAddAssign 

加法赋值

eSubAssign 

减法赋值

eMulAssign 

乘法赋值

eDivAssign 

除法赋值

eModAssign 

取模赋值

ePowAssign 

乘方赋值

eElemMulAssign 

按元素乘赋值

eElemDivAssign 

按元素除赋值

eElemModAssign 

按元素取模赋值

eElemPowAssign 

按元素乘方赋值

eElemAndAssign 

按元素与赋值

eElemOrAssign 

按元素或赋值

numOpAssignType 

运算符类型数量

◆ EOpBinType

枚举值
eAdd 

加法

eSub 

减法

eMul 

乘法

eDiv 

除法

ePow 

乘方

eMod 

取模

eAnd 

逻辑与

eOr 

逻辑或

eBitOr 

位或

eBitAnd 

位与

eBitXor 

位异或

eBitLeftShift 

<< (逻辑/算术左移)

eBitRightShift 

‍(算术右移)

eBitURightShift 

‍(逻辑右移) U代表Unsigned

eElemMul 

按元素乘

eElemDiv 

按元素除

eElemPow 

按元素乘方

eElemMod 

按元素取模

eElemAnd 

按元素与

eElemOr 

按元素或

eLt 

小于

eLe 

小于等于

eEq 

等于

eGt 

大于

eGe 

大于等于

eNe 

不等于

numOpBinType 

运算符类型数量

invalidOpBin 

无效运算符

eCatVertical 

垂直拼接

eCatHorizontal 

水平拼接

◆ EOpUnaryType

枚举值
eNot 

逻辑非

eNeg 

负号

eInc 

自增

eDec 

自减

eBitNot 

按位取反

numOpUnaryType 

运算符类型数量

eIterate 

迭代器

函数说明

◆ aDoOpAssign()

AST_SCRIPT_CAPI Value * ast::aDoOpAssign ( EOpAssignType op,
Expr * left,
Expr * right )

执行赋值运算符

参数
op运算符类型
left左运算数
right右运算数
警告
返回的 Value* 指针由调用者拥有,需要管理其生命周期
返回
运算结果

◆ aDoOpBin()

AST_SCRIPT_CAPI Value * ast::aDoOpBin ( EOpBinType op,
Value * left,
Value * right )

执行二元运算符

参数
op运算符类型
left左运算数
right右运算数
警告
返回的 Value* 指针由调用者拥有,需要管理其生命周期
返回
运算结果

◆ aDoOpUnary()

AST_SCRIPT_CAPI Value * ast::aDoOpUnary ( EOpUnaryType op,
Value * value )

执行一元运算符

参数
op运算符类型
value运算数
警告
返回的 Value* 指针由调用者拥有,需要管理其生命周期
返回
运算结果

◆ aEval()

AST_SCRIPT_CAPI Value * ast::aEval ( StringView script)

执行脚本表达式

参数
script脚本文本
警告
返回的 Value* 指针由调用者拥有,需要管理其生命周期
返回
表达式执行结果

◆ aEvalExpr()

AST_SCRIPT_CAPI Value * ast::aEvalExpr ( Expr * expr)

执行表达式

参数
expr表达式对象
警告
返回的 Value* 指针由调用者拥有,需要管理其生命周期
返回
表达式执行结果

◆ aFormatExpr()

AST_SCRIPT_API std::string ast::aFormatExpr ( Expr * expr,
Object * context = nullptr )

格式化表达式为字符串

参数
expr表达式对象

◆ aIterateBegin()

AST_SCRIPT_CAPI Value * ast::aIterateBegin ( Value * container,
int & index )

执行迭代器的开始元素

参数
[in]container迭代容器
[out]index迭代索引
警告
返回的 Value* 指针由调用者拥有,需要管理其生命周期
返回
开始元素

◆ aIterateNext()

AST_SCRIPT_CAPI Value * ast::aIterateNext ( Value * container,
int & index )

执行迭代器的下一个元素

参数
[in]container迭代容器
[in,out]index迭代索引
警告
返回的 Value* 指针由调用者拥有,需要管理其生命周期
返回
下一个元素

◆ aNewExprCondition()

AST_SCRIPT_CAPI Expr * ast::aNewExprCondition ( Expr * condition,
Expr * thenExpr,
Expr * elseExpr = nullptr )

创建条件表达式对象

参数
condition条件表达式
thenExpr条件为真时的表达式
elseExpr条件为假时的表达式
警告
返回的指针由调用者拥有,需要管理其生命周期
返回
条件表达式对象

◆ aNewExprRange()

AST_SCRIPT_CAPI Expr * ast::aNewExprRange ( Expr * start,
Expr * stop,
Expr * step = nullptr )

创建范围表达式对象

参数
start范围的起始值表达式
stop范围的结束值表达式
step范围的步长表达式,可选,默认值为1
警告
返回的指针由调用者拥有,需要管理其生命周期
返回
范围表达式对象

◆ aNewOpAssign()

AST_SCRIPT_CAPI Expr * ast::aNewOpAssign ( EOpAssignType op,
Expr * left,
Expr * right )

创建赋值运算符表达式对象

参数
op赋值运算符类型
left左操作数
right右操作数
警告
返回的指针由调用者拥有,需要管理其生命周期
返回
赋值运算符表达式对象

◆ aNewOpBin()

AST_SCRIPT_CAPI Expr * ast::aNewOpBin ( EOpBinType op,
Expr * left,
Expr * right )

创建二元运算符表达式对象

参数
op运算符类型
left左操作数
right右操作数
警告
返回的指针由调用者拥有,需要管理其生命周期
返回
二元运算符表达式对象

◆ aNewOpUnary()

AST_SCRIPT_CAPI Expr * ast::aNewOpUnary ( EOpUnaryType op,
Expr * expr )

创建一元运算符表达式对象

参数
op运算符类型
expr操作数
警告
返回的指针由调用者拥有,需要管理其生命周期
返回
一元运算符表达式对象

◆ aNewSymbol()

AST_SCRIPT_API Symbol * ast::aNewSymbol ( StringView name)

创建符号对象

参数
name符号名
警告
返回的指针由调用者拥有,需要管理其生命周期
返回
符号对象

◆ aNewValueBool()

AST_SCRIPT_CAPI Value * ast::aNewValueBool ( bool value)

创建布尔值对象

警告
返回的 Value* 指针由调用者拥有,需要管理其生命周期

◆ aNewValueDouble()

AST_SCRIPT_CAPI Value * ast::aNewValueDouble ( double value)

创建双精度浮点数值对象

警告
返回的 Value* 指针由调用者拥有,需要管理其生命周期

◆ aNewValueInt()

AST_SCRIPT_CAPI Value * ast::aNewValueInt ( int value)

创建整数值对象

警告
返回的 Value* 指针由调用者拥有,需要管理其生命周期

◆ aNewValueQuantity()

AST_SCRIPT_CAPI Value * ast::aNewValueQuantity ( const Quantity & value)

创建数量值对象

警告
返回的指针由调用者拥有,需要管理其生命周期

◆ aNewValueString()

AST_SCRIPT_CAPI Value * ast::aNewValueString ( StringView value)

创建字符串值对象

警告
返回的 Value* 指针由调用者拥有,需要管理其生命周期

◆ aNewVariable()

AST_SCRIPT_API Variable * ast::aNewVariable ( StringView name,
Expr * expr = nullptr,
bool bind = false )

符号

创建变量对象

参数
name变量名
expr变量的值,或与变量绑定的表达式
bind是否与表达式双向绑定
警告
返回的指针由调用者拥有,需要管理其生命周期
返回
变量对象

◆ aParseExpr()

AST_SCRIPT_CAPI Expr * ast::aParseExpr ( StringView script)

解析脚本表达式

参数
script脚本文本
返回
解析得到的表达式对象

◆ aScript_CurrentSymbolScope()

AST_SCRIPT_CAPI SymbolScope * ast::aScript_CurrentSymbolScope ( )

获取当前符号作用域


返回
SymbolScope* 符号作用域指针

◆ aScript_FindSymbol() [1/2]

AST_SCRIPT_API Expr * ast::aScript_FindSymbol ( const Symbol * symbol)

查找符号


参数
symbol符号指针
返回
Expr* 表达式指针

◆ aScript_FindSymbol() [2/2]

AST_SCRIPT_API Expr * ast::aScript_FindSymbol ( StringView name)

查找符号


参数
name符号名
返回
Expr* 表达式指针

◆ aScript_FormartErrStringV()

AST_SCRIPT_CAPI void ast::aScript_FormartErrStringV ( StringView fmt,
va_list args )

格式化错误字符串


参数
fmt格式化字符串
args可变参数列表

◆ aScript_FormatErrString()

AST_SCRIPT_CAPI void ast::aScript_FormatErrString ( StringView fmt,
... )

格式化错误字符串


参数
fmt格式化字符串
...可变参数

◆ aScript_GetInterpreter()

AST_SCRIPT_CAPI Interpreter * ast::aScript_GetInterpreter ( )

获取解释器指针

返回
Interpreter* 解释器指针

◆ aScript_RemoveInterpreter()

AST_SCRIPT_CAPI void ast::aScript_RemoveInterpreter ( Interpreter * interpreter)

移除解释器指针

如果解释器指针与传入指针相同,则移除解释器指针,然后将解释器上下文切换为全局解释器。

参数
interpreter解释器指针

◆ aScript_ResolveSymbol() [1/2]

AST_SCRIPT_API Expr * ast::aScript_ResolveSymbol ( const Symbol * symbol)

解析符号


参数
symbol符号
返回
Expr* 表达式指针

◆ aScript_ResolveSymbol() [2/2]

AST_SCRIPT_API Expr * ast::aScript_ResolveSymbol ( StringView name)

解析符号


参数
name符号名
返回
Expr* 表达式指针

◆ aScript_SetErrString()

AST_SCRIPT_CAPI void ast::aScript_SetErrString ( StringView err)

设置错误字符串


参数
err错误字符串

◆ aScript_SetInterpreter()

AST_SCRIPT_CAPI void ast::aScript_SetInterpreter ( Interpreter * interpreter)

设置解释器指针

参数
interpreter解释器指针

◆ aValueIsArithmetic()

AST_SCRIPT_CAPI bool ast::aValueIsArithmetic ( Value * value)

判断值对象是否为算术值(包括整数、浮点数值和布尔值)

参数
value值对象
返回
是否为算术值

◆ aValueIsBool()

AST_SCRIPT_CAPI bool ast::aValueIsBool ( Value * value)

判断值对象是否为布尔值

参数
value值对象
返回
是否为布尔值

◆ aValueIsDouble()

AST_SCRIPT_CAPI bool ast::aValueIsDouble ( Value * value)

判断值对象是否为双精度浮点数值

参数
value值对象
返回
是否为双精度浮点数值

◆ aValueIsInt()

AST_SCRIPT_CAPI bool ast::aValueIsInt ( Value * value)

判断值对象是否为整数值

参数
value值对象
返回
是否为整数值

◆ aValueIsQuantity()

AST_SCRIPT_CAPI bool ast::aValueIsQuantity ( Value * value)

判断值对象是否为量值

参数
value值对象
返回
是否为量值

◆ aValueToDouble()

AST_SCRIPT_CAPI double ast::aValueToDouble ( Value * value)

将值对象转换为双精度浮点数值

参数
value值对象
返回
双精度浮点数值

◆ aValueUnboxBool()

AST_SCRIPT_CAPI bool ast::aValueUnboxBool ( Value * value)

解包布尔值

参数
value值对象
返回
布尔值

◆ aValueUnboxDouble()

AST_SCRIPT_CAPI double ast::aValueUnboxDouble ( Value * value)

解包双精度浮点数值

参数
value值对象
返回
双精度浮点数值

◆ aValueUnboxInt()

AST_SCRIPT_CAPI int ast::aValueUnboxInt ( Value * value)

解包整数值

参数
value值对象
返回
整数值

◆ aValueUnboxQuantity()

AST_SCRIPT_API Quantity ast::aValueUnboxQuantity ( Value * value)

解包量值

参数
value值对象
返回
量值