0
當我嘗試比較我的結構的一個屬性(不是第一個屬性)時,我遇到了promela語言的問題。只比較一個結構的一個屬性
下面是一個例子:
typedef Msg {
byte header;
byte content;
}
chan pipe = [5] of { Msg };
active proctype Receive() {
Msg r;
do
:: atomic { (pipe?[1,2]) -> printf("Receive"); pipe?r; }
// doesnt compile: :: atomic { (pipe?[-,2]) -> printf("Receive2"); pipe?r; }
// doesn't compile: :: atomic { (pipe?[, 2]) -> printf("Receive3"); pipe?r; }
// doesn't works: :: atomic { (pipe?[skip, 2]) -> printf("Receive4"); pipe?r; }
od
}
active proctype Emit() {
Msg m;
m.header=1; m.content=2;
// doesn't compile: m = { 1,2 };
do
:: atomic { printf ("emit\n"); pipe!m; }
od
}
的問題是很容易的:我想只比較content
屬性。不是前一個(header
)。 我試過一些語法,看看語法(http://spinroot.com/spin/Man/grammar.html#recv_args ...順便說一句,我不是專家)。 但我仍然堅持這個問題。
我使用ispin來模擬和測試。
任何幫助將是偉大的。
謝謝!
由於它的工作原理。但這聽起來很奇怪......你能解釋一下這個事實,即未初始化的「ignore」通過測試嗎? – AilurusFulgens
'pipe?[ignore,2]'只需要'2'匹配; 「忽略」用第一個字段的值填充。 – GoZoner