Переводчик PlusCal ожидает, что текст между begin
и end algorithm
будет содержать присвоение значений переменным (например, x := 3
) или вызов макроса PlusCal (который назначается переменным), определенного с помощьюmacro
клавиатура.
В вашем примере кода транслятор PlusCal не видит оператор присваивания, поэтому он предполагает, что IsFive является макросом, а затем жалуется.
Если вы определилипеременной и используйте ваш оператор для расчета значения переменной в вашем алгоритме, тогда набор инструментов сможет проанализировать ваш код.
---- MODULE flags ----
EXTENDS TLC, Integers
(* --algorithm flags
variable x;
define
IsFive(z) == z = 5
end define
begin
x := IsFive(5)
end algorithm; *)
====