有限自动机的代码生成
Engee 支持Chart 块的代码生成。Chart 块允许描述状态图、转换图及其组合。xref:state-machines.adocEngee 有限自动机库]是为目标设备开发此类自定义算法的有效工具,在这些设备中需要使用条件、循环和开关等复杂结构。
Engee* 代码生成器在 Chart 块的状态、动作和条件中支持以下 Julia 语言结构:
-
if-else/elseif
运算符 -
while 运算符
-
操作符
for …在 M:N
中 -
算术运算符
+
和-
(一元和二元)、*
、/
、%
-
逻辑运算符
&&
、|||
和 `! -
比较运算符
<
,<=
,>
、>=
、==
、!=
(只支持有两个操作数的二进制运算符)
由 Chart 块的 Engee 代码生成器功能支持:
-
无条件和有条件转换
-
输入变量、局部变量、输出变量的类型`v`(在 Julia 中用类型`Float64`表示)
-
多个不相关的状态图、过渡图
-
在过渡动作的正文和状态中,用分隔符 (
;
) 一行写几条指令 -
状态中的多行指令
-
操作符组
entry
、during
、exit
、on
。 -
Chart 操作符组的缩写(
en
、du
、ex
)。 -
时态逻辑运算符
after
,at
,before
,elapsed
,et
,every
,t
,temporalCount
. -
函数
floor(Int64,…)
和ceil(Int64,…)
-
在状态、条件体和转换动作中进行注释
-
支持回溯机制(当状态之间存在中间节点时)
-
当状态之间的转换跨越块状态边界时,支持超级转换机制。这些过渡可以是
-
当嵌套深度大于 1 时,外部状态与其嵌套状态之间的转换;
-
未相互嵌套的两个不同外部状态的嵌套状态。
-
-
此外,还支持默认超级转换,即超级转换不是从父状态开始,而是从父状态之外开始。