diff options
-rw-r--r-- | l1_char_class_tab.h | 2 | ||||
-rw-r--r-- | regen/mk_PL_charclass.pl | 17 |
2 files changed, 12 insertions, 7 deletions
diff --git a/l1_char_class_tab.h b/l1_char_class_tab.h index 7db7d34841..286b666381 100644 --- a/l1_char_class_tab.h +++ b/l1_char_class_tab.h @@ -227,7 +227,7 @@ /* U+DC U WITH DIAERESIS */ (1U<<_CC_ALNUMC)|(1U<<_CC_ALPHA)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR)|(1U<<_CC_IS_IN_SOME_FOLD), /* U+DD Y WITH ACUTE */ (1U<<_CC_ALNUMC)|(1U<<_CC_ALPHA)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR)|(1U<<_CC_IS_IN_SOME_FOLD), /* U+DE THORN */ (1U<<_CC_ALNUMC)|(1U<<_CC_ALPHA)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR)|(1U<<_CC_IS_IN_SOME_FOLD), -/* U+DF sharp s */ (1U<<_CC_NONLATIN1_FOLD)|(1U<<_CC_ALNUMC)|(1U<<_CC_ALPHA)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_LOWER)|(1U<<_CC_NON_FINAL_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR)|(1U<<_CC_IS_IN_SOME_FOLD), +/* U+DF sharp s */ (1U<<_CC_NONLATIN1_FOLD)|(1U<<_CC_ALNUMC)|(1U<<_CC_ALPHA)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR)|(1U<<_CC_IS_IN_SOME_FOLD), /* U+E0 a with grave */ (1U<<_CC_ALNUMC)|(1U<<_CC_ALPHA)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR)|(1U<<_CC_IS_IN_SOME_FOLD), /* U+E1 a with acute */ (1U<<_CC_ALNUMC)|(1U<<_CC_ALPHA)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR)|(1U<<_CC_IS_IN_SOME_FOLD), /* U+E2 a with circumflex */ (1U<<_CC_ALNUMC)|(1U<<_CC_ALPHA)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR)|(1U<<_CC_IS_IN_SOME_FOLD), diff --git a/regen/mk_PL_charclass.pl b/regen/mk_PL_charclass.pl index 18ab4ad0a6..18d535fc58 100644 --- a/regen/mk_PL_charclass.pl +++ b/regen/mk_PL_charclass.pl @@ -116,7 +116,16 @@ BEGIN { # Have to do this at compile time because using user-defined \p{property push @{$folded_closure{$fold}}, $from if $fold < 256; push @{$folded_closure{$from}}, $fold if $from < 256; - push @hex_non_final_folds, $hex_fold if $i < @folded-1 && $fold < 256; + if ($i < @folded-1 + && $fold < 256 + && ! grep { $_ eq $hex_fold } @hex_non_final_folds) + { + push @hex_non_final_folds, $hex_fold; + + # Also add the upper case, which in the latin1 range folds to + # $fold + push @hex_non_final_folds, sprintf "%04X", ord uc chr $fold; + } } } @@ -199,11 +208,7 @@ for my $ord (0..255) { carp $@ if ! defined $re; } #print "$ord, $name $property, $re\n"; - if ($char =~ $re # Add this property if matches - || ($name eq 'NON_FINAL_FOLD' - # Also include chars that fold to the non-final - && CORE::fc($char) =~ $re)) - { + if ($char =~ $re) { # Add this property if matches $bits[$ord] .= '|' if $bits[$ord]; $bits[$ord] .= "(1U<<_CC_$property)"; } |