From c6e876b962639bc64af419fa0d9219f9c8df57ce Mon Sep 17 00:00:00 2001 From: Jan Travnicek <Jan.Travnicek@fit.cvut.cz> Date: Thu, 19 Feb 2015 17:12:25 +0100 Subject: [PATCH] remove epsilon rules from grammar exposed --- aepsilon2/src/aepsilon.cpp | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/aepsilon2/src/aepsilon.cpp b/aepsilon2/src/aepsilon.cpp index 2afd29fe7b..40106b6e88 100644 --- a/aepsilon2/src/aepsilon.cpp +++ b/aepsilon2/src/aepsilon.cpp @@ -12,13 +12,14 @@ #include "automaton/simplify/EpsilonRemoverIncoming.h" #include "automaton/simplify/EpsilonRemoverOutgoing.h" +#include "grammar/simplify/EpsilonRemover.h" int main(int argc, char** argv) { try { TCLAP::CmdLine cmd("Automaton rename binary", ' ', "0.01"); - TCLAP::ValueArg<std::string> input( "i", "input", "Automaton where to remove epsilon transitions", false, "-", "file"); + TCLAP::ValueArg<std::string> input( "i", "input", "Automaton/Grammar where to remove epsilon transitions", false, "-", "file"); cmd.add( input ); std::vector<std::string> algorithms{"incoming", "outgoing", "default" }; @@ -39,10 +40,17 @@ int main(int argc, char** argv) { sax::SaxParseInterface::parseStdin(tokens); } - if(algorithm.getValue() == "outgoing") + if(algorithm.getValue() == "outgoing") { alib::XmlDataFactory::toStdout(automaton::simplify::EpsilonRemoverOutgoing::remove(alib::XmlDataFactory::fromTokens<automaton::Automaton>(tokens))); - else if(algorithm.getValue() == "incoming" || algorithm.getValue() == "default") { + } else if(algorithm.getValue() == "incoming") { alib::XmlDataFactory::toStdout(automaton::simplify::EpsilonRemoverIncoming::remove(alib::XmlDataFactory::fromTokens<automaton::Automaton>(tokens))); + } else if(algorithm.getValue() == "default") { + if(alib::XmlDataFactory::first<automaton::Automaton>(tokens)) + alib::XmlDataFactory::toStdout(automaton::simplify::EpsilonRemoverIncoming::remove(alib::XmlDataFactory::fromTokens<automaton::Automaton>(tokens))); + else if(alib::XmlDataFactory::first<grammar::Grammar>(tokens)) + alib::XmlDataFactory::toStdout(grammar::simplify::EpsilonRemover::remove(alib::XmlDataFactory::fromTokens<grammar::Grammar>(tokens))); + else + throw exception::AlibException("Invalid formalism"); } else { throw exception::AlibException("Invalid algorithm"); } -- GitLab