Last active
December 17, 2015 10:49
-
-
Save FROGGS/5598019 to your computer and use it in GitHub Desktop.
RT117415 - patch for "Use of regex characters as substitution delimiter fails"
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| use Test; | |
| plan 69; | |
| my @delims = < ^ ° ! " § $ % @ € & / = ? ` * + ~ ' ; , . - | >; | |
| for @delims -> $d { | |
| ok eval("my \$x = 'abc'; \$x ~~ m{$d}b{$d}"), "$d as delimiter in ok-match"; | |
| nok eval("my \$x = 'abc'; \$x ~~ m{$d}d{$d}"), "$d as delimiter in nok-match"; | |
| is eval("my \$x = 'abc'; \$x ~~ s{$d}a{$d}b{$d}; \$x"), 'bbc', "$d as delimiter in substitution"; | |
| } |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| diff --git a/src/QRegex/P5Regex/Grammar.nqp b/src/QRegex/P5Regex/Grammar.nqp | |
| index e29167b..5be2be3 100644 | |
| --- a/src/QRegex/P5Regex/Grammar.nqp | |
| +++ b/src/QRegex/P5Regex/Grammar.nqp | |
| @@ -69,7 +69,7 @@ grammar QRegex::P5Regex::Grammar is HLL::Grammar { | |
| <![|)]> | |
| <!rxstopper> | |
| <atom> | |
| - [ <.ws> <quantifier=p5quantifier> ]**0..1 | |
| + [ <.ws> <!before <rxstopper> > <quantifier=p5quantifier> ]**0..1 | |
| <.ws> | |
| } | |
| diff --git a/src/QRegex/P6Regex/Grammar.nqp b/src/QRegex/P6Regex/Grammar.nqp | |
| index d29ee96..d3cc529 100755 | |
| --- a/src/QRegex/P6Regex/Grammar.nqp | |
| +++ b/src/QRegex/P6Regex/Grammar.nqp | |
| @@ -125,12 +125,12 @@ grammar QRegex::P6Regex::Grammar is HLL::Grammar { | |
| token termalt { | |
| <termconj> | |
| - [ '|' <![|]> [ { $*SEQ := 0; } <termconj> || <.throw_null_pattern> ] ]* | |
| + [ <!before <rxstopper> > '|' <![|]> [ { $*SEQ := 0; } <termconj> || <.throw_null_pattern> ] ]* | |
| } | |
| token termconj { | |
| <termish> | |
| - [ '&' <![&]> [ { $*SEQ := 0; } <termish> || <.throw_null_pattern> ] ]* | |
| + [ <!before <rxstopper> > '&' <![&]> [ { $*SEQ := 0; } <termish> || <.throw_null_pattern> ] ]* | |
| } | |
| token termish { | |
| @@ -140,9 +140,10 @@ grammar QRegex::P6Regex::Grammar is HLL::Grammar { | |
| } | |
| token quantified_atom { | |
| + <!rxstopper> | |
| <atom> | |
| [ | |
| - <.ws> [ <quantifier> | <?before ':'> <backmod> <!alpha> ] | |
| + <.ws> [ <!before <rxstopper> > <quantifier> | <?before ':'> <backmod> <!alpha> ] | |
| [ <.ws> <separator> ]**0..1 | |
| ]**0..1 | |
| } | |
| @@ -204,7 +205,7 @@ grammar QRegex::P6Regex::Grammar is HLL::Grammar { | |
| token metachar:sym<bs> { \\ <backslash> } | |
| token metachar:sym<mod> { <mod_internal> } | |
| token metachar:sym<quantifier> { | |
| - <quantifier> <.panic: 'Quantifier quantifies nothing'> | |
| + <!before <rxstopper> > <quantifier> <.panic: 'Quantifier quantifies nothing'> | |
| } | |
| ## we cheat here, really should be regex_infix:sym<~> |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 1..69 | |
| ok 1 - ^ as delimiter in ok-match | |
| ok 2 - ^ as delimiter in nok-match | |
| ok 3 - ^ as delimiter in substitution | |
| ok 4 - ° as delimiter in ok-match | |
| ok 5 - ° as delimiter in nok-match | |
| ok 6 - ° as delimiter in substitution | |
| ok 7 - ! as delimiter in ok-match | |
| ok 8 - ! as delimiter in nok-match | |
| ok 9 - ! as delimiter in substitution | |
| ok 10 - " as delimiter in ok-match | |
| ok 11 - " as delimiter in nok-match | |
| ok 12 - " as delimiter in substitution | |
| ok 13 - § as delimiter in ok-match | |
| ok 14 - § as delimiter in nok-match | |
| ok 15 - § as delimiter in substitution | |
| ok 16 - $ as delimiter in ok-match | |
| ok 17 - $ as delimiter in nok-match | |
| ok 18 - $ as delimiter in substitution | |
| ok 19 - % as delimiter in ok-match | |
| ok 20 - % as delimiter in nok-match | |
| ok 21 - % as delimiter in substitution | |
| ok 22 - @ as delimiter in ok-match | |
| ok 23 - @ as delimiter in nok-match | |
| ok 24 - @ as delimiter in substitution | |
| ok 25 - € as delimiter in ok-match | |
| ok 26 - € as delimiter in nok-match | |
| ok 27 - € as delimiter in substitution | |
| ok 28 - & as delimiter in ok-match | |
| ok 29 - & as delimiter in nok-match | |
| ok 30 - & as delimiter in substitution | |
| ok 31 - / as delimiter in ok-match | |
| ok 32 - / as delimiter in nok-match | |
| ok 33 - / as delimiter in substitution | |
| ok 34 - = as delimiter in ok-match | |
| ok 35 - = as delimiter in nok-match | |
| ok 36 - = as delimiter in substitution | |
| ok 37 - ? as delimiter in ok-match | |
| ok 38 - ? as delimiter in nok-match | |
| ok 39 - ? as delimiter in substitution | |
| ok 40 - ` as delimiter in ok-match | |
| ok 41 - ` as delimiter in nok-match | |
| ok 42 - ` as delimiter in substitution | |
| ok 43 - * as delimiter in ok-match | |
| ok 44 - * as delimiter in nok-match | |
| ok 45 - * as delimiter in substitution | |
| ok 46 - + as delimiter in ok-match | |
| ok 47 - + as delimiter in nok-match | |
| ok 48 - + as delimiter in substitution | |
| ok 49 - ~ as delimiter in ok-match | |
| ok 50 - ~ as delimiter in nok-match | |
| ok 51 - ~ as delimiter in substitution | |
| ok 52 - ' as delimiter in ok-match | |
| ok 53 - ' as delimiter in nok-match | |
| ok 54 - ' as delimiter in substitution | |
| ok 55 - ; as delimiter in ok-match | |
| ok 56 - ; as delimiter in nok-match | |
| ok 57 - ; as delimiter in substitution | |
| ok 58 - , as delimiter in ok-match | |
| ok 59 - , as delimiter in nok-match | |
| ok 60 - , as delimiter in substitution | |
| ok 61 - . as delimiter in ok-match | |
| ok 62 - . as delimiter in nok-match | |
| ok 63 - . as delimiter in substitution | |
| ok 64 - - as delimiter in ok-match | |
| ok 65 - - as delimiter in nok-match | |
| ok 66 - - as delimiter in substitution | |
| ok 67 - | as delimiter in ok-match | |
| ok 68 - | as delimiter in nok-match | |
| ok 69 - | as delimiter in substitution |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment