proctab.c 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205
  1. #include <stdio.h>
  2. #include "awk.h"
  3. #include "y.tab.h"
  4. static char *printname[92] = {
  5. (char *) "FIRSTTOKEN", /* 57346 */
  6. (char *) "PROGRAM", /* 57347 */
  7. (char *) "PASTAT", /* 57348 */
  8. (char *) "PASTAT2", /* 57349 */
  9. (char *) "XBEGIN", /* 57350 */
  10. (char *) "XEND", /* 57351 */
  11. (char *) "NL", /* 57352 */
  12. (char *) "ARRAY", /* 57353 */
  13. (char *) "MATCH", /* 57354 */
  14. (char *) "NOTMATCH", /* 57355 */
  15. (char *) "MATCHOP", /* 57356 */
  16. (char *) "FINAL", /* 57357 */
  17. (char *) "DOT", /* 57358 */
  18. (char *) "ALL", /* 57359 */
  19. (char *) "CCL", /* 57360 */
  20. (char *) "NCCL", /* 57361 */
  21. (char *) "CHAR", /* 57362 */
  22. (char *) "OR", /* 57363 */
  23. (char *) "STAR", /* 57364 */
  24. (char *) "QUEST", /* 57365 */
  25. (char *) "PLUS", /* 57366 */
  26. (char *) "AND", /* 57367 */
  27. (char *) "BOR", /* 57368 */
  28. (char *) "APPEND", /* 57369 */
  29. (char *) "EQ", /* 57370 */
  30. (char *) "GE", /* 57371 */
  31. (char *) "GT", /* 57372 */
  32. (char *) "LE", /* 57373 */
  33. (char *) "LT", /* 57374 */
  34. (char *) "NE", /* 57375 */
  35. (char *) "IN", /* 57376 */
  36. (char *) "ARG", /* 57377 */
  37. (char *) "BLTIN", /* 57378 */
  38. (char *) "BREAK", /* 57379 */
  39. (char *) "CLOSE", /* 57380 */
  40. (char *) "CONTINUE", /* 57381 */
  41. (char *) "DELETE", /* 57382 */
  42. (char *) "DO", /* 57383 */
  43. (char *) "EXIT", /* 57384 */
  44. (char *) "FOR", /* 57385 */
  45. (char *) "FUNC", /* 57386 */
  46. (char *) "SUB", /* 57387 */
  47. (char *) "GSUB", /* 57388 */
  48. (char *) "IF", /* 57389 */
  49. (char *) "INDEX", /* 57390 */
  50. (char *) "LSUBSTR", /* 57391 */
  51. (char *) "MATCHFCN", /* 57392 */
  52. (char *) "NEXT", /* 57393 */
  53. (char *) "NEXTFILE", /* 57394 */
  54. (char *) "ADD", /* 57395 */
  55. (char *) "MINUS", /* 57396 */
  56. (char *) "MULT", /* 57397 */
  57. (char *) "DIVIDE", /* 57398 */
  58. (char *) "MOD", /* 57399 */
  59. (char *) "ASSIGN", /* 57400 */
  60. (char *) "ASGNOP", /* 57401 */
  61. (char *) "ADDEQ", /* 57402 */
  62. (char *) "SUBEQ", /* 57403 */
  63. (char *) "MULTEQ", /* 57404 */
  64. (char *) "DIVEQ", /* 57405 */
  65. (char *) "MODEQ", /* 57406 */
  66. (char *) "POWEQ", /* 57407 */
  67. (char *) "PRINT", /* 57408 */
  68. (char *) "PRINTF", /* 57409 */
  69. (char *) "SPRINTF", /* 57410 */
  70. (char *) "ELSE", /* 57411 */
  71. (char *) "INTEST", /* 57412 */
  72. (char *) "CONDEXPR", /* 57413 */
  73. (char *) "POSTINCR", /* 57414 */
  74. (char *) "PREINCR", /* 57415 */
  75. (char *) "POSTDECR", /* 57416 */
  76. (char *) "PREDECR", /* 57417 */
  77. (char *) "VAR", /* 57418 */
  78. (char *) "IVAR", /* 57419 */
  79. (char *) "VARNF", /* 57420 */
  80. (char *) "CALL", /* 57421 */
  81. (char *) "NUMBER", /* 57422 */
  82. (char *) "STRING", /* 57423 */
  83. (char *) "REGEXPR", /* 57424 */
  84. (char *) "GETLINE", /* 57425 */
  85. (char *) "RETURN", /* 57426 */
  86. (char *) "SPLIT", /* 57427 */
  87. (char *) "SUBSTR", /* 57428 */
  88. (char *) "WHILE", /* 57429 */
  89. (char *) "CAT", /* 57430 */
  90. (char *) "NOT", /* 57431 */
  91. (char *) "UMINUS", /* 57432 */
  92. (char *) "POWER", /* 57433 */
  93. (char *) "DECR", /* 57434 */
  94. (char *) "INCR", /* 57435 */
  95. (char *) "INDIRECT", /* 57436 */
  96. (char *) "LASTTOKEN", /* 57437 */
  97. };
  98. Cell *(*proctab[92])(Node **, int) = {
  99. nullproc, /* FIRSTTOKEN */
  100. program, /* PROGRAM */
  101. pastat, /* PASTAT */
  102. dopa2, /* PASTAT2 */
  103. nullproc, /* XBEGIN */
  104. nullproc, /* XEND */
  105. nullproc, /* NL */
  106. array, /* ARRAY */
  107. matchop, /* MATCH */
  108. matchop, /* NOTMATCH */
  109. nullproc, /* MATCHOP */
  110. nullproc, /* FINAL */
  111. nullproc, /* DOT */
  112. nullproc, /* ALL */
  113. nullproc, /* CCL */
  114. nullproc, /* NCCL */
  115. nullproc, /* CHAR */
  116. nullproc, /* OR */
  117. nullproc, /* STAR */
  118. nullproc, /* QUEST */
  119. nullproc, /* PLUS */
  120. boolop, /* AND */
  121. boolop, /* BOR */
  122. nullproc, /* APPEND */
  123. relop, /* EQ */
  124. relop, /* GE */
  125. relop, /* GT */
  126. relop, /* LE */
  127. relop, /* LT */
  128. relop, /* NE */
  129. instat, /* IN */
  130. arg, /* ARG */
  131. bltin, /* BLTIN */
  132. jump, /* BREAK */
  133. closefile, /* CLOSE */
  134. jump, /* CONTINUE */
  135. awkdelete, /* DELETE */
  136. dostat, /* DO */
  137. jump, /* EXIT */
  138. forstat, /* FOR */
  139. nullproc, /* FUNC */
  140. sub, /* SUB */
  141. gsub, /* GSUB */
  142. ifstat, /* IF */
  143. sindex, /* INDEX */
  144. nullproc, /* LSUBSTR */
  145. matchop, /* MATCHFCN */
  146. jump, /* NEXT */
  147. jump, /* NEXTFILE */
  148. arith, /* ADD */
  149. arith, /* MINUS */
  150. arith, /* MULT */
  151. arith, /* DIVIDE */
  152. arith, /* MOD */
  153. assign, /* ASSIGN */
  154. nullproc, /* ASGNOP */
  155. assign, /* ADDEQ */
  156. assign, /* SUBEQ */
  157. assign, /* MULTEQ */
  158. assign, /* DIVEQ */
  159. assign, /* MODEQ */
  160. assign, /* POWEQ */
  161. printstat, /* PRINT */
  162. awkprintf, /* PRINTF */
  163. awksprintf, /* SPRINTF */
  164. nullproc, /* ELSE */
  165. intest, /* INTEST */
  166. condexpr, /* CONDEXPR */
  167. incrdecr, /* POSTINCR */
  168. incrdecr, /* PREINCR */
  169. incrdecr, /* POSTDECR */
  170. incrdecr, /* PREDECR */
  171. nullproc, /* VAR */
  172. nullproc, /* IVAR */
  173. getnf, /* VARNF */
  174. call, /* CALL */
  175. nullproc, /* NUMBER */
  176. nullproc, /* STRING */
  177. nullproc, /* REGEXPR */
  178. getline, /* GETLINE */
  179. jump, /* RETURN */
  180. split, /* SPLIT */
  181. substr, /* SUBSTR */
  182. whilestat, /* WHILE */
  183. cat, /* CAT */
  184. boolop, /* NOT */
  185. arith, /* UMINUS */
  186. arith, /* POWER */
  187. nullproc, /* DECR */
  188. nullproc, /* INCR */
  189. indirect, /* INDIRECT */
  190. nullproc, /* LASTTOKEN */
  191. };
  192. char *tokname(int n)
  193. {
  194. static char buf[100];
  195. if (n < FIRSTTOKEN || n > LASTTOKEN) {
  196. sprintf(buf, "token %d", n);
  197. return buf;
  198. }
  199. return printname[n-FIRSTTOKEN];
  200. }