diff options
author | Morgan Deters <mdeters@cs.nyu.edu> | 2014-04-29 17:57:17 -0400 |
---|---|---|
committer | Morgan Deters <mdeters@cs.nyu.edu> | 2014-04-29 19:54:13 -0400 |
commit | 03c1daa126ecd86d1434c7512b73723687ea8ca0 (patch) | |
tree | 5c9f3fa488b6a8c63237ccc90598feb6265b14ab /src/parser/parser_builder.cpp | |
parent | 138259870f2eb506ba8f9b57cf9f44db440e6940 (diff) |
Fix for --force-logic to extend its reach to the parser.
Diffstat (limited to 'src/parser/parser_builder.cpp')
-rw-r--r-- | src/parser/parser_builder.cpp | 22 |
1 files changed, 20 insertions, 2 deletions
diff --git a/src/parser/parser_builder.cpp b/src/parser/parser_builder.cpp index 7d0a0c4b9..c8171d180 100644 --- a/src/parser/parser_builder.cpp +++ b/src/parser/parser_builder.cpp @@ -25,6 +25,7 @@ #include "expr/expr_manager.h" #include "parser/options.h" +#include "smt/options.h" namespace CVC4 { namespace parser { @@ -57,6 +58,8 @@ void ParserBuilder::init(ExprManager* exprManager, d_canIncludeFile = true; d_mmap = false; d_parseOnly = false; + d_logicIsForced = false; + d_forcedLogic = ""; } Parser* ParserBuilder::build() @@ -109,6 +112,10 @@ Parser* ParserBuilder::build() parser->disallowIncludeFile(); } + if( d_logicIsForced ) { + parser->forceLogic(d_forcedLogic); + } + return parser; } @@ -148,14 +155,19 @@ ParserBuilder& ParserBuilder::withParseOnly(bool flag) { } ParserBuilder& ParserBuilder::withOptions(const Options& options) { - return - withInputLanguage(options[options::inputLanguage]) + ParserBuilder& retval = *this; + retval = + retval.withInputLanguage(options[options::inputLanguage]) .withMmap(options[options::memoryMap]) .withChecks(options[options::semanticChecks]) .withStrictMode(options[options::strictParsing]) .withParseOnly(options[options::parseOnly]) .withIncludeFile(options[options::filesystemAccess]); + if(options.wasSetByUser(options::forceLogic)) { + retval = retval.withForcedLogic(options[options::forceLogic].getLogicString()); } + return retval; +} ParserBuilder& ParserBuilder::withStrictMode(bool flag) { d_strictMode = flag; @@ -167,6 +179,12 @@ ParserBuilder& ParserBuilder::withIncludeFile(bool flag) { return *this; } +ParserBuilder& ParserBuilder::withForcedLogic(const std::string& logic) { + d_logicIsForced = true; + d_forcedLogic = logic; + return *this; +} + ParserBuilder& ParserBuilder::withStreamInput(std::istream& input) { d_inputType = STREAM_INPUT; d_streamInput = &input; |