Trait Symbol

Source
pub trait Symbol<'input, G> {
    type Output;

    // Required methods
    fn pretty_print(&self) -> String;
    fn parse(
        &self,
        grammar: &mut G,
        input: Input<'input>,
    ) -> ParseResult<'input, Self::Output>;

    // Provided methods
    fn parse_complete(
        &self,
        grammar: &mut G,
        text: &'input str,
    ) -> Result<Self::Output, Error<'input>> { ... }
    fn parse_prefix(
        &self,
        grammar: &mut G,
        text: &'input str,
    ) -> ParseResult<'input, Self::Output> { ... }
}

Required Associated Types§

Required Methods§

Source

fn pretty_print(&self) -> String

Source

fn parse( &self, grammar: &mut G, input: Input<'input>, ) -> ParseResult<'input, Self::Output>

Provided Methods§

Source

fn parse_complete( &self, grammar: &mut G, text: &'input str, ) -> Result<Self::Output, Error<'input>>

Source

fn parse_prefix( &self, grammar: &mut G, text: &'input str, ) -> ParseResult<'input, Self::Output>

Implementations on Foreign Types§

Source§

impl<'input, G> Symbol<'input, G> for &'static str

Source§

type Output = &'static str

Source§

fn pretty_print(&self) -> String

Source§

fn parse( &self, _: &mut G, start: Input<'input>, ) -> ParseResult<'input, &'static str>

Implementors§

Source§

impl<'input, G> Symbol<'input, G> for Empty

Source§

impl<'input, G> Symbol<'input, G> for RegexNt

Source§

type Output = &'input str

Source§

impl<'input, G> Symbol<'input, G> for Whitespace

Source§

impl<'input, G, P> Symbol<'input, G> for Optional<P>
where P: Symbol<'input, G>,

Source§

type Output = Option<<P as Symbol<'input, G>>::Output>

Source§

impl<'input, G, P, S> Symbol<'input, G> for Repeat<P, S>
where P: Symbol<'input, G>, S: Symbol<'input, G>,

Source§

type Output = Vec<<P as Symbol<'input, G>>::Output>

Source§

impl<'input, NT1, P2, G> Symbol<'input, G> for Join<NT1, P2>
where NT1: Symbol<'input, G>, P2: Symbol<'input, G>,

Source§

type Output = (<NT1 as Symbol<'input, G>>::Output, <P2 as Symbol<'input, G>>::Output)

Source§

impl<'input, NT1, P2, R, G> Symbol<'input, G> for Or<NT1, P2>
where NT1: Symbol<'input, G, Output = R>, P2: Symbol<'input, G, Output = R>,