Parse

Trait Parse 

Source
pub trait Parse<Stream, Context> {
    type Token;

    // Required method
    fn parse(&mut self, stream: Stream) -> Parsed<Self::Token, Stream, Context>;
}
Expand description

Parse is a trait that all parsers should implement. There is a blanked implementation for type that implement FnMut that match signature of parse(). This mean you can quickly use a function to implement a Parser.

Required Associated Types§

Source

type Token

Token is what the parser produced. For example, a parser that read an u32 would have as Token u32.

Required Methods§

Source

fn parse(&mut self, stream: Stream) -> Parsed<Self::Token, Stream, Context>

The main method of binator, any parser will be called by this method. parse() will take a stream as parameter and eat data from it to produce a Token. The result is what the parser Parsed is an enum of possible outcome.

Implementations on Foreign Types§

§

impl<O0: Debug, O1: Debug, O2: Debug, O3: Debug, O4: Debug, O5: Debug, O6: Debug, O7: Debug, O8: Debug, O9: Debug, O10: Debug, P0, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, Stream, Context> Parse<Stream, Context> for (P0, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10)
where Stream: Streaming, P0: Parse<Stream, Context, Token = O0>, P1: Parse<Stream, Context, Token = O1>, P2: Parse<Stream, Context, Token = O2>, P3: Parse<Stream, Context, Token = O3>, P4: Parse<Stream, Context, Token = O4>, P5: Parse<Stream, Context, Token = O5>, P6: Parse<Stream, Context, Token = O6>, P7: Parse<Stream, Context, Token = O7>, P8: Parse<Stream, Context, Token = O8>, P9: Parse<Stream, Context, Token = O9>, P10: Parse<Stream, Context, Token = O10>,

§

type Token = (O0, O1, O2, O3, O4, O5, O6, O7, O8, O9, O10)

§

fn parse(&mut self, stream: Stream) -> Parsed<Self::Token, Stream, Context>

§

impl<O0: Debug, O1: Debug, O2: Debug, O3: Debug, O4: Debug, O5: Debug, O6: Debug, O7: Debug, O8: Debug, O9: Debug, P0, P1, P2, P3, P4, P5, P6, P7, P8, P9, Stream, Context> Parse<Stream, Context> for (P0, P1, P2, P3, P4, P5, P6, P7, P8, P9)
where Stream: Streaming, P0: Parse<Stream, Context, Token = O0>, P1: Parse<Stream, Context, Token = O1>, P2: Parse<Stream, Context, Token = O2>, P3: Parse<Stream, Context, Token = O3>, P4: Parse<Stream, Context, Token = O4>, P5: Parse<Stream, Context, Token = O5>, P6: Parse<Stream, Context, Token = O6>, P7: Parse<Stream, Context, Token = O7>, P8: Parse<Stream, Context, Token = O8>, P9: Parse<Stream, Context, Token = O9>,

§

type Token = (O0, O1, O2, O3, O4, O5, O6, O7, O8, O9)

§

fn parse(&mut self, stream: Stream) -> Parsed<Self::Token, Stream, Context>

§

impl<O0: Debug, O1: Debug, O2: Debug, O3: Debug, O4: Debug, O5: Debug, O6: Debug, O7: Debug, O8: Debug, P0, P1, P2, P3, P4, P5, P6, P7, P8, Stream, Context> Parse<Stream, Context> for (P0, P1, P2, P3, P4, P5, P6, P7, P8)
where Stream: Streaming, P0: Parse<Stream, Context, Token = O0>, P1: Parse<Stream, Context, Token = O1>, P2: Parse<Stream, Context, Token = O2>, P3: Parse<Stream, Context, Token = O3>, P4: Parse<Stream, Context, Token = O4>, P5: Parse<Stream, Context, Token = O5>, P6: Parse<Stream, Context, Token = O6>, P7: Parse<Stream, Context, Token = O7>, P8: Parse<Stream, Context, Token = O8>,

§

type Token = (O0, O1, O2, O3, O4, O5, O6, O7, O8)

§

fn parse(&mut self, stream: Stream) -> Parsed<Self::Token, Stream, Context>

§

impl<O0: Debug, O1: Debug, O2: Debug, O3: Debug, O4: Debug, O5: Debug, O6: Debug, O7: Debug, P0, P1, P2, P3, P4, P5, P6, P7, Stream, Context> Parse<Stream, Context> for (P0, P1, P2, P3, P4, P5, P6, P7)
where Stream: Streaming, P0: Parse<Stream, Context, Token = O0>, P1: Parse<Stream, Context, Token = O1>, P2: Parse<Stream, Context, Token = O2>, P3: Parse<Stream, Context, Token = O3>, P4: Parse<Stream, Context, Token = O4>, P5: Parse<Stream, Context, Token = O5>, P6: Parse<Stream, Context, Token = O6>, P7: Parse<Stream, Context, Token = O7>,

§

type Token = (O0, O1, O2, O3, O4, O5, O6, O7)

§

fn parse(&mut self, stream: Stream) -> Parsed<Self::Token, Stream, Context>

§

