home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: Product / Product.zip / sc621_3.zip / src / gram.c < prev    next >
C/C++ Source or Header  |  1992-07-09  |  87KB  |  2,707 lines

  1. /* yacc -d gram.y */
  2. #ifndef YYDEBUG
  3. #define YYDEBUG 0
  4. #endif
  5. #line 17 "gram.y"
  6.  
  7. #include <curses.h>
  8. #include "sc.h"
  9.  
  10. #define ENULL (struct enode *)0
  11. typedef union {
  12.     int ival;
  13.     double fval;
  14.     struct ent_ptr ent;
  15.     struct enode *enode;
  16.     char *sval;
  17.     struct range_s rval;
  18. } YYSTYPE;
  19. #define STRING    257
  20. #define NUMBER    258
  21. #define FNUMBER    259
  22. #define RANGE    260
  23. #define VAR    261
  24. #define WORD    262
  25. #define COL    263
  26. #define S_FORMAT    264
  27. #define S_FMT    265
  28. #define S_LABEL    266
  29. #define S_LEFTSTRING    267
  30. #define S_RIGHTSTRING    268
  31. #define S_GET    269
  32. #define S_PUT    270
  33. #define S_MERGE    271
  34. #define S_LET    272
  35. #define S_WRITE    273
  36. #define S_TBL    274
  37. #define S_COPY    275
  38. #define S_SHOW    276
  39. #define S_ERASE    277
  40. #define S_FILL    278
  41. #define S_LOCK    279
  42. #define S_UNLOCK    280
  43. #define S_GOTO    281
  44. #define S_DEFINE    282
  45. #define S_UNDEFINE    283
  46. #define S_VALUE    284
  47. #define S_MDIR    285
  48. #define S_HIDE    286
  49. #define S_SET    287
  50. #define K_ERROR    288
  51. #define K_INVALID    289
  52. #define K_FIXED    290
  53. #define K_SUM    291
  54. #define K_PROD    292
  55. #define K_AVG    293
  56. #define K_STDDEV    294
  57. #define K_COUNT    295
  58. #define K_ABS    296
  59. #define K_ACOS    297
  60. #define K_ASIN    298
  61. #define K_ATAN    299
  62. #define K_ATAN2    300
  63. #define K_CEIL    301
  64. #define K_COS    302
  65. #define K_EXP    303
  66. #define K_FABS    304
  67. #define K_FLOOR    305
  68. #define K_HYPOT    306
  69. #define K_LN    307
  70. #define K_LOG    308
  71. #define K_PI    309
  72. #define K_POW    310
  73. #define K_SIN    311
  74. #define K_SQRT    312
  75. #define K_TAN    313
  76. #define K_DTR    314
  77. #define K_RTD    315
  78. #define K_MAX    316
  79. #define K_MIN    317
  80. #define K_RND    318
  81. #define K_ROUND    319
  82. #define K_IF    320
  83. #define K_PV    321
  84. #define K_FV    322
  85. #define K_PMT    323
  86. #define K_HOUR    324
  87. #define K_MINUTE    325
  88. #define K_SECOND    326
  89. #define K_MONTH    327
  90. #define K_DAY    328
  91. #define K_YEAR    329
  92. #define K_NOW    330
  93. #define K_DATE    331
  94. #define K_DTS    332
  95. #define K_TTS    333
  96. #define K_FMT    334
  97. #define K_SUBSTR    335
  98. #define K_UPPER    336
  99. #define K_LOWER    337
  100. #define K_CAPITAL    338
  101. #define K_STON    339
  102. #define K_EQS    340
  103. #define K_EXT    341
  104. #define K_NVAL    342
  105. #define K_SVAL    343
  106. #define K_LOOKUP    344
  107. #define K_HLOOKUP    345
  108. #define K_VLOOKUP    346
  109. #define K_INDEX    347
  110. #define K_STINDEX    348
  111. #define K_AUTO    349
  112. #define K_AUTOCALC    350
  113. #define K_BYROWS    351
  114. #define K_BYCOLS    352
  115. #define K_ITERATIONS    353
  116. #define K_NUMERIC    354
  117. #define K_PRESCALE    355
  118. #define K_EXTFUN    356
  119. #define K_CELLCUR    357
  120. #define K_TOPROW    358
  121. #define K_TBLSTYLE    359
  122. #define K_TBL    360
  123. #define K_LATEX    361
  124. #define K_SLATEX    362
  125. #define K_TEX    363
  126. #define K_FRAME    364
  127. #define K_RNDINFINITY    365
  128. #define K_MYROW    366
  129. #define K_MYCOL    367
  130. #define K_COLTOA    368
  131. #define K_CRACTION    369
  132. #define K_CRROW    370
  133. #define K_CRCOL    371
  134. #define K_ROWLIMIT    372
  135. #define K_COLLIMIT    373
  136. #define K_NUMITER    374
  137. extern int yychar, yyerrflag;
  138. extern YYSTYPE yylval;
  139. #if YYDEBUG
  140. enum YY_Types { YY_t_NoneDefined, YY_t_ent, YY_t_fval, YY_t_rval, YY_t_sval, YY_t_enode, YY_t_ival
  141. };
  142. #endif
  143. #if YYDEBUG
  144. yyTypedRules yyRules[] = {
  145.     { "&000: %09 &000",  0},
  146.     { "%09: &017 %04 &125 %06",  0},
  147.     { "%09: &011 %04 &125 %06",  0},
  148.     { "%09: &012 %04 &125 %06",  0},
  149.     { "%09: &013 %04 &125 %06",  0},
  150.     { "%09: &009 &008 &121 &008 &003 &003 &003",  0},
  151.     { "%09: &009 &008 &003 &003 &003",  0},
  152.     { "%09: &009 &008 &121 &008 &003 &003",  0},
  153.     { "%09: &009 &008 &003 &003",  0},
  154.     { "%09: &014 %05",  0},
  155.     { "%09: &016 %05",  0},
  156.     { "%09: &030 %05",  0},
  157.     { "%09: &015 %05 %03",  0},
  158.     { "%09: &015 %05",  0},
  159.     { "%09: &018 %05 %03",  0},
  160.     { "%09: &018 %05",  0},
  161.     { "%09: &019 %05 %03",  0},
  162.     { "%09: &019 %05",  0},
  163.     { "%09: &021 &008 &121 &008",  0},
  164.     { "%09: &021 &003 &121 &003",  0},
  165.     { "%09: &031 &008",  0},
  166.     { "%09: &031 &003",  0},
  167.     { "%09: &020 %03 %04",  0},
  168.     { "%09: &022",  0},
  169.     { "%09: &022 %04",  0},
  170.     { "%09: &029",  0},
  171.     { "%09: &029 %04",  0},
  172.     { "%09: &023 %02 %02",  0},
  173.     { "%09: &023 %04 %02 %02",  0},
  174.     { "%09: &010 %04 &002",  0},
  175.     { "%09: &024",  0},
  176.     { "%09: &024 %04",  0},
  177.     { "%09: &025",  0},
  178.     { "%09: &025 %04",  0},
  179.     { "%09: &026 %04",  0},
  180.     { "%09: &026 %02",  0},
  181.     { "%09: &026 %10",  0},
  182.     { "%09: &026 &002",  0},
  183.     { "%09: &026",  0},
  184.     { "%09: &027 %05",  0},
  185.     { "%09: &027 %05 %03",  0},
  186.     { "%09: &027 %05 %01",  0},
  187.     { "%09: &028 %04",  0},
  188.     { "%09: &032 %11",  0},
  189.     { "%09:",  0},
  190.     { "%09: &001",  0},
  191.     { "%07: %01",  5},
  192.     { "%07: &035 %07",  5},
  193.     { "%07: &135 &036 &136 %04 &137",  5},
  194.     { "%07: &135 &037 &136 %04 &137",  5},
  195.     { "%07: &135 &038 &136 %04 &137",  5},
  196.     { "%07: &135 &039 &136 %04 &137",  5},
  197.     { "%07: &135 &040 &136 %04 &137",  5},
  198.     { "%07: &135 &061 &136 %04 &137",  5},
  199.     { "%07: &135 &061 &136 %06 &138 %08 &137",  5},
  200.     { "%07: &135 &062 &136 %04 &137",  5},
  201.     { "%07: &135 &062 &136 %06 &138 %08 &137",  5},
  202.     { "%07: &135 &041 &136 %06 &137",  5},
  203.     { "%07: &135 &042 &136 %06 &137",  5},
  204.     { "%07: &135 &043 &136 %06 &137",  5},
  205.     { "%07: &135 &044 &136 %06 &137",  5},
  206.     { "%07: &135 &045 &136 %06 &138 %06 &137",  5},
  207.     { "%07: &135 &046 &136 %06 &137",  5},
  208.     { "%07: &135 &047 &136 %06 &137",  5},
  209.     { "%07: &135 &048 &136 %06 &137",  5},
  210.     { "%07: &135 &049 &136 %06 &137",  5},
  211.     { "%07: &135 &050 &136 %06 &137",  5},
  212.     { "%07: &135 &051 &136 %06 &138 %06 &137",  5},
  213.     { "%07: &135 &052 &136 %06 &137",  5},
  214.     { "%07: &135 &053 &136 %06 &137",  5},
  215.     { "%07: &135 &055 &136 %06 &138 %06 &137",  5},
  216.     { "%07: &135 &056 &136 %06 &137",  5},
  217.     { "%07: &135 &057 &136 %06 &137",  5},
  218.     { "%07: &135 &058 &136 %06 &137",  5},
  219.     { "%07: &135 &059 &136 %06 &137",  5},
  220.     { "%07: &135 &060 &136 %06 &137",  5},
  221.     { "%07: &135 &063 &136 %06 &137",  5},
  222.     { "%07: &135 &064 &136 %06 &138 %06 &137",  5},
  223.     { "%07: &135 &065 &136 %06 &138 %06 &138 %06 &137",  5},
  224.     { "%07: &135 &066 &136 %06 &138 %06 &138 %06 &137",  5},
  225.     { "%07: &135 &067 &136 %06 &138 %06 &138 %06 &137",  5},
  226.     { "%07: &135 &068 &136 %06 &138 %06 &138 %06 &137",  5},
  227.     { "%07: &135 &069 &136 %06 &137",  5},
  228.     { "%07: &135 &070 &136 %06 &137",  5},
  229.     { "%07: &135 &071 &136 %06 &137",  5},
  230.     { "%07: &135 &072 &136 %06 &137",  5},
  231.     { "%07: &135 &073 &136 %06 &137",  5},
  232.     { "%07: &135 &074 &136 %06 &137",  5},
  233.     { "%07: &135 &075",  5},
  234.     { "%07: &135 &077 &136 %06 &138 %06 &138 %06 &137",  5},
  235.     { "%07: &135 &078 &136 %06 &138 %06 &138 %06 &137",  5},
  236.     { "%07: &135 &084 &136 %06 &137",  5},
  237.     { "%07: &135 &085 &136 %06 &138 %06 &137",  5},
  238.     { "%07: &135 &076 &136 %06 &137",  5},
  239.     { "%07: &135 &079 &136 %06 &138 %06 &137",  5},
  240.     { "%07: &135 &081 &136 %06 &137",  5},
  241.     { "%07: &135 &082 &136 %06 &137",  5},
  242.     { "%07: &135 &083 &136 %06 &137",  5},
  243.     { "%07: &135 &092 &136 %06 &138 %04 &137",  5},
  244.     { "%07: &135 &089 &136 %06 &138 %04 &137",  5},
  245.     { "%07: &135 &090 &136 %06 &138 %04 &138 %06 &137",  5},
  246.     { "%07: &135 &091 &136 %06 &138 %04 &138 %06 &137",  5},
  247.     { "%07: &135 &093 &136 %06 &138 %04 &137",  5},
  248.     { "%07: &135 &086 &136 %06 &138 %06 &137",  5},
  249.     { "%07: &135 &087 &136 %06 &138 %06 &137",  5},
  250.     { "%07: &135 &088 &136 %06 &138 %06 &137",  5},
  251.     { "%07: &135 &080 &136 %06 &138 %06 &138 %06 &137",  5},
  252.     { "%07: &136 %06 &137",  5},
  253.     { "%07: &128 %07",  5},
  254.     { "%07: &129 %07",  5},
  255.     { "%07: &003",  5},
  256.     { "%07: &004",  5},
  257.     { "%07: &003 &139 &003 &139 &003",  5},
  258.     { "%07: &054",  5},
  259.     { "%07: &135 &054",  5},
  260.     { "%07: &002",  5},
  261.     { "%07: &140 %07",  5},
  262.     { "%07: &127 %07",  5},
  263.     { "%07: &135 &111",  5},
  264.     { "%07: &135 &112",  5},
  265.     { "%07: &135 &113 &136 %06 &137",  5},
  266.     { "%07: &135 &119",  5},
  267.     { "%06: %06 &128 %06",  5},
  268.     { "%06: %06 &129 %06",  5},
  269.     { "%06: %06 &131 %06",  5},
  270.     { "%06: %06 &132 %06",  5},
  271.     { "%06: %06 &133 %06",  5},
  272.     { "%06: %06 &134 %06",  5},
  273.     { "%06: %07",  5},
  274.     { "%06: %06 &120 %06 &121 %06",  5},
  275.     { "%06: %06 &124 %06",  5},
  276.     { "%06: %06 &125 %06",  5},
  277.     { "%06: %06 &126 %06",  5},
  278.     { "%06: %06 &123 %06",  5},
  279.     { "%06: %06 &122 %06",  5},
  280.     { "%06: %06 &124 &125 %06",  5},
  281.     { "%06: %06 &127 &125 %06",  5},
  282.     { "%06: %06 &124 &126 %06",  5},
  283.     { "%06: %06 &126 &125 %06",  5},
  284.     { "%06: %06 &130 %06",  5},
  285.     { "%08: %06",  5},
  286.     { "%08: %08 &138 %06",  5},
  287.     { "%03: %01 &121 %01",  3},
  288.     { "%03: &005",  3},
  289.     { "%01: &008 &003",  1},
  290.     { "%01: &141 &008 &003",  1},
  291.     { "%01: &008 &141 &003",  1},
  292.     { "%01: &141 &008 &141 &003",  1},
  293.     { "%01: &006",  1},
  294.     { "%04: %03",  3},
  295.     { "%04: %01",  3},
  296.     { "%02: &003",  2},
  297.     { "%02: &004",  2},
  298.     { "%02: &129 %02",  2},
  299.     { "%02: &128 %02",  2},
  300.     { "%05: &002",  4},
  301.     { "%05: %01",  4},
  302.     { "%11:",  0},
  303.     { "%11: %11 %12",  0},
  304.     { "%12: &094",  0},
  305.     { "%12: &095",  0},
  306.     { "%12: &140 &094",  0},
  307.     { "%12: &140 &095",  0},
  308.     { "%12: &127 &094",  0},
  309.     { "%12: &127 &095",  0},
  310.     { "%12: &097",  0},
  311.     { "%12: &096",  0},
  312.     { "%12: &099",  0},
  313.     { "%12: &127 &099",  0},
  314.     { "%12: &100",  0},
  315.     { "%12: &127 &100",  0},
  316.     { "%12: &101",  0},
  317.     { "%12: &127 &101",  0},
  318.     { "%12: &102",  0},
  319.     { "%12: &127 &102",  0},
  320.     { "%12: &103",  0},
  321.     { "%12: &127 &103",  0},
  322.     { "%12: &098 &125 &003",  0},
  323.     { "%12: &104 &125 &003",  0},
  324.     { "%12: &104 &125 &105",  0},
  325.     { "%12: &104 &125 &106",  0},
  326.     { "%12: &104 &125 &107",  0},
  327.     { "%12: &104 &125 &108",  0},
  328.     { "%12: &104 &125 &109",  0},
  329.     { "%12: &110",  0},
  330.     { "%12: &127 &110",  0},
  331.     { "%12: &114 &125 &003",  0},
  332.     { "%12: &117 &125 &003",  0},
  333.     { "%12: &118 &125 &003",  0},
  334.     { "%10: &033",  0},
  335.     { "%10: &034",  0},
  336. { "$accept",  0},{ "error",  0}
  337. };
  338. yyNamedType yyTokenTypes[] = {
  339.     { "$end",  0,  0},
  340.     { "error",  256,  0},
  341.     { "STRING",  257,  4},
  342.     { "NUMBER",  258,  6},
  343.     { "FNUMBER",  259,  2},
  344.     { "RANGE",  260,  3},
  345.     { "VAR",  261,  3},
  346.     { "WORD",  262,  4},
  347.     { "COL",  263,  6},
  348.     { "S_FORMAT",  264,  0},
  349.     { "S_FMT",  265,  0},
  350.     { "S_LABEL",  266,  0},
  351.     { "S_LEFTSTRING",  267,  0},
  352.     { "S_RIGHTSTRING",  268,  0},
  353.     { "S_GET",  269,  0},
  354.     { "S_PUT",  270,  0},
  355.     { "S_MERGE",  271,  0},
  356.     { "S_LET",  272,  0},
  357.     { "S_WRITE",  273,  0},
  358.     { "S_TBL",  274,  0},
  359.     { "S_COPY",  275,  0},
  360.     { "S_SHOW",  276,  0},
  361.     { "S_ERASE",  277,  0},
  362.     { "S_FILL",  278,  0},
  363.     { "S_LOCK",  279,  0},
  364.     { "S_UNLOCK",  280,  0},
  365.     { "S_GOTO",  281,  0},
  366.     { "S_DEFINE",  282,  0},
  367.     { "S_UNDEFINE",  283,  0},
  368.     { "S_VALUE",  284,  0},
  369.     { "S_MDIR",  285,  0},
  370.     { "S_HIDE",  286,  0},
  371.     { "S_SET",  287,  0},
  372.     { "K_ERROR",  288,  0},
  373.     { "K_INVALID",  289,  0},
  374.     { "K_FIXED",  290,  0},
  375.     { "K_SUM",  291,  0},
  376.     { "K_PROD",  292,  0},
  377.     { "K_AVG",  293,  0},
  378.     { "K_STDDEV",  294,  0},
  379.     { "K_COUNT",  295,  0},
  380.     { "K_ABS",  296,  0},
  381.     { "K_ACOS",  297,  0},
  382.     { "K_ASIN",  298,  0},
  383.     { "K_ATAN",  299,  0},
  384.     { "K_ATAN2",  300,  0},
  385.     { "K_CEIL",  301,  0},
  386.     { "K_COS",  302,  0},
  387.     { "K_EXP",  303,  0},
  388.     { "K_FABS",  304,  0},
  389.     { "K_FLOOR",  305,  0},
  390.     { "K_HYPOT",  306,  0},
  391.     { "K_LN",  307,  0},
  392.     { "K_LOG",  308,  0},
  393.     { "K_PI",  309,  0},
  394.     { "K_POW",  310,  0},
  395.     { "K_SIN",  311,  0},
  396.     { "K_SQRT",  312,  0},
  397.     { "K_TAN",  313,  0},
  398.     { "K_DTR",  314,  0},
  399.     { "K_RTD",  315,  0},
  400.     { "K_MAX",  316,  0},
  401.     { "K_MIN",  317,  0},
  402.     { "K_RND",  318,  0},
  403.     { "K_ROUND",  319,  0},
  404.     { "K_IF",  320,  0},
  405.     { "K_PV",  321,  0},
  406.     { "K_FV",  322,  0},
  407.     { "K_PMT",  323,  0},
  408.     { "K_HOUR",  324,  0},
  409.     { "K_MINUTE",  325,  0},
  410.     { "K_SECOND",  326,  0},
  411.     { "K_MONTH",  327,  0},
  412.     { "K_DAY",  328,  0},
  413.     { "K_YEAR",  329,  0},
  414.     { "K_NOW",  330,  0},
  415.     { "K_DATE",  331,  0},
  416.     { "K_DTS",  332,  0},
  417.     { "K_TTS",  333,  0},
  418.     { "K_FMT",  334,  0},
  419.     { "K_SUBSTR",  335,  0},
  420.     { "K_UPPER",  336,  0},
  421.     { "K_LOWER",  337,  0},
  422.     { "K_CAPITAL",  338,  0},
  423.     { "K_STON",  339,  0},
  424.     { "K_EQS",  340,  0},
  425.     { "K_EXT",  341,  0},
  426.     { "K_NVAL",  342,  0},
  427.     { "K_SVAL",  343,  0},
  428.     { "K_LOOKUP",  344,  0},
  429.     { "K_HLOOKUP",  345,  0},
  430.     { "K_VLOOKUP",  346,  0},
  431.     { "K_INDEX",  347,  0},
  432.     { "K_STINDEX",  348,  0},
  433.     { "K_AUTO",  349,  0},
  434.     { "K_AUTOCALC",  350,  0},
  435.     { "K_BYROWS",  351,  0},
  436.     { "K_BYCOLS",  352,  0},
  437.     { "K_ITERATIONS",  353,  0},
  438.     { "K_NUMERIC",  354,  0},
  439.     { "K_PRESCALE",  355,  0},
  440.     { "K_EXTFUN",  356,  0},
  441.     { "K_CELLCUR",  357,  0},
  442.     { "K_TOPROW",  358,  0},
  443.     { "K_TBLSTYLE",  359,  0},
  444.     { "K_TBL",  360,  0},
  445.     { "K_LATEX",  361,  0},
  446.     { "K_SLATEX",  362,  0},
  447.     { "K_TEX",  363,  0},
  448.     { "K_FRAME",  364,  0},
  449.     { "K_RNDINFINITY",  365,  0},
  450.     { "K_MYROW",  366,  0},
  451.     { "K_MYCOL",  367,  0},
  452.     { "K_COLTOA",  368,  0},
  453.     { "K_CRACTION",  369,  0},
  454.     { "K_CRROW",  370,  0},
  455.     { "K_CRCOL",  371,  0},
  456.     { "K_ROWLIMIT",  372,  0},
  457.     { "K_COLLIMIT",  373,  0},
  458.     { "K_NUMITER",  374,  0},
  459.     { "'?'",  63,  0},
  460.     { "':'",  58,  0},
  461.     { "'|'",  124,  0},
  462.     { "'&'",  38,  0},
  463.     { "'<'",  60,  0},
  464.     { "'='",  61,  0},
  465.     { "'>'",  62,  0},
  466.     { "'!'",  33,  0},
  467.     { "'+'",  43,  0},
  468.     { "'-'",  45,  0},
  469.     { "'#'",  35,  0},
  470.     { "'*'",  42,  0},
  471.     { "'/'",  47,  0},
  472.     { "'%'",  37,  0},
  473.     { "'^'",  94,  0},
  474.     { "'@'",  64,  0},
  475.     { "'('",  40,  0},
  476.     { "')'",  41,  0},
  477.     { "','",  44,  0},
  478.     { "'_'",  95,  0},
  479.     { "'~'",  126,  0},
  480.     { "'$'",  36,  0}
  481.  
  482. };
  483. #endif
  484. static short yydef[] = {
  485.  
  486.       -1,   16,   15,   14,   13,   12,   -5,  192,   38,   17, 
  487.       11,   10,    9,   18,    8,   19,    6,    5,    4,    3, 
  488.        7,   35,   30,   29,   -9,  -25,  -41,   24,   23,   22, 
  489.       21,   20,  -57,  -61,  -77,  -93, -109,   25,   36,   37
  490. };
  491. static short yyex[] = {
  492.  
  493.        0,  191,   -1,    1,    0,    0,   -1,    1,    0,   28, 
  494.       63,   28,   58,   28,  124,   28,   38,   28,   41,   28, 
  495.       44,   28,   -1,    1,    0,   27,   63,   27,   58,   27, 
  496.      124,   27,   38,   27,   41,   27,   44,   27,   -1,    1, 
  497.        0,   26,   63,   26,   58,   26,  124,   26,   38,   26, 
  498.       41,   26,   44,   26,   -1,    1,   41,   38,   -1,  160, 
  499.        0,   32,   63,   32,   58,   32,  124,   32,   38,   32, 
  500.       41,   32,   44,   32,   -1,    1,    0,   34,   63,   34, 
  501.       58,   34,  124,   34,   38,   34,   41,   34,   44,   34, 
  502.       -1,    1,    0,   33,   63,   33,   58,   33,  124,   33, 
  503.       38,   33,   41,   33,   44,   33,   -1,    1,    0,   31, 
  504.       63,   31,   58,   31,  124,   31,   38,   31,   41,   31, 
  505.       44,   31,   -1,    1
  506. };
  507. static short yyact[] = {
  508.  
  509.     -519, -357, -368, -354, -355, -356, -358, -361, -359, -353, 
  510.     -362, -363, -366, -364,   -6, -367,   -4,   -3,   -2, -369, 
  511.     -370,   -5, -360, -365, -521,  287,  286,  285,  284,  283, 
  512.      282,  281,  280,  279,  278,  277,  276,  275,  274,  273, 
  513.      272,  271,  270,  269,  268,  267,  266,  265,  264,  256, 
  514.     -352, -415, -410, -351,  263,  261,  260,   36, -352, -404, 
  515.     -410, -351,  263,  261,  257,   36, -352, -350, -349, -495, 
  516.     -408, -407, -415, -410, -351, -372, -371,  289,  288,  263, 
  517.      261,  260,  259,  258,  257,   45,   43,   36, -352, -350, 
  518.     -349, -408, -407, -415, -410, -351,  263,  261,  260,  259, 
  519.      258,   45,   43,   36, -506, -507,  263,  258, -343, -342, 
  520.      263,  258, -341,  263, -331, -330, -402, -401, -395, -396, 
  521.     -332, -394, -392, -390, -388, -386, -333, -377, -334, -335, 
  522.     -336,  373,  372,  369,  365,  359,  358,  357,  356,  355, 
  523.      354,  353,  352,  351,  350,  349,  126,   33, -329,  263, 
  524.     -328, -414,  258,   36, -327,   58, -350, -349, -408, -407, 
  525.      259,  258,   45,   43, -500,  257, -325,   58, -324,   58, 
  526.     -322, -323,  258,   58, -321,   61, -320,   61, -319,   61, 
  527.     -318,   61, -317,   61, -316,   61, -315,   61, -314,   61, 
  528.     -313,   61, -398, -397, -393, -391, -389, -387, -385, -376, 
  529.      365,  358,  357,  356,  355,  354,  350,  349, -400, -399, 
  530.      350,  349, -312, -413,  258,   36, -412,  258, -352, -410, 
  531.     -351,  263,  261,   36, -508,  258, -509,  263,  -15,  258, 
  532.     -311,  263, -310, -352, -306, -307, -308, -305, -309, -424, 
  533.      -16, -428, -410, -351, -304, -426,  309,  290,  263,  261, 
  534.      259,  258,  257,  126,   64,   45,   43,   40,   36,   33, 
  535.     -373,  258, -374,  258, -375,  258, -383, -382, -381, -380, 
  536.     -379, -378,  364,  363,  362,  361,  360,  258, -384,  258, 
  537.     -411,  258, -516,  258, -303,  258, -302,   95, -244, -245, 
  538.     -246, -247, -248, -251, -252, -253, -254, -255, -256, -257, 
  539.     -258, -259, -260, -261, -262, -263, -425, -264, -265, -266, 
  540.     -267, -268, -269, -249, -250, -270, -271, -272, -273, -274, 
  541.     -275, -276, -277, -278, -279, -280, -281, -450, -286, -282, 
  542.     -283, -287, -299, -288, -289, -290, -284, -285, -296, -297, 
  543.     -298, -292, -293, -294, -291, -295, -421, -420, -300, -418, 
  544.      374,  368,  367,  366,  348,  347,  346,  345,  344,  343, 
  545.      342,  341,  340,  339,  338,  337,  336,  335,  334,  333, 
  546.      332,  331,  330,  329,  328,  327,  326,  325,  324,  323, 
  547.      322,  321,  320,  319,  318,  317,  316,  315,  314,  313, 
  548.      312,  311,  310,  309,  308,  307,  306,  305,  304,  303, 
  549.      302,  301,  300,  299,  298,  297,  296,  295,  294,  293, 
  550.      292,  291, -242, -243, -234, -240, -232, -230, -231, -233, 
  551.     -237, -238, -239, -236, -235, -241,  124,   94,   63,   62, 
  552.       61,   60,   47,   45,   43,   42,   38,   37,   35,   33, 
  553.      -21,  258, -229,  258, -242, -243, -234, -240, -431, -232, 
  554.     -230, -231, -233, -237, -238, -239, -236, -235, -241,  124, 
  555.       94,   63,   62,   61,   60,   47,   45,   43,   42,   41, 
  556.       38,   37,   35,   33, -228,   40, -227,   40, -226,   40, 
  557.     -225,   40, -224,   40, -223,   40, -222,   40, -221,   40, 
  558.     -220,   40, -219,   40, -218,   40, -217,   40, -216,   40, 
  559.     -215,   40, -214,   40, -213,   40, -212,   40, -211,   40, 
  560.     -210,   40, -209,   40, -208,   40, -207,   40, -206,   40, 
  561.     -205,   40, -204,   40, -203,   40, -202,   40, -201,   40, 
  562.     -200,   40, -199,   40, -198,   40, -197,   40, -196,   40, 
  563.     -195,   40, -194,   40, -193,   40, -192,   40, -191,   40, 
  564.     -190,   40, -189,   40, -188,   40, -187,   40, -186,   40, 
  565.     -185,   40, -184,   40, -183,   40, -182,   40, -181,   40, 
  566.     -180,   40, -179,   40, -178,   40, -177,   40, -176,   40, 
  567.     -175,   40, -174,   40, -173,   40, -172,   40, -171,   61, 
  568.     -310, -352, -306, -307, -308, -170, -305, -309, -424,  -16, 
  569.     -428, -410, -351, -304, -426,  309,  290,  263,  261,  259, 
  570.      258,  257,  126,   64,   61,   45,   43,   40,   36,   33, 
  571.     -310, -352, -306, -307, -308, -168, -169, -305, -309, -424, 
  572.      -16, -428, -410, -351, -304, -426,  309,  290,  263,  261, 
  573.      259,  258,  257,  126,   64,   62,   61,   45,   43,   40, 
  574.       36,   33, -517,  258, -166,   95, -310, -352, -306, -307, 
  575.     -308, -305, -309, -424,  -16, -428, -415, -410, -351, -304, 
  576.     -426,  309,  290,  263,  261,  260,  259,  258,  257,  126, 
  577.       64,   45,   43,   40,   36,   33, -234, -232, -233, -235, 
  578.       94,   47,   42,   37, -242, -243, -234, -240, -232, -230, 
  579.     -231, -233, -237, -238, -239, -235,   94,   62,   61,   60, 
  580.       47,   45,   43,   42,   38,   37,   35,   33, -242, -243, 
  581.     -234, -232, -230, -231, -233, -237, -238, -239, -235,   94, 
  582.       62,   61,   60,   47,   45,   43,   42,   37,   35,   33, 
  583.     -243, -234, -232, -230, -231, -233, -235,   94,   47,   45, 
  584.       43,   42,   37,   35, -242, -243, -234, -240, -232, -230, 
  585.     -231, -233, -106, -237, -238, -239, -236, -235, -241,  124, 
  586.       94,   63,   62,   61,   60,   58,   47,   45,   43,   42, 
  587.       38,   37,   35,   33, -235,   94, -427,  258, -242, -243, 
  588.     -234, -240, -419, -232, -230, -231, -233, -237, -238, -239, 
  589.     -236, -235, -241,  124,   94,   63,   62,   61,   60,   47, 
  590.       45,   43,   42,   41,   38,   37,   35,   33, -242, -243, 
  591.     -234, -240, -232, -230, -105, -231, -233, -237, -238, -239, 
  592.     -236, -235, -241,  124,   94,   63,   62,   61,   60,   47, 
  593.       45,   44,   43,   42,   38,   37,   35,   33, -242, -243, 
  594.     -234, -240, -232, -230, -104, -231, -233, -237, -238, -239, 
  595.     -236, -235, -241,  124,   94,   63,   62,   61,   60,   47, 
  596.       45,   44,   43,   42,   38,   37,   35,   33, -242, -243, 
  597.     -234, -240, -232, -230, -103, -231, -233, -237, -238, -239, 
  598.     -236, -235, -241,  124,   94,   63,   62,   61,   60,   47, 
  599.       45,   44,   43,   42,   38,   37,   35,   33, -242, -243, 
  600.     -234, -240, -232, -230, -102, -231, -233, -237, -238, -239, 
  601.     -236, -235, -241,  124,   94,   63,   62,   61,   60,   47, 
  602.       45,   44,   43,   42,   38,   37,   35,   33, -242, -243, 
  603.     -234, -240, -232, -230, -101, -231, -233, -237, -238, -239, 
  604.     -236, -235, -241,  124,   94,   63,   62,   61,   60,   47, 
  605.       45,   44,   43,   42,   38,   37,   35,   33, -242, -243, 
  606.     -234, -240, -232, -230, -100, -231, -233, -237, -238, -239, 
  607.     -236, -235, -241,  124,   94,   63,   62,   61,   60,   47, 
  608.       45,   44,   43,   42,   38,   37,   35,   33, -242, -243, 
  609.     -234, -240, -232, -230,  -99, -231, -233, -237, -238, -239, 
  610.     -236, -235, -241,  124,   94,   63,   62,   61,   60,   47, 
  611.       45,   44,   43,   42,   38,   37,   35,   33, -242, -243, 
  612.     -234, -240, -232, -230,  -98, -231, -233, -237, -238, -239, 
  613.     -236, -235, -241,  124,   94,   63,   62,   61,   60,   47, 
  614.       45,   44,   43,   42,   38,   37,   35,   33, -242, -243, 
  615.     -234, -240, -232, -230,  -97, -231, -233, -237, -238, -239, 
  616.     -236, -235, -241,  124,   94,   63,   62,   61,   60,   47, 
  617.       45,   44,   43,   42,   38,   37,   35,   33, -242, -243, 
  618.     -234, -240, -441, -232, -230, -231, -233, -237, -238, -239, 
  619.     -236, -235, -241,  124,   94,   63,   62,   61,   60,   47, 
  620.       45,   43,   42,   41,   38,   37,   35,   33, -242, -243, 
  621.     -234, -240, -442, -232, -230, -231, -233, -237, -238, -239, 
  622.     -236, -235, -241,  124,   94,   63,   62,   61,   60,   47, 
  623.       45,   43,   42,   41,   38,   37,   35,   33, -242, -243, 
  624.     -234, -240, -443, -232, -230, -231, -233, -237, -238, -239, 
  625.     -236, -235, -241,  124,   94,   63,   62,   61,   60,   47, 
  626.       45,   43,   42,   41,   38,   37,   35,   33, -242, -243, 
  627.     -234, -240, -232, -230,  -96, -231, -233, -237, -238, -239, 
  628.     -236, -235, -241,  124,   94,   63,   62,   61,   60,   47, 
  629.       45,   44,   43,   42,   38,   37,   35,   33, -242, -243, 
  630.     -234, -240, -445, -232, -230, -231, -233, -237, -238, -239, 
  631.     -236, -235, -241,  124,   94,   63,   62,   61,   60,   47, 
  632.       45,   43,   42,   41,   38,   37,   35,   33, -242, -243, 
  633.     -234, -240, -232, -230,  -95, -231, -233, -237, -238, -239, 
  634.     -236, -235, -241,  124,   94,   63,   62,   61,   60,   47, 
  635.       45,   44,   43,   42,   38,   37,   35,   33, -242, -243, 
  636.     -234, -240, -447, -232, -230, -231, -233, -237, -238, -239, 
  637.     -236, -235, -241,  124,   94,   63,   62,   61,   60,   47, 
  638.       45,   43,   42,   41,   38,   37,   35,   33, -242, -243, 
  639.     -234, -240, -232, -230,  -94, -231, -233, -237, -238, -239, 
  640.     -236, -235, -241,  124,   94,   63,   62,   61,   60,   47, 
  641.       45,   44,   43,   42,   38,   37,   35,   33, -242, -243, 
  642.     -234, -240, -232, -230,  -93, -231, -233, -237, -238, -239, 
  643.     -236, -235, -241,  124,   94,   63,   62,   61,   60,   47, 
  644.       45,   44,   43,   42,   38,   37,   35,   33, -242, -243, 
  645.     -234, -240, -451, -232, -230, -231, -233, -237, -238, -239, 
  646.     -236, -235, -241,  124,   94,   63,   62,   61,   60,   47, 
  647.       45,   43,   42,   41,   38,   37,   35,   33, -242, -243, 
  648.     -234, -240, -452, -232, -230, -231, -233, -237, -238, -239, 
  649.     -236, -235, -241,  124,   94,   63,   62,   61,   60,   47, 
  650.       45,   43,   42,   41,   38,   37,   35,   33, -242, -243, 
  651.     -234, -240, -453, -232, -230, -231, -233, -237, -238, -239, 
  652.     -236, -235, -241,  124,   94,   63,   62,   61,   60,   47, 
  653.       45,   43,   42,   41,   38,   37,   35,   33, -242, -243, 
  654.     -234, -240, -454, -232, -230, -231, -233, -237, -238, -239, 
  655.     -236, -235, -241,  124,   94,   63,   62,   61,   60,   47, 
  656.       45,   43,   42,   41,   38,   37,   35,   33, -242, -243, 
  657.     -234, -240, -455, -232, -230, -231, -233, -237, -238, -239, 
  658.     -236, -235, -241,  124,   94,   63,   62,   61,   60,   47, 
  659.       45,   43,   42,   41,   38,   37,   35,   33, -242, -243, 
  660.     -234, -240, -456, -232, -230, -231, -233, -237, -238, -239, 
  661.     -236, -235, -241,  124,   94,   63,   62,   61,   60,   47, 
  662.       45,   43,   42,   41,   38,   37,   35,   33, -242, -243, 
  663.     -234, -240, -232, -230,  -92, -231, -233, -237, -238, -239, 
  664.     -236, -235, -241,  124,   94,   63,   62,   61,   60,   47, 
  665.       45,   44,   43,   42,   38,   37,   35,   33, -242, -243, 
  666.     -234, -240, -232, -230,  -91, -231, -233, -237, -238, -239, 
  667.     -236, -235, -241,  124,   94,   63,   62,   61,   60,   47, 
  668.       45,   44,   43,   42,   38,   37,   35,   33, -242, -243, 
  669.     -234, -240, -232, -230,  -90, -231, -233, -237, -238, -239, 
  670.     -236, -235, -241,  124,   94,   63,   62,   61,   60,   47, 
  671.       45,   44,   43,   42,   38,   37,   35,   33, -242, -243, 
  672.     -234, -240, -232, -230,  -89, -231, -233, -237, -238, -239, 
  673.     -236, -235, -241,  124,   94,   63,   62,   61,   60,   47, 
  674.       45,   44,   43,   42,   38,   37,   35,   33, -242, -243, 
  675.     -234, -240, -232, -230,  -88, -231, -233, -237, -238, -239, 
  676.     -236, -235, -241,  124,   94,   63,   62,   61,   60,   47, 
  677.       45,   44,   43,   42,   38,   37,   35,   33, -242, -243, 
  678.     -234, -240, -462, -232, -230, -231, -233, -237, -238, -239, 
  679.     -236, -235, -241,  124,   94,   63,   62,   61,   60,   47, 
  680.       45,   43,   42,   41,   38,   37,   35,   33, -242, -243, 
  681.     -234, -240, -463, -232, -230, -231, -233, -237, -238, -239, 
  682.     -236, -235, -241,  124,   94,   63,   62,   61,   60,   47, 
  683.       45,   43,   42,   41,   38,   37,   35,   33, -242, -243, 
  684.     -234, -240, -464, -232, -230, -231, -233, -237, -238, -239, 
  685.     -236, -235, -241,  124,   94,   63,   62,   61,   60,   47, 
  686.       45,   43,   42,   41,   38,   37,   35,   33, -242, -243, 
  687.     -234, -240, -465, -232, -230, -231, -233, -237, -238, -239, 
  688.     -236, -235, -241,  124,   94,   63,   62,   61,   60,   47, 
  689.       45,   43,   42,   41,   38,   37,   35,   33, -242, -243, 
  690.     -234, -240, -466, -232, -230, -231, -233, -237, -238, -239, 
  691.     -236, -235, -241,  124,   94,   63,   62,   61,   60,   47, 
  692.       45,   43,   42,   41,   38,   37,   35,   33, -242, -243, 
  693.     -234, -240, -467, -232, -230, -231, -233, -237, -238, -239, 
  694.     -236, -235, -241,  124,   94,   63,   62,   61,   60,   47, 
  695.       45,   43,   42,   41,   38,   37,   35,   33, -242, -243, 
  696.     -234, -240, -232, -230,  -87, -231, -233, -237, -238, -239, 
  697.     -236, -235, -241,  124,   94,   63,   62,   61,   60,   47, 
  698.       45,   44,   43,   42,   38,   37,   35,   33, -242, -243, 
  699.     -234, -240, -469, -232, -230, -231, -233, -237, -238, -239, 
  700.     -236, -235, -241,  124,   94,   63,   62,   61,   60,   47, 
  701.       45,   43,   42,   41,   38,   37,   35,   33, -242, -243, 
  702.     -234, -240, -470, -232, -230, -231, -233, -237, -238, -239, 
  703.     -236, -235, -241,  124,   94,   63,   62,   61,   60,   47, 
  704.       45,   43,   42,   41,   38,   37,   35,   33, -242, -243, 
  705.     -234, -240, -232, -230,  -86, -231, -233, -237, -238, -239, 
  706.     -236, -235, -241,  124,   94,   63,   62,   61,   60,   47, 
  707.       45,   44,   43,   42,   38,   37,   35,   33, -242, -243, 
  708.     -234, -240, -472, -232, -230, -231, -233, -237, -238, -239, 
  709.     -236, -235, -241,  124,   94,   63,   62,   61,   60,   47, 
  710.       45,   43,   42,   41,   38,   37,   35,   33, -242, -243, 
  711.     -234, -240, -473, -232, -230, -231, -233, -237, -238, -239, 
  712.     -236, -235, -241,  124,   94,   63,   62,   61,   60,   47, 
  713.       45,   43,   42,   41,   38,   37,   35,   33, -242, -243, 
  714.     -234, -240, -474, -232, -230, -231, -233, -237, -238, -239, 
  715.     -236, -235, -241,  124,   94,   63,   62,   61,   60,   47, 
  716.       45,   43,   42,   41,   38,   37,   35,   33, -242, -243, 
  717.     -234, -240, -475, -232, -230, -231, -233, -237, -238, -239, 
  718.     -236, -235, -241,  124,   94,   63,   62,   61,   60,   47, 
  719.       45,   43,   42,   41,   38,   37,   35,   33, -242, -243, 
  720.     -234, -240, -476, -232, -230, -231, -233, -237, -238, -239, 
  721.     -236, -235, -241,  124,   94,   63,   62,   61,   60,   47, 
  722.       45,   43,   42,   41,   38,   37,   35,   33, -242, -243, 
  723.     -234, -240, -232, -230,  -85, -231, -233, -237, -238, -239, 
  724.     -236, -235, -241,  124,   94,   63,   62,   61,   60,   47, 
  725.       45,   44,   43,   42,   38,   37,   35,   33, -242, -243, 
  726.     -234, -240, -478, -232, -230, -231, -233, -237, -238, -239, 
  727.     -236, -235, -241,  124,   94,   63,   62,   61,   60,   47, 
  728.       45,   43,   42,   41,   38,   37,   35,   33, -242, -243, 
  729.     -234, -240, -479, -232, -230, -231, -233, -237, -238, -239, 
  730.     -236, -235, -241,  124,   94,   63,   62,   61,   60,   47, 
  731.       45,   43,   42,   41,   38,   37,   35,   33, -242, -243, 
  732.     -234, -240, -480, -232, -230, -231, -233, -237, -238, -239, 
  733.     -236, -235, -241,  124,   94,   63,   62,   61,   60,   47, 
  734.       45,   43,   42,   41,   38,   37,   35,   33, -242, -243, 
  735.     -234, -240, -481, -232, -230, -231, -233, -237, -238, -239, 
  736.     -236, -235, -241,  124,   94,   63,   62,   61,   60,   47, 
  737.       45,   43,   42,   41,   38,   37,   35,   33, -242, -243, 
  738.     -234, -240, -232, -230,  -84, -231, -233, -237, -238, -239, 
  739.     -236, -235, -241,  124,   94,   63,   62,   61,   60,   47, 
  740.       45,   44,   43,   42,   38,   37,   35,   33, -483,   41, 
  741.     -242, -243, -234, -240, -232, -230,  -83, -231, -233, -237, 
  742.     -238, -239, -236, -235, -241,  124,   94,   63,   62,   61, 
  743.       60,   47,   45,   44,   43,   42,   38,   37,   35,   33, 
  744.     -485,   41, -486,   41, -487,   41, -488,   41, -489,   41, 
  745.     -490,   41, -242, -243, -234, -240, -232, -230, -231, -233, 
  746.     -237, -238, -239, -235, -241,  124,   94,   62,   61,   60, 
  747.       47,   45,   43,   42,   38,   37,   35,   33, -242, -243, 
  748.     -234, -240, -232, -230,  -59, -231, -233, -237, -238, -239, 
  749.     -236, -235, -241,  124,   94,   63,   62,   61,   60,   47, 
  750.       45,   44,   43,   42,   38,   37,   35,   33, -242, -243, 
  751.     -234, -240, -433, -232, -230, -231, -233, -237, -238, -239, 
  752.     -236, -235, -241,  124,   94,   63,   62,   61,   60,   47, 
  753.       45,   43,   42,   41,   38,   37,   35,   33, -242, -243, 
  754.     -234, -240, -434, -232, -230, -231, -233, -237, -238, -239, 
  755.     -236, -235, -241,  124,   94,   63,   62,   61,   60,   47, 
  756.       45,   43,   42,   41,   38,   37,   35,   33, -242, -243, 
  757.     -234, -240, -435, -232, -230, -231, -233, -237, -238, -239, 
  758.     -236, -235, -241,  124,   94,   63,   62,   61,   60,   47, 
  759.       45,   43,   42,   41,   38,   37,   35,   33, -436,   41, 
  760.      -58,   44,  -57,   44, -439,   41, -440,   41, -242, -243, 
  761.     -234, -240, -444, -232, -230, -231, -233, -237, -238, -239, 
  762.     -236, -235, -241,  124,   94,   63,   62,   61,   60,   47, 
  763.       45,   43,   42,   41,   38,   37,   35,   33, -242, -243, 
  764.     -234, -240, -446, -232, -230, -231, -233, -237, -238, -239, 
  765.     -236, -235, -241,  124,   94,   63,   62,   61,   60,   47, 
  766.       45,   43,   42,   41,   38,   37,   35,   33, -242, -243, 
  767.     -234, -240, -232, -230,  -56, -231, -233, -237, -238, -239, 
  768.     -236, -235, -241,  124,   94,   63,   62,   61,   60,   47, 
  769.       45,   44,   43,   42,   38,   37,   35,   33, -242, -243, 
  770.     -234, -240, -232, -230,  -55, -231, -233, -237, -238, -239, 
  771.     -236, -235, -241,  124,   94,   63,   62,   61,   60,   47, 
  772.       45,   44,   43,   42,   38,   37,   35,   33, -242, -243, 
  773.     -234, -240, -232, -230,  -54, -231, -233, -237, -238, -239, 
  774.     -236, -235, -241,  124,   94,   63,   62,   61,   60,   47, 
  775.       45,   44,   43,   42,   38,   37,   35,   33, -242, -243, 
  776.     -234, -240, -232, -230,  -53, -231, -233, -237, -238, -239, 
  777.     -236, -235, -241,  124,   94,   63,   62,   61,   60,   47, 
  778.       45,   44,   43,   42,   38,   37,   35,   33, -242, -243, 
  779.     -234, -240, -232, -230,  -52, -231, -233, -237, -238, -239, 
  780.     -236, -235, -241,  124,   94,   63,   62,   61,   60,   47, 
  781.       45,   44,   43,   42,   38,   37,   35,   33, -242, -243, 
  782.     -234, -240, -232, -230,  -51, -231, -233, -237, -238, -239, 
  783.     -236, -235, -241,  124,   94,   63,   62,   61,   60,   47, 
  784.       45,   44,   43,   42,   38,   37,   35,   33, -242, -243, 
  785.     -234, -240, -461, -232, -230, -231, -233, -237, -238, -239, 
  786.     -236, -235, -241,  124,   94,   63,   62,   61,   60,   47, 
  787.       45,   43,   42,   41,   38,   37,   35,   33, -242, -243, 
  788.     -234, -240, -468, -232, -230, -231, -233, -237, -238, -239, 
  789.     -236, -235, -241,  124,   94,   63,   62,   61,   60,   47, 
  790.       45,   43,   42,   41,   38,   37,   35,   33, -242, -243, 
  791.     -234, -240, -471, -232, -230, -231, -233, -237, -238, -239, 
  792.     -236, -235, -241,  124,   94,   63,   62,   61,   60,   47, 
  793.       45,   43,   42,   41,   38,   37,   35,   33, -242, -243, 
  794.     -234, -240, -477, -232, -230, -231, -233, -237, -238, -239, 
  795.     -236, -235, -241,  124,   94,   63,   62,   61,   60,   47, 
  796.       45,   43,   42,   41,   38,   37,   35,   33, -482,  -50, 
  797.       44,   41, -484,  -50,   44,   41, -242, -243, -234, -240, 
  798.     -432, -232, -230, -231, -233, -237, -238, -239, -236, -235, 
  799.     -241,  124,   94,   63,   62,   61,   60,   47,   45,   43, 
  800.       42,   41,   38,   37,   35,   33, -242, -243, -234, -240, 
  801.     -437, -232, -230, -231, -233, -237, -238, -239, -236, -235, 
  802.     -241,  124,   94,   63,   62,   61,   60,   47,   45,   43, 
  803.       42,   41,   38,   37,   35,   33, -242, -243, -234, -240, 
  804.     -438, -232, -230, -231, -233, -237, -238, -239, -236, -235, 
  805.     -241,  124,   94,   63,   62,   61,   60,   47,   45,   43, 
  806.       42,   41,   38,   37,   35,   33, -242, -243, -234, -240, 
  807.     -448, -232, -230, -231, -233, -237, -238, -239, -236, -235, 
  808.     -241,  124,   94,   63,   62,   61,   60,   47,   45,   43, 
  809.       42,   41,   38,   37,   35,   33, -242, -243, -234, -240, 
  810.     -449, -232, -230, -231, -233, -237, -238, -239, -236, -235, 
  811.     -241,  124,   94,   63,   62,   61,   60,   47,   45,   43, 
  812.       42,   41,   38,   37,   35,   33, -242, -243, -234, -240, 
  813.     -457, -232, -230, -231, -233, -237, -238, -239, -236, -235, 
  814.     -241,  124,   94,   63,   62,   61,   60,   47,   45,   43, 
  815.       42,   41,   38,   37,   35,   33, -242, -243, -234, -240, 
  816.     -458, -232, -230, -231, -233, -237, -238, -239, -236, -235, 
  817.     -241,  124,   94,   63,   62,   61,   60,   47,   45,   43, 
  818.       42,   41,   38,   37,   35,   33, -242, -243, -234, -240, 
  819.     -459, -232, -230, -231, -233, -237, -238, -239, -236, -235, 
  820.     -241,  124,   94,   63,   62,   61,   60,   47,   45,   43, 
  821.       42,   41,   38,   37,   35,   33, -242, -243, -234, -240, 
  822.     -460, -232, -230, -231, -233, -237, -238, -239, -236, -235, 
  823.     -241,  124,   94,   63,   62,   61,   60,   47,   45,   43, 
  824.       42,   41,   38,   37,   35,   33,   -1
  825. };
  826. static short yypact[] = {
  827.  
  828.       25,   77,   54,   54,   54,   54,  114,  131,  155,   54, 
  829.       54,   54,   54,  155,  283,  287,  426,  426,  426,  426, 
  830.      653,  690,  706,  729,  747,  747,  747,  785,  785,  785, 
  831.      690,  690,  155,  747,  747,  747,  747, 2375,  426,  426, 
  832.     3141, 3111, 3081, 3051, 3021, 2991, 2961, 2931, 2901,  246, 
  833.      246,  246,  246,  246,  246,  246,  246,  246,  246, 2884, 
  834.     2880, 2863, 2833, 2803, 2773, 2743, 2713, 2683, 2653, 2623, 
  835.     2593, 2563, 2533, 2517, 2515, 2513, 2511, 2509, 2493, 2463, 
  836.     2433, 2403,  246,  246,  246,  246,  246,  246,  246,  246, 
  837.      246,  246,  246,  246,  246,  246,   54,   54,   54,   54, 
  838.       54,  246,  246,  246,  246,  246, 2361, 2359, 2357, 2355, 
  839.     2353, 2351, 2335, 2319, 2303, 2273, 2243, 2213, 2183, 2153, 
  840.     2123, 2093, 2063, 2033, 2003, 1973, 1943, 1913, 1883, 1853, 
  841.     1823, 1793, 1763, 1733, 1703, 1673, 1643, 1613, 1583, 1553, 
  842.     1523, 1493, 1463, 1433, 1403, 1373, 1343, 1313, 1283, 1253, 
  843.     1223, 1193, 1163, 1133, 1103, 1073, 1043, 1013,  983,  953, 
  844.      923,  893,  863,  833,  803,  787,  769,  246,  246,  246, 
  845.      246,   54,   54,   54,   54,   54,  671,  671,  246,  246, 
  846.      246,  246,  246,  246,  246,  246,  246,  246,  246,  246, 
  847.      246,  246,  246,  246,  246,  246,  246,  246,  246,  246, 
  848.      246,  246,  246,  246,  246,  246,  246,  246,  246,  246, 
  849.      246,  246,  246,  246,  246,  246,  246,  246,  246,  246, 
  850.      246,  246,  246,  246,  246,  246,  246,  246,  655,  246, 
  851.      246,  246,  246,  246,  246,  246,  636,  246,  605,  246, 
  852.      246,  589,  246,  587,  585,  583,  581,  579,  577,  575, 
  853.      573,  571,  569,  567,  565,  563,  561,  559,  557,  555, 
  854.      553,  551,  549,  547,  545,  543,  541,  539,  537,  535, 
  855.      533,  531,  529,  527,  525,  523,  521,  519,  517,  515, 
  856.      513,  511,  509,  507,  505,  503,  501,  499,  497,  495, 
  857.      493,  491,  489,  487,  485,  483,  481,  479,  477,  475, 
  858.      459,  443,  441,  246,  350,  246,  246,  246,  246,  246, 
  859.      285,  281,  279,  272,  265,  263,  261,  246,  246,  246, 
  860.      246,  231,  229,  227,  225,  160,  221,  217,  214,  210, 
  861.      200,  191,  189,  187,  185,  183,  181,  179,  177,  175, 
  862.      172,  169,  167,   54,  155,  160,  160,  165,  160,  160, 
  863.      152,  149,   54,   54,   54,   54,  113,   62,   62,   62, 
  864.       62,   62,   62,  110,  106,   54,   96,   54,   62,   54
  865. };
  866. static short yygo[] = {
  867.  
  868.       -9,   -9,   -9,   -9,   -9,  -14, -345, -345, -345,   -9, 
  869.       -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,  -33, 
  870.      -33, -416,   -9,   -9,   -9,   -9,   -9, -403, -403, -403, 
  871.     -403, -403, -403, -345,   -9,   -9, -403,   -9, -492,  369, 
  872.      368,  367,  366,  365,  362,  361,  360,  359,  358,  357, 
  873.      355,  354,  353,  352,  343,  326,  177,  176,  175,  174, 
  874.      173,  172,  171,  100,   99,   98,   97,   96,   12,   11, 
  875.       10,    9,    5,    4,    3,    2,    1, -501, -502, -326, 
  876.     -406, -405, -346, -496,  366,  349,  348,  346,  345,  325, 
  877.     -494, -510, -511, -512, -344, -409,  365,   12,   11,   10, 
  878.        9, -497, -498, -499, -503, -504,  -74,  -75,  -76,  -77, 
  879.      -78, -107, -108, -109, -110, -111, -112, -114, -505, -337, 
  880.     -338, -339, -340, -347, -348, -493,  367,  366,  355,  354, 
  881.      353,  352,  343,  177,  176,  175,  174,  173,  172,  171, 
  882.      100,   99,   98,   97,   96,    5,    4,    3,    2,    1, 
  883.     -515, -514, -513,  -13,  -12,  -11,  -10,  362,  361,  360, 
  884.      359,  358,  357,  -40,  -41,  -42,  -43,  -44,  -45,  -46, 
  885.      -47,  -48,  -49,  -62,  -63,  -64,  -65,  -66,  -67,  -68, 
  886.      -69,  -70,  -71,  -72,  -73,  -79,  -80,  -81,  -82,  -38, 
  887.      -37,  -36,  -35,  -34, -113, -115, -116, -117, -118, -119, 
  888.     -120, -121, -122, -123, -124, -125, -126, -127, -128, -129, 
  889.     -130, -131, -132, -133, -134, -135, -136, -137, -138, -139, 
  890.     -140, -141, -142, -143, -144, -145, -146, -147, -148, -149, 
  891.     -150, -151, -152, -153, -154, -155, -156, -157, -158, -159, 
  892.     -160, -161, -162, -163, -164, -165,  -32,  -31,  -30,  -29, 
  893.      -28, -417, -167,  -27,  -26,  -25,  -24,  -23,  -22, -301, 
  894.      -20,  -19,  -18,  -17,  -39,  320,  319,  318,  317,  305, 
  895.      242,  240,  239,  238,  237,  236,  235,  234,  233,  232, 
  896.      231,  230,  229,  227,  226,  225,  224,  223,  222,  221, 
  897.      220,  219,  218,  217,  216,  215,  214,  213,  212,  211, 
  898.      210,  209,  208,  207,  206,  205,  204,  203,  202,  201, 
  899.      200,  199,  198,  197,  196,  195,  194,  193,  192,  191, 
  900.      190,  189,  188,  187,  186,  185,  184,  183,  182,  181, 
  901.      180,  179,  178,  177,  176,  170,  169,  168,  167,  105, 
  902.      104,  103,  102,  101,   95,   94,   93,   92,   91,   90, 
  903.       89,   88,   87,   86,   85,   84,   58,   57,   56,   55, 
  904.       54,   53,   52,   51,   50,   49, -491, -430, -429, -423, 
  905.     -422, -520,  309,  308,  307,  306,  303,  -60,  -61,   82, 
  906.       -7, -518,   -8, -522,   -1
  907. };
  908. static short yypgo[] = {
  909.  
  910.        0,    0,    0,  380,  380,  380,  380,  380,  380,  380, 
  911.      380,  380,  380,  380,  380,  380,  380,  380,  380,  371, 
  912.      264,  264,  264,  264,  264,  264,  264,  264,  264,  264, 
  913.      264,  264,  264,  264,  264,  264,  378,  378,  125,  381, 
  914.      381,  383,  383,  383,  383,  383,  383,  383,  383,  383, 
  915.      383,  383,  383,  383,  383,  383,  383,  383,  383,  383, 
  916.      383,  383,  383,  383,  383,  383,  383,  383,  383,  383, 
  917.      383,  156,  156,   83,   83,   83,   83,  125,   38,   38, 
  918.       38,   38,   38,   95,   95,  264,  371,  371,  371,  371, 
  919.      371,  371,  371,  371,  371,  371,  371,  371,  371,  371, 
  920.      371,  371,  371,  371,  371,  371,  371,  371,  371,  371, 
  921.      371,  371,  371,  371,  371,  371,  371,  371,  371,  371, 
  922.      371,  371,  371,  371,  371,  371,  371,  371,  371,  371, 
  923.      371,  371,  371,  371,  371,  371,  371,  371,  371,  371, 
  924.      371,  371,  371,  371,  371,  371,  371,  371,  371,  371, 
  925.      371,  371,  371,  371,  371,  371,  371,  371,  371,  371, 
  926.      371,  380,  380,  380,  380,  380,  380,  380,  380,  380, 
  927.      380,  380,  380,  380,  380,  380,  380,  380,  380,  380, 
  928.      380,  380,  380,  380,  380,  380,  380,  380,  264,  382, 
  929.      382,  380,  380,    0
  930. };
  931. static short yyrlen[] = {
  932.  
  933.        0,    0,    0,    4,    4,    4,    4,    6,    4,    2, 
  934.        2,    2,    1,    1,    1,    1,    1,    2,    3,    1, 
  935.        3,    3,    3,    3,    3,    5,    3,    3,    3,    3, 
  936.        3,    4,    4,    4,    4,    3,    1,    3,    1,    1, 
  937.        1,    3,    3,    3,    2,    1,    3,    3,    3,    3, 
  938.        3,    3,    3,    2,    1,    2,    1,    2,    1,    2, 
  939.        1,    2,    1,    1,    1,    2,    2,    2,    2,    1, 
  940.        1,    1,    1,    2,    2,    1,    1,    1,    1,    4, 
  941.        3,    3,    2,    1,    3,    3,    2,    5,    2,    2, 
  942.        2,    2,    1,    2,    1,    5,    1,    2,    2,    3, 
  943.        9,    7,    7,    7,    7,    9,    9,    7,    7,    5, 
  944.        5,    5,    7,    5,    7,    5,    9,    9,    2,    5, 
  945.        5,    5,    5,    5,    5,    9,    9,    9,    9,    7, 
  946.        5,    5,    5,    5,    5,    5,    7,    5,    5,    7, 
  947.        5,    5,    5,    5,    5,    7,    5,    5,    5,    5, 
  948.        7,    5,    7,    5,    5,    5,    5,    5,    5,    2, 
  949.        1,    2,    3,    2,    2,    2,    2,    2,    3,    4, 
  950.        3,    2,    2,    3,    2,    2,    4,    4,    3,    3, 
  951.        3,    2,    2,    2,    5,    7,    2,    1,    1,    0, 
  952.        2,    0,    2,    2
  953. };
  954. #define YYS0    0
  955. #define YYDELTA    331
  956. #define YYNPACT    370
  957. #define YYNDEF    40
  958.  
  959. #define YYr191    0
  960. #define YYr192    1
  961. #define YYr193    2
  962. #define YYr1    3
  963. #define YYr2    4
  964. #define YYr3    5
  965. #define YYr4    6
  966. #define YYr7    7
  967. #define YYr8    8
  968. #define YYr13    9
  969. #define YYr15    10
  970. #define YYr17    11
  971. #define YYr23    12
  972. #define YYr25    13
  973. #define YYr30    14
  974. #define YYr32    15
  975. #define YYr38    16
  976. #define YYr39    17
  977. #define YYr41    18
  978. #define YYr110    19
  979. #define YYr122    20
  980. #define YYr123    21
  981. #define YYr124    22
  982. #define YYr125    23
  983. #define YYr126    24
  984. #define YYr129    25
  985. #define YYr130    26
  986. #define YYr131    27
  987. #define YYr132    28
  988. #define YYr133    29
  989. #define YYr134    30
  990. #define YYr135    31
  991. #define YYr136    32
  992. #define YYr137    33
  993. #define YYr138    34
  994. #define YYr139    35
  995. #define YYr140    36
  996. #define YYr141    37
  997. #define YYr150    38
  998. #define YYr190    39
  999. #define YYr189    40
  1000. #define YYr188    41
  1001. #define YYr187    42
  1002. #define YYr186    43
  1003. #define YYr185    44
  1004. #define YYr184    45
  1005. #define YYr183    46
  1006. #define YYr182    47
  1007. #define YYr181    48
  1008. #define YYr180    49
  1009. #define YYr179    50
  1010. #define YYr178    51
  1011. #define YYr177    52
  1012. #define YYr176    53
  1013. #define YYr175    54
  1014. #define YYr174    55
  1015. #define YYr173    56
  1016. #define YYr172    57
  1017. #define YYr171    58
  1018. #define YYr170    59
  1019. #define YYr169    60
  1020. #define YYr168    61
  1021. #define YYr167    62
  1022. #define YYr166    63
  1023. #define YYr165    64
  1024. #define YYr164    65
  1025. #define YYr163    66
  1026. #define YYr162    67
  1027. #define YYr161    68
  1028. #define YYr160    69
  1029. #define YYr159    70
  1030. #define YYr156    71
  1031. #define YYr155    72
  1032. #define YYr154    73
  1033. #define YYr153    74
  1034. #define YYr152    75
  1035. #define YYr151    76
  1036. #define YYr149    77
  1037. #define YYr148    78
  1038. #define YYr147    79
  1039. #define YYr146    80
  1040. #define YYr145    81
  1041. #define YYr144    82
  1042. #define YYr143    83
  1043. #define YYr142    84
  1044. #define YYr127    85
  1045. #define YYr121    86
  1046. #define YYr120    87
  1047. #define YYr119    88
  1048. #define YYr118    89
  1049. #define YYr117    90
  1050. #define YYr116    91
  1051. #define YYr115    92
  1052. #define YYr114    93
  1053. #define YYr113    94
  1054. #define YYr112    95
  1055. #define YYr111    96
  1056. #define YYr109    97
  1057. #define YYr108    98
  1058. #define YYr107    99
  1059. #define YYr106    100
  1060. #define YYr105    101
  1061. #define YYr104    102
  1062. #define YYr103    103
  1063. #define YYr102    104
  1064. #define YYr101    105
  1065. #define YYr100    106
  1066. #define YYr99    107
  1067. #define YYr98    108
  1068. #define YYr97    109
  1069. #define YYr96    110
  1070. #define YYr95    111
  1071. #define YYr94    112
  1072. #define YYr93    113
  1073. #define YYr92    114
  1074. #define YYr91    115
  1075. #define YYr90    116
  1076. #define YYr89    117
  1077. #define YYr88    118
  1078. #define YYr87    119
  1079. #define YYr86    120
  1080. #define YYr85    121
  1081. #define YYr84    122
  1082. #define YYr83    123
  1083. #define YYr82    124
  1084. #define YYr81    125
  1085. #define YYr80    126
  1086. #define YYr79    127
  1087. #define YYr78    128
  1088. #define YYr77    129
  1089. #define YYr76    130
  1090. #define YYr75    131
  1091. #define YYr74    132
  1092. #define YYr73    133
  1093. #define YYr72    134
  1094. #define YYr71    135
  1095. #define YYr70    136
  1096. #define YYr69    137
  1097. #define YYr68    138
  1098. #define YYr67    139
  1099. #define YYr66    140
  1100. #define YYr65    141
  1101. #define YYr64    142
  1102. #define YYr63    143
  1103. #define YYr62    144
  1104. #define YYr61    145
  1105. #define YYr60    146
  1106. #define YYr59    147
  1107. #define YYr58    148
  1108. #define YYr57    149
  1109. #define YYr56    150
  1110. #define YYr55    151
  1111. #define YYr54    152
  1112. #define YYr53    153
  1113. #define YYr52    154
  1114. #define YYr51    155
  1115. #define YYr50    156
  1116. #define YYr49    157
  1117. #define YYr48    158
  1118. #define YYr47    159
  1119. #define YYr46    160
  1120. #define YYr42    161
  1121. #define YYr40    162
  1122. #define YYr37    163
  1123. #define YYr35    164
  1124. #define YYr34    165
  1125. #define YYr33    166
  1126. #define YYr31    167
  1127. #define YYr29    168
  1128. #define YYr28    169
  1129. #define YYr27    170
  1130. #define YYr26    171
  1131. #define YYr24    172
  1132. #define YYr22    173
  1133. #define YYr21    174
  1134. #define YYr20    175
  1135. #define YYr19    176
  1136. #define YYr18    177
  1137. #define YYr16    178
  1138. #define YYr14    179
  1139. #define YYr12    180
  1140. #define YYr11    181
  1141. #define YYr10    182
  1142. #define YYr9    183
  1143. #define YYr6    184
  1144. #define YYr5    185
  1145. #define YYrACCEPT    YYr191
  1146. #define YYrERROR    YYr192
  1147. #define YYrLR2    YYr193
  1148. #if YYDEBUG
  1149. char * yysvar[] = {
  1150.     "$accept",
  1151.     "var",
  1152.     "num",
  1153.     "range",
  1154.     "var_or_range",
  1155.     "strarg",
  1156.     "e",
  1157.     "term",
  1158.     "expr_list",
  1159.     "command",
  1160.     "errlist",
  1161.     "setlist",
  1162.     "setitem",
  1163.     0
  1164. };
  1165. short yyrmap[] = {
  1166.  
  1167.      191,  192,  193,    1,    2,    3,    4,    7,    8,   13, 
  1168.       15,   17,   23,   25,   30,   32,   38,   39,   41,  110, 
  1169.      122,  123,  124,  125,  126,  129,  130,  131,  132,  133, 
  1170.      134,  135,  136,  137,  138,  139,  140,  141,  150,  190, 
  1171.      189,  188,  187,  186,  185,  184,  183,  182,  181,  180, 
  1172.      179,  178,  177,  176,  175,  174,  173,  172,  171,  170, 
  1173.      169,  168,  167,  166,  165,  164,  163,  162,  161,  160, 
  1174.      159,  156,  155,  154,  153,  152,  151,  149,  148,  147, 
  1175.      146,  145,  144,  143,  142,  127,  121,  120,  119,  118, 
  1176.      117,  116,  115,  114,  113,  112,  111,  109,  108,  107, 
  1177.      106,  105,  104,  103,  102,  101,  100,   99,   98,   97, 
  1178.       96,   95,   94,   93,   92,   91,   90,   89,   88,   87, 
  1179.       86,   85,   84,   83,   82,   81,   80,   79,   78,   77, 
  1180.       76,   75,   74,   73,   72,   71,   70,   69,   68,   67, 
  1181.       66,   65,   64,   63,   62,   61,   60,   59,   58,   57, 
  1182.       56,   55,   54,   53,   52,   51,   50,   49,   48,   47, 
  1183.       46,   42,   40,   37,   35,   34,   33,   31,   29,   28, 
  1184.       27,   26,   24,   22,   21,   20,   19,   18,   16,   14, 
  1185.       12,   11,   10,    9,    6,    5,   36,   45,  128,  157, 
  1186.      158,   44,   43,    0
  1187. };
  1188. short yysmap[] = {
  1189.  
  1190.        0,    5,    6,    7,   10,   11,   26,   27,   33,   37, 
  1191.       61,   62,   63,   94,  135,  143,  150,  151,  152,  153, 
  1192.      250,  310,  312,  313,  315,  316,  319,  322,  323,  324, 
  1193.      325,  326,  381,  389,  390,  391,  392,  454,  476,  512, 
  1194.      511,  510,  509,  508,  507,  506,  505,  504,  503,  500, 
  1195.      495,  494,  493,  492,  491,  490,  485,  484,  479,  478, 
  1196.      477,  475,  474,  473,  472,  471,  470,  469,  468,  467, 
  1197.      466,  465,  464,  463,  462,  461,  460,  459,  458,  457, 
  1198.      456,  455,  447,  445,  440,  434,  431,  424,  423,  422, 
  1199.      421,  420,  413,  412,  410,  408,  404,  403,  402,  401, 
  1200.      400,  399,  398,  397,  396,  393,  388,  387,  386,  385, 
  1201.      384,  383,  382,  380,  379,  378,  377,  376,  375,  374, 
  1202.      373,  372,  371,  370,  369,  368,  367,  366,  365,  364, 
  1203.      363,  362,  361,  360,  359,  358,  357,  356,  355,  354, 
  1204.      353,  352,  351,  350,  349,  348,  347,  346,  345,  344, 
  1205.      343,  342,  341,  340,  339,  338,  337,  336,  335,  334, 
  1206.      333,  332,  331,  330,  329,  328,  320,  318,  317,  314, 
  1207.      311,  309,  308,  307,  306,  305,  304,  303,  302,  301, 
  1208.      300,  299,  298,  297,  296,  295,  294,  293,  292,  291, 
  1209.      290,  289,  288,  287,  286,  285,  284,  283,  282,  281, 
  1210.      280,  279,  278,  277,  276,  275,  274,  273,  272,  271, 
  1211.      270,  269,  268,  267,  266,  265,  264,  263,  262,  261, 
  1212.      260,  259,  258,  257,  256,  255,  254,  253,  251,  249, 
  1213.      248,  247,  246,  245,  244,  243,  242,  241,  240,  239, 
  1214.      238,  237,  236,  234,  233,  232,  231,  230,  229,  228, 
  1215.      227,  226,  225,  224,  223,  222,  221,  220,  219,  218, 
  1216.      217,  216,  215,  214,  213,  212,  211,  210,  209,  208, 
  1217.      207,  206,  205,  204,  203,  202,  201,  200,  199,  198, 
  1218.      197,  195,  194,  193,  192,  191,  190,  189,  188,  187, 
  1219.      186,  185,  184,  183,  182,  181,  180,  179,  178,  174, 
  1220.      172,  169,  166,  148,  147,  146,  145,  144,  139,  138, 
  1221.      136,  128,  117,  116,  115,  114,  113,  112,  111,  110, 
  1222.      109,  108,  107,  103,  102,   99,   93,   91,   90,   86, 
  1223.       85,   77,   76,   74,   73,   72,   71,   70,   69,   68, 
  1224.       67,   60,   59,   56,   55,   52,   51,   50,   41,   40, 
  1225.       31,   30,   25,   24,   23,   22,   21,   20,   19,   18, 
  1226.       17,   16,   15,   14,   13,   12,    9,    8,    4,    3, 
  1227.       38,   39,  154,  155,  156,  118,   75,  157,  158,  159, 
  1228.      160,  161,  162,  163,  119,   78,  120,   79,  121,   80, 
  1229.      122,   81,  123,   82,   83,   84,  124,  125,  126,  127, 
  1230.       87,   88,   35,   36,   96,   97,   42,   43,   28,   29, 
  1231.      164,  130,  129,   92,   32,  131,  321,  173,  395,  175, 
  1232.      176,  167,  168,  140,  177,  141,  394,  142,  170,  171, 
  1233.      252,  513,  480,  481,  482,  483,  514,  515,  486,  487, 
  1234.      405,  406,  407,  488,  409,  489,  411,  516,  517,  196, 
  1235.      414,  415,  416,  417,  418,  419,  518,  519,  520,  521, 
  1236.      496,  425,  426,  427,  428,  429,  430,  497,  432,  433, 
  1237.      498,  435,  436,  437,  438,  439,  499,  441,  442,  443, 
  1238.      444,  501,  446,  502,  448,  449,  450,  451,  452,  453, 
  1239.      235,  149,   34,   95,   44,   46,   47,   48,   49,   98, 
  1240.      132,  100,   53,   54,  101,   57,   58,  133,  134,  104, 
  1241.      105,  106,   64,   65,   66,  165,  327,   45,    1,  137, 
  1242.        2,   89
  1243. };
  1244. int yyntoken = 142;
  1245. int yynvar = 13;
  1246. int yynstate = 522;
  1247. int yynrule = 194;
  1248. #endif
  1249.  
  1250. #line 2 "C:/MKS/OS2/etc/yyparse.c"
  1251.  
  1252. /*
  1253.  * Copyright 1985, 1990 by Mortice Kern Systems Inc.  All rights reserved.
  1254.  * 
  1255.  * Automaton to interpret LALR(1) tables.
  1256.  *
  1257.  * Macros:
  1258.  *    yyclearin - clear the lookahead token.
  1259.  *    yyerrok - forgive a pending error
  1260.  *    YYERROR - simulate an error
  1261.  *    YYACCEPT - halt and return 0
  1262.  *    YYABORT - halt and return 1
  1263.  *    YYRETURN(value) - halt and return value.  You should use this
  1264.  *        instead of return(value).
  1265.  *    YYREAD - ensure yychar contains a lookahead token by reading
  1266.  *        one if it does not.  See also YYSYNC.
  1267.  *    YYRECOVERING - 1 if syntax error detected and not recovered
  1268.  *        yet; otherwise, 0.
  1269.  *
  1270.  * Preprocessor flags:
  1271.  *    YYDEBUG - includes debug code if 1.  The parser will print
  1272.  *         a travelogue of the parse if this is defined as 1
  1273.  *         and yydebug is non-zero.
  1274.  *        yacc -t sets YYDEBUG to 1, but not yydebug.
  1275.  *    YYSSIZE - size of state and value stacks (default 150).
  1276.  *    YYSTATIC - By default, the state stack is an automatic array.
  1277.  *        If this is defined, the stack will be static.
  1278.  *        In either case, the value stack is static.
  1279.  *    YYALLOC - Dynamically allocate both the state and value stacks
  1280.  *        by calling malloc() and free().
  1281.  *    YYLR2 - defined if lookahead is needed to resolve R/R or S/R conflicts
  1282.  *    YYSYNC - if defined, yacc guarantees to fetch a lookahead token
  1283.  *        before any action, even if it doesnt need it for a decision.
  1284.  *        If YYSYNC is defined, YYREAD will never be necessary unless
  1285.  *        the user explicitly sets yychar = -1
  1286.  *
  1287.  * Copyright (c) 1983, by the University of Waterloo
  1288.  */
  1289.  
  1290. /* GENTEXT: yyerror */
  1291. #ifndef I18N
  1292. #define    gettext(x)    x
  1293. #endif
  1294.  
  1295. #ifndef YYSSIZE
  1296. # define YYSSIZE    150
  1297. #endif
  1298.  
  1299. #define YYERROR        goto yyerrlabel
  1300. #define yyerrok        yyerrflag = 0
  1301. #define yyclearin    yychar = -1
  1302. #define YYACCEPT    YYRETURN(0)
  1303. #define YYABORT        YYRETURN(1)
  1304. #define YYRECOVERING()    (yyerrflag != 0)
  1305. #ifdef YYALLOC
  1306. # define YYRETURN(val)    { retval = (val); goto yyReturn; }
  1307. #else
  1308. # define YYRETURN(val)    return(val)
  1309. #endif
  1310. #if YYDEBUG
  1311. /* The if..else makes this macro behave exactly like a statement */
  1312. # define YYREAD    if (yychar < 0) {                    \
  1313.             if ((yychar = yylex()) < 0)            \
  1314.                 yychar = 0;                \
  1315.             if (yydebug)                    \
  1316.                 printf(gettext("read %s (%d)\n"),     \
  1317.                 yyptok(yychar),                \
  1318.                 yychar);                \
  1319.         } else
  1320. #else
  1321. # define YYREAD    if (yychar < 0) {                    \
  1322.             if ((yychar = yylex()) < 0)            \
  1323.                 yychar = 0;                \
  1324.         } else
  1325. #endif
  1326.  
  1327. #define YYERRCODE    256        /* value of `error' */
  1328. #define    YYQYYP    yyq[yyq-yyp]
  1329.  
  1330. YYSTYPE    yyval;                /* $ */
  1331. YYSTYPE    *yypvt;                /* $n */
  1332. YYSTYPE    yylval;                /* yylex() sets this */
  1333.  
  1334. int    yychar,                /* current token */
  1335.     yyerrflag,            /* error flag */
  1336.     yynerrs;            /* error count */
  1337.  
  1338. #if YYDEBUG
  1339. int yydebug = 0;        /* debug flag & tables */
  1340. extern char    *yysvar[], *yystoken[], *yyptok();
  1341. extern short    yyrmap[], yysmap[];
  1342. extern int    yynstate, yynvar, yyntoken, yynrule;
  1343. # define yyassert(condition, msg, arg) \
  1344.     if (!(condition)) { \
  1345.         printf(gettext("\nyacc bug: ")); \
  1346.         printf(msg, arg); \
  1347.         YYABORT; }
  1348. #else /* !YYDEBUG */
  1349. # define yyassert(condition, msg, arg)
  1350. #endif
  1351.  
  1352. yyparse()
  1353. {
  1354.     register short        yyi, *yyp;    /* for table lookup */
  1355.     register short        *yyps;        /* top of state stack */
  1356.     register short        yystate;    /* current state */
  1357.     register YYSTYPE    *yypv;        /* top of value stack */
  1358.     register short        *yyq;
  1359.     register int        yyj;
  1360.  
  1361. #ifdef YYSTATIC
  1362.     static short    yys[YYSSIZE + 1];
  1363.     static YYSTYPE    yyv[YYSSIZE + 1];
  1364. #else
  1365. #ifdef YYALLOC
  1366.     YYSTYPE *yyv;
  1367.     short    *yys;
  1368.     YYSTYPE save_yylval;
  1369.     YYSTYPE save_yyval;
  1370.     YYSTYPE *save_yypvt;
  1371.     int save_yychar, save_yyerrflag, save_yynerrs;
  1372.     int retval;
  1373. #if 0    /* defined in <stdlib.h>*/
  1374.     extern char    *malloc();
  1375. #endif
  1376. #else
  1377.     short        yys[YYSSIZE + 1];
  1378.     static YYSTYPE    yyv[YYSSIZE + 1];    /* historically static */
  1379. #endif
  1380. #endif
  1381.  
  1382. #ifdef YYALLOC
  1383.     yys = (short *) malloc((YYSSIZE + 1) * sizeof(short));
  1384.     yyv = (YYSTYPE *) malloc((YYSSIZE + 1) * sizeof(YYSTYPE));
  1385.     if (yys == (short *)0 || yyv == (YYSTYPE *)0) {
  1386.         yyerror("Not enough space for parser stacks");
  1387.         return 1;
  1388.     }
  1389.     save_yylval = yylval;
  1390.     save_yyval = yyval;
  1391.     save_yypvt = yypvt;
  1392.     save_yychar = yychar;
  1393.     save_yyerrflag = yyerrflag;
  1394.     save_yynerrs = yynerrs;
  1395. #endif
  1396.  
  1397.     yynerrs = 0;
  1398.     yyerrflag = 0;
  1399.     yychar = -1;
  1400.     yyps = yys;
  1401.     yypv = yyv;
  1402.     yystate = YYS0;        /* start state */
  1403.  
  1404. yyStack:
  1405.     yyassert((unsigned)yystate < yynstate, gettext("state %d\n"), yystate);
  1406.     if (++yyps > &yys[YYSSIZE]) {
  1407.         yyerror("Parser stack overflow");
  1408.         YYABORT;
  1409.     }
  1410.     *yyps = yystate;    /* stack current state */
  1411.     *++yypv = yyval;    /* ... and value */
  1412.  
  1413. #if YYDEBUG
  1414.     if (yydebug)
  1415.         printf(gettext("state %d (%d), char %s (%d)\n"),
  1416.             yysmap[yystate], yystate, yyptok(yychar), yychar);
  1417. #endif
  1418.  
  1419.     /*
  1420.      *    Look up next action in action table.
  1421.      */
  1422. yyEncore:
  1423. #ifdef YYSYNC
  1424.     YYREAD;
  1425. #endif
  1426.     if (yystate >= sizeof yypact/sizeof yypact[0])     /* simple state */
  1427.         yyi = yystate - YYDELTA;    /* reduce in any case */
  1428.     else {
  1429.         if(*(yyp = &yyact[yypact[yystate]]) >= 0) {
  1430.             /* Look for a shift on yychar */
  1431. #ifndef YYSYNC
  1432.             YYREAD;
  1433. #endif
  1434.             yyq = yyp;
  1435.             yyi = yychar;
  1436.             while (yyi < *yyp++)
  1437.                 ;
  1438.             if (yyi == yyp[-1]) {
  1439.                 yystate = ~YYQYYP;
  1440. #if YYDEBUG
  1441.                 if (yydebug)
  1442.                     printf(gettext("shift %d (%d)\n"),
  1443.                         yysmap[yystate], yystate);
  1444. #endif
  1445.                 yyval = yylval;    /* stack what yylex() set */
  1446.                 yychar = -1;        /* clear token */
  1447.                 if (yyerrflag)
  1448.                     yyerrflag--;    /* successful shift */
  1449.                 goto yyStack;
  1450.             }
  1451.         }
  1452.  
  1453.         /*
  1454.           *    Fell through - take default action
  1455.           */
  1456.  
  1457.         if (yystate >= sizeof yydef /sizeof yydef[0])
  1458.             goto yyError;
  1459.         if ((yyi = yydef[yystate]) < 0)     { /* default == reduce? */
  1460.             /* Search exception table */
  1461.             yyassert((unsigned)~yyi < sizeof yyex/sizeof yyex[0],
  1462.                 gettext("exception %d\n"), yystate);
  1463.             yyp = &yyex[~yyi];
  1464. #ifndef YYSYNC
  1465.             YYREAD;
  1466. #endif
  1467.             while((yyi = *yyp) >= 0 && yyi != yychar)
  1468.                 yyp += 2;
  1469.             yyi = yyp[1];
  1470.             yyassert(yyi >= 0,
  1471.                  gettext("Ex table not reduce %d\n"), yyi);
  1472.         }
  1473.     }
  1474.  
  1475. #ifdef YYLR2
  1476. yyReduce:    /* reduce yyi */
  1477. #endif
  1478.     yyassert((unsigned)yyi < yynrule, gettext("reduce %d\n"), yyi);
  1479.     yyj = yyrlen[yyi];
  1480. #if YYDEBUG
  1481.     if (yydebug) printf(gettext("reduce %d (%d), pops %d (%d)\n"), 
  1482.         yyrmap[yyi], yyi, yysmap[yyps[-yyj]], yyps[-yyj]);
  1483. #endif
  1484.     yyps -= yyj;        /* pop stacks */
  1485.     yypvt = yypv;        /* save top */
  1486.     yypv -= yyj;
  1487.     yyval = yypv[1];    /* default action $ = $1 */
  1488.     switch (yyi) {        /* perform semantic action */
  1489.         
  1490. case YYr1: {    /* command :  S_LET var_or_range '=' e */
  1491. #line 171 "gram.y"
  1492.  let(yypvt[-2].rval.left.vp, yypvt[0].enode); 
  1493. } break;
  1494.  
  1495. case YYr2: {    /* command :  S_LABEL var_or_range '=' e */
  1496. #line 173 "gram.y"
  1497.  slet(yypvt[-2].rval.left.vp, yypvt[0].enode, 0); 
  1498. } break;
  1499.  
  1500. case YYr3: {    /* command :  S_LEFTSTRING var_or_range '=' e */
  1501. #line 175 "gram.y"
  1502.  slet(yypvt[-2].rval.left.vp, yypvt[0].enode, -1); 
  1503. } break;
  1504.  
  1505. case YYr4: {    /* command :  S_RIGHTSTRING var_or_range '=' e */
  1506. #line 177 "gram.y"
  1507.  slet(yypvt[-2].rval.left.vp, yypvt[0].enode, 1); 
  1508. } break;
  1509.  
  1510. case YYr5: {    /* command :  S_FORMAT COL ':' COL NUMBER NUMBER NUMBER */
  1511. #line 179 "gram.y"
  1512.  doformat(yypvt[-5].ival,yypvt[-3].ival,yypvt[-2].ival,yypvt[-1].ival,yypvt[0].ival); 
  1513. } break;
  1514.  
  1515. case YYr6: {    /* command :  S_FORMAT COL NUMBER NUMBER NUMBER */
  1516. #line 181 "gram.y"
  1517.  doformat(yypvt[-3].ival,yypvt[-3].ival,yypvt[-2].ival,yypvt[-1].ival,yypvt[0].ival); 
  1518. } break;
  1519.  
  1520. case YYr7: {    /* command :  S_FORMAT COL ':' COL NUMBER NUMBER */
  1521. #line 183 "gram.y"
  1522.  doformat(yypvt[-4].ival,yypvt[-2].ival,yypvt[-1].ival,yypvt[0].ival, REFMTFIX); 
  1523. } break;
  1524.  
  1525. case YYr8: {    /* command :  S_FORMAT COL NUMBER NUMBER */
  1526. #line 185 "gram.y"
  1527.  doformat(yypvt[-2].ival,yypvt[-2].ival,yypvt[-1].ival,yypvt[0].ival, REFMTFIX); 
  1528. } break;
  1529.  
  1530. case YYr9: {    /* command :  S_GET strarg */
  1531. #line 186 "gram.y"
  1532.   
  1533.                   char *tmp;
  1534.                   tmp = yypvt[0].sval;
  1535.                   readfile (tmp, 1);
  1536.                   scxfree(tmp);
  1537.                 
  1538. } break;
  1539.  
  1540. case YYr10: {    /* command :  S_MERGE strarg */
  1541. #line 193 "gram.y"
  1542.  
  1543.                   char *tmp;
  1544.                   tmp = yypvt[0].sval;
  1545.                   readfile (tmp, 0);
  1546.                   scxfree(tmp);
  1547.                 
  1548. } break;
  1549.  
  1550. case YYr11: {    /* command :  S_MDIR strarg */
  1551. #line 200 "gram.y"
  1552.  if (mdir) scxfree(mdir); mdir = yypvt[0].sval; 
  1553. } break;
  1554.  
  1555. case YYr12: {    /* command :  S_PUT strarg range */
  1556. #line 202 "gram.y"
  1557.  (void) writefile(yypvt[-1].sval, (yypvt[0].rval.left.vp)->row, 
  1558.                  (yypvt[0].rval.left.vp)->col, (yypvt[0].rval.right.vp)->row,
  1559.                  (yypvt[0].rval.right.vp)->col);
  1560.                  scxfree(yypvt[-1].sval); 
  1561. } break;
  1562.  
  1563. case YYr13: {    /* command :  S_PUT strarg */
  1564. #line 207 "gram.y"
  1565.  (void) writefile (yypvt[0].sval, 0, 0, maxrow, maxcol);
  1566.                  scxfree(yypvt[0].sval); 
  1567. } break;
  1568.  
  1569. case YYr14: {    /* command :  S_WRITE strarg range */
  1570. #line 209 "gram.y"
  1571.  (void) printfile(yypvt[-1].sval, (yypvt[0].rval.left.vp)->row, 
  1572.              (yypvt[0].rval.left.vp)->col, (yypvt[0].rval.right.vp)->row,
  1573.              (yypvt[0].rval.right.vp)->col);
  1574.              scxfree(yypvt[-1].sval); 
  1575. } break;
  1576.  
  1577. case YYr15: {    /* command :  S_WRITE strarg */
  1578. #line 213 "gram.y"
  1579.  (void) printfile (yypvt[0].sval, 0, 0, maxrow, maxcol);
  1580.              scxfree(yypvt[0].sval); 
  1581. } break;
  1582.  
  1583. case YYr16: {    /* command :  S_TBL strarg range */
  1584. #line 215 "gram.y"
  1585.  (void) tblprintfile(yypvt[-1].sval, (yypvt[0].rval.left.vp)->row, 
  1586.              (yypvt[0].rval.left.vp)->col, (yypvt[0].rval.right.vp)->row,
  1587.              (yypvt[0].rval.right.vp)->col);
  1588.              scxfree(yypvt[-1].sval); 
  1589. } break;
  1590.  
  1591. case YYr17: {    /* command :  S_TBL strarg */
  1592. #line 219 "gram.y"
  1593.  (void)tblprintfile (yypvt[0].sval, 0, 0, maxrow, maxcol);
  1594.              scxfree(yypvt[0].sval); 
  1595. } break;
  1596.  
  1597. case YYr18: {    /* command :  S_SHOW COL ':' COL */
  1598. #line 222 "gram.y"
  1599.  showcol( yypvt[-2].ival, yypvt[0].ival); 
  1600. } break;
  1601.  
  1602. case YYr19: {    /* command :  S_SHOW NUMBER ':' NUMBER */
  1603. #line 224 "gram.y"
  1604.  showrow( yypvt[-2].ival, yypvt[0].ival); 
  1605. } break;
  1606.  
  1607. case YYr20: {    /* command :  S_HIDE COL */
  1608. #line 226 "gram.y"
  1609.  hide_col( yypvt[0].ival ); 
  1610. } break;
  1611.  
  1612. case YYr21: {    /* command :  S_HIDE NUMBER */
  1613. #line 228 "gram.y"
  1614.  hide_row( yypvt[0].ival ); 
  1615. } break;
  1616.  
  1617. case YYr22: {    /* command :  S_COPY range var_or_range */
  1618. #line 230 "gram.y"
  1619.  copy(yypvt[-1].rval.left.vp,yypvt[-1].rval.right.vp,
  1620.                     yypvt[0].rval.left.vp,yypvt[0].rval.right.vp); 
  1621. } break;
  1622.  
  1623. case YYr23: {    /* command :  S_ERASE */
  1624. #line 233 "gram.y"
  1625.  eraser(lookat(showsr, showsc),
  1626.                         lookat(currow, curcol)); 
  1627. } break;
  1628.  
  1629. case YYr24: {    /* command :  S_ERASE var_or_range */
  1630. #line 236 "gram.y"
  1631.  eraser(yypvt[0].rval.left.vp, yypvt[0].rval.right.vp); 
  1632. } break;
  1633.  
  1634. case YYr25: {    /* command :  S_VALUE */
  1635. #line 237 "gram.y"
  1636.  valueize_area(showsr, showsc, currow, curcol);
  1637.                  modflg++; 
  1638. } break;
  1639.  
  1640. case YYr26: {    /* command :  S_VALUE var_or_range */
  1641. #line 239 "gram.y"
  1642.  valueize_area((yypvt[0].rval.left.vp)->row,
  1643.                     (yypvt[0].rval.left.vp)->col,
  1644.                     (yypvt[0].rval.right.vp)->row,
  1645.                     (yypvt[0].rval.right.vp)->col); modflg++; 
  1646. } break;
  1647.  
  1648. case YYr27: {    /* command :  S_FILL num num */
  1649. #line 243 "gram.y"
  1650.  fill(lookat(showsr, showsc),
  1651.                       lookat(currow, curcol), yypvt[-1].fval, yypvt[0].fval); 
  1652. } break;
  1653.  
  1654. case YYr28: {    /* command :  S_FILL var_or_range num num */
  1655. #line 246 "gram.y"
  1656.  fill(yypvt[-2].rval.left.vp, yypvt[-2].rval.right.vp, yypvt[-1].fval, yypvt[0].fval); 
  1657. } break;
  1658.  
  1659. case YYr29: {    /* command :  S_FMT var_or_range STRING */
  1660. #line 248 "gram.y"
  1661.  format_cell(yypvt[-1].rval.left.vp, yypvt[-1].rval.right.vp, yypvt[0].sval); 
  1662. } break;
  1663.  
  1664. case YYr30: {    /* command :  S_LOCK */
  1665. #line 250 "gram.y"
  1666.  lock_cells(lookat(showsr, showsc),
  1667.                         lookat(currow, curcol)); 
  1668. } break;
  1669.  
  1670. case YYr31: {    /* command :  S_LOCK var_or_range */
  1671. #line 253 "gram.y"
  1672.  lock_cells(yypvt[0].rval.left.vp, yypvt[0].rval.right.vp); 
  1673. } break;
  1674.  
  1675. case YYr32: {    /* command :  S_UNLOCK */
  1676. #line 255 "gram.y"
  1677.  unlock_cells(lookat(showsr, showsc),
  1678.                         lookat(currow, curcol)); 
  1679. } break;
  1680.  
  1681. case YYr33: {    /* command :  S_UNLOCK var_or_range */
  1682. #line 258 "gram.y"
  1683.  unlock_cells(yypvt[0].rval.left.vp, yypvt[0].rval.right.vp); 
  1684. } break;
  1685.  
  1686. case YYr34: {    /* command :  S_GOTO var_or_range */
  1687. #line 259 "gram.y"
  1688. moveto(yypvt[0].rval.left.vp->row, yypvt[0].rval.left.vp->col);
  1689. } break;
  1690.  
  1691. case YYr35: {    /* command :  S_GOTO num */
  1692. #line 260 "gram.y"
  1693.  num_search(yypvt[0].fval, 0); 
  1694. } break;
  1695.  
  1696. case YYr37: {    /* command :  S_GOTO STRING */
  1697. #line 262 "gram.y"
  1698.  str_search(yypvt[0].sval); 
  1699. } break;
  1700.  
  1701. case YYr38: {    /* command :  S_GOTO */
  1702. #line 263 "gram.y"
  1703.  go_last(); 
  1704. } break;
  1705.  
  1706. case YYr39: {    /* command :  S_DEFINE strarg */
  1707. #line 264 "gram.y"
  1708.  struct ent_ptr arg1, arg2;
  1709.                     arg1.vp = lookat(showsr, showsc);
  1710.                     arg1.vf = 0;
  1711.                     arg2.vp = lookat(currow, curcol);
  1712.                     arg2.vf = 0;
  1713.                                         if (arg1.vp == arg2.vp)
  1714.                                            add_range(yypvt[0].sval, arg2, arg2, 0);
  1715.                                         else
  1716.                                            add_range(yypvt[0].sval, arg1, arg2, 1); 
  1717. } break;
  1718.  
  1719. case YYr40: {    /* command :  S_DEFINE strarg range */
  1720. #line 274 "gram.y"
  1721.  add_range(yypvt[-1].sval, yypvt[0].rval.left, yypvt[0].rval.right, 1); 
  1722. } break;
  1723.  
  1724. case YYr41: {    /* command :  S_DEFINE strarg var */
  1725. #line 275 "gram.y"
  1726.  add_range(yypvt[-1].sval, yypvt[0].ent, yypvt[0].ent, 0); 
  1727. } break;
  1728.  
  1729. case YYr42: {    /* command :  S_UNDEFINE var_or_range */
  1730. #line 276 "gram.y"
  1731.  del_range(yypvt[0].rval.left.vp, yypvt[0].rval.right.vp); 
  1732. } break;
  1733.  
  1734. case YYr46: {    /* term :  var */
  1735. #line 281 "gram.y"
  1736.  yyval.enode = new_var(O_VAR, yypvt[0].ent); 
  1737. } break;
  1738.  
  1739. case YYr47: {    /* term :  K_FIXED term */
  1740. #line 282 "gram.y"
  1741.  yyval.enode = new ('f', ENULL, yypvt[0].enode); 
  1742. } break;
  1743.  
  1744. case YYr48: {    /* term :  '@' K_SUM '(' var_or_range ')' */
  1745. #line 284 "gram.y"
  1746.  yyval.enode = new_range(REDUCE | '+', yypvt[-1].rval); 
  1747. } break;
  1748.  
  1749. case YYr49: {    /* term :  '@' K_PROD '(' var_or_range ')' */
  1750. #line 286 "gram.y"
  1751.  yyval.enode = new_range (REDUCE | '*', yypvt[-1].rval); 
  1752. } break;
  1753.  
  1754. case YYr50: {    /* term :  '@' K_AVG '(' var_or_range ')' */
  1755. #line 288 "gram.y"
  1756.  yyval.enode = new_range (REDUCE | 'a', yypvt[-1].rval); 
  1757. } break;
  1758.  
  1759. case YYr51: {    /* term :  '@' K_STDDEV '(' var_or_range ')' */
  1760. #line 290 "gram.y"
  1761.  yyval.enode = new_range (REDUCE | 's', yypvt[-1].rval); 
  1762. } break;
  1763.  
  1764. case YYr52: {    /* term :  '@' K_COUNT '(' var_or_range ')' */
  1765. #line 292 "gram.y"
  1766.  yyval.enode = new_range (REDUCE | 'c', yypvt[-1].rval); 
  1767. } break;
  1768.  
  1769. case YYr53: {    /* term :  '@' K_MAX '(' var_or_range ')' */
  1770. #line 294 "gram.y"
  1771.  yyval.enode = new_range (REDUCE | MAX, yypvt[-1].rval); 
  1772. } break;
  1773.  
  1774. case YYr54: {    /* term :  '@' K_MAX '(' e ',' expr_list ')' */
  1775. #line 296 "gram.y"
  1776.  yyval.enode = new(LMAX, yypvt[-1].enode, yypvt[-3].enode); 
  1777. } break;
  1778.  
  1779. case YYr55: {    /* term :  '@' K_MIN '(' var_or_range ')' */
  1780. #line 298 "gram.y"
  1781.  yyval.enode = new_range (REDUCE | MIN, yypvt[-1].rval); 
  1782. } break;
  1783.  
  1784. case YYr56: {    /* term :  '@' K_MIN '(' e ',' expr_list ')' */
  1785. #line 300 "gram.y"
  1786.  yyval.enode = new(LMIN, yypvt[-1].enode, yypvt[-3].enode); 
  1787. } break;
  1788.  
  1789. case YYr57: {    /* term :  '@' K_ABS '(' e ')' */
  1790. #line 301 "gram.y"
  1791.  yyval.enode = new(ABS, ENULL, yypvt[-1].enode); 
  1792. } break;
  1793.  
  1794. case YYr58: {    /* term :  '@' K_ACOS '(' e ')' */
  1795. #line 302 "gram.y"
  1796.  yyval.enode = new(ACOS, ENULL, yypvt[-1].enode); 
  1797. } break;
  1798.  
  1799. case YYr59: {    /* term :  '@' K_ASIN '(' e ')' */
  1800. #line 303 "gram.y"
  1801.  yyval.enode = new(ASIN, ENULL, yypvt[-1].enode); 
  1802. } break;
  1803.  
  1804. case YYr60: {    /* term :  '@' K_ATAN '(' e ')' */
  1805. #line 304 "gram.y"
  1806.  yyval.enode = new(ATAN, ENULL, yypvt[-1].enode); 
  1807. } break;
  1808.  
  1809. case YYr61: {    /* term :  '@' K_ATAN2 '(' e ',' e ')' */
  1810. #line 305 "gram.y"
  1811.  yyval.enode = new(ATAN2, yypvt[-3].enode, yypvt[-1].enode); 
  1812. } break;
  1813.  
  1814. case YYr62: {    /* term :  '@' K_CEIL '(' e ')' */
  1815. #line 306 "gram.y"
  1816.  yyval.enode = new(CEIL, ENULL, yypvt[-1].enode); 
  1817. } break;
  1818.  
  1819. case YYr63: {    /* term :  '@' K_COS '(' e ')' */
  1820. #line 307 "gram.y"
  1821.  yyval.enode = new(COS, ENULL, yypvt[-1].enode); 
  1822. } break;
  1823.  
  1824. case YYr64: {    /* term :  '@' K_EXP '(' e ')' */
  1825. #line 308 "gram.y"
  1826.  yyval.enode = new(EXP, ENULL, yypvt[-1].enode); 
  1827. } break;
  1828.  
  1829. case YYr65: {    /* term :  '@' K_FABS '(' e ')' */
  1830. #line 309 "gram.y"
  1831.  yyval.enode = new(FABS, ENULL, yypvt[-1].enode); 
  1832. } break;
  1833.  
  1834. case YYr66: {    /* term :  '@' K_FLOOR '(' e ')' */
  1835. #line 310 "gram.y"
  1836.  yyval.enode = new(FLOOR, ENULL, yypvt[-1].enode); 
  1837. } break;
  1838.  
  1839. case YYr67: {    /* term :  '@' K_HYPOT '(' e ',' e ')' */
  1840. #line 311 "gram.y"
  1841.  yyval.enode = new(HYPOT, yypvt[-3].enode, yypvt[-1].enode); 
  1842. } break;
  1843.  
  1844. case YYr68: {    /* term :  '@' K_LN '(' e ')' */
  1845. #line 312 "gram.y"
  1846.  yyval.enode = new(LOG, ENULL, yypvt[-1].enode); 
  1847. } break;
  1848.  
  1849. case YYr69: {    /* term :  '@' K_LOG '(' e ')' */
  1850. #line 313 "gram.y"
  1851.  yyval.enode = new(LOG10, ENULL, yypvt[-1].enode); 
  1852. } break;
  1853.  
  1854. case YYr70: {    /* term :  '@' K_POW '(' e ',' e ')' */
  1855. #line 314 "gram.y"
  1856.  yyval.enode = new(POW, yypvt[-3].enode, yypvt[-1].enode); 
  1857. } break;
  1858.  
  1859. case YYr71: {    /* term :  '@' K_SIN '(' e ')' */
  1860. #line 315 "gram.y"
  1861.  yyval.enode = new(SIN, ENULL, yypvt[-1].enode); 
  1862. } break;
  1863.  
  1864. case YYr72: {    /* term :  '@' K_SQRT '(' e ')' */
  1865. #line 316 "gram.y"
  1866.  yyval.enode = new(SQRT, ENULL, yypvt[-1].enode); 
  1867. } break;
  1868.  
  1869. case YYr73: {    /* term :  '@' K_TAN '(' e ')' */
  1870. #line 317 "gram.y"
  1871.  yyval.enode = new(TAN, ENULL, yypvt[-1].enode); 
  1872. } break;
  1873.  
  1874. case YYr74: {    /* term :  '@' K_DTR '(' e ')' */
  1875. #line 318 "gram.y"
  1876.  yyval.enode = new(DTR, ENULL, yypvt[-1].enode); 
  1877. } break;
  1878.  
  1879. case YYr75: {    /* term :  '@' K_RTD '(' e ')' */
  1880. #line 319 "gram.y"
  1881.  yyval.enode = new(RTD, ENULL, yypvt[-1].enode); 
  1882. } break;
  1883.  
  1884. case YYr76: {    /* term :  '@' K_RND '(' e ')' */
  1885. #line 320 "gram.y"
  1886.  yyval.enode = new(RND, ENULL, yypvt[-1].enode); 
  1887. } break;
  1888.  
  1889. case YYr77: {    /* term :  '@' K_ROUND '(' e ',' e ')' */
  1890. #line 321 "gram.y"
  1891.  yyval.enode = new(ROUND, yypvt[-3].enode, yypvt[-1].enode); 
  1892. } break;
  1893.  
  1894. case YYr78: {    /* term :  '@' K_IF '(' e ',' e ',' e ')' */
  1895. #line 322 "gram.y"
  1896.  yyval.enode = new(IF,  yypvt[-5].enode,new(',',yypvt[-3].enode,yypvt[-1].enode)); 
  1897. } break;
  1898.  
  1899. case YYr79: {    /* term :  '@' K_PV '(' e ',' e ',' e ')' */
  1900. #line 324 "gram.y"
  1901.  yyval.enode = new(PV,  yypvt[-5].enode,new(':',yypvt[-3].enode,yypvt[-1].enode)); 
  1902. } break;
  1903.  
  1904. case YYr80: {    /* term :  '@' K_FV '(' e ',' e ',' e ')' */
  1905. #line 325 "gram.y"
  1906.  yyval.enode = new(FV,  yypvt[-5].enode,new(':',yypvt[-3].enode,yypvt[-1].enode)); 
  1907. } break;
  1908.  
  1909. case YYr81: {    /* term :  '@' K_PMT '(' e ',' e ',' e ')' */
  1910. #line 326 "gram.y"
  1911.  yyval.enode = new(PMT, yypvt[-5].enode,new(':',yypvt[-3].enode,yypvt[-1].enode)); 
  1912. } break;
  1913.  
  1914. case YYr82: {    /* term :  '@' K_HOUR '(' e ')' */
  1915. #line 328 "gram.y"
  1916.  yyval.enode = new(HOUR,ENULL, yypvt[-1].enode); 
  1917. } break;
  1918.  
  1919. case YYr83: {    /* term :  '@' K_MINUTE '(' e ')' */
  1920. #line 329 "gram.y"
  1921.  yyval.enode = new(MINUTE,ENULL, yypvt[-1].enode); 
  1922. } break;
  1923.  
  1924. case YYr84: {    /* term :  '@' K_SECOND '(' e ')' */
  1925. #line 330 "gram.y"
  1926.  yyval.enode = new(SECOND,ENULL, yypvt[-1].enode); 
  1927. } break;
  1928.  
  1929. case YYr85: {    /* term :  '@' K_MONTH '(' e ')' */
  1930. #line 331 "gram.y"
  1931.  yyval.enode = new(MONTH,ENULL,yypvt[-1].enode); 
  1932. } break;
  1933.  
  1934. case YYr86: {    /* term :  '@' K_DAY '(' e ')' */
  1935. #line 332 "gram.y"
  1936.  yyval.enode = new(DAY, ENULL, yypvt[-1].enode); 
  1937. } break;
  1938.  
  1939. case YYr87: {    /* term :  '@' K_YEAR '(' e ')' */
  1940. #line 333 "gram.y"
  1941.  yyval.enode = new(YEAR, ENULL, yypvt[-1].enode); 
  1942. } break;
  1943.  
  1944. case YYr88: {    /* term :  '@' K_NOW */
  1945. #line 334 "gram.y"
  1946.  yyval.enode = new(NOW, ENULL, ENULL);
  1947. } break;
  1948.  
  1949. case YYr89: {    /* term :  '@' K_DTS '(' e ',' e ',' e ')' */
  1950. #line 336 "gram.y"
  1951.  yyval.enode = new(DTS, yypvt[-5].enode, new(',', yypvt[-3].enode, yypvt[-1].enode));
  1952. } break;
  1953.  
  1954. case YYr90: {    /* term :  '@' K_TTS '(' e ',' e ',' e ')' */
  1955. #line 338 "gram.y"
  1956.  yyval.enode = new(TTS, yypvt[-5].enode, new(',', yypvt[-3].enode, yypvt[-1].enode));
  1957. } break;
  1958.  
  1959. case YYr91: {    /* term :  '@' K_STON '(' e ')' */
  1960. #line 339 "gram.y"
  1961.  yyval.enode = new(STON, ENULL, yypvt[-1].enode); 
  1962. } break;
  1963.  
  1964. case YYr92: {    /* term :  '@' K_EQS '(' e ',' e ')' */
  1965. #line 340 "gram.y"
  1966.  yyval.enode = new (EQS, yypvt[-3].enode, yypvt[-1].enode); 
  1967. } break;
  1968.  
  1969. case YYr93: {    /* term :  '@' K_DATE '(' e ')' */
  1970. #line 341 "gram.y"
  1971.  yyval.enode = new(DATE, ENULL, yypvt[-1].enode); 
  1972. } break;
  1973.  
  1974. case YYr94: {    /* term :  '@' K_FMT '(' e ',' e ')' */
  1975. #line 342 "gram.y"
  1976.  yyval.enode = new(FMT, yypvt[-3].enode, yypvt[-1].enode); 
  1977. } break;
  1978.  
  1979. case YYr95: {    /* term :  '@' K_UPPER '(' e ')' */
  1980. #line 343 "gram.y"
  1981.  yyval.enode = new(UPPER, ENULL, yypvt[-1].enode); 
  1982. } break;
  1983.  
  1984. case YYr96: {    /* term :  '@' K_LOWER '(' e ')' */
  1985. #line 344 "gram.y"
  1986.  yyval.enode = new(LOWER, ENULL, yypvt[-1].enode); 
  1987. } break;
  1988.  
  1989. case YYr97: {    /* term :  '@' K_CAPITAL '(' e ')' */
  1990. #line 345 "gram.y"
  1991.  yyval.enode = new(CAPITAL, ENULL, yypvt[-1].enode); 
  1992. } break;
  1993.  
  1994. case YYr98: {    /* term :  '@' K_INDEX '(' e ',' var_or_range ')' */
  1995. #line 347 "gram.y"
  1996.  yyval.enode = new(INDEX, yypvt[-3].enode, new_range(REDUCE | INDEX, yypvt[-1].rval)); 
  1997. } break;
  1998.  
  1999. case YYr99: {    /* term :  '@' K_LOOKUP '(' e ',' var_or_range ')' */
  2000. #line 349 "gram.y"
  2001.  yyval.enode = new(LOOKUP, yypvt[-3].enode, new_range(REDUCE | LOOKUP, yypvt[-1].rval)); 
  2002. } break;
  2003.  
  2004. case YYr100: {    /* term :  '@' K_HLOOKUP '(' e ',' var_or_range ',' e ')' */
  2005. #line 351 "gram.y"
  2006.  yyval.enode = new(HLOOKUP, new(',', yypvt[-5].enode, yypvt[-1].enode),
  2007.             new_range(REDUCE | HLOOKUP, yypvt[-3].rval)); 
  2008. } break;
  2009.  
  2010. case YYr101: {    /* term :  '@' K_VLOOKUP '(' e ',' var_or_range ',' e ')' */
  2011. #line 354 "gram.y"
  2012.  yyval.enode = new(VLOOKUP, new(',', yypvt[-5].enode, yypvt[-1].enode),
  2013.             new_range(REDUCE | VLOOKUP, yypvt[-3].rval)); 
  2014. } break;
  2015.  
  2016. case YYr102: {    /* term :  '@' K_STINDEX '(' e ',' var_or_range ')' */
  2017. #line 357 "gram.y"
  2018.  yyval.enode = new(STINDEX, yypvt[-3].enode, new_range(REDUCE | STINDEX, yypvt[-1].rval)); 
  2019. } break;
  2020.  
  2021. case YYr103: {    /* term :  '@' K_EXT '(' e ',' e ')' */
  2022. #line 358 "gram.y"
  2023.  yyval.enode = new(EXT, yypvt[-3].enode, yypvt[-1].enode); 
  2024. } break;
  2025.  
  2026. case YYr104: {    /* term :  '@' K_NVAL '(' e ',' e ')' */
  2027. #line 359 "gram.y"
  2028.  yyval.enode = new(NVAL, yypvt[-3].enode, yypvt[-1].enode); 
  2029. } break;
  2030.  
  2031. case YYr105: {    /* term :  '@' K_SVAL '(' e ',' e ')' */
  2032. #line 360 "gram.y"
  2033.  yyval.enode = new(SVAL, yypvt[-3].enode, yypvt[-1].enode); 
  2034. } break;
  2035.  
  2036. case YYr106: {    /* term :  '@' K_SUBSTR '(' e ',' e ',' e ')' */
  2037. #line 362 "gram.y"
  2038.  yyval.enode = new(SUBSTR, yypvt[-5].enode, new(',', yypvt[-3].enode, yypvt[-1].enode)); 
  2039. } break;
  2040.  
  2041. case YYr107: {    /* term :  '(' e ')' */
  2042. #line 363 "gram.y"
  2043.  yyval.enode = yypvt[-1].enode; 
  2044. } break;
  2045.  
  2046. case YYr108: {    /* term :  '+' term */
  2047. #line 364 "gram.y"
  2048.  yyval.enode = yypvt[0].enode; 
  2049. } break;
  2050.  
  2051. case YYr109: {    /* term :  '-' term */
  2052. #line 365 "gram.y"
  2053.  yyval.enode = new ('m', ENULL, yypvt[0].enode); 
  2054. } break;
  2055.  
  2056. case YYr110: {    /* term :  NUMBER */
  2057. #line 366 "gram.y"
  2058.  yyval.enode = new_const(O_CONST, (double) yypvt[0].ival); 
  2059. } break;
  2060.  
  2061. case YYr111: {    /* term :  FNUMBER */
  2062. #line 367 "gram.y"
  2063.  yyval.enode = new_const(O_CONST, yypvt[0].fval); 
  2064. } break;
  2065.  
  2066. case YYr112: {    /* term :  NUMBER '_' NUMBER '_' NUMBER */
  2067. #line 369 "gram.y"
  2068.  yyval.enode = new_const(O_CONST, convert_date(yypvt[-4].ival,yypvt[-2].ival,yypvt[0].ival)); 
  2069. } break;
  2070.  
  2071. case YYr113: {    /* term :  K_PI */
  2072. #line 370 "gram.y"
  2073.  yyval.enode = new_const(O_CONST, (double)3.14159265358979323846); 
  2074. } break;
  2075.  
  2076. case YYr114: {    /* term :  '@' K_PI */
  2077. #line 371 "gram.y"
  2078.  yyval.enode = new_const(O_CONST, (double)3.14159265358979323846); 
  2079. } break;
  2080.  
  2081. case YYr115: {    /* term :  STRING */
  2082. #line 372 "gram.y"
  2083.  yyval.enode = new_str(yypvt[0].sval); 
  2084. } break;
  2085.  
  2086. case YYr116: {    /* term :  '~' term */
  2087. #line 373 "gram.y"
  2088.  yyval.enode = new ('~', ENULL, yypvt[0].enode); 
  2089. } break;
  2090.  
  2091. case YYr117: {    /* term :  '!' term */
  2092. #line 374 "gram.y"
  2093.  yyval.enode = new ('~', ENULL, yypvt[0].enode); 
  2094. } break;
  2095.  
  2096. case YYr118: {    /* term :  '@' K_MYROW */
  2097. #line 375 "gram.y"
  2098.  yyval.enode = new(MYROW, ENULL, ENULL);
  2099. } break;
  2100.  
  2101. case YYr119: {    /* term :  '@' K_MYCOL */
  2102. #line 376 "gram.y"
  2103.  yyval.enode = new(MYCOL, ENULL, ENULL);
  2104. } break;
  2105.  
  2106. case YYr120: {    /* term :  '@' K_COLTOA '(' e ')' */
  2107. #line 377 "gram.y"
  2108.  yyval.enode = new(COLTOA, ENULL, yypvt[-1].enode);
  2109. } break;
  2110.  
  2111. case YYr121: {    /* term :  '@' K_NUMITER */
  2112. #line 378 "gram.y"
  2113.  yyval.enode = new(NUMITER, ENULL, ENULL);
  2114. } break;
  2115.  
  2116. case YYr122: {    /* e :  e '+' e */
  2117. #line 382 "gram.y"
  2118.  yyval.enode = new ('+', yypvt[-2].enode, yypvt[0].enode); 
  2119. } break;
  2120.  
  2121. case YYr123: {    /* e :  e '-' e */
  2122. #line 383 "gram.y"
  2123.  yyval.enode = new ('-', yypvt[-2].enode, yypvt[0].enode); 
  2124. } break;
  2125.  
  2126. case YYr124: {    /* e :  e '*' e */
  2127. #line 384 "gram.y"
  2128.  yyval.enode = new ('*', yypvt[-2].enode, yypvt[0].enode); 
  2129. } break;
  2130.  
  2131. case YYr125: {    /* e :  e '/' e */
  2132. #line 385 "gram.y"
  2133.  yyval.enode = new ('/', yypvt[-2].enode, yypvt[0].enode); 
  2134. } break;
  2135.  
  2136. case YYr126: {    /* e :  e '%' e */
  2137. #line 386 "gram.y"
  2138.  yyval.enode = new ('%', yypvt[-2].enode, yypvt[0].enode); 
  2139. } break;
  2140.  
  2141. case YYr127: {    /* e :  e '^' e */
  2142. #line 387 "gram.y"
  2143.  yyval.enode = new ('^', yypvt[-2].enode, yypvt[0].enode); 
  2144. } break;
  2145.  
  2146. case YYr129: {    /* e :  e '?' e ':' e */
  2147. #line 389 "gram.y"
  2148.  yyval.enode = new ('?', yypvt[-4].enode, new(':', yypvt[-2].enode, yypvt[0].enode)); 
  2149. } break;
  2150.  
  2151. case YYr130: {    /* e :  e '<' e */
  2152. #line 390 "gram.y"
  2153.  yyval.enode = new ('<', yypvt[-2].enode, yypvt[0].enode); 
  2154. } break;
  2155.  
  2156. case YYr131: {    /* e :  e '=' e */
  2157. #line 391 "gram.y"
  2158.  yyval.enode = new ('=', yypvt[-2].enode, yypvt[0].enode); 
  2159. } break;
  2160.  
  2161. case YYr132: {    /* e :  e '>' e */
  2162. #line 392 "gram.y"
  2163.  yyval.enode = new ('>', yypvt[-2].enode, yypvt[0].enode); 
  2164. } break;
  2165.  
  2166. case YYr133: {    /* e :  e '&' e */
  2167. #line 393 "gram.y"
  2168.  yyval.enode = new ('&', yypvt[-2].enode, yypvt[0].enode); 
  2169. } break;
  2170.  
  2171. case YYr134: {    /* e :  e '|' e */
  2172. #line 394 "gram.y"
  2173.  yyval.enode = new ('|', yypvt[-2].enode, yypvt[0].enode); 
  2174. } break;
  2175.  
  2176. case YYr135: {    /* e :  e '<' '=' e */
  2177. #line 395 "gram.y"
  2178.  yyval.enode = new ('~', ENULL, new ('>', yypvt[-3].enode, yypvt[0].enode)); 
  2179. } break;
  2180.  
  2181. case YYr136: {    /* e :  e '!' '=' e */
  2182. #line 396 "gram.y"
  2183.  yyval.enode = new ('~', ENULL, new ('=', yypvt[-3].enode, yypvt[0].enode)); 
  2184. } break;
  2185.  
  2186. case YYr137: {    /* e :  e '<' '>' e */
  2187. #line 397 "gram.y"
  2188.  yyval.enode = new ('~', ENULL, new ('=', yypvt[-3].enode, yypvt[0].enode)); 
  2189. } break;
  2190.  
  2191. case YYr138: {    /* e :  e '>' '=' e */
  2192. #line 398 "gram.y"
  2193.  yyval.enode = new ('~', ENULL, new ('<', yypvt[-3].enode, yypvt[0].enode)); 
  2194. } break;
  2195.  
  2196. case YYr139: {    /* e :  e '#' e */
  2197. #line 399 "gram.y"
  2198.  yyval.enode = new ('#', yypvt[-2].enode, yypvt[0].enode); 
  2199. } break;
  2200.  
  2201. case YYr140: {    /* expr_list :  e */
  2202. #line 402 "gram.y"
  2203.  yyval.enode = new(ELIST, ENULL, yypvt[0].enode); 
  2204. } break;
  2205.  
  2206. case YYr141: {    /* expr_list :  expr_list ',' e */
  2207. #line 403 "gram.y"
  2208.  yyval.enode = new(ELIST, yypvt[-2].enode, yypvt[0].enode); 
  2209. } break;
  2210.  
  2211. case YYr142: {    /* range :  var ':' var */
  2212. #line 406 "gram.y"
  2213.  yyval.rval.left = yypvt[-2].ent; yyval.rval.right = yypvt[0].ent; 
  2214. } break;
  2215.  
  2216. case YYr143: {    /* range :  RANGE */
  2217. #line 407 "gram.y"
  2218.  yyval.rval = yypvt[0].rval; 
  2219. } break;
  2220.  
  2221. case YYr144: {    /* var :  COL NUMBER */
  2222. #line 410 "gram.y"
  2223.  yyval.ent.vp = lookat(yypvt[0].ival , yypvt[-1].ival); yyval.ent.vf = 0; 
  2224. } break;
  2225.  
  2226. case YYr145: {    /* var :  '$' COL NUMBER */
  2227. #line 411 "gram.y"
  2228.  yyval.ent.vp = lookat(yypvt[0].ival , yypvt[-1].ival);
  2229.                     yyval.ent.vf = FIX_COL; 
  2230. } break;
  2231.  
  2232. case YYr146: {    /* var :  COL '$' NUMBER */
  2233. #line 413 "gram.y"
  2234.  yyval.ent.vp = lookat(yypvt[0].ival , yypvt[-2].ival);
  2235.                     yyval.ent.vf = FIX_ROW; 
  2236. } break;
  2237.  
  2238. case YYr147: {    /* var :  '$' COL '$' NUMBER */
  2239. #line 415 "gram.y"
  2240.  yyval.ent.vp = lookat(yypvt[0].ival , yypvt[-2].ival);
  2241.                     yyval.ent.vf = FIX_ROW | FIX_COL; 
  2242. } break;
  2243.  
  2244. case YYr148: {    /* var :  VAR */
  2245. #line 417 "gram.y"
  2246.  yyval.ent = yypvt[0].rval.left; 
  2247. } break;
  2248.  
  2249. case YYr149: {    /* var_or_range :  range */
  2250. #line 420 "gram.y"
  2251.  yyval.rval = yypvt[0].rval; 
  2252. } break;
  2253.  
  2254. case YYr150: {    /* var_or_range :  var */
  2255. #line 421 "gram.y"
  2256.  yyval.rval.left = yypvt[0].ent; yyval.rval.right = yypvt[0].ent; 
  2257. } break;
  2258.  
  2259. case YYr151: {    /* num :  NUMBER */
  2260. #line 424 "gram.y"
  2261.  yyval.fval = (double) yypvt[0].ival; 
  2262. } break;
  2263.  
  2264. case YYr152: {    /* num :  FNUMBER */
  2265. #line 425 "gram.y"
  2266.  yyval.fval = yypvt[0].fval; 
  2267. } break;
  2268.  
  2269. case YYr153: {    /* num :  '-' num */
  2270. #line 426 "gram.y"
  2271.  yyval.fval = -yypvt[0].fval; 
  2272. } break;
  2273.  
  2274. case YYr154: {    /* num :  '+' num */
  2275. #line 427 "gram.y"
  2276.  yyval.fval = yypvt[0].fval; 
  2277. } break;
  2278.  
  2279. case YYr155: {    /* strarg :  STRING */
  2280. #line 430 "gram.y"
  2281.  yyval.sval = yypvt[0].sval; 
  2282. } break;
  2283.  
  2284. case YYr156: {    /* strarg :  var */
  2285. #line 431 "gram.y"
  2286.  
  2287.                     char *s, *s1;
  2288.                     s1 = yypvt[0].ent.vp->label;
  2289.                     if (!s1)
  2290.                     s1 = "NULL_STRING";
  2291.                     s = scxmalloc((unsigned)strlen(s1)+1);
  2292.                     (void) strcpy(s, s1);
  2293.                     yyval.sval = s;
  2294.                 
  2295. } break;
  2296.  
  2297. case YYr159: {    /* setitem :  K_AUTO */
  2298. #line 448 "gram.y"
  2299.  setauto(1); 
  2300. } break;
  2301.  
  2302. case YYr160: {    /* setitem :  K_AUTOCALC */
  2303. #line 449 "gram.y"
  2304.  setauto(1); 
  2305. } break;
  2306.  
  2307. case YYr161: {    /* setitem :  '~' K_AUTO */
  2308. #line 450 "gram.y"
  2309.  setauto(0); 
  2310. } break;
  2311.  
  2312. case YYr162: {    /* setitem :  '~' K_AUTOCALC */
  2313. #line 451 "gram.y"
  2314.  setauto(0); 
  2315. } break;
  2316.  
  2317. case YYr163: {    /* setitem :  '!' K_AUTO */
  2318. #line 452 "gram.y"
  2319.  setauto(0); 
  2320. } break;
  2321.  
  2322. case YYr164: {    /* setitem :  '!' K_AUTOCALC */
  2323. #line 453 "gram.y"
  2324.  setauto(0); 
  2325. } break;
  2326.  
  2327. case YYr165: {    /* setitem :  K_BYCOLS */
  2328. #line 454 "gram.y"
  2329.  setorder(BYCOLS); 
  2330. } break;
  2331.  
  2332. case YYr166: {    /* setitem :  K_BYROWS */
  2333. #line 455 "gram.y"
  2334.  setorder(BYROWS); 
  2335. } break;
  2336.  
  2337. case YYr167: {    /* setitem :  K_NUMERIC */
  2338. #line 456 "gram.y"
  2339.  numeric = 1; 
  2340. } break;
  2341.  
  2342. case YYr168: {    /* setitem :  '!' K_NUMERIC */
  2343. #line 457 "gram.y"
  2344.  numeric = 0; 
  2345. } break;
  2346.  
  2347. case YYr169: {    /* setitem :  K_PRESCALE */
  2348. #line 458 "gram.y"
  2349.  prescale = 0.01; 
  2350. } break;
  2351.  
  2352. case YYr170: {    /* setitem :  '!' K_PRESCALE */
  2353. #line 459 "gram.y"
  2354.  prescale = 1.0; 
  2355. } break;
  2356.  
  2357. case YYr171: {    /* setitem :  K_EXTFUN */
  2358. #line 460 "gram.y"
  2359.  extfunc = 1; 
  2360. } break;
  2361.  
  2362. case YYr172: {    /* setitem :  '!' K_EXTFUN */
  2363. #line 461 "gram.y"
  2364.  extfunc = 0; 
  2365. } break;
  2366.  
  2367. case YYr173: {    /* setitem :  K_CELLCUR */
  2368. #line 462 "gram.y"
  2369.  showcell = 1; 
  2370. } break;
  2371.  
  2372. case YYr174: {    /* setitem :  '!' K_CELLCUR */
  2373. #line 463 "gram.y"
  2374.  showcell = 0; 
  2375. } break;
  2376.  
  2377. case YYr175: {    /* setitem :  K_TOPROW */
  2378. #line 464 "gram.y"
  2379.  showtop = 1; 
  2380. } break;
  2381.  
  2382. case YYr176: {    /* setitem :  '!' K_TOPROW */
  2383. #line 465 "gram.y"
  2384.  showtop = 0; 
  2385. } break;
  2386.  
  2387. case YYr177: {    /* setitem :  K_ITERATIONS '=' NUMBER */
  2388. #line 466 "gram.y"
  2389.  setiterations(yypvt[0].ival); 
  2390. } break;
  2391.  
  2392. case YYr178: {    /* setitem :  K_TBLSTYLE '=' NUMBER */
  2393. #line 467 "gram.y"
  2394.  tbl_style = yypvt[0].ival; 
  2395. } break;
  2396.  
  2397. case YYr179: {    /* setitem :  K_TBLSTYLE '=' K_TBL */
  2398. #line 468 "gram.y"
  2399.  tbl_style = TBL; 
  2400. } break;
  2401.  
  2402. case YYr180: {    /* setitem :  K_TBLSTYLE '=' K_LATEX */
  2403. #line 469 "gram.y"
  2404.  tbl_style = LATEX; 
  2405. } break;
  2406.  
  2407. case YYr181: {    /* setitem :  K_TBLSTYLE '=' K_SLATEX */
  2408. #line 470 "gram.y"
  2409.  tbl_style = SLATEX; 
  2410. } break;
  2411.  
  2412. case YYr182: {    /* setitem :  K_TBLSTYLE '=' K_TEX */
  2413. #line 471 "gram.y"
  2414.  tbl_style = TEX; 
  2415. } break;
  2416.  
  2417. case YYr183: {    /* setitem :  K_TBLSTYLE '=' K_FRAME */
  2418. #line 472 "gram.y"
  2419.  tbl_style = FRAME; 
  2420. } break;
  2421.  
  2422. case YYr184: {    /* setitem :  K_RNDINFINITY */
  2423. #line 473 "gram.y"
  2424.  rndinfinity = 1; FullUpdate++; 
  2425. } break;
  2426.  
  2427. case YYr185: {    /* setitem :  '!' K_RNDINFINITY */
  2428. #line 474 "gram.y"
  2429.  rndinfinity = 0; FullUpdate++; 
  2430. } break;
  2431.  
  2432. case YYr186: {    /* setitem :  K_CRACTION '=' NUMBER */
  2433. #line 475 "gram.y"
  2434.  craction = yypvt[0].ival; 
  2435. } break;
  2436.  
  2437. case YYr187: {    /* setitem :  K_ROWLIMIT '=' NUMBER */
  2438. #line 476 "gram.y"
  2439.  rowlimit = yypvt[0].ival; 
  2440. } break;
  2441.  
  2442. case YYr188: {    /* setitem :  K_COLLIMIT '=' NUMBER */
  2443. #line 477 "gram.y"
  2444.  collimit = yypvt[0].ival; 
  2445. } break;
  2446.  
  2447. case YYr189: {    /* errlist :  K_ERROR */
  2448. #line 481 "gram.y"
  2449.  num_search((double)0, CELLERROR); 
  2450. } break;
  2451.  
  2452. case YYr190: {    /* errlist :  K_INVALID */
  2453. #line 482 "gram.y"
  2454.  num_search((double)0, CELLINVALID); 
  2455. } break;
  2456. #line 237 "C:/MKS/OS2/etc/yyparse.c"
  2457.     case YYrACCEPT:
  2458.         YYACCEPT;
  2459.     case YYrERROR:
  2460.         goto yyError;
  2461. #ifdef YYLR2
  2462.     case YYrLR2:
  2463. #ifndef YYSYNC
  2464.         YYREAD;
  2465. #endif
  2466.         yyj = 0;
  2467.         while(yylr2[yyj] >= 0) {
  2468.             if(yylr2[yyj] == yystate && yylr2[yyj+1] == yychar
  2469.             && yylook(yys+1,yyps,yystate,yychar,yy2lex(),
  2470.                 yylr2[yyj+2]))
  2471.                     break;
  2472.             yyj += 3;
  2473.         }
  2474.         if(yylr2[yyj] < 0)
  2475.             goto yyError;
  2476.         if(yylr2[yyj+2] < 0) {
  2477.             yystate = ~ yylr2[yyj+2];
  2478.             goto yyStack;
  2479.         }
  2480.         yyi = yylr2[yyj+2];
  2481.         goto yyReduce;
  2482. #endif
  2483.     }
  2484.  
  2485.     /*
  2486.      *    Look up next state in goto table.
  2487.      */
  2488.  
  2489.     yyp = &yygo[yypgo[yyi]];
  2490.     yyq = yyp++;
  2491.     yyi = *yyps;
  2492.     while (yyi < *yyp++)
  2493.         ;
  2494.  
  2495.     yystate = ~(yyi == *--yyp? YYQYYP: *yyq);
  2496.     goto yyStack;
  2497.  
  2498. yyerrlabel:    ;        /* come here from YYERROR    */
  2499. /*
  2500. #pragma used yyerrlabel
  2501.  */
  2502.     yyerrflag = 1;
  2503.     if (yyi == YYrERROR)
  2504.         yyps--, yypv--;
  2505.     
  2506. yyError:
  2507.     switch (yyerrflag) {
  2508.  
  2509.     case 0:        /* new error */
  2510.         yynerrs++;
  2511.         yyi = yychar;
  2512.         yyerror("Syntax error");
  2513.         if (yyi != yychar) {
  2514.             /* user has changed the current token */
  2515.             /* try again */
  2516.             yyerrflag++;    /* avoid loops */
  2517.             goto yyEncore;
  2518.         }
  2519.  
  2520.     case 1:        /* partially recovered */
  2521.     case 2:
  2522.         yyerrflag = 3;    /* need 3 valid shifts to recover */
  2523.             
  2524.         /*
  2525.          *    Pop states, looking for a
  2526.          *    shift on `error'.
  2527.          */
  2528.  
  2529.         for ( ; yyps > yys; yyps--, yypv--) {
  2530.             if (*yyps >= sizeof yypact/sizeof yypact[0])
  2531.                 continue;
  2532.             yyp = &yyact[yypact[*yyps]];
  2533.             yyq = yyp;
  2534.             do
  2535.                 ;
  2536.             while (YYERRCODE < *yyp++);
  2537.             if (YYERRCODE == yyp[-1]) {
  2538.                 yystate = ~YYQYYP;
  2539.                 goto yyStack;
  2540.             }
  2541.                 
  2542.             /* no shift in this state */
  2543. #if YYDEBUG
  2544.             if (yydebug && yyps > yys+1)
  2545.                 printf(
  2546.     gettext("Error recovery pops state %d (%d), uncovers %d (%d)\n"),
  2547.                     yysmap[yyps[0]], yyps[0],
  2548.                     yysmap[yyps[-1]], yyps[-1]);
  2549. #endif
  2550.             /* pop stacks; try again */
  2551.         }
  2552.         /* no shift on error - abort */
  2553.         break;
  2554.  
  2555.     case 3:
  2556.         /*
  2557.          *    Erroneous token after
  2558.          *    an error - discard it.
  2559.          */
  2560.  
  2561.         if (yychar == 0)  /* but not EOF */
  2562.             break;
  2563. #if YYDEBUG
  2564.         if (yydebug)
  2565.             printf(gettext("Error recovery discards %s (%d), "),
  2566.                 yyptok(yychar), yychar);
  2567. #endif
  2568.         yyclearin;
  2569.         goto yyEncore;    /* try again in same state */
  2570.     }
  2571.     YYABORT;
  2572.  
  2573. #ifdef YYALLOC
  2574. yyReturn:
  2575.     yylval = save_yylval;
  2576.     yyval = save_yyval;
  2577.     yypvt = save_yypvt;
  2578.     yychar = save_yychar;
  2579.     yyerrflag = save_yyerrflag;
  2580.     yynerrs = save_yynerrs;
  2581.     free((char *)yys);
  2582.     free((char *)yyv);
  2583.     return(retval);
  2584. #endif
  2585. }
  2586.  
  2587. #ifdef YYLR2
  2588. yylook(s,rsp,state,c1,c2,i)
  2589. short *s;        /* stack        */
  2590. short *rsp;        /* real top of stack    */
  2591. int state;        /* current state    */
  2592. int c1;            /* current char        */
  2593. int c2;            /* next char        */
  2594. int i;            /* action S < 0, R >= 0    */
  2595. {
  2596.     int j;
  2597.     short *p,*q;
  2598.     short *sb,*st;
  2599. #if YYDEBUG
  2600.     if(yydebug) {
  2601.     printf(gettext("LR2 state %d (%d) char %s (%d) lookahead %s (%d)"),
  2602.             yysmap[state],state,yyptok(c1),c1,yyptok(c2),c2);
  2603.         if(i > 0)
  2604.             printf(gettext("reduce %d (%d)\n"), yyrmap[i], i);
  2605.         else
  2606.             printf(gettext("shift %d (%d)\n"), yysmap[i], i);
  2607.     }
  2608. #endif
  2609.     st = sb = rsp+1;
  2610.     if(i >= 0)
  2611.         goto reduce;
  2612.   shift:
  2613.     state = ~i;
  2614.     c1 = c2;
  2615.     if(c1 < 0)
  2616.         return 1;
  2617.     c2 = -1;
  2618.  
  2619.   stack:
  2620.       if(++st >= &s[YYSSIZE]) {
  2621.         yyerror("Parser Stack Overflow");
  2622.         return 0;
  2623.     }
  2624.     *st = state;
  2625.     if(state >= sizeof yypact/sizeof yypact[0])
  2626.         i = state- YYDELTA;
  2627.     else {
  2628.         p = &yyact[yypact[state]];
  2629.         q = p;
  2630.         i = c1;
  2631.         while(i < *p++)
  2632.             ;
  2633.         if(i == p[-1]) {
  2634.             state = ~q[q-p];
  2635.             c1 = c2;
  2636.             if(c1 < 0)
  2637.                 return 1;
  2638.             c2 = -1;
  2639.             goto stack;
  2640.         }
  2641.         if(state >= sizeof yydef/sizeof yydef[0])
  2642.             return 0;
  2643.         if((i = yydef[state]) < 0) {
  2644.             p = &yyex[~i];
  2645.             while((i = *p) >= 0 && i != c1)
  2646.                 p += 2;
  2647.             i = p[1];
  2648.         }
  2649.     }
  2650.   reduce:
  2651.       j = yyrlen[i];
  2652.     if(st-sb >= j)
  2653.         st -= j;
  2654.     else {
  2655.         rsp -= j+st-sb;
  2656.         st = sb;
  2657.     }
  2658.     switch(i) {
  2659.     case YYrERROR:
  2660.         return 0;
  2661.     case YYrACCEPT:
  2662.         return 1;
  2663.     case YYrLR2:
  2664.         j = 0;
  2665.         while(yylr2[j] >= 0) {
  2666.             if(yylr2[j] == state && yylr2[j+1] == c1)
  2667.                 if((i = yylr2[j+2]) < 0)
  2668.                     goto shift;
  2669.                 else
  2670.                     goto reduce;
  2671.         }
  2672.         return 0;
  2673.     }
  2674.     p = &yygo[yypgo[i]];
  2675.     q = p++;
  2676.     i = st==sb ? *rsp : *st;
  2677.     while(i < *p++);
  2678.     state = ~(i == *--p? q[q-p]: *q);
  2679.     goto stack;
  2680. }
  2681. #endif
  2682.         
  2683. #if YYDEBUG
  2684.     
  2685. /*
  2686.  * Print a token legibly.
  2687.  * This won't work if you define your own token numbers.
  2688.  */
  2689. char *
  2690. yyptok(i)
  2691. {
  2692.     static char    buf[10];
  2693.  
  2694.     if (i >= YYERRCODE)
  2695.         return yystoken[i-YYERRCODE];
  2696.     if (i < 0)
  2697.         return "";
  2698.     if (i == 0)
  2699.         return "$end";
  2700.     if (i < ' ')
  2701.         sprintf(buf, "'^%c'", i+'@');
  2702.     else
  2703.         sprintf(buf, "'%c'", i);
  2704.     return buf;
  2705. }
  2706. #endif
  2707.