1
0

mkopcodec.awk 1.0 KB

123456789101112131415161718192021222324252627282930313233343536
  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. mx = 0
  21. }
  22. /define OP_/ {
  23. sub("OP_","",$2)
  24. i = $3+0
  25. label[i] = $2
  26. if( mx<i ) mx = i
  27. }
  28. END {
  29. for(i=1; i<=mx; i++){
  30. printf " /* %3d */ \"%s\",\n", i, label[i]
  31. }
  32. print " };"
  33. print " return azName[i];"
  34. print "}"
  35. print "#endif"
  36. }