18#include <ext/algorithm>
52 template <
class T,
class TerminalSymbolType =
typename grammar::TerminalSymbolTypeOfGrammar < T >,
class NonterminalSymbolType =
typename grammar::NonterminalSymbolTypeOfGrammar < T > >
56template <
class T,
class TerminalSymbolType,
class NonterminalSymbolType >
63 for(
const auto & symbol : Nt )
64 ret.addNonterminalSymbol ( symbol );
66 for(
const auto & symbol :
grammar.getTerminalAlphabet( ) )
67 ret.addTerminalSymbol ( symbol );
73 return ( symbol.template is < NonterminalSymbolType > ( ) && Nt.count ( symbol.template get < NonterminalSymbolType > ( ) ) )
74 || ( symbol.template is < TerminalSymbolType > ( ) && terminals.count ( symbol.template get < TerminalSymbolType > ( ) ) );
77 for(
const auto & rule : rawRules ) {
78 if( Nt.count( rule.first ) ) {
79 for(
const auto & rhs : rule.second ) {
80 if(
all_of( rhs.begin( ), rhs.end( ), testCallback ) )
Implementation of the variant class allowing to store any type of those listed in the template parame...
Definition: variant.hpp:98
static bool addRawRule(LG< TerminalSymbolType, NonterminalSymbolType > &grammar, NonterminalSymbolType leftHandSide, ext::vector< ext::variant< TerminalSymbolType, NonterminalSymbolType > > rightHandSide)
Definition: AddRawRule.h:92
static ext::map< NonterminalSymbolType, ext::set< ext::vector< ext::variant< TerminalSymbolType, NonterminalSymbolType > > > > getRawRules(const LG< TerminalSymbolType, NonterminalSymbolType > &grammar)
Definition: RawRules.h:92
static ext::set< NonterminalSymbolType > getProductiveNonterminals(const T &grammar)
Definition: ProductiveNonterminals.h:42
Definition: UnproductiveSymbolsRemover.h:39
static T remove(const T &grammar)
Definition: UnproductiveSymbolsRemover.h:57
ext::set< ext::pair< StateType, StateType > > ret(const ext::set< ext::pair< StateType, StateType > > &S, const DeterministicPushdownStoreSymbolType &pdaSymbol, const InputSymbolType &input, const N &nondeterministic)
Definition: RHDPDACommon.h:57
all_of(T &&...) -> all_of< T... >
Definition: ToAutomaton.h:24