[][src]Trait nommy::Parse

pub trait Parse<T>: Sized + Peek<T> {
    type Error: Error;
    fn parse(
        input: &mut Buffer<impl Iterator<Item = T>>
    ) -> Result<Self, Self::Error>; }

An interface for creating and composing parsers Takes in a Buffer iterator and consumes a subset of it, Returning Self if it managed to parse ok, otherwise returning a meaningful error Parse can be derived for some types

use nommy::*;
let mut buffer = Buffer::new(".".chars());
assert_eq!(token::Dot::parse(&mut buffer), Ok(token::Dot));

Associated Types

Loading content...

Required methods

fn parse(
    input: &mut Buffer<impl Iterator<Item = T>>
) -> Result<Self, Self::Error>
[src]

Loading content...

Implementations on Foreign Types

impl<P: Parse<T>, T> Parse<T> for Option<P>[src]

Define Parse for Option

. Result is None if parsing P fails Otherwise, result is Some(p)

type Error = Infallible

impl<P: Parse<T>, T> Parse<T> for Vec<P>[src]

Define Parse for Vec

. Repeatedly attempt to parse P, Result is all successful attempts

type Error = Infallible

impl<T, T1, T2> Parse<T> for (T1, T2) where
    T1: Parse<T>,
    T2: Parse<T>, 
[src]

type Error = Tuple2ParseError<T1::Error, T2::Error>

impl<T, T1, T2, T3> Parse<T> for (T1, T2, T3) where
    T1: Parse<T>,
    T2: Parse<T>,
    T3: Parse<T>, 
[src]

type Error = Tuple3ParseError<T1::Error, T2::Error, T3::Error>

impl<T, T1, T2, T3, T4> Parse<T> for (T1, T2, T3, T4) where
    T1: Parse<T>,
    T2: Parse<T>,
    T3: Parse<T>,
    T4: Parse<T>, 
[src]

type Error = Tuple4ParseError<T1::Error, T2::Error, T3::Error, T4::Error>

impl<T, T1, T2, T3, T4, T5> Parse<T> for (T1, T2, T3, T4, T5) where
    T1: Parse<T>,
    T2: Parse<T>,
    T3: Parse<T>,
    T4: Parse<T>,
    T5: Parse<T>, 
[src]

type Error = Tuple5ParseError<T1::Error, T2::Error, T3::Error, T4::Error, T5::Error>

impl<T, T1, T2, T3, T4, T5, T6> Parse<T> for (T1, T2, T3, T4, T5, T6) where
    T1: Parse<T>,
    T2: Parse<T>,
    T3: Parse<T>,
    T4: Parse<T>,
    T5: Parse<T>,
    T6: Parse<T>, 
[src]

type Error = Tuple6ParseError<T1::Error, T2::Error, T3::Error, T4::Error, T5::Error, T6::Error>

impl<T, T1, T2, T3, T4, T5, T6, T7> Parse<T> for (T1, T2, T3, T4, T5, T6, T7) where
    T1: Parse<T>,
    T2: Parse<T>,
    T3: Parse<T>,
    T4: Parse<T>,
    T5: Parse<T>,
    T6: Parse<T>,
    T7: Parse<T>, 
[src]

type Error = Tuple7ParseError<T1::Error, T2::Error, T3::Error, T4::Error, T5::Error, T6::Error, T7::Error>

impl<T, T1, T2, T3, T4, T5, T6, T7, T8> Parse<T> for (T1, T2, T3, T4, T5, T6, T7, T8) where
    T1: Parse<T>,
    T2: Parse<T>,
    T3: Parse<T>,
    T4: Parse<T>,
    T5: Parse<T>,
    T6: Parse<T>,
    T7: Parse<T>,
    T8: Parse<T>, 
[src]

type Error = Tuple8ParseError<T1::Error, T2::Error, T3::Error, T4::Error, T5::Error, T6::Error, T7::Error, T8::Error>

