Trait parser_fuck::Parser

source ·
pub trait Parser<I: TimeTravel> {
    type Output;

Show 19 methods // Required method fn parse(&self, input: I) -> Option<Self::Output>; // Provided methods fn map<U, F>(self, f: F) -> Map<Self, I, F> where Self: Sized, F: FnMut(Self::Output) -> U { ... } fn and<B>(self, b: B) -> And<Self, B, I> where Self: Sized, B: Parser<I> { ... } fn or<B>(self, b: B) -> Or<Self, B, I> where Self: Sized, B: Parser<I, Output = Self::Output> { ... } fn not(self) -> Not<Self, I> where Self: Sized { ... } fn many(self) -> Many<Self, I> where Self: Sized { ... } fn many1(self) -> Many<Self, I> where Self: Sized { ... } fn many_min(self, min: usize) -> Many<Self, I> where Self: Sized { ... } fn many_max(self, max: usize) -> Many<Self, I> where Self: Sized { ... } fn many1_max(self, max: usize) -> Many<Self, I> where Self: Sized { ... } fn many_min_max(self, min: usize, max: usize) -> Many<Self, I> where Self: Sized { ... } fn some(self, count: usize) -> Many<Self, I> where Self: Sized { ... } fn may(self) -> May<Self, I> where Self: Sized { ... } fn iter(self) -> Iter<Self, I> where Self: Sized { ... } fn and_then<U, F>(self, f: F) -> AndThen<Self, I, F> where Self: Sized, U: Parser<I>, F: FnMut(Self::Output) -> U { ... } fn or_else<U, F>(self, f: F) -> OrElse<Self, I, F> where Self: Sized, U: Parser<I, Output = Self::Output>, F: FnMut() -> U { ... } fn or_trans<F>(self, no_retry: bool, f: F) -> OrTrans<Self, I, F> where Self: Sized, F: FnMut(I, Range<usize>) -> Self::Output { ... } fn or_trans_noend<F>(self, no_retry: bool, f: F) -> OrTrans<Self, I, F> where Self: Sized, F: FnMut(I, Range<usize>) -> Self::Output { ... } fn dyns(self) -> Dyn<I, Self::Output> where Self: Sized + 'static { ... }
}
Expand description

Abstract Parser with chain call

Required Associated Types§

Required Methods§

source

fn parse(&self, input: I) -> Option<Self::Output>

do parse

Provided Methods§

source

fn map<U, F>(self, f: F) -> Map<Self, I, F>where Self: Sized, F: FnMut(Self::Output) -> U,

Map a Parser<Output = T> to Parser<Output = U> by applying a function to a contained value

source

fn and<B>(self, b: B) -> And<Self, B, I>where Self: Sized, B: Parser<I>,

Only pass if both subparsers pass

source

fn or<B>(self, b: B) -> Or<Self, B, I>where Self: Sized, B: Parser<I, Output = Self::Output>,

Pass when any subparser passes

source

fn not(self) -> Not<Self, I>where Self: Sized,

Pass if the subparser fail

source

fn many(self) -> Many<Self, I>where Self: Sized,

*, >= 0

source

fn many1(self) -> Many<Self, I>where Self: Sized,

+, >= 1

source

fn many_min(self, min: usize) -> Many<Self, I>where Self: Sized,

{n,}, >= n

source

fn many_max(self, max: usize) -> Many<Self, I>where Self: Sized,

{,m}, <= m

source

fn many1_max(self, max: usize) -> Many<Self, I>where Self: Sized,

{1,m}, >= 1 && <= m

source

fn many_min_max(self, min: usize, max: usize) -> Many<Self, I>where Self: Sized,

{n,m}, >= n && <= m

source

fn some(self, count: usize) -> Many<Self, I>where Self: Sized,

{n}, == n

source

fn may(self) -> May<Self, I>where Self: Sized,

?, 0 or 1

source

