30template <
class SymbolType >
31class UnboundedRegExpElement;
36#include <ext/tree_base>
39#include "../formal/FormalRegExpElement.h"
43template <
class SymbolType >
44class UnboundedRegExpAlternation;
45template <
class SymbolType >
46class UnboundedRegExpConcatenation;
47template <
class SymbolType >
48class UnboundedRegExpIteration;
49template <
class SymbolType >
50class UnboundedRegExpSymbol;
51template <
class SymbolType >
52class UnboundedRegExpEmpty;
53template <
class SymbolType >
54class UnboundedRegExpEpsilon;
61template <
class SymbolType >
99 template < class ReturnType, class Visitorr, class ... Params >
111 this->
call ( inherit, std::make_index_sequence <
sizeof ... ( Params ) > { } );
118 this->
call ( inherit, std::make_index_sequence <
sizeof ... ( Params ) > { } );
125 this->
call ( inherit, std::make_index_sequence <
sizeof ... ( Params ) > { } );
132 this->
call ( inherit, std::make_index_sequence <
sizeof ... ( Params ) > { } );
139 this->
call ( inherit, std::make_index_sequence <
sizeof ... ( Params ) > { } );
146 this->
call ( inherit, std::make_index_sequence <
sizeof ... ( Params ) > { } );
157 template <
class ReturnType,
class Visitorr,
class ... Params >
169 this->
call ( std::move ( inherit ), std::make_index_sequence <
sizeof ... ( Params ) > { } );
176 this->
call ( std::move ( inherit ), std::make_index_sequence <
sizeof ... ( Params ) > { } );
183 this->
call ( std::move ( inherit ), std::make_index_sequence <
sizeof ... ( Params ) > { } );
190 this->
call ( std::move ( inherit ), std::make_index_sequence <
sizeof ... ( Params ) > { } );
197 this->
call ( std::move ( inherit ), std::make_index_sequence <
sizeof ... ( Params ) > { } );
204 this->
call ( std::move ( inherit ), std::make_index_sequence <
sizeof ... ( Params ) > { } );
238 template < class ReturnType, class Visitorr, class ... Params >
239 ReturnType
accept ( Params && ... params ) const & {
240 VisitorContext < ReturnType, Visitorr, Params ... > context ( std::forward < Params > ( params ) ... );
242 return context.getResult ( );
256 template <
class ReturnType,
class Visitorr,
class ... Params >
257 ReturnType
accept ( Params && ... params ) && {
258 RvalueVisitorContext < ReturnType, Visitorr, Params ... > context ( std::forward < Params > ( params ) ... );
259 std::move ( * this ).accept ( context );
260 return context.getResult ( );
350template <
class SymbolType >
Class implementing an actual visitor interface to the visitor.
Definition: visitor.hpp:22
Base class for hierarchy of tree node types. The tree node types can be used to construct tree struct...
Definition: tree_base.hpp:20
Managed pointer simulating value like behavior.
Definition: memory.hpp:233
Represents the alternation operator in the regular expression. The node can have 0 to n children in l...
Definition: UnboundedRegExpAlternation.h:44
Represents the concatenation operator in the regular expression. The node can have 0 to n children in...
Definition: UnboundedRegExpConcatenation.h:44
Definition: UnboundedRegExpElement.h:158
void visit(UnboundedRegExpEmpty< SymbolType > &&inherit) override
Definition: UnboundedRegExpElement.h:196
void visit(UnboundedRegExpEpsilon< SymbolType > &&inherit) override
Definition: UnboundedRegExpElement.h:203
void visit(UnboundedRegExpConcatenation< SymbolType > &&inherit) override
Definition: UnboundedRegExpElement.h:175
void visit(UnboundedRegExpIteration< SymbolType > &&inherit) override
Definition: UnboundedRegExpElement.h:182
void visit(UnboundedRegExpAlternation< SymbolType > &&inherit) override
Definition: UnboundedRegExpElement.h:168
void visit(UnboundedRegExpSymbol< SymbolType > &&inherit) override
Definition: UnboundedRegExpElement.h:189
Definition: UnboundedRegExpElement.h:81
virtual ~RvalueVisitor() noexcept=default
Definition: UnboundedRegExpElement.h:100
void visit(const UnboundedRegExpSymbol< SymbolType > &inherit) override
Definition: UnboundedRegExpElement.h:131
void visit(const UnboundedRegExpEmpty< SymbolType > &inherit) override
Definition: UnboundedRegExpElement.h:138
void visit(const UnboundedRegExpAlternation< SymbolType > &inherit) override
Definition: UnboundedRegExpElement.h:110
void visit(const UnboundedRegExpIteration< SymbolType > &inherit) override
Definition: UnboundedRegExpElement.h:124
void visit(const UnboundedRegExpConcatenation< SymbolType > &inherit) override
Definition: UnboundedRegExpElement.h:117
void visit(const UnboundedRegExpEpsilon< SymbolType > &inherit) override
Definition: UnboundedRegExpElement.h:145
Definition: UnboundedRegExpElement.h:67
virtual void visit(const UnboundedRegExpAlternation< SymbolType > &)=0
virtual ~Visitor() noexcept=default
Definition: UnboundedRegExpElement.h:62
friend ext::ostream & operator<<(ext::ostream &os, const UnboundedRegExpElement< SymbolType > &instance)
Definition: UnboundedRegExpElement.h:315
virtual void operator>>(ext::ostream &) const =0
virtual ext::smart_ptr< UnboundedRegExpElement< DefaultSymbolType > > normalize() &&=0
Traverses the regexp tree and normalizes the symbols to DefaultSymbolType.
ext::set< SymbolType > computeMinimalAlphabet() const
Definition: UnboundedRegExpElement.h:351
ReturnType accept(Params &&... params) &&
Definition: UnboundedRegExpElement.h:257
virtual UnboundedRegExpElement< SymbolType > * clone() const &=0
virtual void computeMinimalAlphabet(ext::set< SymbolType > &alphabet) const =0
virtual bool testSymbol(const SymbolType &symbol) const =0
virtual void accept(UnboundedRegExpElement::Visitor &visitor) const &=0
Accept method of the visitor pattern. This is where the actual type of this object is evaluated.
virtual bool operator==(const UnboundedRegExpElement< SymbolType > &other) const =0
Comparison helper method evaluating allowing possibly deeper comparison of this with other class of t...
virtual bool checkAlphabet(const ext::set< SymbolType > &alphabet) const =0
virtual std::strong_ordering operator<=>(const UnboundedRegExpElement< SymbolType > &other) const =0
Three way comparison helper method evaluating allowing possibly deeper comparison of this with other ...
virtual ext::smart_ptr< FormalRegExpElement< SymbolType > > asFormal() const =0
virtual void accept(UnboundedRegExpElement::RvalueVisitor &visitor) &&=0
Accept method of the visitor pattern. This is where the actual type of this object is evaluated.
Represents the empty expression in the regular expression. The node can't have any children.
Definition: UnboundedRegExpEmpty.h:41
Represents the epsilon expression in the regular expression. The node can't have any children.
Definition: UnboundedRegExpEpsilon.h:41
Represents the iteration operator in the regular expression. The node has exactly one child.
Definition: UnboundedRegExpIteration.h:43
Represents the symbol in the regular expression. The can't have any children.
Definition: UnboundedRegExpSymbol.h:42
Definition: BarSymbol.cpp:12
ext::set< ext::pair< StateType, StateType > > call(const ext::set< ext::pair< StateType, StateType > > &S, const InputSymbolType &input, const N &nondeterministic)
Definition: RHDPDACommon.h:94
typename T::SymbolType SymbolType
Definition: ReachableStates.h:176
return res
Definition: MinimizeByPartitioning.h:145
Definition: normalize.hpp:10
Definition: ToAutomaton.h:15