mirror of
				https://github.com/sqlite/sqlite.git
				synced 2025-10-30 07:05:46 +03:00 
			
		
		
		
	commentary in the EXPLAIN output. Formerly, this was only available with SQLITE_DEBUG. FossilOrigin-Name: e1a89b56f7173166bb9224e2e360fd67ad3399c3
		
			
				
	
	
		
			51 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Awk
		
	
	
	
	
	
			
		
		
	
	
			51 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Awk
		
	
	
	
	
	
| #!/usr/bin/awk -f
 | |
| #
 | |
| # This AWK script scans the opcodes.h file (which is itself generated by
 | |
| # another awk script) and uses the information gleaned to create the
 | |
| # opcodes.c source file.
 | |
| #
 | |
| # Opcodes.c contains strings which are the symbolic names for the various
 | |
| # opcodes used by the VDBE.  These strings are used when disassembling a
 | |
| # VDBE program during tracing or as a result of the EXPLAIN keyword.
 | |
| #
 | |
| BEGIN {
 | |
|   print "/* Automatically generated.  Do not edit */"
 | |
|   print "/* See the mkopcodec.awk script for details. */"
 | |
|   printf "#if !defined(SQLITE_OMIT_EXPLAIN)"
 | |
|   printf    " || defined(VDBE_PROFILE)"
 | |
|   print     " || defined(SQLITE_DEBUG)"
 | |
|   print "#if defined(SQLITE_ENABLE_EXPLAIN_COMMENTS) || defined(SQLITE_DEBUG)"
 | |
|   print "# define OpHelp(X) \"\\0\" X"
 | |
|   print "#else"
 | |
|   print "# define OpHelp(X)"
 | |
|   print "#endif"
 | |
|   print "const char *sqlite3OpcodeName(int i){"
 | |
|   print " static const char *const azName[] = { \"?\","
 | |
|   mx = 0
 | |
| }
 | |
| /^.define OP_/ {
 | |
|   sub("OP_","",$2)
 | |
|   i = $3+0
 | |
|   label[i] = $2
 | |
|   if( mx<i ) mx = i
 | |
|   for(j=5; j<NF; j++) if( $j=="synopsis:" ) break
 | |
|   if( j<NF ){
 | |
|     j++
 | |
|     x = $j
 | |
|     for(j=j+1; j<NF; j++) x = x " " $j
 | |
|     synopsis[i] = x
 | |
|   }else{
 | |
|     synopsis[i] = ""
 | |
|   }
 | |
| }
 | |
| END {
 | |
|   for(i=1; i<=mx; i++){
 | |
|     printf "     /* %3d */ %-18s OpHelp(\"%s\"),\n", i, \
 | |
|         "\"" label[i] "\"", synopsis[i]
 | |
|   }
 | |
|   print "  };"
 | |
|   print "  return azName[i];"
 | |
|   print "}"
 | |
|   print "#endif"
 | |
| }
 |