状态机语言里 statement(语句)的三类细节

这段文档讲的是 状态机语言里 statement(语句)的三类细节,也就是前面提到的 assignment、event raising、operation call,并对每类语句的具体用法进行了说明。我们可以分开理解:


一、Statement 概念回顾

在状态机里,一个动作(action)可以由 语句(statement) 组成。

语句有三种类型:

  1. 赋值(assignment)
  2. 触发事件(event raising)
  3. 调用操作(operation call)

二、Assignments(赋值语句)

  • 作用:给变量赋值,或在原有值基础上运算并赋值
  • 运算符 :和 C / Java 类似,除了简单赋值 =,还支持复合运算:
运算符 含义
= 简单赋值
*= 乘并赋值
/= 除并赋值
%= 取模并赋值
+= 加并赋值
-= 减并赋值
<<= 左移并赋值
>>= 右移并赋值
&= 位与并赋值
^= 位异或并赋值
` =` 位或并赋值

示例:

text 复制代码
counter = 0
counter += 1      // 等价于 counter = counter + 1
mask &= 0x0F      // 位与操作

三、Raising an event(触发事件)

  • 作用:主动触发一个事件,让状态机做相应处理或转移
  • 语法raise eventName
  • 接口事件 :需要加接口名前缀 interfaceName.eventName

示例:

text 复制代码
interface intrfc:
  out event ev

state SomeState {
    always / raise intrfc.ev
}
  • always / raise intrfc.ev 表示在每次 cycle 都触发这个事件

四、Calling an operation(调用操作)

  • 作用:调用一个已定义的 operation(函数)
  • 语法operationName(param1, param2, ...)
  • 可选参数:如果 operation 无参数,可以省略括号

示例:

text 复制代码
localOperation(5, 10)
log("Hello World")
resetMotor()
  • 参数可以是表达式:localOperation(counter + 1, threshold)

五、总结

语句类型 作用 举例
assignment 改变变量的值 x += 1
event raising 触发事件 raise intrfc.ev
operation call 调用函数/操作 localOperation(5,10)

💡 理解要点

  1. Assignment → 修改状态机内部变量
  2. Raise → 激活事件,可能导致状态转移
  3. Operation → 执行自定义逻辑,可操作外部硬件或做计算

如果你愿意,我可以帮你画一张 状态机动作语句图,把 assignment、raise、operation 三类语句在状态行为里如何触发可视化出来,更直观理解。

你希望我画吗?

相关推荐
漂洋过海的鱼儿5 小时前
itemis CREATE 状态机语言里的表达式(Expressions)及操作符
yakindu
漂洋过海的鱼儿11 小时前
Reaction(反应)是怎么被触发的
yakindu