[−][src]Trait nommy::Parse
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
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
fn parse(
input: &mut Buffer<impl Iterator<Item = T>>
) -> Result<Self, Self::Error>
[src]
input: &mut Buffer<impl Iterator<Item = T>>
) -> Result<Self, Self::Error>
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
fn parse(
input: &mut Buffer<impl Iterator<Item = T>>
) -> Result<Self, Self::Error>
[src]
input: &mut Buffer<impl Iterator<Item = T>>
) -> Result<Self, Self::Error>
impl<T, T1, T2> Parse<T> for (T1, T2) where
T1: Parse<T>,
T2: Parse<T>,
[src]
T1: Parse<T>,
T2: Parse<T>,
type Error = Tuple2ParseError<T1::Error, T2::Error>
fn parse(
input: &mut Buffer<impl Iterator<Item = T>>
) -> Result<Self, Self::Error>
[src]
input: &mut Buffer<impl Iterator<Item = T>>
) -> Result<Self, Self::Error>
impl<T, T1, T2, T3> Parse<T> for (T1, T2, T3) where
T1: Parse<T>,
T2: Parse<T>,
T3: Parse<T>,
[src]
T1: Parse<T>,
T2: Parse<T>,
T3: Parse<T>,
type Error = Tuple3ParseError<T1::Error, T2::Error, T3::Error>
fn parse(
input: &mut Buffer<impl Iterator<Item = T>>
) -> Result<Self, Self::Error>
[src]
input: &mut Buffer<impl Iterator<Item = T>>
) -> Result<Self, Self::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]
T1: Parse<T>,
T2: Parse<T>,
T3: Parse<T>,
T4: Parse<T>,
type Error = Tuple4ParseError<T1::Error, T2::Error, T3::Error, T4::Error>
fn parse(
input: &mut Buffer<impl Iterator<Item = T>>
) -> Result<Self, Self::Error>
[src]
input: &mut Buffer<impl Iterator<Item = T>>
) -> Result<Self, Self::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]
T1: Parse<T>,
T2: Parse<T>,
T3: Parse<T>,
T4: Parse<T>,
T5: Parse<T>,
type Error = Tuple5ParseError<T1::Error, T2::Error, T3::Error, T4::Error, T5::Error>
fn parse(
input: &mut Buffer<impl Iterator<Item = T>>
) -> Result<Self, Self::Error>
[src]
input: &mut Buffer<impl Iterator<Item = T>>
) -> Result<Self, Self::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]
T1: Parse<T>,
T2: Parse<T>,
T3: Parse<T>,
T4: Parse<T>,
T5: Parse<T>,
T6: Parse<T>,
type Error = Tuple6ParseError<T1::Error, T2::Error, T3::Error, T4::Error, T5::Error, T6::Error>
fn parse(
input: &mut Buffer<impl Iterator<Item = T>>
) -> Result<Self, Self::Error>
[src]
input: &mut Buffer<impl Iterator<Item = T>>
) -> Result<Self, Self::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]
T1: Parse<T>,
T2: Parse<T>,
T3: Parse<T>,
T4: Parse<T>,
T5: Parse<T>,
T6: Parse<T>,
T7: Parse<T>,
type Error = Tuple7ParseError<T1::Error, T2::Error, T3::Error, T4::Error, T5::Error, T6::Error, T7::Error>
fn parse(
input: &mut Buffer<impl Iterator<Item = T>>
) -> Result<Self, Self::Error>
[src]
input: &mut Buffer<impl Iterator<Item = T>>
) -> Result<Self, Self::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]
T1: Parse<T>,
T2: Parse<T>,
T3: Parse<T>,
T4: Parse<T>,
T5: Parse<T>,
T6: Parse<T>,
T7: Parse<T>,
T8: Parse<T>,
type Error = Tuple8ParseError<T1::Error, T2::Error, T3::Error, T4::Error, T5::Error, T6::Error, T7::Error, T8::Error>
fn parse(
input: &mut Buffer<impl Iterator<Item = T>>
) -> Result<Self, Self::Error>
[src]
input: &mut Buffer<impl Iterator<Item = T>>
) -> Result<Self, Self::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]
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>,
type Error = Tuple9ParseError<T1::Error, T2::Error, T3::Error, T4::Error, T5::Error, T6::Error, T7::Error, T8::Error, T9::Error>
fn parse(
input: &mut Buffer<impl Iterator<Item = T>>
) -> Result<Self, Self::Error>
[src]
input: &mut Buffer<impl Iterator<Item = T>>
) -> Result<Self, Self::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]
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>,
type Error = Tuple10ParseError<T1::Error, T2::Error, T3::Error, T4::Error, T5::Error, T6::Error, T7::Error, T8::Error, T9::Error, T10::Error>
fn parse(
input: &mut Buffer<impl Iterator<Item = T>>
) -> Result<Self, Self::Error>
[src]
input: &mut Buffer<impl Iterator<Item = T>>
) -> Result<Self, Self::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]
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>,
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>
fn parse(
input: &mut Buffer<impl Iterator<Item = T>>
) -> Result<Self, Self::Error>
[src]
input: &mut Buffer<impl Iterator<Item = T>>
) -> Result<Self, Self::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]
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>,
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>
fn parse(
input: &mut Buffer<impl Iterator<Item = T>>
) -> Result<Self, Self::Error>
[src]
input: &mut Buffer<impl Iterator<Item = T>>
) -> Result<Self, Self::Error>
Implementors
impl Parse<char> for Dot
[src]
type Error = TokenParseError
fn parse(
input: &mut Buffer<impl Iterator<Item = char>>
) -> Result<Self, Self::Error>
[src]
input: &mut Buffer<impl Iterator<Item = char>>
) -> Result<Self, Self::Error>
impl Parse<char> for GThan
[src]
type Error = TokenParseError
fn parse(
input: &mut Buffer<impl Iterator<Item = char>>
) -> Result<Self, Self::Error>
[src]
input: &mut Buffer<impl Iterator<Item = char>>
) -> Result<Self, Self::Error>
impl Parse<char> for LBrace
[src]
type Error = TokenParseError
fn parse(
input: &mut Buffer<impl Iterator<Item = char>>
) -> Result<Self, Self::Error>
[src]
input: &mut Buffer<impl Iterator<Item = char>>
) -> Result<Self, Self::Error>
impl Parse<char> for LBracket
[src]
type Error = TokenParseError
fn parse(
input: &mut Buffer<impl Iterator<Item = char>>
) -> Result<Self, Self::Error>
[src]
input: &mut Buffer<impl Iterator<Item = char>>
) -> Result<Self, Self::Error>
impl Parse<char> for LParen
[src]
type Error = TokenParseError
fn parse(
input: &mut Buffer<impl Iterator<Item = char>>
) -> Result<Self, Self::Error>
[src]
input: &mut Buffer<impl Iterator<Item = char>>
) -> Result<Self, Self::Error>
impl Parse<char> for LThan
[src]
type Error = TokenParseError
fn parse(
input: &mut Buffer<impl Iterator<Item = char>>
) -> Result<Self, Self::Error>
[src]
input: &mut Buffer<impl Iterator<Item = char>>
) -> Result<Self, Self::Error>
impl Parse<char> for RBrace
[src]
type Error = TokenParseError
fn parse(
input: &mut Buffer<impl Iterator<Item = char>>
) -> Result<Self, Self::Error>
[src]
input: &mut Buffer<impl Iterator<Item = char>>
) -> Result<Self, Self::Error>
impl Parse<char> for RBracket
[src]
type Error = TokenParseError
fn parse(
input: &mut Buffer<impl Iterator<Item = char>>
) -> Result<Self, Self::Error>
[src]
input: &mut Buffer<impl Iterator<Item = char>>
) -> Result<Self, Self::Error>
impl Parse<char> for RParen
[src]
type Error = TokenParseError
fn parse(
input: &mut Buffer<impl Iterator<Item = char>>
) -> Result<Self, Self::Error>
[src]
input: &mut Buffer<impl Iterator<Item = char>>
) -> Result<Self, Self::Error>
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>
fn parse(
input: &mut Buffer<impl Iterator<Item = T>>
) -> Result<Self, Self::Error>
[src]
input: &mut Buffer<impl Iterator<Item = T>>
) -> Result<Self, Self::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
fn parse(
input: &mut Buffer<impl Iterator<Item = T>>
) -> Result<Self, Self::Error>
[src]
input: &mut Buffer<impl Iterator<Item = T>>
) -> Result<Self, Self::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>
fn parse(
input: &mut Buffer<impl Iterator<Item = T>>
) -> Result<Self, Self::Error>
[src]
input: &mut Buffer<impl Iterator<Item = T>>
) -> Result<Self, Self::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