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

Move AutomatonFromStringParser/Composer

parent 6201971b
No related branches found
No related tags found
No related merge requests found
......@@ -15,7 +15,7 @@ const label::LabelFromStringParser FromStringParsers::labelParser;
const alphabet::SymbolFromStringParser FromStringParsers::symbolParser;
const regexp::RegExpFromStringParser FromStringParsers::regexpParser;
const string::StringFromStringParser FromStringParsers::stringParser;
const automaton::FiniteAutomatonFromStringParser FromStringParsers::automatonParser;
const automaton::AutomatonFromStringParser FromStringParsers::automatonParser;
const grammar::GrammarFromStringParser FromStringParsers::grammarParser;
const primitive::PrimitiveFromStringParser FromStringParsers::primitiveParser;
 
......@@ -23,7 +23,7 @@ const label::LabelToStringComposer ToStringComposers::labelComposer;
const alphabet::SymbolToStringComposer ToStringComposers::symbolComposer;
const regexp::RegExpToStringComposer ToStringComposers::regexpComposer;
const string::StringToStringComposer ToStringComposers::stringComposer;
const automaton::FiniteAutomatonToStringComposer ToStringComposers::automatonComposer;
const automaton::AutomatonToStringComposer ToStringComposers::automatonComposer;
const grammar::GrammarToStringComposer ToStringComposers::grammarComposer;
const primitive::PrimitiveToStringComposer ToStringComposers::primitiveComposer;
 
......
......@@ -12,7 +12,7 @@
#include "alphabet/SymbolFromStringParser.h"
#include "regexp/RegExpFromStringParser.h"
#include "string/StringFromStringParser.h"
#include "automaton/FSM/FiniteAutomatonFromStringParser.h"
#include "automaton/AutomatonFromStringParser.h"
#include "grammar/GrammarFromStringParser.h"
#include "primitive/PrimitiveFromStringParser.h"
 
......@@ -20,7 +20,7 @@
#include "alphabet/SymbolToStringComposer.h"
#include "regexp/RegExpToStringComposer.h"
#include "string/StringToStringComposer.h"
#include "automaton/FSM/FiniteAutomatonToStringComposer.h"
#include "automaton/AutomatonToStringComposer.h"
#include "grammar/GrammarToStringComposer.h"
#include "primitive/PrimitiveToStringComposer.h"
 
......@@ -83,7 +83,7 @@ public:
static const alphabet::SymbolFromStringParser symbolParser;
static const regexp::RegExpFromStringParser regexpParser;
static const string::StringFromStringParser stringParser;
static const automaton::FiniteAutomatonFromStringParser automatonParser;
static const automaton::AutomatonFromStringParser automatonParser;
static const grammar::GrammarFromStringParser grammarParser;
static const primitive::PrimitiveFromStringParser primitiveParser;
 
......@@ -95,7 +95,7 @@ public:
static const alphabet::SymbolToStringComposer symbolComposer;
static const regexp::RegExpToStringComposer regexpComposer;
static const string::StringToStringComposer stringComposer;
static const automaton::FiniteAutomatonToStringComposer automatonComposer;
static const automaton::AutomatonToStringComposer automatonComposer;
static const grammar::GrammarToStringComposer grammarComposer;
static const primitive::PrimitiveToStringComposer primitiveComposer;
};
......
/*
* FiniteAutomatonFromStringLexer.cpp
* AutomatonFromStringLexer.cpp
*
* Created on: Nov 23, 2013
* Author: Jan Travnicek
*/
 
#include "FiniteAutomatonFromStringLexer.h"
#include "../../std/istream.h"
#include "AutomatonFromStringLexer.h"
#include "../std/istream.h"
 
