/********************* */ /*! \file smt2todreal.cpp ** \verbatim ** Top contributors (to current version): ** Dejan Jovanovic, Tim King, Aina Niemetz ** This file is part of the CVC4 project. ** Copyright (c) 2009-2020 by the authors listed in the file AUTHORS ** in the top-level source directory) and their institutional affiliations. ** All rights reserved. See the file COPYING in the top-level source ** directory for licensing information.\endverbatim ** ** \brief [[ Add one-line brief description here ]] ** ** [[ Add lengthier description here ]] ** \todo document this file **/ #include #include #include #include #include #include #include #include #include #include using namespace std; using namespace CVC4; using namespace CVC4::parser; using namespace CVC4::options; int main(int argc, char* argv[]) { // Get the filename string input(argv[1]); // Create the expression manager Options options; options.setInputLanguage(language::input::LANG_SMTLIB_V2); options.setOutputLanguage(language::output::LANG_SMTLIB_V2); std::unique_ptr solver = std::unique_ptr(new api::Solver(&options)); cout << expr::ExprDag(0) << expr::ExprSetDepth(-1); // Create the parser ParserBuilder parserBuilder(solver.get(), input, options); Parser* parser = parserBuilder.build(); // Variables and assertions std::map variables; vector info_tags; vector info_data; vector assertions; Command* cmd; while ((cmd = parser->nextCommand())) { DeclareFunctionCommand* declare = dynamic_cast(cmd); if (declare) { cout << "[-10000, 10000] " << declare->getSymbol() << ";" << endl; } AssertCommand* assert = dynamic_cast(cmd); if (assert) { cout << assert->getExpr() << ";" << endl; } delete cmd; } // Get rid of the parser delete parser; }