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