| OLD | NEW |
| (Empty) |
| 1 #!/usr/bin/tclsh | |
| 2 # | |
| 3 # This script appends additional token codes to the end of the | |
| 4 # parse.h file that lemon generates. These extra token codes are | |
| 5 # not used by the parser. But they are used by the tokenizer and/or | |
| 6 # the code generator. | |
| 7 # | |
| 8 # | |
| 9 set in [open [lindex $argv 0] rb] | |
| 10 set max 0 | |
| 11 while {![eof $in]} { | |
| 12 set line [gets $in] | |
| 13 if {[regexp {^#define TK_} $line]} { | |
| 14 puts $line | |
| 15 set x [lindex $line 2] | |
| 16 if {$x>$max} {set max $x} | |
| 17 } | |
| 18 } | |
| 19 close $in | |
| 20 | |
| 21 # The following are the extra token codes to be added. SPACE and | |
| 22 # ILLEGAL *must* be the last two token codes and they must be in that order. | |
| 23 # | |
| 24 set extras { | |
| 25 TO_TEXT | |
| 26 TO_BLOB | |
| 27 TO_NUMERIC | |
| 28 TO_INT | |
| 29 TO_REAL | |
| 30 ISNOT | |
| 31 END_OF_FILE | |
| 32 UNCLOSED_STRING | |
| 33 FUNCTION | |
| 34 COLUMN | |
| 35 AGG_FUNCTION | |
| 36 AGG_COLUMN | |
| 37 UMINUS | |
| 38 UPLUS | |
| 39 REGISTER | |
| 40 ASTERISK | |
| 41 SPACE | |
| 42 ILLEGAL | |
| 43 } | |
| 44 if {[lrange $extras end-1 end]!="SPACE ILLEGAL"} { | |
| 45 error "SPACE and ILLEGAL must be the last two token codes and they\ | |
| 46 must be in that order" | |
| 47 } | |
| 48 foreach x $extras { | |
| 49 incr max | |
| 50 puts [format "#define TK_%-29s %4d" $x $max] | |
| 51 } | |
| 52 | |
| 53 # Some additional #defines related to token codes. | |
| 54 # | |
| 55 puts "\n/* The token codes above must all fit in 8 bits */" | |
| 56 puts [format "#define %-20s %-6s" TKFLG_MASK 0xff] | |
| 57 puts "\n/* Flags that can be added to a token code when it is not" | |
| 58 puts "** being stored in a u8: */" | |
| 59 foreach {fg val comment} { | |
| 60 TKFLG_DONTFOLD 0x100 {/* Omit constant folding optimizations */} | |
| 61 } { | |
| 62 puts [format "#define %-20s %-6s %s" $fg $val $comment] | |
| 63 } | |
| OLD | NEW |