2
다음은 내가 작성중인 Promela 코드입니다. 내가 코드를 시뮬레이션하려고하면Promela에서 배열 요소의 비 결정적 값을 선택할 수 있습니까?
491 byte api1[5];
492 byte api2[5];
493 byte api3[5];
494 byte reftask1[5]
495 byte reftask2[5];
496 byte reftask3[5];
497 byte rid1[5];
498 byte rid2[5];
499 byte rid3[5];
500
501
502 proctype init_call(){
503 byte i1 = 0;
504 do
505 :: (i1 == 5) -> break
506 :: else ->
507 select (api1[i1]: 2 .. 9);
508 select (api2[i1] : 2 .. 9);
509 select (api3[i1] : 2 .. 9);
510 select (reftask1[i1] : 1 .. 3);
511 select(reftask2[i1] : 1 .. 3);
512 select (reftask3[i1] : 1 .. 3);
513 select (rid[i1] : 0 .. 1);
514 select (rid[i1] : 0 .. 1);
515 select (rid[i1] : 0 .. 1);
516 i1++;
517 od
518 }
는, 나는
그러나, 구문 정의에 따라, 내가 어떤 문제를 찾을 수 없습니다, 다음과 같은 오류 메시지가 나타납니다.saw: '[', expected ':' spin: osek_sp2.pml:507, Error: expecting select (name : constant .. constant) near 'select'
SYNTAX
select '(' varref ':' expr '..' expr ')'varref : name [ '[' any_expr ']' ] [ '.' varref ]
이 오류 메시지의 이유는 무엇입니까?
스핀의 내부 파서가 온라인 사양과 다르게 구현 된 것처럼 보입니다. Spin의 최신 버전을 사용하고 있습니까? 나는 저자들과 연락을 취할 것이다. –
최신 버전을 사용하고 있지 않습니다. 이제 6.4.3 버전을 사용 중입니다. 버전에서 문법이 아닌 전 처리기의 'select'문을 제어합니다. 최신 릴리스 로그에는 spinlex.c의 업데이트 나 새로운 기능이 없습니다. – jungyh0218