使用变量而不是整数时出现 nuXmv 语法错误
nuXmv syntax error when using variable instead of integer
我在 muXmv 中有一个模型,我在其中使用一系列值进行初始化,例如 -
VAR
x : 0..100;
ASSIGN
init(x) := 10..50;
这很好用。
但是,当我使用变量而不是值时,
ASSIGN
init(x) := LB..UB;
DEFINE
LB := 10;
UB := 50;
它抛出语法错误 -
line 14: at token "..": syntax error
line 14: Parser error
不确定我哪里出错了?
还有没有更好的方法在 nuxmv 中声明常量?
A definition 不一定是常量,它只是表达式的名称(其值在每次转换后可能会发生变化)。 例如
MODILE main()
VAR
x : 0..100;
y : 0..100;
DEFINE
sum := x + y;
...
不知道为什么NuSMV/nuXmv的语法特别禁止使用一对标识符而不是一对常量。
另一种选择是:
MODULE main()
VAR
x : 0..100;
ASSIGN
init(x) := INTERVAL;
DEFINE
INTERVAL := 10 .. 50;
另一种选择是使用约束式方法:
MODULE main()
VAR
x : 0..100;
DEFINE
LB := 10;
UB := 50;
INIT
LB <= x & x <= UB;
如果您真的发现自己在与许多常量值作斗争,一种选择是编写一个通用的 TEMPLATE 模型,然后使用 正则表达式 + 脚本工具 自动生成您需要的各种具体模型。
我在 muXmv 中有一个模型,我在其中使用一系列值进行初始化,例如 -
VAR x : 0..100; ASSIGN init(x) := 10..50;
这很好用。
但是,当我使用变量而不是值时,
ASSIGN init(x) := LB..UB; DEFINE LB := 10; UB := 50;
它抛出语法错误 -
line 14: at token "..": syntax error
line 14: Parser error
不确定我哪里出错了?
还有没有更好的方法在 nuxmv 中声明常量?
A definition 不一定是常量,它只是表达式的名称(其值在每次转换后可能会发生变化)。 例如
MODILE main()
VAR
x : 0..100;
y : 0..100;
DEFINE
sum := x + y;
...
不知道为什么NuSMV/nuXmv的语法特别禁止使用一对标识符而不是一对常量。
另一种选择是:
MODULE main()
VAR
x : 0..100;
ASSIGN
init(x) := INTERVAL;
DEFINE
INTERVAL := 10 .. 50;
另一种选择是使用约束式方法:
MODULE main()
VAR
x : 0..100;
DEFINE
LB := 10;
UB := 50;
INIT
LB <= x & x <= UB;
如果您真的发现自己在与许多常量值作斗争,一种选择是编写一个通用的 TEMPLATE 模型,然后使用 正则表达式 + 脚本工具 自动生成您需要的各种具体模型。