Annotation of embedaddon/php/ext/mbstring/libmbfl/mbfl/mk_eaw_tbl.awk, revision 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>