# New Ticket Created by Lars Dɪᴇᴄᴋᴏᴡ 迪拉斯 # Please include the string: [perl #132004] # in the subject line of all future correspondence about this issue. # <URL: https://rt.perl.org/Ticket/Display.html?id=132004 >
› perl6 -v This is Rakudo version 2017.07 built on MoarVM version 2017.07 implementing Perl 6.c. › cat flail.pl use v6; grammar Flail { rule TOP { <B> } rule B { <A> 'x' 'y' | <C> } rule A { '' | 'x' 'z' } rule C { <C> 'w' | 'v' } } Flail.parse('x z x y').say; Flail.parse('v w w w w w w').say; › perl6 flail.pl 「x z x y」 B => 「x z x y」 A => 「x z 」 ^C The execution simply goes into infinite loop with the second input. This is the least awesome failure mode. Compare with Pegex and Regexp::Grammars, which emit a recursion warning/error. Compare with Antlr4, where the grammar is effectively a compile time error. Compare with Eyapp and Marpa, which can consume this grammar and set of inputs without any problem. I realise that the parser cannot be simply changed since it also parses Perl6 source code. But since it is now shown that the parser is not a general parser able to consume arbitrary valid CFG, then at least the documentation must mention somewhere * what the name/classification of the underlying technology/algorithm of the parser is and * what its shortcomings are (with examples) so that a user can make an informed decision.