fn iter(self) -> Iter<Self, I>where Self: Sized,

Continuously parse into iterators

source

fn and_then<U, F>(self, f: F) -> AndThen<Self, I, F>where Self: Sized, U: Parser<I>, F: FnMut(Self::Output) -> U,

Fail if the subparser fail, otherwise calls f with the new Parser and parse the Parser

source

fn or_else<U, F>(self, f: F) -> OrElse<Self, I, F>where Self: Sized, U: Parser<I, Output = Self::Output>, F: FnMut() -> U,

Pass if subparser pass, otherwise calls f and parse the result Parser

source

fn or_trans<F>(self, no_retry: bool, f: F) -> OrTrans<Self, I, F>where Self: Sized, F: FnMut(I, Range<usize>) -> Self::Output,

Pass if subparser pass, otherwise calls f with error point

  • no_retry Stop immediately without trying to get the error range
source

fn or_trans_noend<F>(self, no_retry: bool, f: F) -> OrTrans<Self, I, F>where Self: Sized, F: FnMut(I, Range<usize>) -> Self::Output,

Pass if subparser pass, otherwise calls f with error point, but ignore EOF

  • no_retry Stop immediately without trying to get the error range
source

fn dyns(self) -> Dyn<I, Self::Output>where Self: Sized + 'static,

Wrap to dynamic

Implementors§

source§

impl<B: Parser<I>, I: TimeTravel, F> Parser<I> for OrTrans<B, I, F>where F: FnMut(I, Range<usize>) -> B::Output,

§

type Output = <B as Parser<I>>::Output

source§

impl<B: Parser<I>, I: TimeTravel, U, F> Parser<I> for AndThen<B, I, F>where U: Parser<I>, F: FnMut(B::Output) -> U,

§

type Output = <U as Parser<I>>::Output

source§

impl<B: Parser<I>, I: TimeTravel, U, F> Parser<I> for Map<B, I, F>where F: FnMut(B::Output) -> U,

§

type Output = U

source§

impl<B: Parser<I>, I: TimeTravel, U, F> Parser<I> for OrElse<B, I, F>where U: Parser<I, Output = B::Output>, F: FnMut() -> U,

§

type Output = <B as Parser<I>>::Output

source§

impl<I, F> Parser<I> for Satisfy<F, I>where I: TimeTravel, F: FnMut(I::Item) -> bool,

source§

impl<I, U, F> Parser<I> for Fwhere I: TimeTravel, F: Fn(I) -> Option<U>,

§

type Output = U

source§

impl<I: TimeTravel, A> Parser<I> for Iter<A, I>where A: Parser<I> + Clone,

§

type Output = ParserIter<A, I>

source§

impl<I: TimeTravel, A> Parser<I> for Many<A, I>where A: Parser<I>,

§

type Output = Vec<<A as Parser<I>>::Output>

source§

impl<I: TimeTravel, A> Parser<I> for May<A, I>where A: Parser<I>,

§

type Output = Option<<A as Parser<I>>::Output>

source§

impl<I: TimeTravel, A> Parser<I> for Not<A, I>where A: Parser<I>,

§

type Output = ()

source§

impl<I: TimeTravel, A, B> Parser<I> for And<A, B, I>where A: Parser<I>, B: Parser<I>,

§

type Output = (<A as Parser<I>>::Output, <B as Parser<I>>::Output)

source§

impl<I: TimeTravel, A, B> Parser<I> for Or<A, B, I>where A: Parser<I>, B: Parser<I, Output = A::Output>,

§

type Output = <A as Parser<I>>::Output

source§

impl<I: TimeTravel, O> Parser<I> for Dyn<I, O>

§

type Output = O

source§

impl<I: TimeTravel, T> Parser<I> for One<T>where I::Item: PartialEq<T>,

source§

impl<I: TimeTravel, T> Parser<I> for Sub<T>where I::Item: PartialEq<T>,