GrammarMutator

Trait GrammarMutator 

Source
pub trait GrammarMutator {
Show 15 methods // Required method fn state(&mut self) -> &mut MutatorState; // Provided methods fn apply(&mut self, grammar: GrammarData) -> GrammarData { ... } fn visit_lookahead(&mut self, id: i32) -> i32 { ... } fn visit_expr_id(&mut self, id: i32) -> i32 { ... } fn visit_expr(&mut self, e: &OwnedExpr) -> i32 { ... } fn visit_choices(&mut self, e: &OwnedExpr) -> i32 { ... } fn visit_sequence(&mut self, e: &OwnedExpr) -> i32 { ... } fn visit_tag_dispatch(&mut self, e: &OwnedExpr) -> i32 { ... } fn visit_element(&mut self, e: &OwnedExpr) -> i32 { ... } fn visit_empty_str(&mut self, e: &OwnedExpr) -> i32 { ... } fn visit_byte_string(&mut self, e: &OwnedExpr) -> i32 { ... } fn visit_character_class(&mut self, e: &OwnedExpr) -> i32 { ... } fn visit_character_class_star(&mut self, e: &OwnedExpr) -> i32 { ... } fn visit_rule_ref(&mut self, e: &OwnedExpr) -> i32 { ... } fn visit_repeat(&mut self, e: &OwnedExpr) -> i32 { ... }
}
Expand description

A grammar-transforming pass. Mirrors C++ GrammarMutator: the default apply adds empty rules to keep ids stable, then visits each rule body and lookahead assertion.

Required Methods§

Source

fn state(&mut self) -> &mut MutatorState

The pass’s mutable state. Implementors store a MutatorState.

Provided Methods§

Source

fn apply(&mut self, grammar: GrammarData) -> GrammarData

Run the pass, returning the transformed grammar.

Source

fn visit_lookahead(&mut self, id: i32) -> i32

Visit a lookahead assertion by id (-1 => -1).

Source

fn visit_expr_id(&mut self, id: i32) -> i32

Visit an expression by id.

Source

fn visit_expr(&mut self, e: &OwnedExpr) -> i32

Visit an expression, dispatching on its type.

Source

fn visit_choices(&mut self, e: &OwnedExpr) -> i32

Default: visit each child, rebuild a Choices.

Source

fn visit_sequence(&mut self, e: &OwnedExpr) -> i32

Default: visit each child, rebuild a Sequence.

Source

fn visit_tag_dispatch(&mut self, e: &OwnedExpr) -> i32

Default: decode the tag dispatch and rebuild it unchanged.

Source

fn visit_element(&mut self, e: &OwnedExpr) -> i32

Default: copy a leaf element verbatim into the builder.

Source

fn visit_empty_str(&mut self, e: &OwnedExpr) -> i32

Default leaf visitors all defer to visit_element.

Source

fn visit_byte_string(&mut self, e: &OwnedExpr) -> i32

Default: copy verbatim.

Source

fn visit_character_class(&mut self, e: &OwnedExpr) -> i32

Default: copy verbatim.

Source

fn visit_character_class_star(&mut self, e: &OwnedExpr) -> i32

Default: copy verbatim.

Source

fn visit_rule_ref(&mut self, e: &OwnedExpr) -> i32

Default: copy verbatim.

Source

fn visit_repeat(&mut self, e: &OwnedExpr) -> i32

Default: copy verbatim.

Implementors§