Skip to content
Snippets Groups Projects
Commit c07a0e37 authored by Jan Trávníček's avatar Jan Trávníček
Browse files

use cli internally in minimize

parent 667147ba
No related branches found
No related tags found
No related merge requests found
......@@ -13,7 +13,6 @@
#include <lexer/Lexer.h>
#include <parser/Parser.h>
 
int main(int argc, char** argv) {
try {
common::GlobalData::argc = argc;
......
......@@ -12,15 +12,8 @@ namespace automaton {
 
namespace simplify {
 
automaton::Automaton Minimize::minimize(const automaton::Automaton& automaton) {
return dispatch(automaton.getData());
}
auto MinimizeNFA = registration::OverloadRegister < Minimize, automaton::DFA < >, automaton::DFA < > >( Minimize::minimize );
auto MinimizeNFTA = registration::OverloadRegister < Minimize, automaton::DFTA < >, automaton::DFTA < > >( Minimize::minimize );
auto MinimizeNFA2 = registration::AbstractRegister < Minimize, automaton::DFA < >, const automaton::DFA < > & > ( Minimize::minimize );
auto MinimizeNFTA2 = registration::AbstractRegister < Minimize, automaton::DFTA < >, const automaton::DFTA < > & > ( Minimize::minimize );
auto MinimizeNFA = registration::AbstractRegister < Minimize, automaton::DFA < >, const automaton::DFA < > & > ( Minimize::minimize );
auto MinimizeNFTA = registration::AbstractRegister < Minimize, automaton::DFTA < >, const automaton::DFTA < > & > ( Minimize::minimize );
 
} /* namespace simplify */
 
......
......@@ -8,8 +8,6 @@
#ifndef MINIMIZE_H_
#define MINIMIZE_H_
 
#include <core/multipleDispatch.hpp>
#include <automaton/Automaton.h>
#include <automaton/FSM/DFA.h>
#include <automaton/TA/DFTA.h>
 
......@@ -24,13 +22,8 @@ namespace automaton {
 
namespace simplify {
 
class Minimize : public alib::SingleDispatch<Minimize, automaton::Automaton, const automaton::AutomatonBase &> {
class Minimize {
public:
/**
* @param dfa automaton to minimize
*/
static automaton::Automaton minimize(const automaton::Automaton& dfa);
template < class SymbolType, class StateType >
static automaton::DFA < SymbolType, StateType > minimize(const automaton::DFA < SymbolType, StateType >& dfa);
 
......
......@@ -12,17 +12,8 @@ namespace automaton {
 
namespace simplify {
 
automaton::Automaton MinimizeBrzozowski::minimize(const automaton::Automaton& automaton) {
automaton::Automaton res = dispatch(automaton.getData());
res.normalize ( );
return res;
}
auto MinimizeBrzozowskiDFA = registration::OverloadRegister < MinimizeBrzozowski, automaton::DFA < DefaultSymbolType, ext::set < ext::set < DefaultStateType > > >, automaton::DFA < > > ( MinimizeBrzozowski::minimize );
auto MinimizeBrzozowskiNFA = registration::OverloadRegister < MinimizeBrzozowski, automaton::DFA < DefaultSymbolType, ext::set < ext::set < DefaultStateType > > >, automaton::NFA < > > ( MinimizeBrzozowski::minimize );
auto MinimizeBrzozowskiDFA2 = registration::AbstractRegister < MinimizeBrzozowski, automaton::DFA < DefaultSymbolType, ext::set < ext::set < DefaultStateType > > >, const automaton::DFA < > & > ( MinimizeBrzozowski::minimize );
auto MinimizeBrzozowskiNFA2 = registration::AbstractRegister < MinimizeBrzozowski, automaton::DFA < DefaultSymbolType, ext::set < ext::set < DefaultStateType > > >, const automaton::NFA < > & > ( MinimizeBrzozowski::minimize );
auto MinimizeBrzozowskiDFA = registration::AbstractRegister < MinimizeBrzozowski, automaton::DFA < DefaultSymbolType, ext::set < ext::set < DefaultStateType > > >, const automaton::DFA < > & > ( MinimizeBrzozowski::minimize );
auto MinimizeBrzozowskiNFA = registration::AbstractRegister < MinimizeBrzozowski, automaton::DFA < DefaultSymbolType, ext::set < ext::set < DefaultStateType > > >, const automaton::NFA < > & > ( MinimizeBrzozowski::minimize );
 
} /* namespace simplify */
 
......
......@@ -4,12 +4,10 @@
* Created on: 18. 11. 2014
* Author: Tomas Pecka
*/
#ifndef MINIMIZE_BRZOZOWSKI_H_
#define MINIMIZE_BRZOZOWSKI_H_
 
#include <core/multipleDispatch.hpp>
#include <automaton/Automaton.h>
#include <automaton/FSM/DFA.h>
#include <automaton/FSM/NFA.h>
#include <automaton/FSM/MultiInitialStateNFA.h>
......@@ -21,13 +19,8 @@ namespace automaton {
 
namespace simplify {
 
class MinimizeBrzozowski : public alib::SingleDispatch<MinimizeBrzozowski, automaton::Automaton, const automaton::AutomatonBase &> {
class MinimizeBrzozowski {
public:
/**
* @param dfa automaton to minimize
*/
static automaton::Automaton minimize(const automaton::Automaton& dfa);
template < class SymbolType, class StateType >
static automaton::DFA < SymbolType, ext::set < ext::set < StateType > > > minimize(const automaton::DFA < SymbolType, StateType > & dfa);
template < class SymbolType, class StateType >
......
EXECUTABLE:=aminimize2
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)/../../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/
......@@ -8,13 +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/simplify/Minimize.h"
#include "automaton/simplify/MinimizeBrzozowski.h"
#include <lexer/Lexer.h>
#include <parser/Parser.h>
 
int main(int argc, char** argv) {
try {
......@@ -44,32 +41,35 @@ int main(int argc, char** argv) {
if(measure.isSet())
common::GlobalData::measure = true;
 
cli::Environment environment;
environment.setBinding ( "stdin", input.getValue ( ) );
environment.setBinding ( "stdout", "-" );
measurements::start("Overal", measurements::Type::OVERALL);
measurements::start("Input read", measurements::Type::AUXILIARY);
 
automaton::Automaton automaton = alib::XmlDataFactory::fromTokens (sax::FromXMLParserHelper::parseInput(input));
cli::Parser parser ( cli::Lexer ( "execute <#stdin > $inputAutomaton" ) );
parser.parse ( )->run ( environment );
 
measurements::end();
measurements::start("Algorithm", measurements::Type::MAIN);
 
if(algorithm.getValue() == "hopcroft") {
automaton::Automaton res = automaton::simplify::Minimize::minimize(automaton);
measurements::end();
measurements::start("Output write", measurements::Type::AUXILIARY);
alib::XmlDataFactory::toStdout(res);
parser = cli::Parser ( cli::Lexer ( "execute automaton::simplify::Minimize $inputAutomaton > $outputAutomaton" ) );
} else if(algorithm.getValue() == "brzozowski") {
automaton::Automaton res = automaton::simplify::MinimizeBrzozowski::minimize(automaton);
measurements::end();
measurements::start("Output write", measurements::Type::AUXILIARY);
alib::XmlDataFactory::toStdout(res);
parser = cli::Parser ( cli::Lexer ( "execute automaton::simplify::MinimizeBrzozowski $inputAutomaton > $outputAutomaton" ) );
} else {
throw exception::CommonException("Unknown algorithm selected.");
}
 
parser.parse ( )->run ( environment );
measurements::end();
measurements::start("Output write", measurements::Type::AUXILIARY);
parser = cli::Parser ( cli::Lexer ( "execute $outputAutomaton >#stdout" ) );
parser.parse ( )->run ( environment );
measurements::end();
measurements::end();
 
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment