| Index: third_party/re2/re2/make_perl_groups.pl
|
| diff --git a/third_party/re2/re2/make_perl_groups.pl b/third_party/re2/re2/make_perl_groups.pl
|
| index d5eaa59851100d90894f35f6103c4e7bc3269afb..d9fcdafaafe9d7ee103c6678472f9c5fcfc6ab88 100755
|
| --- a/third_party/re2/re2/make_perl_groups.pl
|
| +++ b/third_party/re2/re2/make_perl_groups.pl
|
| @@ -32,14 +32,20 @@
|
| "\\w",
|
| );
|
|
|
| +%overrides = (
|
| + # Prior to Perl 5.18, \s did not match vertical tab.
|
| + # RE2 preserves that original behaviour.
|
| + "\\s:11" => 0,
|
| +);
|
| +
|
| sub ComputeClass($) {
|
| + my ($cname) = @_;
|
| my @ranges;
|
| - my ($class) = @_;
|
| - my $regexp = "[$class]";
|
| + my $regexp = qr/[$cname]/;
|
| 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{"$cname:$i"} // chr($i) =~ $regexp)) {
|
| if ($start < 0) {
|
| $start = $i;
|
| }
|
| @@ -54,15 +60,15 @@ sub ComputeClass($) {
|
| }
|
|
|
| sub PrintClass($$@) {
|
| - my ($cname, $name, @ranges) = @_;
|
| - print "static URange16 code${cname}[] = { /* $name */\n";
|
| + my ($cnum, $cname, @ranges) = @_;
|
| + print "static const URange16 code${cnum}[] = { /* $cname */\n";
|
| for (my $i=0; $i<@ranges; $i++) {
|
| my @a = @{$ranges[$i]};
|
| printf "\t{ 0x%x, 0x%x },\n", $a[0], $a[1];
|
| }
|
| print "};\n";
|
| my $n = @ranges;
|
| - my $escname = $name;
|
| + my $escname = $cname;
|
| $escname =~ s/\\/\\\\/g;
|
| $negname = $escname;
|
| if ($negname =~ /:/) {
|
| @@ -70,25 +76,25 @@ sub PrintClass($$@) {
|
| } else {
|
| $negname =~ y/a-z/A-Z/;
|
| }
|
| - return "{ \"$escname\", +1, code$cname, $n }", "{ \"$negname\", -1, code$cname, $n }";
|
| + return "{ \"$escname\", +1, code$cnum, $n }", "{ \"$negname\", -1, code$cnum, $n }";
|
| }
|
|
|
| -my $gen = 0;
|
| +my $cnum = 0;
|
|
|
| sub PrintClasses($@) {
|
| - my ($cname, @classes) = @_;
|
| + my ($pname, @classes) = @_;
|
| my @entries;
|
| - foreach my $cl (@classes) {
|
| - my @ranges = ComputeClass($cl);
|
| - push @entries, PrintClass(++$gen, $cl, @ranges);
|
| + foreach my $cname (@classes) {
|
| + my @ranges = ComputeClass($cname);
|
| + push @entries, PrintClass(++$cnum, $cname, @ranges);
|
| }
|
| - print "UGroup ${cname}_groups[] = {\n";
|
| + print "const UGroup ${pname}_groups[] = {\n";
|
| foreach my $e (@entries) {
|
| print "\t$e,\n";
|
| }
|
| print "};\n";
|
| my $count = @entries;
|
| - print "int num_${cname}_groups = $count;\n";
|
| + print "const int num_${pname}_groups = $count;\n";
|
| }
|
|
|
| print <<EOF;
|
|
|