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§
Required Methods§
Sourcefn parse(&mut self, stream: Stream) -> Parsed<Self::Token, Stream, Context>
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>,
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>,
§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>,
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>,
§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>,
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>,
§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>,
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>,
§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>,
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>,
§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)
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)
§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)
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)
§impl<O0: Debug, O1: Debug, O2: Debug, O3: Debug, P0, P1, P2, P3, Stream, Context> Parse<Stream, Context> for (P0, P1, P2, P3)
impl<O0: Debug, O1: Debug, O2: Debug, O3: Debug, P0, P1, P2, P3, Stream, Context> Parse<Stream, Context> for (P0, P1, P2, P3)
§impl<O0: Debug, O1: Debug, O2: Debug, P0, P1, P2, Stream, Context> Parse<Stream, Context> for (P0, P1, P2)
impl<O0: Debug, O1: Debug, O2: Debug, P0, P1, P2, Stream, Context> Parse<Stream, Context> for (P0, P1, P2)
Source§impl<Stream, Context, L, R> Parse<Stream, Context> for Either<L, R>
Available on crate feature either only.
impl<Stream, Context, L, R> Parse<Stream, Context> for Either<L, R>
Available on crate feature
either only.Source§impl<Stream, Context, Parser, const N: usize> Parse<Stream, Context> for [Parser; N]
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.
impl<Stream, Context, Parser, const N: usize> Parse<Stream, Context> for [Parser; N]
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.