26#include <ext/ptr_vector>
43template <
class SymbolType >
49 visitor.
visit ( *
this );
56 visitor.
visit ( std::move ( *
this ) );
127 if (
ext::type_index (
typeid ( *
this ) ) ==
ext::type_index (
typeid ( other ) ) )
return * this <=>
static_cast < decltype ( ( * this ) )
> ( other );
145 if (
ext::type_index (
typeid ( *
this ) ) ==
ext::type_index (
typeid ( other ) ) )
return *
this ==
static_cast < decltype ( ( * this ) )
> ( other );
171 res->appendElement ( std::move ( * std::move ( element ).
normalize ( ) ) );
179#include "../formal/FormalRegExpConcatenation.h"
180#include "../formal/FormalRegExpEpsilon.h"
184template <
class SymbolType >
186 return this->getChildren();
189template <
class SymbolType >
191 return this->getChildren();
194template <
class SymbolType >
196 this->pushBackChild ( std::move ( element ) );
199template <
class SymbolType >
204template <
class SymbolType >
209template <
class SymbolType >
211 return new UnboundedRegExpConcatenation ( std::move ( *
this ) );
214template <
class SymbolType >
220 for (
size_t i = getElements ( ).size ( ) - 1;
i >= 1;
i-- )
226template <
class SymbolType >
231template <
class SymbolType >
236template <
class SymbolType >
238 out <<
"(UnboundedRegExpConcatenation";
241 out <<
" " << element;
246template <
class SymbolType >
249 if ( element.testSymbol ( symbol ) )
return true;
254template <
class SymbolType >
257 if ( ! element.checkAlphabet (
alphabet ) )
return false;
262template <
class SymbolType >
Varary node is tree node that can hold any number of children.
Definition: tree_base.hpp:981
Implementation of vector storing dynamicaly allocated instances of given type. The class mimicks the ...
Definition: ptr_vector.hpp:44
Managed pointer simulating value like behavior.
Definition: memory.hpp:233
Definition: typeindex.h:37
Represents the concatenation operator in the regular expression. The node can have 0 to n children in...
Definition: UnboundedRegExpConcatenation.h:44
UnboundedRegExpConcatenation< SymbolType > * clone() const &override
( ) const &
ext::smart_ptr< UnboundedRegExpElement< DefaultSymbolType > > normalize() &&override
< SymbolType >::normalize ( ) &&
Definition: UnboundedRegExpConcatenation.h:167
void computeMinimalAlphabet(ext::set< SymbolType > &alphabet) const override
Definition: UnboundedRegExpConcatenation.h:263
void appendElement(UnboundedRegExpElement< SymbolType > &&element)
Definition: UnboundedRegExpConcatenation.h:195
void operator>>(ext::ostream &out) const override
< UnboundedRegExpElement < SymbolType > >::operator >> ( ext::ostream & )
Definition: UnboundedRegExpConcatenation.h:237
bool testSymbol(const SymbolType &symbol) const override
Definition: UnboundedRegExpConcatenation.h:247
ext::smart_ptr< FormalRegExpElement< SymbolType > > asFormal() const override
Definition: UnboundedRegExpConcatenation.h:215
std::strong_ordering operator<=>(const UnboundedRegExpElement< SymbolType > &other) const override
< SymbolType >::operator <=> ( const UnboundedRegExpElement < SymbolType > & other ) const;
Definition: UnboundedRegExpConcatenation.h:126
bool operator==(const UnboundedRegExpElement< SymbolType > &other) const override
< SymbolType >::operator == ( const UnboundedRegExpElement < SymbolType > & other ) const;
Definition: UnboundedRegExpConcatenation.h:144
const ext::ptr_vector< UnboundedRegExpElement< SymbolType > > & getElements() const
Definition: UnboundedRegExpConcatenation.h:185
bool checkAlphabet(const ext::set< SymbolType > &alphabet) const override
Definition: UnboundedRegExpConcatenation.h:255
UnboundedRegExpConcatenation()=default
Creates a new instance of the concatenation node. By default it is semantically equivalent to epsilon...
Definition: UnboundedRegExpElement.h:81
Definition: UnboundedRegExpElement.h:67
virtual void visit(const UnboundedRegExpAlternation< SymbolType > &)=0
Definition: UnboundedRegExpElement.h:62
Definition: BarSymbol.cpp:12
int i
Definition: AllEpsilonClosure.h:118
typename T::SymbolType SymbolType
Definition: ReachableStates.h:176
return res
Definition: MinimizeByPartitioning.h:145
Definition: sigHandler.cpp:20
auto move_copy(const T ¶m)
Allow moving of copied instance of the source.
Definition: utility.hpp:45
reference_mover< T > make_mover(T ¶m)
Move adaptor construction function specialized to lvalue reference parameter.
Definition: iterator.hpp:468
Definition: ToAutomaton.h:15
Definition: FordFulkerson.hpp:16