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