diff options
author | Christopher L. Conway <christopherleeconway@gmail.com> | 2010-06-03 22:27:16 +0000 |
---|---|---|
committer | Christopher L. Conway <christopherleeconway@gmail.com> | 2010-06-03 22:27:16 +0000 |
commit | f780dd882fc343cef668d5cd9eed8f515d0e70ed (patch) | |
tree | 5a3432a90d1f30cdc00f2353c0b43a468da09661 /src/parser/parser_builder.cpp | |
parent | 4cd2a432d621d18f7b811caab8935a617b4771c5 (diff) |
Implementing input from stdin (Fixes: #144)
Diffstat (limited to 'src/parser/parser_builder.cpp')
-rw-r--r-- | src/parser/parser_builder.cpp | 44 |
1 files changed, 36 insertions, 8 deletions
diff --git a/src/parser/parser_builder.cpp b/src/parser/parser_builder.cpp index b2bb15a6a..a9b3c461d 100644 --- a/src/parser/parser_builder.cpp +++ b/src/parser/parser_builder.cpp @@ -52,31 +52,37 @@ public: } };*/ -ParserBuilder::ParserBuilder(InputLanguage lang, const std::string& filename) : +ParserBuilder::ParserBuilder(ExprManager& exprManager, const std::string& filename) : d_inputType(FILE_INPUT), - d_lang(lang), + d_lang(LANG_AUTO), d_filename(filename), - d_exprManager(NULL), + d_streamInput(NULL), + d_exprManager(exprManager), d_checksEnabled(true), d_strictMode(false), d_mmap(false) { } -Parser *ParserBuilder::build() throw (InputStreamException) { +Parser *ParserBuilder::build() throw (InputStreamException,AssertionException) { Input *input; switch( d_inputType ) { case FILE_INPUT: input = Input::newFileInput(d_lang,d_filename,d_mmap); break; + case STREAM_INPUT: + AlwaysAssert( d_streamInput != NULL, + "Uninitialized stream input in ParserBuilder::build()" ); + input = Input::newStreamInput(d_lang,*d_streamInput,d_filename); + break; case STRING_INPUT: input = Input::newStringInput(d_lang,d_stringInput,d_filename); break; } switch(d_lang) { case LANG_SMTLIB_V2: - return new Smt2(d_exprManager, input, d_strictMode); + return new Smt2(&d_exprManager, input, d_strictMode); default: - return new Parser(d_exprManager, input, d_strictMode); + return new Parser(&d_exprManager, input, d_strictMode); } } @@ -115,6 +121,27 @@ ParserBuilder& ParserBuilder::withChecks(bool flag) { return *this; } +ParserBuilder& ParserBuilder::withExprManager(ExprManager& exprManager) { + d_exprManager = exprManager; + return *this; +} + +ParserBuilder& ParserBuilder::withFileInput() { + d_inputType = FILE_INPUT; + return *this; +} + +ParserBuilder& ParserBuilder::withFilename(const std::string& filename) { + d_filename = filename; + return *this; +} + +ParserBuilder& ParserBuilder::withInputLanguage(InputLanguage lang) { + d_lang = lang; + return *this; +} + + ParserBuilder& ParserBuilder::withMmap(bool flag) { d_mmap = flag; return *this; @@ -125,8 +152,9 @@ ParserBuilder& ParserBuilder::withStrictMode(bool flag) { return *this; } -ParserBuilder& ParserBuilder::withExprManager(ExprManager& exprManager) { - d_exprManager = &exprManager; +ParserBuilder& ParserBuilder::withStreamInput(std::istream& input) { + d_inputType = STREAM_INPUT; + d_streamInput = &input; return *this; } |