/ Hex Artifact Content
Login

Artifact 9d87688069e97afd397035613fe5822408a0914e:


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 2b 2b 6d 61 78 0a 20 20 70         ++max.  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 2b 2b 6d 61 78 0a 20 20 70 72 69 6e 74     ++max.  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 2b  NUMERIC",      +
01f0: 2b 6d 61 78 0a 20 20 70 72 69 6e 74 66 20 22 23  +max.  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 2b 2b 6d 61 78  ,          ++max
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 2b 2b 6d 61 78 0a 20 20 70         ++max.  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 49 53 4e 4f 54 22 2c 20 20 20 20 20 20 20 20  "ISNOT",        
02a0: 20 20 20 2b 2b 6d 61 78 0a 20 20 70 72 69 6e 74     ++max.  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 45 4e 44  29s %4d\n", "END
02d0: 5f 4f 46 5f 46 49 4c 45 22 2c 20 20 20 20 20 2b  _OF_FILE",     +
02e0: 2b 6d 61 78 0a 20 20 70 72 69 6e 74 66 20 22 23  +max.  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 49 4c 4c 45 47 41 4c  %4d\n", "ILLEGAL
0310: 22 2c 20 20 20 20 20 20 20 20 20 2b 2b 6d 61 78  ",         ++max
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 53 50 41 43 45 22 2c 20 20 20 20  n", "SPACE",    
0350: 20 20 20 20 20 20 20 2b 2b 6d 61 78 0a 20 20 70         ++max.  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 55 4e 43 4c 4f 53 45 44 5f 53 54 52 49 4e 47  "UNCLOSED_STRING
0390: 22 2c 20 2b 2b 6d 61 78 0a 20 20 70 72 69 6e 74  ", ++max.  print
03a0: 66 20 22 23 64 65 66 69 6e 65 20 54 4b 5f 25 2d  f "#define TK_%-
03b0: 32 39 73 20 25 34 64 5c 6e 22 2c 20 22 46 55 4e  29s %4d\n", "FUN
03c0: 43 54 49 4f 4e 22 2c 20 20 20 20 20 20 20 20 2b  CTION",        +
03d0: 2b 6d 61 78 0a 20 20 70 72 69 6e 74 66 20 22 23  +max.  printf "#
03e0: 64 65 66 69 6e 65 20 54 4b 5f 25 2d 32 39 73 20  define TK_%-29s 
03f0: 25 34 64 5c 6e 22 2c 20 22 43 4f 4c 55 4d 4e 22  %4d\n", "COLUMN"
0400: 2c 20 20 20 20 20 20 20 20 20 20 2b 2b 6d 61 78  ,          ++max
0410: 0a 20 20 70 72 69 6e 74 66 20 22 23 64 65 66 69  .  printf "#defi
0420: 6e 65 20 54 4b 5f 25 2d 32 39 73 20 25 34 64 5c  ne TK_%-29s %4d\
0430: 6e 22 2c 20 22 41 47 47 5f 46 55 4e 43 54 49 4f  n", "AGG_FUNCTIO
0440: 4e 22 2c 20 20 20 20 2b 2b 6d 61 78 0a 20 20 70  N",    ++max.  p
0450: 72 69 6e 74 66 20 22 23 64 65 66 69 6e 65 20 54  rintf "#define T
0460: 4b 5f 25 2d 32 39 73 20 25 34 64 5c 6e 22 2c 20  K_%-29s %4d\n", 
0470: 22 41 47 47 5f 43 4f 4c 55 4d 4e 22 2c 20 20 20  "AGG_COLUMN",   
0480: 20 20 20 2b 2b 6d 61 78 0a 20 20 70 72 69 6e 74     ++max.  print
0490: 66 20 22 23 64 65 66 69 6e 65 20 54 4b 5f 25 2d  f "#define TK_%-
04a0: 32 39 73 20 25 34 64 5c 6e 22 2c 20 22 55 4d 49  29s %4d\n", "UMI
04b0: 4e 55 53 22 2c 20 20 20 20 20 20 20 20 20 20 2b  NUS",          +
04c0: 2b 6d 61 78 0a 20 20 70 72 69 6e 74 66 20 22 23  +max.  printf "#
04d0: 64 65 66 69 6e 65 20 54 4b 5f 25 2d 32 39 73 20  define TK_%-29s 
04e0: 25 34 64 5c 6e 22 2c 20 22 55 50 4c 55 53 22 2c  %4d\n", "UPLUS",
04f0: 20 20 20 20 20 20 20 20 20 20 20 2b 2b 6d 61 78             ++max
0500: 0a 20 20 70 72 69 6e 74 66 20 22 23 64 65 66 69  .  printf "#defi
0510: 6e 65 20 54 4b 5f 25 2d 32 39 73 20 25 34 64 5c  ne TK_%-29s %4d\
0520: 6e 22 2c 20 22 52 45 47 49 53 54 45 52 22 2c 20  n", "REGISTER", 
0530: 20 20 20 20 20 20 20 2b 2b 6d 61 78 0a 20 20 70         ++max.  p
0540: 72 69 6e 74 66 20 22 23 64 65 66 69 6e 65 20 54  rintf "#define T
0550: 4b 5f 25 2d 32 39 73 20 25 34 64 5c 6e 22 2c 20  K_%-29s %4d\n", 
0560: 22 4c 45 56 45 4c 22 2c 20 20 20 20 20 20 20 20  "LEVEL",        
0570: 20 20 20 2b 2b 6d 61 78 0a 7d 0a                    ++max.}.