namespace automaton {
 
FiniteAutomatonFromStringLexer::Token FiniteAutomatonFromStringLexer::next(std::istream& in) const {
FiniteAutomatonFromStringLexer::Token token;
AutomatonFromStringLexer::Token AutomatonFromStringLexer::next(std::istream& in) const {
AutomatonFromStringLexer::Token token;
token.type = TokenType::ERROR;
token.value = "";
token.raw = "";
......@@ -98,7 +98,7 @@ L1:
}
}
 
void FiniteAutomatonFromStringLexer::putback(std::istream& in, FiniteAutomatonFromStringLexer::Token token) const {
void AutomatonFromStringLexer::putback(std::istream& in, AutomatonFromStringLexer::Token token) const {
while(!token.raw.empty()) {
in.putback(token.raw.back());
token.raw.pop_back();
......
/*
* FiniteAutomatonFromStringLexer.h
* AutomatonFromStringLexer.h
*
* Created on: Nov 23, 2013
* Author: Jan Travnicek
*/
 
#ifndef FINITE_AUTOMATON_FROM_STRING_LEXER_H_
#define FINITE_AUTOMATON_FROM_STRING_LEXER_H_
#ifndef AUTOMATON_FROM_STRING_LEXER_H_
#define AUTOMATON_FROM_STRING_LEXER_H_
 
#include <string>
#include <sstream>
 
namespace automaton {
 
class FiniteAutomatonFromStringLexer {
class AutomatonFromStringLexer {
public:
enum class TokenType {
EPSILON_NFA,
......@@ -42,4 +42,4 @@ public:
 
} /* namepsace automaton */
 
#endif /* FINITE_AUTOMATON_FROM_STRING_LEXER_H_ */
#endif /* AUTOMATON_FROM_STRING_LEXER_H_ */
/*
* FiniteAutomatonFromStringParser.h
* AutomatonFromStringParser.h
*
* Created on: Nov 23, 2013
* Author: Jan Travnicek
*/
 
#ifndef FINITE_AUTOMATON_FROM_STRING_PARSER_H_
#define FINITE_AUTOMATON_FROM_STRING_PARSER_H_
#ifndef AUTOMATON_FROM_STRING_PARSER_H_
#define AUTOMATON_FROM_STRING_PARSER_H_
 
#include "FiniteAutomatonFromStringLexer.h"
#include "AutomatonFromStringLexer.h"
 
#include "../Automaton.h"
#include "../AutomatonFeatures.h"
#include "../common/State.h"
#include "Automaton.h"
#include "AutomatonFeatures.h"
#include "common/State.h"
 
#include <tuple>
#include "../../std/variant.hpp"
#include "../../string/Epsilon.h"
#include "../std/variant.hpp"
#include "../string/Epsilon.h"
 
namespace alib {
 
......@@ -27,8 +27,8 @@ struct stringApi;
 
namespace automaton {
 
class FiniteAutomatonFromStringParser {
FiniteAutomatonFromStringLexer m_FiniteAutomatonLexer;
class AutomatonFromStringParser {
AutomatonFromStringLexer m_AutomatonLexer;
 
void initialFinalState(std::istream& input, bool& initial, bool& final) const;
 
......@@ -50,4 +50,4 @@ class FiniteAutomatonFromStringParser {
 
} /* namespace automaton */
 
#endif /* FINITE_AUTOMATON_FROM_STRING_PARSER_H_ */
#endif /* AUTOMATON_FROM_STRING_PARSER_H_ */
/*
* FiniteAutomatonToStringComposer.cpp
* AutomatonToStringComposer.cpp
*
* Created on: Nov 23, 2013
* Author: Jan Travnicek
*/
 
#include "FiniteAutomatonToStringComposer.h"
#include "../../exception/AlibException.h"
#include "AutomatonToStringComposer.h"
#include "../exception/AlibException.h"
 
#include "../../StringApi.hpp"
#include "../StringApi.hpp"
 
namespace automaton {
 
void FiniteAutomatonToStringComposer::composeTransitionsFromState(std::ostream& out, const DFA& automaton, const State& from) const {
void AutomatonToStringComposer::composeTransitionsFromState(std::ostream& out, const DFA& automaton, const State& from) const {
std::map<std::pair<State, alphabet::Symbol>, State> symbolTransitionsFromState = automaton.getTransitionsFromState(from);
 
for(const alphabet::Symbol& inputSymbol : automaton.getInputAlphabet()) {
......@@ -26,7 +26,7 @@ void FiniteAutomatonToStringComposer::composeTransitionsFromState(std::ostream&
}
}
 
void FiniteAutomatonToStringComposer::composeTransitionsFromState(std::ostream& out, const NFA& automaton, const State& from) const {
void AutomatonToStringComposer::composeTransitionsFromState(std::ostream& out, const NFA& automaton, const State& from) const {
std::map<std::pair<State, alphabet::Symbol>, std::set<State> > symbolTransitionsFromState = automaton.getTransitionsFromState(from);
 
for(const alphabet::Symbol& inputSymbol : automaton.getInputAlphabet()) {
......@@ -44,7 +44,7 @@ void FiniteAutomatonToStringComposer::composeTransitionsFromState(std::ostream&
}
}
 
void FiniteAutomatonToStringComposer::composeTransitionsFromState(std::ostream& out, const MultiInitialStateNFA& automaton, const State& from) const {
void AutomatonToStringComposer::composeTransitionsFromState(std::ostream& out, const MultiInitialStateNFA& automaton, const State& from) const {
std::map<std::pair<State, alphabet::Symbol>, std::set<State> > symbolTransitionsFromState = automaton.getTransitionsFromState(from);
 
for(const alphabet::Symbol& inputSymbol : automaton.getInputAlphabet()) {
......@@ -62,7 +62,7 @@ void FiniteAutomatonToStringComposer::composeTransitionsFromState(std::ostream&
}
}
 
void FiniteAutomatonToStringComposer::composeTransitionsFromState(std::ostream& out, const EpsilonNFA& automaton, const State& from) const {
void AutomatonToStringComposer::composeTransitionsFromState(std::ostream& out, const EpsilonNFA& automaton, const State& from) const {
std::map<std::pair<State, alphabet::Symbol>, std::set<State> > symbolTransitionsFromState = automaton.getSymbolTransitionsFromState(from);
 
for(const alphabet::Symbol& inputSymbol : automaton.getInputAlphabet()) {
......@@ -92,7 +92,7 @@ void FiniteAutomatonToStringComposer::composeTransitionsFromState(std::ostream&
}
}
 
void FiniteAutomatonToStringComposer::compose(std::ostream& out, const DFA& automaton) const {
void AutomatonToStringComposer::compose(std::ostream& out, const DFA& automaton) const {
out << "DFA";
for(const auto& symbol : automaton.getInputAlphabet()) {
out << " ";
......@@ -116,7 +116,7 @@ void FiniteAutomatonToStringComposer::compose(std::ostream& out, const DFA& auto
}
}
 
void FiniteAutomatonToStringComposer::compose(std::ostream& out, const NFA& automaton) const {
void AutomatonToStringComposer::compose(std::ostream& out, const NFA& automaton) const {
out << "NFA";
for(const auto& symbol : automaton.getInputAlphabet()) {
out << " ";
......@@ -140,7 +140,7 @@ void FiniteAutomatonToStringComposer::compose(std::ostream& out, const NFA& auto
}
}
 
void FiniteAutomatonToStringComposer::compose(std::ostream& out, const MultiInitialStateNFA& automaton) const {
void AutomatonToStringComposer::compose(std::ostream& out, const MultiInitialStateNFA& automaton) const {
out << "MISNFA";
for(const auto& symbol : automaton.getInputAlphabet()) {
out << " ";
......@@ -164,7 +164,7 @@ void FiniteAutomatonToStringComposer::compose(std::ostream& out, const MultiInit
}
}
 
void FiniteAutomatonToStringComposer::compose(std::ostream& out, const EpsilonNFA& automaton) const {
void AutomatonToStringComposer::compose(std::ostream& out, const EpsilonNFA& automaton) const {
out << "ENFA";
for(const auto& symbol : automaton.getInputAlphabet()) {
out << " ";
......@@ -189,75 +189,75 @@ void FiniteAutomatonToStringComposer::compose(std::ostream& out, const EpsilonNF
}
}
 
void FiniteAutomatonToStringComposer::compose(std::ostream& output, const Automaton& automaton) const {
void AutomatonToStringComposer::compose(std::ostream& output, const Automaton& automaton) const {
automaton.getData().Accept((void*) &output, *this);
}
 
void FiniteAutomatonToStringComposer::Visit(void* data, const EpsilonNFA& automaton) const {
void AutomatonToStringComposer::Visit(void* data, const EpsilonNFA& automaton) const {
this->compose(*((std::ostream*) data), automaton);
}
 
void FiniteAutomatonToStringComposer::Visit(void* data, const MultiInitialStateNFA& automaton) const {
void AutomatonToStringComposer::Visit(void* data, const MultiInitialStateNFA& automaton) const {
this->compose(*((std::ostream*) data), automaton);
}
 
void FiniteAutomatonToStringComposer::Visit(void* data, const NFA& automaton) const {
void AutomatonToStringComposer::Visit(void* data, const NFA& automaton) const {
this->compose(*((std::ostream*) data), automaton);
}
 
void FiniteAutomatonToStringComposer::Visit(void* data, const DFA& automaton) const {
void AutomatonToStringComposer::Visit(void* data, const DFA& automaton) const {
this->compose(*((std::ostream*) data), automaton);
}
 
void FiniteAutomatonToStringComposer::Visit(void*, const ExtendedNFA&) const {
void AutomatonToStringComposer::Visit(void*, const ExtendedNFA&) const {
throw exception::AlibException();
}
 
void FiniteAutomatonToStringComposer::Visit(void*, const CompactNFA&) const {
void AutomatonToStringComposer::Visit(void*, const CompactNFA&) const {
throw exception::AlibException();
}
 
void FiniteAutomatonToStringComposer::Visit(void*, const DPDA&) const {
void AutomatonToStringComposer::Visit(void*, const DPDA&) const {
throw exception::AlibException();
}
 
void FiniteAutomatonToStringComposer::Visit(void*, const SinglePopDPDA&) const {
void AutomatonToStringComposer::Visit(void*, const SinglePopDPDA&) const {
throw exception::AlibException();
}
 
void FiniteAutomatonToStringComposer::Visit(void*, const InputDrivenDPDA&) const {
void AutomatonToStringComposer::Visit(void*, const InputDrivenDPDA&) const {
throw exception::AlibException();
}
 
void FiniteAutomatonToStringComposer::Visit(void*, const InputDrivenNPDA&) const {
void AutomatonToStringComposer::Visit(void*, const InputDrivenNPDA&) const {
throw exception::AlibException();
}
 
void FiniteAutomatonToStringComposer::Visit(void*, const VisiblyPushdownDPDA&) const {
void AutomatonToStringComposer::Visit(void*, const VisiblyPushdownDPDA&) const {
throw exception::AlibException();
}
 
void FiniteAutomatonToStringComposer::Visit(void*, const VisiblyPushdownNPDA&) const {
void AutomatonToStringComposer::Visit(void*, const VisiblyPushdownNPDA&) const {
throw exception::AlibException();
}
 
void FiniteAutomatonToStringComposer::Visit(void*, const RealTimeHeightDeterministicDPDA&) const {
void AutomatonToStringComposer::Visit(void*, const RealTimeHeightDeterministicDPDA&) const {
throw exception::AlibException();
}
 
void FiniteAutomatonToStringComposer::Visit(void*, const RealTimeHeightDeterministicNPDA&) const {
void AutomatonToStringComposer::Visit(void*, const RealTimeHeightDeterministicNPDA&) const {
throw exception::AlibException();
}
 
void FiniteAutomatonToStringComposer::Visit(void*, const NPDA&) const {
void AutomatonToStringComposer::Visit(void*, const NPDA&) const {
throw exception::AlibException();
}
 
void FiniteAutomatonToStringComposer::Visit(void*, const SinglePopNPDA&) const {
void AutomatonToStringComposer::Visit(void*, const SinglePopNPDA&) const {
throw exception::AlibException();
}
 
void FiniteAutomatonToStringComposer::Visit(void*, const OneTapeDTM&) const {
void AutomatonToStringComposer::Visit(void*, const OneTapeDTM&) const {
throw exception::AlibException();
}
 
......
/*
* FiniteAutomatonToStringComposer.cpp
* AutomatonToStringComposer.cpp
*
* Created on: Nov 23, 2013
* Author: Jan Travnicek
*/
 
#ifndef AUTOMATON_PRINTER_H_
#define AUTOMATON_PRINTER_H_
#ifndef AUTOMATON_TO_STRING_COMPOSER_H_
#define AUTOMATON_TO_STRING_COMPOSER_H_
 
#include <sstream>
#include "../Automaton.h"
#include "DFA.h"
#include "NFA.h"
#include "MultiInitialStateNFA.h"
#include "EpsilonNFA.h"
#include "Automaton.h"
#include "FSM/DFA.h"
#include "FSM/NFA.h"
#include "FSM/MultiInitialStateNFA.h"
#include "FSM/EpsilonNFA.h"
 
namespace automaton {
 
class FiniteAutomatonToStringComposer : public VisitableAutomatonBase::const_visitor_type {
class AutomatonToStringComposer : public VisitableAutomatonBase::const_visitor_type {
void Visit(void*, const EpsilonNFA& automaton) const;
void Visit(void*, const MultiInitialStateNFA& automaton) const;
void Visit(void*, const NFA& automaton) const;
......@@ -59,4 +59,4 @@ public:
 
} /* namespace automaton */
 
#endif /* AUTOMATON_PRINTER_H_ */
#endif /* AUTOMATON_TO_STRING_COMPOSER_H_ */
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