[project @ 1996-01-18 16:33:17 by partain]
[ghc-hetmet.git] / ghc / compiler / yaccParser / hsparser.tab.c
1
2 /*  A Bison parser, made from yaccParser/hsparser.y with Bison version GNU Bison version 1.24
3   */
4
5 #define YYBISON 1  /* Identify Bison output.  */
6
7 #define VARID   258
8 #define CONID   259
9 #define VARSYM  260
10 #define CONSYM  261
11 #define MINUS   262
12 #define INTEGER 263
13 #define FLOAT   264
14 #define CHAR    265
15 #define STRING  266
16 #define CHARPRIM        267
17 #define STRINGPRIM      268
18 #define INTPRIM 269
19 #define FLOATPRIM       270
20 #define DOUBLEPRIM      271
21 #define CLITLIT 272
22 #define OCURLY  273
23 #define CCURLY  274
24 #define VCCURLY 275
25 #define SEMI    276
26 #define OBRACK  277
27 #define CBRACK  278
28 #define OPAREN  279
29 #define CPAREN  280
30 #define COMMA   281
31 #define BQUOTE  282
32 #define RARROW  283
33 #define VBAR    284
34 #define EQUAL   285
35 #define DARROW  286
36 #define DOTDOT  287
37 #define DCOLON  288
38 #define LARROW  289
39 #define WILDCARD        290
40 #define AT      291
41 #define LAZY    292
42 #define LAMBDA  293
43 #define LET     294
44 #define IN      295
45 #define WHERE   296
46 #define CASE    297
47 #define OF      298
48 #define TYPE    299
49 #define DATA    300
50 #define CLASS   301
51 #define INSTANCE        302
52 #define DEFAULT 303
53 #define INFIX   304
54 #define INFIXL  305
55 #define INFIXR  306
56 #define MODULE  307
57 #define IMPORT  308
58 #define INTERFACE       309
59 #define HIDING  310
60 #define CCALL   311
61 #define CCALL_GC        312
62 #define CASM    313
63 #define CASM_GC 314
64 #define SCC     315
65 #define IF      316
66 #define THEN    317
67 #define ELSE    318
68 #define RENAMING        319
69 #define DERIVING        320
70 #define TO      321
71 #define LEOF    322
72 #define GHC_PRAGMA      323
73 #define END_PRAGMA      324
74 #define NO_PRAGMA       325
75 #define NOINFO_PRAGMA   326
76 #define ABSTRACT_PRAGMA 327
77 #define SPECIALISE_PRAGMA       328
78 #define MODNAME_PRAGMA  329
79 #define ARITY_PRAGMA    330
80 #define UPDATE_PRAGMA   331
81 #define STRICTNESS_PRAGMA       332
82 #define KIND_PRAGMA     333
83 #define UNFOLDING_PRAGMA        334
84 #define MAGIC_UNFOLDING_PRAGMA  335
85 #define DEFOREST_PRAGMA 336
86 #define SPECIALISE_UPRAGMA      337
87 #define INLINE_UPRAGMA  338
88 #define MAGIC_UNFOLDING_UPRAGMA 339
89 #define ABSTRACT_UPRAGMA        340
90 #define DEFOREST_UPRAGMA        341
91 #define END_UPRAGMA     342
92 #define TYLAMBDA        343
93 #define COCON   344
94 #define COPRIM  345
95 #define COAPP   346
96 #define COTYAPP 347
97 #define FORALL  348
98 #define TYVAR_TEMPLATE_ID       349
99 #define CO_ALG_ALTS     350
100 #define CO_PRIM_ALTS    351
101 #define CO_NO_DEFAULT   352
102 #define CO_LETREC       353
103 #define CO_SDSEL_ID     354
104 #define CO_METH_ID      355
105 #define CO_DEFM_ID      356
106 #define CO_DFUN_ID      357
107 #define CO_CONSTM_ID    358
108 #define CO_SPEC_ID      359
109 #define CO_WRKR_ID      360
110 #define CO_ORIG_NM      361
111 #define UNFOLD_ALWAYS   362
112 #define UNFOLD_IF_ARGS  363
113 #define NOREP_INTEGER   364
114 #define NOREP_RATIONAL  365
115 #define NOREP_STRING    366
116 #define CO_PRELUDE_DICTS_CC     367
117 #define CO_ALL_DICTS_CC 368
118 #define CO_USER_CC      369
119 #define CO_AUTO_CC      370
120 #define CO_DICT_CC      371
121 #define CO_CAF_CC       372
122 #define CO_DUPD_CC      373
123 #define PLUS    374
124
125 #line 22 "yaccParser/hsparser.y"
126
127 #ifdef HSP_DEBUG
128 # define YYDEBUG 1
129 #endif
130
131 #include <stdio.h>
132 #include <ctype.h>
133 #include <string.h>
134 #include "hspincl.h"
135 #include "constants.h"
136 #include "utils.h"
137
138 /**********************************************************************
139 *                                                                     *
140 *                                                                     *
141 *     Imported Variables and Functions                                *
142 *                                                                     *
143 *                                                                     *
144 **********************************************************************/
145
146 static BOOLEAN expect_ccurly = FALSE; /* Used to signal that a CCURLY could be inserted here */
147
148 extern BOOLEAN nonstandardFlag;
149 extern BOOLEAN etags;
150
151 extern VOID find_module_on_imports_dirlist PROTO((char *, BOOLEAN, char *));
152
153 extern char *input_filename;
154 static char *the_module_name;
155 static char iface_name[MODNAME_SIZE];
156 static char interface_filename[FILENAME_SIZE];
157
158 static list module_exports;             /* Exported entities */
159 static list prelude_core_import, prelude_imports;
160                                         /* Entities imported from the Prelude */
161
162 extern list all;                        /* All valid deriving classes */
163
164 extern tree niltree;
165 extern list Lnil;
166
167 extern tree root;
168
169 /* For FN, PREVPATT and SAMEFN macros */
170 extern tree fns[];
171 extern short samefn[];
172 extern tree prevpatt[];
173 extern short icontexts;
174
175 /* Line Numbers */
176 extern int hsplineno, hspcolno;
177 extern int startlineno;
178
179
180 /**********************************************************************
181 *                                                                     *
182 *                                                                     *
183 *      Fixity and Precedence Declarations                             *
184 *                                                                     *
185 *                                                                     *
186 **********************************************************************/
187
188 /* OLD 95/08: list fixlist; */
189 static int Fixity = 0, Precedence = 0;
190 struct infix;
191
192 char *ineg PROTO((char *));
193
194 static BOOLEAN hidden = FALSE;          /*  Set when HIDING used        */
195
196 extern BOOLEAN inpat;                   /*  True when parsing a pattern */
197 extern BOOLEAN implicitPrelude;         /*  True when we should read the Prelude if not given */
198 extern BOOLEAN haskell1_3Flag;          /*  True if we are attempting (proto)Haskell 1.3 */
199
200 extern int thisIfacePragmaVersion;
201
202 #line 99 "yaccParser/hsparser.y"
203 typedef union {
204         tree utree;
205         list ulist;
206         ttype uttype;
207         atype uatype;
208         binding ubinding;
209         pbinding upbinding;
210         finfot ufinfo;
211         entidt uentid;
212         id uid;
213         literal uliteral;
214         int uint;
215         float ufloat;
216         char *ustring;
217         hstring uhstring;
218         hpragma uhpragma;
219         coresyn ucoresyn;
220 } YYSTYPE;
221
222 #ifndef YYLTYPE
223 typedef
224   struct yyltype
225     {
226       int timestamp;
227       int first_line;
228       int first_column;
229       int last_line;
230       int last_column;
231       char *text;
232    }
233   yyltype;
234
235 #define YYLTYPE yyltype
236 #endif
237
238 #include <stdio.h>
239
240 #ifndef __cplusplus
241 #ifndef __STDC__
242 #define const
243 #endif
244 #endif
245
246
247
248 #define YYFINAL         1105
249 #define YYFLAG          -32768
250 #define YYNTBASE        120
251
252 #define YYTRANSLATE(x) ((unsigned)(x) <= 374 ? yytranslate[x] : 343)
253
254 static const char yytranslate[] = {     0,
255      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
256      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
257      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
258      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
259      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
260      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
261      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
262      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
263      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
264      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
265      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
266      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
267      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
268      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
269      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
270      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
271      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
272      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
273      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
274      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
275      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
276      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
277      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
278      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
279      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
280      2,     2,     2,     2,     2,     1,     2,     3,     4,     5,
281      6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
282     16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
283     26,    27,    28,    29,    30,    31,    32,    33,    34,    35,
284     36,    37,    38,    39,    40,    41,    42,    43,    44,    45,
285     46,    47,    48,    49,    50,    51,    52,    53,    54,    55,
286     56,    57,    58,    59,    60,    61,    62,    63,    64,    65,
287     66,    67,    68,    69,    70,    71,    72,    73,    74,    75,
288     76,    77,    78,    79,    80,    81,    82,    83,    84,    85,
289     86,    87,    88,    89,    90,    91,    92,    93,    94,    95,
290     96,    97,    98,    99,   100,   101,   102,   103,   104,   105,
291    106,   107,   108,   109,   110,   111,   112,   113,   114,   115,
292    116,   117,   118,   119
293 };
294
295 #if YYDEBUG != 0
296 static const short yyprhs[] = {     0,
297      0,     4,     5,    12,    13,    16,    22,    28,    32,    36,
298     40,    44,    45,    49,    51,    55,    57,    59,    64,    69,
299     74,    78,    81,    85,    90,    93,    94,    96,    98,   102,
300    104,   106,   111,   116,   121,   125,   130,   134,   135,   138,
301    139,   141,   145,   149,   153,   154,   158,   159,   164,   165,
302    170,   176,   177,   180,   181,   185,   186,   188,   195,   197,
303    200,   202,   205,   207,   209,   211,   214,   218,   222,   223,
304    225,   228,   232,   234,   240,   242,   246,   248,   251,   253,
305    257,   263,   265,   269,   271,   273,   275,   279,   285,   289,
306    294,   299,   304,   311,   316,   320,   326,   333,   342,   349,
307    355,   357,   359,   363,   367,   368,   371,   377,   378,   381,
308    386,   388,   392,   394,   398,   402,   405,   410,   417,   424,
309    431,   433,   435,   437,   439,   443,   447,   451,   457,   464,
310    470,   473,   477,   481,   483,   485,   494,   503,   512,   521,
311    523,   524,   527,   533,   536,   540,   542,   546,   548,   550,
312    552,   555,   557,   561,   564,   568,   570,   574,   576,   578,
313    582,   584,   586,   587,   590,   591,   594,   595,   598,   600,
314    604,   605,   610,   613,   618,   621,   625,   627,   631,   635,
315    639,   640,   643,   645,   649,   655,   663,   664,   670,   676,
316    680,   686,   690,   691,   694,   696,   700,   701,   706,   707,
317    712,   713,   718,   719,   723,   724,   728,   729,   733,   735,
318    739,   741,   745,   747,   749,   751,   753,   755,   757,   762,
319    769,   774,   783,   790,   796,   800,   801,   806,   811,   818,
320    823,   824,   829,   834,   836,   841,   847,   850,   854,   860,
321    862,   867,   873,   876,   880,   886,   889,   895,   897,   899,
322    903,   910,   915,   921,   927,   933,   938,   943,   947,   951,
323    953,   954,   955,   957,   959,   963,   965,   969,   971,   975,
324    977,   979,   981,   983,   985,   986,   993,   998,  1004,  1010,
325   1014,  1022,  1028,  1037,  1044,  1051,  1056,  1063,  1068,  1071,
326   1073,  1077,  1079,  1083,  1088,  1090,  1093,  1096,  1098,  1100,
327   1104,  1107,  1109,  1115,  1117,  1119,  1122,  1126,  1130,  1137,
328   1139,  1141,  1144,  1146,  1150,  1153,  1158,  1160,  1164,  1168,
329   1172,  1175,  1177,  1179,  1183,  1187,  1189,  1191,  1195,  1196,
330   1198,  1202,  1208,  1213,  1218,  1220,  1224,  1226,  1228,  1232,
331   1234,  1238,  1239,  1243,  1246,  1248,  1251,  1255,  1260,  1265,
332   1270,  1271,  1274,  1277,  1279,  1285,  1289,  1291,  1293,  1297,
333   1300,  1302,  1303,  1304,  1311,  1318,  1325,  1332,  1339,  1346,
334   1350,  1353,  1357,  1360,  1364,  1367,  1371,  1374,  1378,  1380,
335   1383,  1385,  1388,  1390,  1392,  1394,  1396,  1400,  1405,  1410,
336   1412,  1414,  1416,  1418,  1422,  1424,  1427,  1429,  1433,  1435,
337   1439,  1442,  1444,  1447,  1449,  1452,  1454,  1457,  1459,  1461,
338   1463,  1467,  1469,  1471,  1474,  1480,  1484,  1490,  1494,  1497,
339   1500,  1502,  1504,  1508,  1510,  1512,  1515,  1521,  1525,  1531,
340   1535,  1538,  1541,  1547,  1550,  1552,  1556,  1559,  1563,  1565,
341   1569,  1577,  1583,  1589,  1591,  1595,  1596,  1597,  1602,  1605,
342   1606,  1608,  1612,  1613,  1617,  1618,  1621,  1625,  1630,  1634,
343   1635,  1637,  1641,  1643,  1645,  1649,  1651,  1653,  1656,  1659,
344   1661,  1664,  1666,  1668,  1670,  1674,  1676,  1678,  1681,  1687,
345   1691,  1697,  1701,  1704,  1707,  1709,  1711,  1713,  1715,  1717,
346   1719,  1721,  1723,  1725,  1727,  1731,  1734,  1738,  1741,  1743,
347   1745,  1747,  1749,  1751,  1753,  1755,  1757,  1759,  1761,  1763,
348   1765,  1767,  1769,  1771,  1773,  1777,  1779,  1781,  1785,  1787,
349   1791,  1793,  1795,  1797,  1799,  1801,  1803,  1807,  1809,  1813,
350   1815,  1819,  1821,  1825,  1827,  1829,  1831,  1835,  1837,  1840,
351   1842,  1844,  1846,  1848,  1851,  1853,  1854,  1856,  1857,  1860,
352   1862
353 };
354
355 static const short yyrhs[] = {   184,
356    186,   121,     0,     0,   313,   335,   125,   122,    41,   124,
357      0,     0,   123,   124,     0,   336,   188,   203,   213,   339,
358      0,   337,   188,   203,   213,   340,     0,   337,   189,   340,
359      0,   336,   189,   339,     0,   337,   188,   340,     0,   336,
360    188,   339,     0,     0,    24,   126,    25,     0,   127,     0,
361    126,    26,   127,     0,   325,     0,   334,     0,   334,    24,
362     32,    25,     0,   334,    24,   256,    25,     0,   334,    24,
363    254,    25,     0,   334,    24,    25,     0,   334,    32,     0,
364     24,   130,    25,     0,    55,    24,   130,    25,     0,    24,
365     25,     0,     0,   128,     0,   131,     0,   130,    26,   131,
366      0,   325,     0,   334,     0,   334,    24,    32,    25,     0,
367    334,    24,   256,    25,     0,   334,    24,   254,    25,     0,
368    334,    24,    25,     0,    68,   246,   133,    69,     0,    68,
369    133,    69,     0,     0,    73,   134,     0,     0,   135,     0,
370    134,    26,   135,     0,    22,   154,    23,     0,    68,    72,
371     69,     0,     0,    68,   150,    69,     0,     0,    68,   142,
372    142,    69,     0,     0,    68,   140,   142,    69,     0,    68,
373    140,   142,   156,    69,     0,     0,    74,   335,     0,     0,
374     68,   142,    69,     0,     0,    71,     0,   143,   144,   145,
375    146,   148,   151,     0,    70,     0,    75,     8,     0,    70,
376      0,    76,     8,     0,    70,     0,    81,     0,    70,     0,
377     77,    89,     0,    77,    11,   147,     0,    18,   142,    19,
378      0,     0,    70,     0,    80,   326,     0,    79,   149,   158,
379      0,   107,     0,   108,     8,     8,     4,     8,     0,   142,
380      0,   150,    26,   142,     0,    70,     0,    73,   152,     0,
381    153,     0,   152,    26,   153,     0,    22,   154,    23,     8,
382    147,     0,   155,     0,   154,    26,   155,     0,    70,     0,
383    239,     0,   157,     0,   156,    26,   157,     0,   325,    30,
384     18,   142,    19,     0,   325,    30,   142,     0,    38,   172,
385     28,   158,     0,    88,   177,    28,   158,     0,    89,   327,
386    179,   174,     0,    89,   106,   335,   327,   179,   174,     0,
387     90,   171,   179,   174,     0,    91,   158,   174,     0,    92,
388    158,    18,   181,    19,     0,    42,   158,    43,    18,   159,
389     19,     0,    39,    18,   173,    30,   158,    19,    40,   158,
390      0,    98,    18,   165,    19,    40,   158,     0,    60,    18,
391    167,    19,   158,     0,   305,     0,   170,     0,    95,   160,
392    164,     0,    96,   162,   164,     0,     0,   160,   161,     0,
393    170,   172,    28,   158,    21,     0,     0,   162,   163,     0,
394    305,    28,   158,    21,     0,    97,     0,   173,    28,   158,
395      0,   166,     0,   165,    21,   166,     0,   173,    30,   158,
396      0,   112,   169,     0,   113,    11,    11,   169,     0,   114,
397     11,    11,    11,   169,   168,     0,   115,   170,    11,    11,
398    169,   168,     0,   116,   170,    11,    11,   169,   168,     0,
399     70,     0,   117,     0,    70,     0,   118,     0,    99,   334,
400    334,     0,   100,   334,   325,     0,   101,   334,   325,     0,
401    102,   334,    24,   181,    25,     0,   103,   334,   325,    24,
402    181,    25,     0,   104,   170,    22,   182,    23,     0,   105,
403    170,     0,   106,   335,   325,     0,   106,   335,   327,     0,
404    325,     0,   327,     0,    24,    56,   329,    18,   179,   181,
405     19,    25,     0,    24,    57,   329,    18,   179,   181,    19,
406     25,     0,    24,    58,   305,    18,   179,   181,    19,    25,
407      0,    24,    59,   305,    18,   179,   181,    19,    25,     0,
408      3,     0,     0,   172,   173,     0,    24,     3,    33,   181,
409     25,     0,    22,    23,     0,    22,   175,    23,     0,   176,
410      0,   175,    26,   176,     0,   305,     0,   170,     0,     3,
411      0,   177,     3,     0,    94,     0,   178,    26,    94,     0,
412     22,    23,     0,    22,   180,    23,     0,   181,     0,   180,
413     26,   181,     0,   239,     0,   183,     0,   182,    26,   183,
414      0,    70,     0,   181,     0,     0,   185,   193,     0,     0,
415    187,   193,     0,     0,   189,    21,     0,   190,     0,   189,
416     21,   190,     0,     0,    53,   335,   191,   192,     0,   193,
417    129,     0,   193,   129,    64,   194,     0,   200,    67,     0,
418     24,   195,    25,     0,   196,     0,   195,    26,   196,     0,
419    325,    66,   325,     0,   327,    66,   327,     0,     0,   198,
420     21,     0,   199,     0,   198,    21,   199,     0,   306,   335,
421     24,   130,    25,     0,   306,   335,    24,   130,    25,    64,
422    194,     0,     0,    54,   335,   201,    41,   202,     0,   336,
423    197,   203,   230,   339,     0,   336,   198,   339,     0,   337,
424    197,   203,   230,   340,     0,   337,   198,   340,     0,     0,
425    204,    21,     0,   205,     0,   204,    21,   205,     0,     0,
426     50,     8,   206,   212,     0,     0,    51,     8,   207,   212,
427      0,     0,    49,     8,   208,   212,     0,     0,    50,   209,
428    212,     0,     0,    51,   210,   212,     0,     0,    49,   211,
429    212,     0,   318,     0,   212,    26,   318,     0,   214,     0,
430    213,    21,   214,     0,   215,     0,   216,     0,   217,     0,
431    219,     0,   223,     0,   226,     0,   308,   245,    30,   239,
432      0,   307,   250,    31,   245,    30,   246,     0,   307,   245,
433     30,   246,     0,   307,   250,    31,   245,    30,   246,    65,
434    248,     0,   307,   245,    30,   246,    65,   248,     0,   311,
435    250,    31,   237,   218,     0,   311,   237,   218,     0,     0,
436     41,   336,   225,   339,     0,    41,   337,   225,   340,     0,
437    309,   250,    31,   333,   221,   220,     0,   309,   333,   222,
438    220,     0,     0,    41,   336,   252,   339,     0,    41,   337,
439    252,   340,     0,   334,     0,    24,   334,   331,    25,     0,
440     24,   332,    26,   330,    25,     0,    24,    25,     0,    22,
441    332,    23,     0,    24,   332,    28,   332,    25,     0,   334,
442      0,    24,   334,   241,    25,     0,    24,   239,    26,   238,
443     25,     0,    24,    25,     0,    22,   239,    23,     0,    24,
444    240,    28,   239,    25,     0,   310,   224,     0,    24,   239,
445     26,   238,    25,     0,   242,     0,   226,     0,   225,    21,
446    226,     0,   254,    33,   239,    31,   239,   138,     0,   254,
447     33,   239,   138,     0,    82,   326,    33,   228,    87,     0,
448     82,    47,     4,   222,    87,     0,    82,    45,   334,   241,
449     87,     0,    83,   326,   227,    87,     0,    84,   326,   326,
450     87,     0,    86,   326,    87,     0,    85,   334,    87,     0,
451    257,     0,     0,     0,     4,     0,   229,     0,   228,    26,
452    229,     0,   239,     0,   239,    30,   326,     0,   231,     0,
453    230,    21,   231,     0,   233,     0,   234,     0,   235,     0,
454    236,     0,   232,     0,     0,   254,    33,   239,    31,   239,
455    141,     0,   254,    33,   239,   141,     0,   308,   245,    30,
456    239,   136,     0,   307,   250,    31,   245,   132,     0,   307,
457    245,   132,     0,   307,   250,    31,   245,    30,   246,   132,
458      0,   307,   245,    30,   246,   132,     0,   307,   250,    31,
459    245,    30,   246,    65,   248,     0,   307,   245,    30,   246,
460     65,   248,     0,   311,   250,    31,   237,   137,   218,     0,
461    311,   237,   137,   218,     0,   309,   250,    31,   333,   222,
462    139,     0,   309,   333,   222,   139,     0,   334,   332,     0,
463    239,     0,   238,    26,   239,     0,   240,     0,   240,    28,
464    239,     0,    93,   178,    31,   239,     0,   243,     0,   334,
465    241,     0,   241,   243,     0,   243,     0,   244,     0,   240,
466     28,   239,     0,   334,   241,     0,   244,     0,    24,   239,
467     26,   238,    25,     0,   332,     0,   334,     0,    24,    25,
468      0,    24,   239,    25,     0,    22,   239,    23,     0,    18,
469     18,     4,   239,    19,    19,     0,    94,     0,   334,     0,
470    334,   331,     0,   247,     0,   246,    29,   247,     0,   334,
471    241,     0,    24,     6,    25,   241,     0,   334,     0,    24,
472      6,    25,     0,   240,   321,   240,     0,    24,   249,    25,
473      0,    24,    25,     0,   333,     0,   333,     0,   249,    26,
474    333,     0,    24,   251,    25,     0,   237,     0,   237,     0,
475    251,    26,   237,     0,     0,   253,     0,   252,    21,   253,
476      0,    82,   326,    33,   228,    87,     0,    83,   326,   227,
477     87,     0,    84,   326,   326,    87,     0,   257,     0,   326,
478     26,   255,     0,   326,     0,   325,     0,   255,    26,   325,
479      0,   327,     0,   256,    26,   327,     0,     0,   274,   258,
480    259,     0,   260,   262,     0,   261,     0,    30,   265,     0,
481    263,    30,   265,     0,   263,    30,   265,   261,     0,    41,
482    336,   225,   339,     0,    41,   337,   225,   340,     0,     0,
483     29,   266,     0,   303,   264,     0,   303,     0,   266,    33,
484    239,    31,   239,     0,   266,    33,   239,     0,   266,     0,
485    267,     0,   266,   318,   266,     0,     7,   268,     0,   268,
486      0,     0,     0,    38,   269,   264,   270,    28,   265,     0,
487     39,   336,   225,   339,    40,   265,     0,    39,   337,   225,
488    340,    40,   265,     0,    61,   265,    62,   265,    63,   265,
489      0,    42,   265,    43,   336,   293,   339,     0,    42,   265,
490     43,   337,   293,   340,     0,    56,   329,   272,     0,    56,
491    329,     0,    57,   329,   272,     0,    57,   329,     0,    58,
492     17,   272,     0,    58,    17,     0,    59,    17,   272,     0,
493     59,    17,     0,    60,    11,   265,     0,   271,     0,   271,
494    273,     0,   273,     0,   272,   273,     0,   273,     0,   325,
495      0,   327,     0,   305,     0,    24,   265,    25,     0,    24,
496    266,   318,    25,     0,    24,   317,   266,    25,     0,   282,
497      0,   284,     0,   286,     0,   287,     0,   325,    36,   273,
498      0,    35,     0,    37,   273,     0,   278,     0,   274,   318,
499    275,     0,   276,     0,   275,   318,   275,     0,     7,   277,
500      0,   277,     0,   277,   280,     0,   280,     0,   312,   277,
501      0,   279,     0,   279,   280,     0,   281,     0,   327,     0,
502    325,     0,   325,    36,   303,     0,   305,     0,    35,     0,
503     24,    25,     0,    24,   325,   119,     8,    25,     0,    24,
504    275,    25,     0,    24,   275,    26,   299,    25,     0,    22,
505    299,    23,     0,    22,    23,     0,    37,   303,     0,   328,
506      0,   326,     0,   326,    36,   303,     0,   305,     0,    35,
507      0,   314,    25,     0,   314,   325,   119,     8,    25,     0,
508    314,   275,    25,     0,   314,   275,    26,   299,    25,     0,
509    315,   299,    23,     0,   315,    23,     0,   316,   303,     0,
510     24,   265,    26,   283,    25,     0,    24,    25,     0,   265,
511      0,   265,    26,   283,     0,    22,    23,     0,    22,   285,
512     23,     0,   265,     0,   265,    26,   285,     0,    22,   265,
513     26,   265,    32,   298,    23,     0,    22,   265,    32,   298,
514     23,     0,    22,   265,    29,   288,    23,     0,   289,     0,
515    288,    26,   289,     0,     0,     0,   290,   265,   291,   292,
516      0,    34,   265,     0,     0,   294,     0,   293,    21,   294,
517      0,     0,   300,   295,   296,     0,     0,   297,   262,     0,
518     28,   265,   262,     0,   263,    28,   265,   297,     0,   263,
519     28,   265,     0,     0,   265,     0,   300,    26,   299,     0,
520    300,     0,   301,     0,   300,   321,   301,     0,   304,     0,
521    302,     0,     7,     8,     0,     7,     9,     0,   327,     0,
522    302,   303,     0,   327,     0,   304,     0,   325,     0,   325,
523     36,   303,     0,   305,     0,    35,     0,    24,    25,     0,
524     24,   325,   119,     8,    25,     0,    24,   300,    25,     0,
525     24,   300,    26,   299,    25,     0,    22,   299,    23,     0,
526     22,    23,     0,    37,   303,     0,     8,     0,     9,     0,
527     10,     0,    11,     0,    12,     0,    13,     0,    14,     0,
528     15,     0,    16,     0,    17,     0,    17,    78,     4,     0,
529    109,     8,     0,   110,     8,     8,     0,   111,    11,     0,
530     53,     0,    45,     0,    44,     0,    47,     0,    48,     0,
531     46,     0,     7,     0,    52,     0,    24,     0,    22,     0,
532     37,     0,   321,     0,   320,     0,   321,     0,   319,     0,
533    322,     0,    27,     3,    27,     0,     5,     0,   324,     0,
534     27,     3,    27,     0,     6,     0,    27,     4,    27,     0,
535      5,     0,   324,     0,   323,     0,     7,     0,   119,     0,
536      3,     0,    24,   322,    25,     0,     3,     0,   314,   322,
537     25,     0,   334,     0,    24,     6,    25,     0,   334,     0,
538    314,     6,    25,     0,     3,     0,     4,     0,   332,     0,
539    330,    26,   332,     0,   332,     0,   331,   332,     0,     3,
540      0,   334,     0,     4,     0,     4,     0,   338,    18,     0,
541    338,     0,     0,    19,     0,     0,   341,   342,     0,    20,
542      0,     1,     0
543 };
544
545 #endif
546
547 #if YYDEBUG != 0
548 static const short yyrline[] = { 0,
549    329,   332,   334,   335,   337,   340,   344,   349,   353,   359,
550    363,   370,   371,   374,   376,   379,   381,   382,   383,   387,
551    391,   395,   402,   403,   404,   407,   408,   411,   413,   416,
552    418,   419,   420,   424,   428,   436,   439,   441,   444,   447,
553    450,   452,   456,   460,   462,   465,   467,   470,   473,   477,
554    481,   484,   488,   491,   495,   498,   502,   505,   509,   511,
555    514,   516,   519,   521,   524,   526,   529,   533,   535,   537,
556    539,   541,   545,   548,   552,   554,   557,   559,   562,   564,
557    567,   572,   574,   577,   579,   582,   584,   587,   598,   608,
558    611,   613,   615,   617,   619,   621,   623,   625,   627,   629,
559    631,   632,   635,   638,   642,   644,   647,   652,   654,   657,
560    661,   663,   666,   668,   671,   675,   677,   678,   680,   682,
561    685,   686,   688,   689,   691,   693,   694,   695,   697,   699,
562    701,   702,   703,   704,   705,   708,   711,   713,   715,   717,
563    720,   722,   725,   728,   730,   733,   735,   738,   740,   743,
564    745,   748,   750,   753,   755,   758,   760,   763,   783,   785,
565    788,   790,   795,   810,   817,   831,   838,   839,   842,   843,
566    846,   868,   874,   878,   882,   890,   893,   895,   898,   899,
567    902,   903,   906,   907,   910,   912,   917,   922,   935,   939,
568    943,   947,   953,   954,   958,   959,   962,   965,   965,   968,
569    968,   971,   971,   974,   974,   977,   977,   980,   982,   983,
570    986,   987,  1006,  1007,  1008,  1009,  1010,  1011,  1014,  1018,
571   1020,  1022,  1024,  1028,  1029,  1032,  1033,  1034,  1037,  1038,
572   1041,  1042,  1043,  1046,  1047,  1048,  1049,  1050,  1051,  1054,
573   1055,  1056,  1057,  1058,  1059,  1062,  1065,  1066,  1073,  1074,
574   1103,  1108,  1121,  1127,  1133,  1139,  1145,  1151,  1157,  1165,
575   1166,  1169,  1171,  1173,  1175,  1178,  1180,  1182,  1183,  1186,
576   1187,  1188,  1189,  1190,  1191,  1195,  1197,  1201,  1205,  1207,
577   1209,  1211,  1213,  1215,  1219,  1221,  1225,  1227,  1234,  1238,
578   1239,  1242,  1243,  1245,  1248,  1249,  1252,  1253,  1257,  1258,
579   1259,  1262,  1263,  1266,  1267,  1268,  1269,  1270,  1272,  1274,
580   1278,  1279,  1282,  1283,  1287,  1288,  1289,  1290,  1291,  1294,
581   1295,  1296,  1299,  1300,  1303,  1304,  1307,  1308,  1311,  1312,
582   1313,  1326,  1333,  1339,  1345,  1349,  1350,  1353,  1354,  1357,
583   1358,  1362,  1388,  1402,  1405,  1406,  1409,  1410,  1413,  1415,
584   1416,  1419,  1423,  1424,  1434,  1435,  1436,  1445,  1446,  1456,
585   1457,  1464,  1472,  1475,  1481,  1482,  1485,  1488,  1489,  1492,
586   1493,  1494,  1495,  1496,  1497,  1498,  1499,  1502,  1513,  1518,
587   1519,  1522,  1523,  1533,  1534,  1535,  1536,  1537,  1538,  1541,
588   1542,  1543,  1544,  1547,  1548,  1549,  1562,  1563,  1577,  1578,
589   1598,  1599,  1603,  1604,  1607,  1608,  1612,  1613,  1616,  1617,
590   1618,  1619,  1620,  1621,  1622,  1626,  1627,  1628,  1629,  1630,
591   1633,  1634,  1635,  1636,  1637,  1638,  1639,  1643,  1644,  1645,
592   1646,  1647,  1651,  1657,  1666,  1667,  1677,  1678,  1681,  1683,
593   1698,  1699,  1702,  1705,  1706,  1709,  1709,  1710,  1730,  1731,
594   1734,  1735,  1738,  1741,  1744,  1747,  1748,  1751,  1752,  1755,
595   1756,  1759,  1760,  1764,  1765,  1768,  1769,  1770,  1771,  1774,
596   1775,  1778,  1779,  1782,  1783,  1784,  1785,  1786,  1787,  1791,
597   1792,  1793,  1794,  1795,  1798,  1800,  1801,  1802,  1803,  1804,
598   1805,  1806,  1807,  1808,  1809,  1810,  1811,  1812,  1818,  1821,
599   1831,  1841,  1852,  1855,  1865,  1868,  1878,  1881,  1884,  1890,
600   1891,  1894,  1895,  1898,  1899,  1903,  1904,  1905,  1908,  1909,
601   1912,  1913,  1914,  1917,  1920,  1923,  1924,  1927,  1928,  1932,
602   1933,  1936,  1937,  1940,  1941,  1944,  1945,  1948,  1949,  1952,
603   1955,  1961,  1964,  1968,  1970,  1973,  1976,  1984,  1984,  1987,
604   1993
605 };
606
607 static const char * const yytname[] = {   "$","error","$undefined.","VARID",
608 "CONID","VARSYM","CONSYM","MINUS","INTEGER","FLOAT","CHAR","STRING","CHARPRIM",
609 "STRINGPRIM","INTPRIM","FLOATPRIM","DOUBLEPRIM","CLITLIT","OCURLY","CCURLY",
610 "VCCURLY","SEMI","OBRACK","CBRACK","OPAREN","CPAREN","COMMA","BQUOTE","RARROW",
611 "VBAR","EQUAL","DARROW","DOTDOT","DCOLON","LARROW","WILDCARD","AT","LAZY","LAMBDA",
612 "LET","IN","WHERE","CASE","OF","TYPE","DATA","CLASS","INSTANCE","DEFAULT","INFIX",
613 "INFIXL","INFIXR","MODULE","IMPORT","INTERFACE","HIDING","CCALL","CCALL_GC",
614 "CASM","CASM_GC","SCC","IF","THEN","ELSE","RENAMING","DERIVING","TO","LEOF",
615 "GHC_PRAGMA","END_PRAGMA","NO_PRAGMA","NOINFO_PRAGMA","ABSTRACT_PRAGMA","SPECIALISE_PRAGMA",
616 "MODNAME_PRAGMA","ARITY_PRAGMA","UPDATE_PRAGMA","STRICTNESS_PRAGMA","KIND_PRAGMA",
617 "UNFOLDING_PRAGMA","MAGIC_UNFOLDING_PRAGMA","DEFOREST_PRAGMA","SPECIALISE_UPRAGMA",
618 "INLINE_UPRAGMA","MAGIC_UNFOLDING_UPRAGMA","ABSTRACT_UPRAGMA","DEFOREST_UPRAGMA",
619 "END_UPRAGMA","TYLAMBDA","COCON","COPRIM","COAPP","COTYAPP","FORALL","TYVAR_TEMPLATE_ID",
620 "CO_ALG_ALTS","CO_PRIM_ALTS","CO_NO_DEFAULT","CO_LETREC","CO_SDSEL_ID","CO_METH_ID",
621 "CO_DEFM_ID","CO_DFUN_ID","CO_CONSTM_ID","CO_SPEC_ID","CO_WRKR_ID","CO_ORIG_NM",
622 "UNFOLD_ALWAYS","UNFOLD_IF_ARGS","NOREP_INTEGER","NOREP_RATIONAL","NOREP_STRING",
623 "CO_PRELUDE_DICTS_CC","CO_ALL_DICTS_CC","CO_USER_CC","CO_AUTO_CC","CO_DICT_CC",
624 "CO_CAF_CC","CO_DUPD_CC","PLUS","pmodule","module","@1","@2","body","maybeexports",
625 "export_list","export","impspec","maybeimpspec","import_list","import","idata_pragma",
626 "idata_pragma_specs","idata_pragma_specslist","idata_pragma_spectypes","itype_pragma",
627 "iclas_pragma","iclasop_pragma","iinst_pragma","modname_pragma","ival_pragma",
628 "gen_pragma","arity_pragma","update_pragma","deforest_pragma","strictness_pragma",
629 "worker_info","unfolding_pragma","unfolding_guidance","gen_pragma_list","type_pragma_pairs_maybe",
630 "type_pragma_pairs","type_pragma_pair","type_maybes","type_maybe","name_pragma_pairs",
631 "name_pragma_pair","core_expr","core_case_alts","core_alg_alts","core_alg_alt",
632 "core_prim_alts","core_prim_alt","core_default","corec_binds","corec_bind","co_scc",
633 "co_caf","co_dupd","core_id","co_primop","core_binders","core_binder","core_atoms",
634 "core_atom_list","core_atom","core_tyvars","core_tv_templates","core_types",
635 "core_type_list","core_type","core_type_maybes","core_type_maybe","readpreludecore",
636 "@3","readprelude","@4","maybeimpdecls","impdecls","impdecl","@5","impdecl_rest",
637 "readinterface","renamings","renaming_list","renaming","maybeiimports","iimports",
638 "iimport","interface","@6","ibody","maybefixes","fixes","fix","@7","@8","@9",
639 "@10","@11","@12","ops","topdecls","topdecl","typed","datad","classd","cbody",
640 "instd","rinst","restrict_inst","general_inst","defaultd","dtypes","decls","decl",
641 "howto_inline_maybe","types_and_maybe_ids","type_and_maybe_id","itopdecls","itopdecl",
642 "ivarsd","ityped","idatad","iclassd","iinstd","class","types","type","btype",
643 "atypes","ttype","atype","ntatype","simple","constrs","constr","tyclses","tycls_list",
644 "context","context_list","instdefs","instdef","vars","varsrest","cons","valdef",
645 "@13","valrhs","valrhs1","gdrhs","maybe_where","gd","lampats","exp","oexp","dexp",
646 "kexp","@14","@15","fexp","cexp","aexp","opatk","opat","dpat","fpat","dpatk",
647 "fpatk","aapat","aapatk","tuple","texps","list","list_exps","sequence","comprehension",
648 "quals","qual","@16","@17","qualrest","alts","alt","@18","altrest","gdpat","upto",
649 "pats","pat","bpat","conpat","apat","apatc","lit_constant","importkey","datakey",
650 "typekey","instkey","defaultkey","classkey","minuskey","modulekey","oparenkey",
651 "obrackkey","lazykey","op1","op","varop","varop1","conop","varsym","minus","plus",
652 "var","vark","con","conk","ccallid","tyvar_list","tyvars","tyvar","tycls","tycon",
653 "modid","ocurly","vocurly","layout","ccurly","vccurly","@19","vccurly1",""
654 };
655 #endif
656
657 static const short yyr1[] = {     0,
658    120,   122,   121,   123,   121,   124,   124,   124,   124,   124,
659    124,   125,   125,   126,   126,   127,   127,   127,   127,   127,
660    127,   127,   128,   128,   128,   129,   129,   130,   130,   131,
661    131,   131,   131,   131,   131,   132,   132,   132,   133,   133,
662    134,   134,   135,   136,   136,   137,   137,   138,   138,   139,
663    139,   139,   140,   140,   141,   141,   142,   142,   143,   143,
664    144,   144,   145,   145,   146,   146,   146,   147,   147,   148,
665    148,   148,   149,   149,   150,   150,   151,   151,   152,   152,
666    153,   154,   154,   155,   155,   156,   156,   157,   157,   158,
667    158,   158,   158,   158,   158,   158,   158,   158,   158,   158,
668    158,   158,   159,   159,   160,   160,   161,   162,   162,   163,
669    164,   164,   165,   165,   166,   167,   167,   167,   167,   167,
670    168,   168,   169,   169,   170,   170,   170,   170,   170,   170,
671    170,   170,   170,   170,   170,   171,   171,   171,   171,   171,
672    172,   172,   173,   174,   174,   175,   175,   176,   176,   177,
673    177,   178,   178,   179,   179,   180,   180,   181,   182,   182,
674    183,   183,   185,   184,   187,   186,   188,   188,   189,   189,
675    191,   190,   192,   192,   193,   194,   195,   195,   196,   196,
676    197,   197,   198,   198,   199,   199,   201,   200,   202,   202,
677    202,   202,   203,   203,   204,   204,   206,   205,   207,   205,
678    208,   205,   209,   205,   210,   205,   211,   205,   212,   212,
679    213,   213,   214,   214,   214,   214,   214,   214,   215,   216,
680    216,   216,   216,   217,   217,   218,   218,   218,   219,   219,
681    220,   220,   220,   221,   221,   221,   221,   221,   221,   222,
682    222,   222,   222,   222,   222,   223,   224,   224,   225,   225,
683    226,   226,   226,   226,   226,   226,   226,   226,   226,   226,
684    226,   227,   227,   228,   228,   229,   229,   230,   230,   231,
685    231,   231,   231,   231,   231,   232,   232,   233,   234,   234,
686    234,   234,   234,   234,   235,   235,   236,   236,   237,   238,
687    238,   239,   239,   239,   240,   240,   241,   241,   242,   242,
688    242,   243,   243,   244,   244,   244,   244,   244,   244,   244,
689    245,   245,   246,   246,   247,   247,   247,   247,   247,   248,
690    248,   248,   249,   249,   250,   250,   251,   251,   252,   252,
691    252,   253,   253,   253,   253,   254,   254,   255,   255,   256,
692    256,   258,   257,   259,   260,   260,   261,   261,   262,   262,
693    262,   263,   264,   264,   265,   265,   265,   266,   266,   267,
694    267,   269,   270,   268,   268,   268,   268,   268,   268,   268,
695    268,   268,   268,   268,   268,   268,   268,   268,   268,   271,
696    271,   272,   272,   273,   273,   273,   273,   273,   273,   273,
697    273,   273,   273,   273,   273,   273,   274,   274,   275,   275,
698    276,   276,   277,   277,   278,   278,   279,   279,   280,   280,
699    280,   280,   280,   280,   280,   280,   280,   280,   280,   280,
700    281,   281,   281,   281,   281,   281,   281,   281,   281,   281,
701    281,   281,   282,   282,   283,   283,   284,   284,   285,   285,
702    286,   286,   287,   288,   288,   290,   291,   289,   292,   292,
703    293,   293,   295,   294,   294,   296,   296,   297,   297,   298,
704    298,   299,   299,   300,   300,   301,   301,   301,   301,   302,
705    302,   303,   303,   304,   304,   304,   304,   304,   304,   304,
706    304,   304,   304,   304,   305,   305,   305,   305,   305,   305,
707    305,   305,   305,   305,   305,   305,   305,   305,   306,   307,
708    308,   309,   310,   311,   312,   313,   314,   315,   316,   317,
709    317,   318,   318,   319,   319,   320,   320,   320,   321,   321,
710    322,   322,   322,   323,   324,   325,   325,   326,   326,   327,
711    327,   328,   328,   329,   329,   330,   330,   331,   331,   332,
712    333,   334,   335,   336,   337,   338,   339,   341,   340,   342,
713    342
714 };
715
716 static const short yyr2[] = {     0,
717      3,     0,     6,     0,     2,     5,     5,     3,     3,     3,
718      3,     0,     3,     1,     3,     1,     1,     4,     4,     4,
719      3,     2,     3,     4,     2,     0,     1,     1,     3,     1,
720      1,     4,     4,     4,     3,     4,     3,     0,     2,     0,
721      1,     3,     3,     3,     0,     3,     0,     4,     0,     4,
722      5,     0,     2,     0,     3,     0,     1,     6,     1,     2,
723      1,     2,     1,     1,     1,     2,     3,     3,     0,     1,
724      2,     3,     1,     5,     1,     3,     1,     2,     1,     3,
725      5,     1,     3,     1,     1,     1,     3,     5,     3,     4,
726      4,     4,     6,     4,     3,     5,     6,     8,     6,     5,
727      1,     1,     3,     3,     0,     2,     5,     0,     2,     4,
728      1,     3,     1,     3,     3,     2,     4,     6,     6,     6,
729      1,     1,     1,     1,     3,     3,     3,     5,     6,     5,
730      2,     3,     3,     1,     1,     8,     8,     8,     8,     1,
731      0,     2,     5,     2,     3,     1,     3,     1,     1,     1,
732      2,     1,     3,     2,     3,     1,     3,     1,     1,     3,
733      1,     1,     0,     2,     0,     2,     0,     2,     1,     3,
734      0,     4,     2,     4,     2,     3,     1,     3,     3,     3,
735      0,     2,     1,     3,     5,     7,     0,     5,     5,     3,
736      5,     3,     0,     2,     1,     3,     0,     4,     0,     4,
737      0,     4,     0,     3,     0,     3,     0,     3,     1,     3,
738      1,     3,     1,     1,     1,     1,     1,     1,     4,     6,
739      4,     8,     6,     5,     3,     0,     4,     4,     6,     4,
740      0,     4,     4,     1,     4,     5,     2,     3,     5,     1,
741      4,     5,     2,     3,     5,     2,     5,     1,     1,     3,
742      6,     4,     5,     5,     5,     4,     4,     3,     3,     1,
743      0,     0,     1,     1,     3,     1,     3,     1,     3,     1,
744      1,     1,     1,     1,     0,     6,     4,     5,     5,     3,
745      7,     5,     8,     6,     6,     4,     6,     4,     2,     1,
746      3,     1,     3,     4,     1,     2,     2,     1,     1,     3,
747      2,     1,     5,     1,     1,     2,     3,     3,     6,     1,
748      1,     2,     1,     3,     2,     4,     1,     3,     3,     3,
749      2,     1,     1,     3,     3,     1,     1,     3,     0,     1,
750      3,     5,     4,     4,     1,     3,     1,     1,     3,     1,
751      3,     0,     3,     2,     1,     2,     3,     4,     4,     4,
752      0,     2,     2,     1,     5,     3,     1,     1,     3,     2,
753      1,     0,     0,     6,     6,     6,     6,     6,     6,     3,
754      2,     3,     2,     3,     2,     3,     2,     3,     1,     2,
755      1,     2,     1,     1,     1,     1,     3,     4,     4,     1,
756      1,     1,     1,     3,     1,     2,     1,     3,     1,     3,
757      2,     1,     2,     1,     2,     1,     2,     1,     1,     1,
758      3,     1,     1,     2,     5,     3,     5,     3,     2,     2,
759      1,     1,     3,     1,     1,     2,     5,     3,     5,     3,
760      2,     2,     5,     2,     1,     3,     2,     3,     1,     3,
761      7,     5,     5,     1,     3,     0,     0,     4,     2,     0,
762      1,     3,     0,     3,     0,     2,     3,     4,     3,     0,
763      1,     3,     1,     1,     3,     1,     1,     2,     2,     1,
764      2,     1,     1,     1,     3,     1,     1,     2,     5,     3,
765      5,     3,     2,     2,     1,     1,     1,     1,     1,     1,
766      1,     1,     1,     1,     3,     2,     3,     2,     1,     1,
767      1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
768      1,     1,     1,     1,     3,     1,     1,     3,     1,     3,
769      1,     1,     1,     1,     1,     1,     3,     1,     3,     1,
770      3,     1,     3,     1,     1,     1,     3,     1,     2,     1,
771      1,     1,     1,     2,     1,     0,     1,     0,     2,     1,
772      1
773 };
774
775 static const short yydefact[] = {   163,
776    165,     0,     4,     0,     0,   164,     0,   506,     1,   546,
777      0,   166,   543,   187,   175,     5,   167,   167,   545,    12,
778      0,     0,   193,     0,   169,   193,   548,   544,     0,     2,
779    546,   171,   547,   207,   203,   205,   261,     0,   195,    11,
780    168,     9,   261,    10,     0,     8,   526,   542,     0,     0,
781     14,    16,    17,     0,   188,   181,   181,     0,   201,     0,
782    197,     0,   199,     0,   528,   505,   485,   486,   487,   488,
783    489,   490,   491,   492,   493,   494,   508,   507,   425,   509,
784    501,   500,   504,   502,   503,     0,     0,     0,     0,     0,
785      0,     0,     0,     0,   211,   213,   214,   215,   216,   217,
786    218,     0,   260,   342,   397,   406,   408,   424,     0,     0,
787      0,     0,     0,     0,     0,     0,     0,   422,   421,   532,
788    194,   170,   548,   551,   550,   549,   521,   524,   525,     0,
789    523,   522,    13,     0,     0,    22,   546,   499,   193,     0,
790    183,     0,   193,   548,   172,    26,     0,   519,     0,   208,
791    209,   513,   512,   514,     0,   204,     0,   206,     0,     0,
792      0,     0,     0,   262,     0,     0,     0,   496,     0,   498,
793    261,     6,     0,     0,     0,     0,     0,   413,     0,   407,
794    412,   410,   409,   530,     0,   326,     0,     0,   311,     0,
795    311,     0,     0,   541,   540,     0,     0,     0,   310,   246,
796      0,   248,   295,   299,   304,   305,   226,     0,     0,   405,
797    404,     0,   524,   426,     0,   399,   402,     0,   410,     0,
798      0,   431,     0,   477,     0,     0,   463,   464,   467,   466,
799    476,   474,   470,   432,   473,   472,     0,     0,   196,     7,
800    527,    15,   507,    21,     0,     0,     0,   337,   340,     3,
801    275,   182,   190,     0,   275,   192,     0,     0,    27,   173,
802    202,     0,     0,     0,   198,   200,   495,     0,     0,     0,
803    263,     0,     0,   259,   258,   497,   212,     0,     0,    49,
804    292,   302,   305,     0,     0,   343,   351,   345,     0,     0,
805    398,   419,     0,     0,   414,     0,   410,   420,     0,   327,
806      0,     0,     0,   312,   538,     0,   538,     0,     0,     0,
807    231,   240,   289,     0,     0,   306,     0,     0,   301,   298,
808    305,   546,   225,     0,   403,   533,   401,   428,     0,     0,
809    529,     0,   468,   469,   483,     0,   524,   478,     0,   474,
810    484,   430,     0,     0,     0,   471,     0,   336,   338,   423,
811     18,    20,    19,     0,     0,   268,   274,   270,   271,   272,
812    273,     0,     0,     0,     0,     0,   184,     0,   548,    25,
813      0,    28,    30,    31,     0,     0,   515,   520,   210,     0,
814      0,     0,   264,   266,   256,   257,     0,   152,     0,     0,
815      0,   252,     0,   296,     0,     0,     0,   395,     0,   362,
816    546,     0,     0,     0,     0,     0,     0,     0,   352,   358,
817    361,   379,   381,   390,   391,   392,   393,   386,   384,   385,
818    346,   357,   546,   344,     0,   418,   531,   416,     0,     0,
819    411,   325,     0,     0,     0,   221,   313,   317,     0,   539,
820    219,     0,   541,     0,   243,     0,   292,   305,   546,   230,
821      0,   308,   307,     0,   300,   297,   261,   261,   226,     0,
822    400,     0,   482,   480,     0,     0,   462,   465,   475,     0,
823      0,   341,   275,   189,     0,    38,     0,     0,     0,     0,
824     47,     0,     0,   191,    23,     0,     0,     0,     0,   174,
825    255,   254,     0,   253,     0,     0,     0,     0,    49,    59,
826     57,     0,     0,     0,   293,   360,   437,   439,     0,   516,
827    519,   524,   434,     0,     0,   357,     0,   511,   510,   517,
828    396,     0,   261,   261,     0,   534,   535,   371,   373,   375,
829    377,     0,     0,     0,   380,     0,     0,   261,   261,   347,
830      0,     0,   328,     0,     0,     0,     0,   315,     0,     0,
831      0,   231,   234,   244,     0,     0,   296,   329,   329,     0,
832      0,   290,     0,   249,   548,   224,   429,   427,     0,     0,
833    339,   269,    56,     0,    40,   280,     0,     0,     0,    52,
834      0,   226,     0,   185,    29,    35,     0,     0,     0,    24,
835      0,     0,   177,     0,     0,   265,   267,     0,   153,   294,
836    251,    60,     0,    61,     0,     0,     0,   446,   460,   438,
837      0,   387,     0,     0,     0,   363,   354,     0,   548,   546,
838    370,   383,   372,   374,   376,   378,     0,   359,   394,   356,
839      0,   548,   348,   417,   415,   318,   319,   314,     0,   223,
840    322,   220,     0,   237,     0,     0,   229,     0,   293,   241,
841      0,     0,     0,     0,   330,   335,   422,   548,     0,   247,
842      0,   261,   227,   228,   481,   479,     0,     0,   277,    38,
843      0,     0,    40,    38,    45,     0,    54,   288,    75,     0,
844    286,    47,     0,    32,    34,    33,   176,     0,     0,     0,
845    303,    48,    62,    63,    64,     0,   439,   440,     0,   444,
846      0,   461,     0,   518,   435,     0,   388,   389,     0,   353,
847      0,     0,   455,   455,   382,     0,     0,   349,   350,   316,
848    321,     0,   323,     0,   238,     0,     0,     0,   242,   245,
849      0,   262,     0,     0,   232,   233,   309,   291,   250,    56,
850      0,     0,   282,     0,    39,    41,    37,     0,     0,   279,
851      0,   278,    52,     0,     0,     0,    46,   226,   186,   178,
852    179,   180,    65,     0,     0,     0,   460,   443,   446,   447,
853    442,     0,   433,     0,     0,     0,     0,   451,   453,   548,
854      0,   355,   320,     0,   222,     0,   536,     0,   235,     0,
855      0,     0,   331,   276,    55,   284,    84,     0,    82,    85,
856      0,    36,    38,     0,   287,    53,     0,    76,   285,    69,
857     66,    70,     0,     0,     0,   439,     0,   445,   450,   436,
858    364,   365,   366,   455,   368,     0,   369,   367,   324,   236,
859      0,   239,     0,   333,   334,    43,     0,    42,     0,   281,
860     44,    50,     0,    86,     0,     0,    67,    73,     0,     0,
861     71,    77,     0,    58,   441,     0,   448,   452,     0,     0,
862    454,   351,   537,   332,    83,   283,     0,    51,     0,     0,
863      0,   141,     0,     0,     0,     0,     0,     0,     0,     0,
864      0,     0,     0,     0,     0,     0,     0,     0,     0,    72,
865    102,   101,   134,   135,     0,    78,    79,   449,   351,     0,
866    456,    87,     0,    89,    68,     0,     0,     0,     0,     0,
867    150,     0,     0,     0,   140,     0,     0,     0,     0,     0,
868      0,     0,     0,     0,     0,     0,   131,     0,     0,     0,
869    457,   459,     0,     0,     0,     0,   142,     0,     0,     0,
870      0,     0,     0,     0,     0,   151,     0,     0,     0,     0,
871      0,     0,     0,     0,     0,     0,    95,     0,     0,   113,
872      0,   125,   126,   127,     0,     0,     0,   132,   133,     0,
873     80,   458,    88,    74,     0,    90,     0,     0,   123,   124,
874    116,     0,     0,     0,     0,     0,    91,     0,   154,     0,
875    156,   158,    92,     0,     0,     0,     0,    94,   144,   149,
876      0,   146,   148,     0,     0,     0,     0,     0,     0,   161,
877    162,     0,   159,    69,     0,     0,   105,   108,     0,     0,
878      0,     0,     0,   100,     0,   155,     0,     0,     0,     0,
879      0,   145,     0,    96,     0,   114,   115,   128,     0,   130,
880      0,    81,     0,     0,     0,     0,    97,   117,     0,     0,
881      0,    93,   157,     0,     0,     0,     0,   147,    99,   129,
882    160,   143,     0,     0,   111,   106,   103,   141,     0,   109,
883    104,     0,     0,     0,     0,     0,     0,     0,     0,    98,
884      0,     0,     0,   121,   122,   118,   119,   120,     0,     0,
885      0,     0,     0,   112,     0,   136,   137,   138,   139,     0,
886    110,   107,     0,     0,     0
887 };
888
889 static const short yydefgoto[] = {  1103,
890      9,    54,    10,    16,    30,    50,    51,   259,   260,   371,
891    372,   576,   672,   745,   746,   752,   582,   392,   678,   755,
892    669,   503,   504,   606,   696,   765,   847,   815,   850,   680,
893    854,   896,   897,   798,   799,   843,   844,   890,  1019,  1045,
894   1066,  1046,  1070,  1067,   959,   960,   945,  1086,   981,   891,
895    917,   907,   937,   957,  1001,  1002,   912,   389,   950,   990,
896   1011,  1012,  1013,     1,     2,     3,     4,    23,    24,    25,
897     58,   145,     6,   490,   592,   593,   139,   140,   141,     7,
898     21,    55,    37,    38,    39,   155,   157,   147,    62,    64,
899     60,   150,    94,    95,    96,    97,    98,   323,    99,   450,
900    552,   311,   100,   200,   563,   564,   272,   382,   383,   355,
901    356,   357,   358,   359,   360,   361,   186,   561,   992,   281,
902    319,   202,   203,   282,   187,   436,   437,   640,   722,   188,
903    301,   654,   655,   102,   348,   247,   103,   174,   286,   287,
904    288,   424,   289,   616,   702,   422,   410,   411,   522,   709,
905    412,   621,   413,   104,   215,   216,   217,   105,   106,   211,
906    107,   414,   706,   415,   698,   416,   417,   699,   700,   701,
907    819,   857,   777,   778,   826,   861,   862,   703,   226,   227,
908    228,   229,   617,   230,   418,   142,   109,   110,   111,   112,
909    113,   114,    11,   162,   116,   117,   517,   151,   152,   518,
910    153,   154,   131,   132,   419,   118,   420,   119,   528,   786,
911    304,   205,   641,   184,    14,    17,    18,    19,    40,    44,
912     45,   126
913 };
914
915 static const short yypact[] = {-32768,
916 -32768,    35,    61,    35,   113,-32768,   163,-32768,-32768,-32768,
917    113,-32768,-32768,-32768,-32768,-32768,   232,   232,   275,   287,
918    346,   113,   470,   612,-32768,   747,   312,-32768,   546,-32768,
919 -32768,-32768,-32768,   454,   466,   490,  1745,   353,-32768,-32768,
920    232,-32768,  1745,-32768,   314,-32768,-32768,-32768,   194,   165,
921 -32768,-32768,   338,   482,-32768,   458,   458,    35,-32768,    74,
922 -32768,    74,-32768,    74,-32768,-32768,-32768,-32768,-32768,-32768,
923 -32768,-32768,-32768,-32768,-32768,   467,-32768,-32768,-32768,-32768,
924 -32768,-32768,-32768,-32768,-32768,   372,   301,   301,   564,   301,
925    555,   567,   609,   661,-32768,-32768,-32768,-32768,-32768,-32768,
926 -32768,   605,-32768,    74,-32768,  2552,-32768,-32768,   295,   564,
927    295,  1056,   295,  2552,  1171,  2358,  2587,   404,-32768,-32768,
928    747,-32768,   623,-32768,-32768,-32768,-32768,-32768,-32768,   627,
929 -32768,-32768,-32768,   546,   755,-32768,-32768,-32768,   747,   667,
930 -32768,   113,   747,   637,-32768,   221,    74,-32768,   687,   640,
931 -32768,-32768,-32768,-32768,    74,   640,    74,   640,   679,   564,
932    694,   194,   672,   709,   301,   647,   669,-32768,   744,-32768,
933   1745,-32768,  1011,   691,  2475,  2405,  1455,-32768,  2587,-32768,
934 -32768,   758,-32768,-32768,   564,-32768,   782,   778,   811,   807,
935    811,   809,   409,   811,-32768,   831,  1011,   441,-32768,-32768,
936    829,-32768,-32768,   857,-32768,  1097,   296,   852,   811,  2552,
937 -32768,   870,  2552,-32768,   283,-32768,  2552,   877,   146,   731,
938   2440,-32768,  1572,-32768,  2587,   883,   559,-32768,  2587,-32768,
939 -32768,   887,-32768,-32768,-32768,-32768,   408,  2587,-32768,-32768,
940 -32768,-32768,   903,-32768,   886,   906,   735,   902,-32768,-32768,
941    321,   458,-32768,   921,   321,-32768,   537,   927,-32768,   895,
942    640,   928,   931,    74,   640,   640,-32768,  1097,   409,  1011,
943 -32768,   874,   876,-32768,-32768,-32768,-32768,   441,   871,    29,
944    939,-32768,  1097,  2079,  2079,-32768,   930,-32768,   943,  2552,
945 -32768,-32768,   945,   944,-32768,   474,   159,-32768,  2587,-32768,
946    776,  1108,   564,   811,   949,  1011,-32768,   564,  1011,   711,
947    933,-32768,-32768,   971,   958,-32768,   781,  1011,   983,-32768,
948 -32768,-32768,-32768,   564,-32768,-32768,  2552,-32768,  2517,  2475,
949 -32768,   974,-32768,-32768,-32768,   960,   731,-32768,   512,   177,
950 -32768,-32768,  2517,   980,  2517,-32768,  2587,   962,-32768,-32768,
951 -32768,-32768,-32768,   355,   697,-32768,-32768,-32768,-32768,-32768,
952 -32768,   966,   295,   564,   295,   295,-32768,   546,   982,-32768,
953    794,-32768,-32768,   978,   546,   985,-32768,-32768,-32768,   632,
954    923,    57,-32768,   988,-32768,-32768,   827,-32768,   552,  1011,
955    633,-32768,  1011,  1097,  2138,  1925,  1374,-32768,  2629,-32768,
956 -32768,  2079,   851,   851,   995,   996,  1008,  2079,    74,-32768,
957 -32768,  2629,-32768,-32768,-32768,-32768,-32768,-32768,   984,-32768,
958 -32768,   128,-32768,-32768,  2079,-32768,-32768,-32768,  2517,  1013,
959 -32768,-32768,   564,   706,   415,    63,-32768,   719,   994,-32768,
960 -32768,   597,-32768,  1002,-32768,  1001,  1010,  1097,-32768,-32768,
961   1011,-32768,-32768,  1011,-32768,-32768,  2197,  2197,   989,  1015,
962 -32768,  1017,-32768,-32768,  2517,  1037,-32768,-32768,-32768,   408,
963    903,-32768,   321,-32768,  1011,    89,  1021,  1016,  1024,   409,
964    155,  1027,   845,-32768,-32768,   546,   786,   849,   570,-32768,
965 -32768,-32768,  1011,-32768,   301,  1011,   967,  1011,   998,-32768,
966 -32768,  1055,   633,   414,-32768,-32768,-32768,   613,  1044,  1043,
967    944,  2138,-32768,   873,   855,   128,  2079,-32768,-32768,  1045,
968 -32768,  2587,  2197,  2197,  1029,-32768,-32768,  2629,  2629,  2629,
969   2629,  2079,  1031,  2079,-32768,  2629,  1011,  2197,  2197,  1050,
970   1048,  1058,-32768,  1059,  1097,  1108,   568,   838,  1108,   811,
971    339,   933,-32768,-32768,  1011,  1011,  1019,  2323,  2323,  1075,
972    861,-32768,   734,-32768,  1074,-32768,-32768,-32768,  1071,  1077,
973 -32768,-32768,   263,  1108,  1047,-32768,   564,  1011,   564,  1038,
974    633,   989,   564,  1035,-32768,-32768,  1082,  1083,   872,-32768,
975    250,   875,-32768,  1051,  1052,-32768,-32768,   879,-32768,-32768,
976 -32768,-32768,  1040,-32768,  1102,     3,  2079,-32768,  2079,-32768,
977   1087,-32768,  2079,  2002,   366,-32768,  2587,   734,  1074,-32768,
978   2629,-32768,  2629,  2629,  2629,-32768,  2079,-32768,-32768,  1085,
979    734,  1074,-32768,-32768,-32768,  1097,-32768,-32768,   444,-32768,
980 -32768,   242,  1099,-32768,   590,   811,-32768,   891,  1098,-32768,
981    301,   301,   301,   753,-32768,-32768,  1088,  1104,  1110,  1103,
982   1011,  2197,-32768,-32768,-32768,-32768,  1011,   633,-32768,   387,
983   1105,  1064,    18,   211,  1066,   409,  1061,-32768,-32768,   181,
984 -32768,  1072,   985,-32768,-32768,-32768,-32768,   570,   408,   355,
985 -32768,-32768,-32768,-32768,-32768,    41,   476,-32768,   220,-32768,
986   2079,-32768,  1123,-32768,  1122,  1124,-32768,-32768,  1125,-32768,
987   1111,  1112,  2517,  2517,-32768,  1092,  1011,-32768,-32768,  1097,
988 -32768,   894,-32768,   568,-32768,   811,   811,    75,-32768,-32768,
989   1127,   709,   301,  2323,-32768,-32768,-32768,-32768,-32768,  1090,
990   1093,   568,-32768,   860,  1130,-32768,-32768,  1094,  1108,-32768,
991   1089,-32768,  1038,   113,   633,   633,-32768,   989,-32768,-32768,
992 -32768,-32768,-32768,    32,   477,  2079,  2079,-32768,-32768,-32768,
993 -32768,  2079,-32768,  2079,  2079,  2079,   756,-32768,   415,  1143,
994   2079,-32768,-32768,   564,-32768,   896,-32768,  1140,-32768,  1011,
995   1079,  1080,-32768,-32768,-32768,-32768,-32768,   420,-32768,-32768,
996   1105,-32768,   405,  1101,-32768,-32768,    43,-32768,-32768,  1150,
997 -32768,-32768,   826,   301,   578,  1145,  1166,-32768,  1156,-32768,
998 -32768,-32768,-32768,  2517,-32768,   907,-32768,-32768,-32768,-32768,
999    811,-32768,    64,-32768,-32768,-32768,   860,-32768,   568,-32768,
1000 -32768,-32768,   261,-32768,  1162,   633,-32768,-32768,  1186,  1616,
1001 -32768,-32768,  1178,-32768,-32768,  2079,-32768,-32768,  2079,  1175,
1002 -32768,   930,-32768,-32768,-32768,-32768,   408,-32768,   333,  1185,
1003   1197,-32768,  1189,  1616,  1191,  1207,   174,   453,  1616,  1616,
1004   1193,   564,   564,   564,   564,   564,   573,   573,   113,-32768,
1005 -32768,-32768,-32768,-32768,   860,  1188,-32768,-32768,   930,  2079,
1006 -32768,-32768,   633,-32768,-32768,  1211,   360,  1192,  1176,   635,
1007 -32768,   329,   113,  1196,-32768,   777,  1196,  1198,  1204,  1192,
1008    564,   408,   408,  1199,   408,  1202,-32768,   570,   599,  1178,
1009 -32768,  1050,  1206,  1218,  1225,  1616,-32768,  1201,  1216,    59,
1010   1227,  1229,   573,   573,  1210,-32768,  1616,   355,   506,  1198,
1011    851,   851,   981,   981,  1198,  2155,-32768,  1011,   762,-32768,
1012   1212,-32768,-32768,-32768,  1011,  1217,   938,-32768,-32768,  1236,
1013 -32768,-32768,-32768,-32768,  1213,-32768,  1616,   842,-32768,-32768,
1014 -32768,  1237,  1238,  1239,  1241,  1616,-32768,  1196,-32768,   606,
1015 -32768,-32768,-32768,  1235,  1240,  1243,  1244,-32768,-32768,-32768,
1016    617,-32768,-32768,  1245,  1215,  1192,  1616,  1231,  1011,-32768,
1017 -32768,   641,-32768,  1150,  1011,  1247,-32768,-32768,  1248,    59,
1018   1246,  1252,  1257,-32768,  1198,-32768,  1011,  1196,  1196,  1196,
1019   1196,-32768,  2214,-32768,  1616,-32768,-32768,-32768,  1249,-32768,
1020    938,-32768,  1251,  1230,   665,   815,-32768,-32768,    59,    59,
1021     59,-32768,-32768,  1011,  1011,  1011,  1011,-32768,-32768,-32768,
1022 -32768,-32768,  1616,   119,-32768,-32768,-32768,-32768,  1250,-32768,
1023 -32768,  1255,   147,   147,   147,  1254,  1260,  1265,  1266,-32768,
1024    585,  1616,  1616,-32768,-32768,-32768,-32768,-32768,  1261,  1262,
1025   1263,  1264,  1616,-32768,  1270,-32768,-32768,-32768,-32768,  1271,
1026 -32768,-32768,  1269,  1293,-32768
1027 };
1028
1029 static const short yypgoto[] = {-32768,
1030 -32768,-32768,-32768,  1134,-32768,-32768,  1160,-32768,-32768,    22,
1031    810,  -599,   622,-32768,   496,-32768,   616,   800,   547,-32768,
1032    561,  -483,-32768,-32768,-32768,-32768,   290,-32768,-32768,-32768,
1033 -32768,-32768,   375,   411,   471,-32768,   440,  -290,-32768,-32768,
1034 -32768,-32768,-32768,   264,-32768,   303,-32768,  -131,  -537,  -785,
1035 -32768,   243,  -826,  -664,-32768,   280,-32768,-32768,  -777,-32768,
1036   -362,-32768,   273,-32768,-32768,-32768,-32768,  1297,  1301,  1279,
1037 -32768,-32768,    65,   639,-32768,   643,  1272,  1275,  1081,-32768,
1038 -32768,-32768,    24,-32768,  1219,-32768,-32768,-32768,-32768,-32768,
1039 -32768,   292,  1280,  1168,-32768,-32768,-32768,  -430,-32768,   789,
1040 -32768,  -247,-32768,-32768,  -129,   -34,   610,   553,   853,  1095,
1041    882,-32768,-32768,-32768,-32768,-32768,   -89,  -441,    71,   -78,
1042   -251,-32768,    34,  1232,   -82,  -510,   799,  -666,-32768,   -60,
1043 -32768,   788,   614,   -95,-32768,   881,  -497,-32768,-32768,-32768,
1044    819,  -541,  -789,   743,    10,  -259,-32768,  -338,-32768,-32768,
1045 -32768,   317,    76,-32768,  -105,-32768,   -48,-32768,-32768,   -68,
1046 -32768,-32768,   589,-32768,   968,-32768,-32768,-32768,   594,-32768,
1047 -32768,-32768,   652,   548,-32768,-32768,   438,   604,  -117,  -210,
1048   1028,-32768,   -63,   -84,    -7,-32768,  -224,  -207,  -206,-32768,
1049   -199,-32768,-32768,   -32,-32768,-32768,-32768,   -62,-32768,-32768,
1050   -208,   -47,-32768,   977,   -29,   -72,  1022,-32768,  -397,-32768,
1051    729,  -168,  -103,   779,   -10,   -25,     4,-32768,   -20,   -17,
1052 -32768,-32768
1053 };
1054
1055
1056 #define YYLAST          2740
1057
1058
1059 static const short yytable[] = {    52,
1060     20,   130,   101,    42,   115,    56,   529,   193,   101,    46,
1061    115,    32,   339,   163,   164,   165,   380,   167,   345,   603,
1062    305,   381,   307,   207,   409,   313,   363,   190,   566,   108,
1063    363,   394,   235,   201,    57,   108,   860,   180,   642,   246,
1064    313,   175,   810,   364,   365,    47,   546,   364,   365,    43,
1065    192,   366,   208,   234,   598,   366,   506,   785,   293,   390,
1066    656,   656,   248,   670,   673,   210,    49,   218,    12,   291,
1067    743,   296,   694,   172,   750,   796,   182,   195,   127,   148,
1068    128,   938,   493,   695,   182,   219,   232,   232,     5,   493,
1069    671,   546,   273,   961,   235,   300,   391,   679,   181,   789,
1070    149,   926,   927,   336,    52,   240,   181,   181,   231,   231,
1071    763,   842,     8,   648,   218,   298,    13,   764,   574,   253,
1072    811,   975,   146,   127,   294,   128,   256,   547,   979,   130,
1073    345,   254,   127,   148,   128,   440,   101,   516,   115,   955,
1074    235,   325,   860,   494,   235,   182,   232,   297,   325,   232,
1075    864,   681,   330,   235,   149,   362,   575,   984,   985,   362,
1076    537,   341,   251,   108,   327,   346,   255,   181,   231,   181,
1077   1000,   231,   866,   506,   350,   130,   980,    48,   248,   961,
1078    182,   299,   248,   182,   741,  -326,   548,   182,   519,   133,
1079    134,   232,   129,   340,   299,   232,   557,   471,   127,   232,
1080    128,   379,   181,   840,   442,   181,   756,   349,   232,   181,
1081   1025,   460,   347,   231,   235,   231,  1084,   231,  1069,  1069,
1082    439,   231,   581,   435,   461,   467,   545,   373,   330,    15,
1083    231,   447,   580,   330,   459,   431,   656,   129,   803,   320,
1084    749,   327,   768,   280,   257,   769,   129,  1000,   363,   757,
1085   1054,  1055,  1056,  1057,   127,   294,   128,   615,   325,  1068,
1086    182,   480,   235,  1085,   332,   364,   365,   315,   317,   232,
1087    546,   807,   808,   366,   628,   258,   481,   430,   575,   913,
1088    476,   478,   181,   469,    22,   993,   867,   127,   148,   128,
1089    998,   231,    28,   667,   421,   466,   457,   182,    48,   232,
1090    182,   320,   477,    65,   479,   482,   724,   328,   329,   149,
1091     29,   541,   129,   232,   124,   232,   320,   232,   185,   181,
1092    901,   231,   181,    65,    78,   458,  -326,   809,   565,   868,
1093    668,   946,    41,   125,   474,   231,   322,   231,   373,   231,
1094    384,   195,    48,   543,    78,   373,   534,   569,   387,   130,
1095    903,   484,   456,   156,   628,   158,   947,   931,    48,   534,
1096   1052,   135,   870,   644,    81,    82,    83,    84,   129,   136,
1097    127,   148,   128,   121,    65,   523,   441,   362,   471,   444,
1098    446,   643,   645,   935,   720,   904,    31,   936,   455,   483,
1099    708,   588,   149,   618,   619,    78,   488,   538,   330,   232,
1100    248,   129,   500,   501,   524,   508,   515,   502,   631,   632,
1101     47,   525,    48,   456,   248,   546,   160,   533,   161,   933,
1102    148,   231,   597,   558,   115,   115,   539,   456,   753,   237,
1103    309,    49,   310,   546,   540,   232,  -337,   235,   261,   238,
1104    571,   344,   836,   195,    48,   837,   265,    48,   266,   108,
1105    108,   742,   559,   614,   575,   915,   373,   231,   196,   594,
1106    499,    59,   197,   505,   278,   316,   637,   435,   721,   839,
1107    435,   320,   575,    61,   521,   676,   916,   307,   127,   148,
1108    128,   320,  1048,   604,   129,   657,   657,   535,    33,   605,
1109    115,   115,   232,   682,   674,   435,   435,    63,   428,   429,
1110    149,   766,   779,   779,   387,   115,   115,   767,   195,    48,
1111    138,  1073,  1074,  1075,   231,   108,   108,   148,    34,    35,
1112     36,   560,   137,   196,   562,   115,   115,   197,   989,   278,
1113    108,   108,   235,   279,   199,   723,   464,   465,   344,    47,
1114     48,   626,   663,   130,   159,   573,   812,   664,    47,    48,
1115    108,   108,   534,   994,   995,   813,   814,   787,   788,   440,
1116     49,   370,   168,   384,   148,   534,   562,    48,   600,    49,
1117    345,    48,    47,    48,   169,    47,    48,   497,   731,   732,
1118    733,   456,   498,   909,   343,   344,   991,   232,   918,   919,
1119    456,   639,   129,   591,   713,  1004,   591,   711,   279,   199,
1120     48,   712,  1008,   622,   622,   622,   622,   630,   935,   231,
1121    718,   629,  1093,   779,   719,   726,   697,   727,   550,   170,
1122    551,   970,   705,   714,   837,   562,   649,   739,  1026,   115,
1123     33,  1027,    41,   735,   195,    48,   716,   173,   607,  1032,
1124    736,   608,  1033,   171,   609,   976,  1039,   852,   675,   196,
1125    853,   241,  1043,   197,   108,   278,   987,   252,   594,   761,
1126    792,   657,   863,  1040,  1053,   264,  1041,    47,    48,   320,
1127    435,   882,   883,   884,   885,   886,   887,   888,   889,    33,
1128    829,   171,   267,   232,   232,    33,  1016,   252,  1064,   262,
1129    263,  1076,  1077,  1078,  1079,  1024,   715,   269,   715,   715,
1130    715,   115,   500,   501,   270,   231,   231,   502,   195,    48,
1131    770,   544,   271,   195,    48,    33,  1037,   473,   491,   284,
1132    285,   195,    48,   196,  -305,   199,   108,   197,   196,   278,
1133    316,   738,   197,   274,   278,   445,   196,   740,   333,   334,
1134    197,   851,   278,   806,  1059,  -305,   940,   941,   942,   943,
1135    944,   276,    33,   456,   662,   275,   825,    65,    48,   353,
1136    354,  1065,   827,   882,   883,   884,   885,   886,   887,   888,
1137    889,    33,  1080,   734,    33,   816,   824,   845,   243,   244,
1138   1005,   705,  1006,   821,   822,   823,   245,   782,    65,    48,
1139    828,  1094,  1095,   299,   232,    34,    35,    36,   279,   199,
1140    432,   433,  1100,   279,   199,   453,   454,    53,   303,   243,
1141    586,   302,   199,   195,   800,   120,   231,   587,   485,   486,
1142    893,   120,    67,    68,    69,    70,    71,    72,    73,    74,
1143     75,    76,   951,   952,   953,   954,   306,   845,   935,   308,
1144    195,    48,   892,  -296,   893,   623,   624,   625,   314,   893,
1145    893,   453,   496,   526,   527,   196,   318,   893,   893,   197,
1146    384,   278,   195,    48,  -296,   898,   892,   166,   899,   584,
1147    486,   892,   892,   590,   486,   611,   263,   196,   928,   612,
1148    613,   197,   324,   278,  -302,   660,   661,   189,   191,   194,
1149    206,   209,   963,   964,   326,   966,   686,   354,   968,   687,
1150    688,   331,   948,   691,   661,   342,   893,   800,   294,   932,
1151    351,  1065,    53,   893,   893,   729,   661,   893,   783,   784,
1152    830,   831,   347,    91,    92,    93,   893,   237,   892,   797,
1153    352,   199,   848,   849,   859,   284,  1017,  1018,   268,   892,
1154    195,    48,  1087,  1088,   368,   996,   997,   893,  1003,   120,
1155    375,   283,   279,   199,   377,   196,   893,   378,   376,   197,
1156    385,   278,   386,   209,   388,   800,   393,   426,   427,   892,
1157    423,   312,   425,   449,   451,   283,   283,   893,   892,  -289,
1158    452,   462,   463,   263,   321,   195,    48,   470,    67,    68,
1159     69,    70,    71,    72,    73,    74,    75,    76,   475,   892,
1160    196,   487,   473,   893,   197,   893,   278,  1010,   489,   492,
1161   -296,   530,   531,   195,    48,   893,   130,   495,   532,   536,
1162    542,   195,    48,   549,   554,  1003,   555,   892,   196,   322,
1163    279,   199,   197,   893,   278,   374,   196,   556,  1072,   567,
1164    197,   568,   278,   650,   570,   578,   321,   312,   283,   195,
1165     48,   577,   893,   893,   579,   892,   283,   583,   195,    48,
1166    599,   321,   602,   893,   196,   391,   610,  -521,   197,  -522,
1167    434,   620,   634,   196,   892,   892,   199,   197,   284,   198,
1168    438,   191,   635,   636,   283,   892,   443,   283,   448,    91,
1169     92,    93,   627,   659,   662,   665,   283,   321,   683,   195,
1170     48,   666,   209,   279,   199,   677,   684,   685,   692,   693,
1171    195,    48,   199,   704,   196,   717,   689,   690,   197,   671,
1172    278,   725,   730,   238,   734,   196,   744,   183,   737,   197,
1173   -303,   434,   747,   751,   754,   183,   183,   233,   236,   581,
1174    199,   189,   191,   194,   209,   771,   374,   772,   773,   199,
1175    775,   776,   774,   374,   781,   801,   249,   668,   321,   790,
1176    804,   795,   802,   824,   832,   834,   835,   846,   283,   841,
1177    766,   283,   321,    47,    48,   127,   212,   213,    67,    68,
1178     69,    70,    71,    72,    73,    74,    75,    76,   855,   856,
1179    199,   869,   176,   871,   177,   214,   183,   233,   183,   895,
1180    236,   199,   900,   905,   906,   178,   908,   179,   910,   911,
1181    920,   209,   283,   930,   934,   935,   321,   949,   939,   956,
1182    553,   958,   965,   967,   973,   974,   321,   975,   986,   283,
1183    977,   183,   283,   978,   183,   120,   120,   982,   183,   983,
1184   1009,  1007,   233,  1014,   233,  1015,   236,  1020,  1021,  1022,
1185    236,  1023,  1028,   283,  1035,  1038,  1049,  1029,   312,   236,
1186   1030,  1031,  1050,  1034,   374,  1044,  1047,  1051,  1104,  1063,
1187    250,   283,  1089,  1060,   283,  1062,   283,  1082,  1090,    91,
1188     92,    93,  1083,  1091,  1092,  1096,  1097,  1098,  1099,   129,
1189   1101,  1102,  1105,   242,   748,   585,   838,   758,   601,   805,
1190    794,   120,   120,  1042,   971,   929,   902,   865,  1036,  1071,
1191   1081,   183,  1058,  1061,    26,   283,   120,   120,    27,   122,
1192    236,   759,   123,   283,   438,   443,   321,   438,   143,   646,
1193    760,   144,   367,   283,   283,   321,   120,   120,   277,   239,
1194    647,   791,   833,   204,   638,   596,   658,   793,   183,   369,
1195    233,   183,   438,   438,   572,   191,   283,   443,   633,   710,
1196    820,   209,   818,   509,   233,   780,   233,   589,   236,   972,
1197    817,   858,   468,   520,   728,   472,    47,    48,   510,   511,
1198    512,    67,    68,    69,    70,    71,    72,    73,    74,    75,
1199     76,     0,     0,     0,     0,   396,     0,   397,   513,     0,
1200    514,     0,     0,     0,     0,     0,     0,     0,   398,     0,
1201    399,   400,   401,     0,   321,   402,     0,   443,     0,     0,
1202      0,     0,     0,     0,     0,     0,     0,     0,     0,   403,
1203    404,   405,   406,   407,   408,     0,     0,     0,     0,   283,
1204    120,     0,     0,     0,     0,   283,     0,     0,     0,     0,
1205    233,     0,     0,     0,   312,     0,     0,    47,    48,   127,
1206    294,   213,    67,    68,    69,    70,    71,    72,    73,    74,
1207     75,    76,     0,     0,     0,     0,   176,     0,   177,   295,
1208      0,     0,    91,    92,    93,     0,   233,     0,     0,   178,
1209      0,   179,   129,     0,     0,   283,     0,     0,   321,     0,
1210      0,     0,   443,     0,     0,     0,     0,     0,   249,     0,
1211    595,     0,   120,     0,     0,     0,     0,     0,     0,     0,
1212    443,     0,   283,     0,     0,     0,     0,   438,     0,     0,
1213      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1214      0,     0,     0,   236,     0,     0,     0,     0,     0,     0,
1215      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1216      0,     0,   443,    91,    92,    93,     0,     0,   283,     0,
1217      0,     0,     0,   129,    47,    48,   127,   294,   337,    67,
1218     68,    69,    70,    71,    72,    73,    74,    75,    76,     0,
1219      0,     0,     0,   221,     0,   223,   338,     0,     0,     0,
1220      0,     0,     0,     0,     0,     0,   224,     0,   225,     0,
1221      0,     0,     0,     0,     0,   283,     0,   443,    47,    48,
1222      0,     0,     0,    67,    68,    69,    70,    71,    72,    73,
1223     74,    75,    76,     0,     0,     0,     0,     0,   236,   591,
1224      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1225      0,     0,     0,   872,   873,     0,     0,   874,     0,     0,
1226    921,   922,   923,   924,   925,     0,     0,     0,     0,     0,
1227      0,     0,     0,   283,     0,   875,     0,     0,     0,     0,
1228     91,    92,    93,     0,     0,     0,     0,     0,     0,     0,
1229    129,     0,     0,     0,     0,     0,     0,     0,     0,   962,
1230      0,     0,     0,   876,   877,   878,   879,   880,     0,   595,
1231      0,   762,     0,   881,   882,   883,   884,   885,   886,   887,
1232    888,   889,     0,     0,    91,    92,    93,   283,     0,     0,
1233      0,     0,     0,     0,   233,   233,   283,     0,     0,     0,
1234      0,     0,     0,   283,     0,   283,     0,    65,    48,     0,
1235      0,    66,    67,    68,    69,    70,    71,    72,    73,    74,
1236     75,    76,     0,     0,     0,     0,    77,     0,    78,     0,
1237      0,     0,     0,     0,     0,     0,     0,     0,     0,    79,
1238      0,    80,     0,     0,     0,     0,     0,   283,    81,    82,
1239     83,    84,    85,   283,     0,     0,     0,     0,     0,     0,
1240      0,     0,     0,     0,     0,   283,     0,     0,     0,     0,
1241      0,     0,     0,     0,     0,     0,     0,     0,     0,   283,
1242      0,     0,     0,     0,     0,     0,    86,    87,    88,    89,
1243     90,     0,   283,   283,   283,   283,     0,     0,     0,     0,
1244      0,     0,     0,     0,     0,   233,     0,     0,     0,     0,
1245      0,     0,     0,    91,    92,    93,     0,     0,     0,     0,
1246      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1247      0,   894,     0,     0,     0,     0,     0,     0,     0,     0,
1248      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1249      0,     0,     0,     0,     0,   894,     0,     0,   914,     0,
1250    894,   894,     0,     0,     0,     0,     0,     0,   894,   894,
1251      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1252      0,     0,     0,     0,     0,     0,     0,    47,    48,     0,
1253      0,   395,    67,    68,    69,    70,    71,    72,    73,    74,
1254     75,    76,     0,     0,     0,     0,   396,   507,   397,   969,
1255      0,     0,     0,     0,     0,     0,     0,   894,     0,   398,
1256      0,   399,   400,   401,   894,   894,   402,     0,   894,   988,
1257      0,     0,     0,     0,     0,     0,     0,   894,     0,     0,
1258    403,   404,   405,   406,   407,   408,     0,     0,     0,     0,
1259      0,     0,     0,     0,     0,     0,     0,     0,   894,     0,
1260      0,     0,     0,     0,    47,    48,     0,   894,   395,    67,
1261     68,    69,    70,    71,    72,    73,    74,    75,    76,     0,
1262      0,     0,     0,   396,     0,   397,   707,     0,   894,     0,
1263      0,     0,     0,    91,    92,    93,   398,     0,   399,   400,
1264    401,     0,     0,   402,     0,     0,     0,     0,     0,     0,
1265      0,     0,     0,     0,   894,     0,   894,   403,   404,   405,
1266    406,   407,   408,     0,     0,     0,   894,     0,     0,     0,
1267      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1268      0,    47,    48,     0,   894,   395,    67,    68,    69,    70,
1269     71,    72,    73,    74,    75,    76,     0,     0,     0,     0,
1270    396,     0,   397,   894,   894,     0,     0,     0,     0,     0,
1271     91,    92,    93,   398,   894,   399,   400,   401,     0,     0,
1272    402,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1273      0,     0,     0,     0,   403,   404,   405,   406,   407,   408,
1274     47,    48,     0,     0,     0,    67,    68,    69,    70,    71,
1275     72,    73,    74,    75,    76,     0,     0,    47,    48,   396,
1276      0,   397,    67,    68,    69,    70,    71,    72,    73,    74,
1277     75,    76,   398,     0,   399,   400,   401,   999,   591,   402,
1278      0,     0,     0,     0,     0,     0,     0,    91,    92,    93,
1279      0,     0,     0,   403,   404,   405,   406,   407,   408,    65,
1280     48,     0,     0,    66,    67,    68,    69,    70,    71,    72,
1281     73,    74,    75,    76,     0,     0,    47,    48,    77,     0,
1282     78,    67,    68,    69,    70,    71,    72,    73,    74,    75,
1283     76,    79,     0,    80,     0,     0,     0,   591,     0,     0,
1284      0,     0,     0,     0,     0,     0,    91,    92,    93,     0,
1285      0,     0,     0,   882,   883,   884,   885,   886,   887,   888,
1286    889,     0,     0,    91,    92,    93,     0,     0,     0,     0,
1287      0,     0,     0,     0,     0,     0,     0,     0,    86,    87,
1288     88,    89,    90,     0,     0,     0,     0,     0,     0,     0,
1289      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1290      0,     0,     0,     0,     0,    91,    92,    93,     0,     0,
1291      0,     0,   882,   883,   884,   885,   886,   887,   888,   889,
1292      0,     0,    91,    92,    93,    65,    48,     0,     0,    66,
1293     67,    68,    69,    70,    71,    72,    73,    74,    75,    76,
1294      0,     0,     0,     0,    77,     0,    78,     0,     0,     0,
1295      0,     0,     0,     0,     0,     0,     0,    79,     0,    80,
1296     47,    48,     0,     0,   220,    67,    68,    69,    70,    71,
1297     72,    73,    74,    75,    76,     0,     0,     0,     0,   221,
1298    222,   223,     0,     0,     0,     0,     0,     0,     0,     0,
1299      0,     0,   224,     0,   225,     0,     0,     0,     0,     0,
1300      0,     0,     0,     0,   651,   652,   653,    47,    48,     0,
1301      0,   220,    67,    68,    69,    70,    71,    72,    73,    74,
1302     75,    76,     0,     0,     0,     0,   221,   292,   223,     0,
1303      0,    91,    92,    93,     0,     0,     0,     0,     0,   224,
1304      0,   225,    47,    48,     0,     0,   220,    67,    68,    69,
1305     70,    71,    72,    73,    74,    75,    76,     0,     0,     0,
1306      0,   221,   335,   223,     0,     0,    91,    92,    93,     0,
1307      0,     0,     0,     0,   224,     0,   225,    47,    48,     0,
1308      0,   290,    67,    68,    69,    70,    71,    72,    73,    74,
1309     75,    76,     0,     0,     0,     0,   176,     0,   177,     0,
1310      0,     0,     0,     0,     0,     0,     0,     0,     0,   178,
1311      0,   179,     0,    91,    92,    93,     0,     0,     0,    47,
1312     48,     0,     0,   220,    67,    68,    69,    70,    71,    72,
1313     73,    74,    75,    76,     0,     0,     0,     0,   221,     0,
1314    223,     0,     0,     0,     0,     0,     0,     0,    91,    92,
1315     93,   224,     0,   225,    47,    48,     0,     0,     0,    67,
1316     68,    69,    70,    71,    72,    73,    74,    75,    76,     0,
1317      0,     0,     0,   176,     0,   177,     0,     0,     0,     0,
1318      0,     0,     0,    91,    92,    93,   178,     0,   179,    47,
1319     48,     0,     0,     0,    67,    68,    69,    70,    71,    72,
1320     73,    74,    75,    76,     0,     0,     0,     0,   221,     0,
1321    223,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1322      0,   224,     0,   225,     0,    91,    92,    93,     0,     0,
1323      0,    47,    48,     0,     0,     0,    67,    68,    69,    70,
1324     71,    72,    73,    74,    75,    76,     0,     0,     0,     0,
1325    396,     0,   397,     0,     0,     0,     0,     0,     0,     0,
1326     91,    92,    93,   398,     0,   399,     0,     0,     0,     0,
1327      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1328      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1329      0,     0,     0,     0,     0,    91,    92,    93,     0,     0,
1330      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1331      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1332      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1333      0,     0,     0,     0,     0,     0,     0,    91,    92,    93
1334 };
1335
1336 static const short yycheck[] = {    29,
1337     11,    49,    37,    24,    37,    31,   404,   111,    43,    27,
1338     43,    22,   223,    86,    87,    88,   268,    90,   227,   503,
1339    189,   269,   191,   113,   284,   194,   251,   110,   459,    37,
1340    255,   283,   117,   112,    31,    43,   826,   106,   549,   135,
1341    209,   104,    11,   251,   251,     3,    29,   255,   255,    26,
1342    111,   251,   113,   117,   496,   255,   395,   724,   176,    31,
1343    558,   559,   135,   574,   575,   114,    24,   115,     4,   175,
1344    670,   177,    70,    94,   674,   742,   106,     3,     5,     6,
1345      7,   908,    26,    81,   114,   115,   116,   117,    54,    26,
1346     73,    29,   165,   920,   179,   185,    68,   581,   106,    25,
1347     27,   887,   888,   221,   134,   123,   114,   115,   116,   117,
1348     70,    69,    52,   555,   162,   179,     4,    77,    30,   140,
1349     89,     3,    58,     5,     6,     7,   144,    65,    70,   177,
1350    339,   142,     5,     6,     7,   304,   171,   397,   171,   917,
1351    225,   210,   932,    87,   229,   175,   176,   177,   217,   179,
1352     87,   582,   215,   238,    27,   251,    68,   943,   944,   255,
1353     33,   225,   139,   171,   213,   229,   143,   175,   176,   177,
1354    956,   179,   839,   512,   238,   223,   118,     4,   251,  1006,
1355    210,    36,   255,   213,   668,    31,   438,   217,   397,    25,
1356     26,   221,   119,   223,    36,   225,   448,    24,     5,   229,
1357      7,   264,   210,   803,   308,   213,    26,   237,   238,   217,
1358    988,   329,    36,   221,   299,   223,    70,   225,  1045,  1046,
1359    303,   229,    68,   302,   330,   343,   435,   257,   291,    67,
1360    238,   310,   480,   296,   324,   299,   734,   119,   749,   206,
1361     30,   290,    23,   173,    24,    26,   119,  1033,   473,    69,
1362   1028,  1029,  1030,  1031,     5,     6,     7,   517,   327,  1045,
1363    290,   365,   347,   117,   119,   473,   473,   197,   198,   299,
1364     29,   755,   756,   473,   534,    55,   366,   119,    68,   106,
1365    363,   364,   290,   347,    53,   950,    26,     5,     6,     7,
1366    955,   299,    18,    31,   285,   119,   322,   327,     4,   329,
1367    330,   268,   363,     3,   365,   366,    65,    25,    26,    27,
1368     24,   429,   119,   343,     1,   345,   283,   347,    24,   327,
1369    862,   329,   330,     3,    24,   322,    31,   758,   458,    69,
1370     68,     3,    21,    20,   355,   343,    41,   345,   368,   347,
1371    270,     3,     4,   433,    24,   375,   409,   465,   278,   397,
1372     18,   369,   319,    62,   614,    64,    28,   899,     4,   422,
1373   1025,    24,   846,    25,    44,    45,    46,    47,   119,    32,
1374      5,     6,     7,    21,     3,   401,   306,   473,    24,   309,
1375    310,   550,   551,    24,   636,   869,    41,    28,   318,   368,
1376     25,   487,    27,   523,   524,    24,   375,   423,   461,   429,
1377    473,   119,    70,    71,   401,   396,   397,    75,   538,   539,
1378      3,   402,     4,   380,   487,    29,    45,   408,    47,   903,
1379      6,   429,   495,   449,   457,   458,   423,   394,   676,    26,
1380     22,    24,    24,    29,   425,   465,    33,   522,   147,    36,
1381    470,    27,    23,     3,     4,    26,   155,     4,   157,   457,
1382    458,    65,   449,   516,    68,     3,   486,   465,    18,   489,
1383    390,     8,    22,   393,    24,    25,   545,   546,    25,    65,
1384    549,   438,    68,     8,   399,   579,    24,   646,     5,     6,
1385      7,   448,  1020,    70,   119,   558,   559,   412,    19,    76,
1386    523,   524,   522,   583,   577,   574,   575,     8,    25,    26,
1387     27,    26,   713,   714,   434,   538,   539,    32,     3,     4,
1388     53,  1049,  1050,  1051,   522,   523,   524,     6,    49,    50,
1389     51,   451,    41,    18,   454,   558,   559,    22,    23,    24,
1390    538,   539,   617,    93,    94,   639,    25,    26,    27,     3,
1391      4,   532,   563,   591,    78,   475,    70,   565,     3,     4,
1392    558,   559,   615,   951,   952,    79,    80,   726,   727,   728,
1393     24,    25,     8,   493,     6,   628,   496,     4,   498,    24,
1394    779,     4,     3,     4,     8,     3,     4,    26,   651,   652,
1395    653,   548,    31,   874,    26,    27,   949,   617,   879,   880,
1396    557,    24,   119,    24,   620,   958,    24,   618,    93,    94,
1397      4,   619,   965,   528,   529,   530,   531,   537,    24,   617,
1398    631,   536,    28,   824,   632,    26,   607,    28,    22,    11,
1399     24,    23,   613,   620,    26,   555,   556,   662,    23,   662,
1400     19,    26,    21,   654,     3,     4,   627,    33,    26,    23,
1401    658,    29,    26,    21,    32,   936,  1009,    70,   578,    18,
1402     73,    25,  1015,    22,   662,    24,   947,    21,   688,   689,
1403    733,   734,   831,    23,  1027,    26,    26,     3,     4,   636,
1404    749,    99,   100,   101,   102,   103,   104,   105,   106,    19,
1405    784,    21,     4,   713,   714,    19,   977,    21,    24,     3,
1406      4,  1054,  1055,  1056,  1057,   986,   621,     4,   623,   624,
1407    625,   734,    70,    71,    33,   713,   714,    75,     3,     4,
1408    701,     6,     4,     3,     4,    19,  1007,    21,    87,    29,
1409     30,     3,     4,    18,     6,    94,   734,    22,    18,    24,
1410     25,   661,    22,    87,    24,    25,    18,   667,     8,     9,
1411     22,   814,    24,   754,  1035,    27,   112,   113,   114,   115,
1412    116,     8,    19,   720,    21,    87,   777,     3,     4,    25,
1413     26,    97,   780,    99,   100,   101,   102,   103,   104,   105,
1414    106,    19,  1063,    21,    19,   766,    21,   807,    24,    25,
1415     19,   772,    21,   774,   775,   776,    32,   717,     3,     4,
1416    781,  1082,  1083,    36,   824,    49,    50,    51,    93,    94,
1417     25,    26,  1093,    93,    94,    25,    26,    29,    31,    24,
1418     25,    30,    94,     3,   744,    37,   824,    32,    25,    26,
1419    850,    43,     8,     9,    10,    11,    12,    13,    14,    15,
1420     16,    17,    56,    57,    58,    59,    30,   867,    24,    31,
1421      3,     4,   850,     6,   874,   529,   530,   531,    18,   879,
1422    880,    25,    26,     3,     4,    18,    28,   887,   888,    22,
1423    790,    24,     3,     4,    27,   856,   874,    89,   859,    25,
1424     26,   879,   880,    25,    26,     3,     4,    18,   889,    25,
1425     26,    22,    31,    24,    28,    25,    26,   109,   110,   111,
1426    112,   113,   922,   923,    25,   925,    25,    26,   928,    25,
1427     26,    25,   913,    25,    26,    23,   936,   837,     6,   900,
1428     25,    97,   134,   943,   944,    25,    26,   947,    25,    26,
1429     25,    26,    36,   109,   110,   111,   956,    26,   936,    70,
1430     25,    94,   107,   108,    28,    29,    95,    96,   160,   947,
1431      3,     4,  1074,  1075,    24,   953,   954,   977,   956,   171,
1432     24,   173,    93,    94,    27,    18,   986,    27,    64,    22,
1433     87,    24,    87,   185,    94,   895,    28,    23,    25,   977,
1434     41,   193,    30,    41,     4,   197,   198,  1007,   986,    31,
1435     23,     8,    23,     4,   206,     3,     4,    26,     8,     9,
1436     10,    11,    12,    13,    14,    15,    16,    17,    33,  1007,
1437     18,    24,    21,  1033,    22,  1035,    24,    70,    24,    87,
1438     28,    17,    17,     3,     4,  1045,  1064,    30,    11,    36,
1439      8,     3,     4,    30,    23,  1033,    26,  1035,    18,    41,
1440     93,    94,    22,  1063,    24,   257,    18,    28,  1046,    25,
1441     22,    25,    24,    25,     8,    30,   268,   269,   270,     3,
1442      4,    31,  1082,  1083,    31,  1063,   278,    31,     3,     4,
1443     94,   283,     8,  1093,    18,    68,    23,    25,    22,    25,
1444     24,    43,    25,    18,  1082,  1083,    94,    22,    29,    24,
1445    302,   303,    25,    25,   306,  1093,   308,   309,   310,   109,
1446    110,   111,    62,    19,    21,    25,   318,   319,    64,     3,
1447      4,    25,   324,    93,    94,    68,    25,    25,    69,     8,
1448      3,     4,    94,    27,    18,    31,    66,    66,    22,    73,
1449     24,    23,    25,    36,    21,    18,    22,   106,    19,    22,
1450     28,    24,    69,    68,    74,   114,   115,   116,   117,    68,
1451     94,   363,   364,   365,   366,    23,   368,    26,    25,    94,
1452     40,    40,    28,   375,    63,    26,   135,    68,   380,    33,
1453     72,    69,    69,    21,    25,    87,    87,    18,   390,    69,
1454     26,   393,   394,     3,     4,     5,     6,     7,     8,     9,
1455     10,    11,    12,    13,    14,    15,    16,    17,    23,    34,
1456     94,    30,    22,     8,    24,    25,   175,   176,   177,    22,
1457    179,    94,    28,    19,     8,    35,    18,    37,    18,     3,
1458     18,   433,   434,    26,     4,    24,   438,    22,    43,    22,
1459    442,    18,    24,    22,    19,     8,   448,     3,    19,   451,
1460     30,   210,   454,    18,   213,   457,   458,    11,   217,    11,
1461     24,    30,   221,     8,   223,    33,   225,    11,    11,    11,
1462    229,    11,    18,   475,    40,    25,    11,    18,   480,   238,
1463     18,    18,    11,    19,   486,    19,    19,    11,     0,    40,
1464    137,   493,    19,    25,   496,    25,   498,    28,    19,   109,
1465    110,   111,    28,    19,    19,    25,    25,    25,    25,   119,
1466     21,    21,     0,   134,   673,   486,   801,   682,   499,   753,
1467    740,   523,   524,  1014,   930,   895,   867,   837,  1006,  1046,
1468   1068,   290,  1033,  1041,    18,   537,   538,   539,    18,    41,
1469    299,   683,    43,   545,   546,   547,   548,   549,    57,   551,
1470    688,    57,   252,   555,   556,   557,   558,   559,   171,   121,
1471    552,   732,   790,   112,   546,   493,   559,   734,   327,   255,
1472    329,   330,   574,   575,   473,   577,   578,   579,   540,   617,
1473    772,   583,   769,   396,   343,   714,   345,   487,   347,   932,
1474    767,   824,   345,   397,   646,   354,     3,     4,     5,     6,
1475      7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
1476     17,    -1,    -1,    -1,    -1,    22,    -1,    24,    25,    -1,
1477     27,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    35,    -1,
1478     37,    38,    39,    -1,   636,    42,    -1,   639,    -1,    -1,
1479     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    56,
1480     57,    58,    59,    60,    61,    -1,    -1,    -1,    -1,   661,
1481    662,    -1,    -1,    -1,    -1,   667,    -1,    -1,    -1,    -1,
1482    429,    -1,    -1,    -1,   676,    -1,    -1,     3,     4,     5,
1483      6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
1484     16,    17,    -1,    -1,    -1,    -1,    22,    -1,    24,    25,
1485     -1,    -1,   109,   110,   111,    -1,   465,    -1,    -1,    35,
1486     -1,    37,   119,    -1,    -1,   717,    -1,    -1,   720,    -1,
1487     -1,    -1,   724,    -1,    -1,    -1,    -1,    -1,   487,    -1,
1488    489,    -1,   734,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1489    742,    -1,   744,    -1,    -1,    -1,    -1,   749,    -1,    -1,
1490     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1491     -1,    -1,    -1,   522,    -1,    -1,    -1,    -1,    -1,    -1,
1492     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1493     -1,    -1,   784,   109,   110,   111,    -1,    -1,   790,    -1,
1494     -1,    -1,    -1,   119,     3,     4,     5,     6,     7,     8,
1495      9,    10,    11,    12,    13,    14,    15,    16,    17,    -1,
1496     -1,    -1,    -1,    22,    -1,    24,    25,    -1,    -1,    -1,
1497     -1,    -1,    -1,    -1,    -1,    -1,    35,    -1,    37,    -1,
1498     -1,    -1,    -1,    -1,    -1,   837,    -1,   839,     3,     4,
1499     -1,    -1,    -1,     8,     9,    10,    11,    12,    13,    14,
1500     15,    16,    17,    -1,    -1,    -1,    -1,    -1,   617,    24,
1501     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1502     -1,    -1,    -1,    38,    39,    -1,    -1,    42,    -1,    -1,
1503    882,   883,   884,   885,   886,    -1,    -1,    -1,    -1,    -1,
1504     -1,    -1,    -1,   895,    -1,    60,    -1,    -1,    -1,    -1,
1505    109,   110,   111,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1506    119,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   921,
1507     -1,    -1,    -1,    88,    89,    90,    91,    92,    -1,   688,
1508     -1,   690,    -1,    98,    99,   100,   101,   102,   103,   104,
1509    105,   106,    -1,    -1,   109,   110,   111,   949,    -1,    -1,
1510     -1,    -1,    -1,    -1,   713,   714,   958,    -1,    -1,    -1,
1511     -1,    -1,    -1,   965,    -1,   967,    -1,     3,     4,    -1,
1512     -1,     7,     8,     9,    10,    11,    12,    13,    14,    15,
1513     16,    17,    -1,    -1,    -1,    -1,    22,    -1,    24,    -1,
1514     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    35,
1515     -1,    37,    -1,    -1,    -1,    -1,    -1,  1009,    44,    45,
1516     46,    47,    48,  1015,    -1,    -1,    -1,    -1,    -1,    -1,
1517     -1,    -1,    -1,    -1,    -1,  1027,    -1,    -1,    -1,    -1,
1518     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1041,
1519     -1,    -1,    -1,    -1,    -1,    -1,    82,    83,    84,    85,
1520     86,    -1,  1054,  1055,  1056,  1057,    -1,    -1,    -1,    -1,
1521     -1,    -1,    -1,    -1,    -1,   824,    -1,    -1,    -1,    -1,
1522     -1,    -1,    -1,   109,   110,   111,    -1,    -1,    -1,    -1,
1523     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1524     -1,   850,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1525     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1526     -1,    -1,    -1,    -1,    -1,   874,    -1,    -1,   877,    -1,
1527    879,   880,    -1,    -1,    -1,    -1,    -1,    -1,   887,   888,
1528     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1529     -1,    -1,    -1,    -1,    -1,    -1,    -1,     3,     4,    -1,
1530     -1,     7,     8,     9,    10,    11,    12,    13,    14,    15,
1531     16,    17,    -1,    -1,    -1,    -1,    22,    23,    24,   928,
1532     -1,    -1,    -1,    -1,    -1,    -1,    -1,   936,    -1,    35,
1533     -1,    37,    38,    39,   943,   944,    42,    -1,   947,   948,
1534     -1,    -1,    -1,    -1,    -1,    -1,    -1,   956,    -1,    -1,
1535     56,    57,    58,    59,    60,    61,    -1,    -1,    -1,    -1,
1536     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   977,    -1,
1537     -1,    -1,    -1,    -1,     3,     4,    -1,   986,     7,     8,
1538      9,    10,    11,    12,    13,    14,    15,    16,    17,    -1,
1539     -1,    -1,    -1,    22,    -1,    24,    25,    -1,  1007,    -1,
1540     -1,    -1,    -1,   109,   110,   111,    35,    -1,    37,    38,
1541     39,    -1,    -1,    42,    -1,    -1,    -1,    -1,    -1,    -1,
1542     -1,    -1,    -1,    -1,  1033,    -1,  1035,    56,    57,    58,
1543     59,    60,    61,    -1,    -1,    -1,  1045,    -1,    -1,    -1,
1544     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1545     -1,     3,     4,    -1,  1063,     7,     8,     9,    10,    11,
1546     12,    13,    14,    15,    16,    17,    -1,    -1,    -1,    -1,
1547     22,    -1,    24,  1082,  1083,    -1,    -1,    -1,    -1,    -1,
1548    109,   110,   111,    35,  1093,    37,    38,    39,    -1,    -1,
1549     42,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1550     -1,    -1,    -1,    -1,    56,    57,    58,    59,    60,    61,
1551      3,     4,    -1,    -1,    -1,     8,     9,    10,    11,    12,
1552     13,    14,    15,    16,    17,    -1,    -1,     3,     4,    22,
1553     -1,    24,     8,     9,    10,    11,    12,    13,    14,    15,
1554     16,    17,    35,    -1,    37,    38,    39,    23,    24,    42,
1555     -1,    -1,    -1,    -1,    -1,    -1,    -1,   109,   110,   111,
1556     -1,    -1,    -1,    56,    57,    58,    59,    60,    61,     3,
1557      4,    -1,    -1,     7,     8,     9,    10,    11,    12,    13,
1558     14,    15,    16,    17,    -1,    -1,     3,     4,    22,    -1,
1559     24,     8,     9,    10,    11,    12,    13,    14,    15,    16,
1560     17,    35,    -1,    37,    -1,    -1,    -1,    24,    -1,    -1,
1561     -1,    -1,    -1,    -1,    -1,    -1,   109,   110,   111,    -1,
1562     -1,    -1,    -1,    99,   100,   101,   102,   103,   104,   105,
1563    106,    -1,    -1,   109,   110,   111,    -1,    -1,    -1,    -1,
1564     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    82,    83,
1565     84,    85,    86,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1566     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1567     -1,    -1,    -1,    -1,    -1,   109,   110,   111,    -1,    -1,
1568     -1,    -1,    99,   100,   101,   102,   103,   104,   105,   106,
1569     -1,    -1,   109,   110,   111,     3,     4,    -1,    -1,     7,
1570      8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
1571     -1,    -1,    -1,    -1,    22,    -1,    24,    -1,    -1,    -1,
1572     -1,    -1,    -1,    -1,    -1,    -1,    -1,    35,    -1,    37,
1573      3,     4,    -1,    -1,     7,     8,     9,    10,    11,    12,
1574     13,    14,    15,    16,    17,    -1,    -1,    -1,    -1,    22,
1575     23,    24,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1576     -1,    -1,    35,    -1,    37,    -1,    -1,    -1,    -1,    -1,
1577     -1,    -1,    -1,    -1,    82,    83,    84,     3,     4,    -1,
1578     -1,     7,     8,     9,    10,    11,    12,    13,    14,    15,
1579     16,    17,    -1,    -1,    -1,    -1,    22,    23,    24,    -1,
1580     -1,   109,   110,   111,    -1,    -1,    -1,    -1,    -1,    35,
1581     -1,    37,     3,     4,    -1,    -1,     7,     8,     9,    10,
1582     11,    12,    13,    14,    15,    16,    17,    -1,    -1,    -1,
1583     -1,    22,    23,    24,    -1,    -1,   109,   110,   111,    -1,
1584     -1,    -1,    -1,    -1,    35,    -1,    37,     3,     4,    -1,
1585     -1,     7,     8,     9,    10,    11,    12,    13,    14,    15,
1586     16,    17,    -1,    -1,    -1,    -1,    22,    -1,    24,    -1,
1587     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    35,
1588     -1,    37,    -1,   109,   110,   111,    -1,    -1,    -1,     3,
1589      4,    -1,    -1,     7,     8,     9,    10,    11,    12,    13,
1590     14,    15,    16,    17,    -1,    -1,    -1,    -1,    22,    -1,
1591     24,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   109,   110,
1592    111,    35,    -1,    37,     3,     4,    -1,    -1,    -1,     8,
1593      9,    10,    11,    12,    13,    14,    15,    16,    17,    -1,
1594     -1,    -1,    -1,    22,    -1,    24,    -1,    -1,    -1,    -1,
1595     -1,    -1,    -1,   109,   110,   111,    35,    -1,    37,     3,
1596      4,    -1,    -1,    -1,     8,     9,    10,    11,    12,    13,
1597     14,    15,    16,    17,    -1,    -1,    -1,    -1,    22,    -1,
1598     24,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1599     -1,    35,    -1,    37,    -1,   109,   110,   111,    -1,    -1,
1600     -1,     3,     4,    -1,    -1,    -1,     8,     9,    10,    11,
1601     12,    13,    14,    15,    16,    17,    -1,    -1,    -1,    -1,
1602     22,    -1,    24,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1603    109,   110,   111,    35,    -1,    37,    -1,    -1,    -1,    -1,
1604     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1605     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1606     -1,    -1,    -1,    -1,    -1,   109,   110,   111,    -1,    -1,
1607     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1608     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1609     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1610     -1,    -1,    -1,    -1,    -1,    -1,    -1,   109,   110,   111
1611 };
1612 /* -*-C-*-  Note some compilers choke on comments on `#line' lines.  */
1613 #line 3 "/usr/local/gnu/share/bison.simple"
1614
1615 /* Skeleton output parser for bison,
1616    Copyright (C) 1984, 1989, 1990 Free Software Foundation, Inc.
1617
1618    This program is free software; you can redistribute it and/or modify
1619    it under the terms of the GNU General Public License as published by
1620    the Free Software Foundation; either version 2, or (at your option)
1621    any later version.
1622
1623    This program is distributed in the hope that it will be useful,
1624    but WITHOUT ANY WARRANTY; without even the implied warranty of
1625    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
1626    GNU General Public License for more details.
1627
1628    You should have received a copy of the GNU General Public License
1629    along with this program; if not, write to the Free Software
1630    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.  */
1631
1632 /* As a special exception, when this file is copied by Bison into a
1633    Bison output file, you may use that output file without restriction.
1634    This special exception was added by the Free Software Foundation
1635    in version 1.24 of Bison.  */
1636
1637 #ifndef alloca
1638 #ifdef __GNUC__
1639 #define alloca __builtin_alloca
1640 #else /* not GNU C.  */
1641 #if (!defined (__STDC__) && defined (sparc)) || defined (__sparc__) || defined (__sparc) || defined (__sgi)
1642 #include <alloca.h>
1643 #else /* not sparc */
1644 #if defined (MSDOS) && !defined (__TURBOC__)
1645 #include <malloc.h>
1646 #else /* not MSDOS, or __TURBOC__ */
1647 #if defined(_AIX)
1648 #include <malloc.h>
1649  #pragma alloca
1650 #else /* not MSDOS, __TURBOC__, or _AIX */
1651 #ifdef __hpux
1652 #ifdef __cplusplus
1653 extern "C" {
1654 void *alloca (unsigned int);
1655 };
1656 #else /* not __cplusplus */
1657 void *alloca ();
1658 #endif /* not __cplusplus */
1659 #endif /* __hpux */
1660 #endif /* not _AIX */
1661 #endif /* not MSDOS, or __TURBOC__ */
1662 #endif /* not sparc.  */
1663 #endif /* not GNU C.  */
1664 #endif /* alloca not defined.  */
1665
1666 /* This is the parser code that is written into each bison parser
1667   when the %semantic_parser declaration is not specified in the grammar.
1668   It was written by Richard Stallman by simplifying the hairy parser
1669   used when %semantic_parser is specified.  */
1670
1671 /* Note: there must be only one dollar sign in this file.
1672    It is replaced by the list of actions, each action
1673    as one case of the switch.  */
1674
1675 #define yyerrok         (yyerrstatus = 0)
1676 #define yyclearin       (yychar = YYEMPTY)
1677 #define YYEMPTY         -2
1678 #define YYEOF           0
1679 #define YYACCEPT        return(0)
1680 #define YYABORT         return(1)
1681 #define YYERROR         goto yyerrlab1
1682 /* Like YYERROR except do call yyerror.
1683    This remains here temporarily to ease the
1684    transition to the new meaning of YYERROR, for GCC.
1685    Once GCC version 2 has supplanted version 1, this can go.  */
1686 #define YYFAIL          goto yyerrlab
1687 #define YYRECOVERING()  (!!yyerrstatus)
1688 #define YYBACKUP(token, value) \
1689 do                                                              \
1690   if (yychar == YYEMPTY && yylen == 1)                          \
1691     { yychar = (token), yylval = (value);                       \
1692       yychar1 = YYTRANSLATE (yychar);                           \
1693       YYPOPSTACK;                                               \
1694       goto yybackup;                                            \
1695     }                                                           \
1696   else                                                          \
1697     { yyerror ("syntax error: cannot back up"); YYERROR; }      \
1698 while (0)
1699
1700 #define YYTERROR        1
1701 #define YYERRCODE       256
1702
1703 #ifndef YYPURE
1704 #define YYLEX           yylex()
1705 #endif
1706
1707 #ifdef YYPURE
1708 #ifdef YYLSP_NEEDED
1709 #ifdef YYLEX_PARAM
1710 #define YYLEX           yylex(&yylval, &yylloc, YYLEX_PARAM)
1711 #else
1712 #define YYLEX           yylex(&yylval, &yylloc)
1713 #endif
1714 #else /* not YYLSP_NEEDED */
1715 #ifdef YYLEX_PARAM
1716 #define YYLEX           yylex(&yylval, YYLEX_PARAM)
1717 #else
1718 #define YYLEX           yylex(&yylval)
1719 #endif
1720 #endif /* not YYLSP_NEEDED */
1721 #endif
1722
1723 /* If nonreentrant, generate the variables here */
1724
1725 #ifndef YYPURE
1726
1727 int     yychar;                 /*  the lookahead symbol                */
1728 YYSTYPE yylval;                 /*  the semantic value of the           */
1729                                 /*  lookahead symbol                    */
1730
1731 #ifdef YYLSP_NEEDED
1732 YYLTYPE yylloc;                 /*  location data for the lookahead     */
1733                                 /*  symbol                              */
1734 #endif
1735
1736 int yynerrs;                    /*  number of parse errors so far       */
1737 #endif  /* not YYPURE */
1738
1739 #if YYDEBUG != 0
1740 int yydebug;                    /*  nonzero means print parse trace     */
1741 /* Since this is uninitialized, it does not stop multiple parsers
1742    from coexisting.  */
1743 #endif
1744
1745 /*  YYINITDEPTH indicates the initial size of the parser's stacks       */
1746
1747 #ifndef YYINITDEPTH
1748 #define YYINITDEPTH 200
1749 #endif
1750
1751 /*  YYMAXDEPTH is the maximum size the stacks can grow to
1752     (effective only if the built-in stack extension method is used).  */
1753
1754 #if YYMAXDEPTH == 0
1755 #undef YYMAXDEPTH
1756 #endif
1757
1758 #ifndef YYMAXDEPTH
1759 #define YYMAXDEPTH 10000
1760 #endif
1761
1762 /* Prevent warning if -Wstrict-prototypes.  */
1763 #ifdef __GNUC__
1764 int yyparse (void);
1765 #endif
1766 \f
1767 #if __GNUC__ > 1                /* GNU C and GNU C++ define this.  */
1768 #define __yy_memcpy(FROM,TO,COUNT)      __builtin_memcpy(TO,FROM,COUNT)
1769 #else                           /* not GNU C or C++ */
1770 #ifndef __cplusplus
1771
1772 /* This is the most reliable way to avoid incompatibilities
1773    in available built-in functions on various systems.  */
1774 static void
1775 __yy_memcpy (from, to, count)
1776      char *from;
1777      char *to;
1778      int count;
1779 {
1780   register char *f = from;
1781   register char *t = to;
1782   register int i = count;
1783
1784   while (i-- > 0)
1785     *t++ = *f++;
1786 }
1787
1788 #else /* __cplusplus */
1789
1790 /* This is the most reliable way to avoid incompatibilities
1791    in available built-in functions on various systems.  */
1792 static void
1793 __yy_memcpy (char *from, char *to, int count)
1794 {
1795   register char *f = from;
1796   register char *t = to;
1797   register int i = count;
1798
1799   while (i-- > 0)
1800     *t++ = *f++;
1801 }
1802
1803 #endif
1804 #endif
1805 \f
1806 #line 192 "/usr/local/gnu/share/bison.simple"
1807
1808 /* The user can define YYPARSE_PARAM as the name of an argument to be passed
1809    into yyparse.  The argument should have type void *.
1810    It should actually point to an object.
1811    Grammar actions can access the variable by casting it
1812    to the proper pointer type.  */
1813
1814 #ifdef YYPARSE_PARAM
1815 #define YYPARSE_PARAM_DECL void *YYPARSE_PARAM;
1816 #else
1817 #define YYPARSE_PARAM
1818 #define YYPARSE_PARAM_DECL
1819 #endif
1820
1821 int
1822 yyparse(YYPARSE_PARAM)
1823      YYPARSE_PARAM_DECL
1824 {
1825   register int yystate;
1826   register int yyn;
1827   register short *yyssp;
1828   register YYSTYPE *yyvsp;
1829   int yyerrstatus;      /*  number of tokens to shift before error messages enabled */
1830   int yychar1 = 0;              /*  lookahead token as an internal (translated) token number */
1831
1832   short yyssa[YYINITDEPTH];     /*  the state stack                     */
1833   YYSTYPE yyvsa[YYINITDEPTH];   /*  the semantic value stack            */
1834
1835   short *yyss = yyssa;          /*  refer to the stacks thru separate pointers */
1836   YYSTYPE *yyvs = yyvsa;        /*  to allow yyoverflow to reallocate them elsewhere */
1837
1838 #ifdef YYLSP_NEEDED
1839   YYLTYPE yylsa[YYINITDEPTH];   /*  the location stack                  */
1840   YYLTYPE *yyls = yylsa;
1841   YYLTYPE *yylsp;
1842
1843 #define YYPOPSTACK   (yyvsp--, yyssp--, yylsp--)
1844 #else
1845 #define YYPOPSTACK   (yyvsp--, yyssp--)
1846 #endif
1847
1848   int yystacksize = YYINITDEPTH;
1849
1850 #ifdef YYPURE
1851   int yychar;
1852   YYSTYPE yylval;
1853   int yynerrs;
1854 #ifdef YYLSP_NEEDED
1855   YYLTYPE yylloc;
1856 #endif
1857 #endif
1858
1859   YYSTYPE yyval;                /*  the variable used to return         */
1860                                 /*  semantic values from the action     */
1861                                 /*  routines                            */
1862
1863   int yylen;
1864
1865 #if YYDEBUG != 0
1866   if (yydebug)
1867     fprintf(stderr, "Starting parse\n");
1868 #endif
1869
1870   yystate = 0;
1871   yyerrstatus = 0;
1872   yynerrs = 0;
1873   yychar = YYEMPTY;             /* Cause a token to be read.  */
1874
1875   /* Initialize stack pointers.
1876      Waste one element of value and location stack
1877      so that they stay on the same level as the state stack.
1878      The wasted elements are never initialized.  */
1879
1880   yyssp = yyss - 1;
1881   yyvsp = yyvs;
1882 #ifdef YYLSP_NEEDED
1883   yylsp = yyls;
1884 #endif
1885
1886 /* Push a new state, which is found in  yystate  .  */
1887 /* In all cases, when you get here, the value and location stacks
1888    have just been pushed. so pushing a state here evens the stacks.  */
1889 yynewstate:
1890
1891   *++yyssp = yystate;
1892
1893   if (yyssp >= yyss + yystacksize - 1)
1894     {
1895       /* Give user a chance to reallocate the stack */
1896       /* Use copies of these so that the &'s don't force the real ones into memory. */
1897       YYSTYPE *yyvs1 = yyvs;
1898       short *yyss1 = yyss;
1899 #ifdef YYLSP_NEEDED
1900       YYLTYPE *yyls1 = yyls;
1901 #endif
1902
1903       /* Get the current used size of the three stacks, in elements.  */
1904       int size = yyssp - yyss + 1;
1905
1906 #ifdef yyoverflow
1907       /* Each stack pointer address is followed by the size of
1908          the data in use in that stack, in bytes.  */
1909 #ifdef YYLSP_NEEDED
1910       /* This used to be a conditional around just the two extra args,
1911          but that might be undefined if yyoverflow is a macro.  */
1912       yyoverflow("parser stack overflow",
1913                  &yyss1, size * sizeof (*yyssp),
1914                  &yyvs1, size * sizeof (*yyvsp),
1915                  &yyls1, size * sizeof (*yylsp),
1916                  &yystacksize);
1917 #else
1918       yyoverflow("parser stack overflow",
1919                  &yyss1, size * sizeof (*yyssp),
1920                  &yyvs1, size * sizeof (*yyvsp),
1921                  &yystacksize);
1922 #endif
1923
1924       yyss = yyss1; yyvs = yyvs1;
1925 #ifdef YYLSP_NEEDED
1926       yyls = yyls1;
1927 #endif
1928 #else /* no yyoverflow */
1929       /* Extend the stack our own way.  */
1930       if (yystacksize >= YYMAXDEPTH)
1931         {
1932           yyerror("parser stack overflow");
1933           return 2;
1934         }
1935       yystacksize *= 2;
1936       if (yystacksize > YYMAXDEPTH)
1937         yystacksize = YYMAXDEPTH;
1938       yyss = (short *) alloca (yystacksize * sizeof (*yyssp));
1939       __yy_memcpy ((char *)yyss1, (char *)yyss, size * sizeof (*yyssp));
1940       yyvs = (YYSTYPE *) alloca (yystacksize * sizeof (*yyvsp));
1941       __yy_memcpy ((char *)yyvs1, (char *)yyvs, size * sizeof (*yyvsp));
1942 #ifdef YYLSP_NEEDED
1943       yyls = (YYLTYPE *) alloca (yystacksize * sizeof (*yylsp));
1944       __yy_memcpy ((char *)yyls1, (char *)yyls, size * sizeof (*yylsp));
1945 #endif
1946 #endif /* no yyoverflow */
1947
1948       yyssp = yyss + size - 1;
1949       yyvsp = yyvs + size - 1;
1950 #ifdef YYLSP_NEEDED
1951       yylsp = yyls + size - 1;
1952 #endif
1953
1954 #if YYDEBUG != 0
1955       if (yydebug)
1956         fprintf(stderr, "Stack size increased to %d\n", yystacksize);
1957 #endif
1958
1959       if (yyssp >= yyss + yystacksize - 1)
1960         YYABORT;
1961     }
1962
1963 #if YYDEBUG != 0
1964   if (yydebug)
1965     fprintf(stderr, "Entering state %d\n", yystate);
1966 #endif
1967
1968   goto yybackup;
1969  yybackup:
1970
1971 /* Do appropriate processing given the current state.  */
1972 /* Read a lookahead token if we need one and don't already have one.  */
1973 /* yyresume: */
1974
1975   /* First try to decide what to do without reference to lookahead token.  */
1976
1977   yyn = yypact[yystate];
1978   if (yyn == YYFLAG)
1979     goto yydefault;
1980
1981   /* Not known => get a lookahead token if don't already have one.  */
1982
1983   /* yychar is either YYEMPTY or YYEOF
1984      or a valid token in external form.  */
1985
1986   if (yychar == YYEMPTY)
1987     {
1988 #if YYDEBUG != 0
1989       if (yydebug)
1990         fprintf(stderr, "Reading a token: ");
1991 #endif
1992       yychar = YYLEX;
1993     }
1994
1995   /* Convert token to internal form (in yychar1) for indexing tables with */
1996
1997   if (yychar <= 0)              /* This means end of input. */
1998     {
1999       yychar1 = 0;
2000       yychar = YYEOF;           /* Don't call YYLEX any more */
2001
2002 #if YYDEBUG != 0
2003       if (yydebug)
2004         fprintf(stderr, "Now at end of input.\n");
2005 #endif
2006     }
2007   else
2008     {
2009       yychar1 = YYTRANSLATE(yychar);
2010
2011 #if YYDEBUG != 0
2012       if (yydebug)
2013         {
2014           fprintf (stderr, "Next token is %d (%s", yychar, yytname[yychar1]);
2015           /* Give the individual parser a way to print the precise meaning
2016              of a token, for further debugging info.  */
2017 #ifdef YYPRINT
2018           YYPRINT (stderr, yychar, yylval);
2019 #endif
2020           fprintf (stderr, ")\n");
2021         }
2022 #endif
2023     }
2024
2025   yyn += yychar1;
2026   if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != yychar1)
2027     goto yydefault;
2028
2029   yyn = yytable[yyn];
2030
2031   /* yyn is what to do for this token type in this state.
2032      Negative => reduce, -yyn is rule number.
2033      Positive => shift, yyn is new state.
2034        New state is final state => don't bother to shift,
2035        just return success.
2036      0, or most negative number => error.  */
2037
2038   if (yyn < 0)
2039     {
2040       if (yyn == YYFLAG)
2041         goto yyerrlab;
2042       yyn = -yyn;
2043       goto yyreduce;
2044     }
2045   else if (yyn == 0)
2046     goto yyerrlab;
2047
2048   if (yyn == YYFINAL)
2049     YYACCEPT;
2050
2051   /* Shift the lookahead token.  */
2052
2053 #if YYDEBUG != 0
2054   if (yydebug)
2055     fprintf(stderr, "Shifting token %d (%s), ", yychar, yytname[yychar1]);
2056 #endif
2057
2058   /* Discard the token being shifted unless it is eof.  */
2059   if (yychar != YYEOF)
2060     yychar = YYEMPTY;
2061
2062   *++yyvsp = yylval;
2063 #ifdef YYLSP_NEEDED
2064   *++yylsp = yylloc;
2065 #endif
2066
2067   /* count tokens shifted since error; after three, turn off error status.  */
2068   if (yyerrstatus) yyerrstatus--;
2069
2070   yystate = yyn;
2071   goto yynewstate;
2072
2073 /* Do the default action for the current state.  */
2074 yydefault:
2075
2076   yyn = yydefact[yystate];
2077   if (yyn == 0)
2078     goto yyerrlab;
2079
2080 /* Do a reduction.  yyn is the number of a rule to reduce with.  */
2081 yyreduce:
2082   yylen = yyr2[yyn];
2083   if (yylen > 0)
2084     yyval = yyvsp[1-yylen]; /* implement default value of the action */
2085
2086 #if YYDEBUG != 0
2087   if (yydebug)
2088     {
2089       int i;
2090
2091       fprintf (stderr, "Reducing via rule %d (line %d), ",
2092                yyn, yyrline[yyn]);
2093
2094       /* Print the symbols being reduced, and their result.  */
2095       for (i = yyprhs[yyn]; yyrhs[i] > 0; i++)
2096         fprintf (stderr, "%s ", yytname[yyrhs[i]]);
2097       fprintf (stderr, " -> %s\n", yytname[yyr1[yyn]]);
2098     }
2099 #endif
2100
2101
2102   switch (yyn) {
2103
2104 case 2:
2105 #line 333 "yaccParser/hsparser.y"
2106 { the_module_name = yyvsp[-1].uid; module_exports = yyvsp[0].ulist; ;
2107     break;}
2108 case 4:
2109 #line 335 "yaccParser/hsparser.y"
2110 { the_module_name = install_literal("Main"); module_exports = Lnil; ;
2111     break;}
2112 case 6:
2113 #line 341 "yaccParser/hsparser.y"
2114 {
2115                  root = mkhmodule(the_module_name,lconc(prelude_imports,yyvsp[-3].ulist),module_exports,yyvsp[-1].ubinding,startlineno);
2116                ;
2117     break;}
2118 case 7:
2119 #line 345 "yaccParser/hsparser.y"
2120 {
2121                  root = mkhmodule(the_module_name,lconc(prelude_imports,yyvsp[-3].ulist),module_exports,yyvsp[-1].ubinding,startlineno);
2122                ;
2123     break;}
2124 case 8:
2125 #line 350 "yaccParser/hsparser.y"
2126 {
2127                  root = mkhmodule(the_module_name,lconc(prelude_imports,yyvsp[-1].ulist),module_exports,mknullbind(),startlineno);
2128                ;
2129     break;}
2130 case 9:
2131 #line 354 "yaccParser/hsparser.y"
2132 {
2133                  root = mkhmodule(the_module_name,lconc(prelude_imports,yyvsp[-1].ulist),module_exports,mknullbind(),startlineno);
2134                ;
2135     break;}
2136 case 10:
2137 #line 360 "yaccParser/hsparser.y"
2138 {
2139                  root = mkhmodule(the_module_name,lconc(prelude_imports,yyvsp[-1].ulist),module_exports,mknullbind(),startlineno);
2140                ;
2141     break;}
2142 case 11:
2143 #line 364 "yaccParser/hsparser.y"
2144 {
2145                  root = mkhmodule(the_module_name,lconc(prelude_imports,yyvsp[-1].ulist),module_exports,mknullbind(),startlineno);
2146                ;
2147     break;}
2148 case 12:
2149 #line 370 "yaccParser/hsparser.y"
2150 { yyval.ulist = Lnil; ;
2151     break;}
2152 case 13:
2153 #line 371 "yaccParser/hsparser.y"
2154 { yyval.ulist = yyvsp[-1].ulist; ;
2155     break;}
2156 case 14:
2157 #line 375 "yaccParser/hsparser.y"
2158 { yyval.ulist = lsing(yyvsp[0].uentid); ;
2159     break;}
2160 case 15:
2161 #line 376 "yaccParser/hsparser.y"
2162 { yyval.ulist = lapp(yyvsp[-2].ulist, yyvsp[0].uentid); ;
2163     break;}
2164 case 16:
2165 #line 380 "yaccParser/hsparser.y"
2166 { yyval.uentid = mkentid(yyvsp[0].uid); ;
2167     break;}
2168 case 17:
2169 #line 381 "yaccParser/hsparser.y"
2170 { yyval.uentid = mkenttype(yyvsp[0].uid); ;
2171     break;}
2172 case 18:
2173 #line 382 "yaccParser/hsparser.y"
2174 { yyval.uentid = mkenttypeall(yyvsp[-3].uid); ;
2175     break;}
2176 case 19:
2177 #line 384 "yaccParser/hsparser.y"
2178 { yyval.uentid = mkenttypecons(yyvsp[-3].uid,yyvsp[-1].ulist);
2179                   /* should be a datatype with cons representing all constructors */
2180                 ;
2181     break;}
2182 case 20:
2183 #line 388 "yaccParser/hsparser.y"
2184 { yyval.uentid = mkentclass(yyvsp[-3].uid,yyvsp[-1].ulist);
2185                   /* should be a class with vars representing all Class operations */
2186                 ;
2187     break;}
2188 case 21:
2189 #line 392 "yaccParser/hsparser.y"
2190 { yyval.uentid = mkentclass(yyvsp[-2].uid,Lnil);
2191                   /* "tycon" should be a class with no operations */
2192                 ;
2193     break;}
2194 case 22:
2195 #line 396 "yaccParser/hsparser.y"
2196 { yyval.uentid = mkentmod(yyvsp[-1].uid);
2197                   /* "tycon" is a module id (but "modid" is bad for your identifier's health [KH])  */
2198                 ;
2199     break;}
2200 case 23:
2201 #line 402 "yaccParser/hsparser.y"
2202 { yyval.ulist = yyvsp[-1].ulist; hidden = FALSE; ;
2203     break;}
2204 case 24:
2205 #line 403 "yaccParser/hsparser.y"
2206 { yyval.ulist = yyvsp[-1].ulist; hidden = TRUE; ;
2207     break;}
2208 case 25:
2209 #line 404 "yaccParser/hsparser.y"
2210 { yyval.ulist = Lnil; hidden = FALSE; ;
2211     break;}
2212 case 26:
2213 #line 407 "yaccParser/hsparser.y"
2214 { yyval.ulist = Lnil; ;
2215     break;}
2216 case 27:
2217 #line 408 "yaccParser/hsparser.y"
2218 { yyval.ulist = yyvsp[0].ulist; ;
2219     break;}
2220 case 28:
2221 #line 412 "yaccParser/hsparser.y"
2222 { yyval.ulist = lsing(yyvsp[0].uentid); ;
2223     break;}
2224 case 29:
2225 #line 413 "yaccParser/hsparser.y"
2226 { yyval.ulist = lapp(yyvsp[-2].ulist, yyvsp[0].uentid); ;
2227     break;}
2228 case 30:
2229 #line 417 "yaccParser/hsparser.y"
2230 { yyval.uentid = mkentid(yyvsp[0].uid); ;
2231     break;}
2232 case 31:
2233 #line 418 "yaccParser/hsparser.y"
2234 { yyval.uentid = mkenttype(yyvsp[0].uid); ;
2235     break;}
2236 case 32:
2237 #line 419 "yaccParser/hsparser.y"
2238 { yyval.uentid = mkenttypeall(yyvsp[-3].uid); ;
2239     break;}
2240 case 33:
2241 #line 421 "yaccParser/hsparser.y"
2242 { yyval.uentid = mkenttypecons(yyvsp[-3].uid,yyvsp[-1].ulist);
2243                   /* should be a datatype with cons representing all constructors */
2244                 ;
2245     break;}
2246 case 34:
2247 #line 425 "yaccParser/hsparser.y"
2248 { yyval.uentid = mkentclass(yyvsp[-3].uid,yyvsp[-1].ulist);
2249                   /* should be a class with vars representing all Class operations */
2250                 ;
2251     break;}
2252 case 35:
2253 #line 429 "yaccParser/hsparser.y"
2254 { yyval.uentid = mkentclass(yyvsp[-2].uid,Lnil);
2255                   /* "tycon" should be a class with no operations */
2256                 ;
2257     break;}
2258 case 36:
2259 #line 438 "yaccParser/hsparser.y"
2260 { yyval.uhpragma = mkidata_pragma(yyvsp[-2].ulist, yyvsp[-1].ulist); ;
2261     break;}
2262 case 37:
2263 #line 440 "yaccParser/hsparser.y"
2264 { yyval.uhpragma = mkidata_pragma(Lnil, yyvsp[-1].ulist); ;
2265     break;}
2266 case 38:
2267 #line 441 "yaccParser/hsparser.y"
2268 { yyval.uhpragma = mkno_pragma(); ;
2269     break;}
2270 case 39:
2271 #line 446 "yaccParser/hsparser.y"
2272 { yyval.ulist = yyvsp[0].ulist; ;
2273     break;}
2274 case 40:
2275 #line 447 "yaccParser/hsparser.y"
2276 { yyval.ulist = Lnil; ;
2277     break;}
2278 case 41:
2279 #line 451 "yaccParser/hsparser.y"
2280 { yyval.ulist = lsing(yyvsp[0].uhpragma); ;
2281     break;}
2282 case 42:
2283 #line 453 "yaccParser/hsparser.y"
2284 { yyval.ulist = lapp(yyvsp[-2].ulist, yyvsp[0].uhpragma); ;
2285     break;}
2286 case 43:
2287 #line 457 "yaccParser/hsparser.y"
2288 { yyval.uhpragma = mkidata_pragma_4s(yyvsp[-1].ulist); ;
2289     break;}
2290 case 44:
2291 #line 461 "yaccParser/hsparser.y"
2292 { yyval.uhpragma = mkitype_pragma(); ;
2293     break;}
2294 case 45:
2295 #line 462 "yaccParser/hsparser.y"
2296 { yyval.uhpragma = mkno_pragma(); ;
2297     break;}
2298 case 46:
2299 #line 466 "yaccParser/hsparser.y"
2300 { yyval.uhpragma = mkiclas_pragma(yyvsp[-1].ulist); ;
2301     break;}
2302 case 47:
2303 #line 467 "yaccParser/hsparser.y"
2304 { yyval.uhpragma = mkno_pragma(); ;
2305     break;}
2306 case 48:
2307 #line 472 "yaccParser/hsparser.y"
2308 { yyval.uhpragma = mkiclasop_pragma(yyvsp[-2].uhpragma, yyvsp[-1].uhpragma); ;
2309     break;}
2310 case 49:
2311 #line 474 "yaccParser/hsparser.y"
2312 { yyval.uhpragma = mkno_pragma(); ;
2313     break;}
2314 case 50:
2315 #line 479 "yaccParser/hsparser.y"
2316 { yyval.uhpragma = mkiinst_simpl_pragma(yyvsp[-2].uid, yyvsp[-1].uhpragma); ;
2317     break;}
2318 case 51:
2319 #line 482 "yaccParser/hsparser.y"
2320 { yyval.uhpragma = mkiinst_const_pragma(yyvsp[-3].uid, yyvsp[-2].uhpragma, yyvsp[-1].ulist); ;
2321     break;}
2322 case 52:
2323 #line 485 "yaccParser/hsparser.y"
2324 { yyval.uhpragma = mkno_pragma(); ;
2325     break;}
2326 case 53:
2327 #line 490 "yaccParser/hsparser.y"
2328 { yyval.uid = yyvsp[0].uid; ;
2329     break;}
2330 case 54:
2331 #line 492 "yaccParser/hsparser.y"
2332 { yyval.uid = install_literal(""); ;
2333     break;}
2334 case 55:
2335 #line 497 "yaccParser/hsparser.y"
2336 { yyval.uhpragma = yyvsp[-1].uhpragma; ;
2337     break;}
2338 case 56:
2339 #line 499 "yaccParser/hsparser.y"
2340 { yyval.uhpragma = mkno_pragma(); ;
2341     break;}
2342 case 57:
2343 #line 504 "yaccParser/hsparser.y"
2344 { yyval.uhpragma = mkno_pragma(); ;
2345     break;}
2346 case 58:
2347 #line 506 "yaccParser/hsparser.y"
2348 { yyval.uhpragma = mkigen_pragma(yyvsp[-5].uhpragma, yyvsp[-4].uhpragma, yyvsp[-3].uhpragma, yyvsp[-2].uhpragma, yyvsp[-1].uhpragma, yyvsp[0].ulist); ;
2349     break;}
2350 case 59:
2351 #line 510 "yaccParser/hsparser.y"
2352 { yyval.uhpragma = mkno_pragma(); ;
2353     break;}
2354 case 60:
2355 #line 511 "yaccParser/hsparser.y"
2356 { yyval.uhpragma = mkiarity_pragma(yyvsp[0].ustring); ;
2357     break;}
2358 case 61:
2359 #line 515 "yaccParser/hsparser.y"
2360 { yyval.uhpragma = mkno_pragma(); ;
2361     break;}
2362 case 62:
2363 #line 516 "yaccParser/hsparser.y"
2364 { yyval.uhpragma = mkiupdate_pragma(yyvsp[0].ustring); ;
2365     break;}
2366 case 63:
2367 #line 520 "yaccParser/hsparser.y"
2368 { yyval.uhpragma = mkno_pragma(); ;
2369     break;}
2370 case 64:
2371 #line 521 "yaccParser/hsparser.y"
2372 { yyval.uhpragma = mkideforest_pragma(); ;
2373     break;}
2374 case 65:
2375 #line 525 "yaccParser/hsparser.y"
2376 { yyval.uhpragma = mkno_pragma(); ;
2377     break;}
2378 case 66:
2379 #line 526 "yaccParser/hsparser.y"
2380 { yyval.uhpragma = mkistrictness_pragma(installHstring(1, "B"),
2381                                       /* _!_ = COCON = bottom */ mkno_pragma());
2382                                     ;
2383     break;}
2384 case 67:
2385 #line 530 "yaccParser/hsparser.y"
2386 { yyval.uhpragma = mkistrictness_pragma(yyvsp[-1].uhstring, yyvsp[0].uhpragma); ;
2387     break;}
2388 case 68:
2389 #line 534 "yaccParser/hsparser.y"
2390 { yyval.uhpragma = yyvsp[-1].uhpragma; ;
2391     break;}
2392 case 69:
2393 #line 535 "yaccParser/hsparser.y"
2394 { yyval.uhpragma = mkno_pragma(); ;
2395     break;}
2396 case 70:
2397 #line 538 "yaccParser/hsparser.y"
2398 { yyval.uhpragma = mkno_pragma(); ;
2399     break;}
2400 case 71:
2401 #line 540 "yaccParser/hsparser.y"
2402 { yyval.uhpragma = mkimagic_unfolding_pragma(yyvsp[0].uid); ;
2403     break;}
2404 case 72:
2405 #line 542 "yaccParser/hsparser.y"
2406 { yyval.uhpragma = mkiunfolding_pragma(yyvsp[-1].uhpragma, yyvsp[0].ucoresyn); ;
2407     break;}
2408 case 73:
2409 #line 547 "yaccParser/hsparser.y"
2410 { yyval.uhpragma = mkiunfold_always(); ;
2411     break;}
2412 case 74:
2413 #line 549 "yaccParser/hsparser.y"
2414 { yyval.uhpragma = mkiunfold_if_args(yyvsp[-3].ustring, yyvsp[-2].ustring, yyvsp[-1].uid, yyvsp[0].ustring); ;
2415     break;}
2416 case 75:
2417 #line 553 "yaccParser/hsparser.y"
2418 { yyval.ulist = lsing(yyvsp[0].uhpragma); ;
2419     break;}
2420 case 76:
2421 #line 554 "yaccParser/hsparser.y"
2422 { yyval.ulist = lapp(yyvsp[-2].ulist, yyvsp[0].uhpragma); ;
2423     break;}
2424 case 77:
2425 #line 558 "yaccParser/hsparser.y"
2426 { yyval.ulist = Lnil; ;
2427     break;}
2428 case 78:
2429 #line 559 "yaccParser/hsparser.y"
2430 { yyval.ulist = yyvsp[0].ulist; ;
2431     break;}
2432 case 79:
2433 #line 563 "yaccParser/hsparser.y"
2434 { yyval.ulist = lsing(yyvsp[0].uhpragma); ;
2435     break;}
2436 case 80:
2437 #line 564 "yaccParser/hsparser.y"
2438 { yyval.ulist = lapp(yyvsp[-2].ulist, yyvsp[0].uhpragma); ;
2439     break;}
2440 case 81:
2441 #line 569 "yaccParser/hsparser.y"
2442 { yyval.uhpragma = mkitype_pragma_pr(yyvsp[-3].ulist, yyvsp[-1].ustring, yyvsp[0].uhpragma); ;
2443     break;}
2444 case 82:
2445 #line 573 "yaccParser/hsparser.y"
2446 { yyval.ulist = lsing(yyvsp[0].uttype); ;
2447     break;}
2448 case 83:
2449 #line 574 "yaccParser/hsparser.y"
2450 { yyval.ulist = lapp(yyvsp[-2].ulist, yyvsp[0].uttype); ;
2451     break;}
2452 case 84:
2453 #line 578 "yaccParser/hsparser.y"
2454 { yyval.uttype = mkty_maybe_nothing(); ;
2455     break;}
2456 case 85:
2457 #line 579 "yaccParser/hsparser.y"
2458 { yyval.uttype = mkty_maybe_just(yyvsp[0].uttype); ;
2459     break;}
2460 case 86:
2461 #line 583 "yaccParser/hsparser.y"
2462 { yyval.ulist = lsing(yyvsp[0].uhpragma); ;
2463     break;}
2464 case 87:
2465 #line 584 "yaccParser/hsparser.y"
2466 { yyval.ulist = lapp(yyvsp[-2].ulist, yyvsp[0].uhpragma); ;
2467     break;}
2468 case 88:
2469 #line 593 "yaccParser/hsparser.y"
2470 { yyval.uhpragma = mkiname_pragma_pr(yyvsp[-4].uid, yyvsp[-1].uhpragma); ;
2471     break;}
2472 case 89:
2473 #line 599 "yaccParser/hsparser.y"
2474 { yyval.uhpragma = mkiname_pragma_pr(yyvsp[-2].uid, yyvsp[0].uhpragma); ;
2475     break;}
2476 case 90:
2477 #line 610 "yaccParser/hsparser.y"
2478 { yyval.ucoresyn = mkcolam(yyvsp[-2].ulist, yyvsp[0].ucoresyn); ;
2479     break;}
2480 case 91:
2481 #line 612 "yaccParser/hsparser.y"
2482 { yyval.ucoresyn = mkcotylam(yyvsp[-2].ulist, yyvsp[0].ucoresyn); ;
2483     break;}
2484 case 92:
2485 #line 614 "yaccParser/hsparser.y"
2486 { yyval.ucoresyn = mkcocon(mkco_id(yyvsp[-2].uid), yyvsp[-1].ulist, yyvsp[0].ulist); ;
2487     break;}
2488 case 93:
2489 #line 616 "yaccParser/hsparser.y"
2490 { yyval.ucoresyn = mkcocon(mkco_orig_id(yyvsp[-3].uid,yyvsp[-2].uid), yyvsp[-1].ulist, yyvsp[0].ulist); ;
2491     break;}
2492 case 94:
2493 #line 618 "yaccParser/hsparser.y"
2494 { yyval.ucoresyn = mkcoprim(yyvsp[-2].ucoresyn, yyvsp[-1].ulist, yyvsp[0].ulist); ;
2495     break;}
2496 case 95:
2497 #line 620 "yaccParser/hsparser.y"
2498 { yyval.ucoresyn = mkcoapp(yyvsp[-1].ucoresyn, yyvsp[0].ulist); ;
2499     break;}
2500 case 96:
2501 #line 622 "yaccParser/hsparser.y"
2502 { yyval.ucoresyn = mkcotyapp(yyvsp[-3].ucoresyn, yyvsp[-1].uttype); ;
2503     break;}
2504 case 97:
2505 #line 624 "yaccParser/hsparser.y"
2506 { yyval.ucoresyn = mkcocase(yyvsp[-4].ucoresyn, yyvsp[-1].ucoresyn); ;
2507     break;}
2508 case 98:
2509 #line 626 "yaccParser/hsparser.y"
2510 { yyval.ucoresyn = mkcolet(mkcononrec(yyvsp[-5].ucoresyn, yyvsp[-3].ucoresyn), yyvsp[0].ucoresyn); ;
2511     break;}
2512 case 99:
2513 #line 628 "yaccParser/hsparser.y"
2514 { yyval.ucoresyn = mkcolet(mkcorec(yyvsp[-3].ulist), yyvsp[0].ucoresyn); ;
2515     break;}
2516 case 100:
2517 #line 630 "yaccParser/hsparser.y"
2518 { yyval.ucoresyn = mkcoscc(yyvsp[-2].ucoresyn, yyvsp[0].ucoresyn); ;
2519     break;}
2520 case 101:
2521 #line 631 "yaccParser/hsparser.y"
2522 { yyval.ucoresyn = mkcoliteral(yyvsp[0].uliteral); ;
2523     break;}
2524 case 102:
2525 #line 632 "yaccParser/hsparser.y"
2526 { yyval.ucoresyn = mkcovar(yyvsp[0].ucoresyn); ;
2527     break;}
2528 case 103:
2529 #line 637 "yaccParser/hsparser.y"
2530 { yyval.ucoresyn = mkcoalg_alts(yyvsp[-1].ulist, yyvsp[0].ucoresyn); ;
2531     break;}
2532 case 104:
2533 #line 639 "yaccParser/hsparser.y"
2534 { yyval.ucoresyn = mkcoprim_alts(yyvsp[-1].ulist, yyvsp[0].ucoresyn); ;
2535     break;}
2536 case 105:
2537 #line 643 "yaccParser/hsparser.y"
2538 { yyval.ulist = Lnil; ;
2539     break;}
2540 case 106:
2541 #line 644 "yaccParser/hsparser.y"
2542 { yyval.ulist = lapp(yyvsp[-1].ulist, yyvsp[0].ucoresyn); ;
2543     break;}
2544 case 107:
2545 #line 648 "yaccParser/hsparser.y"
2546 { yyval.ucoresyn = mkcoalg_alt(yyvsp[-4].ucoresyn, yyvsp[-3].ulist, yyvsp[-1].ucoresyn); ;
2547     break;}
2548 case 108:
2549 #line 653 "yaccParser/hsparser.y"
2550 { yyval.ulist = Lnil; ;
2551     break;}
2552 case 109:
2553 #line 654 "yaccParser/hsparser.y"
2554 { yyval.ulist = lapp(yyvsp[-1].ulist, yyvsp[0].ucoresyn); ;
2555     break;}
2556 case 110:
2557 #line 658 "yaccParser/hsparser.y"
2558 { yyval.ucoresyn = mkcoprim_alt(yyvsp[-3].uliteral, yyvsp[-1].ucoresyn); ;
2559     break;}
2560 case 111:
2561 #line 662 "yaccParser/hsparser.y"
2562 { yyval.ucoresyn = mkconodeflt(); ;
2563     break;}
2564 case 112:
2565 #line 663 "yaccParser/hsparser.y"
2566 { yyval.ucoresyn = mkcobinddeflt(yyvsp[-2].ucoresyn, yyvsp[0].ucoresyn); ;
2567     break;}
2568 case 113:
2569 #line 667 "yaccParser/hsparser.y"
2570 { yyval.ulist = lsing(yyvsp[0].ucoresyn); ;
2571     break;}
2572 case 114:
2573 #line 668 "yaccParser/hsparser.y"
2574 { yyval.ulist = lapp(yyvsp[-2].ulist, yyvsp[0].ucoresyn); ;
2575     break;}
2576 case 115:
2577 #line 672 "yaccParser/hsparser.y"
2578 { yyval.ucoresyn = mkcorec_pair(yyvsp[-2].ucoresyn, yyvsp[0].ucoresyn); ;
2579     break;}
2580 case 116:
2581 #line 676 "yaccParser/hsparser.y"
2582 { yyval.ucoresyn = mkco_preludedictscc(yyvsp[0].ucoresyn); ;
2583     break;}
2584 case 117:
2585 #line 677 "yaccParser/hsparser.y"
2586 { yyval.ucoresyn = mkco_alldictscc(yyvsp[-2].uhstring,yyvsp[-1].uhstring,yyvsp[0].ucoresyn); ;
2587     break;}
2588 case 118:
2589 #line 679 "yaccParser/hsparser.y"
2590 { yyval.ucoresyn = mkco_usercc(yyvsp[-4].uhstring,yyvsp[-3].uhstring,yyvsp[-2].uhstring,yyvsp[-1].ucoresyn,yyvsp[0].ucoresyn); ;
2591     break;}
2592 case 119:
2593 #line 681 "yaccParser/hsparser.y"
2594 { yyval.ucoresyn = mkco_autocc(yyvsp[-4].ucoresyn,yyvsp[-3].uhstring,yyvsp[-2].uhstring,yyvsp[-1].ucoresyn,yyvsp[0].ucoresyn); ;
2595     break;}
2596 case 120:
2597 #line 683 "yaccParser/hsparser.y"
2598 { yyval.ucoresyn = mkco_dictcc(yyvsp[-4].ucoresyn,yyvsp[-3].uhstring,yyvsp[-2].uhstring,yyvsp[-1].ucoresyn,yyvsp[0].ucoresyn); ;
2599     break;}
2600 case 121:
2601 #line 685 "yaccParser/hsparser.y"
2602 { yyval.ucoresyn = mkco_scc_noncaf(); ;
2603     break;}
2604 case 122:
2605 #line 686 "yaccParser/hsparser.y"
2606 { yyval.ucoresyn = mkco_scc_caf(); ;
2607     break;}
2608 case 123:
2609 #line 688 "yaccParser/hsparser.y"
2610 { yyval.ucoresyn = mkco_scc_nondupd(); ;
2611     break;}
2612 case 124:
2613 #line 689 "yaccParser/hsparser.y"
2614 { yyval.ucoresyn = mkco_scc_dupd(); ;
2615     break;}
2616 case 125:
2617 #line 692 "yaccParser/hsparser.y"
2618 { yyval.ucoresyn = mkco_sdselid(yyvsp[-1].uid, yyvsp[0].uid); ;
2619     break;}
2620 case 126:
2621 #line 693 "yaccParser/hsparser.y"
2622 { yyval.ucoresyn = mkco_classopid(yyvsp[-1].uid, yyvsp[0].uid); ;
2623     break;}
2624 case 127:
2625 #line 694 "yaccParser/hsparser.y"
2626 { yyval.ucoresyn = mkco_defmid(yyvsp[-1].uid, yyvsp[0].uid); ;
2627     break;}
2628 case 128:
2629 #line 696 "yaccParser/hsparser.y"
2630 { yyval.ucoresyn = mkco_dfunid(yyvsp[-3].uid, yyvsp[-1].uttype); ;
2631     break;}
2632 case 129:
2633 #line 698 "yaccParser/hsparser.y"
2634 { yyval.ucoresyn = mkco_constmid(yyvsp[-4].uid, yyvsp[-3].uid, yyvsp[-1].uttype); ;
2635     break;}
2636 case 130:
2637 #line 700 "yaccParser/hsparser.y"
2638 { yyval.ucoresyn = mkco_specid(yyvsp[-3].ucoresyn, yyvsp[-1].ulist); ;
2639     break;}
2640 case 131:
2641 #line 701 "yaccParser/hsparser.y"
2642 { yyval.ucoresyn = mkco_wrkrid(yyvsp[0].ucoresyn); ;
2643     break;}
2644 case 132:
2645 #line 702 "yaccParser/hsparser.y"
2646 { yyval.ucoresyn = mkco_orig_id(yyvsp[-1].uid, yyvsp[0].uid); ;
2647     break;}
2648 case 133:
2649 #line 703 "yaccParser/hsparser.y"
2650 { yyval.ucoresyn = mkco_orig_id(yyvsp[-1].uid, yyvsp[0].uid); ;
2651     break;}
2652 case 134:
2653 #line 704 "yaccParser/hsparser.y"
2654 { yyval.ucoresyn = mkco_id(yyvsp[0].uid); ;
2655     break;}
2656 case 135:
2657 #line 705 "yaccParser/hsparser.y"
2658 { yyval.ucoresyn = mkco_id(yyvsp[0].uid); ;
2659     break;}
2660 case 136:
2661 #line 710 "yaccParser/hsparser.y"
2662 { yyval.ucoresyn = mkco_ccall(yyvsp[-5].uid,0,yyvsp[-3].ulist,yyvsp[-2].uttype); ;
2663     break;}
2664 case 137:
2665 #line 712 "yaccParser/hsparser.y"
2666 { yyval.ucoresyn = mkco_ccall(yyvsp[-5].uid,1,yyvsp[-3].ulist,yyvsp[-2].uttype); ;
2667     break;}
2668 case 138:
2669 #line 714 "yaccParser/hsparser.y"
2670 { yyval.ucoresyn = mkco_casm(yyvsp[-5].uliteral,0,yyvsp[-3].ulist,yyvsp[-2].uttype); ;
2671     break;}
2672 case 139:
2673 #line 716 "yaccParser/hsparser.y"
2674 { yyval.ucoresyn = mkco_casm(yyvsp[-5].uliteral,1,yyvsp[-3].ulist,yyvsp[-2].uttype); ;
2675     break;}
2676 case 140:
2677 #line 717 "yaccParser/hsparser.y"
2678 { yyval.ucoresyn = mkco_primop(yyvsp[0].uid); ;
2679     break;}
2680 case 141:
2681 #line 721 "yaccParser/hsparser.y"
2682 { yyval.ulist = Lnil; ;
2683     break;}
2684 case 142:
2685 #line 722 "yaccParser/hsparser.y"
2686 { yyval.ulist = lapp(yyvsp[-1].ulist, yyvsp[0].ucoresyn); ;
2687     break;}
2688 case 143:
2689 #line 726 "yaccParser/hsparser.y"
2690 { yyval.ucoresyn = mkcobinder(yyvsp[-3].uid, yyvsp[-1].uttype); ;
2691     break;}
2692 case 144:
2693 #line 729 "yaccParser/hsparser.y"
2694 { yyval.ulist = Lnil; ;
2695     break;}
2696 case 145:
2697 #line 730 "yaccParser/hsparser.y"
2698 { yyval.ulist = yyvsp[-1].ulist; ;
2699     break;}
2700 case 146:
2701 #line 734 "yaccParser/hsparser.y"
2702 { yyval.ulist = lsing(yyvsp[0].ucoresyn); ;
2703     break;}
2704 case 147:
2705 #line 735 "yaccParser/hsparser.y"
2706 { yyval.ulist = lapp(yyvsp[-2].ulist, yyvsp[0].ucoresyn); ;
2707     break;}
2708 case 148:
2709 #line 739 "yaccParser/hsparser.y"
2710 { yyval.ucoresyn = mkcolit(yyvsp[0].uliteral); ;
2711     break;}
2712 case 149:
2713 #line 740 "yaccParser/hsparser.y"
2714 { yyval.ucoresyn = mkcolocal(yyvsp[0].ucoresyn); ;
2715     break;}
2716 case 150:
2717 #line 744 "yaccParser/hsparser.y"
2718 { yyval.ulist = lsing(yyvsp[0].uid); ;
2719     break;}
2720 case 151:
2721 #line 745 "yaccParser/hsparser.y"
2722 { yyval.ulist = lapp(yyvsp[-1].ulist, yyvsp[0].uid); ;
2723     break;}
2724 case 152:
2725 #line 749 "yaccParser/hsparser.y"
2726 { yyval.ulist = lsing(yyvsp[0].uid); ;
2727     break;}
2728 case 153:
2729 #line 750 "yaccParser/hsparser.y"
2730 { yyval.ulist = lapp(yyvsp[-2].ulist, yyvsp[0].uid); ;
2731     break;}
2732 case 154:
2733 #line 754 "yaccParser/hsparser.y"
2734 { yyval.ulist = Lnil; ;
2735     break;}
2736 case 155:
2737 #line 755 "yaccParser/hsparser.y"
2738 { yyval.ulist = yyvsp[-1].ulist; ;
2739     break;}
2740 case 156:
2741 #line 759 "yaccParser/hsparser.y"
2742 { yyval.ulist = lsing(yyvsp[0].uttype); ;
2743     break;}
2744 case 157:
2745 #line 760 "yaccParser/hsparser.y"
2746 { yyval.ulist = lapp(yyvsp[-2].ulist, yyvsp[0].uttype); ;
2747     break;}
2748 case 158:
2749 #line 764 "yaccParser/hsparser.y"
2750 { yyval.uttype = yyvsp[0].uttype; ;
2751     break;}
2752 case 159:
2753 #line 784 "yaccParser/hsparser.y"
2754 { yyval.ulist = lsing(yyvsp[0].uttype); ;
2755     break;}
2756 case 160:
2757 #line 785 "yaccParser/hsparser.y"
2758 { yyval.ulist = lapp(yyvsp[-2].ulist, yyvsp[0].uttype); ;
2759     break;}
2760 case 161:
2761 #line 789 "yaccParser/hsparser.y"
2762 { yyval.uttype = mkty_maybe_nothing(); ;
2763     break;}
2764 case 162:
2765 #line 790 "yaccParser/hsparser.y"
2766 { yyval.uttype = mkty_maybe_just(yyvsp[0].uttype); ;
2767     break;}
2768 case 163:
2769 #line 796 "yaccParser/hsparser.y"
2770 {
2771                   if ( implicitPrelude && !etags ) {
2772                      /* we try to avoid reading interfaces when etagging */
2773                      find_module_on_imports_dirlist(
2774                         (haskell1_3Flag) ? "PrelCore13" : "PreludeCore",
2775                         TRUE,interface_filename);
2776                   } else {
2777                      find_module_on_imports_dirlist("PreludeNull_",TRUE,interface_filename);
2778                   }
2779                   thisIfacePragmaVersion = 0;
2780                   setyyin(interface_filename);
2781                   enteriscope();
2782                 ;
2783     break;}
2784 case 164:
2785 #line 810 "yaccParser/hsparser.y"
2786 {
2787                   binding prelude_core = mkimport(installid(iface_name),Lnil,Lnil,yyvsp[0].ubinding,xstrdup(interface_filename),hsplineno);
2788                   prelude_core_import = implicitPrelude? lsing(prelude_core): Lnil;
2789                   
2790                 ;
2791     break;}
2792 case 165:
2793 #line 818 "yaccParser/hsparser.y"
2794 {
2795                   if ( implicitPrelude && !etags ) {
2796                      find_module_on_imports_dirlist(
2797                         ( haskell1_3Flag ) ? "Prel13" : "Prelude",
2798                         TRUE,interface_filename);
2799                   } else {
2800                      find_module_on_imports_dirlist("PreludeNull_",TRUE,interface_filename);
2801                   }
2802                   thisIfacePragmaVersion = 0;
2803                   setyyin(interface_filename);
2804                   enteriscope();
2805                 ;
2806     break;}
2807 case 166:
2808 #line 831 "yaccParser/hsparser.y"
2809 {
2810                   binding prelude = mkimport(installid(iface_name),Lnil,Lnil,yyvsp[0].ubinding,xstrdup(interface_filename),hsplineno);
2811                   prelude_imports = (! implicitPrelude) ? Lnil
2812                                         : lconc(prelude_core_import,lsing(prelude));
2813                 ;
2814     break;}
2815 case 167:
2816 #line 838 "yaccParser/hsparser.y"
2817 { yyval.ulist = Lnil; ;
2818     break;}
2819 case 168:
2820 #line 839 "yaccParser/hsparser.y"
2821 { yyval.ulist = yyvsp[-1].ulist; ;
2822     break;}
2823 case 169:
2824 #line 842 "yaccParser/hsparser.y"
2825 { yyval.ulist = yyvsp[0].ulist; ;
2826     break;}
2827 case 170:
2828 #line 843 "yaccParser/hsparser.y"
2829 { yyval.ulist = lconc(yyvsp[-2].ulist,yyvsp[0].ulist); ;
2830     break;}
2831 case 171:
2832 #line 847 "yaccParser/hsparser.y"
2833 { /* filename returned in "interface_filename" */
2834                   char *module_name = id_to_string(yyvsp[0].uid);
2835                   if ( ! etags ) {
2836                       find_module_on_imports_dirlist(
2837                         (haskell1_3Flag && strcmp(module_name, "Prelude") == 0)
2838                             ? "Prel13" : module_name,
2839                         FALSE, interface_filename);
2840                   } else {
2841                      find_module_on_imports_dirlist("PreludeNull_",TRUE,interface_filename);
2842                   }
2843                   thisIfacePragmaVersion = 0;
2844                   setyyin(interface_filename);
2845                   enteriscope();
2846                   if (strcmp(module_name,"PreludeCore")==0) {
2847                     hsperror("Cannot explicitly import `PreludeCore'");
2848
2849                   } else if (strcmp(module_name,"Prelude")==0) {
2850                     prelude_imports = prelude_core_import; /* unavoidable */
2851                   }
2852                 ;
2853     break;}
2854 case 172:
2855 #line 868 "yaccParser/hsparser.y"
2856 {
2857                   if (hidden)
2858                     yyvsp[0].ubinding->tag = hiding;
2859                   yyval.ulist = lsing(yyvsp[0].ubinding);
2860                 ;
2861     break;}
2862 case 173:
2863 #line 876 "yaccParser/hsparser.y"
2864 { yyval.ubinding = mkimport(installid(iface_name),yyvsp[0].ulist,Lnil,yyvsp[-1].ubinding,xstrdup(interface_filename),hsplineno); ;
2865     break;}
2866 case 174:
2867 #line 879 "yaccParser/hsparser.y"
2868 { yyval.ubinding = mkimport(installid(iface_name),yyvsp[-2].ulist,yyvsp[0].ulist,yyvsp[-3].ubinding,xstrdup(interface_filename),hsplineno); ;
2869     break;}
2870 case 175:
2871 #line 884 "yaccParser/hsparser.y"
2872 {
2873                   exposeis(); /* partain: expose infix ops at level i+1 to level i */
2874                   yyval.ubinding = yyvsp[-1].ubinding;
2875                 ;
2876     break;}
2877 case 176:
2878 #line 890 "yaccParser/hsparser.y"
2879 { yyval.ulist = yyvsp[-1].ulist; ;
2880     break;}
2881 case 177:
2882 #line 894 "yaccParser/hsparser.y"
2883 { yyval.ulist = lsing(yyvsp[0].ulist); ;
2884     break;}
2885 case 178:
2886 #line 895 "yaccParser/hsparser.y"
2887 { yyval.ulist = lapp(yyvsp[-2].ulist, yyvsp[0].ulist); ;
2888     break;}
2889 case 179:
2890 #line 898 "yaccParser/hsparser.y"
2891 { yyval.ulist = ldub(yyvsp[-2].uid,yyvsp[0].uid); ;
2892     break;}
2893 case 180:
2894 #line 899 "yaccParser/hsparser.y"
2895 { yyval.ulist = ldub(yyvsp[-2].uid,yyvsp[0].uid); ;
2896     break;}
2897 case 181:
2898 #line 902 "yaccParser/hsparser.y"
2899 { yyval.ubinding = mknullbind(); ;
2900     break;}
2901 case 182:
2902 #line 903 "yaccParser/hsparser.y"
2903 { yyval.ubinding = yyvsp[-1].ubinding; ;
2904     break;}
2905 case 183:
2906 #line 906 "yaccParser/hsparser.y"
2907 { yyval.ubinding = yyvsp[0].ubinding; ;
2908     break;}
2909 case 184:
2910 #line 907 "yaccParser/hsparser.y"
2911 { yyval.ubinding = mkabind(yyvsp[-2].ubinding,yyvsp[0].ubinding); ;
2912     break;}
2913 case 185:
2914 #line 911 "yaccParser/hsparser.y"
2915 { yyval.ubinding = mkmbind(yyvsp[-3].uid,yyvsp[-1].ulist,Lnil,startlineno); ;
2916     break;}
2917 case 186:
2918 #line 913 "yaccParser/hsparser.y"
2919 { yyval.ubinding = mkmbind(yyvsp[-5].uid,yyvsp[-3].ulist,yyvsp[0].ulist,startlineno); ;
2920     break;}
2921 case 187:
2922 #line 919 "yaccParser/hsparser.y"
2923 { /* OLD 95/08: fixlist = Lnil; */
2924                   strcpy(iface_name, id_to_string(yyvsp[0].uid));
2925                 ;
2926     break;}
2927 case 188:
2928 #line 923 "yaccParser/hsparser.y"
2929 {
2930                 /* WDP: not only do we not check the module name
2931                    but we take the one in the interface to be what we really want
2932                    -- we need this for Prelude jiggery-pokery.  (Blech.  KH)
2933                    ToDo: possibly revert....
2934                    checkmodname(modname,id_to_string($2));
2935                 */
2936                   yyval.ubinding = yyvsp[0].ubinding;
2937                 ;
2938     break;}
2939 case 189:
2940 #line 936 "yaccParser/hsparser.y"
2941 {
2942                   yyval.ubinding = mkabind(yyvsp[-3].ubinding,yyvsp[-1].ubinding);
2943                 ;
2944     break;}
2945 case 190:
2946 #line 940 "yaccParser/hsparser.y"
2947 {
2948                   yyval.ubinding = yyvsp[-1].ubinding;
2949                 ;
2950     break;}
2951 case 191:
2952 #line 944 "yaccParser/hsparser.y"
2953 {
2954                   yyval.ubinding = mkabind(yyvsp[-3].ubinding,yyvsp[-1].ubinding);
2955                 ;
2956     break;}
2957 case 192:
2958 #line 948 "yaccParser/hsparser.y"
2959 {
2960                   yyval.ubinding = yyvsp[-1].ubinding;
2961                 ;
2962     break;}
2963 case 197:
2964 #line 963 "yaccParser/hsparser.y"
2965 { Precedence = checkfixity(yyvsp[0].ustring); Fixity = INFIXL; ;
2966     break;}
2967 case 199:
2968 #line 966 "yaccParser/hsparser.y"
2969 { Precedence = checkfixity(yyvsp[0].ustring); Fixity = INFIXR; ;
2970     break;}
2971 case 201:
2972 #line 969 "yaccParser/hsparser.y"
2973 { Precedence = checkfixity(yyvsp[0].ustring); Fixity = INFIX; ;
2974     break;}
2975 case 203:
2976 #line 972 "yaccParser/hsparser.y"
2977 { Fixity = INFIXL; Precedence = 9; ;
2978     break;}
2979 case 205:
2980 #line 975 "yaccParser/hsparser.y"
2981 { Fixity = INFIXR; Precedence = 9; ;
2982     break;}
2983 case 207:
2984 #line 978 "yaccParser/hsparser.y"
2985 { Fixity = INFIX; Precedence = 9; ;
2986     break;}
2987 case 209:
2988 #line 982 "yaccParser/hsparser.y"
2989 { makeinfix(id_to_string(yyvsp[0].uid),Fixity,Precedence); ;
2990     break;}
2991 case 210:
2992 #line 983 "yaccParser/hsparser.y"
2993 { makeinfix(id_to_string(yyvsp[0].uid),Fixity,Precedence); ;
2994     break;}
2995 case 212:
2996 #line 988 "yaccParser/hsparser.y"
2997 {
2998                   if(yyvsp[-2].ubinding != NULL)
2999                     if(yyvsp[0].ubinding != NULL)
3000                       if(SAMEFN)
3001                         {
3002                           extendfn(yyvsp[-2].ubinding,yyvsp[0].ubinding);
3003                           yyval.ubinding = yyvsp[-2].ubinding;
3004                         }
3005                       else
3006                         yyval.ubinding = mkabind(yyvsp[-2].ubinding,yyvsp[0].ubinding);
3007                     else
3008                       yyval.ubinding = yyvsp[-2].ubinding;
3009                   else
3010                     yyval.ubinding = yyvsp[0].ubinding;
3011                   SAMEFN = 0;
3012                 ;
3013     break;}
3014 case 213:
3015 #line 1006 "yaccParser/hsparser.y"
3016 { yyval.ubinding = yyvsp[0].ubinding; ;
3017     break;}
3018 case 214:
3019 #line 1007 "yaccParser/hsparser.y"
3020 { yyval.ubinding = yyvsp[0].ubinding; ;
3021     break;}
3022 case 215:
3023 #line 1008 "yaccParser/hsparser.y"
3024 { yyval.ubinding = yyvsp[0].ubinding; ;
3025     break;}
3026 case 216:
3027 #line 1009 "yaccParser/hsparser.y"
3028 { yyval.ubinding = yyvsp[0].ubinding; ;
3029     break;}
3030 case 217:
3031 #line 1010 "yaccParser/hsparser.y"
3032 { yyval.ubinding = yyvsp[0].ubinding; ;
3033     break;}
3034 case 218:
3035 #line 1011 "yaccParser/hsparser.y"
3036 { yyval.ubinding = yyvsp[0].ubinding; ;
3037     break;}
3038 case 219:
3039 #line 1014 "yaccParser/hsparser.y"
3040 { yyval.ubinding = mknbind(yyvsp[-2].uttype,yyvsp[0].uttype,startlineno,mkno_pragma()); ;
3041     break;}
3042 case 220:
3043 #line 1019 "yaccParser/hsparser.y"
3044 { yyval.ubinding = mktbind(yyvsp[-4].ulist,yyvsp[-2].uttype,yyvsp[0].ulist,all,startlineno,mkno_pragma()); ;
3045     break;}
3046 case 221:
3047 #line 1021 "yaccParser/hsparser.y"
3048 { yyval.ubinding = mktbind(Lnil,yyvsp[-2].uttype,yyvsp[0].ulist,all,startlineno,mkno_pragma()); ;
3049     break;}
3050 case 222:
3051 #line 1023 "yaccParser/hsparser.y"
3052 { yyval.ubinding = mktbind(yyvsp[-6].ulist,yyvsp[-4].uttype,yyvsp[-2].ulist,yyvsp[0].ulist,startlineno,mkno_pragma()); ;
3053     break;}
3054 case 223:
3055 #line 1025 "yaccParser/hsparser.y"
3056 { yyval.ubinding = mktbind(Lnil,yyvsp[-4].uttype,yyvsp[-2].ulist,yyvsp[0].ulist,startlineno,mkno_pragma()); ;
3057     break;}
3058 case 224:
3059 #line 1028 "yaccParser/hsparser.y"
3060 { yyval.ubinding = mkcbind(yyvsp[-3].ulist,yyvsp[-1].uttype,yyvsp[0].ubinding,startlineno,mkno_pragma()); ;
3061     break;}
3062 case 225:
3063 #line 1029 "yaccParser/hsparser.y"
3064 { yyval.ubinding = mkcbind(Lnil,yyvsp[-1].uttype,yyvsp[0].ubinding,startlineno,mkno_pragma()); ;
3065     break;}
3066 case 226:
3067 #line 1032 "yaccParser/hsparser.y"
3068 { yyval.ubinding = mknullbind(); ;
3069     break;}
3070 case 227:
3071 #line 1033 "yaccParser/hsparser.y"
3072 { checkorder(yyvsp[-1].ubinding); yyval.ubinding = yyvsp[-1].ubinding; ;
3073     break;}
3074 case 228:
3075 #line 1034 "yaccParser/hsparser.y"
3076 { checkorder(yyvsp[-1].ubinding); yyval.ubinding =yyvsp[-1].ubinding; ;
3077     break;}
3078 case 229:
3079 #line 1037 "yaccParser/hsparser.y"
3080 { yyval.ubinding = mkibind(yyvsp[-4].ulist,yyvsp[-2].uid,yyvsp[-1].uttype,yyvsp[0].ubinding,startlineno,mkno_pragma()); ;
3081     break;}
3082 case 230:
3083 #line 1038 "yaccParser/hsparser.y"
3084 { yyval.ubinding = mkibind(Lnil,yyvsp[-2].uid,yyvsp[-1].uttype,yyvsp[0].ubinding,startlineno,mkno_pragma()); ;
3085     break;}
3086 case 231:
3087 #line 1041 "yaccParser/hsparser.y"
3088 { yyval.ubinding = mknullbind(); ;
3089     break;}
3090 case 232:
3091 #line 1042 "yaccParser/hsparser.y"
3092 { yyval.ubinding = yyvsp[-1].ubinding; ;
3093     break;}
3094 case 233:
3095 #line 1043 "yaccParser/hsparser.y"
3096 { yyval.ubinding = yyvsp[-1].ubinding; ;
3097     break;}
3098 case 234:
3099 #line 1046 "yaccParser/hsparser.y"
3100 { yyval.uttype = mktname(yyvsp[0].uid,Lnil); ;
3101     break;}
3102 case 235:
3103 #line 1047 "yaccParser/hsparser.y"
3104 { yyval.uttype = mktname(yyvsp[-2].uid,yyvsp[-1].ulist); ;
3105     break;}
3106 case 236:
3107 #line 1048 "yaccParser/hsparser.y"
3108 { yyval.uttype = mkttuple(mklcons(yyvsp[-3].uttype,yyvsp[-1].ulist)); ;
3109     break;}
3110 case 237:
3111 #line 1049 "yaccParser/hsparser.y"
3112 { yyval.uttype = mkttuple(Lnil); ;
3113     break;}
3114 case 238:
3115 #line 1050 "yaccParser/hsparser.y"
3116 { yyval.uttype = mktllist(yyvsp[-1].uttype); ;
3117     break;}
3118 case 239:
3119 #line 1051 "yaccParser/hsparser.y"
3120 { yyval.uttype = mktfun(yyvsp[-3].uttype,yyvsp[-1].uttype); ;
3121     break;}
3122 case 240:
3123 #line 1054 "yaccParser/hsparser.y"
3124 { yyval.uttype = mktname(yyvsp[0].uid,Lnil); ;
3125     break;}
3126 case 241:
3127 #line 1055 "yaccParser/hsparser.y"
3128 { yyval.uttype = mktname(yyvsp[-2].uid,yyvsp[-1].ulist); ;
3129     break;}
3130 case 242:
3131 #line 1056 "yaccParser/hsparser.y"
3132 { yyval.uttype = mkttuple(mklcons(yyvsp[-3].uttype,yyvsp[-1].ulist)); ;
3133     break;}
3134 case 243:
3135 #line 1057 "yaccParser/hsparser.y"
3136 { yyval.uttype = mkttuple(Lnil); ;
3137     break;}
3138 case 244:
3139 #line 1058 "yaccParser/hsparser.y"
3140 { yyval.uttype = mktllist(yyvsp[-1].uttype); ;
3141     break;}
3142 case 245:
3143 #line 1059 "yaccParser/hsparser.y"
3144 { yyval.uttype = mktfun(yyvsp[-3].uttype,yyvsp[-1].uttype); ;
3145     break;}
3146 case 246:
3147 #line 1062 "yaccParser/hsparser.y"
3148 { yyval.ubinding = mkdbind(yyvsp[0].ulist,startlineno); ;
3149     break;}
3150 case 247:
3151 #line 1065 "yaccParser/hsparser.y"
3152 { yyval.ulist = mklcons(yyvsp[-3].uttype,yyvsp[-1].ulist); ;
3153     break;}
3154 case 248:
3155 #line 1066 "yaccParser/hsparser.y"
3156 { yyval.ulist = lsing(yyvsp[0].uttype); ;
3157     break;}
3158 case 250:
3159 #line 1075 "yaccParser/hsparser.y"
3160 {
3161                   if(SAMEFN)
3162                     {
3163                       extendfn(yyvsp[-2].ubinding,yyvsp[0].ubinding);
3164                       yyval.ubinding = yyvsp[-2].ubinding;
3165                     }
3166                   else
3167                     yyval.ubinding = mkabind(yyvsp[-2].ubinding,yyvsp[0].ubinding);
3168                 ;
3169     break;}
3170 case 251:
3171 #line 1104 "yaccParser/hsparser.y"
3172 { /* type2context.c for code */
3173                   yyval.ubinding = mksbind(yyvsp[-5].ulist,mkcontext(type2context(yyvsp[-3].uttype),yyvsp[-1].uttype),startlineno,yyvsp[0].uhpragma);
3174                   PREVPATT = NULL; FN = NULL; SAMEFN = 0;
3175                 ;
3176     break;}
3177 case 252:
3178 #line 1109 "yaccParser/hsparser.y"
3179 {
3180                   yyval.ubinding = mksbind(yyvsp[-3].ulist,yyvsp[-1].uttype,startlineno,yyvsp[0].uhpragma);
3181                   PREVPATT = NULL; FN = NULL; SAMEFN = 0;
3182                 ;
3183     break;}
3184 case 253:
3185 #line 1122 "yaccParser/hsparser.y"
3186 {
3187                   yyval.ubinding = mkvspec_uprag(yyvsp[-3].uid, yyvsp[-1].ulist, startlineno);
3188                   PREVPATT = NULL; FN = NULL; SAMEFN = 0;
3189                 ;
3190     break;}
3191 case 254:
3192 #line 1128 "yaccParser/hsparser.y"
3193 {
3194                   yyval.ubinding = mkispec_uprag(yyvsp[-2].uid, yyvsp[-1].uttype, startlineno);
3195                   PREVPATT = NULL; FN = NULL; SAMEFN = 0;
3196                 ;
3197     break;}
3198 case 255:
3199 #line 1134 "yaccParser/hsparser.y"
3200 {
3201                   yyval.ubinding = mkdspec_uprag(yyvsp[-2].uid, yyvsp[-1].ulist, startlineno);
3202                   PREVPATT = NULL; FN = NULL; SAMEFN = 0;
3203                 ;
3204     break;}
3205 case 256:
3206 #line 1140 "yaccParser/hsparser.y"
3207 {
3208                   yyval.ubinding = mkinline_uprag(yyvsp[-2].uid, yyvsp[-1].ulist, startlineno);
3209                   PREVPATT = NULL; FN = NULL; SAMEFN = 0;
3210                 ;
3211     break;}
3212 case 257:
3213 #line 1146 "yaccParser/hsparser.y"
3214 {
3215                   yyval.ubinding = mkmagicuf_uprag(yyvsp[-2].uid, yyvsp[-1].uid, startlineno);
3216                   PREVPATT = NULL; FN = NULL; SAMEFN = 0;
3217                 ;
3218     break;}
3219 case 258:
3220 #line 1152 "yaccParser/hsparser.y"
3221 {
3222                   yyval.ubinding = mkdeforest_uprag(yyvsp[-1].uid, startlineno);
3223                   PREVPATT = NULL; FN = NULL; SAMEFN = 0;
3224                 ;
3225     break;}
3226 case 259:
3227 #line 1158 "yaccParser/hsparser.y"
3228 {
3229                   yyval.ubinding = mkabstract_uprag(yyvsp[-1].uid, startlineno);
3230                   PREVPATT = NULL; FN = NULL; SAMEFN = 0;
3231                 ;
3232     break;}
3233 case 261:
3234 #line 1166 "yaccParser/hsparser.y"
3235 { yyval.ubinding = mknullbind(); PREVPATT = NULL; FN = NULL; SAMEFN = 0; ;
3236     break;}
3237 case 262:
3238 #line 1170 "yaccParser/hsparser.y"
3239 { yyval.ulist = Lnil; ;
3240     break;}
3241 case 263:
3242 #line 1171 "yaccParser/hsparser.y"
3243 { yyval.ulist = lsing(yyvsp[0].uid); ;
3244     break;}
3245 case 264:
3246 #line 1174 "yaccParser/hsparser.y"
3247 { yyval.ulist = lsing(yyvsp[0].ubinding); ;
3248     break;}
3249 case 265:
3250 #line 1175 "yaccParser/hsparser.y"
3251 { yyval.ulist = lapp(yyvsp[-2].ulist,yyvsp[0].ubinding); ;
3252     break;}
3253 case 266:
3254 #line 1179 "yaccParser/hsparser.y"
3255 { yyval.ubinding = mkvspec_ty_and_id(yyvsp[0].uttype,Lnil); ;
3256     break;}
3257 case 267:
3258 #line 1180 "yaccParser/hsparser.y"
3259 { yyval.ubinding = mkvspec_ty_and_id(yyvsp[-2].uttype,lsing(yyvsp[0].uid)); ;
3260     break;}
3261 case 268:
3262 #line 1182 "yaccParser/hsparser.y"
3263 { yyval.ubinding = yyvsp[0].ubinding; ;
3264     break;}
3265 case 269:
3266 #line 1183 "yaccParser/hsparser.y"
3267 { yyval.ubinding = mkabind(yyvsp[-2].ubinding,yyvsp[0].ubinding); ;
3268     break;}
3269 case 270:
3270 #line 1186 "yaccParser/hsparser.y"
3271 { yyval.ubinding = yyvsp[0].ubinding; ;
3272     break;}
3273 case 271:
3274 #line 1187 "yaccParser/hsparser.y"
3275 { yyval.ubinding = yyvsp[0].ubinding; ;
3276     break;}
3277 case 272:
3278 #line 1188 "yaccParser/hsparser.y"
3279 { yyval.ubinding = yyvsp[0].ubinding; ;
3280     break;}
3281 case 273:
3282 #line 1189 "yaccParser/hsparser.y"
3283 { yyval.ubinding = yyvsp[0].ubinding; ;
3284     break;}
3285 case 274:
3286 #line 1190 "yaccParser/hsparser.y"
3287 { yyval.ubinding = yyvsp[0].ubinding; ;
3288     break;}
3289 case 275:
3290 #line 1191 "yaccParser/hsparser.y"
3291 { yyval.ubinding = mknullbind(); ;
3292     break;}
3293 case 276:
3294 #line 1196 "yaccParser/hsparser.y"
3295 { yyval.ubinding = mksbind(yyvsp[-5].ulist,mkcontext(type2context(yyvsp[-3].uttype),yyvsp[-1].uttype),startlineno,yyvsp[0].uhpragma); ;
3296     break;}
3297 case 277:
3298 #line 1198 "yaccParser/hsparser.y"
3299 { yyval.ubinding = mksbind(yyvsp[-3].ulist,yyvsp[-1].uttype,startlineno,yyvsp[0].uhpragma); ;
3300     break;}
3301 case 278:
3302 #line 1202 "yaccParser/hsparser.y"
3303 { yyval.ubinding = mknbind(yyvsp[-3].uttype,yyvsp[-1].uttype,startlineno,yyvsp[0].uhpragma); ;
3304     break;}
3305 case 279:
3306 #line 1206 "yaccParser/hsparser.y"
3307 { yyval.ubinding = mktbind(yyvsp[-3].ulist,yyvsp[-1].uttype,Lnil,Lnil,startlineno,yyvsp[0].uhpragma); ;
3308     break;}
3309 case 280:
3310 #line 1208 "yaccParser/hsparser.y"
3311 { yyval.ubinding = mktbind(Lnil,yyvsp[-1].uttype,Lnil,Lnil,startlineno,yyvsp[0].uhpragma); ;
3312     break;}
3313 case 281:
3314 #line 1210 "yaccParser/hsparser.y"
3315 { yyval.ubinding = mktbind(yyvsp[-5].ulist,yyvsp[-3].uttype,yyvsp[-1].ulist,Lnil,startlineno,yyvsp[0].uhpragma); ;
3316     break;}
3317 case 282:
3318 #line 1212 "yaccParser/hsparser.y"
3319 { yyval.ubinding = mktbind(Lnil,yyvsp[-3].uttype,yyvsp[-1].ulist,Lnil,startlineno,yyvsp[0].uhpragma); ;
3320     break;}
3321 case 283:
3322 #line 1214 "yaccParser/hsparser.y"
3323 { yyval.ubinding = mktbind(yyvsp[-6].ulist,yyvsp[-4].uttype,yyvsp[-2].ulist,yyvsp[0].ulist,startlineno,mkno_pragma()); ;
3324     break;}
3325 case 284:
3326 #line 1216 "yaccParser/hsparser.y"
3327 { yyval.ubinding = mktbind(Lnil,yyvsp[-4].uttype,yyvsp[-2].ulist,yyvsp[0].ulist,startlineno,mkno_pragma()); ;
3328     break;}
3329 case 285:
3330 #line 1220 "yaccParser/hsparser.y"
3331 { yyval.ubinding = mkcbind(yyvsp[-4].ulist,yyvsp[-2].uttype,yyvsp[0].ubinding,startlineno,yyvsp[-1].uhpragma); ;
3332     break;}
3333 case 286:
3334 #line 1222 "yaccParser/hsparser.y"
3335 { yyval.ubinding = mkcbind(Lnil,yyvsp[-2].uttype,yyvsp[0].ubinding,startlineno,yyvsp[-1].uhpragma); ;
3336     break;}
3337 case 287:
3338 #line 1226 "yaccParser/hsparser.y"
3339 { yyval.ubinding = mkibind(yyvsp[-4].ulist,yyvsp[-2].uid,yyvsp[-1].uttype,mknullbind(),startlineno,yyvsp[0].uhpragma); ;
3340     break;}
3341 case 288:
3342 #line 1228 "yaccParser/hsparser.y"
3343 { yyval.ubinding = mkibind(Lnil,yyvsp[-2].uid,yyvsp[-1].uttype,mknullbind(),startlineno,yyvsp[0].uhpragma); ;
3344     break;}
3345 case 289:
3346 #line 1234 "yaccParser/hsparser.y"
3347 { yyval.uttype = mktname(yyvsp[-1].uid,lsing(yyvsp[0].uttype)); ;
3348     break;}
3349 case 290:
3350 #line 1238 "yaccParser/hsparser.y"
3351 { yyval.ulist = lsing(yyvsp[0].uttype); ;
3352     break;}
3353 case 291:
3354 #line 1239 "yaccParser/hsparser.y"
3355 { yyval.ulist = lapp(yyvsp[-2].ulist,yyvsp[0].uttype); ;
3356     break;}
3357 case 292:
3358 #line 1242 "yaccParser/hsparser.y"
3359 { yyval.uttype = yyvsp[0].uttype; ;
3360     break;}
3361 case 293:
3362 #line 1243 "yaccParser/hsparser.y"
3363 { yyval.uttype = mktfun(yyvsp[-2].uttype,yyvsp[0].uttype); ;
3364     break;}
3365 case 294:
3366 #line 1246 "yaccParser/hsparser.y"
3367 { yyval.uttype = mkuniforall(yyvsp[-2].ulist, yyvsp[0].uttype); ;
3368     break;}
3369 case 295:
3370 #line 1248 "yaccParser/hsparser.y"
3371 { yyval.uttype = yyvsp[0].uttype; ;
3372     break;}
3373 case 296:
3374 #line 1249 "yaccParser/hsparser.y"
3375 { yyval.uttype = mktname(yyvsp[-1].uid,yyvsp[0].ulist); ;
3376     break;}
3377 case 297:
3378 #line 1252 "yaccParser/hsparser.y"
3379 { yyval.ulist = lapp(yyvsp[-1].ulist,yyvsp[0].uttype); ;
3380     break;}
3381 case 298:
3382 #line 1253 "yaccParser/hsparser.y"
3383 { yyval.ulist = lsing(yyvsp[0].uttype); ;
3384     break;}
3385 case 299:
3386 #line 1257 "yaccParser/hsparser.y"
3387 { yyval.uttype = yyvsp[0].uttype; ;
3388     break;}
3389 case 300:
3390 #line 1258 "yaccParser/hsparser.y"
3391 { yyval.uttype = mktfun(yyvsp[-2].uttype,yyvsp[0].uttype); ;
3392     break;}
3393 case 301:
3394 #line 1259 "yaccParser/hsparser.y"
3395 { yyval.uttype = mktname(yyvsp[-1].uid,yyvsp[0].ulist); ;
3396     break;}
3397 case 303:
3398 #line 1263 "yaccParser/hsparser.y"
3399 { yyval.uttype = mkttuple(mklcons(yyvsp[-3].uttype,yyvsp[-1].ulist)); ;
3400     break;}
3401 case 304:
3402 #line 1266 "yaccParser/hsparser.y"
3403 { yyval.uttype = yyvsp[0].uttype; ;
3404     break;}
3405 case 305:
3406 #line 1267 "yaccParser/hsparser.y"
3407 { yyval.uttype = mktname(yyvsp[0].uid,Lnil); ;
3408     break;}
3409 case 306:
3410 #line 1268 "yaccParser/hsparser.y"
3411 { yyval.uttype = mkttuple(Lnil); ;
3412     break;}
3413 case 307:
3414 #line 1269 "yaccParser/hsparser.y"
3415 { yyval.uttype = yyvsp[-1].uttype; ;
3416     break;}
3417 case 308:
3418 #line 1270 "yaccParser/hsparser.y"
3419 { yyval.uttype = mktllist(yyvsp[-1].uttype); ;
3420     break;}
3421 case 309:
3422 #line 1273 "yaccParser/hsparser.y"
3423 { yyval.uttype = mkunidict(yyvsp[-3].uid, yyvsp[-2].uttype); ;
3424     break;}
3425 case 310:
3426 #line 1274 "yaccParser/hsparser.y"
3427 { yyval.uttype = mkunityvartemplate(yyvsp[0].uid); ;
3428     break;}
3429 case 311:
3430 #line 1278 "yaccParser/hsparser.y"
3431 { yyval.uttype = mktname(yyvsp[0].uid,Lnil); ;
3432     break;}
3433 case 312:
3434 #line 1279 "yaccParser/hsparser.y"
3435 { yyval.uttype = mktname(yyvsp[-1].uid,yyvsp[0].ulist); ;
3436     break;}
3437 case 313:
3438 #line 1282 "yaccParser/hsparser.y"
3439 { yyval.ulist = lsing(yyvsp[0].uatype); ;
3440     break;}
3441 case 314:
3442 #line 1283 "yaccParser/hsparser.y"
3443 { yyval.ulist = lapp(yyvsp[-2].ulist,yyvsp[0].uatype); ;
3444     break;}
3445 case 315:
3446 #line 1287 "yaccParser/hsparser.y"
3447 { yyval.uatype = mkatc(yyvsp[-1].uid,yyvsp[0].ulist,hsplineno); ;
3448     break;}
3449 case 316:
3450 #line 1288 "yaccParser/hsparser.y"
3451 { yyval.uatype = mkatc(yyvsp[-2].uid,yyvsp[0].ulist,hsplineno); ;
3452     break;}
3453 case 317:
3454 #line 1289 "yaccParser/hsparser.y"
3455 { yyval.uatype = mkatc(yyvsp[0].uid,Lnil,hsplineno); ;
3456     break;}
3457 case 318:
3458 #line 1290 "yaccParser/hsparser.y"
3459 { yyval.uatype = mkatc(yyvsp[-1].uid,Lnil,hsplineno); ;
3460     break;}
3461 case 319:
3462 #line 1291 "yaccParser/hsparser.y"
3463 { yyval.uatype = mkatc(yyvsp[-1].uid, ldub(yyvsp[-2].uttype,yyvsp[0].uttype),hsplineno); ;
3464     break;}
3465 case 320:
3466 #line 1294 "yaccParser/hsparser.y"
3467 { yyval.ulist = yyvsp[-1].ulist; ;
3468     break;}
3469 case 321:
3470 #line 1295 "yaccParser/hsparser.y"
3471 { yyval.ulist = Lnil; ;
3472     break;}
3473 case 322:
3474 #line 1296 "yaccParser/hsparser.y"
3475 { yyval.ulist = lsing(yyvsp[0].uid); ;
3476     break;}
3477 case 323:
3478 #line 1299 "yaccParser/hsparser.y"
3479 { yyval.ulist = lsing(yyvsp[0].uid); ;
3480     break;}
3481 case 324:
3482 #line 1300 "yaccParser/hsparser.y"
3483 { yyval.ulist = lapp(yyvsp[-2].ulist,yyvsp[0].uid); ;
3484     break;}
3485 case 325:
3486 #line 1303 "yaccParser/hsparser.y"
3487 { yyval.ulist = yyvsp[-1].ulist; ;
3488     break;}
3489 case 326:
3490 #line 1304 "yaccParser/hsparser.y"
3491 { yyval.ulist = lsing(yyvsp[0].uttype); ;
3492     break;}
3493 case 327:
3494 #line 1307 "yaccParser/hsparser.y"
3495 { yyval.ulist = lsing(yyvsp[0].uttype); ;
3496     break;}
3497 case 328:
3498 #line 1308 "yaccParser/hsparser.y"
3499 { yyval.ulist = lapp(yyvsp[-2].ulist,yyvsp[0].uttype); ;
3500     break;}
3501 case 329:
3502 #line 1311 "yaccParser/hsparser.y"
3503 { yyval.ubinding = mknullbind(); ;
3504     break;}
3505 case 330:
3506 #line 1312 "yaccParser/hsparser.y"
3507 { yyval.ubinding = yyvsp[0].ubinding; ;
3508     break;}
3509 case 331:
3510 #line 1314 "yaccParser/hsparser.y"
3511 {
3512                   if(SAMEFN)
3513                     {
3514                       extendfn(yyvsp[-2].ubinding,yyvsp[0].ubinding);
3515                       yyval.ubinding = yyvsp[-2].ubinding;
3516                     }
3517                   else
3518                     yyval.ubinding = mkabind(yyvsp[-2].ubinding,yyvsp[0].ubinding);
3519                 ;
3520     break;}
3521 case 332:
3522 #line 1328 "yaccParser/hsparser.y"
3523 {
3524                   yyval.ubinding = mkvspec_uprag(yyvsp[-3].uid, yyvsp[-1].ulist, startlineno);
3525                   PREVPATT = NULL; FN = NULL; SAMEFN = 0;
3526                 ;
3527     break;}
3528 case 333:
3529 #line 1334 "yaccParser/hsparser.y"
3530 {
3531                   yyval.ubinding = mkinline_uprag(yyvsp[-2].uid, yyvsp[-1].ulist, startlineno);
3532                   PREVPATT = NULL; FN = NULL; SAMEFN = 0;
3533                 ;
3534     break;}
3535 case 334:
3536 #line 1340 "yaccParser/hsparser.y"
3537 {
3538                   yyval.ubinding = mkmagicuf_uprag(yyvsp[-2].uid, yyvsp[-1].uid, startlineno);
3539                   PREVPATT = NULL; FN = NULL; SAMEFN = 0;
3540                 ;
3541     break;}
3542 case 336:
3543 #line 1349 "yaccParser/hsparser.y"
3544 { yyval.ulist = mklcons(yyvsp[-2].uid,yyvsp[0].ulist); ;
3545     break;}
3546 case 337:
3547 #line 1350 "yaccParser/hsparser.y"
3548 { yyval.ulist = lsing(yyvsp[0].uid); ;
3549     break;}
3550 case 338:
3551 #line 1353 "yaccParser/hsparser.y"
3552 { yyval.ulist = lsing(yyvsp[0].uid); ;
3553     break;}
3554 case 339:
3555 #line 1354 "yaccParser/hsparser.y"
3556 { yyval.ulist = lapp(yyvsp[-2].ulist,yyvsp[0].uid); ;
3557     break;}
3558 case 340:
3559 #line 1357 "yaccParser/hsparser.y"
3560 { yyval.ulist = lsing(yyvsp[0].uid); ;
3561     break;}
3562 case 341:
3563 #line 1358 "yaccParser/hsparser.y"
3564 { yyval.ulist = lapp(yyvsp[-2].ulist,yyvsp[0].uid); ;
3565     break;}
3566 case 342:
3567 #line 1363 "yaccParser/hsparser.y"
3568 {
3569                   tree fn = function(yyvsp[0].utree);
3570
3571                   PREVPATT = yyvsp[0].utree;
3572
3573                   if(ttree(fn) == ident)
3574                     {
3575                       checksamefn(gident((struct Sident *) fn));
3576                       FN = fn;
3577                     }
3578
3579                   else if (ttree(fn) == tinfixop && ttree(ginfun((struct Sap *) fn)) == ident)
3580                     {
3581                       checksamefn(gident((struct Sident *) (ginfun((struct Sap *) fn))));
3582                       FN = ginfun((struct Sap *) fn);
3583                     }
3584
3585                   else if(etags)
3586 #if 1/*etags*/
3587                     printf("%u\n",startlineno);
3588 #else
3589                     fprintf(stderr,"%u\tvaldef\n",startlineno);
3590 #endif
3591                 ;
3592     break;}
3593 case 343:
3594 #line 1388 "yaccParser/hsparser.y"
3595 {
3596                   if ( lhs_is_patt(yyvsp[-2].utree) )
3597                     {
3598                       yyval.ubinding = mkpbind(yyvsp[0].ulist, startlineno);
3599                       FN = NULL;
3600                       SAMEFN = 0;
3601                     }
3602                   else /* lhs is function */
3603                     yyval.ubinding = mkfbind(yyvsp[0].ulist,startlineno);
3604
3605                   PREVPATT = NULL;
3606                 ;
3607     break;}
3608 case 344:
3609 #line 1402 "yaccParser/hsparser.y"
3610 { yyval.ulist = lsing(createpat(yyvsp[-1].ulist, yyvsp[0].ubinding)); ;
3611     break;}
3612 case 346:
3613 #line 1406 "yaccParser/hsparser.y"
3614 { yyval.ulist = lsing(mktruecase(yyvsp[0].utree)); ;
3615     break;}
3616 case 347:
3617 #line 1409 "yaccParser/hsparser.y"
3618 { yyval.ulist = lsing(ldub(yyvsp[-2].utree,yyvsp[0].utree)); ;
3619     break;}
3620 case 348:
3621 #line 1410 "yaccParser/hsparser.y"
3622 { yyval.ulist = mklcons(ldub(yyvsp[-3].utree,yyvsp[-1].utree),yyvsp[0].ulist); ;
3623     break;}
3624 case 349:
3625 #line 1414 "yaccParser/hsparser.y"
3626 { yyval.ubinding = yyvsp[-1].ubinding; ;
3627     break;}
3628 case 350:
3629 #line 1415 "yaccParser/hsparser.y"
3630 { yyval.ubinding = yyvsp[-1].ubinding; ;
3631     break;}
3632 case 351:
3633 #line 1416 "yaccParser/hsparser.y"
3634 { yyval.ubinding = mknullbind(); ;
3635     break;}
3636 case 352:
3637 #line 1419 "yaccParser/hsparser.y"
3638 { yyval.utree = yyvsp[0].utree; ;
3639     break;}
3640 case 353:
3641 #line 1423 "yaccParser/hsparser.y"
3642 { yyval.ulist = mklcons(yyvsp[-1].utree,yyvsp[0].ulist); ;
3643     break;}
3644 case 354:
3645 #line 1424 "yaccParser/hsparser.y"
3646 { yyval.ulist = lsing(yyvsp[0].utree); ;
3647     break;}
3648 case 355:
3649 #line 1434 "yaccParser/hsparser.y"
3650 { yyval.utree = mkrestr(yyvsp[-4].utree,mkcontext(type2context(yyvsp[-2].uttype),yyvsp[0].uttype)); ;
3651     break;}
3652 case 356:
3653 #line 1435 "yaccParser/hsparser.y"
3654 { yyval.utree = mkrestr(yyvsp[-2].utree,yyvsp[0].uttype); ;
3655     break;}
3656 case 359:
3657 #line 1447 "yaccParser/hsparser.y"
3658 { yyval.utree = mkinfixop(yyvsp[-1].uid,yyvsp[-2].utree,yyvsp[0].utree); precparse(yyval.utree); ;
3659     break;}
3660 case 360:
3661 #line 1456 "yaccParser/hsparser.y"
3662 { yyval.utree = mknegate(yyvsp[0].utree); ;
3663     break;}
3664 case 362:
3665 #line 1465 "yaccParser/hsparser.y"
3666 { /* enteriscope(); /? I don't understand this -- KH */
3667                   hsincindent();    /* added by partain; push new context for */
3668                                     /* FN = NULL; not actually concerned about */
3669                   FN = NULL;        /* indenting */
3670                   yyval.uint = hsplineno; /* remember current line number */
3671                 ;
3672     break;}
3673 case 363:
3674 #line 1472 "yaccParser/hsparser.y"
3675 { hsendindent();    /* added by partain */
3676                   /* exitiscope();          /? Also not understood */
3677                 ;
3678     break;}
3679 case 364:
3680 #line 1476 "yaccParser/hsparser.y"
3681 {
3682                   yyval.utree = mklambda(yyvsp[-3].ulist, yyvsp[0].utree, yyvsp[-4].uint);
3683                 ;
3684     break;}
3685 case 365:
3686 #line 1481 "yaccParser/hsparser.y"
3687 { yyval.utree = mklet(yyvsp[-3].ubinding,yyvsp[0].utree); ;
3688     break;}
3689 case 366:
3690 #line 1482 "yaccParser/hsparser.y"
3691 { yyval.utree = mklet(yyvsp[-3].ubinding,yyvsp[0].utree); ;
3692     break;}
3693 case 367:
3694 #line 1485 "yaccParser/hsparser.y"
3695 { yyval.utree = mkife(yyvsp[-4].utree,yyvsp[-2].utree,yyvsp[0].utree); ;
3696     break;}
3697 case 368:
3698 #line 1488 "yaccParser/hsparser.y"
3699 { yyval.utree = mkcasee(yyvsp[-4].utree,yyvsp[-1].ulist); ;
3700     break;}
3701 case 369:
3702 #line 1489 "yaccParser/hsparser.y"
3703 { yyval.utree = mkcasee(yyvsp[-4].utree,yyvsp[-1].ulist); ;
3704     break;}
3705 case 370:
3706 #line 1492 "yaccParser/hsparser.y"
3707 { yyval.utree = mkccall(yyvsp[-1].uid,installid("n"),yyvsp[0].ulist); ;
3708     break;}
3709 case 371:
3710 #line 1493 "yaccParser/hsparser.y"
3711 { yyval.utree = mkccall(yyvsp[0].uid,installid("n"),Lnil); ;
3712     break;}
3713 case 372:
3714 #line 1494 "yaccParser/hsparser.y"
3715 { yyval.utree = mkccall(yyvsp[-1].uid,installid("p"),yyvsp[0].ulist); ;
3716     break;}
3717 case 373:
3718 #line 1495 "yaccParser/hsparser.y"
3719 { yyval.utree = mkccall(yyvsp[0].uid,installid("p"),Lnil); ;
3720     break;}
3721 case 374:
3722 #line 1496 "yaccParser/hsparser.y"
3723 { yyval.utree = mkccall(yyvsp[-1].ustring,installid("N"),yyvsp[0].ulist); ;
3724     break;}
3725 case 375:
3726 #line 1497 "yaccParser/hsparser.y"
3727 { yyval.utree = mkccall(yyvsp[0].ustring,installid("N"),Lnil); ;
3728     break;}
3729 case 376:
3730 #line 1498 "yaccParser/hsparser.y"
3731 { yyval.utree = mkccall(yyvsp[-1].ustring,installid("P"),yyvsp[0].ulist); ;
3732     break;}
3733 case 377:
3734 #line 1499 "yaccParser/hsparser.y"
3735 { yyval.utree = mkccall(yyvsp[0].ustring,installid("P"),Lnil); ;
3736     break;}
3737 case 378:
3738 #line 1503 "yaccParser/hsparser.y"
3739 { if (ignoreSCC) {
3740                     if (warnSCC)
3741                         fprintf(stderr,
3742                                 "\"%s\", line %d: _scc_ (`set [profiling] cost centre') ignored\n",
3743                                 input_filename, hsplineno);
3744                     yyval.utree = yyvsp[0].utree;
3745                   } else {
3746                     yyval.utree = mkscc(yyvsp[-1].uhstring, yyvsp[0].utree);
3747                   }
3748                 ;
3749     break;}
3750 case 380:
3751 #line 1518 "yaccParser/hsparser.y"
3752 { yyval.utree = mkap(yyvsp[-1].utree,yyvsp[0].utree); ;
3753     break;}
3754 case 382:
3755 #line 1522 "yaccParser/hsparser.y"
3756 { yyval.ulist = lapp(yyvsp[-1].ulist,yyvsp[0].utree); ;
3757     break;}
3758 case 383:
3759 #line 1523 "yaccParser/hsparser.y"
3760 { yyval.ulist = lsing(yyvsp[0].utree); ;
3761     break;}
3762 case 384:
3763 #line 1533 "yaccParser/hsparser.y"
3764 { yyval.utree = mkident(yyvsp[0].uid); ;
3765     break;}
3766 case 385:
3767 #line 1534 "yaccParser/hsparser.y"
3768 { yyval.utree = mkident(yyvsp[0].uid); ;
3769     break;}
3770 case 386:
3771 #line 1535 "yaccParser/hsparser.y"
3772 { yyval.utree = mklit(yyvsp[0].uliteral); ;
3773     break;}
3774 case 387:
3775 #line 1536 "yaccParser/hsparser.y"
3776 { yyval.utree = mkpar(yyvsp[-1].utree); ;
3777     break;}
3778 case 388:
3779 #line 1537 "yaccParser/hsparser.y"
3780 { checkprec(yyvsp[-2].utree,yyvsp[-1].uid,FALSE); yyval.utree = mklsection(yyvsp[-2].utree,yyvsp[-1].uid); ;
3781     break;}
3782 case 389:
3783 #line 1538 "yaccParser/hsparser.y"
3784 { checkprec(yyvsp[-1].utree,yyvsp[-2].uid,TRUE);  yyval.utree = mkrsection(yyvsp[-2].uid,yyvsp[-1].utree); ;
3785     break;}
3786 case 391:
3787 #line 1542 "yaccParser/hsparser.y"
3788 { yyval.utree = mkpar(yyvsp[0].utree); ;
3789     break;}
3790 case 392:
3791 #line 1543 "yaccParser/hsparser.y"
3792 { yyval.utree = mkpar(yyvsp[0].utree); ;
3793     break;}
3794 case 393:
3795 #line 1544 "yaccParser/hsparser.y"
3796 { yyval.utree = mkpar(yyvsp[0].utree); ;
3797     break;}
3798 case 394:
3799 #line 1547 "yaccParser/hsparser.y"
3800 { checkinpat();  yyval.utree = mkas(yyvsp[-2].uid,yyvsp[0].utree); ;
3801     break;}
3802 case 395:
3803 #line 1548 "yaccParser/hsparser.y"
3804 { checkinpat();  yyval.utree = mkwildp();   ;
3805     break;}
3806 case 396:
3807 #line 1549 "yaccParser/hsparser.y"
3808 { checkinpat();  yyval.utree = mklazyp(yyvsp[0].utree); ;
3809     break;}
3810 case 398:
3811 #line 1564 "yaccParser/hsparser.y"
3812 {
3813                   yyval.utree = mkinfixop(yyvsp[-1].uid,yyvsp[-2].utree,yyvsp[0].utree);
3814
3815                   if(isconstr(id_to_string(yyvsp[-1].uid)))
3816                     precparse(yyval.utree);
3817                   else
3818                     {
3819                       checkprec(yyvsp[-2].utree,yyvsp[-1].uid,FALSE);   /* Check the precedence of the left pattern */
3820                       checkprec(yyvsp[0].utree,yyvsp[-1].uid,TRUE);     /* then check the right pattern */
3821                     }
3822                 ;
3823     break;}
3824 case 400:
3825 #line 1579 "yaccParser/hsparser.y"
3826 {
3827                   yyval.utree = mkinfixop(yyvsp[-1].uid,yyvsp[-2].utree,yyvsp[0].utree);
3828
3829                   if(isconstr(id_to_string(yyvsp[-1].uid)))
3830                     precparse(yyval.utree);
3831                   else
3832                     {
3833                       checkprec(yyvsp[-2].utree,yyvsp[-1].uid,FALSE);   /* Check the precedence of the left pattern */
3834                       checkprec(yyvsp[0].utree,yyvsp[-1].uid,TRUE);     /* then check the right pattern */
3835                     }
3836                 ;
3837     break;}
3838 case 401:
3839 #line 1598 "yaccParser/hsparser.y"
3840 { yyval.utree = mknegate(yyvsp[0].utree); ;
3841     break;}
3842 case 403:
3843 #line 1603 "yaccParser/hsparser.y"
3844 { yyval.utree = mkap(yyvsp[-1].utree,yyvsp[0].utree); ;
3845     break;}
3846 case 405:
3847 #line 1607 "yaccParser/hsparser.y"
3848 { yyval.utree = mknegate(yyvsp[0].utree); ;
3849     break;}
3850 case 407:
3851 #line 1612 "yaccParser/hsparser.y"
3852 { yyval.utree = mkap(yyvsp[-1].utree,yyvsp[0].utree); ;
3853     break;}
3854 case 409:
3855 #line 1616 "yaccParser/hsparser.y"
3856 { yyval.utree = mkident(yyvsp[0].uid); ;
3857     break;}
3858 case 410:
3859 #line 1617 "yaccParser/hsparser.y"
3860 { yyval.utree = mkident(yyvsp[0].uid); ;
3861     break;}
3862 case 411:
3863 #line 1618 "yaccParser/hsparser.y"
3864 { yyval.utree = mkas(yyvsp[-2].uid,yyvsp[0].utree); ;
3865     break;}
3866 case 412:
3867 #line 1619 "yaccParser/hsparser.y"
3868 { yyval.utree = mklit(yyvsp[0].uliteral); ;
3869     break;}
3870 case 413:
3871 #line 1620 "yaccParser/hsparser.y"
3872 { yyval.utree = mkwildp(); ;
3873     break;}
3874 case 414:
3875 #line 1621 "yaccParser/hsparser.y"
3876 { yyval.utree = mktuple(Lnil); ;
3877     break;}
3878 case 415:
3879 #line 1622 "yaccParser/hsparser.y"
3880 { yyval.utree = mkplusp(mkident(yyvsp[-3].uid),mkinteger(yyvsp[-1].ustring)); ;
3881     break;}
3882 case 416:
3883 #line 1626 "yaccParser/hsparser.y"
3884 { yyval.utree = mkpar(yyvsp[-1].utree); ;
3885     break;}
3886 case 417:
3887 #line 1627 "yaccParser/hsparser.y"
3888 { yyval.utree = mktuple(mklcons(yyvsp[-3].utree,yyvsp[-1].ulist)); ;
3889     break;}
3890 case 418:
3891 #line 1628 "yaccParser/hsparser.y"
3892 { yyval.utree = mkllist(yyvsp[-1].ulist); ;
3893     break;}
3894 case 419:
3895 #line 1629 "yaccParser/hsparser.y"
3896 { yyval.utree = mkllist(Lnil); ;
3897     break;}
3898 case 420:
3899 #line 1630 "yaccParser/hsparser.y"
3900 { yyval.utree = mklazyp(yyvsp[0].utree); ;
3901     break;}
3902 case 421:
3903 #line 1633 "yaccParser/hsparser.y"
3904 { yyval.utree = mkident(yyvsp[0].uid); ;
3905     break;}
3906 case 422:
3907 #line 1634 "yaccParser/hsparser.y"
3908 { yyval.utree = mkident(yyvsp[0].uid); ;
3909     break;}
3910 case 423:
3911 #line 1635 "yaccParser/hsparser.y"
3912 { yyval.utree = mkas(yyvsp[-2].uid,yyvsp[0].utree); ;
3913     break;}
3914 case 424:
3915 #line 1636 "yaccParser/hsparser.y"
3916 { yyval.utree = mklit(yyvsp[0].uliteral); setstartlineno(); ;
3917     break;}
3918 case 425:
3919 #line 1637 "yaccParser/hsparser.y"
3920 { yyval.utree = mkwildp(); setstartlineno(); ;
3921     break;}
3922 case 426:
3923 #line 1638 "yaccParser/hsparser.y"
3924 { yyval.utree = mktuple(Lnil); ;
3925     break;}
3926 case 427:
3927 #line 1639 "yaccParser/hsparser.y"
3928 { yyval.utree = mkplusp(mkident(yyvsp[-3].uid),mkinteger(yyvsp[-1].ustring)); ;
3929     break;}
3930 case 428:
3931 #line 1643 "yaccParser/hsparser.y"
3932 { yyval.utree = mkpar(yyvsp[-1].utree); ;
3933     break;}
3934 case 429:
3935 #line 1644 "yaccParser/hsparser.y"
3936 { yyval.utree = mktuple(mklcons(yyvsp[-3].utree,yyvsp[-1].ulist)); ;
3937     break;}
3938 case 430:
3939 #line 1645 "yaccParser/hsparser.y"
3940 { yyval.utree = mkllist(yyvsp[-1].ulist); ;
3941     break;}
3942 case 431:
3943 #line 1646 "yaccParser/hsparser.y"
3944 { yyval.utree = mkllist(Lnil); ;
3945     break;}
3946 case 432:
3947 #line 1647 "yaccParser/hsparser.y"
3948 { yyval.utree = mklazyp(yyvsp[0].utree); ;
3949     break;}
3950 case 433:
3951 #line 1652 "yaccParser/hsparser.y"
3952 { if (ttree(yyvsp[-1].utree) == tuple)
3953                     yyval.utree = mktuple(mklcons(yyvsp[-3].utree, gtuplelist((struct Stuple *) yyvsp[-1].utree)));
3954                 else
3955                   yyval.utree = mktuple(ldub(yyvsp[-3].utree, yyvsp[-1].utree));
3956                 ;
3957     break;}
3958 case 434:
3959 #line 1658 "yaccParser/hsparser.y"
3960 { yyval.utree = mktuple(Lnil); ;
3961     break;}
3962 case 435:
3963 #line 1666 "yaccParser/hsparser.y"
3964 { yyval.utree = mkpar(yyvsp[0].utree); ;
3965     break;}
3966 case 436:
3967 #line 1668 "yaccParser/hsparser.y"
3968 { if (ttree(yyvsp[0].utree) == tuple)
3969                     yyval.utree = mktuple(mklcons(yyvsp[-2].utree, gtuplelist((struct Stuple *) yyvsp[0].utree)));
3970                 else
3971                   yyval.utree = mktuple(ldub(yyvsp[-2].utree, yyvsp[0].utree));
3972                 ;
3973     break;}
3974 case 437:
3975 #line 1677 "yaccParser/hsparser.y"
3976 { yyval.utree = mkllist(Lnil); ;
3977     break;}
3978 case 438:
3979 #line 1678 "yaccParser/hsparser.y"
3980 { yyval.utree = mkllist(yyvsp[-1].ulist); ;
3981     break;}
3982 case 439:
3983 #line 1682 "yaccParser/hsparser.y"
3984 { yyval.ulist = lsing(yyvsp[0].utree); ;
3985     break;}
3986 case 440:
3987 #line 1683 "yaccParser/hsparser.y"
3988 { yyval.ulist = mklcons(yyvsp[-2].utree, yyvsp[0].ulist); ;
3989     break;}
3990 case 441:
3991 #line 1698 "yaccParser/hsparser.y"
3992 {yyval.utree = mkeenum(yyvsp[-5].utree,lsing(yyvsp[-3].utree),yyvsp[-1].ulist);;
3993     break;}
3994 case 442:
3995 #line 1699 "yaccParser/hsparser.y"
3996 { yyval.utree = mkeenum(yyvsp[-3].utree,Lnil,yyvsp[-1].ulist); ;
3997     break;}
3998 case 443:
3999 #line 1702 "yaccParser/hsparser.y"
4000 { yyval.utree = mkcomprh(yyvsp[-3].utree,yyvsp[-1].ulist); ;
4001     break;}
4002 case 444:
4003 #line 1705 "yaccParser/hsparser.y"
4004 { yyval.ulist = lsing(yyvsp[0].utree); ;
4005     break;}
4006 case 445:
4007 #line 1706 "yaccParser/hsparser.y"
4008 { yyval.ulist = lapp(yyvsp[-2].ulist,yyvsp[0].utree); ;
4009     break;}
4010 case 446:
4011 #line 1709 "yaccParser/hsparser.y"
4012 { inpat = TRUE; ;
4013     break;}
4014 case 447:
4015 #line 1709 "yaccParser/hsparser.y"
4016 { inpat = FALSE; ;
4017     break;}
4018 case 448:
4019 #line 1710 "yaccParser/hsparser.y"
4020 { if (yyvsp[0].utree == NULL) {
4021                     patternOrExpr(/*wanted:*/ LEGIT_EXPR,yyvsp[-2].utree);
4022                     yyval.utree = mkguard(yyvsp[-2].utree);
4023                   } else {
4024                     patternOrExpr(/*wanted:*/ LEGIT_PATT,yyvsp[-2].utree);
4025                     yyval.utree = mkqual(yyvsp[-2].utree,yyvsp[0].utree);
4026 /* OLD: WDP 95/08
4027                       if(ttree($4)==def)
4028                         {
4029                           tree prevpatt_save = PREVPATT;
4030                           PREVPATT = $2;
4031                           $$ = mkdef((tree) mkpbind(lsing(createpat(lsing(mktruecase(ggdef((struct Sdef *) $4))),mknullbind())),hsplineno));
4032                           PREVPATT = prevpatt_save;
4033                         }
4034                       else
4035 */
4036                   }
4037                 ;
4038     break;}
4039 case 449:
4040 #line 1730 "yaccParser/hsparser.y"
4041 { yyval.utree = yyvsp[0].utree; ;
4042     break;}
4043 case 450:
4044 #line 1731 "yaccParser/hsparser.y"
4045 { yyval.utree = NULL; ;
4046     break;}
4047 case 451:
4048 #line 1734 "yaccParser/hsparser.y"
4049 { yyval.ulist = yyvsp[0].ulist; ;
4050     break;}
4051 case 452:
4052 #line 1735 "yaccParser/hsparser.y"
4053 { yyval.ulist = lconc(yyvsp[-2].ulist,yyvsp[0].ulist); ;
4054     break;}
4055 case 453:
4056 #line 1739 "yaccParser/hsparser.y"
4057 { PREVPATT = yyvsp[0].utree; ;
4058     break;}
4059 case 454:
4060 #line 1741 "yaccParser/hsparser.y"
4061 { yyval.ulist = yyvsp[0].ulist;
4062                   PREVPATT = NULL;
4063                 ;
4064     break;}
4065 case 455:
4066 #line 1744 "yaccParser/hsparser.y"
4067 { yyval.ulist = Lnil; ;
4068     break;}
4069 case 456:
4070 #line 1747 "yaccParser/hsparser.y"
4071 { yyval.ulist = lsing(createpat(yyvsp[-1].ulist, yyvsp[0].ubinding)); ;
4072     break;}
4073 case 457:
4074 #line 1748 "yaccParser/hsparser.y"
4075 { yyval.ulist = lsing(createpat(lsing(mktruecase(yyvsp[-1].utree)), yyvsp[0].ubinding)); ;
4076     break;}
4077 case 458:
4078 #line 1751 "yaccParser/hsparser.y"
4079 { yyval.ulist = mklcons(ldub(yyvsp[-3].utree,yyvsp[-1].utree),yyvsp[0].ulist);  ;
4080     break;}
4081 case 459:
4082 #line 1752 "yaccParser/hsparser.y"
4083 { yyval.ulist = lsing(ldub(yyvsp[-2].utree,yyvsp[0].utree)); ;
4084     break;}
4085 case 460:
4086 #line 1755 "yaccParser/hsparser.y"
4087 { yyval.ulist = Lnil; ;
4088     break;}
4089 case 461:
4090 #line 1756 "yaccParser/hsparser.y"
4091 { yyval.ulist = lsing(yyvsp[0].utree); ;
4092     break;}
4093 case 462:
4094 #line 1759 "yaccParser/hsparser.y"
4095 { yyval.ulist = mklcons(yyvsp[-2].utree, yyvsp[0].ulist); ;
4096     break;}
4097 case 463:
4098 #line 1760 "yaccParser/hsparser.y"
4099 { yyval.ulist = lsing(yyvsp[0].utree); ;
4100     break;}
4101 case 465:
4102 #line 1765 "yaccParser/hsparser.y"
4103 { yyval.utree = mkinfixop(yyvsp[-1].uid,yyvsp[-2].utree,yyvsp[0].utree); precparse(yyval.utree); ;
4104     break;}
4105 case 468:
4106 #line 1770 "yaccParser/hsparser.y"
4107 { yyval.utree = mklit(mkinteger(ineg(yyvsp[0].ustring))); ;
4108     break;}
4109 case 469:
4110 #line 1771 "yaccParser/hsparser.y"
4111 { yyval.utree = mklit(mkfloatr(ineg(yyvsp[0].ustring))); ;
4112     break;}
4113 case 470:
4114 #line 1774 "yaccParser/hsparser.y"
4115 { yyval.utree = mkident(yyvsp[0].uid); ;
4116     break;}
4117 case 471:
4118 #line 1775 "yaccParser/hsparser.y"
4119 { yyval.utree = mkap(yyvsp[-1].utree,yyvsp[0].utree); ;
4120     break;}
4121 case 472:
4122 #line 1778 "yaccParser/hsparser.y"
4123 { yyval.utree = mkident(yyvsp[0].uid); ;
4124     break;}
4125 case 474:
4126 #line 1782 "yaccParser/hsparser.y"
4127 { yyval.utree = mkident(yyvsp[0].uid); ;
4128     break;}
4129 case 475:
4130 #line 1783 "yaccParser/hsparser.y"
4131 { yyval.utree = mkas(yyvsp[-2].uid,yyvsp[0].utree); ;
4132     break;}
4133 case 476:
4134 #line 1784 "yaccParser/hsparser.y"
4135 { yyval.utree = mklit(yyvsp[0].uliteral); ;
4136     break;}
4137 case 477:
4138 #line 1785 "yaccParser/hsparser.y"
4139 { yyval.utree = mkwildp(); ;
4140     break;}
4141 case 478:
4142 #line 1786 "yaccParser/hsparser.y"
4143 { yyval.utree = mktuple(Lnil); ;
4144     break;}
4145 case 479:
4146 #line 1787 "yaccParser/hsparser.y"
4147 { yyval.utree = mkplusp(mkident(yyvsp[-3].uid),mkinteger(yyvsp[-1].ustring)); ;
4148     break;}
4149 case 480:
4150 #line 1791 "yaccParser/hsparser.y"
4151 { yyval.utree = mkpar(yyvsp[-1].utree); ;
4152     break;}
4153 case 481:
4154 #line 1792 "yaccParser/hsparser.y"
4155 { yyval.utree = mktuple(mklcons(yyvsp[-3].utree,yyvsp[-1].ulist)); ;
4156     break;}
4157 case 482:
4158 #line 1793 "yaccParser/hsparser.y"
4159 { yyval.utree = mkllist(yyvsp[-1].ulist); ;
4160     break;}
4161 case 483:
4162 #line 1794 "yaccParser/hsparser.y"
4163 { yyval.utree = mkllist(Lnil); ;
4164     break;}
4165 case 484:
4166 #line 1795 "yaccParser/hsparser.y"
4167 { yyval.utree = mklazyp(yyvsp[0].utree); ;
4168     break;}
4169 case 485:
4170 #line 1799 "yaccParser/hsparser.y"
4171 { yyval.uliteral = mkinteger(yyvsp[0].ustring); ;
4172     break;}
4173 case 486:
4174 #line 1800 "yaccParser/hsparser.y"
4175 { yyval.uliteral = mkfloatr(yyvsp[0].ustring); ;
4176     break;}
4177 case 487:
4178 #line 1801 "yaccParser/hsparser.y"
4179 { yyval.uliteral = mkcharr(yyvsp[0].uhstring); ;
4180     break;}
4181 case 488:
4182 #line 1802 "yaccParser/hsparser.y"
4183 { yyval.uliteral = mkstring(yyvsp[0].uhstring); ;
4184     break;}
4185 case 489:
4186 #line 1803 "yaccParser/hsparser.y"
4187 { yyval.uliteral = mkcharprim(yyvsp[0].uhstring); ;
4188     break;}
4189 case 490:
4190 #line 1804 "yaccParser/hsparser.y"
4191 { yyval.uliteral = mkstringprim(yyvsp[0].uhstring); ;
4192     break;}
4193 case 491:
4194 #line 1805 "yaccParser/hsparser.y"
4195 { yyval.uliteral = mkintprim(yyvsp[0].ustring); ;
4196     break;}
4197 case 492:
4198 #line 1806 "yaccParser/hsparser.y"
4199 { yyval.uliteral = mkfloatprim(yyvsp[0].ustring); ;
4200     break;}
4201 case 493:
4202 #line 1807 "yaccParser/hsparser.y"
4203 { yyval.uliteral = mkdoubleprim(yyvsp[0].ustring); ;
4204     break;}
4205 case 494:
4206 #line 1808 "yaccParser/hsparser.y"
4207 { yyval.uliteral = mkclitlit(yyvsp[0].ustring, ""); ;
4208     break;}
4209 case 495:
4210 #line 1809 "yaccParser/hsparser.y"
4211 { yyval.uliteral = mkclitlit(yyvsp[-2].ustring, yyvsp[0].uid); ;
4212     break;}
4213 case 496:
4214 #line 1810 "yaccParser/hsparser.y"
4215 { yyval.uliteral = mknorepi(yyvsp[0].ustring); ;
4216     break;}
4217 case 497:
4218 #line 1811 "yaccParser/hsparser.y"
4219 { yyval.uliteral = mknorepr(yyvsp[-1].ustring, yyvsp[0].ustring); ;
4220     break;}
4221 case 498:
4222 #line 1812 "yaccParser/hsparser.y"
4223 { yyval.uliteral = mknoreps(yyvsp[0].uhstring); ;
4224     break;}
4225 case 499:
4226 #line 1818 "yaccParser/hsparser.y"
4227 { setstartlineno(); ;
4228     break;}
4229 case 500:
4230 #line 1821 "yaccParser/hsparser.y"
4231 { setstartlineno();
4232                           if(etags)
4233 #if 1/*etags*/
4234                             printf("%u\n",startlineno);
4235 #else
4236                             fprintf(stderr,"%u\tdata\n",startlineno);
4237 #endif
4238                         ;
4239     break;}
4240 case 501:
4241 #line 1831 "yaccParser/hsparser.y"
4242 { setstartlineno();
4243                           if(etags)
4244 #if 1/*etags*/
4245                             printf("%u\n",startlineno);
4246 #else
4247                             fprintf(stderr,"%u\ttype\n",startlineno);
4248 #endif
4249                         ;
4250     break;}
4251 case 502:
4252 #line 1841 "yaccParser/hsparser.y"
4253 { setstartlineno();
4254 #if 1/*etags*/
4255 /* OUT:                   if(etags)
4256                             printf("%u\n",startlineno);
4257 */
4258 #else
4259                             fprintf(stderr,"%u\tinstance\n",startlineno);
4260 #endif
4261                         ;
4262     break;}
4263 case 503:
4264 #line 1852 "yaccParser/hsparser.y"
4265 { setstartlineno(); ;
4266     break;}
4267 case 504:
4268 #line 1855 "yaccParser/hsparser.y"
4269 { setstartlineno();
4270                           if(etags)
4271 #if 1/*etags*/
4272                             printf("%u\n",startlineno);
4273 #else
4274                             fprintf(stderr,"%u\tclass\n",startlineno);
4275 #endif
4276                         ;
4277     break;}
4278 case 505:
4279 #line 1865 "yaccParser/hsparser.y"
4280 { setstartlineno(); ;
4281     break;}
4282 case 506:
4283 #line 1868 "yaccParser/hsparser.y"
4284 { setstartlineno();
4285                           if(etags)
4286 #if 1/*etags*/
4287                             printf("%u\n",startlineno);
4288 #else
4289                             fprintf(stderr,"%u\tmodule\n",startlineno);
4290 #endif
4291                         ;
4292     break;}
4293 case 507:
4294 #line 1878 "yaccParser/hsparser.y"
4295 { setstartlineno(); ;
4296     break;}
4297 case 508:
4298 #line 1881 "yaccParser/hsparser.y"
4299 { setstartlineno(); ;
4300     break;}
4301 case 509:
4302 #line 1884 "yaccParser/hsparser.y"
4303 { setstartlineno(); ;
4304     break;}
4305 case 515:
4306 #line 1899 "yaccParser/hsparser.y"
4307 { yyval.uid = yyvsp[-1].uid; ;
4308     break;}
4309 case 518:
4310 #line 1905 "yaccParser/hsparser.y"
4311 { yyval.uid = yyvsp[-1].uid; ;
4312     break;}
4313 case 520:
4314 #line 1909 "yaccParser/hsparser.y"
4315 { yyval.uid = yyvsp[-1].uid; ;
4316     break;}
4317 case 524:
4318 #line 1917 "yaccParser/hsparser.y"
4319 { yyval.uid = install_literal("-"); ;
4320     break;}
4321 case 525:
4322 #line 1920 "yaccParser/hsparser.y"
4323 { yyval.uid = install_literal("+"); ;
4324     break;}
4325 case 527:
4326 #line 1924 "yaccParser/hsparser.y"
4327 { yyval.uid = yyvsp[-1].uid; ;
4328     break;}
4329 case 528:
4330 #line 1927 "yaccParser/hsparser.y"
4331 { setstartlineno(); yyval.uid = yyvsp[0].uid; ;
4332     break;}
4333 case 529:
4334 #line 1928 "yaccParser/hsparser.y"
4335 { yyval.uid = yyvsp[-1].uid; ;
4336     break;}
4337 case 531:
4338 #line 1933 "yaccParser/hsparser.y"
4339 { yyval.uid = yyvsp[-1].uid; ;
4340     break;}
4341 case 532:
4342 #line 1936 "yaccParser/hsparser.y"
4343 { setstartlineno(); yyval.uid = yyvsp[0].uid; ;
4344     break;}
4345 case 533:
4346 #line 1937 "yaccParser/hsparser.y"
4347 { yyval.uid = yyvsp[-1].uid; ;
4348     break;}
4349 case 536:
4350 #line 1944 "yaccParser/hsparser.y"
4351 { yyval.ulist = lsing(yyvsp[0].uttype); ;
4352     break;}
4353 case 537:
4354 #line 1945 "yaccParser/hsparser.y"
4355 { yyval.ulist = lapp(yyvsp[-2].ulist,yyvsp[0].uttype); ;
4356     break;}
4357 case 538:
4358 #line 1948 "yaccParser/hsparser.y"
4359 { yyval.ulist = lsing(yyvsp[0].uttype); ;
4360     break;}
4361 case 539:
4362 #line 1949 "yaccParser/hsparser.y"
4363 { yyval.ulist = lapp(yyvsp[-1].ulist, yyvsp[0].uttype); ;
4364     break;}
4365 case 540:
4366 #line 1952 "yaccParser/hsparser.y"
4367 { yyval.uttype = mknamedtvar(yyvsp[0].uid); ;
4368     break;}
4369 case 544:
4370 #line 1968 "yaccParser/hsparser.y"
4371 { hsincindent(); ;
4372     break;}
4373 case 545:
4374 #line 1970 "yaccParser/hsparser.y"
4375 { hssetindent(); ;
4376     break;}
4377 case 546:
4378 #line 1973 "yaccParser/hsparser.y"
4379 { hsindentoff(); ;
4380     break;}
4381 case 547:
4382 #line 1978 "yaccParser/hsparser.y"
4383 {
4384                   FN = NULL; SAMEFN = 0; PREVPATT = NULL;
4385                   hsendindent();
4386                 ;
4387     break;}
4388 case 548:
4389 #line 1984 "yaccParser/hsparser.y"
4390 { expect_ccurly = 1; ;
4391     break;}
4392 case 549:
4393 #line 1984 "yaccParser/hsparser.y"
4394 { expect_ccurly = 0; ;
4395     break;}
4396 case 550:
4397 #line 1989 "yaccParser/hsparser.y"
4398 {
4399                   FN = NULL; SAMEFN = 0; PREVPATT = NULL;
4400                   hsendindent();
4401                 ;
4402     break;}
4403 case 551:
4404 #line 1994 "yaccParser/hsparser.y"
4405 {
4406                   yyerrok;
4407                   FN = NULL; SAMEFN = 0; PREVPATT = NULL;
4408                   hsendindent();
4409                 ;
4410     break;}
4411 }
4412    /* the action file gets copied in in place of this dollarsign */
4413 #line 487 "/usr/local/gnu/share/bison.simple"
4414 \f
4415   yyvsp -= yylen;
4416   yyssp -= yylen;
4417 #ifdef YYLSP_NEEDED
4418   yylsp -= yylen;
4419 #endif
4420
4421 #if YYDEBUG != 0
4422   if (yydebug)
4423     {
4424       short *ssp1 = yyss - 1;
4425       fprintf (stderr, "state stack now");
4426       while (ssp1 != yyssp)
4427         fprintf (stderr, " %d", *++ssp1);
4428       fprintf (stderr, "\n");
4429     }
4430 #endif
4431
4432   *++yyvsp = yyval;
4433
4434 #ifdef YYLSP_NEEDED
4435   yylsp++;
4436   if (yylen == 0)
4437     {
4438       yylsp->first_line = yylloc.first_line;
4439       yylsp->first_column = yylloc.first_column;
4440       yylsp->last_line = (yylsp-1)->last_line;
4441       yylsp->last_column = (yylsp-1)->last_column;
4442       yylsp->text = 0;
4443     }
4444   else
4445     {
4446       yylsp->last_line = (yylsp+yylen-1)->last_line;
4447       yylsp->last_column = (yylsp+yylen-1)->last_column;
4448     }
4449 #endif
4450
4451   /* Now "shift" the result of the reduction.
4452      Determine what state that goes to,
4453      based on the state we popped back to
4454      and the rule number reduced by.  */
4455
4456   yyn = yyr1[yyn];
4457
4458   yystate = yypgoto[yyn - YYNTBASE] + *yyssp;
4459   if (yystate >= 0 && yystate <= YYLAST && yycheck[yystate] == *yyssp)
4460     yystate = yytable[yystate];
4461   else
4462     yystate = yydefgoto[yyn - YYNTBASE];
4463
4464   goto yynewstate;
4465
4466 yyerrlab:   /* here on detecting error */
4467
4468   if (! yyerrstatus)
4469     /* If not already recovering from an error, report this error.  */
4470     {
4471       ++yynerrs;
4472
4473 #ifdef YYERROR_VERBOSE
4474       yyn = yypact[yystate];
4475
4476       if (yyn > YYFLAG && yyn < YYLAST)
4477         {
4478           int size = 0;
4479           char *msg;
4480           int x, count;
4481
4482           count = 0;
4483           /* Start X at -yyn if nec to avoid negative indexes in yycheck.  */
4484           for (x = (yyn < 0 ? -yyn : 0);
4485                x < (sizeof(yytname) / sizeof(char *)); x++)
4486             if (yycheck[x + yyn] == x)
4487               size += strlen(yytname[x]) + 15, count++;
4488           msg = (char *) malloc(size + 15);
4489           if (msg != 0)
4490             {
4491               strcpy(msg, "parse error");
4492
4493               if (count < 5)
4494                 {
4495                   count = 0;
4496                   for (x = (yyn < 0 ? -yyn : 0);
4497                        x < (sizeof(yytname) / sizeof(char *)); x++)
4498                     if (yycheck[x + yyn] == x)
4499                       {
4500                         strcat(msg, count == 0 ? ", expecting `" : " or `");
4501                         strcat(msg, yytname[x]);
4502                         strcat(msg, "'");
4503                         count++;
4504                       }
4505                 }
4506               yyerror(msg);
4507               free(msg);
4508             }
4509           else
4510             yyerror ("parse error; also virtual memory exceeded");
4511         }
4512       else
4513 #endif /* YYERROR_VERBOSE */
4514         yyerror("parse error");
4515     }
4516
4517   goto yyerrlab1;
4518 yyerrlab1:   /* here on error raised explicitly by an action */
4519
4520   if (yyerrstatus == 3)
4521     {
4522       /* if just tried and failed to reuse lookahead token after an error, discard it.  */
4523
4524       /* return failure if at end of input */
4525       if (yychar == YYEOF)
4526         YYABORT;
4527
4528 #if YYDEBUG != 0
4529       if (yydebug)
4530         fprintf(stderr, "Discarding token %d (%s).\n", yychar, yytname[yychar1]);
4531 #endif
4532
4533       yychar = YYEMPTY;
4534     }
4535
4536   /* Else will try to reuse lookahead token
4537      after shifting the error token.  */
4538
4539   yyerrstatus = 3;              /* Each real token shifted decrements this */
4540
4541   goto yyerrhandle;
4542
4543 yyerrdefault:  /* current state does not do anything special for the error token. */
4544
4545 #if 0
4546   /* This is wrong; only states that explicitly want error tokens
4547      should shift them.  */
4548   yyn = yydefact[yystate];  /* If its default is to accept any token, ok.  Otherwise pop it.*/
4549   if (yyn) goto yydefault;
4550 #endif
4551
4552 yyerrpop:   /* pop the current state because it cannot handle the error token */
4553
4554   if (yyssp == yyss) YYABORT;
4555   yyvsp--;
4556   yystate = *--yyssp;
4557 #ifdef YYLSP_NEEDED
4558   yylsp--;
4559 #endif
4560
4561 #if YYDEBUG != 0
4562   if (yydebug)
4563     {
4564       short *ssp1 = yyss - 1;
4565       fprintf (stderr, "Error: state stack now");
4566       while (ssp1 != yyssp)
4567         fprintf (stderr, " %d", *++ssp1);
4568       fprintf (stderr, "\n");
4569     }
4570 #endif
4571
4572 yyerrhandle:
4573
4574   yyn = yypact[yystate];
4575   if (yyn == YYFLAG)
4576     goto yyerrdefault;
4577
4578   yyn += YYTERROR;
4579   if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != YYTERROR)
4580     goto yyerrdefault;
4581
4582   yyn = yytable[yyn];
4583   if (yyn < 0)
4584     {
4585       if (yyn == YYFLAG)
4586         goto yyerrpop;
4587       yyn = -yyn;
4588       goto yyreduce;
4589     }
4590   else if (yyn == 0)
4591     goto yyerrpop;
4592
4593   if (yyn == YYFINAL)
4594     YYACCEPT;
4595
4596 #if YYDEBUG != 0
4597   if (yydebug)
4598     fprintf(stderr, "Shifting error token, ");
4599 #endif
4600
4601   *++yyvsp = yylval;
4602 #ifdef YYLSP_NEEDED
4603   *++yylsp = yylloc;
4604 #endif
4605
4606   yystate = yyn;
4607   goto yynewstate;
4608 }
4609 #line 2001 "yaccParser/hsparser.y"
4610
4611
4612 /**********************************************************************
4613 *                                                                     *
4614 *      Error Processing and Reporting                                 *
4615 *                                                                     *
4616 *  (This stuff is here in case we want to use Yacc macros and such.)  *
4617 *                                                                     *
4618 **********************************************************************/
4619
4620 /* The parser calls "hsperror" when it sees a
4621    `report this and die' error.  It sets the stage
4622    and calls "yyerror".
4623
4624    There should be no direct calls in the parser to
4625    "yyerror", except for the one from "hsperror".  Thus,
4626    the only other calls will be from the error productions
4627    introduced by yacc/bison/whatever.
4628
4629    We need to be able to recognise the from-error-production
4630    case, because we sometimes want to say, "Oh, never mind",
4631    because the layout rule kicks into action and may save
4632    the day.  [WDP]
4633 */
4634
4635 static BOOLEAN error_and_I_mean_it = FALSE;
4636
4637 void
4638 hsperror(s)
4639   char *s;
4640 {
4641     error_and_I_mean_it = TRUE;
4642     yyerror(s);
4643 }
4644
4645 extern char *yytext;
4646 extern int yyleng;
4647
4648 void
4649 yyerror(s)
4650   char *s;
4651 {
4652     /* We want to be able to distinguish 'error'-raised yyerrors
4653        from yyerrors explicitly coded by the parser hacker.
4654     */
4655     if (expect_ccurly && ! error_and_I_mean_it ) {
4656         /*NOTHING*/;
4657
4658     } else {
4659         fprintf(stderr, "\"%s\", line %d, column %d: %s on input: ",
4660           input_filename, hsplineno, hspcolno + 1, s);
4661
4662         if (yyleng == 1 && *yytext == '\0')
4663             fprintf(stderr, "<EOF>");
4664
4665         else {
4666             fputc('"', stderr);
4667             format_string(stderr, (unsigned char *) yytext, yyleng);
4668             fputc('"', stderr);
4669         }
4670         fputc('\n', stderr);
4671
4672         /* a common problem */
4673         if (strcmp(yytext, "#") == 0)
4674             fprintf(stderr, "\t(Perhaps you forgot a `-cpp' or `-fglasgow-exts' flag?)\n");
4675
4676         exit(1);
4677     }
4678 }
4679
4680 void
4681 format_string(fp, s, len)
4682   FILE *fp;
4683   unsigned char *s;
4684   int len;
4685 {
4686     while (len-- > 0) {
4687         switch (*s) {
4688         case '\0':    fputs("\\NUL", fp);   break;
4689         case '\007':  fputs("\\a", fp);     break;
4690         case '\010':  fputs("\\b", fp);     break;
4691         case '\011':  fputs("\\t", fp);     break;
4692         case '\012':  fputs("\\n", fp);     break;
4693         case '\013':  fputs("\\v", fp);     break;
4694         case '\014':  fputs("\\f", fp);     break;
4695         case '\015':  fputs("\\r", fp);     break;
4696         case '\033':  fputs("\\ESC", fp);   break;
4697         case '\034':  fputs("\\FS", fp);    break;
4698         case '\035':  fputs("\\GS", fp);    break;
4699         case '\036':  fputs("\\RS", fp);    break;
4700         case '\037':  fputs("\\US", fp);    break;
4701         case '\177':  fputs("\\DEL", fp);   break;
4702         default:
4703             if (*s >= ' ')
4704                 fputc(*s, fp);
4705             else
4706                 fprintf(fp, "\\^%c", *s + '@');
4707             break;
4708         }
4709         s++;
4710     }
4711 }