首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在TLA+ PLusCal中定义运算符不起作用

在TLA+ PLusCal中定义运算符不起作用
EN

Stack Overflow用户
提问于 2019-01-22 19:08:06
回答 1查看 301关注 0票数 1

我用PlusCal编写的基本代码如下所示。

代码语言:javascript
复制
---- MODULE flags ----
EXTENDS TLC, Integers
(* --algorithm flags
define
    IsFive(z) == z = 5
end define
begin
IsFive(5)
end algorithm; *)

====

IsFive行在工具箱中被高亮显示,当我尝试运行模型时,我得到一个错误,即宏未定义。

在类似的注释中,https://learntla.com/tla/operators/说运算符是函数,然后在下一章继续定义函数。

假设我需要检查验证参数是否为5的功能。我应该使用什么,运算符还是函数?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-01-23 13:35:20

PlusCal转换器期望beginend algorithm之间的文本包含对变量(例如,x := 3)的赋值,或者调用PlusCal宏(对变量进行赋值),这些都是使用macro键盘定义的。

在您的示例代码中,PlusCal转换器看不到赋值语句,因此它假定IsFive是一个宏,然后发出警告。

如果您定义了一个变量并使用运算符来计算算法中变量的值,那么工具箱将能够解析您的代码。

代码语言:javascript
复制
---- MODULE flags ----
EXTENDS TLC, Integers
(* --algorithm flags
variable x;
define
    IsFive(z) == z = 5
end define
begin
x := IsFive(5)
end algorithm; *)
====
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54306951

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档