[][src]Struct pom::parser::Parser

pub struct Parser<'a, I, O> {
    pub method: Box<dyn Fn(&'a [I], usize) -> Result<(O, usize)> + 'a>,
}

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]

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]

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]

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]

Cache parser output result to speed up backtracking.

pub fn pos(self) -> Parser<'a, I, usize> where
    O: 'a, 
[src]

Get input position after matching parser.

pub fn collect(self) -> Parser<'a, I, &'a [I]> where
    O: 'a, 
[src]

Collect all matched input symbols.

pub fn discard(self) -> Parser<'a, I, ()> where
    O: 'a, 
[src]

Discard parser output.

pub fn opt(self) -> Parser<'a, I, Option<O>> where
    O: 'a, 
[src]

Make parser optional.

pub fn repeat<R>(self, range: R) -> Parser<'a, I, Vec<O>> where
    R: RangeArgument<usize> + Debug + 'a,
    O: 'a, 
[src]

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]

Give parser a name to identify parsing errors.

pub fn expect(self, name: &'a str) -> Parser<'a, I, O> where
    O: 'a, 
[src]

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.

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.

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.

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.

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.

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.

impl<'a, I, O: 'a, U: 'a> Sub<Parser<'a, I, U>> for Parser<'a, I, O>[src]

Sequence discard second value

type Output = Parser<'a, I, O>

The resulting type after applying the - operator.

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]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.