pub enum GrammarNode {
Literal(Vec<u8>),
CharClass {
ranges: Vec<CharRange>,
negated: bool,
},
RuleRef(String),
Sequence(Vec<GrammarNode>),
Alternation(Vec<GrammarNode>),
Repeat {
node: Box<GrammarNode>,
min: usize,
max: Option<usize>,
},
}Expand description
A single node in the grammar tree.
Variants§
Literal(Vec<u8>)
Matches an exact sequence of bytes.
CharClass
Matches a single byte that falls within any of the listed ranges.
If negated is true, matches bytes that fall outside all ranges.
RuleRef(String)
Reference to another named rule.
Sequence(Vec<GrammarNode>)
Matches all items in the sequence, in order.
Alternation(Vec<GrammarNode>)
Matches one of the alternatives.
Repeat
Repeat a node min..=max times (max=None means unbounded).
Trait Implementations§
Source§impl Clone for GrammarNode
impl Clone for GrammarNode
Source§fn clone(&self) -> GrammarNode
fn clone(&self) -> GrammarNode
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreAuto Trait Implementations§
impl Freeze for GrammarNode
impl RefUnwindSafe for GrammarNode
impl Send for GrammarNode
impl Sync for GrammarNode
impl Unpin for GrammarNode
impl UnsafeUnpin for GrammarNode
impl UnwindSafe for GrammarNode
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more