impl<O0: Debug, O1: Debug, O2: Debug, O3: Debug, O4: Debug, O5: Debug, O6: Debug, P0, P1, P2, P3, P4, P5, P6, Stream, Context> Parse<Stream, Context> for (P0, P1, P2, P3, P4, P5, P6)
where Stream: Streaming, P0: Parse<Stream, Context, Token = O0>, P1: Parse<Stream, Context, Token = O1>, P2: Parse<Stream, Context, Token = O2>, P3: Parse<Stream, Context, Token = O3>, P4: Parse<Stream, Context, Token = O4>, P5: Parse<Stream, Context, Token = O5>, P6: Parse<Stream, Context, Token = O6>,

§

type Token = (O0, O1, O2, O3, O4, O5, O6)

§

fn parse(&mut self, stream: Stream) -> Parsed<Self::Token, Stream, Context>

§

impl<O0: Debug, O1: Debug, O2: Debug, O3: Debug, O4: Debug, O5: Debug, P0, P1, P2, P3, P4, P5, Stream, Context> Parse<Stream, Context> for (P0, P1, P2, P3, P4, P5)
where Stream: Streaming, P0: Parse<Stream, Context, Token = O0>, P1: Parse<Stream, Context, Token = O1>, P2: Parse<Stream, Context, Token = O2>, P3: Parse<Stream, Context, Token = O3>, P4: Parse<Stream, Context, Token = O4>, P5: Parse<Stream, Context, Token = O5>,

§

type Token = (O0, O1, O2, O3, O4, O5)

§

fn parse(&mut self, stream: Stream) -> Parsed<Self::Token, Stream, Context>

§

impl<O0: Debug, O1: Debug, O2: Debug, O3: Debug, O4: Debug, P0, P1, P2, P3, P4, Stream, Context> Parse<Stream, Context> for (P0, P1, P2, P3, P4)
where Stream: Streaming, P0: Parse<Stream, Context, Token = O0>, P1: Parse<Stream, Context, Token = O1>, P2: Parse<Stream, Context, Token = O2>, P3: Parse<Stream, Context, Token = O3>, P4: Parse<Stream, Context, Token = O4>,

§

type Token = (O0, O1, O2, O3, O4)

§

fn parse(&mut self, stream: Stream) -> Parsed<Self::Token, Stream, Context>

§

impl<O0: Debug, O1: Debug, O2: Debug, O3: Debug, P0, P1, P2, P3, Stream, Context> Parse<Stream, Context> for (P0, P1, P2, P3)
where Stream: Streaming, P0: Parse<Stream, Context, Token = O0>, P1: Parse<Stream, Context, Token = O1>, P2: Parse<Stream, Context, Token = O2>, P3: Parse<Stream, Context, Token = O3>,

§

type Token = (O0, O1, O2, O3)

§

fn parse(&mut self, stream: Stream) -> Parsed<Self::Token, Stream, Context>

§

impl<O0: Debug, O1: Debug, O2: Debug, P0, P1, P2, Stream, Context> Parse<Stream, Context> for (P0, P1, P2)
where Stream: Streaming, P0: Parse<Stream, Context, Token = O0>, P1: Parse<Stream, Context, Token = O1>, P2: Parse<Stream, Context, Token = O2>,

§

type Token = (O0, O1, O2)

§

fn parse(&mut self, stream: Stream) -> Parsed<Self::Token, Stream, Context>

§

impl<O0: Debug, O1: Debug, P0, P1, Stream, Context> Parse<Stream, Context> for (P0, P1)
where Stream: Streaming, P0: Parse<Stream, Context, Token = O0>, P1: Parse<Stream, Context, Token = O1>,

§

type Token = (O0, O1)

§

fn parse(&mut self, stream: Stream) -> Parsed<Self::Token, Stream, Context>

§

impl<O0: Debug, P0, Stream, Context> Parse<Stream, Context> for (P0,)
where Stream: Streaming, P0: Parse<Stream, Context, Token = O0>,

§

type Token = (O0,)

§

fn parse(&mut self, stream: Stream) -> Parsed<Self::Token, Stream, Context>

Source§

impl<Stream, Context> Parse<Stream, Context> for ()

Source§

type Token = ()

Source§

fn parse(&mut self, stream: Stream) -> Parsed<(), Stream, Context>

Source§

impl<Stream, Context, L, R> Parse<Stream, Context> for Either<L, R>
where L: Parse<Stream, Context>, R: Parse<Stream, Context, Token = L::Token>,

Available on crate feature either only.
Source§

type Token = <L as Parse<Stream, Context>>::Token

Source§

fn parse(&mut self, stream: Stream) -> Parsed<Self::Token, Stream, Context>

Source§

impl<Stream, Context, Parser, const N: usize> Parse<Stream, Context> for [Parser; N]
where Stream: Streaming, Parser: Parse<Stream, Context>, Context: BitOr<Output = Context>,

Array can be used to try several parser until one succeed. The parser are tried from start to end of the array. This is limited to parser of the same type.

Source§

type Token = <Parser as Parse<Stream, Context>>::Token

Source§

fn parse(&mut self, stream: Stream) -> Parsed<Self::Token, Stream, Context>

Implementors§

Source§

impl<Token, Stream, Context, F> Parse<Stream, Context> for F
where F: FnMut(Stream) -> Parsed<Token, Stream, Context>,

Source§

type Token = Token