diff options
author | Dejan Jovanović <dejan.jovanovic@gmail.com> | 2009-12-18 05:07:19 +0000 |
---|---|---|
committer | Dejan Jovanović <dejan.jovanovic@gmail.com> | 2009-12-18 05:07:19 +0000 |
commit | 2eef69eb63f3a5637f8711944e3d056672872f20 (patch) | |
tree | ab534fd3345dfb307267b991994a54e860d79064 /src/main/main.cpp | |
parent | 093492af43fae12d7f1d4607e63b1da686044ea6 (diff) |
Lots of parser changes to make Chris happy. Yet more to come later.
Diffstat (limited to 'src/main/main.cpp')
-rw-r--r-- | src/main/main.cpp | 49 |
1 files changed, 11 insertions, 38 deletions
diff --git a/src/main/main.cpp b/src/main/main.cpp index 6f32e474b..595915100 100644 --- a/src/main/main.cpp +++ b/src/main/main.cpp @@ -23,8 +23,6 @@ #include "main.h" #include "usage.h" #include "parser/parser.h" -#include "parser/smt/smt_parser.h" -#include "parser/cvc/cvc_parser.h" #include "expr/expr_manager.h" #include "smt/smt_engine.h" #include "util/command.h" @@ -69,13 +67,14 @@ int main(int argc, char *argv[]) { bool inputFromStdin = firstArgIndex >= argc; // Auto-detect input language by filename extension - if(!inputFromStdin && options.lang == Options::LANG_AUTO) { + if(!inputFromStdin && options.lang == Parser::LANG_AUTO) { if(!strcmp(".smt", argv[firstArgIndex] + strlen(argv[firstArgIndex]) - 4)) { - options.lang = Options::LANG_SMTLIB; - } - else if(!strcmp(".cvc", argv[firstArgIndex] + strlen(argv[firstArgIndex]) - 4) || - !strcmp(".cvc4", argv[firstArgIndex] + strlen(argv[firstArgIndex]) - 5)) { - options.lang = Options::LANG_CVC4; + options.lang = Parser::LANG_SMTLIB; + } else if(!strcmp(".cvc", argv[firstArgIndex] + + strlen(argv[firstArgIndex]) - 4) + || !strcmp(".cvc4", argv[firstArgIndex] + strlen(argv[firstArgIndex]) + - 5)) { + options.lang = Parser::LANG_CVC4; } } @@ -100,34 +99,12 @@ int main(int argc, char *argv[]) { } } - // Set up the input stream, either cin or a file - const char* fname; - istream* in; - ifstream* file; - if(inputFromStdin) { - fname = "stdin"; - in = &cin; - } else { - fname = argv[firstArgIndex]; - file = new ifstream(fname); - in = file; - } - // Create the parser Parser* parser; - switch(options.lang) { - case Options::LANG_SMTLIB: - parser = new SmtParser(&exprMgr, *in, fname); - break; - case Options::LANG_CVC4: - parser = new CvcParser(&exprMgr, *in, fname); - break; - case Options::LANG_AUTO: - cerr << "Auto language detection not supported yet." << endl; - abort(); - default: - cerr << "Unknown language" << endl; - abort(); + if(inputFromStdin) { + parser = Parser::getNewParser(&exprMgr, options.lang, cin); + } else { + parser = Parser::getNewParser(&exprMgr, options.lang, argv[firstArgIndex]); } // Parse and execute commands until we are done @@ -145,10 +122,6 @@ int main(int argc, char *argv[]) { // Remove the parser delete parser; - if(! inputFromStdin) { - // Delete handle to input file - delete file; - } } catch(OptionException& e) { if(options.smtcomp_mode) { cout << "unknown" << endl; |