From d9afbb549dda014731ee2be740a0d3b1c3bcdef7 Mon Sep 17 00:00:00 2001 From: Jan Travnicek <Jan.Travnicek@fit.cvut.cz> Date: Sun, 15 Nov 2015 13:59:12 +0100 Subject: [PATCH] expose normalize to LL1 --- anormalize2/src/anormalize.cpp | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/anormalize2/src/anormalize.cpp b/anormalize2/src/anormalize.cpp index 93e04c98da..b9b20a21b8 100644 --- a/anormalize2/src/anormalize.cpp +++ b/anormalize2/src/anormalize.cpp @@ -17,6 +17,7 @@ #include "grammar/convert/ToGrammarRightRG.h" #include "grammar/simplify/ToCNF.h" #include "grammar/simplify/ToGNF.h" +#include "grammar/parsing/DeterministicLL1Grammar.h" int main(int argc, char** argv) { @@ -26,7 +27,7 @@ int main(int argc, char** argv) { TCLAP::ValueArg<std::string> input( "i", "input", "Input to normalize", false, "-", "file"); cmd.add( input ); - std::vector<std::string> forms {"leftRG", "rightRG", "singleInitialState", "CNF", "GNF" }; + std::vector<std::string> forms {"leftRG", "rightRG", "singleInitialState", "CNF", "GNF", "LL1" }; TCLAP::ValuesConstraint<std::string> formVals( forms ); TCLAP::ValueArg<std::string> form( "f", "form", "Convert to different form", false, "", &formVals); @@ -166,6 +167,18 @@ int main(int argc, char** argv) { std::chrono::measurements::end(); std::chrono::measurements::start("Output write", std::chrono::measurements::Type::AUXILARY); + alib::XmlDataFactory::toStdout(res); + } else if(form.getValue() == "LL1") { + grammar::Grammar grammar = alib::XmlDataFactory::fromTokens<grammar::Grammar>( tokens ); + + std::chrono::measurements::end(); + std::chrono::measurements::start("Algorithm", std::chrono::measurements::Type::MAIN); + + grammar::Grammar res = grammar::parsing::DeterministicLL1Grammar::convert(grammar); + + std::chrono::measurements::end(); + std::chrono::measurements::start("Output write", std::chrono::measurements::Type::AUXILARY); + alib::XmlDataFactory::toStdout(res); } else { throw exception::AlibException("Invalid normalize command"); -- GitLab