2016-03-06 8 views
0

Я изучаю синтаксис promela для Spin Modal Checker. Я столкнулся с этой простой частью кода.Использование точки с запятой в Promela

int count; 
active proctype count(){ 
if 
:: count++ 
:: count-- 
fi 
} 

Как я знаю, точка с запятой используется для определения конца инструкции. Могу ли я использовать ; в конце обоих count++ и count-- и после fi; Изменит ли он способ поведения программы? Я был бы благодарен за очищение этой точки с запятой для меня.

+0

Хотя ';' является разделителем, а не терминатором, я думаю, что это хорошая привычка использовать его в качестве терминатора, так как часто случается, что люди в какой-то момент решают добавить новые строки кода где-то в источнике но забудьте добавить точку с запятой в предыдущую строку, что приведет к ошибке компиляции. –

ответ

0

Точка с запятой в Промеле - это так называемые разделители.

От the reference:

точка с запятой и стрелка являются Эквивалентная формулировка сепараторы в Promela; они не являются заявками терминаторов, хотя синтаксический анализатор учит быть прощающим для случайных провалов. За последним оператором в последовательности не должен следовать разделитель операторов, в отличие, например, от языка программирования C.

Таким образом, ответ на ваш вопрос: вам не нужно ставить точку с запятой после count++, count-- или fi, потому что они являются последними заявлениями. Парсер будет игнорировать, если вы поместите их туда в любом случае.