[−][src]Struct pom::parser::Parser
Parser combinator.
Fields
method: Box<dyn Fn(&'a [I], usize) -> Result<(O, usize)> + 'a>
Methods
impl<'a, I, O> Parser<'a, I, O>
[src]
pub fn new<P>(parse: P) -> Parser<'a, I, O> where
P: Fn(&'a [I], usize) -> Result<(O, usize)> + 'a,
[src]
P: Fn(&'a [I], usize) -> Result<(O, usize)> + 'a,
Create new parser.
pub fn parse(&self, input: &'a [I]) -> Result<O>
[src]
Apply the parser to parse input.
pub fn parse_at(&self, input: &'a [I], start: usize) -> Result<(O, usize)>
[src]
Parse input at specified position.
pub fn map<U, F>(self, f: F) -> Parser<'a, I, U> where
F: Fn(O) -> U + 'a,
I: 'a,
O: 'a,
U: 'a,
[src]
F: Fn(O) -> U + 'a,
I: 'a,
O: 'a,
U: 'a,
Convert parser result to desired value.
pub fn convert<U, E, F>(self, f: F) -> Parser<'a, I, U> where
F: Fn(O) -> Result<U, E> + 'a,
E: Debug,
O: 'a,
U: 'a,
[src]
F: Fn(O) -> Result<U, E> + 'a,
E: Debug,
O: 'a,
U: 'a,
Convert parser result to desired value, fail in case of conversion error.
pub fn cache(self) -> Parser<'a, I, O> where
O: Clone + 'a,
[src]
O: Clone + 'a,
Cache parser output result to speed up backtracking.
pub fn pos(self) -> Parser<'a, I, usize> where
O: 'a,
[src]
O: 'a,
Get input position after matching parser.
pub fn collect(self) -> Parser<'a, I, &'a [I]> where
O: 'a,
[src]
O: 'a,
Collect all matched input symbols.
pub fn discard(self) -> Parser<'a, I, ()> where
O: 'a,
[src]
O: 'a,
Discard parser output.
pub fn opt(self) -> Parser<'a, I, Option<O>> where
O: 'a,
[src]
O: 'a,
Make parser optional.
pub fn repeat<R>(self, range: R) -> Parser<'a, I, Vec<O>> where
R: RangeArgument<usize> + Debug + 'a,
O: 'a,
[src]
R: RangeArgument<usize> + Debug + 'a,
O: 'a,
p.repeat(5)
repeat p exactly 5 times
p.repeat(0..)
repeat p zero or more times
p.repeat(1..)
repeat p one or more times
p.repeat(1..4)
match p at least 1 and at most 3 times
pub fn name(self, name: &'a str) -> Parser<'a, I, O> where
O: 'a,
[src]
O: 'a,
Give parser a name to identify parsing errors.
pub fn expect(self, name: &'a str) -> Parser<'a, I, O> where
O: 'a,
[src]
O: 'a,
Mark parser as expected, abort early when failed in ordered choice.
Trait Implementations
impl<'a, I, O: 'a, U: 'a> Add<Parser<'a, I, U>> for Parser<'a, I, O>
[src]
Sequence reserve value
type Output = Parser<'a, I, (O, U)>
The resulting type after applying the +
operator.
fn add(self, other: Parser<'a, I, U>) -> Self::Output
[src]
impl<'a, I, O: 'a> BitOr<Parser<'a, I, O>> for Parser<'a, I, O>
[src]
Ordered choice
type Output = Parser<'a, I, O>
The resulting type after applying the |
operator.
fn bitor(self, other: Parser<'a, I, O>) -> Self::Output
[src]
impl<'a, I: 'a, O: 'a, U: 'a> Mul<Parser<'a, I, U>> for Parser<'a, I, O>
[src]
Sequence discard first value
type Output = Parser<'a, I, U>
The resulting type after applying the *
operator.
fn mul(self, other: Parser<'a, I, U>) -> Self::Output
[src]
impl<'a, I, O: 'a> Neg for Parser<'a, I, O>
[src]
And predicate
type Output = Parser<'a, I, bool>
The resulting type after applying the -
operator.
fn neg(self) -> Self::Output
[src]
impl<'a, I, O: 'a> Not for Parser<'a, I, O>
[src]
Not predicate
type Output = Parser<'a, I, bool>
The resulting type after applying the !
operator.
fn not(self) -> Self::Output
[src]
impl<'a, I, O: 'a, U: 'a, F: Fn(O) -> Parser<'a, I, U> + 'a> Shr<F> for Parser<'a, I, O>
[src]
Chain two parsers where the second parser depends on the first's result.
type Output = Parser<'a, I, U>
The resulting type after applying the >>
operator.
fn shr(self, other: F) -> Self::Output
[src]
impl<'a, I, O: 'a, U: 'a> Sub<Parser<'a, I, U>> for Parser<'a, I, O>
[src]
Sequence discard second value
Auto Trait Implementations
impl<'a, I, O> !RefUnwindSafe for Parser<'a, I, O>
impl<'a, I, O> !Send for Parser<'a, I, O>
impl<'a, I, O> !Sync for Parser<'a, I, O>
impl<'a, I, O> Unpin for Parser<'a, I, O>
impl<'a, I, O> !UnwindSafe for Parser<'a, I, O>
Blanket Implementations
impl<T> Any for T where
T: 'static + ?Sized,
[src]
T: 'static + ?Sized,
impl<T> Borrow<T> for T where
T: ?Sized,
[src]
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]
T: ?Sized,
fn borrow_mut(&mut self) -> &mut T
[src]
impl<T> From<T> for T
[src]
impl<T, U> Into<U> for T where
U: From<T>,
[src]
U: From<T>,
impl<T, U> TryFrom<U> for T where
U: Into<T>,
[src]
U: Into<T>,
type Error = Infallible
The type returned in the event of a conversion error.
fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
[src]
impl<T, U> TryInto<U> for T where
U: TryFrom<T>,
[src]
U: TryFrom<T>,