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§
Sourcefn state(&mut self) -> &mut MutatorState
fn state(&mut self) -> &mut MutatorState
The pass’s mutable state. Implementors store a MutatorState.
Provided Methods§
Sourcefn apply(&mut self, grammar: GrammarData) -> GrammarData
fn apply(&mut self, grammar: GrammarData) -> GrammarData
Run the pass, returning the transformed grammar.
Sourcefn visit_lookahead(&mut self, id: i32) -> i32
fn visit_lookahead(&mut self, id: i32) -> i32
Visit a lookahead assertion by id (-1 => -1).
Sourcefn visit_expr_id(&mut self, id: i32) -> i32
fn visit_expr_id(&mut self, id: i32) -> i32
Visit an expression by id.
Sourcefn visit_expr(&mut self, e: &OwnedExpr) -> i32
fn visit_expr(&mut self, e: &OwnedExpr) -> i32
Visit an expression, dispatching on its type.
Sourcefn visit_choices(&mut self, e: &OwnedExpr) -> i32
fn visit_choices(&mut self, e: &OwnedExpr) -> i32
Default: visit each child, rebuild a Choices.
Sourcefn visit_sequence(&mut self, e: &OwnedExpr) -> i32
fn visit_sequence(&mut self, e: &OwnedExpr) -> i32
Default: visit each child, rebuild a Sequence.
Sourcefn visit_tag_dispatch(&mut self, e: &OwnedExpr) -> i32
fn visit_tag_dispatch(&mut self, e: &OwnedExpr) -> i32
Default: decode the tag dispatch and rebuild it unchanged.
Sourcefn visit_element(&mut self, e: &OwnedExpr) -> i32
fn visit_element(&mut self, e: &OwnedExpr) -> i32
Default: copy a leaf element verbatim into the builder.
Sourcefn visit_empty_str(&mut self, e: &OwnedExpr) -> i32
fn visit_empty_str(&mut self, e: &OwnedExpr) -> i32
Default leaf visitors all defer to visit_element.
Sourcefn visit_byte_string(&mut self, e: &OwnedExpr) -> i32
fn visit_byte_string(&mut self, e: &OwnedExpr) -> i32
Default: copy verbatim.
Sourcefn visit_character_class(&mut self, e: &OwnedExpr) -> i32
fn visit_character_class(&mut self, e: &OwnedExpr) -> i32
Default: copy verbatim.
Sourcefn visit_character_class_star(&mut self, e: &OwnedExpr) -> i32
fn visit_character_class_star(&mut self, e: &OwnedExpr) -> i32
Default: copy verbatim.
Sourcefn visit_rule_ref(&mut self, e: &OwnedExpr) -> i32
fn visit_rule_ref(&mut self, e: &OwnedExpr) -> i32
Default: copy verbatim.
Sourcefn visit_repeat(&mut self, e: &OwnedExpr) -> i32
fn visit_repeat(&mut self, e: &OwnedExpr) -> i32
Default: copy verbatim.