Finate State Processes(FSP)语法规则
1. 基本语法
1.1 prefix( → \rightarrow → )
表示动作的发生。
1.2 choice( ∣ | ∣ )
当在该状态的时,可以允许这几个动作中的一个发生。
1.3 parallel composition ( ∣ ∣ || ∣∣ )
表示 LTS
之间的 parallel composition 。
1.4 sequential composition ( ; ; ; )
2. 高级语法
2.1 递归语句和分句
TRAFFIC_LIGHT = (green ->yellow ->red->TRAFFIC_LIGHT).
- 等价于
TRAFFIC_LIGHT = GREEN ,
GREEN = (green -> YELLOW),
YELLOW = (yellow -> RED),
RED = (red -> GREEN).
- 注意:
- 每个分句后面要逗号 , , , 分隔
- 整个句子结束要使用句号 . . . 结束
2.2 选择分支语句
(x -> P | y -> Q)
代表通过 x x x 出发状态 P P P,通过 y y y 触发状态 Q Q Q
TRAFFIC_LIGHT = (button -> YELLOW | none -> GREEN),
GREEN = (green -> TRAFFIC_LIGHT),
YELLOW = (yellow -> RED),
RED = (red -> TRAFFIC_LIGHT).
2.3 不定状态选择
(x -> P | x -> Q)
同一个 x x x 可能触发 P P P 也可能触发 Q Q Q,这是有进程决定的
TRAFFIC_LIGHT = ( button -> YELLOW
| button -> green -> YELLOW
| none -> GREEN
),
GREEN = (green -> TRAFFIC_LIGHT),
YELLOW = (yellow -> RED),
RED = (red -> TRAFFIC_LIGHT).
2.4 索引进程
BUFF = (in[i:0..3] -> out[i] -> BUFF).
等价于
BUFF = (in[0] -> out[0] -> BUFF
|in[1] -> out[1] -> BUFF
|in[2] -> out[2] -> BUFF
|in[3] -> out[3] -> BUFF
).
2.5 const
和 range
定义常量
const N = 3
range T = 0..N
BUFF = (in[i:T] -> STORE[i]),
STORE[i:T] = (out[i] -> BUFF).
2.6 guarded action
(when B x -> P | y -> Q)
当 B B B 条件(guard)被满足, x x x 和 y y y 行为都可能被选择进入,但如果 B B B 不满足,那么 x x x 操作就没有进入的可能
COUNT (N=3) = COUNT[0],
COUNT[i:0..N] = (when(i<N) inc ->COUNT[i+1]
| when(i>0) dec ->COUNT[i-1]
).
2.7 结束进程
ONESHOT = (once -> STOP).
不存在循环重复执行的情况,STOP
单独是一种状态
结束态 STOP
的定义
const False = 0
P = (when (False) doanything -> P).