home *** CD-ROM | disk | FTP | other *** search
/ pc.louisiana.edu/pub/unix/ / Louisiana_UNIX.tar / Louisiana_UNIX / xspread3.0.zoo / gram.c < prev    next >
C/C++ Source or Header  |  1994-06-02  |  55KB  |  1,587 lines

  1.  
  2. # line 18 "gram.y"
  3. #ifdef DOINGX
  4. #include <stdio.h>
  5. #include <X11/Xlib.h>
  6. #include <X11/Xutil.h>
  7. #else
  8. #include <curses.h>
  9. #endif
  10.  
  11. #ifdef IEEE_MATH
  12. # include <ieeefp.h>
  13. #endif /* IEEE_MATH */
  14.  
  15. #include <math.h>
  16. #include "sc.h"
  17.  
  18. #ifndef PI
  19. #define PI (double)3.14159265358979323846
  20. #endif
  21.  
  22. #define ENULL (struct enode *)0
  23.  
  24. # line 40 "gram.y"
  25. typedef union  {
  26.     int ival;
  27.     double fval;
  28.     struct ent_ptr ent;
  29.     struct enode *enode;
  30.     char *sval;
  31.     struct range_s rval;
  32. } YYSTYPE;
  33. # define STRING 257
  34. # define NUMBER 258
  35. # define FNUMBER 259
  36. # define RANGE 260
  37. # define VAR 261
  38. # define WORD 262
  39. # define COL 263
  40. # define S_FORMAT 264
  41. # define S_FMT 265
  42. # define S_LABEL 266
  43. # define S_LEFTSTRING 267
  44. # define S_RIGHTSTRING 268
  45. # define S_GET 269
  46. # define S_PUT 270
  47. # define S_MERGE 271
  48. # define S_LET 272
  49. # define S_WRITE 273
  50. # define S_TBL 274
  51. # define S_COPY 275
  52. # define S_SHOW 276
  53. # define S_ERASE 277
  54. # define S_FILL 278
  55. # define S_LOCK 279
  56. # define S_UNLOCK 280
  57. # define S_GOTO 281
  58. # define S_DEFINE 282
  59. # define S_UNDEFINE 283
  60. # define S_VALUE 284
  61. # define S_MDIR 285
  62. # define S_HIDE 286
  63. # define S_SET 287
  64. # define K_ERROR 288
  65. # define K_INVALID 289
  66. # define K_FIXED 290
  67. # define K_SUM 291
  68. # define K_PROD 292
  69. # define K_AVG 293
  70. # define K_STDDEV 294
  71. # define K_COUNT 295
  72. # define K_ABS 296
  73. # define K_ACOS 297
  74. # define K_ASIN 298
  75. # define K_ATAN 299
  76. # define K_ATAN2 300
  77. # define K_CEIL 301
  78. # define K_COS 302
  79. # define K_EXP 303
  80. # define K_FABS 304
  81. # define K_FLOOR 305
  82. # define K_HYPOT 306
  83. # define K_LN 307
  84. # define K_LOG 308
  85. # define K_PI 309
  86. # define K_POW 310
  87. # define K_SIN 311
  88. # define K_SQRT 312
  89. # define K_TAN 313
  90. # define K_DTR 314
  91. # define K_RTD 315
  92. # define K_MAX 316
  93. # define K_MIN 317
  94. # define K_RND 318
  95. # define K_ROUND 319
  96. # define K_IF 320
  97. # define K_PV 321
  98. # define K_FV 322
  99. # define K_PMT 323
  100. # define K_HOUR 324
  101. # define K_MINUTE 325
  102. # define K_SECOND 326
  103. # define K_MONTH 327
  104. # define K_DAY 328
  105. # define K_YEAR 329
  106. # define K_NOW 330
  107. # define K_DATE 331
  108. # define K_DTS 332
  109. # define K_TTS 333
  110. # define K_FMT 334
  111. # define K_SUBSTR 335
  112. # define K_UPPER 336
  113. # define K_LOWER 337
  114. # define K_CAPITAL 338
  115. # define K_STON 339
  116. # define K_EQS 340
  117. # define K_EXT 341
  118. # define K_NVAL 342
  119. # define K_SVAL 343
  120. # define K_LOOKUP 344
  121. # define K_HLOOKUP 345
  122. # define K_VLOOKUP 346
  123. # define K_INDEX 347
  124. # define K_STINDEX 348
  125. # define K_AUTO 349
  126. # define K_AUTOCALC 350
  127. # define K_BYROWS 351
  128. # define K_BYCOLS 352
  129. # define K_ITERATIONS 353
  130. # define K_NUMERIC 354
  131. # define K_PRESCALE 355
  132. # define K_EXTFUN 356
  133. # define K_CELLCUR 357
  134. # define K_TOPROW 358
  135. # define K_TBLSTYLE 359
  136. # define K_TBL 360
  137. # define K_LATEX 361
  138. # define K_SLATEX 362
  139. # define K_TEX 363
  140. # define K_FRAME 364
  141. # define K_RNDINFINITY 365
  142. # define K_MYROW 366
  143. # define K_MYCOL 367
  144. # define K_COLTOA 368
  145. # define K_CRACTION 369
  146. # define K_CRROW 370
  147. # define K_CRCOL 371
  148. # define K_ROWLIMIT 372
  149. # define K_COLLIMIT 373
  150. # define K_NUMITER 374
  151. # define K_MATRIX_ADD 375
  152. # define K_MATRIX_SUB 376
  153. # define K_MATRIX_INV 377
  154. # define K_MATRIX_MULT 378
  155. # define K_MATRIX_TRANS 379
  156. # define K_GRAPH 380
  157. #define yyclearin yychar = -1
  158. #define yyerrok yyerrflag = 0
  159. extern int yychar;
  160. extern short yyerrflag;
  161. #ifndef YYMAXDEPTH
  162. #define YYMAXDEPTH 150
  163. #endif
  164. YYSTYPE yylval, yyval;
  165. # define YYERRCODE 256
  166. short yyexca[] ={
  167. -1, 1,
  168.     0, -1,
  169.     -2, 0,
  170. -1, 262,
  171.     60, 0,
  172.     61, 0,
  173.     62, 0,
  174.     33, 0,
  175.     -2, 135,
  176. -1, 265,
  177.     60, 0,
  178.     61, 0,
  179.     62, 0,
  180.     33, 0,
  181.     -2, 136,
  182. -1, 266,
  183.     60, 0,
  184.     61, 0,
  185.     62, 0,
  186.     33, 0,
  187.     -2, 137,
  188. -1, 338,
  189.     60, 0,
  190.     61, 0,
  191.     62, 0,
  192.     33, 0,
  193.     -2, 140,
  194. -1, 339,
  195.     60, 0,
  196.     61, 0,
  197.     62, 0,
  198.     33, 0,
  199.     -2, 142,
  200. -1, 340,
  201.     60, 0,
  202.     61, 0,
  203.     62, 0,
  204.     33, 0,
  205.     -2, 143,
  206. -1, 341,
  207.     60, 0,
  208.     61, 0,
  209.     62, 0,
  210.     33, 0,
  211.     -2, 141,
  212. -1, 349,
  213.     41, 155,
  214.     -2, 46,
  215.     };
  216. # define YYNPROD 196
  217. # define YYLAST 3612
  218. short yyact[]={
  219.  
  220.  476, 475, 141, 142, 246, 139, 140, 143, 144, 145,
  221.  146, 147,  49, 136,  32, 134,  76,  48, 148,  37,
  222.   32,  59,  80,  58,  32,  32,  47,  59,  32,  58,
  223.  474,  46, 130, 408,  26,  75, 407, 336, 335, 254,
  224.  253,  99,   6,  19,   3,   4,   5,   7,  10,   8,
  225.    2,  11,  12,  15,  13,  16,  18,  20,  21,  22,
  226.   23,  24,  17,   9,  14,  25, 252, 245, 244, 243,
  227.  242, 137, 135, 113, 128,  92, 239,  27, 131, 132,
  228.  133,  34,  35,  36, 159, 270, 153, 152, 151, 150,
  229.  149,  79,  78, 114,  52,  53,  55,  60,  61,  62,
  230.   63,  77,  70,  72,  73,  86, 247, 248, 249, 250,
  231.  251, 126,  85, 531,  32,  59, 557,  58, 118, 236,
  232.  529, 119, 506, 120, 528, 505, 504, 115,  87, 505,
  233.   29,  29,  29,  29,  98,  40,  40,  40,  40,  40,
  234.   40, 522, 117,  51,  29,  29,  29,  29,  29,  29,
  235.   29,  40,  29, 521, 473, 255, 256, 257, 258, 259,
  236.  260, 261, 262, 265, 266, 268, 269, 472, 271, 471,
  237.  158,  51,  51,  51, 470, 156, 469, 556,  29, 166,
  238.  157, 167, 555, 158, 164, 532,  28, 554, 156, 154,
  239.  530, 155, 523, 157, 520, 519, 417,  94, 415, 414,
  240.  413, 127,  50, 412, 125, 411, 161, 162, 163, 160,
  241.  168, 410, 333, 237, 238, 332, 167, 331, 158, 240,
  242.  241,  95,  81, 156, 154, 330, 155, 159, 157, 329,
  243.   82,  83,  84, 328, 327,  66,  56,  57,  30,  33,
  244.  159,  31,  56,  57,  30,  33,  39,  31,  30,  33,
  245.   33,  31,  31,  33, 129,  31,  93,  74, 326, 325,
  246.  324, 323, 322, 321, 338, 339,  67,  68, 340, 320,
  247.  165, 341, 319, 318, 317, 159, 316, 315, 348, 351,
  248.  352, 353, 354, 355, 356, 357, 358, 359, 360, 361,
  249.  362, 363, 364, 365, 366, 367, 368, 369, 370, 371,
  250.  372, 373, 374, 375, 376, 377, 378, 379, 380, 381,
  251.  382, 383, 384, 385, 386, 387, 388, 389, 390, 391,
  252.  392, 393, 394, 395, 396, 397, 398, 399, 400, 401,
  253.   56,  57, 314, 313, 312, 124, 121, 122, 409,  33,
  254.  311,  31, 310, 309, 308, 307, 306, 305, 304, 303,
  255.  342, 343, 344, 345, 346, 347, 350,  96,  97, 101,
  256.  100, 107, 102, 103, 104, 105, 106, 108, 116, 302,
  257.  301, 300,  54, 109, 299, 298, 297, 110, 296, 295,
  258.  111, 112, 294, 293, 292, 291, 290, 123, 289, 288,
  259.  287, 286, 285, 284, 283,  64, 282, 281, 280, 279,
  260.   29,  29,  29,  29,  29, 349, 349, 402, 403, 404,
  261.  405, 406, 278, 277, 276, 275, 274, 273, 272,  71,
  262.  477,  65,   1,   0, 478,  38,   0,  88,  89,   0,
  263.  479,  90,  91, 480,  41,  42,  43,  44,  45,   0,
  264.  481, 482, 483, 484, 485,   0,   0,   0,   0,  69,
  265.    0, 486, 487,   0, 488,   0, 489,  29,  29,  29,
  266.   29,  29, 138,   0,   0, 495, 496, 497, 498, 166,
  267.    0, 167,   0, 158, 164,   0,   0, 553, 156, 154,
  268.    0, 155,   0, 157,   0,   0,   0,   0,   0,   0,
  269.    0,   0,   0,   0,   0,   0, 161, 162, 163, 160,
  270.    0,   0,   0,   0,   0,   0, 533,   0,   0,   0,
  271.    0,   0, 534, 535, 536, 537, 538, 539,   0,   0,
  272.    0,   0, 540, 541,   0,   0,   0,   0, 542,   0,
  273.  159,   0,   0,   0,   0,   0,   0, 490, 491, 492,
  274.  493, 494,   0,   0,   0,   0,   0, 499, 500, 501,
  275.  502, 503, 126,   0,   0,  32,   0,   0,   0, 118,
  276.  165,   0, 119,   0, 120, 126,   0,   0,  32,   0,
  277.    0,   0, 118,   0,   0, 119,   0, 120,   0,   0,
  278.  263, 264,   0, 117,   0,   0,   0,  29,  29,  29,
  279.   29,  29,   0,   0,   0,   0, 117,  29,  29,  29,
  280.   29,  29,   0,   0,   0,   0, 543, 544,   0, 545,
  281.    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
  282.    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
  283.    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
  284.    0,   0,   0,   0,   0, 125,   0,   0,   0,   0,
  285.    0,   0,   0,   0,   0,   0,  29,  29, 125,  29,
  286.  169, 170, 171, 172, 173, 176, 177, 178, 179, 180,
  287.  181, 182, 183, 184, 185, 186, 187, 188, 226, 189,
  288.  190, 191, 192, 193, 194, 174, 175, 195, 196, 197,
  289.  198, 199, 200, 201, 202, 203, 204, 205, 206, 207,
  290.  212, 208, 209, 213, 225, 214, 215, 216, 210, 211,
  291.  222, 223, 224, 218, 219, 220, 217, 221,   0,   0,
  292.    0, 126,   0,   0,  32,   0,   0,   0, 118,   0,
  293.    0, 119,   0, 120,   0, 227, 228, 229,   0,   0,
  294.    0,   0,   0, 230, 231, 232, 233, 234, 235, 267,
  295.    0,   0, 117,   0,   0,   0, 166,   0, 167,   0,
  296.  158, 164,   0,   0, 552, 156, 154,   0, 155,   0,
  297.  157,   0,   0,   0,   0,   0, 124, 121, 122,   0,
  298.   33,   0,  31, 161, 162, 163, 160,   0,   0, 124,
  299.  121, 122,  30,  33,   0,  31, 166,   0, 167,   0,
  300.  158, 164,   0,   0, 551, 156, 154,   0, 155, 116,
  301.  157,   0,   0,   0, 125,   0,   0, 159,   0,   0,
  302.    0,   0, 116, 161, 162, 163, 160,   0, 123,   0,
  303.    0,   0,   0,   0, 166,   0, 167,   0, 158, 164,
  304.    0, 123, 550, 156, 154,   0, 155, 165, 157,   0,
  305.    0,   0,   0,   0,   0,   0,   0, 159,   0,   0,
  306.    0, 161, 162, 163, 160,   0,   0,   0,   0, 166,
  307.    0, 167,   0, 158, 164,   0,   0, 549, 156, 154,
  308.  166, 155, 167, 157, 158, 164,   0, 165, 548, 156,
  309.  154,   0, 155,   0, 157, 159, 161, 162, 163, 160,
  310.    0,   0,   0,   0,   0,   0,   0, 161, 162, 163,
  311.  160,   0,   0,   0,   0,   0,   0,   0,   0,   0,
  312.    0,   0,   0,   0,   0, 165,   0,   0,   0,   0,
  313.  159,   0,   0,   0,   0,   0,   0,   0,   0,   0,
  314.    0, 159,   0,   0,   0, 124, 121, 122,   0,  33,
  315.    0,  31,   0, 166,   0, 167,   0, 158, 164,   0,
  316.  165, 547, 156, 154,   0, 155,   0, 157,   0,   0,
  317.    0, 165,   0,   0,   0,   0,   0,   0, 116,   0,
  318.  161, 162, 163, 160,   0,   0,   0,   0,   0,   0,
  319.  166,   0, 167,   0, 158, 164,   0, 123, 546, 156,
  320.  154, 166, 155, 167, 157, 158, 164,   0,   0,   0,
  321.  156, 154, 527, 155, 159, 157,   0, 161, 162, 163,
  322.  160,   0,   0,   0,   0,   0,   0,   0, 161, 162,
  323.  163, 160,   0,   0,   0,   0,   0,   0, 166,   0,
  324.  167,   0, 158, 164, 165,   0, 526, 156, 154,   0,
  325.  155, 159, 157,   0,   0,   0,   0,   0,   0,   0,
  326.    0,   0, 159,   0,   0, 161, 162, 163, 160,   0,
  327.    0,   0,   0,   0, 166,   0, 167,   0, 158, 164,
  328.    0, 165, 525, 156, 154,   0, 155,   0, 157,   0,
  329.    0,   0, 165,   0,   0,   0,   0,   0,   0, 159,
  330.    0, 161, 162, 163, 160,   0,   0,   0,   0, 166,
  331.    0, 167,   0, 158, 164,   0,   0, 524, 156, 154,
  332.    0, 155,   0, 157,   0,   0,   0,   0,   0, 165,
  333.    0,   0,   0,   0,   0, 159, 161, 162, 163, 160,
  334.    0,   0,   0,   0, 166,   0, 167,   0, 158, 164,
  335.    0,   0, 518, 156, 154,   0, 155,   0, 157,   0,
  336.    0,   0,   0,   0,   0, 165,   0,   0,   0,   0,
  337.  159, 161, 162, 163, 160,   0,   0,   0,   0, 166,
  338.    0, 167,   0, 158, 164,   0,   0, 517, 156, 154,
  339.    0, 155,   0, 157,   0,   0,   0,   0,   0,   0,
  340.  165,   0,   0,   0,   0, 159, 161, 162, 163, 160,
  341.    0,   0,   0,   0, 166,   0, 167,   0, 158, 164,
  342.    0,   0,   0, 156, 154, 516, 155,   0, 157,   0,
  343.    0,   0,   0,   0,   0, 165,   0,   0,   0,   0,
  344.  159, 161, 162, 163, 160,   0,   0,   0,   0, 166,
  345.    0, 167,   0, 158, 164,   0,   0,   0, 156, 154,
  346.  515, 155,   0, 157,   0,   0,   0,   0,   0,   0,
  347.  165,   0,   0,   0,   0, 159, 161, 162, 163, 160,
  348.    0,   0,   0,   0, 166,   0, 167,   0, 158, 164,
  349.    0,   0,   0, 156, 154, 514, 155,   0, 157,   0,
  350.    0,   0,   0,   0,   0, 165,   0,   0,   0,   0,
  351.  159, 161, 162, 163, 160,   0,   0,   0,   0, 166,
  352.    0, 167,   0, 158, 164,   0,   0,   0, 156, 154,
  353.  513, 155,   0, 157,   0,   0,   0,   0,   0,   0,
  354.  165,   0,   0,   0,   0, 159, 161, 162, 163, 160,
  355.    0,   0,   0,   0, 166,   0, 167,   0, 158, 164,
  356.    0,   0,   0, 156, 154, 512, 155,   0, 157,   0,
  357.    0,   0,   0,   0,   0, 165,   0,   0,   0,   0,
  358.  159, 161, 162, 163, 160,   0,   0,   0,   0, 166,
  359.    0, 167,   0, 158, 164,   0,   0,   0, 156, 154,
  360.  511, 155,   0, 157,   0,   0,   0,   0,   0,   0,
  361.  165,   0,   0,   0,   0, 159, 161, 162, 163, 160,
  362.    0,   0,   0,   0, 166,   0, 167,   0, 158, 164,
  363.    0,   0, 510, 156, 154,   0, 155,   0, 157,   0,
  364.    0,   0,   0,   0,   0, 165,   0,   0,   0,   0,
  365.  159, 161, 162, 163, 160,   0,   0,   0,   0, 166,
  366.    0, 167,   0, 158, 164,   0,   0, 509, 156, 154,
  367.    0, 155,   0, 157,   0,   0,   0,   0,   0,   0,
  368.  165,   0,   0,   0,   0, 159, 161, 162, 163, 160,
  369.    0,   0,   0,   0, 166,   0, 167,   0, 158, 164,
  370.    0,   0, 508, 156, 154,   0, 155,   0, 157,   0,
  371.    0,   0,   0,   0,   0, 165,   0,   0,   0,   0,
  372.  159, 161, 162, 163, 160,   0,   0,   0,   0, 166,
  373.    0, 167,   0, 158, 164,   0,   0, 507, 156, 154,
  374.    0, 155,   0, 157,   0,   0,   0,   0,   0,   0,
  375.  165,   0,   0,   0,   0, 159, 161, 162, 163, 160,
  376.    0,   0,   0,   0, 166,   0, 167,   0, 158, 164,
  377.    0,   0, 468, 156, 154,   0, 155,   0, 157,   0,
  378.    0,   0,   0,   0,   0, 165,   0,   0,   0,   0,
  379.  159, 161, 162, 163, 160,   0,   0,   0,   0, 166,
  380.    0, 167,   0, 158, 164,   0,   0,   0, 156, 154,
  381.  467, 155,   0, 157,   0,   0,   0,   0,   0,   0,
  382.  165,   0,   0,   0,   0, 159, 161, 162, 163, 160,
  383.    0,   0,   0,   0, 166,   0, 167,   0, 158, 164,
  384.    0,   0,   0, 156, 154, 466, 155,   0, 157,   0,
  385.    0,   0,   0,   0,   0, 165,   0,   0,   0,   0,
  386.  159, 161, 162, 163, 160,   0,   0,   0,   0, 166,
  387.    0, 167,   0, 158, 164,   0,   0,   0, 156, 154,
  388.  465, 155,   0, 157,   0,   0,   0,   0,   0,   0,
  389.  165,   0,   0,   0,   0, 159, 161, 162, 163, 160,
  390.    0,   0,   0,   0, 166,   0, 167,   0, 158, 164,
  391.    0,   0,   0, 156, 154, 464, 155,   0, 157,   0,
  392.    0,   0,   0,   0,   0, 165,   0,   0,   0,   0,
  393.  159, 161, 162, 163, 160,   0,   0,   0,   0, 166,
  394.    0, 167,   0, 158, 164,   0,   0,   0, 156, 154,
  395.  463, 155,   0, 157,   0,   0,   0,   0,   0,   0,
  396.  165,   0,   0,   0,   0, 159, 161, 162, 163, 160,
  397.    0,   0,   0,   0, 166,   0, 167,   0, 158, 164,
  398.    0,   0,   0, 156, 154, 462, 155,   0, 157,   0,
  399.    0,   0,   0,   0,   0, 165,   0,   0,   0,   0,
  400.  159, 161, 162, 163, 160,   0,   0,   0,   0, 166,
  401.    0, 167,   0, 158, 164,   0,   0,   0, 156, 154,
  402.  461, 155,   0, 157,   0,   0,   0,   0,   0,   0,
  403.  165,   0,   0,   0,   0, 159, 161, 162, 163, 160,
  404.    0,   0,   0,   0, 166,   0, 167,   0, 158, 164,
  405.    0,   0,   0, 156, 154, 460, 155,   0, 157,   0,
  406.    0,   0,   0,   0,   0, 165,   0,   0,   0,   0,
  407.  159, 161, 162, 163, 160,   0,   0,   0,   0, 166,
  408.    0, 167,   0, 158, 164,   0,   0,   0, 156, 154,
  409.  459, 155,   0, 157,   0,   0,   0,   0,   0,   0,
  410.  165,   0,   0,   0,   0, 159, 161, 162, 163, 160,
  411.    0,   0,   0,   0, 166,   0, 167,   0, 158, 164,
  412.    0,   0, 458, 156, 154,   0, 155,   0, 157,   0,
  413.    0,   0,   0,   0,   0, 165,   0,   0,   0,   0,
  414.  159, 161, 162, 163, 160,   0,   0,   0,   0, 166,
  415.    0, 167,   0, 158, 164,   0,   0, 457, 156, 154,
  416.    0, 155,   0, 157,   0,   0,   0,   0,   0,   0,
  417.  165,   0,   0,   0,   0, 159, 161, 162, 163, 160,
  418.    0,   0,   0,   0, 166,   0, 167,   0, 158, 164,
  419.    0,   0, 456, 156, 154,   0, 155,   0, 157,   0,
  420.    0,   0,   0,   0,   0, 165,   0,   0,   0,   0,
  421.  159, 161, 162, 163, 160,   0,   0,   0,   0, 166,
  422.    0, 167,   0, 158, 164,   0,   0,   0, 156, 154,
  423.  455, 155,   0, 157,   0,   0,   0,   0,   0,   0,
  424.  165,   0,   0,   0,   0, 159, 161, 162, 163, 160,
  425.    0,   0,   0,   0, 166,   0, 167,   0, 158, 164,
  426.    0,   0, 454, 156, 154,   0, 155,   0, 157,   0,
  427.    0,   0,   0,   0,   0, 165,   0,   0,   0,   0,
  428.  159, 161, 162, 163, 160,   0,   0,   0,   0, 166,
  429.    0, 167,   0, 158, 164,   0,   0,   0, 156, 154,
  430.  453, 155,   0, 157,   0,   0,   0,   0,   0,   0,
  431.  165,   0,   0,   0,   0, 159, 161, 162, 163, 160,
  432.    0,   0,   0,   0, 166,   0, 167,   0, 158, 164,
  433.    0,   0, 452, 156, 154,   0, 155,   0, 157,   0,
  434.    0,   0,   0,   0,   0, 165,   0,   0,   0,   0,
  435.  159, 161, 162, 163, 160,   0,   0,   0,   0, 166,
  436.    0, 167,   0, 158, 164,   0,   0,   0, 156, 154,
  437.  451, 155,   0, 157,   0,   0,   0,   0,   0,   0,
  438.  165,   0,   0,   0,   0, 159, 161, 162, 163, 160,
  439.    0,   0,   0,   0, 166,   0, 167,   0, 158, 164,
  440.    0,   0,   0, 156, 154, 450, 155,   0, 157,   0,
  441.    0,   0,   0,   0,   0, 165,   0,   0,   0,   0,
  442.  159, 161, 162, 163, 160,   0,   0,   0,   0, 166,
  443.    0, 167,   0, 158, 164,   0,   0, 449, 156, 154,
  444.    0, 155,   0, 157,   0,   0,   0,   0,   0,   0,
  445.  165,   0,   0,   0,   0, 159, 161, 162, 163, 160,
  446.    0,   0,   0,   0, 166,   0, 167,   0, 158, 164,
  447.    0,   0, 448, 156, 154,   0, 155,   0, 157,   0,
  448.    0,   0,   0,   0,   0, 165,   0,   0,   0,   0,
  449.  159, 161, 162, 163, 160,   0,   0,   0,   0, 166,
  450.    0, 167,   0, 158, 164,   0,   0, 447, 156, 154,
  451.    0, 155,   0, 157,   0,   0,   0,   0,   0,   0,
  452.  165,   0,   0,   0,   0, 159, 161, 162, 163, 160,
  453.    0,   0,   0,   0, 166,   0, 167,   0, 158, 164,
  454.    0,   0, 446, 156, 154,   0, 155,   0, 157,   0,
  455.    0,   0,   0,   0,   0, 165,   0,   0,   0,   0,
  456.  159, 161, 162, 163, 160,   0,   0,   0,   0, 166,
  457.    0, 167,   0, 158, 164,   0,   0, 445, 156, 154,
  458.    0, 155,   0, 157,   0,   0,   0,   0,   0,   0,
  459.  165,   0,   0,   0,   0, 159, 161, 162, 163, 160,
  460.    0,   0,   0,   0, 166,   0, 167,   0, 158, 164,
  461.    0,   0, 444, 156, 154,   0, 155,   0, 157,   0,
  462.    0,   0,   0,   0,   0, 165,   0,   0,   0,   0,
  463.  159, 161, 162, 163, 160,   0,   0,   0,   0, 166,
  464.    0, 167,   0, 158, 164,   0,   0,   0, 156, 154,
  465.  443, 155,   0, 157,   0,   0,   0,   0,   0,   0,
  466.  165,   0,   0,   0,   0, 159, 161, 162, 163, 160,
  467.    0,   0,   0,   0, 166,   0, 167,   0, 158, 164,
  468.    0,   0,   0, 156, 154, 442, 155,   0, 157,   0,
  469.    0,   0,   0,   0,   0, 165,   0,   0,   0,   0,
  470.  159, 161, 162, 163, 160,   0,   0,   0,   0, 166,
  471.    0, 167,   0, 158, 164,   0,   0,   0, 156, 154,
  472.  441, 155,   0, 157,   0,   0,   0,   0,   0,   0,
  473.  165,   0,   0,   0,   0, 159, 161, 162, 163, 160,
  474.    0,   0,   0,   0, 166,   0, 167,   0, 158, 164,
  475.    0,   0,   0, 156, 154, 440, 155,   0, 157,   0,
  476.    0,   0,   0,   0,   0, 165,   0,   0,   0,   0,
  477.  159, 161, 162, 163, 160,   0,   0,   0,   0, 166,
  478.    0, 167,   0, 158, 164,   0,   0,   0, 156, 154,
  479.  439, 155,   0, 157,   0,   0,   0,   0,   0,   0,
  480.  165,   0,   0,   0,   0, 159, 161, 162, 163, 160,
  481.    0,   0,   0,   0, 166,   0, 167,   0, 158, 164,
  482.    0,   0, 438, 156, 154,   0, 155,   0, 157,   0,
  483.    0,   0,   0,   0,   0, 165,   0,   0,   0,   0,
  484.  159, 161, 162, 163, 160,   0,   0,   0,   0, 166,
  485.    0, 167,   0, 158, 164,   0,   0, 437, 156, 154,
  486.    0, 155,   0, 157,   0,   0,   0,   0,   0,   0,
  487.  165,   0,   0,   0,   0, 159, 161, 162, 163, 160,
  488.    0,   0,   0,   0, 166,   0, 167,   0, 158, 164,
  489.    0,   0, 436, 156, 154,   0, 155,   0, 157,   0,
  490.    0,   0,   0,   0,   0, 165,   0,   0,   0,   0,
  491.  159, 161, 162, 163, 160,   0,   0,   0,   0, 166,
  492.    0, 167,   0, 158, 164,   0,   0, 435, 156, 154,
  493.    0, 155,   0, 157,   0,   0,   0,   0,   0,   0,
  494.  165,   0,   0,   0,   0, 159, 161, 162, 163, 160,
  495.    0,   0,   0,   0, 166,   0, 167,   0, 158, 164,
  496.    0,   0, 434, 156, 154,   0, 155,   0, 157,   0,
  497.    0,   0,   0,   0,   0, 165,   0,   0,   0,   0,
  498.  159, 161, 162, 163, 160,   0,   0,   0,   0, 166,
  499.    0, 167,   0, 158, 164,   0,   0, 433, 156, 154,
  500.    0, 155,   0, 157,   0,   0,   0,   0,   0,   0,
  501.  165,   0,   0,   0,   0, 159, 161, 162, 163, 160,
  502.    0,   0,   0,   0, 166,   0, 167,   0, 158, 164,
  503.    0,   0,   0, 156, 154, 432, 155,   0, 157,   0,
  504.    0,   0,   0,   0,   0, 165,   0,   0,   0,   0,
  505.  159, 161, 162, 163, 160,   0,   0,   0,   0, 166,
  506.    0, 167,   0, 158, 164,   0,   0, 431, 156, 154,
  507.    0, 155,   0, 157,   0,   0,   0,   0,   0,   0,
  508.  165,   0,   0,   0,   0, 159, 161, 162, 163, 160,
  509.    0,   0,   0,   0, 166,   0, 167,   0, 158, 164,
  510.    0,   0, 430, 156, 154,   0, 155,   0, 157,   0,
  511.    0,   0,   0,   0,   0, 165,   0,   0,   0,   0,
  512.  159, 161, 162, 163, 160,   0,   0,   0,   0, 166,
  513.    0, 167,   0, 158, 164,   0,   0,   0, 156, 154,
  514.  429, 155,   0, 157,   0,   0,   0,   0,   0,   0,
  515.  165,   0,   0,   0,   0, 159, 161, 162, 163, 160,
  516.    0,   0,   0,   0, 166,   0, 167,   0, 158, 164,
  517.    0,   0, 428, 156, 154,   0, 155,   0, 157,   0,
  518.    0,   0,   0,   0,   0, 165,   0,   0,   0,   0,
  519.  159, 161, 162, 163, 160,   0,   0,   0,   0, 166,
  520.    0, 167,   0, 158, 164,   0,   0, 427, 156, 154,
  521.    0, 155,   0, 157,   0,   0,   0,   0,   0,   0,
  522.  165,   0,   0,   0,   0, 159, 161, 162, 163, 160,
  523.    0,   0,   0,   0, 166,   0, 167,   0, 158, 164,
  524.    0,   0, 426, 156, 154,   0, 155,   0, 157,   0,
  525.    0,   0,   0,   0,   0, 165,   0,   0,   0,   0,
  526.  159, 161, 162, 163, 160,   0,   0,   0,   0, 166,
  527.    0, 167,   0, 158, 164,   0,   0, 425, 156, 154,
  528.    0, 155,   0, 157,   0,   0,   0,   0,   0,   0,
  529.  165,   0,   0,   0,   0, 159, 161, 162, 163, 160,
  530.    0,   0,   0,   0, 166,   0, 167,   0, 158, 164,
  531.    0,   0, 424, 156, 154,   0, 155,   0, 157,   0,
  532.    0,   0,   0,   0,   0, 165,   0,   0,   0,   0,
  533.  159, 161, 162, 163, 160,   0,   0,   0,   0, 166,
  534.    0, 167,   0, 158, 164,   0,   0,   0, 156, 154,
  535.  423, 155,   0, 157,   0,   0,   0,   0,   0,   0,
  536.  165,   0,   0,   0,   0, 159, 161, 162, 163, 160,
  537.    0,   0,   0,   0, 166,   0, 167,   0, 158, 164,
  538.    0,   0, 422, 156, 154,   0, 155,   0, 157,   0,
  539.    0,   0,   0,   0,   0, 165,   0,   0,   0,   0,
  540.  159, 161, 162, 163, 160,   0,   0,   0,   0, 166,
  541.    0, 167,   0, 158, 164,   0,   0, 421, 156, 154,
  542.    0, 155,   0, 157,   0,   0,   0,   0,   0,   0,
  543.  165,   0,   0,   0,   0, 159, 161, 162, 163, 160,
  544.    0,   0,   0,   0, 166,   0, 167,   0, 158, 164,
  545.    0,   0, 420, 156, 154,   0, 155,   0, 157,   0,
  546.    0,   0,   0,   0,   0, 165,   0,   0,   0,   0,
  547.  159, 161, 162, 163, 160,   0,   0,   0,   0, 166,
  548.    0, 167,   0, 158, 164,   0,   0, 419, 156, 154,
  549.    0, 155,   0, 157,   0,   0,   0,   0,   0,   0,
  550.  165,   0,   0,   0,   0, 159, 161, 162, 163, 160,
  551.    0,   0,   0,   0, 166,   0, 167,   0, 158, 164,
  552.    0,   0,   0, 156, 154, 418, 155,   0, 157,   0,
  553.    0,   0,   0,   0,   0, 165,   0,   0,   0,   0,
  554.  159, 161, 162, 163, 160,   0,   0,   0,   0, 166,
  555.    0, 167,   0, 158, 164,   0,   0,   0, 156, 154,
  556.  416, 155,   0, 157,   0,   0,   0,   0,   0,   0,
  557.  165,   0,   0,   0,   0, 159, 161, 162, 163, 160,
  558.    0,   0,   0,   0, 166,   0, 167,   0, 158, 164,
  559.    0,   0,   0, 156, 154,   0, 155,   0, 157,   0,
  560.    0,   0,   0,   0,   0, 165,   0,   0,   0, 337,
  561.  159, 161, 162, 163, 160,   0,   0,   0,   0, 166,
  562.    0, 167,   0, 158, 164,   0,   0, 334, 156, 154,
  563.    0, 155,   0, 157,   0,   0,   0,   0,   0,   0,
  564.  165,   0,   0,   0,   0, 159, 161, 162, 163, 160,
  565.    0,   0,   0,   0, 166,   0, 167,   0, 158, 164,
  566.    0,   0,   0, 156, 154,   0, 155,   0, 157,   0,
  567.    0,   0,   0,   0,   0, 165,   0,   0,   0,   0,
  568.  159, 161, 162, 163, 160, 166,   0, 167,   0, 158,
  569.  164,   0,   0,   0, 156, 154,   0, 155,   0, 157,
  570.    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
  571.  165,   0, 161, 162, 163, 159,   0,   0,   0,   0,
  572.  166,   0, 167,   0, 158, 164,   0,   0,   0, 156,
  573.  154,   0, 155,   0, 157,   0,   0,   0,   0,   0,
  574.    0,   0,   0,   0,   0, 165, 159, 161, 162, 163,
  575.  166,   0, 167,   0, 158,   0,   0,   0,   0, 156,
  576.  154,   0, 155,   0, 157,   0,   0,   0,   0,   0,
  577.    0,   0,   0,   0,   0,   0, 165, 161, 162, 163,
  578.    0, 159,   0,   0,   0,   0,   0,   0,   0,   0,
  579.    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
  580.    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
  581.    0, 159 };
  582. short yypact[]={
  583.  
  584. -222,-1000, -12, -12, -12, -12,-244, -11, -11, -11,
  585.  -11, -11, -11,-232,-246, -12, -12, -12, -16, -12,
  586.  -12, -12, -22, -11, -12,-1000,-1000,  42,-1000,  46,
  587. -1000,  -1,-247,-1000,  40,  31,  30, -36,-1000,-1000,
  588. -1000,-1000,-1000, -12, -12, -12,  54,  47,-1000,-1000,
  589.  -12,  46,-1000,-1000,  72,  72,-1000,-1000,  72,  72,
  590. -182,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000, -12,
  591. -1000,   8,  78,  -8,-1000,-184,  -4,  78,  78,  78,
  592. -248,-186,-1000,-1000,-1000,-250,-187,-1000,-1000,  72,
  593. -1000,-1000,-1000,-1000,  46,-1000,-1000,-1000,-344,-347,
  594. -1000,-1000,-1000,-1000,-1000,-1000,-1000,  29,  28,-1000,
  595.   27,  26,  25,3421,-1000,-1000,  78, 369,  78,  78,
  596.   78, -19,-1000,-1000,-1000,  78,  78,-1000,-1000,-1000,
  597. -188,3421,3421,3421,-189,-190,-1000,-1000,-1000,-1000,
  598. -1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-191,
  599. -254,-192,-218,-219,  78,  78,  78,  78,  78,  78,
  600.   78, 519,  78, 688,  78,  78,  24,  78,-1000, 378,
  601.  377, 376, 375, 374, 373, 372, 359, 358, 357, 356,
  602.  354, 353, 352, 351, 350, 349, 348, 346, 345, 344,
  603.  343, 342, 339, 338, 336, 335, 334, 331, 330, 329,
  604.  309, 308, 307, 306, 305, 304, 303,-1000, 302, 300,
  605.  294, 293, 292, 237, 236, 234, 233, 232, 229, 223,
  606.  222, 221, 220, 219, 218, 194,-1000,-1000,-1000, 193,
  607. -1000, 189, 185, 177, 175, 172,3386,-1000,-1000,-220,
  608. -1000,-1000,-1000,-221,-1000,-1000,-1000,-1000,-1000,-1000,
  609. -1000,-1000,-1000,-1000,-1000, 133, 133, -10, -10, -10,
  610. -1000,3351, 181,  78,  78, 181, 181,  78,3517,3487,
  611.   78, 133, -12, -12, -12, -12, -12, 532, 532,  78,
  612.   78,  78,  78,  78,  78,  78,  78,  78,  78,  78,
  613.   78,  78,  78,  78,  78,  78,  78,  78,  78,  78,
  614.   78,  78,  78,  78,  78,  78,  78,  78,  78,  78,
  615.   78,  78,  78,  78,  78,  78,  78,  78,  78,  78,
  616.   78,  78,  78,  78,  78,  78,  78,  78,  78, -12,
  617.  -12, -12, -12, -12,-1000, -59,-225,  78, 181, 181,
  618.  181, 181, 170, 164, 162, 159, 158, 157,3316,  46,
  619.  155,3281,3246,3211,3176,3141,3106,3071,3036,3001,
  620. 2966,2931,2896,2861,2826,2791,2756,2721,2686,2651,
  621. 2616,2581,2546,2511,2476,2441,2406,2371,2336,2301,
  622. 2266,2231,2196,2161,2126,2091,2056,2021,1986,1951,
  623. 1916,1881,1846,1811,1776,1741,1706,1671,1636,1601,
  624. 1566,1531, 132, 130, 125, 123, 110,-228,-1000,3452,
  625. -1000,-1000,-1000,-1000,-1000,-1000,  78,-1000,  78,-1000,
  626. -1000,-1000,-1000,  78,-1000,-1000,-1000,-1000,-1000,  78,
  627. -1000,-1000,  78,-1000,-1000,-1000,-1000,-1000,-1000,  78,
  628.   78,  78,  78,  78,-1000,-1000,-1000,-1000,-1000,-1000,
  629.   78,  78,-1000,  78,-1000,  78,-1000,-1000,-1000, -12,
  630.  -12, -12, -12, -12,  78,  78,  78,  78,-1000, -12,
  631.  -12, -12, -12, -12,-1000,  85,3421,  81,1496,1461,
  632. 1426,1391,1356,1321,1286,1251,1216,1181,1146,1111,
  633.  154, 153, 109,  97, 151,1076,1041,1005, 968,  80,
  634.   76, 149,  69, 144,-1000,  78,-1000,-1000,-1000,-1000,
  635. -1000,  78,  78,  78,  78,  78,  78,-1000,-1000,-1000,
  636. -1000,  78,  78,-1000,-1000,-1000,-1000,  78, -12, -12,
  637. -1000, -12,-1000,3421, 957, 920, 847, 836, 801, 763,
  638.  723, 436, 146, 141, 136,  75,-1000,-1000,-1000,-1000,
  639. -1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000 };
  640. short yypgo[]={
  641.  
  642.    0, 127, 372, 186,  77, 425,   0,  93,   1, 422,
  643.  421, 419, 221 };
  644. short yyr1[]={
  645.  
  646.    0,   9,   9,   9,   9,   9,   9,   9,   9,   9,
  647.    9,   9,   9,   9,   9,   9,   9,   9,   9,   9,
  648.    9,   9,   9,   9,   9,   9,   9,   9,   9,   9,
  649.    9,   9,   9,   9,   9,   9,   9,   9,   9,   9,
  650.    9,   9,   9,   9,   9,   9,   7,   7,   7,   7,
  651.    7,   7,   7,   7,   7,   7,   7,   7,   7,   7,
  652.    7,   7,   7,   7,   7,   7,   7,   7,   7,   7,
  653.    7,   7,   7,   7,   7,   7,   7,   7,   7,   7,
  654.    7,   7,   7,   7,   7,   7,   7,   7,   7,   7,
  655.    7,   7,   7,   7,   7,   7,   7,   7,   7,   7,
  656.    7,   7,   7,   7,   7,   7,   7,   7,   7,   7,
  657.    7,   7,   7,   7,   7,   7,   7,   7,   7,   7,
  658.    7,   7,   7,   7,   7,   7,   7,   6,   6,   6,
  659.    6,   6,   6,   6,   6,   6,   6,   6,   6,   6,
  660.    6,   6,   6,   6,   6,   8,   8,   3,   3,   1,
  661.    1,   1,   1,   1,   4,   4,   2,   2,   2,   2,
  662.    5,   5,  11,  11,  12,  12,  12,  12,  12,  12,
  663.   12,  12,  12,  12,  12,  12,  12,  12,  12,  12,
  664.   12,  12,  12,  12,  12,  12,  12,  12,  12,  12,
  665.   12,  12,  12,  12,  10,  10 };
  666. short yyr2[]={
  667.  
  668.    0,   4,   4,   4,   4,   7,   5,   6,   4,   2,
  669.    2,   2,   3,   2,   3,   2,   3,   2,   4,   4,
  670.    2,   2,   3,   1,   2,   1,   2,   3,   4,   3,
  671.    1,   2,   1,   2,   2,   2,   2,   2,   1,   2,
  672.    3,   3,   2,   2,   0,   1,   1,   2,   5,   5,
  673.    5,   5,   5,   5,   7,   5,   7,   5,   5,   5,
  674.    5,   7,   5,   5,   5,   5,   5,   7,   5,   5,
  675.    7,   5,   5,   5,   5,   5,   5,   7,   9,   9,
  676.    9,   9,   5,   5,   5,   5,   5,   5,   2,   9,
  677.    9,   5,   7,   5,   7,   5,   5,   5,   7,   7,
  678.    9,   9,   7,   7,   7,   7,   9,   3,   2,   2,
  679.    1,   1,   5,   1,   2,   1,   2,   2,   2,   2,
  680.    5,   2,   9,   9,   7,   9,   7,   3,   3,   3,
  681.    3,   3,   3,   1,   5,   3,   3,   3,   3,   3,
  682.    4,   4,   4,   4,   3,   1,   3,   3,   1,   2,
  683.    3,   3,   4,   1,   1,   1,   1,   1,   2,   2,
  684.    1,   1,   0,   2,   1,   1,   2,   2,   2,   2,
  685.    1,   1,   1,   2,   1,   2,   1,   2,   1,   2,
  686.    1,   2,   3,   3,   3,   3,   3,   3,   3,   1,
  687.    2,   3,   3,   3,   1,   1 };
  688. short yychk[]={
  689.  
  690. -1000,  -9, 272, 266, 267, 268, 264, 269, 271, 285,
  691.  270, 273, 274, 276, 286, 275, 277, 284, 278, 265,
  692.  279, 280, 281, 282, 283, 287, 256,  -4,  -3,  -1,
  693.  260, 263,  36, 261,  -4,  -4,  -4, 263,  -5, 257,
  694.   -1,  -5,  -5,  -5,  -5,  -5, 263, 258, 263, 258,
  695.   -3,  -1,  -4,  -4,  -2,  -4, 258, 259,  45,  43,
  696.   -4,  -4,  -4,  -4,  -2, -10, 257, 288, 289,  -5,
  697.   -4, -11,  61,  58, 258,  36, 263,  61,  61,  61,
  698.   58, 258,  -3,  -3,  -3,  58,  58,  -4,  -2,  -2,
  699.   -2,  -2, 257,  -3,  -1, -12, 349, 350, 126,  33,
  700.  352, 351, 354, 355, 356, 357, 358, 353, 359, 365,
  701.  369, 372, 373,  -6,  -7,  -1, 290,  64,  40,  43,
  702.   45, 258, 259, 309, 257, 126,  33,  -1, 258, 258,
  703.   36,  -6,  -6,  -6, 263, 258, 263, 258,  -2, 349,
  704.  350, 349, 350, 354, 355, 356, 357, 358, 365,  61,
  705.   61,  61,  61,  61,  43,  45,  42,  47,  37,  94,
  706.   63,  60,  61,  62,  38, 124,  33,  35,  -7, 291,
  707.  292, 293, 294, 295, 316, 317, 296, 297, 298, 299,
  708.  300, 301, 302, 303, 304, 305, 306, 307, 308, 310,
  709.  311, 312, 313, 314, 315, 318, 319, 320, 321, 322,
  710.  323, 324, 325, 326, 327, 328, 329, 330, 332, 333,
  711.  339, 340, 331, 334, 336, 337, 338, 347, 344, 345,
  712.  346, 348, 341, 342, 343, 335, 309, 366, 367, 368,
  713.  374, 375, 376, 377, 378, 379,  -6,  -7,  -7,  95,
  714.   -7,  -7, 258, 258, 258, 258, 258, 360, 361, 362,
  715.  363, 364, 258, 258, 258,  -6,  -6,  -6,  -6,  -6,
  716.   -6,  -6,  -6,  61,  62,  -6,  -6,  61,  -6,  -6,
  717.   61,  -6,  40,  40,  40,  40,  40,  40,  40,  40,
  718.   40,  40,  40,  40,  40,  40,  40,  40,  40,  40,
  719.   40,  40,  40,  40,  40,  40,  40,  40,  40,  40,
  720.   40,  40,  40,  40,  40,  40,  40,  40,  40,  40,
  721.   40,  40,  40,  40,  40,  40,  40,  40,  40,  40,
  722.   40,  40,  40,  40,  40,  40,  40,  40,  40,  40,
  723.   40,  40,  40,  40,  41, 258, 258,  58,  -6,  -6,
  724.   -6,  -6,  -4,  -4,  -4,  -4,  -4,  -4,  -6,  -1,
  725.   -4,  -6,  -6,  -6,  -6,  -6,  -6,  -6,  -6,  -6,
  726.   -6,  -6,  -6,  -6,  -6,  -6,  -6,  -6,  -6,  -6,
  727.   -6,  -6,  -6,  -6,  -6,  -6,  -6,  -6,  -6,  -6,
  728.   -6,  -6,  -6,  -6,  -6,  -6,  -6,  -6,  -6,  -6,
  729.   -6,  -6,  -6,  -6,  -6,  -6,  -6,  -6,  -6,  -6,
  730.   -6,  -6,  -4,  -4,  -4,  -4,  -4,  95, 258,  -6,
  731.   41,  41,  41,  41,  41,  41,  44,  41,  44,  41,
  732.   41,  41,  41,  44,  41,  41,  41,  41,  41,  44,
  733.   41,  41,  44,  41,  41,  41,  41,  41,  41,  44,
  734.   44,  44,  44,  44,  41,  41,  41,  41,  41,  41,
  735.   44,  44,  41,  44,  41,  44,  41,  41,  41,  44,
  736.   44,  44,  44,  44,  44,  44,  44,  44,  41,  44,
  737.   44,  44,  44,  44, 258,  -8,  -6,  -8,  -6,  -6,
  738.   -6,  -6,  -6,  -6,  -6,  -6,  -6,  -6,  -6,  -6,
  739.   -4,  -4,  -4,  -4,  -4,  -6,  -6,  -6,  -6,  -4,
  740.   -4,  -4,  -4,  -4,  41,  44,  41,  41,  41,  41,
  741.   41,  44,  44,  44,  44,  44,  44,  41,  41,  41,
  742.   41,  44,  44,  41,  41,  41,  41,  44,  44,  44,
  743.   41,  44,  41,  -6,  -6,  -6,  -6,  -6,  -6,  -6,
  744.   -6,  -6,  -6,  -4,  -4,  -4,  41,  41,  41,  41,
  745.   41,  41,  41,  41,  41,  41,  41,  41 };
  746. short yydef[]={
  747.  
  748.   44,  -2,   0,   0,   0,   0,   0,   0,   0,   0,
  749.    0,   0,   0,   0,   0,   0,  23,  25,   0,   0,
  750.   30,  32,  38,   0,   0, 162,  45,   0, 154, 155,
  751.  148,   0,   0, 153,   0,   0,   0,   0,   9, 160,
  752.  161,  10,  11,  13,  15,  17,   0,   0,  20,  21,
  753.    0,   0,  24,  26,   0,   0, 156, 157,   0,   0,
  754.    0,  31,  33,  34,  35,  36,  37, 194, 195,  39,
  755.   42,  43,   0,   0, 149,   0,   0,   0,   0,   0,
  756.    0,   0,  12,  14,  16,   0,   0,  22,  27,   0,
  757.  158, 159,  29,  40,  41, 163, 164, 165,   0,   0,
  758.  170, 171, 172, 174, 176, 178, 180,   0,   0, 189,
  759.    0,   0,   0,   1, 133,  46,   0,   0,   0,   0,
  760.    0, 110, 111, 113, 115,   0,   0, 147, 151, 150,
  761.    0,   2,   3,   4,   0,   8,  18,  19,  28, 166,
  762.  167, 168, 169, 173, 175, 177, 179, 181, 190,   0,
  763.    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
  764.    0,   0,   0,   0,   0,   0,   0,   0,  47,   0,
  765.    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
  766.    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
  767.    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
  768.    0,   0,   0,   0,   0,   0,   0,  88,   0,   0,
  769.    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
  770.    0,   0,   0,   0,   0,   0, 114, 118, 119,   0,
  771.  121,   0,   0,   0,   0,   0,   0, 108, 109,   0,
  772.  116, 117, 152,   0,   6, 182, 183, 184, 185, 186,
  773.  187, 188, 191, 192, 193, 127, 128, 129, 130, 131,
  774.  132,   0,  -2,   0,   0,  -2,  -2,   0, 138, 139,
  775.    0, 144,   0,   0,   0,   0,   0,   0,   0,   0,
  776.    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
  777.    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
  778.    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
  779.    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
  780.    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
  781.    0,   0,   0,   0, 107,   0,   7,   0,  -2,  -2,
  782.   -2,  -2,   0,   0,   0,   0,   0,   0,   0,  -2,
  783.    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
  784.    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
  785.    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
  786.    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
  787.    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
  788.    0,   0,   0,   0,   0,   0,   0,   0,   5, 134,
  789.   48,  49,  50,  51,  52,  53,   0,  55,   0,  57,
  790.   58,  59,  60,   0,  62,  63,  64,  65,  66,   0,
  791.   68,  69,   0,  71,  72,  73,  74,  75,  76,   0,
  792.    0,   0,   0,   0,  82,  83,  84,  85,  86,  87,
  793.    0,   0,  91,   0,  93,   0,  95,  96,  97,   0,
  794.    0,   0,   0,   0,   0,   0,   0,   0, 120,   0,
  795.    0,   0,   0,   0, 112,   0, 145,   0,   0,   0,
  796.    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
  797.    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
  798.    0,   0,   0,   0,  54,   0,  56,  61,  67,  70,
  799.   77,   0,   0,   0,   0,   0,   0,  92,  94,  98,
  800.   99,   0,   0, 102, 103, 104, 105,   0,   0,   0,
  801.  124,   0, 126, 146,   0,   0,   0,   0,   0,   0,
  802.    0,   0,   0,   0,   0,   0,  78,  79,  80,  81,
  803.   89,  90, 100, 101, 106, 122, 123, 125 };
  804. #ifndef lint
  805. static char yaccpar_sccsid[] = "@(#)yaccpar    4.1    (Berkeley)    2/11/83";
  806. #endif
  807.  
  808. #
  809. # define YYFLAG -1000
  810. # define YYERROR goto yyerrlab
  811. # define YYACCEPT return(0)
  812. # define YYABORT return(1)
  813.  
  814. /*    parser for yacc output    */
  815.  
  816. #ifdef YYDEBUG
  817. int yydebug = 0; /* 1 for debugging */
  818. #endif
  819. YYSTYPE yyv[YYMAXDEPTH]; /* where the values are stored */
  820. int yychar = -1; /* current input token number */
  821. int yynerrs = 0;  /* number of errors */
  822. short yyerrflag = 0;  /* error recovery flag */
  823.  
  824. yyparse() {
  825.  
  826.     short yys[YYMAXDEPTH];
  827.     short yyj, yym;
  828.     register YYSTYPE *yypvt;
  829.     register short yystate, *yyps, yyn;
  830.     register YYSTYPE *yypv;
  831.     register short *yyxi;
  832.  
  833.     yystate = 0;
  834.     yychar = -1;
  835.     yynerrs = 0;
  836.     yyerrflag = 0;
  837.     yyps= &yys[-1];
  838.     yypv= &yyv[-1];
  839.  
  840.  yystack:    /* put a state and value onto the stack */
  841.  
  842. #ifdef YYDEBUG
  843.     if( yydebug  ) printf( "state %d, char 0%o\n", yystate, yychar );
  844. #endif
  845.         if( ++yyps> &yys[YYMAXDEPTH] ) { yyerror( "yacc stack overflow" ); return(1); }
  846.         *yyps = yystate;
  847.         ++yypv;
  848.         *yypv = yyval;
  849.  
  850.  yynewstate:
  851.  
  852.     yyn = yypact[yystate];
  853.  
  854.     if( yyn<= YYFLAG ) goto yydefault; /* simple state */
  855.  
  856.     if( yychar<0 ) if( (yychar=yylex())<0 ) yychar=0;
  857.     if( (yyn += yychar)<0 || yyn >= YYLAST ) goto yydefault;
  858.  
  859.     if( yychk[ yyn=yyact[ yyn ] ] == yychar ){ /* valid shift */
  860.         yychar = -1;
  861.         yyval = yylval;
  862.         yystate = yyn;
  863.         if( yyerrflag > 0 ) --yyerrflag;
  864.         goto yystack;
  865.         }
  866.  
  867.  yydefault:
  868.     /* default state action */
  869.  
  870.     if( (yyn=yydef[yystate]) == -2 ) {
  871.         if( yychar<0 ) if( (yychar=yylex())<0 ) yychar = 0;
  872.         /* look through exception table */
  873.  
  874.         for( yyxi=yyexca; (*yyxi!= (-1)) || (yyxi[1]!=yystate) ; yyxi += 2 ) ; /* VOID */
  875.  
  876.         while( *(yyxi+=2) >= 0 ){
  877.             if( *yyxi == yychar ) break;
  878.             }
  879.         if( (yyn = yyxi[1]) < 0 ) return(0);   /* accept */
  880.         }
  881.  
  882.     if( yyn == 0 ){ /* error */
  883.         /* error ... attempt to resume parsing */
  884.  
  885.         switch( yyerrflag ){
  886.  
  887.         case 0:   /* brand new error */
  888.  
  889.             yyerror( "syntax error" );
  890.         yyerrlab:
  891.             ++yynerrs;
  892.  
  893.         case 1:
  894.         case 2: /* incompletely recovered error ... try again */
  895.  
  896.             yyerrflag = 3;
  897.  
  898.             /* find a state where "error" is a legal shift action */
  899.  
  900.             while ( yyps >= yys ) {
  901.                yyn = yypact[*yyps] + YYERRCODE;
  902.                if( yyn>= 0 && yyn < YYLAST && yychk[yyact[yyn]] == YYERRCODE ){
  903.                   yystate = yyact[yyn];  /* simulate a shift of "error" */
  904.                   goto yystack;
  905.                   }
  906.                yyn = yypact[*yyps];
  907.  
  908.                /* the current yyps has no shift onn "error", pop stack */
  909.  
  910. #ifdef YYDEBUG
  911.                if( yydebug ) printf( "error recovery pops state %d, uncovers %d\n", *yyps, yyps[-1] );
  912. #endif
  913.                --yyps;
  914.                --yypv;
  915.                }
  916.  
  917.             /* there is no state on the stack with an error shift ... abort */
  918.  
  919.     yyabort:
  920.             return(1);
  921.  
  922.  
  923.         case 3:  /* no shift yet; clobber input char */
  924.  
  925. #ifdef YYDEBUG
  926.             if( yydebug ) printf( "error recovery discards char %d\n", yychar );
  927. #endif
  928.  
  929.             if( yychar == 0 ) goto yyabort; /* don't discard EOF, quit */
  930.             yychar = -1;
  931.             goto yynewstate;   /* try again in the same state */
  932.  
  933.             }
  934.  
  935.         }
  936.  
  937.     /* reduction by production yyn */
  938.  
  939. #ifdef YYDEBUG
  940.         if( yydebug ) printf("reduce %d\n",yyn);
  941. #endif
  942.         yyps -= yyr2[yyn];
  943.         yypvt = yypv;
  944.         yypv -= yyr2[yyn];
  945.         yyval = yypv[1];
  946.         yym=yyn;
  947.             /* consult goto table to find next state */
  948.         yyn = yyr1[yyn];
  949.         yyj = yypgo[yyn] + *yyps + 1;
  950.         if( yyj>=YYLAST || yychk[ yystate = yyact[yyj] ] != -yyn ) yystate = yyact[yypgo[yyn]];
  951.         switch(yym){
  952.             
  953. case 1:
  954. # line 194 "gram.y"
  955. { let(yypvt[-2].rval.left.vp, yypvt[-0].enode); } break;
  956. case 2:
  957. # line 196 "gram.y"
  958. { slet(yypvt[-2].rval.left.vp, yypvt[-0].enode, 0); } break;
  959. case 3:
  960. # line 198 "gram.y"
  961. { slet(yypvt[-2].rval.left.vp, yypvt[-0].enode, -1); } break;
  962. case 4:
  963. # line 200 "gram.y"
  964. { slet(yypvt[-2].rval.left.vp, yypvt[-0].enode, 1); } break;
  965. case 5:
  966. # line 202 "gram.y"
  967. { doformat(yypvt[-5].ival,yypvt[-3].ival,yypvt[-2].ival,yypvt[-1].ival,yypvt[-0].ival); } break;
  968. case 6:
  969. # line 204 "gram.y"
  970. { doformat(yypvt[-3].ival,yypvt[-3].ival,yypvt[-2].ival,yypvt[-1].ival,yypvt[-0].ival); } break;
  971. case 7:
  972. # line 206 "gram.y"
  973. { doformat(yypvt[-4].ival,yypvt[-2].ival,yypvt[-1].ival,yypvt[-0].ival, REFMTFIX); } break;
  974. case 8:
  975. # line 208 "gram.y"
  976. { doformat(yypvt[-2].ival,yypvt[-2].ival,yypvt[-1].ival,yypvt[-0].ival, REFMTFIX); } break;
  977. case 9:
  978. # line 209 "gram.y"
  979. {  /* This tmp hack is because readfile
  980.                     * recurses back through yyparse. */
  981.                   char *tmp;
  982.                   tmp = yypvt[-0].sval;
  983.                   readfile (tmp, 1);
  984.                   scxfree(tmp);
  985.                 } break;
  986. case 10:
  987. # line 216 "gram.y"
  988. {
  989.                   char *tmp;
  990.                   tmp = yypvt[-0].sval;
  991.                   readfile (tmp, 0);
  992.                   scxfree(tmp);
  993.                 } break;
  994. case 11:
  995. # line 223 "gram.y"
  996. { if (mdir) scxfree(mdir); mdir = yypvt[-0].sval; } break;
  997. case 12:
  998. # line 225 "gram.y"
  999. { (void) writefile(yypvt[-1].sval, (yypvt[-0].rval.left.vp)->row, 
  1000.                  (yypvt[-0].rval.left.vp)->col, (yypvt[-0].rval.right.vp)->row,
  1001.                  (yypvt[-0].rval.right.vp)->col);
  1002.                  scxfree(yypvt[-1].sval); } break;
  1003. case 13:
  1004. # line 230 "gram.y"
  1005. { (void) writefile (yypvt[-0].sval, 0, 0, maxrow, maxcol);
  1006.                  scxfree(yypvt[-0].sval); } break;
  1007. case 14:
  1008. # line 232 "gram.y"
  1009. { (void) printfile(yypvt[-1].sval, (yypvt[-0].rval.left.vp)->row, 
  1010.              (yypvt[-0].rval.left.vp)->col, (yypvt[-0].rval.right.vp)->row,
  1011.              (yypvt[-0].rval.right.vp)->col);
  1012.              scxfree(yypvt[-1].sval); } break;
  1013. case 15:
  1014. # line 236 "gram.y"
  1015. { (void) printfile (yypvt[-0].sval, 0, 0, maxrow, maxcol);
  1016.              scxfree(yypvt[-0].sval); } break;
  1017. case 16:
  1018. # line 238 "gram.y"
  1019. { (void) tblprintfile(yypvt[-1].sval, (yypvt[-0].rval.left.vp)->row, 
  1020.              (yypvt[-0].rval.left.vp)->col, (yypvt[-0].rval.right.vp)->row,
  1021.              (yypvt[-0].rval.right.vp)->col);
  1022.              scxfree(yypvt[-1].sval); } break;
  1023. case 17:
  1024. # line 242 "gram.y"
  1025. { (void)tblprintfile (yypvt[-0].sval, 0, 0, maxrow, maxcol);
  1026.              scxfree(yypvt[-0].sval); } break;
  1027. case 18:
  1028. # line 245 "gram.y"
  1029. { showcol( yypvt[-2].ival, yypvt[-0].ival); } break;
  1030. case 19:
  1031. # line 247 "gram.y"
  1032. { showrow( yypvt[-2].ival, yypvt[-0].ival); } break;
  1033. case 20:
  1034. # line 249 "gram.y"
  1035. { hide_col( yypvt[-0].ival ); } break;
  1036. case 21:
  1037. # line 251 "gram.y"
  1038. { hide_row( yypvt[-0].ival ); } break;
  1039. case 22:
  1040. # line 253 "gram.y"
  1041. { copy(yypvt[-1].rval.left.vp,yypvt[-1].rval.right.vp,
  1042.                     yypvt[-0].rval.left.vp,yypvt[-0].rval.right.vp); } break;
  1043. case 23:
  1044. # line 256 "gram.y"
  1045. { eraser(lookat(showsr, showsc),
  1046.                         lookat(currow, curcol)); } break;
  1047. case 24:
  1048. # line 259 "gram.y"
  1049. { eraser(yypvt[-0].rval.left.vp, yypvt[-0].rval.right.vp); } break;
  1050. case 25:
  1051. # line 260 "gram.y"
  1052. { valueize_area(showsr, showsc, currow, curcol);
  1053.                  modflg++; } break;
  1054. case 26:
  1055. # line 262 "gram.y"
  1056. { valueize_area((yypvt[-0].rval.left.vp)->row,
  1057.                     (yypvt[-0].rval.left.vp)->col,
  1058.                     (yypvt[-0].rval.right.vp)->row,
  1059.                     (yypvt[-0].rval.right.vp)->col); modflg++; } break;
  1060. case 27:
  1061. # line 266 "gram.y"
  1062. { fill(lookat(showsr, showsc),
  1063.                       lookat(currow, curcol), yypvt[-1].fval, yypvt[-0].fval); } break;
  1064. case 28:
  1065. # line 269 "gram.y"
  1066. { fill(yypvt[-2].rval.left.vp, yypvt[-2].rval.right.vp, yypvt[-1].fval, yypvt[-0].fval); } break;
  1067. case 29:
  1068. # line 271 "gram.y"
  1069. { format_cell(yypvt[-1].rval.left.vp, yypvt[-1].rval.right.vp, yypvt[-0].sval); } break;
  1070. case 30:
  1071. # line 273 "gram.y"
  1072. { lock_cells(lookat(showsr, showsc),
  1073.                         lookat(currow, curcol)); } break;
  1074. case 31:
  1075. # line 276 "gram.y"
  1076. { lock_cells(yypvt[-0].rval.left.vp, yypvt[-0].rval.right.vp); } break;
  1077. case 32:
  1078. # line 278 "gram.y"
  1079. { unlock_cells(lookat(showsr, showsc),
  1080.                         lookat(currow, curcol)); } break;
  1081. case 33:
  1082. # line 281 "gram.y"
  1083. { unlock_cells(yypvt[-0].rval.left.vp, yypvt[-0].rval.right.vp); } break;
  1084. case 34:
  1085. # line 282 "gram.y"
  1086. {moveto(yypvt[-0].rval.left.vp->row, yypvt[-0].rval.left.vp->col);} break;
  1087. case 35:
  1088. # line 283 "gram.y"
  1089. { num_search(yypvt[-0].fval, 0); } break;
  1090. case 37:
  1091. # line 285 "gram.y"
  1092. { str_search(yypvt[-0].sval); } break;
  1093. case 38:
  1094. # line 286 "gram.y"
  1095. { go_last(); } break;
  1096. case 39:
  1097. # line 287 "gram.y"
  1098. { struct ent_ptr arg1, arg2;
  1099.                     arg1.vp = lookat(showsr, showsc);
  1100.                     arg1.vf = 0;
  1101.                     arg2.vp = lookat(currow, curcol);
  1102.                     arg2.vf = 0;
  1103.                                         if (arg1.vp == arg2.vp)
  1104.                                            add_range(yypvt[-0].sval, arg2, arg2, 0);
  1105.                                         else
  1106.                                            add_range(yypvt[-0].sval, arg1, arg2, 1); } break;
  1107. case 40:
  1108. # line 297 "gram.y"
  1109. { add_range(yypvt[-1].sval, yypvt[-0].rval.left, yypvt[-0].rval.right, 1); } break;
  1110. case 41:
  1111. # line 298 "gram.y"
  1112. { add_range(yypvt[-1].sval, yypvt[-0].ent, yypvt[-0].ent, 0); } break;
  1113. case 42:
  1114. # line 299 "gram.y"
  1115. { del_range(yypvt[-0].rval.left.vp, yypvt[-0].rval.right.vp); } break;
  1116. case 46:
  1117. # line 305 "gram.y"
  1118. { yyval.enode = new_var(O_VAR, yypvt[-0].ent); } break;
  1119. case 47:
  1120. # line 306 "gram.y"
  1121. { yyval.enode = new ('f', ENULL, yypvt[-0].enode); } break;
  1122. case 48:
  1123. # line 308 "gram.y"
  1124. { yyval.enode = new_range(REDUCE | '+', yypvt[-1].rval); } break;
  1125. case 49:
  1126. # line 310 "gram.y"
  1127. { yyval.enode = new_range (REDUCE | '*', yypvt[-1].rval); } break;
  1128. case 50:
  1129. # line 312 "gram.y"
  1130. { yyval.enode = new_range (REDUCE | 'a', yypvt[-1].rval); } break;
  1131. case 51:
  1132. # line 314 "gram.y"
  1133. { yyval.enode = new_range (REDUCE | 's', yypvt[-1].rval); } break;
  1134. case 52:
  1135. # line 316 "gram.y"
  1136. { yyval.enode = new_range (REDUCE | 'c', yypvt[-1].rval); } break;
  1137. case 53:
  1138. # line 318 "gram.y"
  1139. { yyval.enode = new_range (REDUCE | MAXR, yypvt[-1].rval); } break;
  1140. case 54:
  1141. # line 320 "gram.y"
  1142. { yyval.enode = new(LMAX, yypvt[-1].enode, yypvt[-3].enode); } break;
  1143. case 55:
  1144. # line 322 "gram.y"
  1145. { yyval.enode = new_range (REDUCE | MINR, yypvt[-1].rval); } break;
  1146. case 56:
  1147. # line 324 "gram.y"
  1148. { yyval.enode = new(LMIN, yypvt[-1].enode, yypvt[-3].enode); } break;
  1149. case 57:
  1150. # line 325 "gram.y"
  1151. { yyval.enode = new(ABS, ENULL, yypvt[-1].enode); } break;
  1152. case 58:
  1153. # line 326 "gram.y"
  1154. { yyval.enode = new(ACOS, ENULL, yypvt[-1].enode); } break;
  1155. case 59:
  1156. # line 327 "gram.y"
  1157. { yyval.enode = new(ASIN, ENULL, yypvt[-1].enode); } break;
  1158. case 60:
  1159. # line 328 "gram.y"
  1160. { yyval.enode = new(ATAN, ENULL, yypvt[-1].enode); } break;
  1161. case 61:
  1162. # line 329 "gram.y"
  1163. { yyval.enode = new(ATAN2, yypvt[-3].enode, yypvt[-1].enode); } break;
  1164. case 62:
  1165. # line 330 "gram.y"
  1166. { yyval.enode = new(CEIL, ENULL, yypvt[-1].enode); } break;
  1167. case 63:
  1168. # line 331 "gram.y"
  1169. { yyval.enode = new(COS, ENULL, yypvt[-1].enode); } break;
  1170. case 64:
  1171. # line 332 "gram.y"
  1172. { yyval.enode = new(EXP, ENULL, yypvt[-1].enode); } break;
  1173. case 65:
  1174. # line 333 "gram.y"
  1175. { yyval.enode = new(FABS, ENULL, yypvt[-1].enode); } break;
  1176. case 66:
  1177. # line 334 "gram.y"
  1178. { yyval.enode = new(FLOOR, ENULL, yypvt[-1].enode); } break;
  1179. case 67:
  1180. # line 335 "gram.y"
  1181. { yyval.enode = new(HYPOT, yypvt[-3].enode, yypvt[-1].enode); } break;
  1182. case 68:
  1183. # line 336 "gram.y"
  1184. { yyval.enode = new(LOG, ENULL, yypvt[-1].enode); } break;
  1185. case 69:
  1186. # line 337 "gram.y"
  1187. { yyval.enode = new(LOG10, ENULL, yypvt[-1].enode); } break;
  1188. case 70:
  1189. # line 338 "gram.y"
  1190. { yyval.enode = new(POW, yypvt[-3].enode, yypvt[-1].enode); } break;
  1191. case 71:
  1192. # line 339 "gram.y"
  1193. { yyval.enode = new(SIN, ENULL, yypvt[-1].enode); } break;
  1194. case 72:
  1195. # line 340 "gram.y"
  1196. { yyval.enode = new(SQRT, ENULL, yypvt[-1].enode); } break;
  1197. case 73:
  1198. # line 341 "gram.y"
  1199. { yyval.enode = new(TAN, ENULL, yypvt[-1].enode); } break;
  1200. case 74:
  1201. # line 342 "gram.y"
  1202. { yyval.enode = new(DTR, ENULL, yypvt[-1].enode); } break;
  1203. case 75:
  1204. # line 343 "gram.y"
  1205. { yyval.enode = new(RTD, ENULL, yypvt[-1].enode); } break;
  1206. case 76:
  1207. # line 344 "gram.y"
  1208. { yyval.enode = new(RND, ENULL, yypvt[-1].enode); } break;
  1209. case 77:
  1210. # line 345 "gram.y"
  1211. { yyval.enode = new(ROUND, yypvt[-3].enode, yypvt[-1].enode); } break;
  1212. case 78:
  1213. # line 346 "gram.y"
  1214. { yyval.enode = new(IF,  yypvt[-5].enode,new(',',yypvt[-3].enode,yypvt[-1].enode)); } break;
  1215. case 79:
  1216. # line 348 "gram.y"
  1217. { yyval.enode = new(PV,  yypvt[-5].enode,new(':',yypvt[-3].enode,yypvt[-1].enode)); } break;
  1218. case 80:
  1219. # line 349 "gram.y"
  1220. { yyval.enode = new(FV,  yypvt[-5].enode,new(':',yypvt[-3].enode,yypvt[-1].enode)); } break;
  1221. case 81:
  1222. # line 350 "gram.y"
  1223. { yyval.enode = new(PMT, yypvt[-5].enode,new(':',yypvt[-3].enode,yypvt[-1].enode)); } break;
  1224. case 82:
  1225. # line 352 "gram.y"
  1226. { yyval.enode = new(HOUR,ENULL, yypvt[-1].enode); } break;
  1227. case 83:
  1228. # line 353 "gram.y"
  1229. { yyval.enode = new(MINUTE,ENULL, yypvt[-1].enode); } break;
  1230. case 84:
  1231. # line 354 "gram.y"
  1232. { yyval.enode = new(SECOND,ENULL, yypvt[-1].enode); } break;
  1233. case 85:
  1234. # line 355 "gram.y"
  1235. { yyval.enode = new(MONTH,ENULL,yypvt[-1].enode); } break;
  1236. case 86:
  1237. # line 356 "gram.y"
  1238. { yyval.enode = new(DAY, ENULL, yypvt[-1].enode); } break;
  1239. case 87:
  1240. # line 357 "gram.y"
  1241. { yyval.enode = new(YEAR, ENULL, yypvt[-1].enode); } break;
  1242. case 88:
  1243. # line 358 "gram.y"
  1244. { yyval.enode = new(NOW, ENULL, ENULL);} break;
  1245. case 89:
  1246. # line 360 "gram.y"
  1247. { yyval.enode = new(DTS, yypvt[-5].enode, new(',', yypvt[-3].enode, yypvt[-1].enode));} break;
  1248. case 90:
  1249. # line 362 "gram.y"
  1250. { yyval.enode = new(TTS, yypvt[-5].enode, new(',', yypvt[-3].enode, yypvt[-1].enode));} break;
  1251. case 91:
  1252. # line 363 "gram.y"
  1253. { yyval.enode = new(STON, ENULL, yypvt[-1].enode); } break;
  1254. case 92:
  1255. # line 364 "gram.y"
  1256. { yyval.enode = new (EQS, yypvt[-3].enode, yypvt[-1].enode); } break;
  1257. case 93:
  1258. # line 365 "gram.y"
  1259. { yyval.enode = new(DATE, ENULL, yypvt[-1].enode); } break;
  1260. case 94:
  1261. # line 366 "gram.y"
  1262. { yyval.enode = new(FMT, yypvt[-3].enode, yypvt[-1].enode); } break;
  1263. case 95:
  1264. # line 367 "gram.y"
  1265. { yyval.enode = new(UPPER, ENULL, yypvt[-1].enode); } break;
  1266. case 96:
  1267. # line 368 "gram.y"
  1268. { yyval.enode = new(LOWER, ENULL, yypvt[-1].enode); } break;
  1269. case 97:
  1270. # line 369 "gram.y"
  1271. { yyval.enode = new(CAPITAL, ENULL, yypvt[-1].enode); } break;
  1272. case 98:
  1273. # line 371 "gram.y"
  1274. { yyval.enode = new(INDEX, yypvt[-3].enode, new_range(REDUCE | INDEX, yypvt[-1].rval)); } break;
  1275. case 99:
  1276. # line 373 "gram.y"
  1277. { yyval.enode = new(LOOKUP, yypvt[-3].enode, new_range(REDUCE | LOOKUP, yypvt[-1].rval)); } break;
  1278. case 100:
  1279. # line 375 "gram.y"
  1280. { yyval.enode = new(HLOOKUP, new(',', yypvt[-5].enode, yypvt[-1].enode),
  1281.             new_range((REDUCE | HLOOKUP), yypvt[-3].rval)); } break;
  1282. case 101:
  1283. # line 378 "gram.y"
  1284. { yyval.enode = new(VLOOKUP, new(',', yypvt[-5].enode, yypvt[-1].enode),
  1285.             new_range((REDUCE | VLOOKUP), yypvt[-3].rval)); } break;
  1286. case 102:
  1287. # line 381 "gram.y"
  1288. { yyval.enode = new(STINDEX, yypvt[-3].enode, new_range((REDUCE | STINDEX), yypvt[-1].rval)); } break;
  1289. case 103:
  1290. # line 382 "gram.y"
  1291. { yyval.enode = new(EXT, yypvt[-3].enode, yypvt[-1].enode); } break;
  1292. case 104:
  1293. # line 383 "gram.y"
  1294. { yyval.enode = new(NVAL, yypvt[-3].enode, yypvt[-1].enode); } break;
  1295. case 105:
  1296. # line 384 "gram.y"
  1297. { yyval.enode = new(SVAL, yypvt[-3].enode, yypvt[-1].enode); } break;
  1298. case 106:
  1299. # line 386 "gram.y"
  1300. { yyval.enode = new(SUBSTR, yypvt[-5].enode, new(',', yypvt[-3].enode, yypvt[-1].enode)); } break;
  1301. case 107:
  1302. # line 387 "gram.y"
  1303. { yyval.enode = yypvt[-1].enode; } break;
  1304. case 108:
  1305. # line 388 "gram.y"
  1306. { yyval.enode = yypvt[-0].enode; } break;
  1307. case 109:
  1308. # line 389 "gram.y"
  1309. { yyval.enode = new ('m', ENULL, yypvt[-0].enode); } break;
  1310. case 110:
  1311. # line 390 "gram.y"
  1312. { yyval.enode = new_const(O_CONST, (double) yypvt[-0].ival); } break;
  1313. case 111:
  1314. # line 391 "gram.y"
  1315. { yyval.enode = new_const(O_CONST, yypvt[-0].fval); } break;
  1316. case 112:
  1317. # line 393 "gram.y"
  1318. {
  1319.             int y = yypvt[-0].ival;
  1320.  
  1321.             /* Convert 'NN' to years since 1970.
  1322.              * (or 2000, fix by 2070)
  1323.              */
  1324.             if (y < 100) {        /* Full year not given */
  1325.                 if (y >= 70)    /* 70-99 == Years since 1900 */
  1326.                     y += 1900;
  1327.                 else        /* 00-69 == Years since 2000 */
  1328.                     y += 2000;
  1329.             }
  1330.             yyval.enode = new_const(O_CONST, dodts(yypvt[-4].ival, yypvt[-2].ival, y));
  1331.         } break;
  1332. case 113:
  1333. # line 407 "gram.y"
  1334. { yyval.enode = new_const(O_CONST, PI); } break;
  1335. case 114:
  1336. # line 408 "gram.y"
  1337. { yyval.enode = new_const(O_CONST, PI); } break;
  1338. case 115:
  1339. # line 409 "gram.y"
  1340. { yyval.enode = new_str(yypvt[-0].sval); } break;
  1341. case 116:
  1342. # line 410 "gram.y"
  1343. { yyval.enode = new ('~', ENULL, yypvt[-0].enode); } break;
  1344. case 117:
  1345. # line 411 "gram.y"
  1346. { yyval.enode = new ('~', ENULL, yypvt[-0].enode); } break;
  1347. case 118:
  1348. # line 412 "gram.y"
  1349. { yyval.enode = new(MYROW, ENULL, ENULL);} break;
  1350. case 119:
  1351. # line 413 "gram.y"
  1352. { yyval.enode = new(MYCOL, ENULL, ENULL);} break;
  1353. case 120:
  1354. # line 414 "gram.y"
  1355. { yyval.enode = new(COLTOA, ENULL, yypvt[-1].enode);} break;
  1356. case 121:
  1357. # line 415 "gram.y"
  1358. { yyval.enode = new(NUMITER, ENULL, ENULL);} break;
  1359. case 122:
  1360. # line 420 "gram.y"
  1361. {} break;
  1362. case 123:
  1363. # line 423 "gram.y"
  1364. {} break;
  1365. case 124:
  1366. # line 426 "gram.y"
  1367. {} break;
  1368. case 125:
  1369. # line 429 "gram.y"
  1370. {} break;
  1371. case 126:
  1372. # line 432 "gram.y"
  1373. {} break;
  1374. case 127:
  1375. # line 436 "gram.y"
  1376. { yyval.enode = new ('+', yypvt[-2].enode, yypvt[-0].enode); } break;
  1377. case 128:
  1378. # line 437 "gram.y"
  1379. { yyval.enode = new ('-', yypvt[-2].enode, yypvt[-0].enode); } break;
  1380. case 129:
  1381. # line 438 "gram.y"
  1382. { yyval.enode = new ('*', yypvt[-2].enode, yypvt[-0].enode); } break;
  1383. case 130:
  1384. # line 439 "gram.y"
  1385. { yyval.enode = new ('/', yypvt[-2].enode, yypvt[-0].enode); } break;
  1386. case 131:
  1387. # line 440 "gram.y"
  1388. { yyval.enode = new ('%', yypvt[-2].enode, yypvt[-0].enode); } break;
  1389. case 132:
  1390. # line 441 "gram.y"
  1391. { yyval.enode = new ('^', yypvt[-2].enode, yypvt[-0].enode); } break;
  1392. case 134:
  1393. # line 443 "gram.y"
  1394. { yyval.enode = new ('?', yypvt[-4].enode, new(':', yypvt[-2].enode, yypvt[-0].enode)); } break;
  1395. case 135:
  1396. # line 444 "gram.y"
  1397. { yyval.enode = new ('<', yypvt[-2].enode, yypvt[-0].enode); } break;
  1398. case 136:
  1399. # line 445 "gram.y"
  1400. { yyval.enode = new ('=', yypvt[-2].enode, yypvt[-0].enode); } break;
  1401. case 137:
  1402. # line 446 "gram.y"
  1403. { yyval.enode = new ('>', yypvt[-2].enode, yypvt[-0].enode); } break;
  1404. case 138:
  1405. # line 447 "gram.y"
  1406. { yyval.enode = new ('&', yypvt[-2].enode, yypvt[-0].enode); } break;
  1407. case 139:
  1408. # line 448 "gram.y"
  1409. { yyval.enode = new ('|', yypvt[-2].enode, yypvt[-0].enode); } break;
  1410. case 140:
  1411. # line 449 "gram.y"
  1412. { yyval.enode = new ('~', ENULL, new ('>', yypvt[-3].enode, yypvt[-0].enode)); } break;
  1413. case 141:
  1414. # line 450 "gram.y"
  1415. { yyval.enode = new ('~', ENULL, new ('=', yypvt[-3].enode, yypvt[-0].enode)); } break;
  1416. case 142:
  1417. # line 451 "gram.y"
  1418. { yyval.enode = new ('~', ENULL, new ('=', yypvt[-3].enode, yypvt[-0].enode)); } break;
  1419. case 143:
  1420. # line 452 "gram.y"
  1421. { yyval.enode = new ('~', ENULL, new ('<', yypvt[-3].enode, yypvt[-0].enode)); } break;
  1422. case 144:
  1423. # line 453 "gram.y"
  1424. { yyval.enode = new ('#', yypvt[-2].enode, yypvt[-0].enode); } break;
  1425. case 145:
  1426. # line 457 "gram.y"
  1427. { yyval.enode = new(ELIST, ENULL, yypvt[-0].enode); } break;
  1428. case 146:
  1429. # line 458 "gram.y"
  1430. { yyval.enode = new(ELIST, yypvt[-2].enode, yypvt[-0].enode); } break;
  1431. case 147:
  1432. # line 461 "gram.y"
  1433. { yyval.rval.left = yypvt[-2].ent; yyval.rval.right = yypvt[-0].ent; } break;
  1434. case 148:
  1435. # line 462 "gram.y"
  1436. { yyval.rval = yypvt[-0].rval; } break;
  1437. case 149:
  1438. # line 465 "gram.y"
  1439. { yyval.ent.vp = lookat(yypvt[-0].ival , yypvt[-1].ival); yyval.ent.vf = 0; } break;
  1440. case 150:
  1441. # line 466 "gram.y"
  1442. { yyval.ent.vp = lookat(yypvt[-0].ival , yypvt[-1].ival);
  1443.                     yyval.ent.vf = FIX_COL; } break;
  1444. case 151:
  1445. # line 468 "gram.y"
  1446. { yyval.ent.vp = lookat(yypvt[-0].ival , yypvt[-2].ival);
  1447.                     yyval.ent.vf = FIX_ROW; } break;
  1448. case 152:
  1449. # line 470 "gram.y"
  1450. { yyval.ent.vp = lookat(yypvt[-0].ival , yypvt[-2].ival);
  1451.                     yyval.ent.vf = FIX_ROW | FIX_COL; } break;
  1452. case 153:
  1453. # line 472 "gram.y"
  1454. { yyval.ent = yypvt[-0].rval.left; } break;
  1455. case 154:
  1456. # line 475 "gram.y"
  1457. { yyval.rval = yypvt[-0].rval; } break;
  1458. case 155:
  1459. # line 476 "gram.y"
  1460. { yyval.rval.left = yypvt[-0].ent; yyval.rval.right = yypvt[-0].ent; } break;
  1461. case 156:
  1462. # line 480 "gram.y"
  1463. { yyval.fval = (double) yypvt[-0].ival; } break;
  1464. case 157:
  1465. # line 481 "gram.y"
  1466. { yyval.fval = yypvt[-0].fval; } break;
  1467. case 158:
  1468. # line 482 "gram.y"
  1469. { yyval.fval = -yypvt[-0].fval; } break;
  1470. case 159:
  1471. # line 483 "gram.y"
  1472. { yyval.fval = yypvt[-0].fval; } break;
  1473. case 160:
  1474. # line 487 "gram.y"
  1475. { yyval.sval = yypvt[-0].sval; } break;
  1476. case 161:
  1477. # line 488 "gram.y"
  1478. {
  1479.                     char *s, *s1;
  1480.                     s1 = yypvt[-0].ent.vp->label;
  1481.                     if (!s1)
  1482.                     s1 = "NULL_STRING";
  1483.                     s = scxmalloc((unsigned)(strlen(s1)+1));
  1484.                     (void) strcpy(s, s1);
  1485.                     yyval.sval = s;
  1486.                 } break;
  1487. case 164:
  1488. # line 505 "gram.y"
  1489. { setauto(1); } break;
  1490. case 165:
  1491. # line 506 "gram.y"
  1492. { setauto(1); } break;
  1493. case 166:
  1494. # line 507 "gram.y"
  1495. { setauto(0); } break;
  1496. case 167:
  1497. # line 508 "gram.y"
  1498. { setauto(0); } break;
  1499. case 168:
  1500. # line 509 "gram.y"
  1501. { setauto(0); } break;
  1502. case 169:
  1503. # line 510 "gram.y"
  1504. { setauto(0); } break;
  1505. case 170:
  1506. # line 511 "gram.y"
  1507. { setorder(BYCOLS); } break;
  1508. case 171:
  1509. # line 512 "gram.y"
  1510. { setorder(BYROWS); } break;
  1511. case 172:
  1512. # line 513 "gram.y"
  1513. { numeric = 1; } break;
  1514. case 173:
  1515. # line 514 "gram.y"
  1516. { numeric = 0; } break;
  1517. case 174:
  1518. # line 515 "gram.y"
  1519. { prescale = 0.01; } break;
  1520. case 175:
  1521. # line 516 "gram.y"
  1522. { prescale = 1.0; } break;
  1523. case 176:
  1524. # line 517 "gram.y"
  1525. { extfunc = 1; } break;
  1526. case 177:
  1527. # line 518 "gram.y"
  1528. { extfunc = 0; } break;
  1529. case 178:
  1530. # line 519 "gram.y"
  1531. { showcell = 1; } break;
  1532. case 179:
  1533. # line 520 "gram.y"
  1534. { showcell = 0; } break;
  1535. case 180:
  1536. # line 521 "gram.y"
  1537. { showtop = 1; } break;
  1538. case 181:
  1539. # line 522 "gram.y"
  1540. { showtop = 0; } break;
  1541. case 182:
  1542. # line 523 "gram.y"
  1543. { setiterations(yypvt[-0].ival); } break;
  1544. case 183:
  1545. # line 524 "gram.y"
  1546. { tbl_style = yypvt[-0].ival; } break;
  1547. case 184:
  1548. # line 525 "gram.y"
  1549. { tbl_style = TBL; } break;
  1550. case 185:
  1551. # line 526 "gram.y"
  1552. { tbl_style = LATEX; } break;
  1553. case 186:
  1554. # line 527 "gram.y"
  1555. { tbl_style = SLATEX; } break;
  1556. case 187:
  1557. # line 528 "gram.y"
  1558. { tbl_style = TEX; } break;
  1559. case 188:
  1560. # line 529 "gram.y"
  1561. { tbl_style = FRAME; } break;
  1562. case 189:
  1563. # line 530 "gram.y"
  1564. { rndinfinity = 1; FullUpdate++; } break;
  1565. case 190:
  1566. # line 531 "gram.y"
  1567. { rndinfinity = 0; FullUpdate++; } break;
  1568. case 191:
  1569. # line 532 "gram.y"
  1570. { craction = yypvt[-0].ival; } break;
  1571. case 192:
  1572. # line 533 "gram.y"
  1573. { rowlimit = yypvt[-0].ival; } break;
  1574. case 193:
  1575. # line 534 "gram.y"
  1576. { collimit = yypvt[-0].ival; } break;
  1577. case 194:
  1578. # line 538 "gram.y"
  1579. { num_search((double)0, CELLERROR); } break;
  1580. case 195:
  1581. # line 539 "gram.y"
  1582. { num_search((double)0, CELLINVALID); } break; 
  1583.         }
  1584.         goto yystack;  /* stack new state and value */
  1585.  
  1586.     }
  1587.