Annotation of embedaddon/php/ext/mbstring/libmbfl/mbfl/mk_eaw_tbl.awk, revision 1.1.1.2
1.1 misho 1: #!/usr/bin/awk -f
2: #
1.1.1.2 ! misho 3: # $Id$
1.1 misho 4: #
5: # Description: a script to generate east asian width table.
6: #
7:
8: BEGIN {
9: prev = -1
10: comma = 0
11: ORS = ""
12: FS = "[;.|# ]"
13: print "static const struct {\n\tint begin;\n\tint end;\n} " TABLE_NAME "[] = {\n\t"
14: }
15:
16: /^#/ {
17: }
18:
19: /^[0-9a-fA-F]+;/ {
20: if ($2 == "W" || $2 == "F") {
1.1.1.2 ! misho 21:
! 22: v = strtonum( "0x" $1 )
1.1 misho 23: if (prev < 0) {
24: first = v
25: } else if (v - prev > 1) {
26: if (comma) {
27: print ",\n\t"
28: }
29: printf("{ 0x%04x, 0x%04x }", first, prev)
30: first = v
31: comma = 1
32: }
33: prev = v
34: } else {
35: if (prev >= 0) {
36: if (comma) {
37: print ",\n\t"
38: }
39: printf("{ 0x%04x, 0x%04x }", first, prev)
40: prev = -1
41: comma = 1
42: }
43: }
44: }
45:
46: /^[0-9a-fA-F]+\.\./ {
47: if ($4 == "W" || $4 == "F") {
1.1.1.2 ! misho 48: vs = strtonum( "0x" $1 )
! 49: ve = strtonum( "0x" $3 )
1.1 misho 50: if (prev < 0) {
51: first = vs
52: } else if (vs - prev > 1) {
53: if (comma) {
54: print ",\n\t"
55: }
56: printf("{ 0x%04x, 0x%04x }", first, prev)
57: first = vs
58: comma = 1
59: }
60: prev = ve
61: } else {
62: if (prev >= 0) {
63: if (comma) {
64: print ",\n\t"
65: }
66: printf("{ 0x%04x, 0x%04x }", first, prev)
67: prev = -1
68: comma = 1
69: }
70: }
71: }
72:
73: END {
74: if (prev >= 0) {
75: if (comma) {
76: print ",\n\t"
77: }
78: printf("{ 0x%04x, 0x%04x }", first, prev)
79: }
80: print "\n};\n"
81: }
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>