From f5a73f09f8266f4bc073bdcc339faba334c6d9cb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Patrick=20L=C3=BChne?= Date: Tue, 20 Jun 2017 03:23:19 +0200 Subject: [PATCH] =?UTF-8?q?Added=20command-line=20option=20to=20enable=20t?= =?UTF-8?q?he=20parser=E2=80=99s=20compatibility=20mode.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/main.cpp | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/app/main.cpp b/app/main.cpp index c10ee6d..66564dc 100644 --- a/app/main.cpp +++ b/app/main.cpp @@ -5,6 +5,7 @@ #include #include +#include #include #include @@ -27,6 +28,7 @@ int main(int argc, char **argv) ("help,h", "Display this help message") ("version,v", "Display version information") ("input,i", po::value>(), "Input files (in PDDL or SAS format)") + ("parsing-mode", po::value()->default_value("strict"), "Parsing mode (strict, compatibility)") ("language,l", po::value()->default_value("auto"), "Input language (pddl, sas, auto)") ("color", po::value()->default_value("auto"), "Colorize output (always, never, auto)") ("log-priority,p", po::value()->default_value("warning"), "Log messages starting from this priority (debug, info, warning, error)") @@ -80,6 +82,20 @@ int main(int argc, char **argv) if (warningsAsErrors) logger.setAbortPriority(plasp::output::Priority::Warning); + auto parsingMode = pddl::Mode::Strict; + + const auto parsingModeString = variablesMap["parsing-mode"].as(); + + if (parsingModeString == "compatibility") + parsingMode = pddl::Mode::Compatibility; + else if (parsingModeString != "strict") + { + logger.log(plasp::output::Priority::Error, "unknown parsing mode “" + parsingModeString + "”"); + std::cout << std::endl; + printHelp(); + return EXIT_FAILURE; + } + const auto colorPolicy = variablesMap["color"].as(); if (colorPolicy == "auto") @@ -159,6 +175,7 @@ int main(int argc, char **argv) }; auto context = pddl::Context(std::move(tokenizer), logWarning); + context.mode = parsingMode; auto description = pddl::parseDescription(context); const auto translator = plasp::pddl::TranslatorASP(std::move(description), logger.outputStream()); translator.translate();