我有一个字符串变量,我需要将其转换为Expr类型。我正在使用Z3 .Net API。这可能吗?
修改
List<Node<string>> lChildren = new List<Node<string>>();
//...
switch (pNode.Data)
{
//...
case ">=":
{
lResult = lZ3Solver.GreaterOrEqualOperator(
lChildren[0].Data,
int.Parse(lChildren[1].Data)
);
GreaterOrEqualOperator
的第一个参数是Expr
类型。在这种情况下,我需要将当前字符串类型转换为Expr类型。
答案 0 :(得分:0)
名称lChildren[0]
的变量(常量函数)可以通过调用ctx.MkConst(lChildren[0], sort)
来创建,其中ctx
是Context
而sort
是排序/变量的类型,例如,对于整数,它可以是ctx.IntSort
。
请注意,Z3允许两个同名的变量,即第二次使用相同的名称/排序调用ctx.MkConst
,将创建一个与第一个不同的新变量。如果在比构造时间晚的时间需要相同的变量,则需要将其保存在别处,例如,在允许快速查找的散列表(或字典)中。