8#include <ext/algorithm>
37 template<
class T,
class TerminalSymbolType =
typename grammar::TerminalSymbolTypeOfGrammar < T >,
class NonterminalSymbolType =
typename grammar::NonterminalSymbolTypeOfGrammar < T > >
41template<
class T,
class TerminalSymbolType,
class NonterminalSymbolType >
48 Vi.at ( 0 ).insert (
grammar.getInitialSymbol ( ) );
56 Vi.push_back ( Vi.at (
i - 1 ) );
58 for (
const auto & rule : rawRules ) {
59 if ( Vi.at(
i - 1 ).count ( rule.first ) ) {
60 for (
const auto & rhs : rule.second ) {
61 Vi.at (
i ).insert( rhs.begin( ), rhs.end( ) );
66 }
while ( Vi.at(
i ) != Vi.at(
i - 1 ) );
Class extending the deque class from the standard library. Original reason is to allow printing of th...
Definition: deque.hpp:44
Implementation of the variant class allowing to store any type of those listed in the template parame...
Definition: variant.hpp:98
static ext::map< NonterminalSymbolType, ext::set< ext::vector< ext::variant< TerminalSymbolType, NonterminalSymbolType > > > > getRawRules(const LG< TerminalSymbolType, NonterminalSymbolType > &grammar)
Definition: RawRules.h:92
Definition: ReachableSymbols.h:24
static ext::set< ext::variant< TerminalSymbolType, NonterminalSymbolType > > getReachableSymbols(const T &grammar)
Definition: ReachableSymbols.h:42
int i
Definition: AllEpsilonClosure.h:118
Definition: ToAutomaton.h:24