Return to mk_eaw_tbl.awk CVS log | Up to [ELWIX - Embedded LightWeight unIX -] / embedaddon / php / ext / mbstring / libmbfl / mbfl |
1.1 misho 1: #!/usr/bin/awk -f 2: # 3: # $Id: mk_eaw_tbl.awk 180252 2005-02-20 22:18:09Z moriyoshi $ 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") { 21: v = ( "0x" $1 ) + 0 22: if (prev < 0) { 23: first = v 24: } else if (v - prev > 1) { 25: if (comma) { 26: print ",\n\t" 27: } 28: printf("{ 0x%04x, 0x%04x }", first, prev) 29: first = v 30: comma = 1 31: } 32: prev = v 33: } else { 34: if (prev >= 0) { 35: if (comma) { 36: print ",\n\t" 37: } 38: printf("{ 0x%04x, 0x%04x }", first, prev) 39: prev = -1 40: comma = 1 41: } 42: } 43: } 44: 45: /^[0-9a-fA-F]+\.\./ { 46: if ($4 == "W" || $4 == "F") { 47: vs = ( "0x" $1 ) + 0 48: ve = ( "0x" $3 ) + 0 49: if (prev < 0) { 50: first = vs 51: } else if (vs - prev > 1) { 52: if (comma) { 53: print ",\n\t" 54: } 55: printf("{ 0x%04x, 0x%04x }", first, prev) 56: first = vs 57: comma = 1 58: } 59: prev = ve 60: } else { 61: if (prev >= 0) { 62: if (comma) { 63: print ",\n\t" 64: } 65: printf("{ 0x%04x, 0x%04x }", first, prev) 66: prev = -1 67: comma = 1 68: } 69: } 70: } 71: 72: END { 73: if (prev >= 0) { 74: if (comma) { 75: print ",\n\t" 76: } 77: printf("{ 0x%04x, 0x%04x }", first, prev) 78: } 79: print "\n};\n" 80: }