diff --git a/peg-macros/translate.rs b/peg-macros/translate.rs index 6b5c659..166f18f 100644 --- a/peg-macros/translate.rs +++ b/peg-macros/translate.rs @@ -1,3 +1,4 @@ +use proc_macro2::Delimiter; use proc_macro2::{Group, Ident, Literal, Span, TokenStream, TokenTree}; use std::collections::{HashMap, HashSet}; @@ -511,6 +512,8 @@ fn compile_pattern_expr( (pattern_group.stream(), success_res, failure_res) }; + let pattern = Group::new(Delimiter::None, pattern); + quote_spanned! { span => match ::peg::ParseElem::parse_elem(__input, __pos) { ::peg::RuleResult::Matched(__next, #result_name) => match #result_name { diff --git a/tests/run-pass/pattern.rs b/tests/run-pass/pattern.rs index 63ec4ae..e9f9192 100644 --- a/tests/run-pass/pattern.rs +++ b/tests/run-pass/pattern.rs @@ -4,6 +4,8 @@ peg::parser!( grammar test() for str { pub rule capture() -> char = ['a'..='z'] pub rule capture2() -> (char, char) = a:['a'..='z'] b:['0'..='9'] { (a, b) } + + pub rule open_range() -> char = ['a'..] }); fn main() {