From e80c05bb4840af91a14583438d0b6b1296bdc799 Mon Sep 17 00:00:00 2001 From: Andrew Johnson Date: Fri, 25 May 2018 13:52:06 -0600 Subject: [PATCH] kleene start --- Chapter09/metaprogramming_ebnf.rs | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/Chapter09/metaprogramming_ebnf.rs b/Chapter09/metaprogramming_ebnf.rs index 49e38c6..b08bc04 100644 --- a/Chapter09/metaprogramming_ebnf.rs +++ b/Chapter09/metaprogramming_ebnf.rs @@ -15,6 +15,12 @@ macro_rules! abc_or_aaa { (a a a) => { println!("'a a a' is also correct syntax.") }; } +//this is a grammar sequence matching many of one token +macro_rules! many_a { + ( $($a:ident)* ) => {{ $( print!("one {} ", stringify!($a)); )* println!(""); }}; + ( $($a:ident),* ) => {{ $( print!("one {} comma ", stringify!($a)); )* println!(""); }}; +} + fn main() { abc!(a b c); @@ -23,4 +29,7 @@ fn main() { abc_or_aaa!(a b c); abc_or_aaa!(a a a); + + many_a!(a a a); + many_a!(a, a, a); }