Annotation of embedaddon/php/ext/mbstring/libmbfl/mbfl/mk_eaw_tbl.awk, revision 1.1.1.1

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: } 

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>