- unfoldLoops :: GExtendedContextFreeGrammar phi t r rr -> GContextFreeGrammar phi t r rr
- unfoldLoopsP :: GPenaltyExtendedContextFreeGrammar phi t r rr -> GPenaltyContextFreeGrammar phi t r rr
- unfoldLoopsRule :: ExtendedContextFreeRule phi r t v -> ContextFreeRule phi r t v
- replaceLoopsRule :: (ProductionRule p, EpsProductionRule p, RecProductionRule p phi r, TokenProductionRule p t) => ExtendedContextFreeRule phi r t v -> (forall ix. phi ix -> p [r ix]) -> (forall ix. phi ix -> p [r ix]) -> p v

# Documentation

unfoldLoops :: GExtendedContextFreeGrammar phi t r rr -> GContextFreeGrammar phi t r rrSource

unfoldLoopsP :: GPenaltyExtendedContextFreeGrammar phi t r rr -> GPenaltyContextFreeGrammar phi t r rrSource

unfoldLoopsRule :: ExtendedContextFreeRule phi r t v -> ContextFreeRule phi r t vSource

replaceLoopsRule :: (ProductionRule p, EpsProductionRule p, RecProductionRule p phi r, TokenProductionRule p t) => ExtendedContextFreeRule phi r t v -> (forall ix. phi ix -> p [r ix]) -> (forall ix. phi ix -> p [r ix]) -> p vSource

Replace loops in a given rule by rules provided
in two provided sets of rules, replacing calls to
`manyRef`

by the corresponding rule from the first
set, and calls to `manyRef`

by the corresponding rule
from the second set. You likely don't need this
and should be looking at `unfoldLoops`

or
`unfoldLoopsRule`

instead.