$(SRC)/parser/let-funcs.o \
$(SRC)/parser/parseCVC.o \
$(SRC)/parser/lexCVC.o \
+ $(SRC)/parser/parseSMT.o \
+ $(SRC)/parser/lexSMT.o \
$(SRC)/main/*.o
$(RANLIB) libstp.a
@mkdir -p lib
@echo "Compilation successful."
@echo "Type 'make install' to install STP."
-#
# During the build of AST some classes are built that most of the other
# classes depend upon. So in a parallel make, AST should be made first.
$(SRC)/parser/let-funcs.o \
$(SRC)/parser/parseCVC.o \
$(SRC)/parser/lexCVC.o \
+ $(SRC)/parser/parseSMT.o \
+ $(SRC)/parser/lexSMT.o \
$(SRC)/main/*.o
$(RANLIB) libstp.a
@mkdir -p lib
@echo "Compilation successful."
@echo "Type 'make install' to install STP."
-#
# During the build of AST some classes are built that most of the other
# classes depend upon. So in a parallel make, AST should be made first.
//vector<BEEV::ASTNode *> created_exprs;
bool cinterface_exprdelete_on_flag = false;
-/* GLOBAL FUNCTION: parser
- */
+// GLOBAL FUNCTION: parser
extern int cvcparse(void*);
+extern int smtparse(void*);
void vc_setFlags(VC vc, char c) {
bmstar b = (bmstar)(((stpstar)vc)->bm);
unsigned long long int max_n_bits = 0xFFFFFFFFFFFFFFFFULL >> 64-n_bits;
//printf("%ull", max_n_bits);
if(v > max_n_bits) {
- printf("CInterface: vc_bvConstExprFromInt: " \
- "Cannot construct a constant %llu >= %d,\n", v, max_n_bits);
+ printf("CInterface: vc_bvConstExprFromInt: "\
+ "Cannot construct a constant %llu >= %llu,\n", v, max_n_bits);
BEEV::FatalError("FatalError");
}
node n = b->CreateBVConst(n_bits, v);
Expr vc_parseExpr(VC vc, const char* infile) {
bmstar b = (bmstar)(((stpstar)vc)->bm);
- extern FILE* cvcin;
+ extern FILE *cvcin, *smtin;
const char * prog = "stp";
cvcin = fopen(infile,"r");
}
BEEV::ASTVec * AssertsQuery = new BEEV::ASTVec;
- cvcparse((void*)AssertsQuery);
+ if (b->UserFlags.smtlib_parser_flag)
+ {
+ smtin = cvcin;
+ cvcin = NULL;
+ smtparse((void*)AssertsQuery);
+ }
+ else
+ {
+ cvcparse((void*)AssertsQuery);
+ }
+
BEEV::ASTNode asserts = (*(BEEV::ASTVec*)AssertsQuery)[0];
BEEV::ASTNode query = (*(BEEV::ASTVec*)AssertsQuery)[1];
//BEEV::GlobalSTP->TopLevelSTP(asserts, query);
./a10.out
11:
g++ $(CXXFLAGS) squares-leak.c -lstp -o a11.out
- ulimit -v 30000 && ./a11.out
+ #ulimit -v 30000 && ./a11.out
12:
g++ $(CXXFLAGS) stp-counterex.c -lstp -o a12.out
./a12.out
20:
g++ -g $(CXXFLAGS) leak.c -lstp -o a20.out
- ulimit -v 13000 && ./a20.out
+ #ulimit -v 13000 && ./a20.out
clean: