diff --git a/acompaction2/makefile.conf b/acompaction2/makefile.conf index 813ae435ef96d4c4454c8a3ee6ba44d2f1067dfd..9981fe67f386a34811eea4befef55eb031909889 100644 --- a/acompaction2/makefile.conf +++ b/acompaction2/makefile.conf @@ -1,4 +1,4 @@ EXECUTABLE:=acompaction2 -LINK_PATHS=../alib2elgo/ ../alib2algo/ ../alib2data/ ../alib2common/ ../alib2std/ -LINK_LIBRARIES=alib2elgo alib2algo alib2data alib2common alib2std xml2 -INCLUDE_PATHS=\$$(SOURCES_BASE_DIR)/../../alib2elgo/src/ \$$(SOURCES_BASE_DIR)/../../alib2algo/src/ \$$(SOURCES_BASE_DIR)/../../alib2data/src/ \$$(SOURCES_BASE_DIR)/../../alib2common/src/ \$$(SOURCES_BASE_DIR)/../../alib2std/src/ /usr/include/libxml2/ +LINK_PATHS=../alib2cli/ ../alib2elgo/ ../alib2algo/ ../alib2data/ ../alib2common/ ../alib2std/ +LINK_LIBRARIES=alib2cli alib2elgo alib2algo alib2data alib2common alib2std xml2 +INCLUDE_PATHS=\$$(SOURCES_BASE_DIR)/../../alib2cli/src/ \$$(SOURCES_BASE_DIR)/../../alib2common/src/ \$$(SOURCES_BASE_DIR)/../../alib2std/src/ /usr/include/libxml2/ diff --git a/acompaction2/src/acompaction.cpp b/acompaction2/src/acompaction.cpp index ca424e4d40fec644c409af58bb45a4829c177f5d..9aa03cad07cfc602e0526c9c73c7186a050a4005 100644 --- a/acompaction2/src/acompaction.cpp +++ b/acompaction2/src/acompaction.cpp @@ -8,11 +8,10 @@ #include <tclap/CmdLine.h> #include <global/GlobalData.h> #include <measure> -#include <sax/FromXMLParserHelper.h> -#include "exception/CommonException.h" -#include "factory/XmlDataFactory.hpp" -#include "automaton/transform/Compaction.h" +#include <exception/CommonException.h> +#include <lexer/Lexer.h> +#include <parser/Parser.h> int main(int argc, char** argv) { try { @@ -37,23 +36,27 @@ int main(int argc, char** argv) { if(measure.isSet()) common::GlobalData::measure = true; - measurements::start("Overal", measurements::Type::OVERALL); - measurements::start("Input read", measurements::Type::AUXILIARY); + cli::Environment environment; + environment.setBinding ( "stdin", input.getValue ( ) ); + environment.setBinding ( "stdout", "-" ); - automaton::Automaton automaton = alib::XmlDataFactory::fromTokens (sax::FromXMLParserHelper::parseInput(input)); + measurements::start ( "Overal", measurements::Type::OVERALL ); + measurements::start ( "Input read", measurements::Type::AUXILIARY ); - measurements::end(); - measurements::start("Algorithm", measurements::Type::MAIN); + cli::Parser parser ( cli::Lexer ( "execute <#stdin > $inputAutomaton" ) ); + parser.parse ( )->run ( environment ); - automaton::Automaton res = automaton::transform::Compaction::convert(automaton); + measurements::end ( ); + measurements::start ( "Algorithm", measurements::Type::MAIN ); - measurements::end(); - measurements::start("Output write", measurements::Type::AUXILIARY); + parser = cli::Parser ( cli::Lexer ( "execute automaton::transform::Compaction $inputAutomaton > $outputAutomaton" ) ); + parser.parse ( )->run ( environment ); - alib::XmlDataFactory::toStdout(res); + measurements::end ( ); + measurements::start ( "Output write", measurements::Type::AUXILIARY ); - measurements::end(); - measurements::end(); + parser = cli::Parser ( cli::Lexer ( "execute $outputAutomaton >#stdout" ) ); + parser.parse ( )->run ( environment ); if(measure.getValue()) ext::cmeasure << measurements::results() << std::endl; diff --git a/alib2algo/src/automaton/transform/Compaction.cpp b/alib2algo/src/automaton/transform/Compaction.cpp index abca9417efb5f47e09fcec79fbbf0c0eb32b0107..afdb807474d9a20841ab7e109d4616f71421c254 100644 --- a/alib2algo/src/automaton/transform/Compaction.cpp +++ b/alib2algo/src/automaton/transform/Compaction.cpp @@ -12,17 +12,9 @@ namespace automaton { namespace transform { -automaton::Automaton Compaction::convert(const automaton::Automaton& automaton) { - return dispatch(automaton.getData()); -} - -auto CompactionCompactNFA = registration::OverloadRegister < Compaction, automaton::CompactNFA < >, automaton::CompactNFA < > > ( Compaction::convert ); -auto CompactionDFA = registration::OverloadRegister < Compaction, automaton::CompactNFA < >, automaton::DFA < > > ( Compaction::convert ); -auto CompactionNFA = registration::OverloadRegister < Compaction, automaton::CompactNFA < >, automaton::NFA < > > ( Compaction::convert ); - -auto CompactionCompactNFA2 = registration::AbstractRegister < Compaction, automaton::CompactNFA < >, const automaton::CompactNFA < > & > ( Compaction::convert ); -auto CompactionDFA2 = registration::AbstractRegister < Compaction, automaton::CompactNFA < >, const automaton::DFA < > & > ( Compaction::convert ); -auto CompactionNFA2 = registration::AbstractRegister < Compaction, automaton::CompactNFA < >, const automaton::NFA < > & > ( Compaction::convert ); +auto CompactionCompactNFA = registration::AbstractRegister < Compaction, automaton::CompactNFA < >, const automaton::CompactNFA < > & > ( Compaction::convert ); +auto CompactionDFA = registration::AbstractRegister < Compaction, automaton::CompactNFA < >, const automaton::DFA < > & > ( Compaction::convert ); +auto CompactionNFA = registration::AbstractRegister < Compaction, automaton::CompactNFA < >, const automaton::NFA < > & > ( Compaction::convert ); } /* namespace transform */ diff --git a/alib2algo/src/automaton/transform/Compaction.h b/alib2algo/src/automaton/transform/Compaction.h index 1e299bd6970b2eb0a5ed07e659221ebcd2a8685f..3a3a75abfd979a286b5293fdcd2755eb67ed0f59 100644 --- a/alib2algo/src/automaton/transform/Compaction.h +++ b/alib2algo/src/automaton/transform/Compaction.h @@ -11,9 +11,6 @@ #include <stack> #include <tuple> -#include <core/multipleDispatch.hpp> - -#include "automaton/Automaton.h" #include "automaton/AutomatonFeatures.h" #include <automaton/FSM/CompactNFA.h> #include <automaton/FSM/DFA.h> @@ -25,7 +22,7 @@ namespace transform { /** * Transforms FSM to CompactNFA */ -class Compaction : public alib::SingleDispatch<Compaction, automaton::Automaton, const automaton::AutomatonBase &> { +class Compaction { public: template < class SymbolType, class StateType > static automaton::CompactNFA < SymbolType, StateType > convert( const automaton::DFA < SymbolType, StateType > & automaton); @@ -33,13 +30,6 @@ public: static automaton::CompactNFA < SymbolType, StateType > convert( const automaton::NFA < SymbolType, StateType > & automaton); template < class SymbolType, class StateType > static automaton::CompactNFA < SymbolType, StateType > convert( const automaton::CompactNFA < SymbolType, StateType > & automaton); - - /** - * Transforms - * @param automaton FSM to transform - * @return CompactNFA equivalent to given automaton - */ - static automaton::Automaton convert( const automaton::Automaton & automaton ); }; template < class SymbolType, class StateType >