# New Ticket Created by Moritz Lenz # Please include the string: [perl #125690] # in the subject line of all future correspondence about this issue. # <URL: https://rt.perl.org/Ticket/Display.html?id=125690 >
This script here: # BEGIN SCRIPT my grammar PgTokenizer { token double_quote_normal { <-[\\"]>+ } token double_quote_escape { [\\ . ]+ } token double_quote { \" [ | <.double_quote_normal> | <.double_quote_escape> ]* \" } token single_quote_normal { <-['\\]>+ } token single_quote_escape { [ \'\' || \\ . ]+ } token single_quote { \' [ | <.single_quote_normal> | <.single_quote_escape> ]* \' } token placeholder { '?' } token normal { <-[?"']>+ } token TOP { ^ ( | <normal> | <placeholder> | <single_quote> | <double_quote> )* $ } } say PgTokenizer.parse(q['a\.b''cd?', "\"?", ?]) # END SCRIPT use to match successfully (and presumably did with 2015.06, otherwise we'd have had rakudo star test failures), but doesn't match anymore with rakudo 2015.07. If one changes the || to | in single_quote_escape, it matches again. I think this is a bug, because the two alternatives are mutually exclusive, and thus | vs || shouldn't matter.