Author: lwall Date: 2009-10-30 18:56:12 +0100 (Fri, 30 Oct 2009) New Revision: 28957
Modified: docs/Perl6/Spec/S05-regex.pod Log: [S05] document reversed character range compilation failure clarify what happens if an indirect rule fails to compile Modified: docs/Perl6/Spec/S05-regex.pod =================================================================== --- docs/Perl6/Spec/S05-regex.pod 2009-10-30 17:47:50 UTC (rev 28956) +++ docs/Perl6/Spec/S05-regex.pod 2009-10-30 17:56:12 UTC (rev 28957) @@ -16,8 +16,8 @@ Created: 24 Jun 2002 - Last Modified: 28 Oct 2009 - Version: 106 + Last Modified: 30 Oct 2009 + Version: 107 This document summarizes Apocalypse 5, which is about the new regex syntax. We now try to call them I<regex> rather than "regular @@ -1238,9 +1238,14 @@ either a C<Regex> object, or a string to be compiled as the regex. The string is never matched literally. -Such an assertion is not captured. (No assertion with leading punctuation -is captured by default.) You may always capture it explicitly, of course. +If the compilation of the string form fails, the error message is converted +to a warning and the assertion fails. +The indirect subrule assertion is not captured. (No assertion with leading punctuation +is captured by default.) You may always capture it explicitly, of course: + + / <name=$rx> / + A subrule is considered declarative to the extent that the front of it is declarative, and to the extent that the variable doesn't change. Prefix with a sequence point to defeat repeated static optimizations. @@ -1336,8 +1341,18 @@ Whitespace is ignored within square brackets: - / <[ a..z _ ]>* / + / <[ a .. z _ ]>* / +A reversed range is illegal. In directly compiled code it's a compile-time +error to say + + / <[ z .. a ]> / # Reversed range is not allowed + +In indirectly compiled code, a similar warning is issued and the assertion fails: + + $rx = '<[ z .. a ]>'; + / <$rx> /; # warns and never matches + =item * A leading C<-> indicates a complemented character class: