Macro pest::impl_rdp
[−]
[src]
macro_rules! impl_rdp { ( @rules $( $name:ident )* ) => { ... }; ( @filter [ ] [ $( $rules:tt )* ] ) => { ... }; ( @filter [ $name:ident = { { $( $_primary:tt )* } $( $ts:tt )* } $( $tail:tt )* ] [ $( $rules:tt )* ] ) => { ... }; ( @filter [ $name:ident = @{ { $( $_primary:tt )* } $( $ts:tt )* } $( $tail:tt )* ] [ $( $rules:tt )* ] ) => { ... }; ( @filter [ $_name:ident = _{ { $( $_primary:tt )* } $( $ts:tt )* } $( $tail:tt )* ] [ $( $rules:tt )* ] ) => { ... }; ( @filter [ $name:ident = { $( $_ts:tt )* } $( $tail:tt )* ] [ $( $rules:tt )* ] ) => { ... }; ( @filter [ $name:ident = @{ $( $_ts:tt )* } $( $tail:tt )* ] [ $( $rules:tt )* ] ) => { ... }; ( @filter [ $_name:ident = _{ $( $_ts:tt )* } $( $tail:tt )* ] [ $( $rules:tt )* ] ) => { ... }; ( @ws ) => { ... }; ( @ws whitespace = $( $_ts:tt )* ) => { ... }; ( @ws $_name:ident = { $( $_ts:tt )* } $( $tail:tt )* ) => { ... }; ( @ws $_name:ident = @{ $( $_ts:tt )* } $( $tail:tt )* ) => { ... }; ( @ws $_name:ident = _{ $( $_ts:tt )* } $( $tail:tt )* ) => { ... }; ( @com ) => { ... }; ( @com comment = $( $_ts:tt )* ) => { ... }; ( @com $_name:ident = { $( $_ts:tt )* } $( $tail:tt )* ) => { ... }; ( @com $_name:ident = @{ $( $_ts:tt )* } $( $tail:tt )* ) => { ... }; ( @com $_name:ident = _{ $( $_ts:tt )* } $( $tail:tt )* ) => { ... }; ( grammar! { $( $ts:tt )* } $( $mac:ident! { $( $rest:tt )* } )* ) => { ... }; }
A macro
useful for implementing the Parser
trait
as a recursive descent parser. It only
accepts grammar!
and process!
calls that get implemented on self
.
Rule
It also implements an enum
called Rule
that has a value for all
non-silent rules, but also for
any
and eoi
. These Rule
s are used within Token
s to specify the type
of rule that matched.
Examples
impl_rdp! { grammar! { expression = _{ paren ~ expression? } paren = { ["("] ~ expression? ~ [")"] } } } let mut parser = Rdp::new(StringInput::new("(())((())())()")); assert!(parser.expression()); assert!(parser.end());