FSP 基础语法介绍 (FSP(2))

1. Choice选择 ‘|’ 

用于在一个流程中创建一个可选项,即这个process可以同时选择这个‘|’左边的atomic action或者右边的atomic action。 注意LTS会展现出这个FSP的全部可能发生流程,所以这个选择不会像java等语言中只会选择其中之一,而是在展现时同时展现着两种可能行为。它做x就会去P,做y会去Q。你不需要考虑这个x,y是什么,他们只是action。他们在现实中的对应关系无所谓,只要顺序对就行。

Eg:

你会发现在这个情况下,因为多了一个button的可选项,所以图中同时有了两个可能的运行路线。有button和no button。(这里上面的代码写错了,none -> GREEN 实际应该是nobutton -> GREEN)

观察这个例子和之前的traffic light例子:

你会发现这些叫0,1,2的state的建立不一定是由流程名称建立!可以在一个流程中建立多个这种state。只要发生一个action(eg green ->) 只要这个行为之前没有发生过,他就会创建一个新的状态(state)。

但在第一个例子中,每一个状态都有一个固定的process何其对应,例如:

Yellow = yellow->RED, RED = red -> TRAFFIC-LIGHT, YELLOW对应2, RED对应3,TRAFFIC_LIGHT对应0. 

所以给这些特定的action抽象一个process出来其实相当于给一个state起了个名字,会更有助于你理解这个FSP系统。也使得这个流程间的state可以单独互相互动。例如 state0可以同时去state1或者2。这会让你的FSP系统建立更流畅。

2. Indexed processes 一次创建多个相同名字不同编号的名字(有点像for loop):

=

这两个是相等的。 in[i:0..3]->out[i]可以被理解为:

for i in range 3:

        in[i] -> out[i] -> BUFF

 然后这些数组之间的元素用|连接。

0..3 是一个range,代表0,1,2,3

3. constants and range 常数和范围:

这里的range就是那个数组,可以直接把刚刚的for loop写成 in[i:T], 方便

4. guarded action 有条件的action:

这个和python中的if差不多了,就是只有when()时这个action才会发生。

这个FSP的图:

这里的COUNT[i:0..N]其实相当于创建了4个state。state1,2可以inc也可以dec。 state0只能inc,state3只能dec。

5.STOP 停止:

这其实是一个提前定义好的process,代表着再也没有之后的action。

STOP:

 

例子:

如果同时有两个action可以到同一个state,就会以{a,b}的形式表示。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值