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>