32 template <
class TerminalSymbolType,
class NonterminalSymbolType >
38 template <
class TerminalSymbolType,
class NonterminalSymbolType >
44 template <
class TerminalSymbolType,
class NonterminalSymbolType >
50 template <
class TerminalSymbolType,
class NonterminalSymbolType >
56 template <
class TerminalSymbolType,
class NonterminalSymbolType >
61template <
class TerminalSymbolType,
class NonterminalSymbolType >
72 if ( rhs.template is < TerminalSymbolType > ( ) )
73 res.addRule ( symbolPermutationMap.
at ( rule.first ), rhs );
80template <
class TerminalSymbolType,
class NonterminalSymbolType >
92 res.addRule ( symbolPermutationMap.
at ( rule.first ), rhs );
99template <
class TerminalSymbolType,
class NonterminalSymbolType >
110 if ( rhs.template is < TerminalSymbolType > ( ) )
111 res.addRule ( symbolPermutationMap.
at ( rule.first ), rhs );
118template <
class TerminalSymbolType,
class NonterminalSymbolType >
130 res.addRule ( symbolPermutationMap.
at ( rule.first ), rhs );
137template <
class TerminalSymbolType,
class NonterminalSymbolType >
149 if ( gram.getNonterminalAlphabet ( ).count ( elem ) )
150 return ext::variant < TerminalSymbolType, NonterminalSymbolType > ( symbolPermutationMap.find ( elem )->second );
static ext::map< T, T > permutationMap(const ext::set< T > &data)
Definition: Permutation.hpp:23
Class extending the map class from the standard library. Original reason is to allow printing of the ...
Definition: map.hpp:48
R & at(const T &key, R &defaultValue)
Definition: map.hpp:163
Class extending the pair class from the standard library. Original reason is to allow printing of the...
Definition: pair.hpp:43
Implementation of the variant class allowing to store any type of those listed in the template parame...
Definition: variant.hpp:98
Class extending the vector class from the standard library. Original reason is to allow printing of t...
Definition: vector.hpp:45
Context free grammar in Chomsky hierarchy or type 2 in Chomsky hierarchy. Generates context free lang...
Definition: CFG.h:67
const NonterminalSymbolType & getInitialSymbol() const &
Definition: CFG.h:148
const ext::set< TerminalSymbolType > & getTerminalAlphabet() const &
Definition: CFG.h:215
const ext::set< NonterminalSymbolType > & getNonterminalAlphabet() const &
Definition: CFG.h:177
const ext::map< NonterminalSymbolType, ext::set< ext::vector< ext::variant< TerminalSymbolType, NonterminalSymbolType > > > > & getRules() const &
Definition: CFG.h:332
Left linear grammar in Chomsky hierarchy or type 3 in Chomsky hierarchy. Generates regular languages.
Definition: LeftLG.h:66
const NonterminalSymbolType & getInitialSymbol() const &
Definition: LeftLG.h:160
const ext::set< NonterminalSymbolType > & getNonterminalAlphabet() const &
Definition: LeftLG.h:189
const ext::set< TerminalSymbolType > & getTerminalAlphabet() const &
Definition: LeftLG.h:227
const ext::map< NonterminalSymbolType, ext::set< ext::variant< ext::vector< TerminalSymbolType >, ext::pair< NonterminalSymbolType, ext::vector< TerminalSymbolType > > > > > & getRules() const &
Definition: LeftLG.h:359
Left regular grammar in Chomsky hierarchy or type 3 in Chomsky hierarchy. Generates regular languages...
Definition: LeftRG.h:70
const ext::set< TerminalSymbolType > & getTerminalAlphabet() const &
Definition: LeftRG.h:236
const ext::map< NonterminalSymbolType, ext::set< ext::variant< TerminalSymbolType, ext::pair< NonterminalSymbolType, TerminalSymbolType > > > > & getRules() const &
Definition: LeftRG.h:376
const NonterminalSymbolType & getInitialSymbol() const &
Definition: LeftRG.h:169
const ext::set< NonterminalSymbolType > & getNonterminalAlphabet() const &
Definition: LeftRG.h:198
Right linear grammar in Chomsky hierarchy or type 3 in Chomsky hierarchy. Generates regular languages...
Definition: RightLG.h:65
const ext::map< NonterminalSymbolType, ext::set< ext::variant< ext::vector< TerminalSymbolType >, ext::pair< ext::vector< TerminalSymbolType >, NonterminalSymbolType > > > > & getRules() const &
Definition: RightLG.h:356
const NonterminalSymbolType & getInitialSymbol() const &
Definition: RightLG.h:159
const ext::set< NonterminalSymbolType > & getNonterminalAlphabet() const &
Definition: RightLG.h:188
const ext::set< TerminalSymbolType > & getTerminalAlphabet() const &
Definition: RightLG.h:226
Right regular grammar in Chomsky hierarchy or type 3 in Chomsky hierarchy. Generates regular language...
Definition: RightRG.h:70
const ext::map< NonterminalSymbolType, ext::set< ext::variant< TerminalSymbolType, ext::pair< TerminalSymbolType, NonterminalSymbolType > > > > & getRules() const &
Definition: RightRG.h:375
const ext::set< NonterminalSymbolType > & getNonterminalAlphabet() const &
Definition: RightRG.h:198
const ext::set< TerminalSymbolType > & getTerminalAlphabet() const &
Definition: RightRG.h:236
const NonterminalSymbolType & getInitialSymbol() const &
Definition: RightRG.h:169
Definition: RandomizeGrammar.h:20
static grammar::LeftRG< TerminalSymbolType, NonterminalSymbolType > randomize(const grammar::LeftRG< TerminalSymbolType, NonterminalSymbolType > &gram)
Definition: RandomizeGrammar.h:62
return res
Definition: MinimizeByPartitioning.h:145
ContainerType< ResType > transform(const ContainerType< InType, Ts ... > &in, Callback transform)
In container tranformation of all elements according to the tranform.
Definition: algorithm.hpp:150
constexpr auto make_pair(T1 &&x, T2 &&y)
Definition: pair.hpp:79
Definition: ToAutomaton.h:24
auto & get(ext::ptr_array< Type, N > &tpl)
Specialisation of get function for pointer arrays.
Definition: ptr_array.hpp:693