diff options
author | Ian Lance Taylor <iant@golang.org> | 2018-03-29 15:00:47 -0700 |
---|---|---|
committer | Ian Lance Taylor <iant@golang.org> | 2018-03-29 22:31:57 +0000 |
commit | 9967582f770f62f72a349ec276e00dba8639aa26 (patch) | |
tree | 335318f9f7d48dff4f65df4d0e109fbefc559613 /src/regexp | |
parent | 64bf90576e60bce0c2a6acd3d42855ffdc1c2654 (diff) | |
download | go-9967582f770f62f72a349ec276e00dba8639aa26.tar.gz go-9967582f770f62f72a349ec276e00dba8639aa26.zip |
regexp/syntax: update perl script to preserve \s behavior
Incorporate https://code-review.googlesource.com/#/c/re2/+/3050/ from
the re2 repository. Description of that change:
Preserve the original behaviour of \s.
Prior to Perl 5.18, \s did not match vertical tab. Bake that into
make_perl_groups.pl as an override so that perl_groups.cc retains
its current definitions when rebuilt with newer versions of Perl.
This fixes make_perl_groups.pl to generate an unchanged perl_groups.go
with perl versions 5.18 and later.
Fixes #22057
Change-Id: I9a56e9660092ed6c1ff1045b4a3847de355441a7
Reviewed-on: https://go-review.googlesource.com/103517
Run-TryBot: Ian Lance Taylor <iant@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
Diffstat (limited to 'src/regexp')
-rwxr-xr-x | src/regexp/syntax/make_perl_groups.pl | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/src/regexp/syntax/make_perl_groups.pl b/src/regexp/syntax/make_perl_groups.pl index dc6d232a76..80a2c9ae6b 100755 --- a/src/regexp/syntax/make_perl_groups.pl +++ b/src/regexp/syntax/make_perl_groups.pl @@ -34,6 +34,12 @@ "\\w", ); +%overrides = ( + # Prior to Perl 5.18, \s did not match vertical tab. + # RE2 preserves that original behaviour. + "\\s:11" => 0, +); + sub ComputeClass($) { my @ranges; my ($class) = @_; @@ -41,7 +47,7 @@ sub ComputeClass($) { my $start = -1; for (my $i=0; $i<=129; $i++) { if ($i == 129) { $i = 256; } - if ($i <= 128 && chr($i) =~ $regexp) { + if ($i <= 128 && ($overrides{"$class:$i"} // chr($i) =~ $regexp)) { if ($start < 0) { $start = $i; } |