comparison src/regexp_nfa.c @ 5351:923738744a60 v7.4.028

updated for version 7.4.028 Problem: Equivalence classes are not working for multi-byte characters. Solution: Copy the rules from the old to the new regexp engine. Add a test to check both engines.
author Bram Moolenaar <bram@vim.org>
date Thu, 19 Sep 2013 17:00:20 +0200
parents c514693882b9
children 71e92a1cb37d
comparison
equal deleted inserted replaced
5350:a83960ec9e6d 5351:923738744a60
740 */ 740 */
741 static int 741 static int
742 nfa_emit_equi_class(c) 742 nfa_emit_equi_class(c)
743 int c; 743 int c;
744 { 744 {
745 #define EMIT2(c) EMIT(c); EMIT(NFA_CONCAT); 745 #define EMIT2(c) EMIT(c); EMIT(NFA_CONCAT);
746 #ifdef FEAT_MBYTE
747 # define EMITMBC(c) EMIT(c); EMIT(NFA_CONCAT);
748 #else
749 # define EMITMBC(c)
750 #endif
746 751
747 #ifdef FEAT_MBYTE 752 #ifdef FEAT_MBYTE
748 if (enc_utf8 || STRCMP(p_enc, "latin1") == 0 753 if (enc_utf8 || STRCMP(p_enc, "latin1") == 0
749 || STRCMP(p_enc, "iso-8859-15") == 0) 754 || STRCMP(p_enc, "iso-8859-15") == 0)
750 #endif 755 #endif
751 { 756 {
752 switch (c) 757 switch (c)
753 { 758 {
754 case 'A': case 0300: case 0301: case 0302: 759 case 'A': case 0300: case 0301: case 0302:
755 case 0303: case 0304: case 0305: 760 case 0303: case 0304: case 0305:
756 EMIT2('A'); EMIT2(0300); EMIT2(0301); 761 CASEMBC(0x100) CASEMBC(0x102) CASEMBC(0x104) CASEMBC(0x1cd)
757 EMIT2(0302); EMIT2(0303); EMIT2(0304); 762 CASEMBC(0x1de) CASEMBC(0x1e0) CASEMBC(0x1ea2)
758 EMIT2(0305); 763 EMIT2('A'); EMIT2(0300); EMIT2(0301); EMIT2(0302);
764 EMIT2(0303); EMIT2(0304); EMIT2(0305);
765 EMITMBC(0x100) EMITMBC(0x102) EMITMBC(0x104)
766 EMITMBC(0x1cd) EMITMBC(0x1de) EMITMBC(0x1e0)
767 EMITMBC(0x1ea2)
759 return OK; 768 return OK;
760 769
770 case 'B': CASEMBC(0x1e02) CASEMBC(0x1e06)
771 EMIT2('B'); EMITMBC(0x1e02) EMITMBC(0x1e06)
772 return OK;
773
761 case 'C': case 0307: 774 case 'C': case 0307:
762 EMIT2('C'); EMIT2(0307); 775 CASEMBC(0x106) CASEMBC(0x108) CASEMBC(0x10a) CASEMBC(0x10c)
776 EMIT2('C'); EMIT2(0307); EMITMBC(0x106) EMITMBC(0x108)
777 EMITMBC(0x10a) EMITMBC(0x10c)
763 return OK; 778 return OK;
764 779
780 case 'D': CASEMBC(0x10e) CASEMBC(0x110) CASEMBC(0x1e0a)
781 CASEMBC(0x1e0e) CASEMBC(0x1e10)
782 EMIT2('D'); EMITMBC(0x10e) EMITMBC(0x110) EMITMBC(0x1e0a)
783 EMITMBC(0x1e0e) EMITMBC(0x1e10)
784 return OK;
785
765 case 'E': case 0310: case 0311: case 0312: case 0313: 786 case 'E': case 0310: case 0311: case 0312: case 0313:
766 EMIT2('E'); EMIT2(0310); EMIT2(0311); 787 CASEMBC(0x112) CASEMBC(0x114) CASEMBC(0x116) CASEMBC(0x118)
767 EMIT2(0312); EMIT2(0313); 788 CASEMBC(0x11a) CASEMBC(0x1eba) CASEMBC(0x1ebc)
789 EMIT2('E'); EMIT2(0310); EMIT2(0311); EMIT2(0312);
790 EMIT2(0313);
791 EMITMBC(0x112) EMITMBC(0x114) EMITMBC(0x116)
792 EMITMBC(0x118) EMITMBC(0x11a) EMITMBC(0x1eba)
793 EMITMBC(0x1ebc)
768 return OK; 794 return OK;
769 795
796 case 'F': CASEMBC(0x1e1e)
797 EMIT2('F'); EMITMBC(0x1e1e)
798 return OK;
799
800 case 'G': CASEMBC(0x11c) CASEMBC(0x11e) CASEMBC(0x120)
801 CASEMBC(0x122) CASEMBC(0x1e4) CASEMBC(0x1e6) CASEMBC(0x1f4)
802 CASEMBC(0x1e20)
803 EMIT2('G'); EMITMBC(0x11c) EMITMBC(0x11e) EMITMBC(0x120)
804 EMITMBC(0x122) EMITMBC(0x1e4) EMITMBC(0x1e6)
805 EMITMBC(0x1f4) EMITMBC(0x1e20)
806 return OK;
807
808 case 'H': CASEMBC(0x124) CASEMBC(0x126) CASEMBC(0x1e22)
809 CASEMBC(0x1e26) CASEMBC(0x1e28)
810 EMIT2('H'); EMITMBC(0x124) EMITMBC(0x126) EMITMBC(0x1e22)
811 EMITMBC(0x1e26) EMITMBC(0x1e28)
812 return OK;
813
770 case 'I': case 0314: case 0315: case 0316: case 0317: 814 case 'I': case 0314: case 0315: case 0316: case 0317:
771 EMIT2('I'); EMIT2(0314); EMIT2(0315); 815 CASEMBC(0x128) CASEMBC(0x12a) CASEMBC(0x12c) CASEMBC(0x12e)
772 EMIT2(0316); EMIT2(0317); 816 CASEMBC(0x130) CASEMBC(0x1cf) CASEMBC(0x1ec8)
817 EMIT2('I'); EMIT2(0314); EMIT2(0315); EMIT2(0316);
818 EMIT2(0317); EMITMBC(0x128) EMITMBC(0x12a)
819 EMITMBC(0x12c) EMITMBC(0x12e) EMITMBC(0x130)
820 EMITMBC(0x1cf) EMITMBC(0x1ec8)
773 return OK; 821 return OK;
774 822
823 case 'J': CASEMBC(0x134)
824 EMIT2('J'); EMITMBC(0x134)
825 return OK;
826
827 case 'K': CASEMBC(0x136) CASEMBC(0x1e8) CASEMBC(0x1e30)
828 CASEMBC(0x1e34)
829 EMIT2('K'); EMITMBC(0x136) EMITMBC(0x1e8) EMITMBC(0x1e30)
830 EMITMBC(0x1e34)
831 return OK;
832
833 case 'L': CASEMBC(0x139) CASEMBC(0x13b) CASEMBC(0x13d)
834 CASEMBC(0x13f) CASEMBC(0x141) CASEMBC(0x1e3a)
835 EMIT2('L'); EMITMBC(0x139) EMITMBC(0x13b) EMITMBC(0x13d)
836 EMITMBC(0x13f) EMITMBC(0x141) EMITMBC(0x1e3a)
837 return OK;
838
839 case 'M': CASEMBC(0x1e3e) CASEMBC(0x1e40)
840 EMIT2('M'); EMITMBC(0x1e3e) EMITMBC(0x1e40)
841 return OK;
842
775 case 'N': case 0321: 843 case 'N': case 0321:
776 EMIT2('N'); EMIT2(0321); 844 CASEMBC(0x143) CASEMBC(0x145) CASEMBC(0x147) CASEMBC(0x1e44)
845 CASEMBC(0x1e48)
846 EMIT2('N'); EMIT2(0321); EMITMBC(0x143) EMITMBC(0x145)
847 EMITMBC(0x147) EMITMBC(0x1e44) EMITMBC(0x1e48)
777 return OK; 848 return OK;
778 849
779 case 'O': case 0322: case 0323: case 0324: case 0325: 850 case 'O': case 0322: case 0323: case 0324: case 0325:
780 case 0326: 851 case 0326: case 0330:
781 EMIT2('O'); EMIT2(0322); EMIT2(0323); 852 CASEMBC(0x14c) CASEMBC(0x14e) CASEMBC(0x150) CASEMBC(0x1a0)
782 EMIT2(0324); EMIT2(0325); EMIT2(0326); 853 CASEMBC(0x1d1) CASEMBC(0x1ea) CASEMBC(0x1ec) CASEMBC(0x1ece)
854 EMIT2('O'); EMIT2(0322); EMIT2(0323); EMIT2(0324);
855 EMIT2(0325); EMIT2(0326); EMIT2(0330);
856 EMITMBC(0x14c) EMITMBC(0x14e) EMITMBC(0x150)
857 EMITMBC(0x1a0) EMITMBC(0x1d1) EMITMBC(0x1ea)
858 EMITMBC(0x1ec) EMITMBC(0x1ece)
783 return OK; 859 return OK;
784 860
861 case 'P': case 0x1e54: case 0x1e56:
862 EMIT2('P'); EMITMBC(0x1e54) EMITMBC(0x1e56)
863 return OK;
864
865 case 'R': CASEMBC(0x154) CASEMBC(0x156) CASEMBC(0x158)
866 CASEMBC(0x1e58) CASEMBC(0x1e5e)
867 EMIT2('R'); EMITMBC(0x154) EMITMBC(0x156) EMITMBC(0x158)
868 EMITMBC(0x1e58) EMITMBC(0x1e5e)
869 return OK;
870
871 case 'S': CASEMBC(0x15a) CASEMBC(0x15c) CASEMBC(0x15e)
872 CASEMBC(0x160) CASEMBC(0x1e60)
873 EMIT2('S'); EMITMBC(0x15a) EMITMBC(0x15c) EMITMBC(0x15e)
874 EMITMBC(0x160) EMITMBC(0x1e60)
875 return OK;
876
877 case 'T': CASEMBC(0x162) CASEMBC(0x164) CASEMBC(0x166)
878 CASEMBC(0x1e6a) CASEMBC(0x1e6e)
879 EMIT2('T'); EMITMBC(0x162) EMITMBC(0x164) EMITMBC(0x166)
880 EMITMBC(0x1e6a) EMITMBC(0x1e6e)
881 return OK;
882
785 case 'U': case 0331: case 0332: case 0333: case 0334: 883 case 'U': case 0331: case 0332: case 0333: case 0334:
786 EMIT2('U'); EMIT2(0331); EMIT2(0332); 884 CASEMBC(0x168) CASEMBC(0x16a) CASEMBC(0x16c) CASEMBC(0x16e)
787 EMIT2(0333); EMIT2(0334); 885 CASEMBC(0x170) CASEMBC(0x172) CASEMBC(0x1af) CASEMBC(0x1d3)
886 CASEMBC(0x1ee6)
887 EMIT2('U'); EMIT2(0331); EMIT2(0332); EMIT2(0333);
888 EMIT2(0334); EMITMBC(0x168) EMITMBC(0x16a)
889 EMITMBC(0x16c) EMITMBC(0x16e) EMITMBC(0x170)
890 EMITMBC(0x172) EMITMBC(0x1af) EMITMBC(0x1d3)
891 EMITMBC(0x1ee6)
788 return OK; 892 return OK;
789 893
894 case 'V': CASEMBC(0x1e7c)
895 EMIT2('V'); EMITMBC(0x1e7c)
896 return OK;
897
898 case 'W': CASEMBC(0x174) CASEMBC(0x1e80) CASEMBC(0x1e82)
899 CASEMBC(0x1e84) CASEMBC(0x1e86)
900 EMIT2('W'); EMITMBC(0x174) EMITMBC(0x1e80) EMITMBC(0x1e82)
901 EMITMBC(0x1e84) EMITMBC(0x1e86)
902 return OK;
903
904 case 'X': CASEMBC(0x1e8a) CASEMBC(0x1e8c)
905 EMIT2('X'); EMITMBC(0x1e8a) EMITMBC(0x1e8c)
906 return OK;
907
790 case 'Y': case 0335: 908 case 'Y': case 0335:
791 EMIT2('Y'); EMIT2(0335); 909 CASEMBC(0x176) CASEMBC(0x178) CASEMBC(0x1e8e) CASEMBC(0x1ef2)
910 CASEMBC(0x1ef6) CASEMBC(0x1ef8)
911 EMIT2('Y'); EMIT2(0335); EMITMBC(0x176) EMITMBC(0x178)
912 EMITMBC(0x1e8e) EMITMBC(0x1ef2) EMITMBC(0x1ef6)
913 EMITMBC(0x1ef8)
914 return OK;
915
916 case 'Z': CASEMBC(0x179) CASEMBC(0x17b) CASEMBC(0x17d)
917 CASEMBC(0x1b5) CASEMBC(0x1e90) CASEMBC(0x1e94)
918 EMIT2('Z'); EMITMBC(0x179) EMITMBC(0x17b) EMITMBC(0x17d)
919 EMITMBC(0x1b5) EMITMBC(0x1e90) EMITMBC(0x1e94)
792 return OK; 920 return OK;
793 921
794 case 'a': case 0340: case 0341: case 0342: 922 case 'a': case 0340: case 0341: case 0342:
795 case 0343: case 0344: case 0345: 923 case 0343: case 0344: case 0345:
796 EMIT2('a'); EMIT2(0340); EMIT2(0341); 924 CASEMBC(0x101) CASEMBC(0x103) CASEMBC(0x105) CASEMBC(0x1ce)
797 EMIT2(0342); EMIT2(0343); EMIT2(0344); 925 CASEMBC(0x1df) CASEMBC(0x1e1) CASEMBC(0x1ea3)
798 EMIT2(0345); 926 EMIT2('a'); EMIT2(0340); EMIT2(0341); EMIT2(0342);
927 EMIT2(0343); EMIT2(0344); EMIT2(0345);
928 EMITMBC(0x101) EMITMBC(0x103) EMITMBC(0x105)
929 EMITMBC(0x1ce) EMITMBC(0x1df) EMITMBC(0x1e1)
930 EMITMBC(0x1ea3)
799 return OK; 931 return OK;
800 932
933 case 'b': CASEMBC(0x1e03) CASEMBC(0x1e07)
934 EMIT2('b'); EMITMBC(0x1e03) EMITMBC(0x1e07)
935 return OK;
936
801 case 'c': case 0347: 937 case 'c': case 0347:
802 EMIT2('c'); EMIT2(0347); 938 CASEMBC(0x107) CASEMBC(0x109) CASEMBC(0x10b) CASEMBC(0x10d)
939 EMIT2('c'); EMIT2(0347); EMITMBC(0x107) EMITMBC(0x109)
940 EMITMBC(0x10b) EMITMBC(0x10d)
803 return OK; 941 return OK;
804 942
943 case 'd': CASEMBC(0x10f) CASEMBC(0x111) CASEMBC(0x1d0b)
944 CASEMBC(0x1e11)
945 EMIT2('d'); EMITMBC(0x10f) EMITMBC(0x111) EMITMBC(0x1e0b)
946 EMITMBC(0x01e0f) EMITMBC(0x1e11)
947 return OK;
948
805 case 'e': case 0350: case 0351: case 0352: case 0353: 949 case 'e': case 0350: case 0351: case 0352: case 0353:
806 EMIT2('e'); EMIT2(0350); EMIT2(0351); 950 CASEMBC(0x113) CASEMBC(0x115) CASEMBC(0x117) CASEMBC(0x119)
807 EMIT2(0352); EMIT2(0353); 951 CASEMBC(0x11b) CASEMBC(0x1ebb) CASEMBC(0x1ebd)
952 EMIT2('e'); EMIT2(0350); EMIT2(0351); EMIT2(0352);
953 EMIT2(0353); EMITMBC(0x113) EMITMBC(0x115)
954 EMITMBC(0x117) EMITMBC(0x119) EMITMBC(0x11b)
955 EMITMBC(0x1ebb) EMITMBC(0x1ebd)
808 return OK; 956 return OK;
809 957
958 case 'f': CASEMBC(0x1e1f)
959 EMIT2('f'); EMITMBC(0x1e1f)
960 return OK;
961
962 case 'g': CASEMBC(0x11d) CASEMBC(0x11f) CASEMBC(0x121)
963 CASEMBC(0x123) CASEMBC(0x1e5) CASEMBC(0x1e7) CASEMBC(0x1f5)
964 CASEMBC(0x1e21)
965 EMIT2('g'); EMITMBC(0x11d) EMITMBC(0x11f) EMITMBC(0x121)
966 EMITMBC(0x123) EMITMBC(0x1e5) EMITMBC(0x1e7)
967 EMITMBC(0x1f5) EMITMBC(0x1e21)
968 return OK;
969
970 case 'h': CASEMBC(0x125) CASEMBC(0x127) CASEMBC(0x1e23)
971 CASEMBC(0x1e27) CASEMBC(0x1e29) CASEMBC(0x1e96)
972 EMIT2('h'); EMITMBC(0x125) EMITMBC(0x127) EMITMBC(0x1e23)
973 EMITMBC(0x1e27) EMITMBC(0x1e29) EMITMBC(0x1e96)
974 return OK;
975
810 case 'i': case 0354: case 0355: case 0356: case 0357: 976 case 'i': case 0354: case 0355: case 0356: case 0357:
811 EMIT2('i'); EMIT2(0354); EMIT2(0355); 977 CASEMBC(0x129) CASEMBC(0x12b) CASEMBC(0x12d) CASEMBC(0x12f)
812 EMIT2(0356); EMIT2(0357); 978 CASEMBC(0x1d0) CASEMBC(0x1ec9)
979 EMIT2('i'); EMIT2(0354); EMIT2(0355); EMIT2(0356);
980 EMIT2(0357); EMITMBC(0x129) EMITMBC(0x12b)
981 EMITMBC(0x12d) EMITMBC(0x12f) EMITMBC(0x1d0)
982 EMITMBC(0x1ec9)
813 return OK; 983 return OK;
814 984
985 case 'j': CASEMBC(0x135) CASEMBC(0x1f0)
986 EMIT2('j'); EMITMBC(0x135) EMITMBC(0x1f0)
987 return OK;
988
989 case 'k': CASEMBC(0x137) CASEMBC(0x1e9) CASEMBC(0x1e31)
990 CASEMBC(0x1e35)
991 EMIT2('k'); EMITMBC(0x137) EMITMBC(0x1e9) EMITMBC(0x1e31)
992 EMITMBC(0x1e35)
993 return OK;
994
995 case 'l': CASEMBC(0x13a) CASEMBC(0x13c) CASEMBC(0x13e)
996 CASEMBC(0x140) CASEMBC(0x142) CASEMBC(0x1e3b)
997 EMIT2('l'); EMITMBC(0x13a) EMITMBC(0x13c) EMITMBC(0x13e)
998 EMITMBC(0x140) EMITMBC(0x142) EMITMBC(0x1e3b)
999 return OK;
1000
1001 case 'm': CASEMBC(0x1e3f) CASEMBC(0x1e41)
1002 EMIT2('m'); EMITMBC(0x1e3f) EMITMBC(0x1e41)
1003 return OK;
1004
815 case 'n': case 0361: 1005 case 'n': case 0361:
816 EMIT2('n'); EMIT2(0361); 1006 CASEMBC(0x144) CASEMBC(0x146) CASEMBC(0x148) CASEMBC(0x149)
1007 CASEMBC(0x1e45) CASEMBC(0x1e49)
1008 EMIT2('n'); EMIT2(0361); EMITMBC(0x144) EMITMBC(0x146)
1009 EMITMBC(0x148) EMITMBC(0x149) EMITMBC(0x1e45)
1010 EMITMBC(0x1e49)
817 return OK; 1011 return OK;
818 1012
819 case 'o': case 0362: case 0363: case 0364: case 0365: 1013 case 'o': case 0362: case 0363: case 0364: case 0365:
820 case 0366: 1014 case 0366: case 0370:
821 EMIT2('o'); EMIT2(0362); EMIT2(0363); 1015 CASEMBC(0x14d) CASEMBC(0x14f) CASEMBC(0x151) CASEMBC(0x1a1)
822 EMIT2(0364); EMIT2(0365); EMIT2(0366); 1016 CASEMBC(0x1d2) CASEMBC(0x1eb) CASEMBC(0x1ed) CASEMBC(0x1ecf)
1017 EMIT2('o'); EMIT2(0362); EMIT2(0363); EMIT2(0364);
1018 EMIT2(0365); EMIT2(0366); EMIT2(0370);
1019 EMITMBC(0x14d) EMITMBC(0x14f) EMITMBC(0x151)
1020 EMITMBC(0x1a1) EMITMBC(0x1d2) EMITMBC(0x1eb)
1021 EMITMBC(0x1ed) EMITMBC(0x1ecf)
823 return OK; 1022 return OK;
824 1023
1024 case 'p': CASEMBC(0x1e55) CASEMBC(0x1e57)
1025 EMIT2('p'); EMITMBC(0x1e55) EMITMBC(0x1e57)
1026 return OK;
1027
1028 case 'r': CASEMBC(0x155) CASEMBC(0x157) CASEMBC(0x159)
1029 CASEMBC(0x1e59) CASEMBC(0x1e5f)
1030 EMIT2('r'); EMITMBC(0x155) EMITMBC(0x157) EMITMBC(0x159)
1031 EMITMBC(0x1e59) EMITMBC(0x1e5f)
1032 return OK;
1033
1034 case 's': CASEMBC(0x15b) CASEMBC(0x15d) CASEMBC(0x15f)
1035 CASEMBC(0x161) CASEMBC(0x1e61)
1036 EMIT2('s'); EMITMBC(0x15b) EMITMBC(0x15d) EMITMBC(0x15f)
1037 EMITMBC(0x161) EMITMBC(0x1e61)
1038 return OK;
1039
1040 case 't': CASEMBC(0x163) CASEMBC(0x165) CASEMBC(0x167)
1041 CASEMBC(0x1e6b) CASEMBC(0x1e6f) CASEMBC(0x1e97)
1042 EMIT2('t'); EMITMBC(0x163) EMITMBC(0x165) EMITMBC(0x167)
1043 EMITMBC(0x1e6b) EMITMBC(0x1e6f) EMITMBC(0x1e97)
1044 return OK;
1045
825 case 'u': case 0371: case 0372: case 0373: case 0374: 1046 case 'u': case 0371: case 0372: case 0373: case 0374:
826 EMIT2('u'); EMIT2(0371); EMIT2(0372); 1047 CASEMBC(0x169) CASEMBC(0x16b) CASEMBC(0x16d) CASEMBC(0x16f)
827 EMIT2(0373); EMIT2(0374); 1048 CASEMBC(0x171) CASEMBC(0x173) CASEMBC(0x1b0) CASEMBC(0x1d4)
1049 CASEMBC(0x1ee7)
1050 EMIT2('u'); EMIT2(0371); EMIT2(0372); EMIT2(0373);
1051 EMIT2(0374); EMITMBC(0x169) EMITMBC(0x16b)
1052 EMITMBC(0x16d) EMITMBC(0x16f) EMITMBC(0x171)
1053 EMITMBC(0x173) EMITMBC(0x1b0) EMITMBC(0x1d4)
1054 EMITMBC(0x1ee7)
828 return OK; 1055 return OK;
829 1056
1057 case 'v': CASEMBC(0x1e7d)
1058 EMIT2('v'); EMITMBC(0x1e7d)
1059 return OK;
1060
1061 case 'w': CASEMBC(0x175) CASEMBC(0x1e81) CASEMBC(0x1e83)
1062 CASEMBC(0x1e85) CASEMBC(0x1e87) CASEMBC(0x1e98)
1063 EMIT2('w'); EMITMBC(0x175) EMITMBC(0x1e81) EMITMBC(0x1e83)
1064 EMITMBC(0x1e85) EMITMBC(0x1e87) EMITMBC(0x1e98)
1065 return OK;
1066
1067 case 'x': CASEMBC(0x1e8b) CASEMBC(0x1e8d)
1068 EMIT2('x'); EMITMBC(0x1e8b) EMITMBC(0x1e8d)
1069 return OK;
1070
830 case 'y': case 0375: case 0377: 1071 case 'y': case 0375: case 0377:
831 EMIT2('y'); EMIT2(0375); EMIT2(0377); 1072 CASEMBC(0x177) CASEMBC(0x1e8f) CASEMBC(0x1e99)
1073 CASEMBC(0x1ef3) CASEMBC(0x1ef7) CASEMBC(0x1ef9)
1074 EMIT2('y'); EMIT2(0375); EMIT2(0377); EMITMBC(0x177)
1075 EMITMBC(0x1e8f) EMITMBC(0x1e99) EMITMBC(0x1ef3)
1076 EMITMBC(0x1ef7) EMITMBC(0x1ef9)
832 return OK; 1077 return OK;
833 1078
834 default: 1079 case 'z': CASEMBC(0x17a) CASEMBC(0x17c) CASEMBC(0x17e)
835 return FAIL; 1080 CASEMBC(0x1b6) CASEMBC(0x1e91) CASEMBC(0x1e95)
1081 EMIT2('z'); EMITMBC(0x17a) EMITMBC(0x17c) EMITMBC(0x17e)
1082 EMITMBC(0x1b6) EMITMBC(0x1e91) EMITMBC(0x1e95)
1083 return OK;
1084
1085 /* default: character itself */
836 } 1086 }
837 } 1087 }
838 1088
839 EMIT(c); 1089 EMIT2(c);
840 return OK; 1090 return OK;
841 #undef EMIT2 1091 #undef EMIT2
1092 #undef EMITMBC
842 } 1093 }
843 1094
844 /* 1095 /*
845 * Code to parse regular expression. 1096 * Code to parse regular expression.
846 * 1097 *