/ Hex Artifact Content
Login

Artifact 701697fae48376375ec8532c3d04e910cfeef352:


0000: 23 21 2f 75 73 72 2f 62 69 6e 2f 61 77 6b 0a 23  #!/usr/bin/awk.#
0010: 0a 23 20 54 68 69 73 20 73 63 72 69 70 74 20 61  .# This script a
0020: 70 70 65 6e 64 73 20 61 64 64 69 74 69 6f 6e 61  ppends additiona
0030: 6c 20 74 6f 6b 65 6e 20 63 6f 64 65 73 20 74 6f  l token codes to
0040: 20 74 68 65 20 65 6e 64 20 6f 66 20 74 68 65 0a   the end of the.
0050: 23 20 70 61 72 73 65 2e 68 20 66 69 6c 65 20 74  # parse.h file t
0060: 68 61 74 20 6c 65 6d 6f 6e 20 67 65 6e 65 72 61  hat lemon genera
0070: 74 65 73 2e 20 20 54 68 65 73 65 20 65 78 74 72  tes.  These extr
0080: 61 20 74 6f 6b 65 6e 20 63 6f 64 65 73 20 61 72  a token codes ar
0090: 65 0a 23 20 6e 6f 74 20 75 73 65 64 20 62 79 20  e.# not used by 
00a0: 74 68 65 20 70 61 72 73 65 72 2e 20 20 42 75 74  the parser.  But
00b0: 20 74 68 65 79 20 61 72 65 20 75 73 65 64 20 62   they are used b
00c0: 79 20 74 68 65 20 74 6f 6b 65 6e 69 7a 65 72 20  y the tokenizer 
00d0: 61 6e 64 2f 6f 72 0a 23 20 74 68 65 20 63 6f 64  and/or.# the cod
00e0: 65 20 67 65 6e 65 72 61 74 6f 72 2e 0a 23 0a 23  e generator..#.#
00f0: 0a 42 45 47 49 4e 20 7b 0a 20 20 6d 61 78 20 3d  .BEGIN {.  max =
0100: 20 30 0a 7d 0a 2f 5e 23 64 65 66 69 6e 65 20 54   0.}./^#define T
0110: 4b 5f 2f 20 7b 0a 20 20 70 72 69 6e 74 20 24 30  K_/ {.  print $0
0120: 0a 20 20 69 66 28 20 6d 61 78 3c 24 33 20 29 20  .  if( max<$3 ) 
0130: 6d 61 78 20 3d 20 24 33 0a 7d 0a 45 4e 44 20 7b  max = $3.}.END {
0140: 0a 20 20 70 72 69 6e 74 66 20 22 23 64 65 66 69  .  printf "#defi
0150: 6e 65 20 54 4b 5f 25 2d 32 39 73 20 25 34 64 5c  ne TK_%-29s %4d\
0160: 6e 22 2c 20 22 54 4f 5f 54 45 58 54 22 2c 20 20  n", "TO_TEXT",  
0170: 20 20 20 20 20 20 20 6d 61 78 2b 31 0a 20 20 70         max+1.  p
0180: 72 69 6e 74 66 20 22 23 64 65 66 69 6e 65 20 54  rintf "#define T
0190: 4b 5f 25 2d 32 39 73 20 25 34 64 5c 6e 22 2c 20  K_%-29s %4d\n", 
01a0: 22 54 4f 5f 42 4c 4f 42 22 2c 20 20 20 20 20 20  "TO_BLOB",      
01b0: 20 20 20 6d 61 78 2b 32 0a 20 20 70 72 69 6e 74     max+2.  print
01c0: 66 20 22 23 64 65 66 69 6e 65 20 54 4b 5f 25 2d  f "#define TK_%-
01d0: 32 39 73 20 25 34 64 5c 6e 22 2c 20 22 54 4f 5f  29s %4d\n", "TO_
01e0: 4e 55 4d 45 52 49 43 22 2c 20 20 20 20 20 20 6d  NUMERIC",      m
01f0: 61 78 2b 33 0a 20 20 70 72 69 6e 74 66 20 22 23  ax+3.  printf "#
0200: 64 65 66 69 6e 65 20 54 4b 5f 25 2d 32 39 73 20  define TK_%-29s 
0210: 25 34 64 5c 6e 22 2c 20 22 54 4f 5f 49 4e 54 22  %4d\n", "TO_INT"
0220: 2c 20 20 20 20 20 20 20 20 20 20 6d 61 78 2b 34  ,          max+4
0230: 0a 20 20 70 72 69 6e 74 66 20 22 23 64 65 66 69  .  printf "#defi
0240: 6e 65 20 54 4b 5f 25 2d 32 39 73 20 25 34 64 5c  ne TK_%-29s %4d\
0250: 6e 22 2c 20 22 54 4f 5f 52 45 41 4c 22 2c 20 20  n", "TO_REAL",  
0260: 20 20 20 20 20 20 20 6d 61 78 2b 35 0a 20 20 70         max+5.  p
0270: 72 69 6e 74 66 20 22 23 64 65 66 69 6e 65 20 54  rintf "#define T
0280: 4b 5f 25 2d 32 39 73 20 25 34 64 5c 6e 22 2c 20  K_%-29s %4d\n", 
0290: 22 45 4e 44 5f 4f 46 5f 46 49 4c 45 22 2c 20 20  "END_OF_FILE",  
02a0: 20 20 20 6d 61 78 2b 36 0a 20 20 70 72 69 6e 74     max+6.  print
02b0: 66 20 22 23 64 65 66 69 6e 65 20 54 4b 5f 25 2d  f "#define TK_%-
02c0: 32 39 73 20 25 34 64 5c 6e 22 2c 20 22 49 4c 4c  29s %4d\n", "ILL
02d0: 45 47 41 4c 22 2c 20 20 20 20 20 20 20 20 20 6d  EGAL",         m
02e0: 61 78 2b 37 0a 20 20 70 72 69 6e 74 66 20 22 23  ax+7.  printf "#
02f0: 64 65 66 69 6e 65 20 54 4b 5f 25 2d 32 39 73 20  define TK_%-29s 
0300: 25 34 64 5c 6e 22 2c 20 22 53 50 41 43 45 22 2c  %4d\n", "SPACE",
0310: 20 20 20 20 20 20 20 20 20 20 20 6d 61 78 2b 38             max+8
0320: 0a 20 20 70 72 69 6e 74 66 20 22 23 64 65 66 69  .  printf "#defi
0330: 6e 65 20 54 4b 5f 25 2d 32 39 73 20 25 34 64 5c  ne TK_%-29s %4d\
0340: 6e 22 2c 20 22 55 4e 43 4c 4f 53 45 44 5f 53 54  n", "UNCLOSED_ST
0350: 52 49 4e 47 22 2c 20 6d 61 78 2b 39 0a 20 20 70  RING", max+9.  p
0360: 72 69 6e 74 66 20 22 23 64 65 66 69 6e 65 20 54  rintf "#define T
0370: 4b 5f 25 2d 32 39 73 20 25 34 64 5c 6e 22 2c 20  K_%-29s %4d\n", 
0380: 22 43 4f 4d 4d 45 4e 54 22 2c 20 20 20 20 20 20  "COMMENT",      
0390: 20 20 20 6d 61 78 2b 31 30 0a 20 20 70 72 69 6e     max+10.  prin
03a0: 74 66 20 22 23 64 65 66 69 6e 65 20 54 4b 5f 25  tf "#define TK_%
03b0: 2d 32 39 73 20 25 34 64 5c 6e 22 2c 20 22 46 55  -29s %4d\n", "FU
03c0: 4e 43 54 49 4f 4e 22 2c 20 20 20 20 20 20 20 20  NCTION",        
03d0: 6d 61 78 2b 31 31 0a 20 20 70 72 69 6e 74 66 20  max+11.  printf 
03e0: 22 23 64 65 66 69 6e 65 20 54 4b 5f 25 2d 32 39  "#define TK_%-29
03f0: 73 20 25 34 64 5c 6e 22 2c 20 22 43 4f 4c 55 4d  s %4d\n", "COLUM
0400: 4e 22 2c 20 20 20 20 20 20 20 20 20 20 6d 61 78  N",          max
0410: 2b 31 32 0a 20 20 70 72 69 6e 74 66 20 22 23 64  +12.  printf "#d
0420: 65 66 69 6e 65 20 54 4b 5f 25 2d 32 39 73 20 25  efine TK_%-29s %
0430: 34 64 5c 6e 22 2c 20 22 41 47 47 5f 46 55 4e 43  4d\n", "AGG_FUNC
0440: 54 49 4f 4e 22 2c 20 20 20 20 6d 61 78 2b 31 33  TION",    max+13
0450: 0a 20 20 70 72 69 6e 74 66 20 22 23 64 65 66 69  .  printf "#defi
0460: 6e 65 20 54 4b 5f 25 2d 32 39 73 20 25 34 64 5c  ne TK_%-29s %4d\
0470: 6e 22 2c 20 22 41 47 47 5f 43 4f 4c 55 4d 4e 22  n", "AGG_COLUMN"
0480: 2c 20 20 20 20 20 20 6d 61 78 2b 31 34 0a 20 20  ,      max+14.  
0490: 70 72 69 6e 74 66 20 22 23 64 65 66 69 6e 65 20  printf "#define 
04a0: 54 4b 5f 25 2d 32 39 73 20 25 34 64 5c 6e 22 2c  TK_%-29s %4d\n",
04b0: 20 22 43 4f 4e 53 54 5f 46 55 4e 43 22 2c 20 20   "CONST_FUNC",  
04c0: 20 20 20 20 6d 61 78 2b 31 35 0a 7d 0a               max+15.}.