To: vim_dev@googlegroups.com Subject: Patch 8.2.2716 Fcc: outbox From: Bram Moolenaar Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ------------ Patch 8.2.2716 Problem: The equivalent class regexp is missing some characters. Solution: Update the list of equivalent characters. (Dominique Pellé, closes #8029) Files: src/regexp_bt.c, src/regexp_nfa.c, src/testdir/test_regexp_utf8.vim *** ../vim-8.2.2715/src/regexp_bt.c 2020-12-21 18:23:56.687287184 +0100 --- src/regexp_bt.c 2021-04-05 13:55:16.452666026 +0200 *************** *** 521,528 **** regcode += (*mb_char2bytes)(c, regcode); } - #define REGMBC(x) regmbc(x); - #define CASEMBC(x) case x: /* * Produce the bytes for equivalence class "c". --- 521,526 ---- *************** *** 554,849 **** switch (c) { // Do not use '\300' style, it results in a negative number. ! case 'A': case 0xc0: case 0xc1: case 0xc2: ! case 0xc3: case 0xc4: case 0xc5: ! CASEMBC(0x100) CASEMBC(0x102) CASEMBC(0x104) CASEMBC(0x1cd) ! CASEMBC(0x1de) CASEMBC(0x1e0) CASEMBC(0x1ea2) ! regmbc('A'); regmbc(0xc0); regmbc(0xc1); ! regmbc(0xc2); regmbc(0xc3); regmbc(0xc4); ! regmbc(0xc5); ! REGMBC(0x100) REGMBC(0x102) REGMBC(0x104) ! REGMBC(0x1cd) REGMBC(0x1de) REGMBC(0x1e0) ! REGMBC(0x1ea2) ! return; ! case 'B': CASEMBC(0x1e02) CASEMBC(0x1e06) ! regmbc('B'); REGMBC(0x1e02) REGMBC(0x1e06) return; case 'C': case 0xc7: ! CASEMBC(0x106) CASEMBC(0x108) CASEMBC(0x10a) CASEMBC(0x10c) regmbc('C'); regmbc(0xc7); ! REGMBC(0x106) REGMBC(0x108) REGMBC(0x10a) ! REGMBC(0x10c) ! return; ! case 'D': CASEMBC(0x10e) CASEMBC(0x110) CASEMBC(0x1e0a) ! CASEMBC(0x1e0e) CASEMBC(0x1e10) ! regmbc('D'); REGMBC(0x10e) REGMBC(0x110) ! REGMBC(0x1e0a) REGMBC(0x1e0e) REGMBC(0x1e10) return; case 'E': case 0xc8: case 0xc9: case 0xca: case 0xcb: ! CASEMBC(0x112) CASEMBC(0x114) CASEMBC(0x116) CASEMBC(0x118) ! CASEMBC(0x11a) CASEMBC(0x1eba) CASEMBC(0x1ebc) regmbc('E'); regmbc(0xc8); regmbc(0xc9); ! regmbc(0xca); regmbc(0xcb); ! REGMBC(0x112) REGMBC(0x114) REGMBC(0x116) ! REGMBC(0x118) REGMBC(0x11a) REGMBC(0x1eba) ! REGMBC(0x1ebc) ! return; ! case 'F': CASEMBC(0x1e1e) ! regmbc('F'); REGMBC(0x1e1e) ! return; ! case 'G': CASEMBC(0x11c) CASEMBC(0x11e) CASEMBC(0x120) ! CASEMBC(0x122) CASEMBC(0x1e4) CASEMBC(0x1e6) CASEMBC(0x1f4) ! CASEMBC(0x1e20) ! regmbc('G'); REGMBC(0x11c) REGMBC(0x11e) ! REGMBC(0x120) REGMBC(0x122) REGMBC(0x1e4) ! REGMBC(0x1e6) REGMBC(0x1f4) REGMBC(0x1e20) ! return; ! case 'H': CASEMBC(0x124) CASEMBC(0x126) CASEMBC(0x1e22) ! CASEMBC(0x1e26) CASEMBC(0x1e28) ! regmbc('H'); REGMBC(0x124) REGMBC(0x126) ! REGMBC(0x1e22) REGMBC(0x1e26) REGMBC(0x1e28) return; case 'I': case 0xcc: case 0xcd: case 0xce: case 0xcf: ! CASEMBC(0x128) CASEMBC(0x12a) CASEMBC(0x12c) CASEMBC(0x12e) ! CASEMBC(0x130) CASEMBC(0x1cf) CASEMBC(0x1ec8) regmbc('I'); regmbc(0xcc); regmbc(0xcd); ! regmbc(0xce); regmbc(0xcf); ! REGMBC(0x128) REGMBC(0x12a) REGMBC(0x12c) ! REGMBC(0x12e) REGMBC(0x130) REGMBC(0x1cf) ! REGMBC(0x1ec8) ! return; ! case 'J': CASEMBC(0x134) ! regmbc('J'); REGMBC(0x134) ! return; ! case 'K': CASEMBC(0x136) CASEMBC(0x1e8) CASEMBC(0x1e30) ! CASEMBC(0x1e34) ! regmbc('K'); REGMBC(0x136) REGMBC(0x1e8) ! REGMBC(0x1e30) REGMBC(0x1e34) ! return; ! case 'L': CASEMBC(0x139) CASEMBC(0x13b) CASEMBC(0x13d) ! CASEMBC(0x13f) CASEMBC(0x141) CASEMBC(0x1e3a) ! regmbc('L'); REGMBC(0x139) REGMBC(0x13b) ! REGMBC(0x13d) REGMBC(0x13f) REGMBC(0x141) ! REGMBC(0x1e3a) ! return; ! case 'M': CASEMBC(0x1e3e) CASEMBC(0x1e40) ! regmbc('M'); REGMBC(0x1e3e) REGMBC(0x1e40) return; case 'N': case 0xd1: ! CASEMBC(0x143) CASEMBC(0x145) CASEMBC(0x147) CASEMBC(0x1e44) ! CASEMBC(0x1e48) regmbc('N'); regmbc(0xd1); ! REGMBC(0x143) REGMBC(0x145) REGMBC(0x147) ! REGMBC(0x1e44) REGMBC(0x1e48) ! return; ! case 'O': case 0xd2: case 0xd3: case 0xd4: case 0xd5: ! case 0xd6: case 0xd8: ! CASEMBC(0x14c) CASEMBC(0x14e) CASEMBC(0x150) CASEMBC(0x1a0) ! CASEMBC(0x1d1) CASEMBC(0x1ea) CASEMBC(0x1ec) CASEMBC(0x1ece) ! regmbc('O'); regmbc(0xd2); regmbc(0xd3); ! regmbc(0xd4); regmbc(0xd5); regmbc(0xd6); ! regmbc(0xd8); ! REGMBC(0x14c) REGMBC(0x14e) REGMBC(0x150) ! REGMBC(0x1a0) REGMBC(0x1d1) REGMBC(0x1ea) ! REGMBC(0x1ec) REGMBC(0x1ece) ! return; ! case 'P': case 0x1e54: case 0x1e56: ! regmbc('P'); REGMBC(0x1e54) REGMBC(0x1e56) ! return; ! case 'R': CASEMBC(0x154) CASEMBC(0x156) CASEMBC(0x158) ! CASEMBC(0x1e58) CASEMBC(0x1e5e) ! regmbc('R'); REGMBC(0x154) REGMBC(0x156) REGMBC(0x158) ! REGMBC(0x1e58) REGMBC(0x1e5e) ! return; ! case 'S': CASEMBC(0x15a) CASEMBC(0x15c) CASEMBC(0x15e) ! CASEMBC(0x160) CASEMBC(0x1e60) ! regmbc('S'); REGMBC(0x15a) REGMBC(0x15c) ! REGMBC(0x15e) REGMBC(0x160) REGMBC(0x1e60) ! return; ! case 'T': CASEMBC(0x162) CASEMBC(0x164) CASEMBC(0x166) ! CASEMBC(0x1e6a) CASEMBC(0x1e6e) ! regmbc('T'); REGMBC(0x162) REGMBC(0x164) ! REGMBC(0x166) REGMBC(0x1e6a) REGMBC(0x1e6e) return; case 'U': case 0xd9: case 0xda: case 0xdb: case 0xdc: ! CASEMBC(0x168) CASEMBC(0x16a) CASEMBC(0x16c) CASEMBC(0x16e) ! CASEMBC(0x170) CASEMBC(0x172) CASEMBC(0x1af) CASEMBC(0x1d3) ! CASEMBC(0x1ee6) regmbc('U'); regmbc(0xd9); regmbc(0xda); ! regmbc(0xdb); regmbc(0xdc); ! REGMBC(0x168) REGMBC(0x16a) REGMBC(0x16c) ! REGMBC(0x16e) REGMBC(0x170) REGMBC(0x172) ! REGMBC(0x1af) REGMBC(0x1d3) REGMBC(0x1ee6) ! return; ! case 'V': CASEMBC(0x1e7c) ! regmbc('V'); REGMBC(0x1e7c) ! return; ! case 'W': CASEMBC(0x174) CASEMBC(0x1e80) CASEMBC(0x1e82) ! CASEMBC(0x1e84) CASEMBC(0x1e86) ! regmbc('W'); REGMBC(0x174) REGMBC(0x1e80) ! REGMBC(0x1e82) REGMBC(0x1e84) REGMBC(0x1e86) return; ! case 'X': CASEMBC(0x1e8a) CASEMBC(0x1e8c) ! regmbc('X'); REGMBC(0x1e8a) REGMBC(0x1e8c) return; case 'Y': case 0xdd: ! CASEMBC(0x176) CASEMBC(0x178) CASEMBC(0x1e8e) CASEMBC(0x1ef2) ! CASEMBC(0x1ef6) CASEMBC(0x1ef8) ! regmbc('Y'); regmbc(0xdd); ! REGMBC(0x176) REGMBC(0x178) REGMBC(0x1e8e) ! REGMBC(0x1ef2) REGMBC(0x1ef6) REGMBC(0x1ef8) ! return; ! case 'Z': CASEMBC(0x179) CASEMBC(0x17b) CASEMBC(0x17d) ! CASEMBC(0x1b5) CASEMBC(0x1e90) CASEMBC(0x1e94) ! regmbc('Z'); REGMBC(0x179) REGMBC(0x17b) ! REGMBC(0x17d) REGMBC(0x1b5) REGMBC(0x1e90) ! REGMBC(0x1e94) return; case 'a': case 0xe0: case 0xe1: case 0xe2: ! case 0xe3: case 0xe4: case 0xe5: ! CASEMBC(0x101) CASEMBC(0x103) CASEMBC(0x105) CASEMBC(0x1ce) ! CASEMBC(0x1df) CASEMBC(0x1e1) CASEMBC(0x1ea3) regmbc('a'); regmbc(0xe0); regmbc(0xe1); regmbc(0xe2); regmbc(0xe3); regmbc(0xe4); ! regmbc(0xe5); ! REGMBC(0x101) REGMBC(0x103) REGMBC(0x105) ! REGMBC(0x1ce) REGMBC(0x1df) REGMBC(0x1e1) ! REGMBC(0x1ea3) ! return; ! case 'b': CASEMBC(0x1e03) CASEMBC(0x1e07) ! regmbc('b'); REGMBC(0x1e03) REGMBC(0x1e07) return; case 'c': case 0xe7: ! CASEMBC(0x107) CASEMBC(0x109) CASEMBC(0x10b) CASEMBC(0x10d) ! regmbc('c'); regmbc(0xe7); ! REGMBC(0x107) REGMBC(0x109) REGMBC(0x10b) ! REGMBC(0x10d) ! return; ! case 'd': CASEMBC(0x10f) CASEMBC(0x111) CASEMBC(0x1e0b) ! CASEMBC(0x1e0f) CASEMBC(0x1e11) ! regmbc('d'); REGMBC(0x10f) REGMBC(0x111) ! REGMBC(0x1e0b) REGMBC(0x1e0f) REGMBC(0x1e11) return; case 'e': case 0xe8: case 0xe9: case 0xea: case 0xeb: ! CASEMBC(0x113) CASEMBC(0x115) CASEMBC(0x117) CASEMBC(0x119) ! CASEMBC(0x11b) CASEMBC(0x1ebb) CASEMBC(0x1ebd) regmbc('e'); regmbc(0xe8); regmbc(0xe9); ! regmbc(0xea); regmbc(0xeb); ! REGMBC(0x113) REGMBC(0x115) REGMBC(0x117) ! REGMBC(0x119) REGMBC(0x11b) REGMBC(0x1ebb) ! REGMBC(0x1ebd) ! return; ! case 'f': CASEMBC(0x1e1f) ! regmbc('f'); REGMBC(0x1e1f) ! return; ! case 'g': CASEMBC(0x11d) CASEMBC(0x11f) CASEMBC(0x121) ! CASEMBC(0x123) CASEMBC(0x1e5) CASEMBC(0x1e7) CASEMBC(0x1f5) ! CASEMBC(0x1e21) ! regmbc('g'); REGMBC(0x11d) REGMBC(0x11f) ! REGMBC(0x121) REGMBC(0x123) REGMBC(0x1e5) ! REGMBC(0x1e7) REGMBC(0x1f5) REGMBC(0x1e21) ! return; ! case 'h': CASEMBC(0x125) CASEMBC(0x127) CASEMBC(0x1e23) ! CASEMBC(0x1e27) CASEMBC(0x1e29) CASEMBC(0x1e96) ! regmbc('h'); REGMBC(0x125) REGMBC(0x127) ! REGMBC(0x1e23) REGMBC(0x1e27) REGMBC(0x1e29) ! REGMBC(0x1e96) return; case 'i': case 0xec: case 0xed: case 0xee: case 0xef: ! CASEMBC(0x129) CASEMBC(0x12b) CASEMBC(0x12d) CASEMBC(0x12f) ! CASEMBC(0x1d0) CASEMBC(0x1ec9) regmbc('i'); regmbc(0xec); regmbc(0xed); ! regmbc(0xee); regmbc(0xef); ! REGMBC(0x129) REGMBC(0x12b) REGMBC(0x12d) ! REGMBC(0x12f) REGMBC(0x1d0) REGMBC(0x1ec9) ! return; ! case 'j': CASEMBC(0x135) CASEMBC(0x1f0) ! regmbc('j'); REGMBC(0x135) REGMBC(0x1f0) ! return; ! case 'k': CASEMBC(0x137) CASEMBC(0x1e9) CASEMBC(0x1e31) ! CASEMBC(0x1e35) ! regmbc('k'); REGMBC(0x137) REGMBC(0x1e9) ! REGMBC(0x1e31) REGMBC(0x1e35) ! return; ! case 'l': CASEMBC(0x13a) CASEMBC(0x13c) CASEMBC(0x13e) ! CASEMBC(0x140) CASEMBC(0x142) CASEMBC(0x1e3b) ! regmbc('l'); REGMBC(0x13a) REGMBC(0x13c) ! REGMBC(0x13e) REGMBC(0x140) REGMBC(0x142) ! REGMBC(0x1e3b) ! return; ! case 'm': CASEMBC(0x1e3f) CASEMBC(0x1e41) ! regmbc('m'); REGMBC(0x1e3f) REGMBC(0x1e41) ! return; ! case 'n': case 0xf1: ! CASEMBC(0x144) CASEMBC(0x146) CASEMBC(0x148) CASEMBC(0x149) ! CASEMBC(0x1e45) CASEMBC(0x1e49) ! regmbc('n'); regmbc(0xf1); ! REGMBC(0x144) REGMBC(0x146) REGMBC(0x148) ! REGMBC(0x149) REGMBC(0x1e45) REGMBC(0x1e49) return; case 'o': case 0xf2: case 0xf3: case 0xf4: case 0xf5: ! case 0xf6: case 0xf8: ! CASEMBC(0x14d) CASEMBC(0x14f) CASEMBC(0x151) CASEMBC(0x1a1) ! CASEMBC(0x1d2) CASEMBC(0x1eb) CASEMBC(0x1ed) CASEMBC(0x1ecf) regmbc('o'); regmbc(0xf2); regmbc(0xf3); regmbc(0xf4); regmbc(0xf5); regmbc(0xf6); ! regmbc(0xf8); ! REGMBC(0x14d) REGMBC(0x14f) REGMBC(0x151) ! REGMBC(0x1a1) REGMBC(0x1d2) REGMBC(0x1eb) ! REGMBC(0x1ed) REGMBC(0x1ecf) ! return; ! case 'p': CASEMBC(0x1e55) CASEMBC(0x1e57) ! regmbc('p'); REGMBC(0x1e55) REGMBC(0x1e57) ! return; ! case 'r': CASEMBC(0x155) CASEMBC(0x157) CASEMBC(0x159) ! CASEMBC(0x1e59) CASEMBC(0x1e5f) ! regmbc('r'); REGMBC(0x155) REGMBC(0x157) REGMBC(0x159) ! REGMBC(0x1e59) REGMBC(0x1e5f) ! return; ! case 's': CASEMBC(0x15b) CASEMBC(0x15d) CASEMBC(0x15f) ! CASEMBC(0x161) CASEMBC(0x1e61) ! regmbc('s'); REGMBC(0x15b) REGMBC(0x15d) ! REGMBC(0x15f) REGMBC(0x161) REGMBC(0x1e61) ! return; ! case 't': CASEMBC(0x163) CASEMBC(0x165) CASEMBC(0x167) ! CASEMBC(0x1e6b) CASEMBC(0x1e6f) CASEMBC(0x1e97) ! regmbc('t'); REGMBC(0x163) REGMBC(0x165) REGMBC(0x167) ! REGMBC(0x1e6b) REGMBC(0x1e6f) REGMBC(0x1e97) return; case 'u': case 0xf9: case 0xfa: case 0xfb: case 0xfc: ! CASEMBC(0x169) CASEMBC(0x16b) CASEMBC(0x16d) CASEMBC(0x16f) ! CASEMBC(0x171) CASEMBC(0x173) CASEMBC(0x1b0) CASEMBC(0x1d4) ! CASEMBC(0x1ee7) regmbc('u'); regmbc(0xf9); regmbc(0xfa); ! regmbc(0xfb); regmbc(0xfc); ! REGMBC(0x169) REGMBC(0x16b) REGMBC(0x16d) ! REGMBC(0x16f) REGMBC(0x171) REGMBC(0x173) ! REGMBC(0x1b0) REGMBC(0x1d4) REGMBC(0x1ee7) ! return; ! case 'v': CASEMBC(0x1e7d) ! regmbc('v'); REGMBC(0x1e7d) ! return; ! case 'w': CASEMBC(0x175) CASEMBC(0x1e81) CASEMBC(0x1e83) ! CASEMBC(0x1e85) CASEMBC(0x1e87) CASEMBC(0x1e98) ! regmbc('w'); REGMBC(0x175) REGMBC(0x1e81) ! REGMBC(0x1e83) REGMBC(0x1e85) REGMBC(0x1e87) ! REGMBC(0x1e98) ! return; ! case 'x': CASEMBC(0x1e8b) CASEMBC(0x1e8d) ! regmbc('x'); REGMBC(0x1e8b) REGMBC(0x1e8d) ! return; ! case 'y': case 0xfd: case 0xff: ! CASEMBC(0x177) CASEMBC(0x1e8f) CASEMBC(0x1e99) ! CASEMBC(0x1ef3) CASEMBC(0x1ef7) CASEMBC(0x1ef9) regmbc('y'); regmbc(0xfd); regmbc(0xff); ! REGMBC(0x177) REGMBC(0x1e8f) REGMBC(0x1e99) ! REGMBC(0x1ef3) REGMBC(0x1ef7) REGMBC(0x1ef9) ! return; ! case 'z': CASEMBC(0x17a) CASEMBC(0x17c) CASEMBC(0x17e) ! CASEMBC(0x1b6) CASEMBC(0x1e91) CASEMBC(0x1e95) ! regmbc('z'); REGMBC(0x17a) REGMBC(0x17c) ! REGMBC(0x17e) REGMBC(0x1b6) REGMBC(0x1e91) ! REGMBC(0x1e95) return; } #endif --- 552,1015 ---- switch (c) { // Do not use '\300' style, it results in a negative number. ! case 'A': case 0xc0: case 0xc1: case 0xc2: case 0xc3: case 0xc4: ! case 0xc5: case 0x100: case 0x102: case 0x104: case 0x1cd: ! case 0x1de: case 0x1e0: case 0x1fa: case 0x202: case 0x226: ! case 0x23a: case 0x1e00: case 0x1ea0: case 0x1ea2: case 0x1ea4: ! case 0x1ea6: case 0x1ea8: case 0x1eaa: case 0x1eac: case 0x1eae: ! case 0x1eb0: case 0x1eb2: case 0x1eb4: case 0x1eb6: ! regmbc('A'); regmbc(0xc0); regmbc(0xc1); regmbc(0xc2); ! regmbc(0xc3); regmbc(0xc4); regmbc(0xc5); ! regmbc(0x100); regmbc(0x102); regmbc(0x104); ! regmbc(0x1cd); regmbc(0x1de); regmbc(0x1e0); ! regmbc(0x1fa); regmbc(0x202); regmbc(0x226); ! regmbc(0x23a); regmbc(0x1e00); regmbc(0x1ea0); ! regmbc(0x1ea2); regmbc(0x1ea4); regmbc(0x1ea6); ! regmbc(0x1ea8); regmbc(0x1eaa); regmbc(0x1eac); ! regmbc(0x1eae); regmbc(0x1eb0); regmbc(0x1eb2); ! regmbc(0x1eb4); regmbc(0x1eb6); ! return; ! case 'B': case 0x181: case 0x243: case 0x1e02: ! case 0x1e04: case 0x1e06: ! regmbc('B'); ! regmbc(0x181); regmbc(0x243); regmbc(0x1e02); ! regmbc(0x1e04); regmbc(0x1e06); return; case 'C': case 0xc7: ! case 0x106: case 0x108: case 0x10a: case 0x10c: case 0x187: ! case 0x23b: case 0x1e08: case 0xa792: regmbc('C'); regmbc(0xc7); ! regmbc(0x106); regmbc(0x108); regmbc(0x10a); ! regmbc(0x10c); regmbc(0x187); regmbc(0x23b); ! regmbc(0x1e08); regmbc(0xa792); ! return; ! case 'D': case 0x10e: case 0x110: case 0x18a: ! case 0x1e0a: case 0x1e0c: case 0x1e0e: case 0x1e10: ! case 0x1e12: ! regmbc('D'); regmbc(0x10e); regmbc(0x110); ! regmbc(0x18a); regmbc(0x1e0a); regmbc(0x1e0c); ! regmbc(0x1e0e); regmbc(0x1e10); regmbc(0x1e12); return; case 'E': case 0xc8: case 0xc9: case 0xca: case 0xcb: ! case 0x112: case 0x114: case 0x116: case 0x118: case 0x11a: ! case 0x204: case 0x206: case 0x228: case 0x246: case 0x1e14: ! case 0x1e16: case 0x1e18: case 0x1e1a: case 0x1e1c: ! case 0x1eb8: case 0x1eba: case 0x1ebc: case 0x1ebe: ! case 0x1ec0: case 0x1ec2: case 0x1ec4: case 0x1ec6: regmbc('E'); regmbc(0xc8); regmbc(0xc9); ! regmbc(0xca); regmbc(0xcb); regmbc(0x112); ! regmbc(0x114); regmbc(0x116); regmbc(0x118); ! regmbc(0x11a); regmbc(0x204); regmbc(0x206); ! regmbc(0x228); regmbc(0x246); regmbc(0x1e14); ! regmbc(0x1e16); regmbc(0x1e18); regmbc(0x1e1a); ! regmbc(0x1e1c); regmbc(0x1eb8); regmbc(0x1eba); ! regmbc(0x1ebc); regmbc(0x1ebe); regmbc(0x1ec0); ! regmbc(0x1ec2); regmbc(0x1ec4); regmbc(0x1ec6); ! return; ! case 'F': case 0x191: case 0x1e1e: case 0xa798: ! regmbc('F'); regmbc(0x191); regmbc(0x1e1e); ! regmbc(0xa798); ! return; ! case 'G': case 0x11c: case 0x11e: case 0x120: ! case 0x122: case 0x193: case 0x1e4: case 0x1e6: ! case 0x1f4: case 0x1e20: case 0xa7a0: ! regmbc('G'); regmbc(0x11c); regmbc(0x11e); ! regmbc(0x120); regmbc(0x122); regmbc(0x193); ! regmbc(0x1e4); regmbc(0x1e6); regmbc(0x1f4); ! regmbc(0x1e20); regmbc(0xa7a0); ! return; ! case 'H': case 0x124: case 0x126: case 0x21e: ! case 0x1e22: case 0x1e24: case 0x1e26: ! case 0x1e28: case 0x1e2a: case 0x2c67: ! regmbc('H'); regmbc(0x124); regmbc(0x126); ! regmbc(0x21e); regmbc(0x1e22); regmbc(0x1e24); ! regmbc(0x1e26); regmbc(0x1e28); regmbc(0x1e2a); ! regmbc(0x2c67); return; case 'I': case 0xcc: case 0xcd: case 0xce: case 0xcf: ! case 0x128: case 0x12a: case 0x12c: case 0x12e: ! case 0x130: case 0x197: case 0x1cf: case 0x208: ! case 0x20a: case 0x1e2c: case 0x1e2e: case 0x1ec8: ! case 0x1eca: regmbc('I'); regmbc(0xcc); regmbc(0xcd); ! regmbc(0xce); regmbc(0xcf); regmbc(0x128); ! regmbc(0x12a); regmbc(0x12c); regmbc(0x12e); ! regmbc(0x130); regmbc(0x197); regmbc(0x1cf); ! regmbc(0x208); regmbc(0x20a); regmbc(0x1e2c); ! regmbc(0x1e2e); regmbc(0x1ec8); regmbc(0x1eca); ! return; ! case 'J': case 0x134: case 0x248: ! regmbc('J'); regmbc(0x134); regmbc(0x248); ! return; ! case 'K': case 0x136: case 0x198: case 0x1e8: case 0x1e30: ! case 0x1e32: case 0x1e34: case 0x2c69: case 0xa740: ! regmbc('K'); regmbc(0x136); regmbc(0x198); ! regmbc(0x1e8); regmbc(0x1e30); regmbc(0x1e32); ! regmbc(0x1e34); regmbc(0x2c69); regmbc(0xa740); ! return; ! case 'L': case 0x139: case 0x13b: case 0x13d: case 0x13f: ! case 0x141: case 0x23d: case 0x1e36: case 0x1e38: ! case 0x1e3a: case 0x1e3c: case 0x2c60: ! regmbc('L'); regmbc(0x139); regmbc(0x13b); ! regmbc(0x13d); regmbc(0x13f); regmbc(0x141); ! regmbc(0x23d); regmbc(0x1e36); regmbc(0x1e38); ! regmbc(0x1e3a); regmbc(0x1e3c); regmbc(0x2c60); ! return; ! case 'M': case 0x1e3e: case 0x1e40: case 0x1e42: ! regmbc('M'); regmbc(0x1e3e); regmbc(0x1e40); ! regmbc(0x1e42); return; case 'N': case 0xd1: ! case 0x143: case 0x145: case 0x147: case 0x1f8: ! case 0x1e44: case 0x1e46: case 0x1e48: case 0x1e4a: ! case 0xa7a4: regmbc('N'); regmbc(0xd1); ! regmbc(0x143); regmbc(0x145); regmbc(0x147); ! regmbc(0x1f8); regmbc(0x1e44); regmbc(0x1e46); ! regmbc(0x1e48); regmbc(0x1e4a); regmbc(0xa7a4); ! return; ! case 'O': case 0xd2: case 0xd3: case 0xd4: case 0xd5: case 0xd6: ! case 0xd8: case 0x14c: case 0x14e: case 0x150: case 0x19f: ! case 0x1a0: case 0x1d1: case 0x1ea: case 0x1ec: case 0x1fe: ! case 0x20c: case 0x20e: case 0x22a: case 0x22c: case 0x22e: ! case 0x230: case 0x1e4c: case 0x1e4e: case 0x1e50: case 0x1e52: ! case 0x1ecc: case 0x1ece: case 0x1ed0: case 0x1ed2: case 0x1ed4: ! case 0x1ed6: case 0x1ed8: case 0x1eda: case 0x1edc: case 0x1ede: ! case 0x1ee0: case 0x1ee2: ! regmbc('O'); regmbc(0xd2); regmbc(0xd3); regmbc(0xd4); ! regmbc(0xd5); regmbc(0xd6); regmbc(0xd8); ! regmbc(0x14c); regmbc(0x14e); regmbc(0x150); ! regmbc(0x19f); regmbc(0x1a0); regmbc(0x1d1); ! regmbc(0x1ea); regmbc(0x1ec); regmbc(0x1fe); ! regmbc(0x20c); regmbc(0x20e); regmbc(0x22a); ! regmbc(0x22c); regmbc(0x22e); regmbc(0x230); ! regmbc(0x1e4c); regmbc(0x1e4e); regmbc(0x1e50); ! regmbc(0x1e52); regmbc(0x1ecc); regmbc(0x1ece); ! regmbc(0x1ed0); regmbc(0x1ed2); regmbc(0x1ed4); ! regmbc(0x1ed6); regmbc(0x1ed8); regmbc(0x1eda); ! regmbc(0x1edc); regmbc(0x1ede); regmbc(0x1ee0); ! regmbc(0x1ee2); ! return; ! case 'P': case 0x1a4: case 0x1e54: case 0x1e56: case 0x2c63: ! regmbc('P'); regmbc(0x1a4); regmbc(0x1e54); ! regmbc(0x1e56); regmbc(0x2c63); ! return; ! case 'Q': case 0x24a: ! regmbc('Q'); regmbc(0x24a); ! return; ! case 'R': case 0x154: case 0x156: case 0x158: case 0x210: ! case 0x212: case 0x24c: case 0x1e58: case 0x1e5a: ! case 0x1e5c: case 0x1e5e: case 0x2c64: case 0xa7a6: ! regmbc('R'); regmbc(0x154); regmbc(0x156); ! regmbc(0x210); regmbc(0x212); regmbc(0x158); ! regmbc(0x24c); regmbc(0x1e58); regmbc(0x1e5a); ! regmbc(0x1e5c); regmbc(0x1e5e); regmbc(0x2c64); ! regmbc(0xa7a6); ! return; ! case 'S': case 0x15a: case 0x15c: case 0x15e: case 0x160: ! case 0x218: case 0x1e60: case 0x1e62: case 0x1e64: ! case 0x1e66: case 0x1e68: case 0x2c7e: case 0xa7a8: ! regmbc('S'); regmbc(0x15a); regmbc(0x15c); ! regmbc(0x15e); regmbc(0x160); regmbc(0x218); ! regmbc(0x1e60); regmbc(0x1e62); regmbc(0x1e64); ! regmbc(0x1e66); regmbc(0x1e68); regmbc(0x2c7e); ! regmbc(0xa7a8); ! return; ! case 'T': case 0x162: case 0x164: case 0x166: case 0x1ac: ! case 0x1ae: case 0x21a: case 0x23e: case 0x1e6a: case 0x1e6c: ! case 0x1e6e: case 0x1e70: ! regmbc('T'); regmbc(0x162); regmbc(0x164); ! regmbc(0x166); regmbc(0x1ac); regmbc(0x23e); ! regmbc(0x1ae); regmbc(0x21a); regmbc(0x1e6a); ! regmbc(0x1e6c); regmbc(0x1e6e); regmbc(0x1e70); return; case 'U': case 0xd9: case 0xda: case 0xdb: case 0xdc: ! case 0x168: case 0x16a: case 0x16c: case 0x16e: ! case 0x170: case 0x172: case 0x1af: case 0x1d3: ! case 0x1d5: case 0x1d7: case 0x1d9: case 0x1db: ! case 0x214: case 0x216: case 0x244: case 0x1e72: ! case 0x1e74: case 0x1e76: case 0x1e78: case 0x1e7a: ! case 0x1ee4: case 0x1ee6: case 0x1ee8: case 0x1eea: ! case 0x1eec: case 0x1eee: case 0x1ef0: regmbc('U'); regmbc(0xd9); regmbc(0xda); ! regmbc(0xdb); regmbc(0xdc); regmbc(0x168); ! regmbc(0x16a); regmbc(0x16c); regmbc(0x16e); ! regmbc(0x170); regmbc(0x172); regmbc(0x1af); ! regmbc(0x1d3); regmbc(0x1d5); regmbc(0x1d7); ! regmbc(0x1d9); regmbc(0x1db); regmbc(0x214); ! regmbc(0x216); regmbc(0x244); regmbc(0x1e72); ! regmbc(0x1e74); regmbc(0x1e76); regmbc(0x1e78); ! regmbc(0x1e7a); regmbc(0x1ee4); regmbc(0x1ee6); ! regmbc(0x1ee8); regmbc(0x1eea); regmbc(0x1eec); ! regmbc(0x1eee); regmbc(0x1ef0); ! return; ! case 'V': case 0x1b2: case 0x1e7c: case 0x1e7e: ! regmbc('V'); regmbc(0x1b2); regmbc(0x1e7c); ! regmbc(0x1e7e); ! return; ! case 'W': case 0x174: case 0x1e80: case 0x1e82: ! case 0x1e84: case 0x1e86: case 0x1e88: ! regmbc('W'); regmbc(0x174); regmbc(0x1e80); ! regmbc(0x1e82); regmbc(0x1e84); regmbc(0x1e86); ! regmbc(0x1e88); return; ! case 'X': case 0x1e8a: case 0x1e8c: ! regmbc('X'); regmbc(0x1e8a); regmbc(0x1e8c); return; case 'Y': case 0xdd: ! case 0x176: case 0x178: case 0x1b3: case 0x232: case 0x24e: ! case 0x1e8e: case 0x1ef2: case 0x1ef6: case 0x1ef4: case 0x1ef8: ! regmbc('Y'); regmbc(0xdd); regmbc(0x176); ! regmbc(0x178); regmbc(0x1b3); regmbc(0x232); ! regmbc(0x24e); regmbc(0x1e8e); regmbc(0x1ef2); ! regmbc(0x1ef4); regmbc(0x1ef6); regmbc(0x1ef8); ! return; ! case 'Z': case 0x179: case 0x17b: case 0x17d: case 0x1b5: ! case 0x1e90: case 0x1e92: case 0x1e94: case 0x2c6b: ! regmbc('Z'); regmbc(0x179); regmbc(0x17b); ! regmbc(0x17d); regmbc(0x1b5); regmbc(0x1e90); ! regmbc(0x1e92); regmbc(0x1e94); regmbc(0x2c6b); return; case 'a': case 0xe0: case 0xe1: case 0xe2: ! case 0xe3: case 0xe4: case 0xe5: case 0x101: case 0x103: ! case 0x105: case 0x1ce: case 0x1df: case 0x1e1: case 0x1fb: ! case 0x201: case 0x203: case 0x227: case 0x1d8f: case 0x1e01: ! case 0x1e9a: case 0x1ea1: case 0x1ea3: case 0x1ea5: ! case 0x1ea7: case 0x1ea9: case 0x1eab: case 0x1ead: ! case 0x1eaf: case 0x1eb1: case 0x1eb3: case 0x1eb5: ! case 0x1eb7: case 0x2c65: regmbc('a'); regmbc(0xe0); regmbc(0xe1); regmbc(0xe2); regmbc(0xe3); regmbc(0xe4); ! regmbc(0xe5); regmbc(0x101); regmbc(0x103); ! regmbc(0x105); regmbc(0x1ce); regmbc(0x1df); ! regmbc(0x1e1); regmbc(0x1fb); regmbc(0x201); ! regmbc(0x203); regmbc(0x227); regmbc(0x1d8f); ! regmbc(0x1e01); regmbc(0x1e9a); regmbc(0x1ea1); ! regmbc(0x1ea3); regmbc(0x1ea5); regmbc(0x1ea7); ! regmbc(0x1ea9); regmbc(0x1eab); regmbc(0x1ead); ! regmbc(0x1eaf); regmbc(0x1eb1); regmbc(0x1eb3); ! regmbc(0x1eb5); regmbc(0x1eb7); regmbc(0x2c65); ! return; ! case 'b': case 0x180: case 0x253: case 0x1d6c: case 0x1d80: ! case 0x1e03: case 0x1e05: case 0x1e07: ! regmbc('b'); ! regmbc(0x180); regmbc(0x253); regmbc(0x1d6c); ! regmbc(0x1d80); regmbc(0x1e03); regmbc(0x1e05); ! regmbc(0x1e07); return; case 'c': case 0xe7: ! case 0x107: case 0x109: case 0x10b: case 0x10d: case 0x188: ! case 0x23c: case 0x1e09: case 0xa793: case 0xa794: ! regmbc('c'); regmbc(0xe7); regmbc(0x107); ! regmbc(0x109); regmbc(0x10b); regmbc(0x10d); ! regmbc(0x188); regmbc(0x23c); regmbc(0x1e09); ! regmbc(0xa793); regmbc(0xa794); ! return; ! case 'd': case 0x10f: case 0x111: case 0x257: case 0x1d6d: ! case 0x1d81: case 0x1d91: case 0x1e0b: case 0x1e0d: ! case 0x1e0f: case 0x1e11: case 0x1e13: ! regmbc('d'); regmbc(0x10f); regmbc(0x111); ! regmbc(0x257); regmbc(0x1d6d); regmbc(0x1d81); ! regmbc(0x1d91); regmbc(0x1e0b); regmbc(0x1e0d); ! regmbc(0x1e0f); regmbc(0x1e11); regmbc(0x1e13); return; case 'e': case 0xe8: case 0xe9: case 0xea: case 0xeb: ! case 0x113: case 0x115: case 0x117: case 0x119: ! case 0x11b: case 0x205: case 0x207: case 0x229: ! case 0x247: case 0x1d92: case 0x1e15: case 0x1e17: ! case 0x1e19: case 0x1e1b: case 0x1eb9: case 0x1ebb: ! case 0x1e1d: case 0x1ebd: case 0x1ebf: case 0x1ec1: ! case 0x1ec3: case 0x1ec5: case 0x1ec7: regmbc('e'); regmbc(0xe8); regmbc(0xe9); ! regmbc(0xea); regmbc(0xeb); regmbc(0x113); ! regmbc(0x115); regmbc(0x117); regmbc(0x119); ! regmbc(0x11b); regmbc(0x205); regmbc(0x207); ! regmbc(0x229); regmbc(0x247); regmbc(0x1d92); ! regmbc(0x1e15); regmbc(0x1e17); regmbc(0x1e19); ! regmbc(0x1e1b); regmbc(0x1e1d); regmbc(0x1eb9); ! regmbc(0x1ebb); regmbc(0x1ebd); regmbc(0x1ebf); ! regmbc(0x1ec1); regmbc(0x1ec3); regmbc(0x1ec5); ! regmbc(0x1ec7); ! return; ! case 'f': case 0x192: case 0x1d6e: case 0x1d82: ! case 0x1e1f: case 0xa799: ! regmbc('f'); regmbc(0x192); regmbc(0x1d6e); ! regmbc(0x1d82); regmbc(0x1e1f); regmbc(0xa799); ! return; ! case 'g': case 0x11d: case 0x11f: case 0x121: case 0x123: ! case 0x1e5: case 0x1e7: case 0x260: case 0x1f5: case 0x1d83: ! case 0x1e21: case 0xa7a1: ! regmbc('g'); regmbc(0x11d); regmbc(0x11f); ! regmbc(0x121); regmbc(0x123); regmbc(0x1e5); ! regmbc(0x1e7); regmbc(0x1f5); regmbc(0x260); ! regmbc(0x1d83); regmbc(0x1e21); regmbc(0xa7a1); ! return; ! case 'h': case 0x125: case 0x127: case 0x21f: case 0x1e23: ! case 0x1e25: case 0x1e27: case 0x1e29: case 0x1e2b: ! case 0x1e96: case 0x2c68: case 0xa795: ! regmbc('h'); regmbc(0x125); regmbc(0x127); ! regmbc(0x21f); regmbc(0x1e23); regmbc(0x1e25); ! regmbc(0x1e27); regmbc(0x1e29); regmbc(0x1e2b); ! regmbc(0x1e96); regmbc(0x2c68); regmbc(0xa795); return; case 'i': case 0xec: case 0xed: case 0xee: case 0xef: ! case 0x129: case 0x12b: case 0x12d: case 0x12f: ! case 0x1d0: case 0x209: case 0x20b: case 0x268: ! case 0x1d96: case 0x1e2d: case 0x1e2f: case 0x1ec9: ! case 0x1ecb: regmbc('i'); regmbc(0xec); regmbc(0xed); ! regmbc(0xee); regmbc(0xef); regmbc(0x129); ! regmbc(0x12b); regmbc(0x12d); regmbc(0x12f); ! regmbc(0x1d0); regmbc(0x209); regmbc(0x20b); ! regmbc(0x268); regmbc(0x1d96); regmbc(0x1e2d); ! regmbc(0x1e2f); regmbc(0x1ec9); regmbc(0x1ecb); ! return; ! case 'j': case 0x135: case 0x1f0: case 0x249: ! regmbc('j'); regmbc(0x135); regmbc(0x1f0); ! regmbc(0x249); ! return; ! case 'k': case 0x137: case 0x199: case 0x1e9: ! case 0x1d84: case 0x1e31: case 0x1e33: case 0x1e35: ! case 0x2c6a: case 0xa741: ! regmbc('k'); regmbc(0x137); regmbc(0x199); ! regmbc(0x1e9); regmbc(0x1d84); regmbc(0x1e31); ! regmbc(0x1e33); regmbc(0x1e35); regmbc(0x2c6a); ! regmbc(0xa741); ! return; ! case 'l': case 0x13a: case 0x13c: case 0x13e: ! case 0x140: case 0x142: case 0x19a: case 0x1e37: ! case 0x1e39: case 0x1e3b: case 0x1e3d: case 0x2c61: ! regmbc('l'); regmbc(0x13a); regmbc(0x13c); ! regmbc(0x13e); regmbc(0x140); regmbc(0x142); ! regmbc(0x19a); regmbc(0x1e37); regmbc(0x1e39); ! regmbc(0x1e3b); regmbc(0x1e3d); regmbc(0x2c61); ! return; ! case 'm': case 0x1d6f: case 0x1e3f: case 0x1e41: case 0x1e43: ! regmbc('m'); regmbc(0x1d6f); regmbc(0x1e3f); ! regmbc(0x1e41); regmbc(0x1e43); ! return; ! case 'n': case 0xf1: case 0x144: case 0x146: case 0x148: ! case 0x149: case 0x1f9: case 0x1d70: case 0x1d87: ! case 0x1e45: case 0x1e47: case 0x1e49: case 0x1e4b: ! case 0xa7a5: ! regmbc('n'); regmbc(0xf1); regmbc(0x144); ! regmbc(0x146); regmbc(0x148); regmbc(0x149); ! regmbc(0x1f9); regmbc(0x1d70); regmbc(0x1d87); ! regmbc(0x1e45); regmbc(0x1e47); regmbc(0x1e49); ! regmbc(0x1e4b); regmbc(0xa7a5); return; case 'o': case 0xf2: case 0xf3: case 0xf4: case 0xf5: ! case 0xf6: case 0xf8: case 0x14d: case 0x14f: case 0x151: ! case 0x1a1: case 0x1d2: case 0x1eb: case 0x1ed: case 0x1ff: ! case 0x20d: case 0x20f: case 0x22b: case 0x22d: case 0x22f: ! case 0x231: case 0x275: case 0x1e4d: case 0x1e4f: ! case 0x1e51: case 0x1e53: case 0x1ecd: case 0x1ecf: ! case 0x1ed1: case 0x1ed3: case 0x1ed5: case 0x1ed7: ! case 0x1ed9: case 0x1edb: case 0x1edd: case 0x1edf: ! case 0x1ee1: case 0x1ee3: regmbc('o'); regmbc(0xf2); regmbc(0xf3); regmbc(0xf4); regmbc(0xf5); regmbc(0xf6); ! regmbc(0xf8); regmbc(0x14d); regmbc(0x14f); ! regmbc(0x151); regmbc(0x1a1); regmbc(0x1d2); ! regmbc(0x1eb); regmbc(0x1ed); regmbc(0x1ff); ! regmbc(0x20d); regmbc(0x20f); regmbc(0x22b); ! regmbc(0x22d); regmbc(0x22f); regmbc(0x231); ! regmbc(0x275); regmbc(0x1e4d); regmbc(0x1e4f); ! regmbc(0x1e51); regmbc(0x1e53); regmbc(0x1ecd); ! regmbc(0x1ecf); regmbc(0x1ed1); regmbc(0x1ed3); ! regmbc(0x1ed5); regmbc(0x1ed7); regmbc(0x1ed9); ! regmbc(0x1edb); regmbc(0x1edd); regmbc(0x1edf); ! regmbc(0x1ee1); regmbc(0x1ee3); ! return; ! case 'p': case 0x1a5: case 0x1d71: case 0x1d88: case 0x1d7d: ! case 0x1e55: case 0x1e57: ! regmbc('p'); regmbc(0x1a5); regmbc(0x1d71); ! regmbc(0x1d7d); regmbc(0x1d88); regmbc(0x1e55); ! regmbc(0x1e57); ! return; ! case 'q': case 0x24b: case 0x2a0: ! regmbc('q'); regmbc(0x24b); regmbc(0x2a0); ! return; ! case 'r': case 0x155: case 0x157: case 0x159: case 0x211: ! case 0x213: case 0x24d: case 0x27d: case 0x1d72: case 0x1d73: ! case 0x1d89: case 0x1e59: case 0x1e5b: case 0x1e5d: case 0x1e5f: ! case 0xa7a7: ! regmbc('r'); regmbc(0x155); regmbc(0x157); ! regmbc(0x159); regmbc(0x211); regmbc(0x213); ! regmbc(0x24d); regmbc(0x1d72); regmbc(0x1d73); ! regmbc(0x1d89); regmbc(0x1e59); regmbc(0x27d); ! regmbc(0x1e5b); regmbc(0x1e5d); regmbc(0x1e5f); ! regmbc(0xa7a7); ! return; ! case 's': case 0x15b: case 0x15d: case 0x15f: case 0x161: ! case 0x1e61: case 0x219: case 0x23f: case 0x1d74: case 0x1d8a: ! case 0x1e63: case 0x1e65: case 0x1e67: case 0x1e69: case 0xa7a9: ! regmbc('s'); regmbc(0x15b); regmbc(0x15d); ! regmbc(0x15f); regmbc(0x161); regmbc(0x23f); ! regmbc(0x219); regmbc(0x1d74); regmbc(0x1d8a); ! regmbc(0x1e61); regmbc(0x1e63); regmbc(0x1e65); ! regmbc(0x1e67); regmbc(0x1e69); regmbc(0xa7a9); ! return; ! case 't': case 0x163: case 0x165: case 0x167: case 0x1ab: ! case 0x1ad: case 0x21b: case 0x288: case 0x1d75: case 0x1e6b: ! case 0x1e6d: case 0x1e6f: case 0x1e71: case 0x1e97: case 0x2c66: ! regmbc('t'); regmbc(0x163); regmbc(0x165); ! regmbc(0x167); regmbc(0x1ab); regmbc(0x21b); ! regmbc(0x1ad); regmbc(0x288); regmbc(0x1d75); ! regmbc(0x1e6b); regmbc(0x1e6d); regmbc(0x1e6f); ! regmbc(0x1e71); regmbc(0x1e97); regmbc(0x2c66); return; case 'u': case 0xf9: case 0xfa: case 0xfb: case 0xfc: ! case 0x169: case 0x16b: case 0x16d: case 0x16f: ! case 0x171: case 0x173: case 0x1b0: case 0x1d4: ! case 0x1d6: case 0x1d8: case 0x1da: case 0x1dc: ! case 0x215: case 0x217: case 0x289: case 0x1e73: ! case 0x1d7e: case 0x1d99: case 0x1e75: case 0x1e77: ! case 0x1e79: case 0x1e7b: case 0x1ee5: case 0x1ee7: ! case 0x1ee9: case 0x1eeb: case 0x1eed: case 0x1eef: ! case 0x1ef1: regmbc('u'); regmbc(0xf9); regmbc(0xfa); ! regmbc(0xfb); regmbc(0xfc); regmbc(0x169); ! regmbc(0x16b); regmbc(0x16d); regmbc(0x16f); ! regmbc(0x171); regmbc(0x173); regmbc(0x1d6); ! regmbc(0x1d8); regmbc(0x1da); regmbc(0x1dc); ! regmbc(0x215); regmbc(0x217); regmbc(0x1b0); ! regmbc(0x1d4); regmbc(0x289); regmbc(0x1d7e); ! regmbc(0x1d99); regmbc(0x1e73); regmbc(0x1e75); ! regmbc(0x1e77); regmbc(0x1e79); regmbc(0x1e7b); ! regmbc(0x1ee5); regmbc(0x1ee7); regmbc(0x1ee9); ! regmbc(0x1eeb); regmbc(0x1eed); regmbc(0x1eef); ! regmbc(0x1ef1); ! return; ! case 'v': case 0x28b: case 0x1d8c: case 0x1e7d: case 0x1e7f: ! regmbc('v'); regmbc(0x28b); regmbc(0x1d8c); ! regmbc(0x1e7d); regmbc(0x1e7f); ! return; ! case 'w': case 0x175: case 0x1e81: case 0x1e83: ! case 0x1e85: case 0x1e87: case 0x1e89: case 0x1e98: ! regmbc('w'); regmbc(0x175); regmbc(0x1e81); ! regmbc(0x1e83); regmbc(0x1e85); regmbc(0x1e87); ! regmbc(0x1e89); regmbc(0x1e98); ! return; ! case 'x': case 0x1e8b: case 0x1e8d: ! regmbc('x'); regmbc(0x1e8b); regmbc(0x1e8d); ! return; ! case 'y': case 0xfd: case 0xff: case 0x177: case 0x1b4: ! case 0x233: case 0x24f: case 0x1e8f: case 0x1e99: case 0x1ef3: ! case 0x1ef5: case 0x1ef7: case 0x1ef9: regmbc('y'); regmbc(0xfd); regmbc(0xff); ! regmbc(0x177); regmbc(0x1b4); regmbc(0x233); ! regmbc(0x24f); regmbc(0x1e8f); regmbc(0x1e99); ! regmbc(0x1ef3); regmbc(0x1ef5); regmbc(0x1ef7); ! regmbc(0x1ef9); ! return; ! case 'z': case 0x17a: case 0x17c: case 0x17e: case 0x1b6: ! case 0x1d76: case 0x1d8e: case 0x1e91: case 0x1e93: ! case 0x1e95: case 0x2c6c: ! regmbc('z'); regmbc(0x17a); regmbc(0x17c); ! regmbc(0x17e); regmbc(0x1b6); regmbc(0x1d76); ! regmbc(0x1d8e); regmbc(0x1e91); regmbc(0x1e93); ! regmbc(0x1e95); regmbc(0x2c6c); return; } #endif *** ../vim-8.2.2715/src/regexp_nfa.c 2021-01-02 17:43:44.025175817 +0100 --- src/regexp_nfa.c 2021-04-05 13:55:16.456666019 +0200 *************** *** 699,705 **** nfa_emit_equi_class(int c) { #define EMIT2(c) EMIT(c); EMIT(NFA_CONCAT); - #define EMITMBC(c) EMIT(c); EMIT(NFA_CONCAT); if (enc_utf8 || STRCMP(p_enc, "latin1") == 0 || STRCMP(p_enc, "iso-8859-15") == 0) --- 699,704 ---- *************** *** 820,1172 **** switch (c) { case 'A': case A_grave: case A_acute: case A_circumflex: ! case A_virguilla: case A_diaeresis: case A_ring: ! CASEMBC(0x100) CASEMBC(0x102) CASEMBC(0x104) ! CASEMBC(0x1cd) CASEMBC(0x1de) CASEMBC(0x1e0) ! CASEMBC(0x1ea2) ! EMIT2('A'); EMIT2(A_grave); EMIT2(A_acute); ! EMIT2(A_circumflex); EMIT2(A_virguilla); ! EMIT2(A_diaeresis); EMIT2(A_ring); ! EMITMBC(0x100) EMITMBC(0x102) EMITMBC(0x104) ! EMITMBC(0x1cd) EMITMBC(0x1de) EMITMBC(0x1e0) ! EMITMBC(0x1ea2) ! return OK; ! ! case 'B': CASEMBC(0x1e02) CASEMBC(0x1e06) ! EMIT2('B'); EMITMBC(0x1e02) EMITMBC(0x1e06) ! return OK; ! ! case 'C': case C_cedilla: CASEMBC(0x106) CASEMBC(0x108) ! CASEMBC(0x10a) CASEMBC(0x10c) ! EMIT2('C'); EMIT2(C_cedilla); ! EMITMBC(0x106) EMITMBC(0x108) ! EMITMBC(0x10a) EMITMBC(0x10c) ! return OK; ! ! case 'D': CASEMBC(0x10e) CASEMBC(0x110) CASEMBC(0x1e0a) ! CASEMBC(0x1e0e) CASEMBC(0x1e10) ! EMIT2('D'); EMITMBC(0x10e) EMITMBC(0x110) EMITMBC(0x1e0a) ! EMITMBC(0x1e0e) EMITMBC(0x1e10) return OK; case 'E': case E_grave: case E_acute: case E_circumflex: ! case E_diaeresis: CASEMBC(0x112) CASEMBC(0x114) ! CASEMBC(0x116) CASEMBC(0x118) CASEMBC(0x11a) ! CASEMBC(0x1eba) CASEMBC(0x1ebc) ! EMIT2('E'); EMIT2(E_grave); EMIT2(E_acute); ! EMIT2(E_circumflex); EMIT2(E_diaeresis); ! EMITMBC(0x112) EMITMBC(0x114) EMITMBC(0x116) ! EMITMBC(0x118) EMITMBC(0x11a) EMITMBC(0x1eba) ! EMITMBC(0x1ebc) ! return OK; ! ! case 'F': CASEMBC(0x1e1e) ! EMIT2('F'); EMITMBC(0x1e1e) ! return OK; ! ! case 'G': CASEMBC(0x11c) CASEMBC(0x11e) CASEMBC(0x120) ! CASEMBC(0x122) CASEMBC(0x1e4) CASEMBC(0x1e6) ! CASEMBC(0x1f4) CASEMBC(0x1e20) ! EMIT2('G'); EMITMBC(0x11c) EMITMBC(0x11e) EMITMBC(0x120) ! EMITMBC(0x122) EMITMBC(0x1e4) EMITMBC(0x1e6) ! EMITMBC(0x1f4) EMITMBC(0x1e20) ! return OK; ! ! case 'H': CASEMBC(0x124) CASEMBC(0x126) CASEMBC(0x1e22) ! CASEMBC(0x1e26) CASEMBC(0x1e28) ! EMIT2('H'); EMITMBC(0x124) EMITMBC(0x126) EMITMBC(0x1e22) ! EMITMBC(0x1e26) EMITMBC(0x1e28) return OK; case 'I': case I_grave: case I_acute: case I_circumflex: ! case I_diaeresis: CASEMBC(0x128) CASEMBC(0x12a) ! CASEMBC(0x12c) CASEMBC(0x12e) CASEMBC(0x130) ! CASEMBC(0x1cf) CASEMBC(0x1ec8) ! EMIT2('I'); EMIT2(I_grave); EMIT2(I_acute); ! EMIT2(I_circumflex); EMIT2(I_diaeresis); ! EMITMBC(0x128) EMITMBC(0x12a) ! EMITMBC(0x12c) EMITMBC(0x12e) EMITMBC(0x130) ! EMITMBC(0x1cf) EMITMBC(0x1ec8) ! return OK; ! ! case 'J': CASEMBC(0x134) ! EMIT2('J'); EMITMBC(0x134) ! return OK; ! ! case 'K': CASEMBC(0x136) CASEMBC(0x1e8) CASEMBC(0x1e30) ! CASEMBC(0x1e34) ! EMIT2('K'); EMITMBC(0x136) EMITMBC(0x1e8) EMITMBC(0x1e30) ! EMITMBC(0x1e34) ! return OK; ! ! case 'L': CASEMBC(0x139) CASEMBC(0x13b) CASEMBC(0x13d) ! CASEMBC(0x13f) CASEMBC(0x141) CASEMBC(0x1e3a) ! EMIT2('L'); EMITMBC(0x139) EMITMBC(0x13b) EMITMBC(0x13d) ! EMITMBC(0x13f) EMITMBC(0x141) EMITMBC(0x1e3a) ! return OK; ! ! case 'M': CASEMBC(0x1e3e) CASEMBC(0x1e40) ! EMIT2('M'); EMITMBC(0x1e3e) EMITMBC(0x1e40) ! return OK; ! ! case 'N': case N_virguilla: CASEMBC(0x143) CASEMBC(0x145) ! CASEMBC(0x147) CASEMBC(0x1e44) CASEMBC(0x1e48) ! EMIT2('N'); EMIT2(N_virguilla); ! EMITMBC(0x143) EMITMBC(0x145) ! EMITMBC(0x147) EMITMBC(0x1e44) EMITMBC(0x1e48) return OK; case 'O': case O_grave: case O_acute: case O_circumflex: ! case O_virguilla: case O_diaeresis: case O_slash: ! CASEMBC(0x14c) CASEMBC(0x14e) CASEMBC(0x150) ! CASEMBC(0x1a0) CASEMBC(0x1d1) CASEMBC(0x1ea) ! CASEMBC(0x1ec) CASEMBC(0x1ece) ! EMIT2('O'); EMIT2(O_grave); EMIT2(O_acute); ! EMIT2(O_circumflex); EMIT2(O_virguilla); ! EMIT2(O_diaeresis); EMIT2(O_slash); ! EMITMBC(0x14c) EMITMBC(0x14e) EMITMBC(0x150) ! EMITMBC(0x1a0) EMITMBC(0x1d1) EMITMBC(0x1ea) ! EMITMBC(0x1ec) EMITMBC(0x1ece) ! return OK; ! ! case 'P': case 0x1e54: case 0x1e56: ! EMIT2('P'); EMITMBC(0x1e54) EMITMBC(0x1e56) ! return OK; ! ! case 'R': CASEMBC(0x154) CASEMBC(0x156) CASEMBC(0x158) ! CASEMBC(0x1e58) CASEMBC(0x1e5e) ! EMIT2('R'); EMITMBC(0x154) EMITMBC(0x156) EMITMBC(0x158) ! EMITMBC(0x1e58) EMITMBC(0x1e5e) ! return OK; ! ! case 'S': CASEMBC(0x15a) CASEMBC(0x15c) CASEMBC(0x15e) ! CASEMBC(0x160) CASEMBC(0x1e60) ! EMIT2('S'); EMITMBC(0x15a) EMITMBC(0x15c) EMITMBC(0x15e) ! EMITMBC(0x160) EMITMBC(0x1e60) ! return OK; ! ! case 'T': CASEMBC(0x162) CASEMBC(0x164) CASEMBC(0x166) ! CASEMBC(0x1e6a) CASEMBC(0x1e6e) ! EMIT2('T'); EMITMBC(0x162) EMITMBC(0x164) EMITMBC(0x166) ! EMITMBC(0x1e6a) EMITMBC(0x1e6e) return OK; case 'U': case U_grave: case U_acute: case U_diaeresis: ! case U_circumflex: CASEMBC(0x168) CASEMBC(0x16a) ! CASEMBC(0x16c) CASEMBC(0x16e) CASEMBC(0x170) ! CASEMBC(0x172) CASEMBC(0x1af) CASEMBC(0x1d3) ! CASEMBC(0x1ee6) ! EMIT2('U'); EMIT2(U_grave); EMIT2(U_acute); ! EMIT2(U_diaeresis); EMIT2(U_circumflex); ! EMITMBC(0x168) EMITMBC(0x16a) ! EMITMBC(0x16c) EMITMBC(0x16e) EMITMBC(0x170) ! EMITMBC(0x172) EMITMBC(0x1af) EMITMBC(0x1d3) ! EMITMBC(0x1ee6) ! return OK; ! ! case 'V': CASEMBC(0x1e7c) ! EMIT2('V'); EMITMBC(0x1e7c) ! return OK; ! ! case 'W': CASEMBC(0x174) CASEMBC(0x1e80) CASEMBC(0x1e82) ! CASEMBC(0x1e84) CASEMBC(0x1e86) ! EMIT2('W'); EMITMBC(0x174) EMITMBC(0x1e80) EMITMBC(0x1e82) ! EMITMBC(0x1e84) EMITMBC(0x1e86) ! return OK; ! ! case 'X': CASEMBC(0x1e8a) CASEMBC(0x1e8c) ! EMIT2('X'); EMITMBC(0x1e8a) EMITMBC(0x1e8c) ! return OK; ! ! case 'Y': case Y_acute: CASEMBC(0x176) CASEMBC(0x178) ! CASEMBC(0x1e8e) CASEMBC(0x1ef2) CASEMBC(0x1ef6) ! CASEMBC(0x1ef8) ! EMIT2('Y'); EMIT2(Y_acute); ! EMITMBC(0x176) EMITMBC(0x178) ! EMITMBC(0x1e8e) EMITMBC(0x1ef2) EMITMBC(0x1ef6) ! EMITMBC(0x1ef8) ! return OK; ! ! case 'Z': CASEMBC(0x179) CASEMBC(0x17b) CASEMBC(0x17d) ! CASEMBC(0x1b5) CASEMBC(0x1e90) CASEMBC(0x1e94) ! EMIT2('Z'); EMITMBC(0x179) EMITMBC(0x17b) EMITMBC(0x17d) ! EMITMBC(0x1b5) EMITMBC(0x1e90) EMITMBC(0x1e94) ! return OK; ! ! case 'a': case a_grave: case a_acute: case a_circumflex: ! case a_virguilla: case a_diaeresis: case a_ring: ! CASEMBC(0x101) CASEMBC(0x103) CASEMBC(0x105) ! CASEMBC(0x1ce) CASEMBC(0x1df) CASEMBC(0x1e1) ! CASEMBC(0x1ea3) ! EMIT2('a'); EMIT2(a_grave); EMIT2(a_acute); ! EMIT2(a_circumflex); EMIT2(a_virguilla); ! EMIT2(a_diaeresis); EMIT2(a_ring); ! EMITMBC(0x101) EMITMBC(0x103) EMITMBC(0x105) ! EMITMBC(0x1ce) EMITMBC(0x1df) EMITMBC(0x1e1) ! EMITMBC(0x1ea3) ! return OK; ! ! case 'b': CASEMBC(0x1e03) CASEMBC(0x1e07) ! EMIT2('b'); EMITMBC(0x1e03) EMITMBC(0x1e07) ! return OK; ! ! case 'c': case c_cedilla: CASEMBC(0x107) CASEMBC(0x109) ! CASEMBC(0x10b) CASEMBC(0x10d) ! EMIT2('c'); EMIT2(c_cedilla); ! EMITMBC(0x107) EMITMBC(0x109) ! EMITMBC(0x10b) EMITMBC(0x10d) ! return OK; ! ! case 'd': CASEMBC(0x10f) CASEMBC(0x111) CASEMBC(0x1e0b) ! CASEMBC(0x1e0f) CASEMBC(0x1e11) ! EMIT2('d'); EMITMBC(0x10f) EMITMBC(0x111) ! EMITMBC(0x1e0b) EMITMBC(0x1e0f) EMITMBC(0x1e11) return OK; case 'e': case e_grave: case e_acute: case e_circumflex: ! case e_diaeresis: CASEMBC(0x113) CASEMBC(0x115) ! CASEMBC(0x117) CASEMBC(0x119) CASEMBC(0x11b) ! CASEMBC(0x1ebb) CASEMBC(0x1ebd) ! EMIT2('e'); EMIT2(e_grave); EMIT2(e_acute); ! EMIT2(e_circumflex); EMIT2(e_diaeresis); ! EMITMBC(0x113) EMITMBC(0x115) ! EMITMBC(0x117) EMITMBC(0x119) EMITMBC(0x11b) ! EMITMBC(0x1ebb) EMITMBC(0x1ebd) ! return OK; ! ! case 'f': CASEMBC(0x1e1f) ! EMIT2('f'); EMITMBC(0x1e1f) ! return OK; ! ! case 'g': CASEMBC(0x11d) CASEMBC(0x11f) CASEMBC(0x121) ! CASEMBC(0x123) CASEMBC(0x1e5) CASEMBC(0x1e7) ! CASEMBC(0x1f5) CASEMBC(0x1e21) ! EMIT2('g'); EMITMBC(0x11d) EMITMBC(0x11f) EMITMBC(0x121) ! EMITMBC(0x123) EMITMBC(0x1e5) EMITMBC(0x1e7) ! EMITMBC(0x1f5) EMITMBC(0x1e21) ! return OK; ! ! case 'h': CASEMBC(0x125) CASEMBC(0x127) CASEMBC(0x1e23) ! CASEMBC(0x1e27) CASEMBC(0x1e29) CASEMBC(0x1e96) ! EMIT2('h'); EMITMBC(0x125) EMITMBC(0x127) EMITMBC(0x1e23) ! EMITMBC(0x1e27) EMITMBC(0x1e29) EMITMBC(0x1e96) return OK; case 'i': case i_grave: case i_acute: case i_circumflex: ! case i_diaeresis: CASEMBC(0x129) CASEMBC(0x12b) ! CASEMBC(0x12d) CASEMBC(0x12f) CASEMBC(0x1d0) ! CASEMBC(0x1ec9) ! EMIT2('i'); EMIT2(i_grave); EMIT2(i_acute); ! EMIT2(i_circumflex); EMIT2(i_diaeresis); ! EMITMBC(0x129) EMITMBC(0x12b) ! EMITMBC(0x12d) EMITMBC(0x12f) EMITMBC(0x1d0) ! EMITMBC(0x1ec9) ! return OK; ! ! case 'j': CASEMBC(0x135) CASEMBC(0x1f0) ! EMIT2('j'); EMITMBC(0x135) EMITMBC(0x1f0) ! return OK; ! ! case 'k': CASEMBC(0x137) CASEMBC(0x1e9) CASEMBC(0x1e31) ! CASEMBC(0x1e35) ! EMIT2('k'); EMITMBC(0x137) EMITMBC(0x1e9) EMITMBC(0x1e31) ! EMITMBC(0x1e35) ! return OK; ! ! case 'l': CASEMBC(0x13a) CASEMBC(0x13c) CASEMBC(0x13e) ! CASEMBC(0x140) CASEMBC(0x142) CASEMBC(0x1e3b) ! EMIT2('l'); EMITMBC(0x13a) EMITMBC(0x13c) EMITMBC(0x13e) ! EMITMBC(0x140) EMITMBC(0x142) EMITMBC(0x1e3b) ! return OK; ! ! case 'm': CASEMBC(0x1e3f) CASEMBC(0x1e41) ! EMIT2('m'); EMITMBC(0x1e3f) EMITMBC(0x1e41) ! return OK; ! ! case 'n': case n_virguilla: CASEMBC(0x144) CASEMBC(0x146) ! CASEMBC(0x148) CASEMBC(0x149) CASEMBC(0x1e45) ! CASEMBC(0x1e49) ! EMIT2('n'); EMIT2(n_virguilla); ! EMITMBC(0x144) EMITMBC(0x146) ! EMITMBC(0x148) EMITMBC(0x149) EMITMBC(0x1e45) ! EMITMBC(0x1e49) return OK; case 'o': case o_grave: case o_acute: case o_circumflex: ! case o_virguilla: case o_diaeresis: case o_slash: ! CASEMBC(0x14d) CASEMBC(0x14f) CASEMBC(0x151) ! CASEMBC(0x1a1) CASEMBC(0x1d2) CASEMBC(0x1eb) ! CASEMBC(0x1ed) CASEMBC(0x1ecf) ! EMIT2('o'); EMIT2(o_grave); EMIT2(o_acute); ! EMIT2(o_circumflex); EMIT2(o_virguilla); ! EMIT2(o_diaeresis); EMIT2(o_slash); ! EMITMBC(0x14d) EMITMBC(0x14f) EMITMBC(0x151) ! EMITMBC(0x1a1) EMITMBC(0x1d2) EMITMBC(0x1eb) ! EMITMBC(0x1ed) EMITMBC(0x1ecf) ! return OK; ! ! case 'p': CASEMBC(0x1e55) CASEMBC(0x1e57) ! EMIT2('p'); EMITMBC(0x1e55) EMITMBC(0x1e57) ! return OK; ! ! case 'r': CASEMBC(0x155) CASEMBC(0x157) CASEMBC(0x159) ! CASEMBC(0x1e59) CASEMBC(0x1e5f) ! EMIT2('r'); EMITMBC(0x155) EMITMBC(0x157) EMITMBC(0x159) ! EMITMBC(0x1e59) EMITMBC(0x1e5f) ! return OK; ! ! case 's': CASEMBC(0x15b) CASEMBC(0x15d) CASEMBC(0x15f) ! CASEMBC(0x161) CASEMBC(0x1e61) ! EMIT2('s'); EMITMBC(0x15b) EMITMBC(0x15d) EMITMBC(0x15f) ! EMITMBC(0x161) EMITMBC(0x1e61) ! return OK; ! ! case 't': CASEMBC(0x163) CASEMBC(0x165) CASEMBC(0x167) ! CASEMBC(0x1e6b) CASEMBC(0x1e6f) CASEMBC(0x1e97) ! EMIT2('t'); EMITMBC(0x163) EMITMBC(0x165) EMITMBC(0x167) ! EMITMBC(0x1e6b) EMITMBC(0x1e6f) EMITMBC(0x1e97) return OK; case 'u': case u_grave: case u_acute: case u_circumflex: ! case u_diaeresis: CASEMBC(0x169) CASEMBC(0x16b) ! CASEMBC(0x16d) CASEMBC(0x16f) CASEMBC(0x171) ! CASEMBC(0x173) CASEMBC(0x1b0) CASEMBC(0x1d4) ! CASEMBC(0x1ee7) ! EMIT2('u'); EMIT2(u_grave); EMIT2(u_acute); ! EMIT2(u_circumflex); EMIT2(u_diaeresis); ! EMITMBC(0x169) EMITMBC(0x16b) ! EMITMBC(0x16d) EMITMBC(0x16f) EMITMBC(0x171) ! EMITMBC(0x173) EMITMBC(0x1b0) EMITMBC(0x1d4) ! EMITMBC(0x1ee7) ! return OK; ! ! case 'v': CASEMBC(0x1e7d) ! EMIT2('v'); EMITMBC(0x1e7d) ! return OK; ! ! case 'w': CASEMBC(0x175) CASEMBC(0x1e81) CASEMBC(0x1e83) ! CASEMBC(0x1e85) CASEMBC(0x1e87) CASEMBC(0x1e98) ! EMIT2('w'); EMITMBC(0x175) EMITMBC(0x1e81) EMITMBC(0x1e83) ! EMITMBC(0x1e85) EMITMBC(0x1e87) EMITMBC(0x1e98) ! return OK; ! ! case 'x': CASEMBC(0x1e8b) CASEMBC(0x1e8d) ! EMIT2('x'); EMITMBC(0x1e8b) EMITMBC(0x1e8d) ! return OK; ! ! case 'y': case y_acute: case y_diaeresis: CASEMBC(0x177) ! CASEMBC(0x1e8f) CASEMBC(0x1e99) CASEMBC(0x1ef3) ! CASEMBC(0x1ef7) CASEMBC(0x1ef9) ! EMIT2('y'); EMIT2(y_acute); EMIT2(y_diaeresis); ! EMITMBC(0x177) ! EMITMBC(0x1e8f) EMITMBC(0x1e99) EMITMBC(0x1ef3) ! EMITMBC(0x1ef7) EMITMBC(0x1ef9) ! return OK; ! ! case 'z': CASEMBC(0x17a) CASEMBC(0x17c) CASEMBC(0x17e) ! CASEMBC(0x1b6) CASEMBC(0x1e91) CASEMBC(0x1e95) ! EMIT2('z'); EMITMBC(0x17a) EMITMBC(0x17c) EMITMBC(0x17e) ! EMITMBC(0x1b6) EMITMBC(0x1e91) EMITMBC(0x1e95) return OK; // default: character itself --- 819,1328 ---- switch (c) { case 'A': case A_grave: case A_acute: case A_circumflex: ! case A_virguilla: case A_diaeresis: case A_ring: ! case 0x100: case 0x102: case 0x104: case 0x1cd: ! case 0x1de: case 0x1e0: case 0x1fa: case 0x200: ! case 0x202: case 0x226: case 0x23a: case 0x1e00: ! case 0x1ea0: case 0x1ea2: case 0x1ea4: case 0x1ea6: ! case 0x1ea8: case 0x1eaa: case 0x1eac: case 0x1eae: ! case 0x1eb0: case 0x1eb2: case 0x1eb4: case 0x1eb6: ! EMIT2('A') EMIT2(A_grave) EMIT2(A_acute) ! EMIT2(A_circumflex) EMIT2(A_virguilla) ! EMIT2(A_diaeresis) EMIT2(A_ring) ! EMIT2(0x100) EMIT2(0x102) EMIT2(0x104) ! EMIT2(0x1cd) EMIT2(0x1de) EMIT2(0x1e0) ! EMIT2(0x1fa) EMIT2(0x200) EMIT2(0x202) ! EMIT2(0x226) EMIT2(0x23a) EMIT2(0x1e00) ! EMIT2(0x1ea0) EMIT2(0x1ea2) EMIT2(0x1ea4) ! EMIT2(0x1ea6) EMIT2(0x1ea8) EMIT2(0x1eaa) ! EMIT2(0x1eac) EMIT2(0x1eae) EMIT2(0x1eb0) ! EMIT2(0x1eb2) EMIT2(0x1eb6) EMIT2(0x1eb4) ! return OK; ! ! case 'B': case 0x181: case 0x243: case 0x1e02: ! case 0x1e04: case 0x1e06: ! EMIT2('B') ! EMIT2(0x181) EMIT2(0x243) EMIT2(0x1e02) ! EMIT2(0x1e04) EMIT2(0x1e06) ! return OK; ! ! case 'C': case C_cedilla: case 0x106: case 0x108: ! case 0x10a: case 0x10c: case 0x187: case 0x23b: ! case 0x1e08: case 0xa792: ! EMIT2('C') EMIT2(C_cedilla) ! EMIT2(0x106) EMIT2(0x108) EMIT2(0x10a) ! EMIT2(0x10c) EMIT2(0x187) EMIT2(0x23b) ! EMIT2(0x1e08) EMIT2(0xa792) ! return OK; ! ! case 'D': case 0x10e: case 0x110: case 0x18a: ! case 0x1e0a: case 0x1e0c: case 0x1e0e: case 0x1e10: ! case 0x1e12: ! EMIT2('D') EMIT2(0x10e) EMIT2(0x110) EMIT2(0x18a) ! EMIT2(0x1e0a) EMIT2(0x1e0c) EMIT2(0x1e0e) ! EMIT2(0x1e10) EMIT2(0x1e12) return OK; case 'E': case E_grave: case E_acute: case E_circumflex: ! case E_diaeresis: case 0x112: case 0x114: case 0x116: ! case 0x118: case 0x11a: case 0x204: case 0x206: ! case 0x228: case 0x246: case 0x1e14: case 0x1e16: ! case 0x1e18: case 0x1e1a: case 0x1e1c: case 0x1eb8: ! case 0x1eba: case 0x1ebc: case 0x1ebe: case 0x1ec0: ! case 0x1ec2: case 0x1ec4: case 0x1ec6: ! EMIT2('E') EMIT2(E_grave) EMIT2(E_acute) ! EMIT2(E_circumflex) EMIT2(E_diaeresis) ! EMIT2(0x112) EMIT2(0x114) EMIT2(0x116) ! EMIT2(0x118) EMIT2(0x11a) EMIT2(0x204) ! EMIT2(0x206) EMIT2(0x228) EMIT2(0x246) ! EMIT2(0x1e14) EMIT2(0x1e16) EMIT2(0x1e18) ! EMIT2(0x1e1a) EMIT2(0x1e1c) EMIT2(0x1eb8) ! EMIT2(0x1eba) EMIT2(0x1ebc) EMIT2(0x1ebe) ! EMIT2(0x1ec0) EMIT2(0x1ec2) EMIT2(0x1ec4) ! EMIT2(0x1ec6) ! return OK; ! ! case 'F': case 0x191: case 0x1e1e: case 0xa798: ! EMIT2('F') EMIT2(0x191) EMIT2(0x1e1e) EMIT2(0xa798) ! return OK; ! ! case 'G': case 0x11c: case 0x11e: case 0x120: ! case 0x122: case 0x193: case 0x1e4: case 0x1e6: ! case 0x1f4: case 0x1e20: case 0xa7a0: ! EMIT2('G') EMIT2(0x11c) EMIT2(0x11e) EMIT2(0x120) ! EMIT2(0x122) EMIT2(0x193) EMIT2(0x1e4) ! EMIT2(0x1e6) EMIT2(0x1f4) EMIT2(0x1e20) ! EMIT2(0xa7a0) ! return OK; ! ! case 'H': case 0x124: case 0x126: case 0x21e: ! case 0x1e22: case 0x1e24: case 0x1e26: case 0x1e28: ! case 0x1e2a: case 0x2c67: ! EMIT2('H') EMIT2(0x124) EMIT2(0x126) EMIT2(0x21e) ! EMIT2(0x1e22) EMIT2(0x1e24) EMIT2(0x1e26) ! EMIT2(0x1e28) EMIT2(0x1e2a) EMIT2(0x2c67) return OK; case 'I': case I_grave: case I_acute: case I_circumflex: ! case I_diaeresis: case 0x128: case 0x12a: case 0x12c: ! case 0x12e: case 0x130: case 0x197: case 0x1cf: ! case 0x208: case 0x20a: case 0x1e2c: case 0x1e2e: ! case 0x1ec8: case 0x1eca: ! EMIT2('I') EMIT2(I_grave) EMIT2(I_acute) ! EMIT2(I_circumflex) EMIT2(I_diaeresis) ! EMIT2(0x128) EMIT2(0x12a) EMIT2(0x12c) ! EMIT2(0x12e) EMIT2(0x130) EMIT2(0x197) ! EMIT2(0x1cf) EMIT2(0x208) EMIT2(0x20a) ! EMIT2(0x1e2c) EMIT2(0x1e2e) EMIT2(0x1ec8) ! EMIT2(0x1eca) ! return OK; ! ! case 'J': case 0x134: case 0x248: ! EMIT2('J') EMIT2(0x134) EMIT2(0x248) ! return OK; ! ! case 'K': case 0x136: case 0x198: case 0x1e8: case 0x1e30: ! case 0x1e32: case 0x1e34: case 0x2c69: case 0xa740: ! EMIT2('K') EMIT2(0x136) EMIT2(0x198) EMIT2(0x1e8) ! EMIT2(0x1e30) EMIT2(0x1e32) EMIT2(0x1e34) ! EMIT2(0x2c69) EMIT2(0xa740) ! return OK; ! ! case 'L': case 0x139: case 0x13b: case 0x13d: ! case 0x13f: case 0x141: case 0x23d: case 0x1e36: ! case 0x1e38: case 0x1e3a: case 0x1e3c: case 0x2c60: ! EMIT2('L') EMIT2(0x139) EMIT2(0x13b) ! EMIT2(0x13d) EMIT2(0x13f) EMIT2(0x141) ! EMIT2(0x23d) EMIT2(0x1e36) EMIT2(0x1e38) ! EMIT2(0x1e3a) EMIT2(0x1e3c) EMIT2(0x2c60) ! return OK; ! ! case 'M': case 0x1e3e: case 0x1e40: case 0x1e42: ! EMIT2('M') EMIT2(0x1e3e) EMIT2(0x1e40) ! EMIT2(0x1e42) ! return OK; ! ! case 'N': case N_virguilla: ! case 0x143: case 0x145: case 0x147: case 0x1f8: ! case 0x1e44: case 0x1e46: case 0x1e48: case 0x1e4a: ! case 0xa7a4: ! EMIT2('N') EMIT2(N_virguilla) ! EMIT2(0x143) EMIT2(0x145) EMIT2(0x147) ! EMIT2(0x1f8) EMIT2(0x1e44) EMIT2(0x1e46) ! EMIT2(0x1e48) EMIT2(0x1e4a) EMIT2(0xa7a4) return OK; case 'O': case O_grave: case O_acute: case O_circumflex: ! case O_virguilla: case O_diaeresis: case O_slash: ! case 0x14c: case 0x14e: case 0x150: case 0x19f: ! case 0x1a0: case 0x1d1: case 0x1ea: case 0x1ec: ! case 0x1fe: case 0x20c: case 0x20e: case 0x22a: ! case 0x22c: case 0x22e: case 0x230: case 0x1e4c: ! case 0x1e4e: case 0x1e50: case 0x1e52: case 0x1ecc: ! case 0x1ece: case 0x1ed0: case 0x1ed2: case 0x1ed4: ! case 0x1ed6: case 0x1ed8: case 0x1eda: case 0x1edc: ! case 0x1ede: case 0x1ee0: case 0x1ee2: ! EMIT2('O') EMIT2(O_grave) EMIT2(O_acute) ! EMIT2(O_circumflex) EMIT2(O_virguilla) ! EMIT2(O_diaeresis) EMIT2(O_slash) ! EMIT2(0x14c) EMIT2(0x14e) EMIT2(0x150) ! EMIT2(0x19f) EMIT2(0x1a0) EMIT2(0x1d1) ! EMIT2(0x1ea) EMIT2(0x1ec) EMIT2(0x1fe) ! EMIT2(0x20c) EMIT2(0x20e) EMIT2(0x22a) ! EMIT2(0x22c) EMIT2(0x22e) EMIT2(0x230) ! EMIT2(0x1e4c) EMIT2(0x1e4e) EMIT2(0x1e50) ! EMIT2(0x1e52) EMIT2(0x1ecc) EMIT2(0x1ece) ! EMIT2(0x1ed0) EMIT2(0x1ed2) EMIT2(0x1ed4) ! EMIT2(0x1ed6) EMIT2(0x1ed8) EMIT2(0x1eda) ! EMIT2(0x1edc) EMIT2(0x1ede) EMIT2(0x1ee0) ! EMIT2(0x1ee2) ! return OK; ! ! case 'P': case 0x1a4: case 0x1e54: case 0x1e56: case 0x2c63: ! EMIT2('P') EMIT2(0x1a4) EMIT2(0x1e54) EMIT2(0x1e56) ! EMIT2(0x2c63) ! return OK; ! ! case 'Q': case 0x24a: ! EMIT2('Q') EMIT2(0x24a) ! return OK; ! ! case 'R': case 0x154: case 0x156: case 0x158: case 0x210: ! case 0x212: case 0x24c: case 0x1e58: case 0x1e5a: ! case 0x1e5c: case 0x1e5e: case 0x2c64: case 0xa7a6: ! EMIT2('R') EMIT2(0x154) EMIT2(0x156) EMIT2(0x158) ! EMIT2(0x210) EMIT2(0x212) EMIT2(0x24c) EMIT2(0x1e58) ! EMIT2(0x1e5a) EMIT2(0x1e5c) EMIT2(0x1e5e) EMIT2(0x2c64) ! EMIT2(0xa7a6) ! return OK; ! ! case 'S': case 0x15a: case 0x15c: case 0x15e: case 0x160: ! case 0x218: case 0x1e60: case 0x1e62: case 0x1e64: ! case 0x1e66: case 0x1e68: case 0x2c7e: case 0xa7a8: ! EMIT2('S') EMIT2(0x15a) EMIT2(0x15c) EMIT2(0x15e) ! EMIT2(0x160) EMIT2(0x218) EMIT2(0x1e60) EMIT2(0x1e62) ! EMIT2(0x1e64) EMIT2(0x1e66) EMIT2(0x1e68) EMIT2(0x2c7e) ! EMIT2(0xa7a8) ! return OK; ! ! case 'T': case 0x162: case 0x164: case 0x166: case 0x1ac: ! case 0x1ae: case 0x21a: case 0x23e: case 0x1e6a: case 0x1e6c: ! case 0x1e6e: case 0x1e70: ! EMIT2('T') EMIT2(0x162) EMIT2(0x164) EMIT2(0x166) ! EMIT2(0x1ac) EMIT2(0x1ae) EMIT2(0x23e) EMIT2(0x21a) ! EMIT2(0x1e6a) EMIT2(0x1e6c) EMIT2(0x1e6e) EMIT2(0x1e70) return OK; case 'U': case U_grave: case U_acute: case U_diaeresis: ! case U_circumflex: case 0x168: case 0x16a: case 0x16c: ! case 0x16e: case 0x170: case 0x172: case 0x1af: ! case 0x1d3: case 0x1d5: case 0x1d7: case 0x1d9: ! case 0x1db: case 0x214: case 0x216: case 0x244: ! case 0x1e72: case 0x1e74: case 0x1e76: case 0x1e78: ! case 0x1e7a: case 0x1ee4: case 0x1ee6: case 0x1ee8: ! case 0x1eea: case 0x1eec: case 0x1eee: case 0x1ef0: ! EMIT2('U') EMIT2(U_grave) EMIT2(U_acute) ! EMIT2(U_diaeresis) EMIT2(U_circumflex) ! EMIT2(0x168) EMIT2(0x16a) ! EMIT2(0x16c) EMIT2(0x16e) EMIT2(0x170) ! EMIT2(0x172) EMIT2(0x1af) EMIT2(0x1d3) ! EMIT2(0x1d5) EMIT2(0x1d7) EMIT2(0x1d9) ! EMIT2(0x1db) EMIT2(0x214) EMIT2(0x216) ! EMIT2(0x244) EMIT2(0x1e72) EMIT2(0x1e74) ! EMIT2(0x1e76) EMIT2(0x1e78) EMIT2(0x1e7a) ! EMIT2(0x1ee4) EMIT2(0x1ee6) EMIT2(0x1ee8) ! EMIT2(0x1eea) EMIT2(0x1eec) EMIT2(0x1eee) ! EMIT2(0x1ef0) ! return OK; ! ! case 'V': case 0x1b2: case 0x1e7c: case 0x1e7e: ! EMIT2('V') EMIT2(0x1b2) EMIT2(0x1e7c) EMIT2(0x1e7e) ! return OK; ! ! case 'W': case 0x174: case 0x1e80: case 0x1e82: case 0x1e84: ! case 0x1e86: case 0x1e88: ! EMIT2('W') EMIT2(0x174) EMIT2(0x1e80) EMIT2(0x1e82) ! EMIT2(0x1e84) EMIT2(0x1e86) EMIT2(0x1e88) ! return OK; ! ! case 'X': case 0x1e8a: case 0x1e8c: ! EMIT2('X') EMIT2(0x1e8a) EMIT2(0x1e8c) ! return OK; ! ! case 'Y': case Y_acute: case 0x176: case 0x178: ! case 0x1b3: case 0x232: case 0x24e: case 0x1e8e: ! case 0x1ef2: case 0x1ef4: case 0x1ef6: case 0x1ef8: ! EMIT2('Y') EMIT2(Y_acute) ! EMIT2(0x176) EMIT2(0x178) EMIT2(0x1b3) ! EMIT2(0x232) EMIT2(0x24e) EMIT2(0x1e8e) ! EMIT2(0x1ef2) EMIT2(0x1ef4) EMIT2(0x1ef6) ! EMIT2(0x1ef8) ! return OK; ! ! case 'Z': case 0x179: case 0x17b: case 0x17d: ! case 0x1b5: case 0x1e90: case 0x1e92: case 0x1e94: ! case 0x2c6b: ! EMIT2('Z') EMIT2(0x179) EMIT2(0x17b) EMIT2(0x17d) ! EMIT2(0x1b5) EMIT2(0x1e90) EMIT2(0x1e92) ! EMIT2(0x1e94) EMIT2(0x2c6b) ! return OK; ! ! case 'a': case a_grave: case a_acute: case a_circumflex: ! case a_virguilla: case a_diaeresis: case a_ring: ! case 0x101: case 0x103: case 0x105: case 0x1ce: ! case 0x1df: case 0x1e1: case 0x1fb: case 0x201: ! case 0x203: case 0x227: case 0x1d8f: case 0x1e01: ! case 0x1e9a: case 0x1ea1: case 0x1ea3: case 0x1ea5: ! case 0x1ea7: case 0x1ea9: case 0x1eab: case 0x1ead: ! case 0x1eaf: case 0x1eb1: case 0x1eb3: case 0x1eb5: ! case 0x1eb7: case 0x2c65: ! EMIT2('a') EMIT2(a_grave) EMIT2(a_acute) ! EMIT2(a_circumflex) EMIT2(a_virguilla) ! EMIT2(a_diaeresis) EMIT2(a_ring) ! EMIT2(0x101) EMIT2(0x103) EMIT2(0x105) ! EMIT2(0x1ce) EMIT2(0x1df) EMIT2(0x1e1) ! EMIT2(0x1fb) EMIT2(0x201) EMIT2(0x203) ! EMIT2(0x227) EMIT2(0x1d8f) EMIT2(0x1e01) ! EMIT2(0x1e9a) EMIT2(0x1ea1) EMIT2(0x1ea3) ! EMIT2(0x1ea5) EMIT2(0x1ea7) EMIT2(0x1ea9) ! EMIT2(0x1eab) EMIT2(0x1ead) EMIT2(0x1eaf) ! EMIT2(0x1eb1) EMIT2(0x1eb3) EMIT2(0x1eb5) ! EMIT2(0x1eb7) EMIT2(0x2c65) ! return OK; ! ! case 'b': case 0x180: case 0x253: case 0x1d6c: case 0x1d80: ! case 0x1e03: case 0x1e05: case 0x1e07: ! EMIT2('b') EMIT2(0x180) EMIT2(0x253) EMIT2(0x1d6c) ! EMIT2(0x1d80) EMIT2(0x1e03) EMIT2(0x1e05) EMIT2(0x1e07) ! return OK; ! ! case 'c': case c_cedilla: case 0x107: case 0x109: case 0x10b: ! case 0x10d: case 0x188: case 0x23c: case 0x1e09: case 0xa793: ! case 0xa794: ! EMIT2('c') EMIT2(c_cedilla) ! EMIT2(0x107) EMIT2(0x109) EMIT2(0x10b) ! EMIT2(0x10d) EMIT2(0x188) EMIT2(0x23c) ! EMIT2(0x1e09) EMIT2(0xa793) EMIT2(0xa794) ! return OK; ! ! case 'd': case 0x10f: case 0x111: case 0x257: case 0x1d6d: ! case 0x1d81: case 0x1d91: case 0x1e0b: case 0x1e0d: case 0x1e0f: ! case 0x1e11: case 0x1e13: ! EMIT2('d') EMIT2(0x10f) EMIT2(0x111) ! EMIT2(0x257) EMIT2(0x1d6d) EMIT2(0x1d81) ! EMIT2(0x1d91) EMIT2(0x1e0b) EMIT2(0x1e0d) ! EMIT2(0x1e0f) EMIT2(0x1e11) EMIT2(0x1e13) return OK; case 'e': case e_grave: case e_acute: case e_circumflex: ! case e_diaeresis: case 0x113: case 0x115: case 0x117: ! case 0x119: case 0x11b: case 0x205: case 0x207: ! case 0x229: case 0x247: case 0x1d92: case 0x1e15: ! case 0x1e17: case 0x1e19: case 0x1e1b: case 0x1e1d: ! case 0x1eb9: case 0x1ebb: case 0x1ebd: case 0x1ebf: ! case 0x1ec1: case 0x1ec3: case 0x1ec5: case 0x1ec7: ! EMIT2('e') EMIT2(e_grave) EMIT2(e_acute) ! EMIT2(e_circumflex) EMIT2(e_diaeresis) ! EMIT2(0x113) EMIT2(0x115) ! EMIT2(0x117) EMIT2(0x119) EMIT2(0x11b) ! EMIT2(0x205) EMIT2(0x207) EMIT2(0x229) ! EMIT2(0x247) EMIT2(0x1d92) EMIT2(0x1e15) ! EMIT2(0x1e17) EMIT2(0x1e19) EMIT2(0x1e1b) ! EMIT2(0x1e1d) EMIT2(0x1eb9) EMIT2(0x1ebb) ! EMIT2(0x1ebd) EMIT2(0x1ebf) EMIT2(0x1ec1) ! EMIT2(0x1ec3) EMIT2(0x1ec5) EMIT2(0x1ec7) ! return OK; ! ! case 'f': case 0x192: case 0x1d6e: case 0x1d82: ! case 0x1e1f: case 0xa799: ! EMIT2('f') EMIT2(0x192) EMIT2(0x1d6e) EMIT2(0x1d82) ! EMIT2(0x1e1f) EMIT2(0xa799) ! return OK; ! ! case 'g': case 0x11d: case 0x11f: case 0x121: case 0x123: ! case 0x1e5: case 0x1e7: case 0x1f5: case 0x260: case 0x1d83: ! case 0x1e21: case 0xa7a1: ! EMIT2('g') EMIT2(0x11d) EMIT2(0x11f) EMIT2(0x121) ! EMIT2(0x123) EMIT2(0x1e5) EMIT2(0x1e7) ! EMIT2(0x1f5) EMIT2(0x260) EMIT2(0x1d83) ! EMIT2(0x1e21) EMIT2(0xa7a1) ! return OK; ! ! case 'h': case 0x125: case 0x127: case 0x21f: case 0x1e23: ! case 0x1e25: case 0x1e27: case 0x1e29: case 0x1e2b: ! case 0x1e96: case 0x2c68: case 0xa795: ! EMIT2('h') EMIT2(0x125) EMIT2(0x127) EMIT2(0x21f) ! EMIT2(0x1e23) EMIT2(0x1e25) EMIT2(0x1e27) ! EMIT2(0x1e29) EMIT2(0x1e2b) EMIT2(0x1e96) ! EMIT2(0x2c68) EMIT2(0xa795) return OK; case 'i': case i_grave: case i_acute: case i_circumflex: ! case i_diaeresis: case 0x129: case 0x12b: case 0x12d: ! case 0x12f: case 0x1d0: case 0x209: case 0x20b: ! case 0x268: case 0x1d96: case 0x1e2d: case 0x1e2f: ! case 0x1ec9: case 0x1ecb: ! EMIT2('i') EMIT2(i_grave) EMIT2(i_acute) ! EMIT2(i_circumflex) EMIT2(i_diaeresis) ! EMIT2(0x129) EMIT2(0x12b) EMIT2(0x12d) ! EMIT2(0x12f) EMIT2(0x1d0) EMIT2(0x209) ! EMIT2(0x20b) EMIT2(0x268) EMIT2(0x1d96) ! EMIT2(0x1e2d) EMIT2(0x1e2f) EMIT2(0x1ec9) ! EMIT2(0x1ecb) EMIT2(0x1ecb) ! return OK; ! ! case 'j': case 0x135: case 0x1f0: case 0x249: ! EMIT2('j') EMIT2(0x135) EMIT2(0x1f0) EMIT2(0x249) ! return OK; ! ! case 'k': case 0x137: case 0x199: case 0x1e9: case 0x1d84: ! case 0x1e31: case 0x1e33: case 0x1e35: case 0x2c6a: case 0xa741: ! EMIT2('k') EMIT2(0x137) EMIT2(0x199) EMIT2(0x1e9) ! EMIT2(0x1d84) EMIT2(0x1e31) EMIT2(0x1e33) ! EMIT2(0x1e35) EMIT2(0x2c6a) EMIT2(0xa741) ! return OK; ! ! case 'l': case 0x13a: case 0x13c: case 0x13e: case 0x140: ! case 0x142: case 0x19a: case 0x1e37: case 0x1e39: case 0x1e3b: ! case 0x1e3d: case 0x2c61: ! EMIT2('l') EMIT2(0x13a) EMIT2(0x13c) ! EMIT2(0x13e) EMIT2(0x140) EMIT2(0x142) ! EMIT2(0x19a) EMIT2(0x1e37) EMIT2(0x1e39) ! EMIT2(0x1e3b) EMIT2(0x1e3d) EMIT2(0x2c61) ! return OK; ! ! case 'm': case 0x1d6f: case 0x1e3f: case 0x1e41: case 0x1e43: ! EMIT2('m') EMIT2(0x1d6f) EMIT2(0x1e3f) ! EMIT2(0x1e41) EMIT2(0x1e43) ! return OK; ! ! case 'n': case n_virguilla: case 0x144: case 0x146: case 0x148: ! case 0x149: case 0x1f9: case 0x1d70: case 0x1d87: case 0x1e45: ! case 0x1e47: case 0x1e49: case 0x1e4b: case 0xa7a5: ! EMIT2('n') EMIT2(n_virguilla) ! EMIT2(0x144) EMIT2(0x146) EMIT2(0x148) ! EMIT2(0x149) EMIT2(0x1f9) EMIT2(0x1d70) ! EMIT2(0x1d87) EMIT2(0x1e45) EMIT2(0x1e47) ! EMIT2(0x1e49) EMIT2(0x1e4b) EMIT2(0xa7a5) return OK; case 'o': case o_grave: case o_acute: case o_circumflex: ! case o_virguilla: case o_diaeresis: case o_slash: ! case 0x14d: case 0x14f: case 0x151: case 0x1a1: ! case 0x1d2: case 0x1eb: case 0x1ed: case 0x1ff: ! case 0x20d: case 0x20f: case 0x22b: case 0x22d: ! case 0x22f: case 0x231: case 0x275: case 0x1e4d: ! case 0x1e4f: case 0x1e51: case 0x1e53: case 0x1ecd: ! case 0x1ecf: case 0x1ed1: case 0x1ed3: case 0x1ed5: ! case 0x1ed7: case 0x1ed9: case 0x1edb: case 0x1edd: ! case 0x1edf: case 0x1ee1: case 0x1ee3: ! EMIT2('o') EMIT2(o_grave) EMIT2(o_acute) ! EMIT2(o_circumflex) EMIT2(o_virguilla) ! EMIT2(o_diaeresis) EMIT2(o_slash) ! EMIT2(0x14d) EMIT2(0x14f) EMIT2(0x151) ! EMIT2(0x1a1) EMIT2(0x1d2) EMIT2(0x1eb) ! EMIT2(0x1ed) EMIT2(0x1ff) EMIT2(0x20d) ! EMIT2(0x20f) EMIT2(0x22b) EMIT2(0x22d) ! EMIT2(0x22f) EMIT2(0x231) EMIT2(0x275) ! EMIT2(0x1e4d) EMIT2(0x1e4f) EMIT2(0x1e51) ! EMIT2(0x1e53) EMIT2(0x1ecd) EMIT2(0x1ecf) ! EMIT2(0x1ed1) EMIT2(0x1ed3) EMIT2(0x1ed5) ! EMIT2(0x1ed7) EMIT2(0x1ed9) EMIT2(0x1edb) ! EMIT2(0x1edd) EMIT2(0x1edf) EMIT2(0x1ee1) ! EMIT2(0x1ee3) ! return OK; ! ! case 'p': case 0x1a5: case 0x1d71: case 0x1d7d: case 0x1d88: ! case 0x1e55: case 0x1e57: ! EMIT2('p') EMIT2(0x1a5) EMIT2(0x1d71) EMIT2(0x1d7d) ! EMIT2(0x1d88) EMIT2(0x1e55) EMIT2(0x1e57) ! return OK; ! ! case 'q': case 0x24b: case 0x2a0: ! EMIT2('q') EMIT2(0x24b) EMIT2(0x2a0) ! return OK; ! ! case 'r': case 0x155: case 0x157: case 0x159: case 0x211: ! case 0x213: case 0x24d: case 0x27d: case 0x1d72: case 0x1d73: ! case 0x1d89: case 0x1e59: case 0x1e5b: case 0x1e5d: case 0x1e5f: ! case 0xa7a7: ! EMIT2('r') EMIT2(0x155) EMIT2(0x157) EMIT2(0x159) ! EMIT2(0x211) EMIT2(0x213) EMIT2(0x24d) EMIT2(0x27d) ! EMIT2(0x1d72) EMIT2(0x1d73) EMIT2(0x1d89) EMIT2(0x1e59) ! EMIT2(0x1e5b) EMIT2(0x1e5d) EMIT2(0x1e5f) EMIT2(0xa7a7) ! return OK; ! ! case 's': case 0x15b: case 0x15d: case 0x15f: case 0x161: ! case 0x219: case 0x23f: case 0x1d74: case 0x1d8a: case 0x1e61: ! case 0x1e63: case 0x1e65: case 0x1e67: case 0x1e69: case 0xa7a9: ! EMIT2('s') EMIT2(0x15b) EMIT2(0x15d) EMIT2(0x15f) ! EMIT2(0x161) EMIT2(0x219) EMIT2(0x23f) EMIT2(0x1d74) ! EMIT2(0x1d8a) EMIT2(0x1e61) EMIT2(0x1e63) EMIT2(0x1e65) ! EMIT2(0x1e67) EMIT2(0x1e69) EMIT2(0xa7a9) ! return OK; ! ! case 't': case 0x163: case 0x165: case 0x167: case 0x1ab: ! case 0x1ad: case 0x21b: case 0x288: case 0x1d75: case 0x1e6b: ! case 0x1e6d: case 0x1e6f: case 0x1e71: case 0x1e97: case 0x2c66: ! EMIT2('t') EMIT2(0x163) EMIT2(0x165) EMIT2(0x167) ! EMIT2(0x1ab) EMIT2(0x1ad) EMIT2(0x21b) EMIT2(0x288) ! EMIT2(0x1d75) EMIT2(0x1e6b) EMIT2(0x1e6d) EMIT2(0x1e6f) ! EMIT2(0x1e71) EMIT2(0x1e97) EMIT2(0x2c66) return OK; case 'u': case u_grave: case u_acute: case u_circumflex: ! case u_diaeresis: case 0x169: case 0x16b: case 0x16d: ! case 0x16f: case 0x171: case 0x173: case 0x1b0: case 0x1d4: ! case 0x1d6: case 0x1d8: case 0x1da: case 0x1dc: case 0x215: ! case 0x217: case 0x289: case 0x1d7e: case 0x1d99: case 0x1e73: ! case 0x1e75: case 0x1e77: case 0x1e79: case 0x1e7b: ! case 0x1ee5: case 0x1ee7: case 0x1ee9: case 0x1eeb: ! case 0x1eed: case 0x1eef: case 0x1ef1: ! EMIT2('u') EMIT2(u_grave) EMIT2(u_acute) ! EMIT2(u_circumflex) EMIT2(u_diaeresis) ! EMIT2(0x169) EMIT2(0x16b) ! EMIT2(0x16d) EMIT2(0x16f) EMIT2(0x171) ! EMIT2(0x173) EMIT2(0x1d6) EMIT2(0x1d8) ! EMIT2(0x215) EMIT2(0x217) EMIT2(0x1b0) ! EMIT2(0x1d4) EMIT2(0x1da) EMIT2(0x1dc) ! EMIT2(0x289) EMIT2(0x1e73) EMIT2(0x1d7e) ! EMIT2(0x1d99) EMIT2(0x1e75) EMIT2(0x1e77) ! EMIT2(0x1e79) EMIT2(0x1e7b) EMIT2(0x1ee5) ! EMIT2(0x1ee7) EMIT2(0x1ee9) EMIT2(0x1eeb) ! EMIT2(0x1eed) EMIT2(0x1eef) EMIT2(0x1ef1) ! return OK; ! ! case 'v': case 0x28b: case 0x1d8c: case 0x1e7d: case 0x1e7f: ! EMIT2('v') EMIT2(0x28b) EMIT2(0x1d8c) EMIT2(0x1e7d) ! EMIT2(0x1e7f) ! return OK; ! ! case 'w': case 0x175: case 0x1e81: case 0x1e83: case 0x1e85: ! case 0x1e87: case 0x1e89: case 0x1e98: ! EMIT2('w') EMIT2(0x175) EMIT2(0x1e81) EMIT2(0x1e83) ! EMIT2(0x1e85) EMIT2(0x1e87) EMIT2(0x1e89) EMIT2(0x1e98) ! return OK; ! ! case 'x': case 0x1e8b: case 0x1e8d: ! EMIT2('x') EMIT2(0x1e8b) EMIT2(0x1e8d) ! return OK; ! ! case 'y': case y_acute: case y_diaeresis: case 0x177: ! case 0x1b4: case 0x233: case 0x24f: case 0x1e8f: ! case 0x1e99: case 0x1ef3: case 0x1ef5: case 0x1ef7: ! case 0x1ef9: ! EMIT2('y') EMIT2(y_acute) EMIT2(y_diaeresis) ! EMIT2(0x177) EMIT2(0x1b4) EMIT2(0x233) EMIT2(0x24f) ! EMIT2(0x1e8f) EMIT2(0x1e99) EMIT2(0x1ef3) ! EMIT2(0x1ef5) EMIT2(0x1ef7) EMIT2(0x1ef9) ! return OK; ! ! case 'z': case 0x17a: case 0x17c: case 0x17e: case 0x1b6: ! case 0x1d76: case 0x1d8e: case 0x1e91: case 0x1e93: ! case 0x1e95: case 0x2c6c: ! EMIT2('z') EMIT2(0x17a) EMIT2(0x17c) EMIT2(0x17e) ! EMIT2(0x1b6) EMIT2(0x1d76) EMIT2(0x1d8e) EMIT2(0x1e91) ! EMIT2(0x1e93) EMIT2(0x1e95) EMIT2(0x2c6c) return OK; // default: character itself *************** *** 1176,1182 **** EMIT2(c); return OK; #undef EMIT2 ! #undef EMITMBC } /* --- 1332,1338 ---- EMIT2(c); return OK; #undef EMIT2 ! #undef EMIT2 } /* *** ../vim-8.2.2715/src/testdir/test_regexp_utf8.vim 2021-01-02 17:43:44.025175817 +0100 --- src/testdir/test_regexp_utf8.vim 2021-04-05 13:55:16.456666019 +0200 *************** *** 1,18 **** " Tests for regexp in utf8 encoding func s:equivalence_test() ! let str = "AÀÁÂÃÄÅĀĂĄǍǞǠẢ BḂḆ CÇĆĈĊČ DĎĐḊḎḐ EÈÉÊËĒĔĖĘĚẺẼ FḞ GĜĞĠĢǤǦǴḠ HĤĦḢḦḨ IÌÍÎÏĨĪĬĮİǏỈ JĴ KĶǨḰḴ LĹĻĽĿŁḺ MḾṀ NÑŃŅŇṄṈ OÒÓÔÕÖØŌŎŐƠǑǪǬỎ PṔṖ Q RŔŖŘṘṞ SŚŜŞŠṠ TŢŤŦṪṮ UÙÚÛÜŨŪŬŮŰŲƯǓỦ VṼ WŴẀẂẄẆ XẊẌ YÝŶŸẎỲỶỸ ZŹŻŽƵẐẔ aàáâãäåāăąǎǟǡả bḃḇ cçćĉċč dďđḋḏḑ eèéêëēĕėęěẻẽ fḟ gĝğġģǥǧǵḡ hĥħḣḧḩẖ iìíîïĩīĭįǐỉ jĵǰ kķǩḱḵ lĺļľŀłḻ mḿṁ nñńņňʼnṅṉ oòóôõöøōŏőơǒǫǭỏ pṕṗ q rŕŗřṙṟ sśŝşšṡ tţťŧṫṯẗ uùúûüũūŭůűųưǔủ vṽ wŵẁẃẅẇẘ xẋẍ yýÿŷẏẙỳỷỹ zźżžƶẑẕ" let groups = split(str) for group1 in groups for c in split(group1, '\zs') " next statement confirms that equivalence class matches every " character in group ! call assert_match('^[[=' . c . '=]]*$', group1) for group2 in groups if group2 != group1 " next statement converts that equivalence class doesn't match " character in any other group ! call assert_equal(-1, match(group2, '[[=' . c . '=]]')) endif endfor endfor --- 1,18 ---- " Tests for regexp in utf8 encoding func s:equivalence_test() ! let str = "AÀÁÂÃÄÅĀĂĄǍǞǠǺȂȦȺḀẠẢẤẦẨẪẬẮẰẲẴẶ BƁɃḂḄḆ CÇĆĈĊČƇȻḈꞒ DĎĐƊḊḌḎḐḒ EÈÉÊËĒĔĖĘĚȄȆȨɆḔḖḘḚḜẸẺẼẾỀỂỄỆ FƑḞꞘ GĜĞĠĢƓǤǦǴḠꞠ HĤĦȞḢḤḦḨḪⱧ IÌÍÎÏĨĪĬĮİƗǏȈȊḬḮỈỊ JĴɈ KĶƘǨḰḲḴⱩꝀ LĹĻĽĿŁȽḶḸḺḼⱠ MḾṀṂ NÑŃŅŇǸṄṆṈṊꞤ OÒÓÔÕÖØŌŎŐƟƠǑǪǬǾȌȎȪȬȮȰṌṎṐṒỌỎỐỒỔỖỘỚỜỞỠỢ PƤṔṖⱣ QɊ RŔŖŘȐȒɌṘṚṜṞⱤꞦ SŚŜŞŠȘṠṢṤṦṨⱾꞨ TŢŤŦƬƮȚȾṪṬṮṰ UÙÚÛÜŨŪŬŮŰƯǕǙǛǓǗȔȖɄṲṴṶṸṺỤỦỨỪỬỮỰ VƲṼṾ WŴẀẂẄẆẈ XẊẌ YÝŶŸƳȲɎẎỲỴỶỸ ZŹŻŽƵẐẒẔⱫ aàáâãäåāăąǎǟǡǻȃȧᶏḁẚạảấầẩẫậắằẳẵặⱥ bƀɓᵬᶀḃḅḇ cçćĉċčƈȼḉꞓꞔ dďđɗᵭᶁᶑḋḍḏḑḓ eèéêëēĕėęěȅȇȩɇᶒḕḗḙḛḝẹẻẽếềểễệ fƒᵮᶂḟꞙ gĝğġģǥǧǵɠᶃḡꞡ hĥħȟḣḥḧḩḫẖⱨꞕ iìíîïĩīĭįǐȉȋɨᶖḭḯỉị jĵǰɉ kķƙǩᶄḱḳḵⱪꝁ lĺļľŀłƚḷḹḻḽⱡ mᵯḿṁṃ nñńņňʼnǹᵰᶇṅṇṉṋꞥ oòóôõöøōŏőơǒǫǭǿȍȏȫȭȯȱɵṍṏṑṓọỏốồổỗộớờởỡợ pƥᵱᵽᶈṕṗ qɋʠ rŕŗřȑȓɍɽᵲᵳᶉṛṝṟꞧ sśŝşšșȿᵴᶊṡṣṥṧṩꞩ tţťŧƫƭțʈᵵṫṭṯṱẗⱦ uùúûüũūŭůűųǚǖưǔǘǜȕȗʉᵾᶙṳṵṷṹṻụủứừửữự vʋᶌṽṿ wŵẁẃẅẇẉẘ xẋẍ yýÿŷƴȳɏẏẙỳỵỷỹ zźżžƶᵶᶎẑẓẕⱬ" let groups = split(str) for group1 in groups for c in split(group1, '\zs') " next statement confirms that equivalence class matches every " character in group ! call assert_match('^[[=' .. c .. '=]]*$', group1) for group2 in groups if group2 != group1 " next statement converts that equivalence class doesn't match " character in any other group ! call assert_equal(-1, match(group2, '[[=' .. c .. '=]]'), c) endif endfor endfor *************** *** 196,202 **** func Test_reversed_range() for re in range(0, 2) exe 'set re=' . re ! call assert_fails('call match("abc def", "[c-a]")', 'E944:') endfor set re=0 endfunc --- 196,202 ---- func Test_reversed_range() for re in range(0, 2) exe 'set re=' . re ! call assert_fails('call match("abc def", "[c-a]")', 'E944:', re) endfor set re=0 endfunc *** ../vim-8.2.2715/src/version.c 2021-04-05 13:36:30.155371201 +0200 --- src/version.c 2021-04-05 13:57:21.048366517 +0200 *************** *** 752,753 **** --- 752,755 ---- { /* Add new patch number below this line */ + /**/ + 2716, /**/ -- Time is money. Especially if you make clocks. /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ /// \\\ \\\ sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ /// \\\ help me help AIDS victims -- http://ICCF-Holland.org ///