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