mirror of
https://github.com/php/php-src.git
synced 2024-10-22 08:47:29 +00:00
81 lines
1.2 KiB
Awk
81 lines
1.2 KiB
Awk
|
#!/usr/bin/awk -f
|
||
|
#
|
||
|
# $Id$
|
||
|
#
|
||
|
# Description: a script to generate east asian width table.
|
||
|
#
|
||
|
|
||
|
BEGIN {
|
||
|
prev = -1
|
||
|
comma = 0
|
||
|
ORS = ""
|
||
|
FS = "[;.|# ]"
|
||
|
print "static const struct {\n\tint begin;\n\tint end;\n} " TABLE_NAME "[] = {\n\t"
|
||
|
}
|
||
|
|
||
|
/^#/ {
|
||
|
}
|
||
|
|
||
|
/^[0-9a-fA-F]+;/ {
|
||
|
if ($2 == "W" || $2 == "F") {
|
||
|
v = ( "0x" $1 ) + 0
|
||
|
if (prev < 0) {
|
||
|
first = v
|
||
|
} else if (v - prev > 1) {
|
||
|
if (comma) {
|
||
|
print ",\n\t"
|
||
|
}
|
||
|
printf("{ 0x%04x, 0x%04x }", first, prev)
|
||
|
first = v
|
||
|
comma = 1
|
||
|
}
|
||
|
prev = v
|
||
|
} else {
|
||
|
if (prev >= 0) {
|
||
|
if (comma) {
|
||
|
print ",\n\t"
|
||
|
}
|
||
|
printf("{ 0x%04x, 0x%04x }", first, prev)
|
||
|
prev = -1
|
||
|
comma = 1
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/^[0-9a-fA-F]+\.\./ {
|
||
|
if ($4 == "W" || $4 == "F") {
|
||
|
vs = ( "0x" $1 ) + 0
|
||
|
ve = ( "0x" $3 ) + 0
|
||
|
if (prev < 0) {
|
||
|
first = vs
|
||
|
} else if (vs - prev > 1) {
|
||
|
if (comma) {
|
||
|
print ",\n\t"
|
||
|
}
|
||
|
printf("{ 0x%04x, 0x%04x }", first, prev)
|
||
|
first = vs
|
||
|
comma = 1
|
||
|
}
|
||
|
prev = ve
|
||
|
} else {
|
||
|
if (prev >= 0) {
|
||
|
if (comma) {
|
||
|
print ",\n\t"
|
||
|
}
|
||
|
printf("{ 0x%04x, 0x%04x }", first, prev)
|
||
|
prev = -1
|
||
|
comma = 1
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
END {
|
||
|
if (prev >= 0) {
|
||
|
if (comma) {
|
||
|
print ",\n\t"
|
||
|
}
|
||
|
printf("{ 0x%04x, 0x%04x }", first, prev)
|
||
|
}
|
||
|
print "\n};\n"
|
||
|
}
|