diff options
author | Christopher L. Conway <christopherleeconway@gmail.com> | 2010-10-22 22:50:39 +0000 |
---|---|---|
committer | Christopher L. Conway <christopherleeconway@gmail.com> | 2010-10-22 22:50:39 +0000 |
commit | 3870dd8a11c1153e2db24ffe1b384b84129c2df4 (patch) | |
tree | 73524745d29dd32a160867afed4f314049211cef /src/parser | |
parent | a486cdde94366aa6b4a1f558eecc0130ba25ad5e (diff) |
Using Options in ParserBuilder and InteractiveShell
Diffstat (limited to 'src/parser')
-rw-r--r-- | src/parser/parser_builder.cpp | 47 | ||||
-rw-r--r-- | src/parser/parser_builder.h | 14 |
2 files changed, 50 insertions, 11 deletions
diff --git a/src/parser/parser_builder.cpp b/src/parser/parser_builder.cpp index 31f402df1..348fb6e6d 100644 --- a/src/parser/parser_builder.cpp +++ b/src/parser/parser_builder.cpp @@ -56,15 +56,36 @@ public: } };*/ -ParserBuilder::ParserBuilder(ExprManager& exprManager, const std::string& filename) : - d_inputType(FILE_INPUT), - d_lang(language::input::LANG_AUTO), - d_filename(filename), - d_streamInput(NULL), - d_exprManager(exprManager), - d_checksEnabled(true), - d_strictMode(false), - d_mmap(false) { +ParserBuilder::ParserBuilder(ExprManager& exprManager, const std::string& filename)// : + // d_inputType(FILE_INPUT), + // d_lang(language::input::LANG_AUTO), + : d_filename(filename), + // d_streamInput(NULL), + d_exprManager(exprManager) + // d_checksEnabled(true), + // d_strictMode(false), + // d_mmap(false) +{ + init(exprManager,filename); +} + + ParserBuilder::ParserBuilder(ExprManager& exprManager, const std::string& filename, const Options& options) : + d_filename(filename), + d_exprManager(exprManager) +{ + init(exprManager,filename); + withOptions(options); +} + + void ParserBuilder::init(ExprManager& exprManager, const std::string& filename) { + d_inputType = FILE_INPUT; + d_lang = language::input::LANG_AUTO; + d_filename = filename; + d_streamInput = NULL; + d_exprManager = exprManager; + d_checksEnabled = true; + d_strictMode = false; + d_mmap = false; } Parser *ParserBuilder::build() throw (InputStreamException,AssertionException) { @@ -135,6 +156,14 @@ ParserBuilder& ParserBuilder::withMmap(bool flag) { return *this; } +ParserBuilder& ParserBuilder::withOptions(const Options& options) { + return + withInputLanguage(options.inputLanguage) + .withMmap(options.memoryMap) + .withChecks(options.semanticChecks) + .withStrictMode(options.strictParsing); + } + ParserBuilder& ParserBuilder::withStrictMode(bool flag) { d_strictMode = flag; return *this; diff --git a/src/parser/parser_builder.h b/src/parser/parser_builder.h index 2e0af677e..4e8c06f78 100644 --- a/src/parser/parser_builder.h +++ b/src/parser/parser_builder.h @@ -23,8 +23,10 @@ #include <string> -#include "parser/input.h" -#include "parser/parser_options.h" +#include "input.h" +#include "parser_options.h" + +#include "util/options.h" namespace CVC4 { @@ -87,11 +89,16 @@ class CVC4_PUBLIC ParserBuilder { /** Should we memory-map a file input? */ bool d_mmap; + void init(ExprManager& exprManager, const std::string& filename); + public: /** Create a parser builder using the given ExprManager and filename. */ ParserBuilder(ExprManager& exprManager, const std::string& filename); + ParserBuilder(ExprManager& exprManager, const std::string& filename, + const Options& options); + /** Build the parser, using the current settings. */ Parser *build() throw (InputStreamException,AssertionException); @@ -118,6 +125,9 @@ public: * the parser will have a file input. (Default: no) */ ParserBuilder& withMmap(bool flag = true); + /** Derive settings from the given options. */ + ParserBuilder& withOptions(const Options& options); + /** Should the parser use strict mode? (Default: no) */ ParserBuilder& withStrictMode(bool flag = true); |