diff --git a/basis/peg/ebnf/ebnf-tests.factor b/basis/peg/ebnf/ebnf-tests.factor index aba92899da..825e07dbf8 100644 --- a/basis/peg/ebnf/ebnf-tests.factor +++ b/basis/peg/ebnf/ebnf-tests.factor @@ -528,3 +528,24 @@ Tok = Spaces (Number | Special ) ] [ error>> [ redefined-rule? ] [ name>> "lol" = ] bi and ] must-fail-with + +[ + { "a" "a" } +] [ + EBNF: foo Bar = "a":a1 "a":a2 => [[ a1 a2 2array ]] ;EBNF + "aa" foo +] unit-test + +[ + { "a" "a" } +] [ + EBNF: foo2 Bar = "a":1a "a":2a => [[ 1a 2a 2array ]] ;EBNF + "aa" foo2 +] unit-test + +[ + { "a" "a" } +] [ + EBNF: foo3 Bar = "a":11 "a":22 => [[ 11 22 2array ]] ;EBNF + "aa" foo3 +] unit-test diff --git a/basis/peg/ebnf/ebnf.factor b/basis/peg/ebnf/ebnf.factor index ffc4cb91ad..4462330a44 100644 --- a/basis/peg/ebnf/ebnf.factor +++ b/basis/peg/ebnf/ebnf.factor @@ -230,7 +230,7 @@ DEFER: 'action' : 'element' ( -- parser ) [ - [ ('element') , ":" syntax , "a-zA-Z" range-pattern repeat1 [ >string ] action , ] seq* [ first2 ] action , + [ ('element') , ":" syntax , "(a-zA-Z0-9_)+" range-pattern repeat1 [ >string ] action , ] seq* [ first2 ] action , ('element') , ] choice* ;