[][src]Macro parze::parsers

macro_rules! parsers {
    ( @NAMES ) => { ... };
    ( @NAMES $name:ident : $kind:ty = { $($rule:tt)* } $($tail:tt)* ) => { ... };
    ( @NAMES $name:ident = { $($rule:tt)* } $($tail:tt)* ) => { ... };
    ( @NAMES $($tail:tt)* ) => { ... };
    ( @DEFINITIONS ) => { ... };
    ( @DEFINITIONS $name:ident : $kind:ty = { $($rule:tt)* } $($tail:tt)* ) => { ... };
    ( @DEFINITIONS $name:ident = { $($rule:tt)* } $($tail:tt)* ) => { ... };
    ( @DEFINITIONS $($tail:tt)* ) => { ... };
    ( $($tail:tt)* ) => { ... };
}

A macro to define recursive parsers.

Parsers defined by this macro may be arbitrarily self-referential, unlike rule!.

Example

#![cfg(feature = "macros")]
#![feature(proc_macro_hygiene)]

use parze::prelude::*;

parsers! {
    foo = {
        '!' | bar
    }
    bar: Parser<_, _> = {
        '(' -& foo &- ')'
    }
}