From fe2df37c9f31de01430eeaf19c8861429e1ce2a4 Mon Sep 17 00:00:00 2001 From: "Philip.Hazel" Date: Sun, 28 Jul 2019 15:32:11 +0000 Subject: [PATCH] Documentation and test update. --- doc/html/pcre2pattern.html | 21 +++++++++++++++------ doc/pcre2.txt | 20 ++++++++++++++------ doc/pcre2pattern.3 | 25 ++++++++++++++++++------- testdata/testinput2 | 15 +++++++++++++++ testdata/testoutput2 | 26 ++++++++++++++++++++++++++ 5 files changed, 88 insertions(+), 19 deletions(-) diff --git a/doc/html/pcre2pattern.html b/doc/html/pcre2pattern.html index 8188a65..ee416e9 100644 --- a/doc/html/pcre2pattern.html +++ b/doc/html/pcre2pattern.html @@ -3758,11 +3758,20 @@ retained in both cases.

The remaining verbs act only when a later failure causes a backtrack to -reach them. This means that their effect is confined to the assertion, -because lookaround assertions are atomic. A backtrack that occurs after an -assertion is complete does not jump back into the assertion. Note in particular -that a (*MARK) name that is set in an assertion is not "seen" by an instance of -(*SKIP:NAME) latter in the pattern. +reach them. This means that, for the Perl-compatible assertions, their effect +is confined to the assertion, because Perl lookaround assertions are atomic. A +backtrack that occurs after such an assertion is complete does not jump back +into the assertion. Note in particular that a (*MARK) name that is set in an +assertion is not "seen" by an instance of (*SKIP:NAME) later in the pattern. +

+

+PCRE2 now supports non-atomic positive assertions, as described in the section +entitled + "Non-atomic assertions" +above. These assertions must be standalone (not used as conditions). They are +not Perl-compatible. For these assertions, a later backtrack does jump back +into the assertion, and therefore verbs such as (*COMMIT) can be triggered by +backtracks from later in the pattern.

The effect of (*THEN) is not allowed to escape beyond an assertion. If there @@ -3820,7 +3829,7 @@ Cambridge, England.


REVISION

-Last updated: 13 July 2019 +Last updated: 28 July 2019
Copyright © 1997-2019 University of Cambridge.
diff --git a/doc/pcre2.txt b/doc/pcre2.txt index 5722184..f662610 100644 --- a/doc/pcre2.txt +++ b/doc/pcre2.txt @@ -9439,11 +9439,19 @@ BACKTRACKING CONTROL substrings are retained in both cases. The remaining verbs act only when a later failure causes a backtrack to - reach them. This means that their effect is confined to the assertion, - because lookaround assertions are atomic. A backtrack that occurs after - an assertion is complete does not jump back into the assertion. Note in - particular that a (*MARK) name that is set in an assertion is not - "seen" by an instance of (*SKIP:NAME) latter in the pattern. + reach them. This means that, for the Perl-compatible assertions, their + effect is confined to the assertion, because Perl lookaround assertions + are atomic. A backtrack that occurs after such an assertion is complete + does not jump back into the assertion. Note in particular that a + (*MARK) name that is set in an assertion is not "seen" by an instance + of (*SKIP:NAME) later in the pattern. + + PCRE2 now supports non-atomic positive assertions, as described in the + section entitled "Non-atomic assertions" above. These assertions must + be standalone (not used as conditions). They are not Perl-compatible. + For these assertions, a later backtrack does jump back into the asser- + tion, and therefore verbs such as (*COMMIT) can be triggered by back- + tracks from later in the pattern. The effect of (*THEN) is not allowed to escape beyond an assertion. If there are no more branches to try, (*THEN) causes a positive assertion @@ -9494,7 +9502,7 @@ AUTHOR REVISION - Last updated: 13 July 2019 + Last updated: 28 July 2019 Copyright (c) 1997-2019 University of Cambridge. ------------------------------------------------------------------------------ diff --git a/doc/pcre2pattern.3 b/doc/pcre2pattern.3 index d59ac9f..8e79d56 100644 --- a/doc/pcre2pattern.3 +++ b/doc/pcre2pattern.3 @@ -1,4 +1,4 @@ -.TH PCRE2PATTERN 3 "13 July 2019" "PCRE2 10.34" +.TH PCRE2PATTERN 3 "28 July 2019" "PCRE2 10.34" .SH NAME PCRE2 - Perl-compatible regular expressions (revised API) .SH "PCRE2 REGULAR EXPRESSION DETAILS" @@ -3796,11 +3796,22 @@ a positive assertion and false for a negative one; captured substrings are retained in both cases. .P The remaining verbs act only when a later failure causes a backtrack to -reach them. This means that their effect is confined to the assertion, -because lookaround assertions are atomic. A backtrack that occurs after an -assertion is complete does not jump back into the assertion. Note in particular -that a (*MARK) name that is set in an assertion is not "seen" by an instance of -(*SKIP:NAME) latter in the pattern. +reach them. This means that, for the Perl-compatible assertions, their effect +is confined to the assertion, because Perl lookaround assertions are atomic. A +backtrack that occurs after such an assertion is complete does not jump back +into the assertion. Note in particular that a (*MARK) name that is set in an +assertion is not "seen" by an instance of (*SKIP:NAME) later in the pattern. +.P +PCRE2 now supports non-atomic positive assertions, as described in the section +entitled +.\" HTML +.\" +"Non-atomic assertions" +.\" +above. These assertions must be standalone (not used as conditions). They are +not Perl-compatible. For these assertions, a later backtrack does jump back +into the assertion, and therefore verbs such as (*COMMIT) can be triggered by +backtracks from later in the pattern. .P The effect of (*THEN) is not allowed to escape beyond an assertion. If there are no more branches to try, (*THEN) causes a positive assertion to be false, @@ -3859,6 +3870,6 @@ Cambridge, England. .rs .sp .nf -Last updated: 13 July 2019 +Last updated: 28 July 2019 Copyright (c) 1997-2019 University of Cambridge. .fi diff --git a/testdata/testinput2 b/testdata/testinput2 index 16c03c9..7eeee53 100644 --- a/testdata/testinput2 +++ b/testdata/testinput2 @@ -5688,6 +5688,21 @@ a)"xI /(*napla:abc|abd)/I +/(*napla:a|(.)(*ACCEPT)zz)\1../ + abcd + +/(*napla:a(*ACCEPT)zz|(.))\1../ + abcd + +/(*napla:a|(*COMMIT)(.))\1\1/ + aabc +\= Expect no match + abbc + +/(*napla:a|(.))\1\1/ + aabc + abbc + # ---- # Expect error (recursion => not fixed length) diff --git a/testdata/testoutput2 b/testdata/testoutput2 index 5fb1d7f..ac4e738 100644 --- a/testdata/testoutput2 +++ b/testdata/testoutput2 @@ -17185,6 +17185,32 @@ May match empty string First code unit = 'a' Subject length lower bound = 1 +/(*napla:a|(.)(*ACCEPT)zz)\1../ + abcd + 0: abc + 1: a + +/(*napla:a(*ACCEPT)zz|(.))\1../ + abcd + 0: bcd + 1: b + +/(*napla:a|(*COMMIT)(.))\1\1/ + aabc + 0: aa + 1: a +\= Expect no match + abbc +No match + +/(*napla:a|(.))\1\1/ + aabc + 0: aa + 1: a + abbc + 0: bb + 1: b + # ---- # Expect error (recursion => not fixed length)