| function hex2int(str, i) { | |
| str = tolower(str) | |
| for (i = 1; i <= 16; i++) { | |
| char = substr("0123456789abcdef", i, 1) | |
| lookup[char] = i-1 | |
| } | |
| result = 0 | |
| for (i = 1; i <= length(str); i++) { | |
| result = result * 16 | |
| char = substr(str, i, 1) | |
| result = result + lookup[char] | |
| } | |
| return result | |
| } | |
| function parse_const(str) { | |
| sign = sub(/^-/, "", str) | |
| hex = sub(/^0x/, "", str) | |
| if (hex) | |
| n = hex2int(str) | |
| else | |
| n = str+0 | |
| return sign ? -n : n | |
| } |