pub struct Repetition {
pub min: u32,
pub max: Option<u32>,
pub greedy: bool,
pub sub: Box<Hir>,
}
Expand description
The high-level intermediate representation of a repetition operator.
A repetition operator permits the repetition of an arbitrary sub-expression.
Fields§
§min: u32
The minimum range of the repetition.
Note that special cases like ?
, +
and *
all get translated into
the ranges {0,1}
, {1,}
and {0,}
, respectively.
When min
is zero, this expression can match the empty string
regardless of what its sub-expression is.
max: Option<u32>
The maximum range of the repetition.
Note that when max
is None
, min
acts as a lower bound but where
there is no upper bound. For something like x{5}
where the min and
max are equivalent, min
will be set to 5
and max
will be set to
Some(5)
.
greedy: bool
Whether this repetition operator is greedy or not. A greedy operator will match as much as it can. A non-greedy operator will match as little as it can.
Typically, operators are greedy by default and are only non-greedy when
a ?
suffix is used, e.g., (expr)*
is greedy while (expr)*?
is
not. However, this can be inverted via the U
“ungreedy” flag.
sub: Box<Hir>
The expression being repeated.
Implementations§
Source§impl Repetition
impl Repetition
Sourcepub fn with(&self, sub: Hir) -> Repetition
pub fn with(&self, sub: Hir) -> Repetition
Returns a new repetition with the same min
, max
and greedy
values, but with its sub-expression replaced with the one given.
Trait Implementations§
Source§impl Clone for Repetition
impl Clone for Repetition
Source§fn clone(&self) -> Repetition
fn clone(&self) -> Repetition
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read more