summaryrefslogtreecommitdiff
path: root/ext/pdo_sqlite/sqlite/mkopcodeh.awk
diff options
context:
space:
mode:
Diffstat (limited to 'ext/pdo_sqlite/sqlite/mkopcodeh.awk')
-rw-r--r--ext/pdo_sqlite/sqlite/mkopcodeh.awk78
1 files changed, 0 insertions, 78 deletions
diff --git a/ext/pdo_sqlite/sqlite/mkopcodeh.awk b/ext/pdo_sqlite/sqlite/mkopcodeh.awk
deleted file mode 100644
index 641b987a81..0000000000
--- a/ext/pdo_sqlite/sqlite/mkopcodeh.awk
+++ /dev/null
@@ -1,78 +0,0 @@
-#!/usr/bin/awk -f
-#
-# Generate the file opcodes.h.
-#
-# This AWK script scans a concatenation of the parse.h output file from the
-# parser and the vdbe.c source file in order to generate the opcodes numbers
-# for all opcodes.
-#
-# The lines of the vdbe.c that we are interested in are of the form:
-#
-# case OP_aaaa: /* same as TK_bbbbb */
-#
-# The TK_ comment is optional. If it is present, then the value assigned to
-# the OP_ is the same as the TK_ value. If missing, the OP_ value is assigned
-# a small integer that is different from every other OP_ value.
-#
-# We go to the trouble of making some OP_ value the same as TK_ values
-# as an optimization. During parsing, things like expression operators
-# are coded with TK_ values such as TK_ADD, TK_DIVIDE, and so forth. Later
-# during code generation, we need to generate corresponding opcodes like
-# OP_Add and OP_Divide. By making TK_ADD==OP_Add and TK_DIVIDE==OP_Divide,
-# code to translation from one to the other is avoided. This makes the
-# code generator run (infinitesimally) faster and more importantly it makes
-# the total library smaller.
-#
-
-# Remember the TK_ values from the parse.h file
-/^#define TK_/ {
- tk[$2] = $3
-}
-
-# Scan for "case OP_aaaa:" lines in the vdbe.c file
-/^case OP_/ {
- name = $2
- gsub(/:/,"",name)
- gsub("\r","",name)
- op[name] = -1
- for(i=3; i<NF-2; i++){
- if($i=="same" && $(i+1)=="as"){
- op[name] = tk[$(i+2)]
- used[op[name]] = 1
- sameas[op[name]] = $(i+2)
- }
- }
-}
-
-# Assign numbers to all opcodes and output the result.
-END {
- cnt = 0
- max = 0
- print "/* Automatically generated. Do not edit */"
- print "/* See the mkopcodeh.awk script for details */"
- for(name in op){
- if( op[name]<0 ){
- cnt++
- while( used[cnt] ) cnt++
- op[name] = cnt
- }
- used[op[name]] = 1;
- if( op[name]>max ) max = op[name]
- printf "#define %-25s %15d", name, op[name]
- if( sameas[op[name]] ) {
- printf " /* same as %-12s*/", sameas[op[name]]
- }
- printf "\n"
-
- }
- seenUnused = 0;
- for(i=1; i<max; i++){
- if( !used[i] ){
- if( !seenUnused ){
- printf "\n/* The following opcode values are never used */\n"
- seenUnused = 1
- }
- printf "#define %-25s %15d\n", sprintf( "OP_NotUsed_%-3d", i ), i
- }
- }
-}