diff --git a/mkopcode.awk b/mkopcode.awk index d5e024b..c881c5d 100755 --- a/mkopcode.awk +++ b/mkopcode.awk @@ -4,18 +4,23 @@ BEGIN { FS=" " max = 0; - delete opcodes; } /^ZEND_VM_HANDLER\(/ { # regex from php5.1+/Zend/zend_vm_gen.php gsub(/ +/, ""); - if (!match($0, /^ZEND_VM_HANDLER\(([0-9]+),([A-Z_]+),([A-Z|]+),([A-Z|]+)\)/, array)) { + if (!match($0, /^ZEND_VM_HANDLER\(([0-9]+),([A-Z_]+),([A-Z|]+),([A-Z|]+)\)/)) { print "error unmatch $0"; exit; } - id = 0 + array[1]; - name = array[2]; + # life is hard without 3rd argument of match() + sub(/^ZEND_VM_HANDLER\(/, ""); + id = $0; + sub(/,.*/, "", id); # chop + id = 0 + id; + sub(/^([0-9]+),/, ""); + sub(/,.*/, ""); # chop + name = $0; if (max < id) { max = id; } diff --git a/mkopcode_spec.awk b/mkopcode_spec.awk index 765e0f6..d10e3b7 100755 --- a/mkopcode_spec.awk +++ b/mkopcode_spec.awk @@ -5,7 +5,6 @@ BEGIN { FS=" " max = 0; started = 0 - delete opcodes; } /OPDEF/ {