36 template <
class T,
class NonterminalSymbolType >
40template<
class T,
class NonterminalSymbolType >
42 if(
grammar.getNonterminalAlphabet().count(nonterminal) == 0) {
56 Ni.push_back(Ni.at(
i-1));
57 for (
const auto & rule : rawRules ) {
58 const NonterminalSymbolType& lhs = rule.first;
60 for(
const auto& rhs : rule.second) {
61 if(Ni.at(
i-1).count(lhs) && rhs.size() == 1 && rhs.front ( ).template is < NonterminalSymbolType > ( ) &&
grammar.getNonterminalAlphabet().count(rhs.front().template get < NonterminalSymbolType > ( ) )) {
62 Ni.at(
i).insert(rhs.front().template get < NonterminalSymbolType > ( ) );
67 }
while ( Ni.at (
i ) != Ni.at (
i - 1 ) );
Basic exception from which all other exceptions are derived.
Definition: CommonException.h:21
Class extending the deque class from the standard library. Original reason is to allow printing of th...
Definition: deque.hpp:44
static ext::map< NonterminalSymbolType, ext::set< ext::vector< ext::variant< TerminalSymbolType, NonterminalSymbolType > > > > getRawRules(const LG< TerminalSymbolType, NonterminalSymbolType > &grammar)
Definition: RawRules.h:92
Definition: NonterminalUnitRuleCycle.h:22
static ext::set< NonterminalSymbolType > getNonterminalUnitRuleCycle(const T &grammar, const NonterminalSymbolType &nonterminal)
Definition: NonterminalUnitRuleCycle.h:41
int i
Definition: AllEpsilonClosure.h:118
std::string to_string(const T &value)
To string method designated for objects that can be casted to string.
Definition: string.hpp:131
Definition: ToAutomaton.h:24