Struct cfgrammar::yacc::grammar::SentenceGenerator
source · pub struct SentenceGenerator<'a, StorageT> { /* private fields */ }
Expand description
A SentenceGenerator
can generate minimal sentences for any given rule. e.g. for the
grammar:
%start A
%%
A: A B | ;
B: C | D;
C: 'x' B | 'x';
D: 'y' B | 'y' 'z';
the following are valid minimal sentences:
A: []
B: [x]
C: [x]
D: [y, x] or [y, z]
Implementations§
source§impl<'a, StorageT: 'static + PrimInt + Unsigned> SentenceGenerator<'a, StorageT>where
usize: AsPrimitive<StorageT>,
impl<'a, StorageT: 'static + PrimInt + Unsigned> SentenceGenerator<'a, StorageT>where
usize: AsPrimitive<StorageT>,
sourcepub fn min_sentence_cost(&self, ridx: RIdx<StorageT>) -> u16
pub fn min_sentence_cost(&self, ridx: RIdx<StorageT>) -> u16
What is the cost of a minimal sentence for the rule ridx
? Note that, unlike
min_sentence
, this function does not actually build a sentence and it is thus much
faster.
sourcepub fn max_sentence_cost(&self, ridx: RIdx<StorageT>) -> Option<u16>
pub fn max_sentence_cost(&self, ridx: RIdx<StorageT>) -> Option<u16>
What is the cost of a maximal sentence for the rule ridx
? Rules which can generate
sentences of unbounded length return None; rules which can only generate maximal strings of
a finite length return a Some(u16)
.
sourcepub fn min_sentence(&self, ridx: RIdx<StorageT>) -> Vec<TIdx<StorageT>>
pub fn min_sentence(&self, ridx: RIdx<StorageT>) -> Vec<TIdx<StorageT>>
Non-deterministically return a minimal sentence from the set of minimal sentences for the
rule ridx
.
Auto Trait Implementations§
impl<'a, StorageT> !Freeze for SentenceGenerator<'a, StorageT>
impl<'a, StorageT> !RefUnwindSafe for SentenceGenerator<'a, StorageT>
impl<'a, StorageT> Send for SentenceGenerator<'a, StorageT>where
StorageT: Sync,
impl<'a, StorageT> !Sync for SentenceGenerator<'a, StorageT>
impl<'a, StorageT> Unpin for SentenceGenerator<'a, StorageT>
impl<'a, StorageT> UnwindSafe for SentenceGenerator<'a, StorageT>where
StorageT: RefUnwindSafe,
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more