簡體   English   中英

如何使用Z3 C ++ api讀取smtlib2字符串?

[英]How to read smtlib2 strings using Z3 C++ api?

我想從給定的SMTLIB2文件創建一個expr對象。 我可以在C示例中看到Z3_parse_smtlib_string函數。 expr類中是否有一個包裝器?

Z3 C ++ API沒有明確地將此功能作為expr類的一部分提供。 但是,C ++ API可以與C API一起使用,即,可以使用函數Z3_parse_smtlib_string (或... _file )來實現此目的。 請注意,此函數返回Z3_ast ,必須將其轉換為expr對象才能返回到C ++“world”。

一個簡單的例子:

#include <z3++.h>

...

context ctx;
Z3_ast a = Z3_parse_smtlib2_file(ctx, "test.smt2", 0, 0, 0, 0, 0, 0);    
expr e(ctx, a);
std::cout << "Result = " << e << std::endl;

由於Z3_parse_smtlib2_*函數不執行錯誤檢查,因此在發生錯誤時不會引發異常。 這可以通過調用context::check_error()來實現。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM