|
🛰️航天仿真算法库 SpaceAST 0.0.1
|
提供脚本解释器相关功能,包含表达式、值、变量、符号等。
符号
类 | |
| 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 } |
| #define AST_EXPR | ( | CLASS | ) |
| enum ast::EOpAssignType |
| enum ast::EOpBinType |
| enum ast::EOpUnaryType |
| AST_SCRIPT_CAPI Value * ast::aDoOpAssign | ( | EOpAssignType | op, |
| Expr * | left, | ||
| Expr * | right ) |
执行赋值运算符
| op | 运算符类型 |
| left | 左运算数 |
| right | 右运算数 |
Value* 指针由调用者拥有,需要管理其生命周期 | AST_SCRIPT_CAPI Value * ast::aDoOpBin | ( | EOpBinType | op, |
| Value * | left, | ||
| Value * | right ) |
执行二元运算符
| op | 运算符类型 |
| left | 左运算数 |
| right | 右运算数 |
Value* 指针由调用者拥有,需要管理其生命周期 | AST_SCRIPT_CAPI Value * ast::aDoOpUnary | ( | EOpUnaryType | op, |
| Value * | value ) |
执行一元运算符
| op | 运算符类型 |
| value | 运算数 |
Value* 指针由调用者拥有,需要管理其生命周期 | AST_SCRIPT_CAPI Value * ast::aEval | ( | StringView | script | ) |
执行脚本表达式
| script | 脚本文本 |
Value* 指针由调用者拥有,需要管理其生命周期 执行表达式
| expr | 表达式对象 |
Value* 指针由调用者拥有,需要管理其生命周期 格式化表达式为字符串
| expr | 表达式对象 |
执行迭代器的开始元素
| [in] | container | 迭代容器 |
| [out] | index | 迭代索引 |
Value* 指针由调用者拥有,需要管理其生命周期 执行迭代器的下一个元素
| [in] | container | 迭代容器 |
| [in,out] | index | 迭代索引 |
Value* 指针由调用者拥有,需要管理其生命周期 | AST_SCRIPT_CAPI Expr * ast::aNewExprCondition | ( | Expr * | condition, |
| Expr * | thenExpr, | ||
| Expr * | elseExpr = nullptr ) |
创建条件表达式对象
| condition | 条件表达式 |
| thenExpr | 条件为真时的表达式 |
| elseExpr | 条件为假时的表达式 |
创建范围表达式对象
| start | 范围的起始值表达式 |
| stop | 范围的结束值表达式 |
| step | 范围的步长表达式,可选,默认值为1 |
| AST_SCRIPT_CAPI Expr * ast::aNewOpAssign | ( | EOpAssignType | op, |
| Expr * | left, | ||
| Expr * | right ) |
创建赋值运算符表达式对象
| op | 赋值运算符类型 |
| left | 左操作数 |
| right | 右操作数 |
| AST_SCRIPT_CAPI Expr * ast::aNewOpBin | ( | EOpBinType | op, |
| Expr * | left, | ||
| Expr * | right ) |
创建二元运算符表达式对象
| op | 运算符类型 |
| left | 左操作数 |
| right | 右操作数 |
| AST_SCRIPT_CAPI Expr * ast::aNewOpUnary | ( | EOpUnaryType | op, |
| Expr * | expr ) |
创建一元运算符表达式对象
| op | 运算符类型 |
| expr | 操作数 |
| AST_SCRIPT_API Symbol * ast::aNewSymbol | ( | StringView | name | ) |
创建符号对象
| name | 符号名 |
| AST_SCRIPT_CAPI Value * ast::aNewValueBool | ( | bool | value | ) |
创建布尔值对象
Value* 指针由调用者拥有,需要管理其生命周期 | AST_SCRIPT_CAPI Value * ast::aNewValueDouble | ( | double | value | ) |
创建双精度浮点数值对象
Value* 指针由调用者拥有,需要管理其生命周期 | AST_SCRIPT_CAPI Value * ast::aNewValueInt | ( | int | value | ) |
创建整数值对象
Value* 指针由调用者拥有,需要管理其生命周期 创建数量值对象
| AST_SCRIPT_CAPI Value * ast::aNewValueString | ( | StringView | value | ) |
创建字符串值对象
Value* 指针由调用者拥有,需要管理其生命周期 | AST_SCRIPT_API Variable * ast::aNewVariable | ( | StringView | name, |
| Expr * | expr = nullptr, | ||
| bool | bind = false ) |
符号
创建变量对象
| name | 变量名 |
| expr | 变量的值,或与变量绑定的表达式 |
| bind | 是否与表达式双向绑定 |
| AST_SCRIPT_CAPI Expr * ast::aParseExpr | ( | StringView | script | ) |
解析脚本表达式
| script | 脚本文本 |
| AST_SCRIPT_CAPI SymbolScope * ast::aScript_CurrentSymbolScope | ( | ) |
获取当前符号作用域
查找符号
| symbol | 符号指针 |
| AST_SCRIPT_API Expr * ast::aScript_FindSymbol | ( | StringView | name | ) |
查找符号
| name | 符号名 |
| AST_SCRIPT_CAPI void ast::aScript_FormartErrStringV | ( | StringView | fmt, |
| va_list | args ) |
格式化错误字符串
| fmt | 格式化字符串 |
| args | 可变参数列表 |
| AST_SCRIPT_CAPI void ast::aScript_FormatErrString | ( | StringView | fmt, |
| ... ) |
格式化错误字符串
| fmt | 格式化字符串 |
| ... | 可变参数 |
| AST_SCRIPT_CAPI Interpreter * ast::aScript_GetInterpreter | ( | ) |
获取解释器指针
| AST_SCRIPT_CAPI void ast::aScript_RemoveInterpreter | ( | Interpreter * | interpreter | ) |
移除解释器指针
如果解释器指针与传入指针相同,则移除解释器指针,然后将解释器上下文切换为全局解释器。
| interpreter | 解释器指针 |
解析符号
| symbol | 符号 |
| AST_SCRIPT_API Expr * ast::aScript_ResolveSymbol | ( | StringView | name | ) |
解析符号
| name | 符号名 |
| AST_SCRIPT_CAPI void ast::aScript_SetErrString | ( | StringView | err | ) |
设置错误字符串
| err | 错误字符串 |
| AST_SCRIPT_CAPI void ast::aScript_SetInterpreter | ( | Interpreter * | interpreter | ) |
设置解释器指针
| interpreter | 解释器指针 |
| AST_SCRIPT_CAPI bool ast::aValueIsArithmetic | ( | Value * | value | ) |
判断值对象是否为算术值(包括整数、浮点数值和布尔值)
| value | 值对象 |
| AST_SCRIPT_CAPI bool ast::aValueIsBool | ( | Value * | value | ) |
判断值对象是否为布尔值
| value | 值对象 |
| AST_SCRIPT_CAPI bool ast::aValueIsDouble | ( | Value * | value | ) |
判断值对象是否为双精度浮点数值
| value | 值对象 |
| AST_SCRIPT_CAPI bool ast::aValueIsInt | ( | Value * | value | ) |
判断值对象是否为整数值
| value | 值对象 |
| AST_SCRIPT_CAPI bool ast::aValueIsQuantity | ( | Value * | value | ) |
判断值对象是否为量值
| value | 值对象 |
| AST_SCRIPT_CAPI double ast::aValueToDouble | ( | Value * | value | ) |
将值对象转换为双精度浮点数值
| value | 值对象 |
| AST_SCRIPT_CAPI bool ast::aValueUnboxBool | ( | Value * | value | ) |
解包布尔值
| value | 值对象 |
| AST_SCRIPT_CAPI double ast::aValueUnboxDouble | ( | Value * | value | ) |
解包双精度浮点数值
| value | 值对象 |
| AST_SCRIPT_CAPI int ast::aValueUnboxInt | ( | Value * | value | ) |
解包整数值
| value | 值对象 |