如何检索枚举变量v
的值?例如,
vTyp, (val1,val2,val3) = EnumSort('vTyp',['val1','val2','val3'])
v = Const('my variable',vTyp)
现在,如果只是上面的变量v
,我将如何检索[val1,val2,val3]
的值v
列表(其中val1,val3,val3
为表达式如上)?
我尝试了[v.sort().constructor(0), ...(1), ...(2)]
,但构造函数方法没有返回表达式。
答案 0 :(得分:3)
表达式v.sort().constructor(0)
返回Z3函数声明。在Z3中,常量是具有0个参数的函数。要在常量表达式中转换声明,我们应该使用v.sort().constructor(0)()
。
BTW,函数is_func_decl
可用于测试对象是否是Z3函数声明。函数is_expr
与Z3表达式等效。
print is_func_decl(v.sort().constructor(0))
print is_expr(v.sort().constructor(0))
print is_expr(v.sort().constructor(0)())