1 #!/usr/bin/awk -f 2 # 3 # This AWK script scans the opcodes.h file (which is itself generated by 4 # another awk script) and uses the information gleaned to create the 5 # opcodes.c source file. 6 # 7 # Opcodes.c contains strings which are the symbolic names for the various 8 # opcodes used by the VDBE. These strings are used when disassembling a 9 # VDBE program during tracing or as a result of the EXPLAIN keyword. 10 # 11 BEGIN { 12 print "/* Automatically generated. Do not edit */" 13 print "/* See the mkopcodec.awk script for details. */" 14 printf "#if !defined(SQLITE_OMIT_EXPLAIN)" 15 printf " || !defined(NDEBUG)" 16 printf " || defined(VDBE_PROFILE)" 17 print " || defined(SQLITE_DEBUG)" 18 print "const char *sqlite3OpcodeName(int i){" 19 print " static const char *const azName[] = { \"?\"," 20 } 21 /define OP_/ { 22 sub("OP_","",$2) 23 i++ 24 printf " /* %3d */ \"%s\",\n", $3, $2 25 } 26 END { 27 print " };" 28 print " return azName[i];" 29 print "}" 30 print "#endif" 31 } 32