Struct cfg::cycles::Cycles [] [src]

pub struct Cycles<G> {
    // some fields omitted
}

Provides information about cycles among unit derivations in the grammar. There are two ways of pruning cycles.

Methods

impl<'a, G> Cycles<&'a mut G> where G: ContextFree, &'b G: ContextFreeRef<'b, Target=G>, &'b mut G: ContextFreeMut<'b, Target=G>

fn new(grammar: &'a mut G) -> Cycles<&'a mut G>

Analyzes the grammar's cycles.

fn cycle_free(&self) -> bool

Checks whether the grammar is cycle-free.

impl<'a, G> Cycles<&'a mut G> where G: ContextFree, &'a G: ContextFreeRef<'a, Target=G>, &'a mut G: ContextFreeMut<'a, Target=G>

fn cycle_participants(&'a self) -> CycleParticipants<'a, G, &'a G::Rules>

Iterates over rules that participate in a cycle.

fn remove_cycles(&mut self) where &'a G: ContextFreeRef<'a, Target=G>, &'a mut G: ContextFreeMut<'a, Target=G>

Removes all rules that participate in a cycle. Doesn't preserve the language represented by the grammar.

fn rewrite_cycles(&mut self) where G::History: Clone, &'a G: ContextFreeRef<'a, Target=G>, &'a mut G: ContextFreeMut<'a, Target=G>

Rewrites all rules that participate in a cycle. Preserves the language represented by the grammar.