annotate etc/charsets/gb18030-4.awk @ 89072:603b787e6146

(syms_of_syntax) <multibyte-syntax-as-symbol>: Doc fix.
author Dave Love <fx@gnu.org>
date Thu, 05 Sep 2002 17:03:03 +0000
parents 264dcdcfe621
children c1527f26d513
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
88674
264dcdcfe621 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
1 BEGIN {
264dcdcfe621 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
2 tohex["A"] = 10;
264dcdcfe621 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
3 tohex["B"] = 11;
264dcdcfe621 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
4 tohex["C"] = 12;
264dcdcfe621 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
5 tohex["D"] = 13;
264dcdcfe621 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
6 tohex["E"] = 14;
264dcdcfe621 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
7 tohex["F"] = 15;
264dcdcfe621 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
8 tohex["a"] = 10;
264dcdcfe621 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
9 tohex["b"] = 11;
264dcdcfe621 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
10 tohex["c"] = 12;
264dcdcfe621 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
11 tohex["d"] = 13;
264dcdcfe621 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
12 tohex["e"] = 14;
264dcdcfe621 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
13 tohex["f"] = 15;
264dcdcfe621 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
14 }
264dcdcfe621 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
15
264dcdcfe621 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
16 function decode_hex(str) {
264dcdcfe621 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
17 n = 0;
264dcdcfe621 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
18 len = length(str);
264dcdcfe621 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
19 for (i = 1; i <= len; i++)
264dcdcfe621 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
20 {
264dcdcfe621 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
21 c = substr (str, i, 1);
264dcdcfe621 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
22 if (c >= "0" && c <= "9")
264dcdcfe621 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
23 n = n * 16 + (c - "0");
264dcdcfe621 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
24 else
264dcdcfe621 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
25 n = n * 16 + tohex[c];
264dcdcfe621 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
26 }
264dcdcfe621 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
27 return n;
264dcdcfe621 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
28 }
264dcdcfe621 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
29
264dcdcfe621 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
30 function gb_to_index(b0,b1,b2,b3) {
264dcdcfe621 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
31 return ((((b0 - 129) * 10 + (b1 - 48)) * 126 + (b2 - 129)) * 10 + b3 - 48);
264dcdcfe621 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
32 }
264dcdcfe621 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
33
264dcdcfe621 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
34 function index_to_gb(idx) {
264dcdcfe621 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
35 b3 = (idx % 10) + 48;
264dcdcfe621 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
36 idx /= 10;
264dcdcfe621 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
37 b2 = (idx % 126) + 129;
264dcdcfe621 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
38 idx /= 126;
264dcdcfe621 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
39 b1 = (idx % 10) + 48;
264dcdcfe621 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
40 b0 = (idx / 10) + 129;
264dcdcfe621 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
41 return sprintf("%02X%02X%02X%02X", b0, b1, b2, b3);
264dcdcfe621 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
42 }
264dcdcfe621 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
43
264dcdcfe621 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
44 function decode_gb(str) {
264dcdcfe621 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
45 b0 = decode_hex(substr(str, 3, 2));
264dcdcfe621 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
46 b1 = decode_hex(substr(str, 7, 2));
264dcdcfe621 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
47 b2 = decode_hex(substr(str, 11, 2));
264dcdcfe621 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
48 b3 = decode_hex(substr(str, 15, 2));
264dcdcfe621 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
49 return gb_to_index(b0, b1, b2, b3);
264dcdcfe621 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
50 }
264dcdcfe621 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
51
264dcdcfe621 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
52 function printline(from, to) {
264dcdcfe621 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
53 fromgb = index_to_gb(from);
264dcdcfe621 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
54 fromuni = gbtable[from];
264dcdcfe621 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
55 if (from == to)
264dcdcfe621 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
56 printf ("0x%s 0x%04X\n", fromgb, fromuni);
264dcdcfe621 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
57 else
264dcdcfe621 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
58 printf ("0x%s-0x%s 0x%04X\n", fromgb, index_to_gb(to), fromuni);
264dcdcfe621 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
59 }
264dcdcfe621 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
60
264dcdcfe621 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
61 /^<U[0-9A-F][0-9A-F][0-9A-F][0-9A-F]>/ {
264dcdcfe621 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
62 unicode = decode_hex(substr($1, 3, 4));
264dcdcfe621 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
63 if ($2 ~ /\\x8[1-4]\\x3[0-9]\\x[8-9A-F][0-9A-F]\\x3[0-9]/)
264dcdcfe621 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
64 unitable[unicode] = decode_gb($2);
264dcdcfe621 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
65 else
264dcdcfe621 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
66 unitable[unicode] = -1;
264dcdcfe621 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
67 }
264dcdcfe621 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
68
264dcdcfe621 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
69 END {
264dcdcfe621 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
70 lastgb = 0;
264dcdcfe621 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
71 surrogate_min = decode_hex("D800");
264dcdcfe621 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
72 surrogate_max = decode_hex("DFFF");
264dcdcfe621 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
73 lastgb = unitable[128];
264dcdcfe621 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
74 gbtable[lastgb] = 128;
264dcdcfe621 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
75 for (i = 129; i < 65536; i++)
264dcdcfe621 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
76 {
264dcdcfe621 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
77 if (unitable[i] == 0 && (i < surrogate_min || i > surrogate_max))
264dcdcfe621 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
78 {
264dcdcfe621 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
79 lastgb++;
264dcdcfe621 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
80 gbtable[lastgb] = i;
264dcdcfe621 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
81 unitable[i] = lastgb;
264dcdcfe621 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
82 }
264dcdcfe621 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
83 else if (unitable[i] > 0)
264dcdcfe621 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
84 {
264dcdcfe621 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
85 lastgb = unitable[i];
264dcdcfe621 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
86 gbtable[lastgb] = i;
264dcdcfe621 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
87 }
264dcdcfe621 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
88 }
264dcdcfe621 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
89
264dcdcfe621 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
90 fromgb = lastgb = unitable[128];
264dcdcfe621 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
91 for (i = 129; i < 65536; i++)
264dcdcfe621 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
92 {
264dcdcfe621 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
93 if (unitable[i] > 0)
264dcdcfe621 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
94 {
264dcdcfe621 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
95 if (lastgb + 1 == unitable[i])
264dcdcfe621 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
96 {
264dcdcfe621 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
97 lastgb++;
264dcdcfe621 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
98 }
264dcdcfe621 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
99 else
264dcdcfe621 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
100 {
264dcdcfe621 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
101 if (lastgb >= 0)
264dcdcfe621 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
102 printline(fromgb, lastgb);
264dcdcfe621 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
103 fromgb = lastgb = unitable[i];
264dcdcfe621 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
104 }
264dcdcfe621 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
105 }
264dcdcfe621 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
106 else # i.e. (unitable[i] < 0)
264dcdcfe621 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
107 {
264dcdcfe621 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
108 if (lastgb >= 0)
264dcdcfe621 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
109 printline(fromgb, lastgb);
264dcdcfe621 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
110 lastgb = -1;
264dcdcfe621 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
111 }
264dcdcfe621 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
112 }
264dcdcfe621 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
113 printline(fromgb, unitable[65535]);
264dcdcfe621 New file.
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
114 }