Newer
Older
/*
* GlushkovIndexate.h
*
* Created on: 14. 4. 2016
* Author: Tomas Pecka
*/
#ifndef RTE_GLUSHKOV_INDEXATE_H_
#define RTE_GLUSHKOV_INDEXATE_H_
#include <rte/formal/FormalRTE.h>
namespace rte {
class GlushkovIndexate {
public:
/**
* @param re rte to index
* @return FormalRTE with indexed elements
*/
static FormalRTE < > index ( const rte::FormalRTE < > & re );
/**
* @param symbol Glushkov Pair symbol, i.e., SymbolPair of RankedSymbol < > and integer index
* @return RankedSymbol < > from the pair on input
*/
static common::ranked_symbol < > getSymbolFromGlushkovPair ( const common::ranked_symbol < > & symbol );
class Formal {
public:
static ext::ptr_value < FormalRTEElement < DefaultSymbolType, unsigned > > visit ( const rte::FormalRTEAlternation < DefaultSymbolType, unsigned > & node, int & i );
static ext::ptr_value < FormalRTEElement < DefaultSymbolType, unsigned > > visit ( const rte::FormalRTESubstitution < DefaultSymbolType, unsigned > & node, int & i );
static ext::ptr_value < FormalRTEElement < DefaultSymbolType, unsigned > > visit ( const rte::FormalRTEIteration < DefaultSymbolType, unsigned > & node, int & i );
static ext::ptr_value < FormalRTEElement < DefaultSymbolType, unsigned > > visit ( const rte::FormalRTESymbolAlphabet < DefaultSymbolType, unsigned > & node, int & i );
static ext::ptr_value < FormalRTEElement < DefaultSymbolType, unsigned > > visit ( const rte::FormalRTESymbolSubst < DefaultSymbolType, unsigned > & node, int & i );
static ext::ptr_value < FormalRTEElement < DefaultSymbolType, unsigned > > visit ( const rte::FormalRTEEmpty < DefaultSymbolType, unsigned > & node, int & i );
};
};
} /* namespace rte */
#endif /* RTE_GLUSHKOV_INDEXATE_H_ */