Engee 文档

有限自动机的代码生成

Engee 支持Chart 块的代码生成。Chart 块允许描述状态图、转换图及其组合。xref:state-machines.adocEngee 有限自动机库]是为目标设备开发此类自定义算法的有效工具,在这些设备中需要使用条件、循环和开关等复杂结构。

Engee* 代码生成器在 Chart 块的状态、动作和条件中支持以下 Julia 语言结构:

  • if-else/elseif 运算符

  • while 运算符

  • 操作符 for …​在 M:N

  • 算术运算符 +-(一元和二元)、 */%

  • 逻辑运算符 &&||| 和 `!

  • 比较运算符 <, <=, >>===!=(只支持有两个操作数的二进制运算符)

Chart 块的 Engee 代码生成器功能支持:

  • 无条件和有条件转换

  • 输入变量、局部变量、输出变量的类型`v`(在 Julia 中用类型`Float64`表示)

  • 多个不相关的状态图、过渡图

  • 在过渡动作的正文和状态中,用分隔符 (;) 一行写几条指令

  • 状态中的多行指令

  • 操作符组 entryduringexiton

  • Chart 操作符组的缩写(enduex)。

  • 时态逻辑运算符 after, at, before, elapsed, et, every, t, temporalCount.

  • 函数 floor(Int64,…​)ceil(Int64,…​)

  • 在状态、条件体和转换动作中进行注释

  • 支持回溯机制(当状态之间存在中间节点时)

  • 当状态之间的转换跨越块状态边界时,支持超级转换机制。这些过渡可以是

    • 当嵌套深度大于 1 时,外部状态与其嵌套状态之间的转换;

    • 未相互嵌套的两个不同外部状态的嵌套状态。

  • 此外,还支持默认超级转换,即超级转换不是从父状态开始,而是从父状态之外开始。