int main(int argc, char* argv[]) { // Get the filename string input(argv[1]); // Create the expression manager Options options; options.set(inputLanguage, language::input::LANG_SMTLIB_V2); ExprManager exprManager(options); // Create the parser ParserBuilder parserBuilder(&exprManager, input, options); Parser* parser = parserBuilder.build(); // Variables and assertions std::map<Expr, unsigned> variables; vector<string> info_tags; vector<string> info_data; vector<Expr> assertions; Command* cmd; while ((cmd = parser->nextCommand())) { SetInfoCommand* setinfo = dynamic_cast<SetInfoCommand*>(cmd); if (setinfo) { info_tags.push_back(setinfo->getFlag()); info_data.push_back(setinfo->getSExpr().getValue()); delete cmd; continue; } DeclareFunctionCommand* declare = dynamic_cast<DeclareFunctionCommand*>(cmd); if (declare) { string name = declare->getSymbol(); Expr var = parser->getVariable(name); unsigned n = variables.size(); variables[var] = n; delete cmd; continue; } AssertCommand* assert = dynamic_cast<AssertCommand*>(cmd); if (assert) { assertions.push_back(assert->getExpr()); delete cmd; continue; } delete cmd; } // Do the translation translate_to_mathematica(input, info_tags, info_data, variables, assertions); // Get rid of the parser delete parser; }
int main(int argc, char* argv[]) { try { // Get the filename string input(argv[1]); // Create the expression manager Options options; options.set(inputLanguage, language::input::LANG_SMTLIB_V2); ExprManager exprManager(options); // Create the parser ParserBuilder parserBuilder(&exprManager, input, options); Parser* parser = parserBuilder.build(); // Variables and assertions vector<string> variables; vector<string> info_tags; vector<string> info_data; vector<Expr> assertions; Command* cmd; while ((cmd = parser->nextCommand())) { SetInfoCommand* setinfo = dynamic_cast<SetInfoCommand*>(cmd); if (setinfo) { info_tags.push_back(setinfo->getFlag()); info_data.push_back(setinfo->getSExpr().getValue()); delete cmd; continue; } DeclareFunctionCommand* declare = dynamic_cast<DeclareFunctionCommand*>(cmd); if (declare) { variables.push_back(declare->getSymbol()); delete cmd; continue; } AssertCommand* assert = dynamic_cast<AssertCommand*>(cmd); if (assert) { assertions.push_back(assert->getExpr()); delete cmd; continue; } delete cmd; } cout << "variables: " << variables.size() << endl; unsigned total_degree = 0; for (unsigned i = 0; i < assertions.size(); ++ i) { total_degree = std::max(total_degree, compute_degree(exprManager, assertions[i])); } cout << "degree: " << total_degree << endl; // Get rid of the parser delete parser; } catch (Exception& e) { cerr << e << endl; } }