impl<T, T1, T2, T3, T4, T5, T6, T7, T8, T9> Parse<T> for (T1, T2, T3, T4, T5, T6, T7, T8, T9) where
    T1: Parse<T>,
    T2: Parse<T>,
    T3: Parse<T>,
    T4: Parse<T>,
    T5: Parse<T>,
    T6: Parse<T>,
    T7: Parse<T>,
    T8: Parse<T>,
    T9: Parse<T>, 
[src]

type Error = Tuple9ParseError<T1::Error, T2::Error, T3::Error, T4::Error, T5::Error, T6::Error, T7::Error, T8::Error, T9::Error>

impl<T, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10> Parse<T> for (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10) where
    T1: Parse<T>,
    T2: Parse<T>,
    T3: Parse<T>,
    T4: Parse<T>,
    T5: Parse<T>,
    T6: Parse<T>,
    T7: Parse<T>,
    T8: Parse<T>,
    T9: Parse<T>,
    T10: Parse<T>, 
[src]

type Error = Tuple10ParseError<T1::Error, T2::Error, T3::Error, T4::Error, T5::Error, T6::Error, T7::Error, T8::Error, T9::Error, T10::Error>

impl<T, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11> Parse<T> for (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11) where
    T1: Parse<T>,
    T2: Parse<T>,
    T3: Parse<T>,
    T4: Parse<T>,
    T5: Parse<T>,
    T6: Parse<T>,
    T7: Parse<T>,
    T8: Parse<T>,
    T9: Parse<T>,
    T10: Parse<T>,
    T11: Parse<T>, 
[src]

type Error = Tuple11ParseError<T1::Error, T2::Error, T3::Error, T4::Error, T5::Error, T6::Error, T7::Error, T8::Error, T9::Error, T10::Error, T11::Error>

impl<T, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12> Parse<T> for (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12) where
    T1: Parse<T>,
    T2: Parse<T>,
    T3: Parse<T>,
    T4: Parse<T>,
    T5: Parse<T>,
    T6: Parse<T>,
    T7: Parse<T>,
    T8: Parse<T>,
    T9: Parse<T>,
    T10: Parse<T>,
    T11: Parse<T>,
    T12: Parse<T>, 
[src]

type Error = Tuple12ParseError<T1::Error, T2::Error, T3::Error, T4::Error, T5::Error, T6::Error, T7::Error, T8::Error, T9::Error, T10::Error, T11::Error, T12::Error>

Loading content...

Implementors

impl Parse<char> for Dot[src]

type Error = TokenParseError

impl Parse<char> for GThan[src]

type Error = TokenParseError

impl Parse<char> for LBrace[src]

type Error = TokenParseError

impl Parse<char> for LBracket[src]

type Error = TokenParseError

impl Parse<char> for LParen[src]

type Error = TokenParseError

impl Parse<char> for LThan[src]

type Error = TokenParseError

impl Parse<char> for RBrace[src]

type Error = TokenParseError

impl Parse<char> for RBracket[src]

type Error = TokenParseError

impl Parse<char> for RParen[src]

type Error = TokenParseError

impl<P: Parse<T>, Suffix: Parse<T>, T> Parse<T> for SuffixedBy<P, Suffix>[src]

Define Parse for SuffixedBy

. Parse Suffix then parse P

type Error = SuffixedByParseError<P::Error, Suffix::Error>

impl<P: Parse<T>, T> Parse<T> for Vec1<P>[src]

Define Parse for Vec1

. Repeatedly attempt to parse P, Result is all successful attempts

type Error = P::Error

impl<Prefix: Parse<T>, P: Parse<T>, Suffix: Parse<T>, T> Parse<T> for SurroundedBy<Prefix, P, Suffix>[src]

Define Parse for SurroundedBy

. Parse Prefix then parse P

type Error = SurroundedByParseError<Prefix::Error, P::Error, Suffix::Error>

impl<Prefix: Parse<T>, P: Parse<T>, T> Parse<T> for PrefixedBy<Prefix, P>[src]

Define Parse for PrefixedBy

. Parse Prefix then parse P

type Error = PrefixedByParseError<Prefix::Error, P::Error>

Loading content...