Promela:如何为类型为typedef的数组使用for循环

时间:2013-02-15 19:14:01

标签: spin promela

我希望能够使用for循环遍历一个typedef值数组,如下所示:

typedef chanArray {
    chan ch[5] = [1] of {bit};
}
chanArray comms[5];

active proctype Reliable() {
    chanArray channel;
    for ( channel in comms ) {
        channel.ch[0] ! 0;
    }   
}

Spin会出现以下错误:

spin: test2.pml:8, Error: for ( channel in .channel_name ) { ... }

是否可以在此表单中使用for循环来遍历数组,而不必使用带索引指针的for循环?

2 个答案:

答案 0 :(得分:2)

尝试:

active proctype Reliable () {
  byte index;

  index = 0;
  do
  :: index < 5 -> channel.ch[index] ! 0; index++
  :: else -> break
  od
}

这是唯一的方法。所以答案是'你有可能......'的问题是'不,这是不可能的......'

答案 1 :(得分:1)

我是Promela的新手,但似乎你正在使用

for '(' varref in channel ')' '{' sequence '}'

而不是

for '(' varref ':' expr '..' expr ')' '{' sequence '}' 

尝试使用类似

的内容
int i;
for (i : 0..4 ) {...}