[project @ 1996-01-08 20:28:12 by partain]
[ghc-hetmet.git] / ghc / compiler / yaccParser / hsparser.tab.c
diff --git a/ghc/compiler/yaccParser/hsparser.tab.c b/ghc/compiler/yaccParser/hsparser.tab.c
new file mode 100644 (file)
index 0000000..7b0fec0
--- /dev/null
@@ -0,0 +1,4665 @@
+
+/*  A Bison parser, made from yaccParser/hsparser.y with Bison version GNU Bison version 1.21
+  */
+
+#define YYBISON 1  /* Identify Bison output.  */
+
+#define        VARID   258
+#define        CONID   259
+#define        VARSYM  260
+#define        CONSYM  261
+#define        MINUS   262
+#define        INTEGER 263
+#define        FLOAT   264
+#define        CHAR    265
+#define        STRING  266
+#define        CHARPRIM        267
+#define        STRINGPRIM      268
+#define        INTPRIM 269
+#define        FLOATPRIM       270
+#define        DOUBLEPRIM      271
+#define        CLITLIT 272
+#define        OCURLY  273
+#define        CCURLY  274
+#define        VCCURLY 275
+#define        SEMI    276
+#define        OBRACK  277
+#define        CBRACK  278
+#define        OPAREN  279
+#define        CPAREN  280
+#define        COMMA   281
+#define        BQUOTE  282
+#define        RARROW  283
+#define        VBAR    284
+#define        EQUAL   285
+#define        DARROW  286
+#define        DOTDOT  287
+#define        DCOLON  288
+#define        LARROW  289
+#define        WILDCARD        290
+#define        AT      291
+#define        LAZY    292
+#define        LAMBDA  293
+#define        LET     294
+#define        IN      295
+#define        WHERE   296
+#define        CASE    297
+#define        OF      298
+#define        TYPE    299
+#define        DATA    300
+#define        CLASS   301
+#define        INSTANCE        302
+#define        DEFAULT 303
+#define        INFIX   304
+#define        INFIXL  305
+#define        INFIXR  306
+#define        MODULE  307
+#define        IMPORT  308
+#define        INTERFACE       309
+#define        HIDING  310
+#define        CCALL   311
+#define        CCALL_GC        312
+#define        CASM    313
+#define        CASM_GC 314
+#define        SCC     315
+#define        IF      316
+#define        THEN    317
+#define        ELSE    318
+#define        RENAMING        319
+#define        DERIVING        320
+#define        TO      321
+#define        LEOF    322
+#define        GHC_PRAGMA      323
+#define        END_PRAGMA      324
+#define        NO_PRAGMA       325
+#define        NOINFO_PRAGMA   326
+#define        ABSTRACT_PRAGMA 327
+#define        SPECIALISE_PRAGMA       328
+#define        MODNAME_PRAGMA  329
+#define        ARITY_PRAGMA    330
+#define        UPDATE_PRAGMA   331
+#define        STRICTNESS_PRAGMA       332
+#define        KIND_PRAGMA     333
+#define        UNFOLDING_PRAGMA        334
+#define        MAGIC_UNFOLDING_PRAGMA  335
+#define        DEFOREST_PRAGMA 336
+#define        SPECIALISE_UPRAGMA      337
+#define        INLINE_UPRAGMA  338
+#define        MAGIC_UNFOLDING_UPRAGMA 339
+#define        ABSTRACT_UPRAGMA        340
+#define        DEFOREST_UPRAGMA        341
+#define        END_UPRAGMA     342
+#define        TYLAMBDA        343
+#define        COCON   344
+#define        COPRIM  345
+#define        COAPP   346
+#define        COTYAPP 347
+#define        FORALL  348
+#define        TYVAR_TEMPLATE_ID       349
+#define        CO_ALG_ALTS     350
+#define        CO_PRIM_ALTS    351
+#define        CO_NO_DEFAULT   352
+#define        CO_LETREC       353
+#define        CO_SDSEL_ID     354
+#define        CO_METH_ID      355
+#define        CO_DEFM_ID      356
+#define        CO_DFUN_ID      357
+#define        CO_CONSTM_ID    358
+#define        CO_SPEC_ID      359
+#define        CO_WRKR_ID      360
+#define        CO_ORIG_NM      361
+#define        UNFOLD_ALWAYS   362
+#define        UNFOLD_IF_ARGS  363
+#define        NOREP_INTEGER   364
+#define        NOREP_RATIONAL  365
+#define        NOREP_STRING    366
+#define        CO_PRELUDE_DICTS_CC     367
+#define        CO_ALL_DICTS_CC 368
+#define        CO_USER_CC      369
+#define        CO_AUTO_CC      370
+#define        CO_DICT_CC      371
+#define        CO_CAF_CC       372
+#define        CO_DUPD_CC      373
+#define        PLUS    374
+
+#line 22 "yaccParser/hsparser.y"
+
+#ifdef HSP_DEBUG
+# define YYDEBUG 1
+#endif
+
+#include <stdio.h>
+#include <ctype.h>
+#include <string.h>
+#include "hspincl.h"
+#include "constants.h"
+#include "utils.h"
+
+/**********************************************************************
+*                                                                     *
+*                                                                     *
+*     Imported Variables and Functions                                *
+*                                                                     *
+*                                                                     *
+**********************************************************************/
+
+BOOLEAN expect_ccurly = FALSE; /* Used to signal that a CCURLY could be inserted here */
+
+extern BOOLEAN nonstandardFlag;
+extern BOOLEAN etags;
+
+extern VOID find_module_on_imports_dirlist PROTO((char *, BOOLEAN, char *));
+
+extern char *input_filename;
+static char *the_module_name;
+static char iface_name[MODNAME_SIZE];
+static char interface_filename[FILENAME_SIZE];
+
+static list module_exports;            /* Exported entities */
+static list prelude_core_import, prelude_imports;
+                                       /* Entities imported from the Prelude */
+
+extern list all;                       /* All valid deriving classes */
+
+extern tree niltree;
+extern list Lnil;
+
+extern tree root;
+
+/* For FN, PREVPATT and SAMEFN macros */
+extern tree fns[];
+extern short samefn[];
+extern tree prevpatt[];
+extern short icontexts;
+
+/* Line Numbers */
+extern int hsplineno, hspcolno;
+extern int startlineno;
+
+
+/**********************************************************************
+*                                                                     *
+*                                                                     *
+*      Fixity and Precedence Declarations                             *
+*                                                                     *
+*                                                                     *
+**********************************************************************/
+
+list fixlist;
+static int Fixity = 0, Precedence = 0;
+struct infix;
+
+char *ineg PROTO((char *));
+
+static BOOLEAN hidden = FALSE;         /*  Set when HIDING used        */
+
+extern BOOLEAN inpat;                  /*  True when parsing a pattern */
+extern BOOLEAN implicitPrelude;                /*  True when we should read the Prelude if not given */
+extern BOOLEAN haskell1_3Flag;         /*  True if we are attempting (proto)Haskell 1.3 */
+
+extern int thisIfacePragmaVersion;
+
+
+#line 100 "yaccParser/hsparser.y"
+typedef union {
+       tree utree;
+       list ulist;
+       ttype uttype;
+       atype uatype;
+       binding ubinding;
+       pbinding upbinding;
+       finfot ufinfo;
+       entidt uentid;
+       id uid;
+       literal uliteral;
+       int uint;
+       float ufloat;
+       char *ustring;
+       hstring uhstring;
+       hpragma uhpragma;
+       coresyn ucoresyn;
+} YYSTYPE;
+
+#ifndef YYLTYPE
+typedef
+  struct yyltype
+    {
+      int timestamp;
+      int first_line;
+      int first_column;
+      int last_line;
+      int last_column;
+      char *text;
+   }
+  yyltype;
+
+#define YYLTYPE yyltype
+#endif
+
+#include <stdio.h>
+
+#ifndef __cplusplus
+#ifndef __STDC__
+#define const
+#endif
+#endif
+
+
+
+#define        YYFINAL         1094
+#define        YYFLAG          -32768
+#define        YYNTBASE        120
+
+#define YYTRANSLATE(x) ((unsigned)(x) <= 374 ? yytranslate[x] : 347)
+
+static const char yytranslate[] = {     0,
+     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+     2,     2,     2,     2,     2,     1,     2,     3,     4,     5,
+     6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
+    16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
+    26,    27,    28,    29,    30,    31,    32,    33,    34,    35,
+    36,    37,    38,    39,    40,    41,    42,    43,    44,    45,
+    46,    47,    48,    49,    50,    51,    52,    53,    54,    55,
+    56,    57,    58,    59,    60,    61,    62,    63,    64,    65,
+    66,    67,    68,    69,    70,    71,    72,    73,    74,    75,
+    76,    77,    78,    79,    80,    81,    82,    83,    84,    85,
+    86,    87,    88,    89,    90,    91,    92,    93,    94,    95,
+    96,    97,    98,    99,   100,   101,   102,   103,   104,   105,
+   106,   107,   108,   109,   110,   111,   112,   113,   114,   115,
+   116,   117,   118,   119
+};
+
+#if YYDEBUG != 0
+static const short yyprhs[] = {     0,
+     0,     4,     5,    12,    13,    16,    22,    28,    32,    36,
+    40,    44,    45,    49,    51,    55,    57,    59,    64,    69,
+    74,    78,    81,    85,    90,    93,    94,    96,    98,   102,
+   104,   106,   111,   116,   121,   125,   130,   134,   135,   138,
+   139,   141,   145,   149,   153,   154,   158,   159,   164,   165,
+   170,   176,   182,   183,   186,   187,   190,   194,   195,   197,
+   204,   206,   209,   211,   214,   216,   218,   220,   223,   227,
+   231,   232,   234,   237,   241,   243,   249,   251,   255,   257,
+   260,   262,   266,   272,   274,   278,   285,   287,   291,   293,
+   295,   296,   298,   300,   304,   308,   313,   318,   323,   330,
+   335,   339,   345,   352,   361,   368,   374,   376,   378,   382,
+   386,   387,   390,   396,   397,   400,   405,   407,   411,   413,
+   417,   421,   424,   429,   436,   443,   450,   452,   454,   456,
+   458,   462,   466,   470,   476,   483,   489,   492,   496,   500,
+   502,   504,   513,   522,   531,   540,   542,   543,   546,   552,
+   555,   559,   561,   565,   567,   569,   571,   574,   576,   580,
+   583,   587,   589,   593,   595,   597,   601,   603,   605,   606,
+   609,   610,   613,   614,   617,   619,   623,   624,   629,   632,
+   637,   640,   644,   646,   650,   654,   658,   659,   662,   664,
+   668,   674,   682,   683,   689,   695,   699,   705,   709,   710,
+   713,   715,   719,   720,   725,   726,   731,   732,   737,   738,
+   742,   743,   747,   748,   752,   754,   758,   760,   764,   766,
+   768,   770,   772,   774,   776,   781,   788,   793,   802,   809,
+   815,   819,   820,   825,   830,   837,   842,   843,   848,   853,
+   855,   859,   863,   866,   870,   876,   879,   885,   887,   889,
+   893,   900,   905,   911,   917,   923,   928,   933,   937,   941,
+   943,   944,   945,   947,   949,   953,   955,   959,   961,   965,
+   967,   969,   971,   973,   975,   976,   983,   988,   994,  1000,
+  1004,  1012,  1018,  1027,  1034,  1041,  1046,  1053,  1058,  1061,
+  1063,  1067,  1069,  1073,  1078,  1080,  1083,  1086,  1088,  1090,
+  1094,  1097,  1099,  1105,  1107,  1109,  1112,  1116,  1120,  1127,
+  1129,  1131,  1134,  1137,  1139,  1143,  1146,  1151,  1153,  1157,
+  1161,  1165,  1168,  1170,  1172,  1176,  1180,  1182,  1184,  1188,
+  1189,  1191,  1195,  1200,  1205,  1207,  1211,  1213,  1215,  1219,
+  1221,  1225,  1226,  1230,  1233,  1235,  1238,  1242,  1247,  1252,
+  1257,  1258,  1261,  1264,  1266,  1272,  1276,  1278,  1280,  1284,
+  1287,  1289,  1290,  1291,  1298,  1305,  1312,  1319,  1326,  1333,
+  1337,  1340,  1344,  1347,  1351,  1354,  1358,  1361,  1365,  1367,
+  1370,  1372,  1375,  1377,  1379,  1381,  1383,  1387,  1392,  1397,
+  1399,  1401,  1403,  1405,  1409,  1411,  1414,  1416,  1420,  1422,
+  1426,  1429,  1431,  1434,  1436,  1439,  1441,  1444,  1446,  1448,
+  1450,  1454,  1456,  1458,  1461,  1467,  1471,  1477,  1481,  1484,
+  1487,  1489,  1491,  1495,  1497,  1499,  1502,  1508,  1512,  1518,
+  1522,  1525,  1528,  1534,  1537,  1539,  1543,  1546,  1550,  1552,
+  1556,  1564,  1570,  1576,  1578,  1582,  1583,  1584,  1589,  1592,
+  1593,  1595,  1599,  1600,  1604,  1605,  1608,  1612,  1617,  1621,
+  1622,  1624,  1628,  1630,  1632,  1636,  1638,  1640,  1643,  1646,
+  1648,  1651,  1653,  1655,  1657,  1661,  1663,  1665,  1668,  1674,
+  1678,  1684,  1688,  1691,  1694,  1696,  1698,  1700,  1702,  1704,
+  1706,  1708,  1710,  1712,  1714,  1718,  1721,  1725,  1728,  1730,
+  1732,  1734,  1736,  1738,  1740,  1742,  1744,  1746,  1748,  1750,
+  1752,  1754,  1756,  1758,  1760,  1764,  1766,  1768,  1772,  1774,
+  1778,  1780,  1782,  1784,  1786,  1788,  1790,  1794,  1796,  1800,
+  1802,  1806,  1808,  1812,  1814,  1816,  1820,  1824,  1826,  1829,
+  1831,  1833,  1835,  1837,  1840,  1842,  1843,  1845,  1846,  1849,
+  1851
+};
+
+static const short yyrhs[] = {   188,
+   190,   121,     0,     0,   317,   339,   125,   122,    41,   124,
+     0,     0,   123,   124,     0,   340,   192,   207,   217,   343,
+     0,   341,   192,   207,   217,   344,     0,   341,   193,   344,
+     0,   340,   193,   343,     0,   341,   192,   344,     0,   340,
+   192,   343,     0,     0,    24,   126,    25,     0,   127,     0,
+   126,    26,   127,     0,   329,     0,   338,     0,   338,    24,
+    32,    25,     0,   338,    24,   260,    25,     0,   338,    24,
+   258,    25,     0,   338,    24,    25,     0,   338,    32,     0,
+    24,   130,    25,     0,    55,    24,   130,    25,     0,    24,
+    25,     0,     0,   128,     0,   131,     0,   130,    26,   131,
+     0,   329,     0,   338,     0,   338,    24,    32,    25,     0,
+   338,    24,   260,    25,     0,   338,    24,   258,    25,     0,
+   338,    24,    25,     0,    68,   250,   133,    69,     0,    68,
+   133,    69,     0,     0,    73,   134,     0,     0,   135,     0,
+   134,    26,   135,     0,    22,   157,    23,     0,    68,    72,
+    69,     0,     0,    68,   151,    69,     0,     0,    68,   143,
+   143,    69,     0,     0,    68,   140,   143,    69,     0,    68,
+   140,   143,   160,    69,     0,    68,   140,   143,   141,    69,
+     0,     0,    74,   339,     0,     0,    73,   155,     0,    68,
+   143,    69,     0,     0,    71,     0,   144,   145,   146,   147,
+   149,   152,     0,    70,     0,    75,     8,     0,    70,     0,
+    76,     8,     0,    70,     0,    81,     0,    70,     0,    77,
+    89,     0,    77,    11,   148,     0,    18,   143,    19,     0,
+     0,    70,     0,    80,   330,     0,    79,   150,   162,     0,
+   107,     0,   108,     8,     8,     4,     8,     0,   143,     0,
+   151,    26,   143,     0,    70,     0,    73,   153,     0,   154,
+     0,   153,    26,   154,     0,    22,   157,    23,     8,   148,
+     0,   156,     0,   155,    26,   156,     0,    22,   157,    23,
+     8,   148,   159,     0,   158,     0,   157,    26,   158,     0,
+    70,     0,   242,     0,     0,   160,     0,   161,     0,   160,
+    26,   161,     0,   329,    30,   143,     0,    38,   176,    28,
+   162,     0,    88,   181,    28,   162,     0,    89,   331,   183,
+   178,     0,    89,   106,   339,   331,   183,   178,     0,    90,
+   175,   183,   178,     0,    91,   162,   178,     0,    92,   162,
+    18,   185,    19,     0,    42,   162,    43,    18,   163,    19,
+     0,    39,    18,   177,    30,   162,    19,    40,   162,     0,
+    98,    18,   169,    19,    40,   162,     0,    60,    18,   171,
+    19,   162,     0,   309,     0,   174,     0,    95,   164,   168,
+     0,    96,   166,   168,     0,     0,   164,   165,     0,   174,
+   176,    28,   162,    21,     0,     0,   166,   167,     0,   309,
+    28,   162,    21,     0,    97,     0,   177,    28,   162,     0,
+   170,     0,   169,    21,   170,     0,   177,    30,   162,     0,
+   112,   173,     0,   113,    11,    11,   173,     0,   114,    11,
+    11,    11,   173,   172,     0,   115,   174,    11,    11,   173,
+   172,     0,   116,   174,    11,    11,   173,   172,     0,    70,
+     0,   117,     0,    70,     0,   118,     0,    99,   338,   338,
+     0,   100,   338,   329,     0,   101,   338,   329,     0,   102,
+   338,    24,   185,    25,     0,   103,   338,   329,    24,   185,
+    25,     0,   104,   174,    22,   186,    23,     0,   105,   174,
+     0,   106,   339,   329,     0,   106,   339,   331,     0,   329,
+     0,   331,     0,    24,    56,   333,    18,   183,   185,    19,
+    25,     0,    24,    57,   333,    18,   183,   185,    19,    25,
+     0,    24,    58,   309,    18,   183,   185,    19,    25,     0,
+    24,    59,   309,    18,   183,   185,    19,    25,     0,     3,
+     0,     0,   176,   177,     0,    24,     3,    33,   185,    25,
+     0,    22,    23,     0,    22,   179,    23,     0,   180,     0,
+   179,    26,   180,     0,   309,     0,   174,     0,     3,     0,
+   181,     3,     0,    94,     0,   182,    26,    94,     0,    22,
+    23,     0,    22,   184,    23,     0,   185,     0,   184,    26,
+   185,     0,   242,     0,   187,     0,   186,    26,   187,     0,
+    70,     0,   185,     0,     0,   189,   197,     0,     0,   191,
+   197,     0,     0,   193,    21,     0,   194,     0,   193,    21,
+   194,     0,     0,    53,   339,   195,   196,     0,   197,   129,
+     0,   197,   129,    64,   198,     0,   204,    67,     0,    24,
+   199,    25,     0,   200,     0,   199,    26,   200,     0,   329,
+    66,   329,     0,   331,    66,   331,     0,     0,   202,    21,
+     0,   203,     0,   202,    21,   203,     0,   310,   339,    24,
+   130,    25,     0,   310,   339,    24,   130,    25,    64,   198,
+     0,     0,    54,   339,   205,    41,   206,     0,   340,   201,
+   207,   233,   343,     0,   340,   202,   343,     0,   341,   201,
+   207,   233,   344,     0,   341,   202,   344,     0,     0,   208,
+    21,     0,   209,     0,   208,    21,   209,     0,     0,    50,
+     8,   210,   216,     0,     0,    51,     8,   211,   216,     0,
+     0,    49,     8,   212,   216,     0,     0,    50,   213,   216,
+     0,     0,    51,   214,   216,     0,     0,    49,   215,   216,
+     0,   322,     0,   216,    26,   322,     0,   218,     0,   217,
+    21,   218,     0,   219,     0,   220,     0,   221,     0,   223,
+     0,   226,     0,   229,     0,   312,   248,    30,   242,     0,
+   311,   254,    31,   248,    30,   250,     0,   311,   248,    30,
+   250,     0,   311,   254,    31,   248,    30,   250,    65,   252,
+     0,   311,   248,    30,   250,    65,   252,     0,   315,   254,
+    31,   240,   222,     0,   315,   240,   222,     0,     0,    41,
+   340,   228,   343,     0,    41,   341,   228,   344,     0,   313,
+   254,    31,   337,   225,   224,     0,   313,   337,   225,   224,
+     0,     0,    41,   340,   256,   343,     0,    41,   341,   256,
+   344,     0,   338,     0,    24,   249,    25,     0,    24,   334,
+    25,     0,    24,    25,     0,    22,   246,    23,     0,    24,
+   246,    28,   246,    25,     0,   314,   227,     0,    24,   242,
+    26,   241,    25,     0,   245,     0,   229,     0,   228,    21,
+   229,     0,   258,    33,   242,    31,   242,   138,     0,   258,
+    33,   242,   138,     0,    82,   330,    33,   231,    87,     0,
+    82,    47,     4,   225,    87,     0,    82,    45,   338,   244,
+    87,     0,    83,   330,   230,    87,     0,    84,   330,   330,
+    87,     0,    86,   330,    87,     0,    85,   338,    87,     0,
+   261,     0,     0,     0,     4,     0,   232,     0,   231,    26,
+   232,     0,   242,     0,   242,    30,   330,     0,   234,     0,
+   233,    21,   234,     0,   236,     0,   237,     0,   238,     0,
+   239,     0,   235,     0,     0,   258,    33,   242,    31,   242,
+   142,     0,   258,    33,   242,   142,     0,   312,   248,    30,
+   242,   136,     0,   311,   254,    31,   248,   132,     0,   311,
+   248,   132,     0,   311,   254,    31,   248,    30,   250,   132,
+     0,   311,   248,    30,   250,   132,     0,   311,   254,    31,
+   248,    30,   250,    65,   252,     0,   311,   248,    30,   250,
+    65,   252,     0,   315,   254,    31,   240,   137,   222,     0,
+   315,   240,   137,   222,     0,   313,   254,    31,   337,   225,
+   139,     0,   313,   337,   225,   139,     0,   338,   336,     0,
+   242,     0,   241,    26,   242,     0,   243,     0,   243,    28,
+   242,     0,    93,   182,    31,   242,     0,   246,     0,   338,
+   244,     0,   244,   246,     0,   246,     0,   247,     0,   243,
+    28,   242,     0,   338,   244,     0,   247,     0,    24,   242,
+    26,   241,    25,     0,   336,     0,   338,     0,    24,    25,
+     0,    24,   242,    25,     0,    22,   242,    23,     0,    18,
+    18,     4,   242,    19,    19,     0,    94,     0,   338,     0,
+   338,   335,     0,   338,   244,     0,   251,     0,   250,    29,
+   251,     0,   338,   244,     0,    24,     6,    25,   244,     0,
+   338,     0,    24,     6,    25,     0,   243,   325,   243,     0,
+    24,   253,    25,     0,    24,    25,     0,   337,     0,   337,
+     0,   253,    26,   337,     0,    24,   255,    25,     0,   240,
+     0,   240,     0,   255,    26,   240,     0,     0,   257,     0,
+   256,    21,   257,     0,    83,   330,   230,    87,     0,    84,
+   330,   330,    87,     0,   261,     0,   330,    26,   259,     0,
+   330,     0,   329,     0,   259,    26,   329,     0,   331,     0,
+   260,    26,   331,     0,     0,   278,   262,   263,     0,   264,
+   266,     0,   265,     0,    30,   269,     0,   267,    30,   269,
+     0,   267,    30,   269,   265,     0,    41,   340,   228,   343,
+     0,    41,   341,   228,   344,     0,     0,    29,   270,     0,
+   307,   268,     0,   307,     0,   270,    33,   242,    31,   242,
+     0,   270,    33,   242,     0,   270,     0,   271,     0,   270,
+   322,   270,     0,     7,   272,     0,   272,     0,     0,     0,
+    38,   273,   268,   274,    28,   269,     0,    39,   340,   228,
+   343,    40,   269,     0,    39,   341,   228,   344,    40,   269,
+     0,    61,   269,    62,   269,    63,   269,     0,    42,   269,
+    43,   340,   297,   343,     0,    42,   269,    43,   341,   297,
+   344,     0,    56,   333,   276,     0,    56,   333,     0,    57,
+   333,   276,     0,    57,   333,     0,    58,    17,   276,     0,
+    58,    17,     0,    59,    17,   276,     0,    59,    17,     0,
+    60,    11,   269,     0,   275,     0,   275,   277,     0,   277,
+     0,   276,   277,     0,   277,     0,   329,     0,   331,     0,
+   309,     0,    24,   269,    25,     0,    24,   270,   322,    25,
+     0,    24,   321,   270,    25,     0,   286,     0,   288,     0,
+   290,     0,   291,     0,   329,    36,   277,     0,    35,     0,
+    37,   277,     0,   282,     0,   278,   322,   279,     0,   280,
+     0,   279,   322,   279,     0,     7,   281,     0,   281,     0,
+   281,   284,     0,   284,     0,   316,   281,     0,   283,     0,
+   283,   284,     0,   285,     0,   331,     0,   329,     0,   329,
+    36,   307,     0,   309,     0,    35,     0,    24,    25,     0,
+    24,   329,   119,     8,    25,     0,    24,   279,    25,     0,
+    24,   279,    26,   303,    25,     0,    22,   303,    23,     0,
+    22,    23,     0,    37,   307,     0,   332,     0,   330,     0,
+   330,    36,   307,     0,   309,     0,    35,     0,   318,    25,
+     0,   318,   329,   119,     8,    25,     0,   318,   279,    25,
+     0,   318,   279,    26,   303,    25,     0,   319,   303,    23,
+     0,   319,    23,     0,   320,   307,     0,    24,   269,    26,
+   287,    25,     0,    24,    25,     0,   269,     0,   269,    26,
+   287,     0,    22,    23,     0,    22,   289,    23,     0,   269,
+     0,   269,    26,   289,     0,    22,   269,    26,   269,    32,
+   302,    23,     0,    22,   269,    32,   302,    23,     0,    22,
+   269,    29,   292,    23,     0,   293,     0,   292,    26,   293,
+     0,     0,     0,   294,   269,   295,   296,     0,    34,   269,
+     0,     0,   298,     0,   297,    21,   298,     0,     0,   304,
+   299,   300,     0,     0,   301,   266,     0,    28,   269,   266,
+     0,   267,    28,   269,   301,     0,   267,    28,   269,     0,
+     0,   269,     0,   304,    26,   303,     0,   304,     0,   305,
+     0,   304,   325,   305,     0,   308,     0,   306,     0,     7,
+     8,     0,     7,     9,     0,   331,     0,   306,   307,     0,
+   331,     0,   308,     0,   329,     0,   329,    36,   307,     0,
+   309,     0,    35,     0,    24,    25,     0,    24,   329,   119,
+     8,    25,     0,    24,   304,    25,     0,    24,   304,    26,
+   303,    25,     0,    22,   303,    23,     0,    22,    23,     0,
+    37,   307,     0,     8,     0,     9,     0,    10,     0,    11,
+     0,    12,     0,    13,     0,    14,     0,    15,     0,    16,
+     0,    17,     0,    17,    78,     4,     0,   109,     8,     0,
+   110,     8,     8,     0,   111,    11,     0,    53,     0,    45,
+     0,    44,     0,    47,     0,    48,     0,    46,     0,     7,
+     0,    52,     0,    24,     0,    22,     0,    37,     0,   325,
+     0,   324,     0,   325,     0,   323,     0,   326,     0,    27,
+     3,    27,     0,     5,     0,   328,     0,    27,     3,    27,
+     0,     6,     0,    27,     4,    27,     0,     5,     0,   328,
+     0,   327,     0,     7,     0,   119,     0,     3,     0,    24,
+   326,    25,     0,     3,     0,   318,   326,    25,     0,   338,
+     0,    24,     6,    25,     0,   338,     0,   318,     6,    25,
+     0,     3,     0,     4,     0,   246,    26,   246,     0,   246,
+    26,   334,     0,   336,     0,   335,   336,     0,     3,     0,
+   338,     0,     4,     0,     4,     0,   342,    18,     0,   342,
+     0,     0,    19,     0,     0,   345,   346,     0,    20,     0,
+     1,     0
+};
+
+#endif
+
+#if YYDEBUG != 0
+static const short yyrline[] = { 0,
+   331,   334,   336,   337,   339,   342,   346,   351,   355,   361,
+   365,   372,   373,   376,   378,   381,   383,   384,   385,   389,
+   393,   397,   404,   405,   406,   409,   410,   413,   415,   418,
+   420,   421,   422,   426,   430,   438,   441,   443,   446,   449,
+   452,   454,   458,   462,   464,   467,   469,   472,   475,   479,
+   483,   486,   489,   493,   496,   500,   503,   506,   510,   513,
+   517,   519,   522,   524,   527,   529,   532,   534,   537,   541,
+   543,   545,   547,   549,   553,   556,   560,   562,   565,   567,
+   570,   572,   575,   580,   582,   585,   590,   592,   595,   597,
+   600,   602,   605,   607,   610,   619,   622,   624,   626,   628,
+   630,   632,   634,   636,   638,   640,   642,   643,   646,   649,
+   653,   655,   658,   663,   665,   668,   672,   674,   677,   679,
+   682,   686,   688,   689,   691,   693,   696,   697,   699,   700,
+   702,   704,   705,   706,   708,   710,   712,   713,   714,   715,
+   716,   719,   722,   724,   726,   728,   731,   733,   736,   739,
+   741,   744,   746,   749,   751,   754,   756,   759,   761,   764,
+   766,   769,   771,   774,   794,   796,   799,   801,   806,   821,
+   828,   842,   849,   850,   853,   854,   857,   879,   885,   889,
+   893,   901,   904,   906,   909,   910,   913,   914,   917,   918,
+   921,   923,   928,   933,   946,   950,   954,   958,   964,   965,
+   969,   970,   973,   976,   976,   979,   979,   982,   982,   985,
+   985,   988,   988,   991,   993,   994,   997,   998,  1017,  1018,
+  1019,  1020,  1021,  1022,  1025,  1029,  1031,  1033,  1035,  1039,
+  1040,  1043,  1044,  1045,  1048,  1049,  1052,  1053,  1054,  1057,
+  1058,  1060,  1061,  1062,  1063,  1066,  1069,  1070,  1077,  1078,
+  1107,  1112,  1125,  1131,  1137,  1143,  1149,  1155,  1161,  1169,
+  1170,  1173,  1175,  1177,  1179,  1182,  1184,  1186,  1187,  1190,
+  1191,  1192,  1193,  1194,  1195,  1199,  1201,  1205,  1209,  1211,
+  1213,  1215,  1217,  1219,  1223,  1225,  1229,  1231,  1238,  1242,
+  1243,  1246,  1247,  1249,  1252,  1253,  1256,  1257,  1261,  1262,
+  1263,  1266,  1267,  1270,  1271,  1272,  1273,  1274,  1276,  1278,
+  1282,  1283,  1287,  1293,  1294,  1298,  1299,  1300,  1301,  1302,
+  1305,  1306,  1307,  1310,  1311,  1314,  1315,  1318,  1319,  1322,
+  1323,  1324,  1337,  1344,  1350,  1354,  1355,  1359,  1360,  1363,
+  1364,  1368,  1394,  1408,  1411,  1412,  1415,  1416,  1419,  1421,
+  1422,  1425,  1429,  1430,  1439,  1440,  1441,  1450,  1451,  1461,
+  1462,  1469,  1477,  1480,  1486,  1487,  1490,  1493,  1494,  1497,
+  1498,  1499,  1500,  1501,  1502,  1503,  1504,  1507,  1521,  1526,
+  1527,  1530,  1531,  1541,  1542,  1543,  1544,  1545,  1546,  1549,
+  1550,  1551,  1552,  1555,  1556,  1557,  1590,  1591,  1605,  1606,
+  1626,  1627,  1631,  1632,  1635,  1636,  1640,  1641,  1644,  1645,
+  1646,  1647,  1648,  1649,  1650,  1654,  1655,  1656,  1657,  1658,
+  1661,  1662,  1663,  1664,  1665,  1666,  1667,  1671,  1672,  1673,
+  1674,  1675,  1685,  1691,  1695,  1696,  1706,  1707,  1710,  1712,
+  1727,  1728,  1731,  1734,  1735,  1738,  1738,  1739,  1757,  1758,
+  1761,  1762,  1765,  1768,  1771,  1774,  1775,  1778,  1779,  1782,
+  1783,  1786,  1787,  1791,  1792,  1795,  1796,  1797,  1798,  1801,
+  1802,  1805,  1806,  1809,  1810,  1811,  1812,  1813,  1814,  1818,
+  1819,  1820,  1821,  1822,  1825,  1827,  1828,  1829,  1830,  1831,
+  1832,  1833,  1834,  1835,  1836,  1837,  1838,  1839,  1845,  1848,
+  1858,  1868,  1879,  1882,  1892,  1895,  1905,  1908,  1911,  1917,
+  1918,  1921,  1922,  1925,  1926,  1930,  1931,  1932,  1935,  1936,
+  1939,  1940,  1941,  1944,  1947,  1950,  1951,  1954,  1955,  1959,
+  1960,  1963,  1964,  1967,  1968,  1972,  1973,  1977,  1978,  1981,
+  1984,  1990,  1993,  1997,  1999,  2002,  2005,  2013,  2013,  2016,
+  2022
+};
+
+static const char * const yytname[] = {   "$","error","$illegal.","VARID","CONID",
+"VARSYM","CONSYM","MINUS","INTEGER","FLOAT","CHAR","STRING","CHARPRIM","STRINGPRIM",
+"INTPRIM","FLOATPRIM","DOUBLEPRIM","CLITLIT","OCURLY","CCURLY","VCCURLY","SEMI",
+"OBRACK","CBRACK","OPAREN","CPAREN","COMMA","BQUOTE","RARROW","VBAR","EQUAL",
+"DARROW","DOTDOT","DCOLON","LARROW","WILDCARD","AT","LAZY","LAMBDA","LET","IN",
+"WHERE","CASE","OF","TYPE","DATA","CLASS","INSTANCE","DEFAULT","INFIX","INFIXL",
+"INFIXR","MODULE","IMPORT","INTERFACE","HIDING","CCALL","CCALL_GC","CASM","CASM_GC",
+"SCC","IF","THEN","ELSE","RENAMING","DERIVING","TO","LEOF","GHC_PRAGMA","END_PRAGMA",
+"NO_PRAGMA","NOINFO_PRAGMA","ABSTRACT_PRAGMA","SPECIALISE_PRAGMA","MODNAME_PRAGMA",
+"ARITY_PRAGMA","UPDATE_PRAGMA","STRICTNESS_PRAGMA","KIND_PRAGMA","UNFOLDING_PRAGMA",
+"MAGIC_UNFOLDING_PRAGMA","DEFOREST_PRAGMA","SPECIALISE_UPRAGMA","INLINE_UPRAGMA",
+"MAGIC_UNFOLDING_UPRAGMA","ABSTRACT_UPRAGMA","DEFOREST_UPRAGMA","END_UPRAGMA",
+"TYLAMBDA","COCON","COPRIM","COAPP","COTYAPP","FORALL","TYVAR_TEMPLATE_ID","CO_ALG_ALTS",
+"CO_PRIM_ALTS","CO_NO_DEFAULT","CO_LETREC","CO_SDSEL_ID","CO_METH_ID","CO_DEFM_ID",
+"CO_DFUN_ID","CO_CONSTM_ID","CO_SPEC_ID","CO_WRKR_ID","CO_ORIG_NM","UNFOLD_ALWAYS",
+"UNFOLD_IF_ARGS","NOREP_INTEGER","NOREP_RATIONAL","NOREP_STRING","CO_PRELUDE_DICTS_CC",
+"CO_ALL_DICTS_CC","CO_USER_CC","CO_AUTO_CC","CO_DICT_CC","CO_CAF_CC","CO_DUPD_CC",
+"PLUS","pmodule","module","@1","@2","body","maybeexports","export_list","export",
+"impspec","maybeimpspec","import_list","import","idata_pragma","idata_pragma_specs",
+"idata_pragma_specslist","idata_pragma_spectypes","itype_pragma","iclas_pragma",
+"iclasop_pragma","iinst_pragma","modname_pragma","restof_iinst_spec","ival_pragma",
+"gen_pragma","arity_pragma","update_pragma","deforest_pragma","strictness_pragma",
+"worker_info","unfolding_pragma","unfolding_guidance","gen_pragma_list","type_pragma_pairs_maybe",
+"type_pragma_pairs","type_pragma_pair","type_instpragma_pairs","type_instpragma_pair",
+"type_maybes","type_maybe","maybe_name_pragma_pairs","name_pragma_pairs","name_pragma_pair",
+"core_expr","core_case_alts","core_alg_alts","core_alg_alt","core_prim_alts",
+"core_prim_alt","core_default","corec_binds","corec_bind","co_scc","co_caf",
+"co_dupd","core_id","co_primop","core_binders","core_binder","core_atoms","core_atom_list",
+"core_atom","core_tyvars","core_tv_templates","core_types","core_type_list",
+"core_type","core_type_maybes","core_type_maybe","readpreludecore","@3","readprelude",
+"@4","maybeimpdecls","impdecls","impdecl","@5","impdecl_rest","readinterface",
+"renamings","renaming_list","renaming","maybeiimports","iimports","iimport",
+"interface","@6","ibody","maybefixes","fixes","fix","@7","@8","@9","@10","@11",
+"@12","ops","topdecls","topdecl","typed","datad","classd","cbody","instd","rinst",
+"inst","defaultd","dtypes","decls","decl","howto_inline_maybe","types_and_maybe_ids",
+"type_and_maybe_id","itopdecls","itopdecl","ivarsd","ityped","idatad","iclassd",
+"iinstd","class","types","type","btype","atypes","ttype","atype","ntatype","simple",
+"simple_long","constrs","constr","tyclses","tycls_list","context","context_list",
+"instdefs","instdef","vars","varsrest","cons","valdef","@13","valrhs","valrhs1",
+"gdrhs","maybe_where","gd","lampats","exp","oexp","dexp","kexp","@14","@15",
+"fexp","cexp","aexp","opatk","opat","dpat","fpat","dpatk","fpatk","aapat","aapatk",
+"tuple","texps","list","list_exps","sequence","comprehension","quals","qual",
+"@16","@17","qualrest","alts","alt","@18","altrest","gdpat","upto","pats","pat",
+"bpat","conpat","apat","apatc","lit_constant","importkey","datakey","typekey",
+"instkey","defaultkey","classkey","minuskey","modulekey","oparenkey","obrackkey",
+"lazykey","op1","op","varop","varop1","conop","varsym","minus","plus","var",
+"vark","con","conk","ccallid","atype_list","tyvars","tyvar","tycls","tycon",
+"modid","ocurly","vocurly","layout","ccurly","vccurly","@19","vccurly1",""
+};
+#endif
+
+static const short yyr1[] = {     0,
+   120,   122,   121,   123,   121,   124,   124,   124,   124,   124,
+   124,   125,   125,   126,   126,   127,   127,   127,   127,   127,
+   127,   127,   128,   128,   128,   129,   129,   130,   130,   131,
+   131,   131,   131,   131,   131,   132,   132,   132,   133,   133,
+   134,   134,   135,   136,   136,   137,   137,   138,   138,   139,
+   139,   139,   139,   140,   140,   141,   142,   142,   143,   143,
+   144,   144,   145,   145,   146,   146,   147,   147,   147,   148,
+   148,   149,   149,   149,   150,   150,   151,   151,   152,   152,
+   153,   153,   154,   155,   155,   156,   157,   157,   158,   158,
+   159,   159,   160,   160,   161,   162,   162,   162,   162,   162,
+   162,   162,   162,   162,   162,   162,   162,   162,   163,   163,
+   164,   164,   165,   166,   166,   167,   168,   168,   169,   169,
+   170,   171,   171,   171,   171,   171,   172,   172,   173,   173,
+   174,   174,   174,   174,   174,   174,   174,   174,   174,   174,
+   174,   175,   175,   175,   175,   175,   176,   176,   177,   178,
+   178,   179,   179,   180,   180,   181,   181,   182,   182,   183,
+   183,   184,   184,   185,   186,   186,   187,   187,   189,   188,
+   191,   190,   192,   192,   193,   193,   195,   194,   196,   196,
+   197,   198,   199,   199,   200,   200,   201,   201,   202,   202,
+   203,   203,   205,   204,   206,   206,   206,   206,   207,   207,
+   208,   208,   210,   209,   211,   209,   212,   209,   213,   209,
+   214,   209,   215,   209,   216,   216,   217,   217,   218,   218,
+   218,   218,   218,   218,   219,   220,   220,   220,   220,   221,
+   221,   222,   222,   222,   223,   223,   224,   224,   224,   225,
+   225,   225,   225,   225,   225,   226,   227,   227,   228,   228,
+   229,   229,   229,   229,   229,   229,   229,   229,   229,   229,
+   229,   230,   230,   231,   231,   232,   232,   233,   233,   234,
+   234,   234,   234,   234,   234,   235,   235,   236,   237,   237,
+   237,   237,   237,   237,   238,   238,   239,   239,   240,   241,
+   241,   242,   242,   242,   243,   243,   244,   244,   245,   245,
+   245,   246,   246,   247,   247,   247,   247,   247,   247,   247,
+   248,   248,   249,   250,   250,   251,   251,   251,   251,   251,
+   252,   252,   252,   253,   253,   254,   254,   255,   255,   256,
+   256,   256,   257,   257,   257,   258,   258,   259,   259,   260,
+   260,   262,   261,   263,   264,   264,   265,   265,   266,   266,
+   266,   267,   268,   268,   269,   269,   269,   270,   270,   271,
+   271,   273,   274,   272,   272,   272,   272,   272,   272,   272,
+   272,   272,   272,   272,   272,   272,   272,   272,   272,   275,
+   275,   276,   276,   277,   277,   277,   277,   277,   277,   277,
+   277,   277,   277,   277,   277,   277,   278,   278,   279,   279,
+   280,   280,   281,   281,   282,   282,   283,   283,   284,   284,
+   284,   284,   284,   284,   284,   284,   284,   284,   284,   284,
+   285,   285,   285,   285,   285,   285,   285,   285,   285,   285,
+   285,   285,   286,   286,   287,   287,   288,   288,   289,   289,
+   290,   290,   291,   292,   292,   294,   295,   293,   296,   296,
+   297,   297,   299,   298,   298,   300,   300,   301,   301,   302,
+   302,   303,   303,   304,   304,   305,   305,   305,   305,   306,
+   306,   307,   307,   308,   308,   308,   308,   308,   308,   308,
+   308,   308,   308,   308,   309,   309,   309,   309,   309,   309,
+   309,   309,   309,   309,   309,   309,   309,   309,   310,   311,
+   312,   313,   314,   315,   316,   317,   318,   319,   320,   321,
+   321,   322,   322,   323,   323,   324,   324,   324,   325,   325,
+   326,   326,   326,   327,   328,   329,   329,   330,   330,   331,
+   331,   332,   332,   333,   333,   334,   334,   335,   335,   336,
+   337,   338,   339,   340,   341,   342,   343,   345,   344,   346,
+   346
+};
+
+static const short yyr2[] = {     0,
+     3,     0,     6,     0,     2,     5,     5,     3,     3,     3,
+     3,     0,     3,     1,     3,     1,     1,     4,     4,     4,
+     3,     2,     3,     4,     2,     0,     1,     1,     3,     1,
+     1,     4,     4,     4,     3,     4,     3,     0,     2,     0,
+     1,     3,     3,     3,     0,     3,     0,     4,     0,     4,
+     5,     5,     0,     2,     0,     2,     3,     0,     1,     6,
+     1,     2,     1,     2,     1,     1,     1,     2,     3,     3,
+     0,     1,     2,     3,     1,     5,     1,     3,     1,     2,
+     1,     3,     5,     1,     3,     6,     1,     3,     1,     1,
+     0,     1,     1,     3,     3,     4,     4,     4,     6,     4,
+     3,     5,     6,     8,     6,     5,     1,     1,     3,     3,
+     0,     2,     5,     0,     2,     4,     1,     3,     1,     3,
+     3,     2,     4,     6,     6,     6,     1,     1,     1,     1,
+     3,     3,     3,     5,     6,     5,     2,     3,     3,     1,
+     1,     8,     8,     8,     8,     1,     0,     2,     5,     2,
+     3,     1,     3,     1,     1,     1,     2,     1,     3,     2,
+     3,     1,     3,     1,     1,     3,     1,     1,     0,     2,
+     0,     2,     0,     2,     1,     3,     0,     4,     2,     4,
+     2,     3,     1,     3,     3,     3,     0,     2,     1,     3,
+     5,     7,     0,     5,     5,     3,     5,     3,     0,     2,
+     1,     3,     0,     4,     0,     4,     0,     4,     0,     3,
+     0,     3,     0,     3,     1,     3,     1,     3,     1,     1,
+     1,     1,     1,     1,     4,     6,     4,     8,     6,     5,
+     3,     0,     4,     4,     6,     4,     0,     4,     4,     1,
+     3,     3,     2,     3,     5,     2,     5,     1,     1,     3,
+     6,     4,     5,     5,     5,     4,     4,     3,     3,     1,
+     0,     0,     1,     1,     3,     1,     3,     1,     3,     1,
+     1,     1,     1,     1,     0,     6,     4,     5,     5,     3,
+     7,     5,     8,     6,     6,     4,     6,     4,     2,     1,
+     3,     1,     3,     4,     1,     2,     2,     1,     1,     3,
+     2,     1,     5,     1,     1,     2,     3,     3,     6,     1,
+     1,     2,     2,     1,     3,     2,     4,     1,     3,     3,
+     3,     2,     1,     1,     3,     3,     1,     1,     3,     0,
+     1,     3,     4,     4,     1,     3,     1,     1,     3,     1,
+     3,     0,     3,     2,     1,     2,     3,     4,     4,     4,
+     0,     2,     2,     1,     5,     3,     1,     1,     3,     2,
+     1,     0,     0,     6,     6,     6,     6,     6,     6,     3,
+     2,     3,     2,     3,     2,     3,     2,     3,     1,     2,
+     1,     2,     1,     1,     1,     1,     3,     4,     4,     1,
+     1,     1,     1,     3,     1,     2,     1,     3,     1,     3,
+     2,     1,     2,     1,     2,     1,     2,     1,     1,     1,
+     3,     1,     1,     2,     5,     3,     5,     3,     2,     2,
+     1,     1,     3,     1,     1,     2,     5,     3,     5,     3,
+     2,     2,     5,     2,     1,     3,     2,     3,     1,     3,
+     7,     5,     5,     1,     3,     0,     0,     4,     2,     0,
+     1,     3,     0,     3,     0,     2,     3,     4,     3,     0,
+     1,     3,     1,     1,     3,     1,     1,     2,     2,     1,
+     2,     1,     1,     1,     3,     1,     1,     2,     5,     3,
+     5,     3,     2,     2,     1,     1,     1,     1,     1,     1,
+     1,     1,     1,     1,     3,     2,     3,     2,     1,     1,
+     1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
+     1,     1,     1,     1,     3,     1,     1,     3,     1,     3,
+     1,     1,     1,     1,     1,     1,     3,     1,     3,     1,
+     3,     1,     3,     1,     1,     3,     3,     1,     2,     1,
+     1,     1,     1,     2,     1,     0,     1,     0,     2,     1,
+     1
+};
+
+static const short yydefact[] = {   169,
+   171,     0,     4,     0,     0,   170,     0,   506,     1,   546,
+     0,   172,   543,   193,   181,     5,   173,   173,   545,    12,
+     0,     0,   199,     0,   175,   199,   548,   544,     0,     2,
+   546,   177,   547,   213,   209,   211,   261,     0,   201,    11,
+   174,     9,   261,    10,     0,     8,   526,   542,     0,     0,
+    14,    16,    17,     0,   194,   187,   187,     0,   207,     0,
+   203,     0,   205,     0,   528,   505,   485,   486,   487,   488,
+   489,   490,   491,   492,   493,   494,   508,   507,   425,   509,
+   501,   500,   504,   502,   503,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,   217,   219,   220,   221,   222,   223,
+   224,     0,   260,   342,   397,   406,   408,   424,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,   422,   421,   532,
+   200,   176,   548,   551,   550,   549,   521,   524,   525,     0,
+   523,   522,    13,     0,     0,    22,   546,   499,   199,     0,
+   189,     0,   199,   548,   178,    26,     0,   519,     0,   214,
+   215,   513,   512,   514,     0,   210,     0,   212,     0,     0,
+     0,     0,     0,   262,     0,     0,     0,   496,     0,   498,
+   261,     6,     0,     0,     0,     0,     0,   413,     0,   407,
+   412,   410,   409,   530,     0,   327,     0,     0,   311,     0,
+   311,     0,     0,   541,   540,     0,     0,     0,   310,   246,
+     0,   248,   295,   299,   304,   305,   232,     0,     0,   405,
+   404,     0,   524,   426,     0,   399,   402,     0,   410,     0,
+     0,   431,     0,   477,     0,     0,   463,   464,   467,   466,
+   476,   474,   470,   432,   473,   472,     0,     0,   202,     7,
+   527,    15,   507,    21,     0,     0,     0,   337,   340,     3,
+   275,   188,   196,     0,   275,   198,     0,     0,    27,   179,
+   208,     0,     0,     0,   204,   206,   495,     0,     0,     0,
+   263,     0,     0,   259,   258,   497,   218,     0,     0,    49,
+   292,   302,   305,     0,     0,   343,   351,   345,     0,     0,
+   398,   419,     0,     0,   414,     0,   410,   420,     0,   328,
+     0,     0,     0,   312,   538,     0,   538,     0,     0,     0,
+   237,   240,   289,     0,     0,   306,     0,     0,   301,   298,
+   305,   546,   231,     0,   403,   533,   401,   428,     0,     0,
+   529,     0,   468,   469,   483,     0,   524,   478,     0,   474,
+   484,   430,     0,     0,     0,   471,     0,   336,   338,   423,
+    18,    20,    19,     0,     0,   268,   274,   270,   271,   272,
+   273,     0,     0,     0,     0,     0,   190,     0,   548,    25,
+     0,    28,    30,    31,     0,     0,   515,   520,   216,     0,
+     0,     0,   264,   266,   256,   257,     0,   158,     0,     0,
+     0,   252,     0,   296,     0,     0,     0,   395,     0,   362,
+   546,     0,     0,     0,     0,     0,     0,     0,   352,   358,
+   361,   379,   381,   390,   391,   392,   393,   386,   384,   385,
+   346,   357,   546,   344,     0,   418,   531,   416,     0,     0,
+   411,   326,     0,     0,     0,   227,   314,   318,     0,   539,
+   225,     0,   541,     0,   243,     0,     0,     0,   305,   546,
+   236,     0,   308,   307,     0,   300,   297,   261,   261,   232,
+     0,   400,     0,   482,   480,     0,     0,   462,   465,   475,
+     0,     0,   341,   275,   195,     0,    38,     0,     0,     0,
+     0,    47,     0,     0,   197,    23,     0,     0,     0,     0,
+   180,   255,   254,     0,   253,     0,     0,     0,     0,    49,
+    61,    59,     0,     0,     0,   293,   360,   437,   439,     0,
+   516,   519,   524,   434,     0,     0,   357,     0,   511,   510,
+   517,   396,     0,   261,   261,     0,   534,   535,   371,   373,
+   375,   377,     0,     0,     0,   380,     0,     0,   261,   261,
+   347,     0,     0,   329,     0,     0,     0,     0,   316,     0,
+   237,   244,     0,     0,   241,   242,   313,   330,   330,     0,
+     0,   290,     0,   249,   548,   230,   429,   427,     0,     0,
+   339,   269,    58,     0,    40,   280,     0,     0,     0,    53,
+     0,   232,     0,   191,    29,    35,     0,     0,     0,    24,
+     0,     0,   183,     0,     0,   265,   267,     0,   159,   294,
+   251,    62,     0,    63,     0,     0,     0,   446,   460,   438,
+     0,   387,     0,     0,     0,   363,   354,     0,   548,   546,
+   370,   383,   372,   374,   376,   378,     0,   359,   394,   356,
+     0,   548,   348,   417,   415,   319,   320,   315,     0,   229,
+   323,   226,   235,   536,   537,     0,     0,     0,     0,   331,
+   335,   422,   548,     0,   247,     0,   261,   233,   234,   481,
+   479,     0,     0,   277,    38,     0,     0,    40,    38,    45,
+     0,    55,   288,    77,     0,   286,    47,     0,    32,    34,
+    33,   182,     0,     0,     0,   303,    48,    64,    65,    66,
+     0,   439,   440,     0,   444,     0,   461,     0,   518,   435,
+     0,   388,   389,     0,   353,     0,     0,   455,   455,   382,
+     0,     0,   349,   350,   317,   322,     0,   324,     0,   245,
+   262,     0,     0,   238,   239,   309,   291,   250,    58,     0,
+     0,   282,     0,    39,    41,    37,     0,     0,   279,     0,
+   278,    53,     0,     0,     0,    46,   232,   192,   184,   185,
+   186,    67,     0,     0,     0,   460,   443,   446,   447,   442,
+     0,   433,     0,     0,     0,     0,   451,   453,   548,     0,
+   355,   321,     0,   228,     0,     0,   332,   276,    57,   284,
+    89,     0,    87,    90,     0,    36,    38,     0,   287,    54,
+     0,    78,   285,    71,    68,    72,     0,     0,     0,   439,
+     0,   445,   450,   436,   364,   365,   366,   455,   368,     0,
+   369,   367,   325,   333,   334,    43,     0,    42,     0,   281,
+    44,    50,     0,     0,     0,    93,     0,     0,    69,    75,
+     0,     0,    73,    79,     0,    60,   441,     0,   448,   452,
+     0,     0,   454,   351,    88,   283,     0,    56,    84,    52,
+     0,    51,     0,     0,     0,   147,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,    74,   108,   107,   140,   141,     0,    80,
+    81,   449,   351,     0,   456,     0,     0,    94,    95,    70,
+     0,     0,     0,     0,     0,   156,     0,     0,     0,   146,
+     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     0,   137,     0,     0,     0,   457,   459,     0,    85,     0,
+     0,     0,   148,     0,     0,     0,     0,     0,     0,     0,
+     0,   157,     0,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,   101,     0,     0,   119,     0,   131,   132,   133,
+     0,     0,     0,   138,   139,     0,    82,   458,    71,    76,
+     0,    96,     0,     0,   129,   130,   122,     0,     0,     0,
+     0,     0,    97,     0,   160,     0,   162,   164,    98,     0,
+     0,     0,     0,   100,   150,   155,     0,   152,   154,     0,
+     0,     0,     0,     0,     0,   167,   168,     0,   165,    71,
+    91,     0,     0,   111,   114,     0,     0,     0,     0,     0,
+   106,     0,   161,     0,     0,     0,     0,     0,   151,     0,
+   102,     0,   120,   121,   134,     0,   136,     0,    83,    86,
+    92,     0,     0,     0,     0,   103,   123,     0,     0,     0,
+    99,   163,     0,     0,     0,     0,   153,   105,   135,   166,
+   149,     0,     0,   117,   112,   109,   147,     0,   115,   110,
+     0,     0,     0,     0,     0,     0,     0,     0,   104,     0,
+     0,     0,   127,   128,   124,   125,   126,     0,     0,     0,
+     0,     0,   118,     0,   142,   143,   144,   145,     0,   116,
+   113,     0,     0,     0
+};
+
+static const short yydefgoto[] = {  1092,
+     9,    54,    10,    16,    30,    50,    51,   259,   260,   371,
+   372,   576,   667,   734,   735,   741,   582,   392,   673,   744,
+   824,   664,   504,   505,   606,   691,   754,   829,   799,   832,
+   675,   836,   880,   881,   848,   849,   782,   783,  1030,   825,
+   826,   874,  1006,  1034,  1055,  1035,  1059,  1056,   945,   946,
+   931,  1075,   967,   875,   902,   892,   923,   943,   987,   988,
+   897,   389,   936,   976,   997,   998,   999,     1,     2,     3,
+     4,    23,    24,    25,    58,   145,     6,   491,   592,   593,
+   139,   140,   141,     7,    21,    55,    37,    38,    39,   155,
+   157,   147,    62,    64,    60,   150,    94,    95,    96,    97,
+    98,   323,    99,   451,   311,   100,   200,   563,   564,   272,
+   382,   383,   355,   356,   357,   358,   359,   360,   361,   186,
+   561,   978,   281,   319,   202,   203,   282,   187,   447,   436,
+   437,   640,   717,   188,   301,   649,   650,   102,   348,   247,
+   103,   174,   286,   287,   288,   424,   289,   616,   697,   422,
+   410,   411,   523,   704,   412,   621,   413,   104,   215,   216,
+   217,   105,   106,   211,   107,   414,   701,   415,   693,   416,
+   417,   694,   695,   696,   803,   839,   766,   767,   810,   843,
+   844,   698,   226,   227,   228,   229,   617,   230,   418,   142,
+   109,   110,   111,   112,   113,   114,    11,   162,   116,   117,
+   518,   151,   152,   519,   153,   154,   131,   132,   419,   118,
+   420,   119,   529,   448,   304,   205,   641,   184,    14,    17,
+    18,    19,    40,    44,    45,   126
+};
+
+static const short yypact[] = {-32768,
+-32768,    58,    15,    58,   140,-32768,   197,-32768,-32768,-32768,
+   140,-32768,-32768,-32768,-32768,-32768,   220,   220,   326,   342,
+   405,   140,   424,   358,-32768,   649,   400,-32768,   415,-32768,
+-32768,-32768,-32768,   446,   480,   484,  1796,   487,-32768,-32768,
+   220,-32768,  1796,-32768,   433,-32768,-32768,-32768,    59,   579,
+-32768,-32768,   409,   482,-32768,   486,   486,    58,-32768,   116,
+-32768,   116,-32768,   116,-32768,-32768,-32768,-32768,-32768,-32768,
+-32768,-32768,-32768,-32768,-32768,   452,-32768,-32768,-32768,-32768,
+-32768,-32768,-32768,-32768,-32768,   272,   174,   174,   545,   174,
+   546,   576,   589,   577,-32768,-32768,-32768,-32768,-32768,-32768,
+-32768,   578,-32768,   116,-32768,  1370,-32768,-32768,   291,   545,
+   291,   815,   291,  1370,  1086,  2359,  2549,   471,-32768,-32768,
+   649,-32768,   603,-32768,-32768,-32768,-32768,-32768,-32768,   614,
+-32768,-32768,-32768,   415,   700,-32768,-32768,-32768,   649,   597,
+-32768,   140,   649,   643,-32768,   199,   116,-32768,   656,   658,
+-32768,-32768,-32768,-32768,   116,   658,   116,   658,   678,   545,
+   711,    59,   685,   732,   174,   644,   659,-32768,   759,-32768,
+  1796,-32768,   782,   648,  2472,  2402,  1152,-32768,  2549,-32768,
+-32768,   728,-32768,-32768,   545,-32768,   757,   765,   787,   775,
+   787,   777,   333,   787,-32768,   799,   782,   672,-32768,-32768,
+   793,-32768,-32768,   800,-32768,   956,   500,   801,   787,  1370,
+-32768,   811,  1370,-32768,   336,-32768,  1370,   830,    -8,   733,
+  2437,-32768,  1550,-32768,  2549,   825,   359,-32768,  2549,-32768,
+-32768,   824,-32768,-32768,-32768,-32768,   255,  2549,-32768,-32768,
+-32768,-32768,   860,-32768,   844,   847,   719,   848,-32768,-32768,
+   511,   486,-32768,   856,   511,-32768,   497,   866,-32768,   835,
+   658,   870,   876,   116,   658,   658,-32768,   956,   333,   782,
+-32768,   818,   827,-32768,-32768,-32768,-32768,   672,   814,   149,
+   883,-32768,   956,  1977,  1977,-32768,   879,-32768,   894,  1370,
+-32768,-32768,   907,   906,-32768,   442,    44,-32768,  2549,-32768,
+   725,  1015,   545,   787,   908,   782,-32768,   545,   956,   944,
+   897,-32768,-32768,   937,   921,-32768,   727,   782,   918,-32768,
+-32768,-32768,-32768,   545,-32768,-32768,  1370,-32768,  2514,  2472,
+-32768,   943,-32768,-32768,-32768,   929,   733,-32768,   388,    48,
+-32768,-32768,  2514,   949,  2514,-32768,  2549,   928,-32768,-32768,
+-32768,-32768,-32768,   324,   613,-32768,-32768,-32768,-32768,-32768,
+-32768,   922,   291,   545,   291,   291,-32768,   415,   942,-32768,
+   729,-32768,-32768,   946,   415,   947,-32768,-32768,-32768,   979,
+   880,     5,-32768,   945,-32768,-32768,   745,-32768,   159,   782,
+   544,-32768,   782,   956,  2106,  1852,  1491,-32768,  2584,-32768,
+-32768,  1977,   769,   769,   962,   964,   973,  1977,   116,-32768,
+-32768,  2584,-32768,-32768,-32768,-32768,-32768,-32768,   952,-32768,
+-32768,   362,-32768,-32768,  1977,-32768,-32768,-32768,  2514,   965,
+-32768,-32768,   545,   663,   374,   216,-32768,   303,   955,-32768,
+-32768,   333,-32768,   967,-32768,   623,   969,   970,   956,-32768,
+-32768,   782,-32768,-32768,   782,-32768,-32768,  2168,  2168,   951,
+   971,-32768,   974,-32768,-32768,  2514,   990,-32768,-32768,-32768,
+   255,   860,-32768,   511,-32768,   782,    66,   976,   972,   977,
+   333,   189,   980,   751,-32768,-32768,   415,   820,   758,   426,
+-32768,-32768,-32768,   782,-32768,   174,   782,   910,   782,   932,
+-32768,-32768,  1002,   544,   477,-32768,-32768,-32768,   536,   991,
+   992,   906,  2106,-32768,   789,   805,   362,  1977,-32768,-32768,
+   999,-32768,  2549,  2168,  2168,   982,-32768,-32768,  2584,  2584,
+  2584,  2584,  1977,   954,  1977,-32768,  2584,   782,  2168,  2168,
+   997,  1004,  1006,-32768,  1007,   956,  1015,   403,   867,  1015,
+   897,-32768,   956,   956,-32768,-32768,   956,  2324,  2324,  1008,
+   821,-32768,   652,-32768,  1013,-32768,-32768,-32768,  1011,  1016,
+-32768,-32768,   198,  1015,   688,-32768,   545,   782,   545,   978,
+   544,   951,   545,   983,-32768,-32768,  1019,  1023,   828,-32768,
+   237,   833,-32768,   985,   986,-32768,-32768,   857,-32768,-32768,
+-32768,-32768,   987,-32768,  1032,   207,  1977,-32768,  1977,-32768,
+  1022,-32768,  1977,  1916,   521,-32768,  2549,   652,  1013,-32768,
+  2584,-32768,  2584,  2584,  2584,-32768,  1977,-32768,-32768,  1026,
+   652,  1013,-32768,-32768,-32768,   956,-32768,-32768,   398,-32768,
+-32768,   217,-32768,  1033,-32768,  1038,   174,   174,   674,-32768,
+-32768,  1031,  1048,  1053,  1046,   782,  2168,-32768,-32768,-32768,
+-32768,   782,   544,-32768,   106,  1065,  1035,    27,    86,  1020,
+   333,  1039,-32768,-32768,    49,-32768,  1037,   947,-32768,-32768,
+-32768,-32768,   426,   255,   324,-32768,-32768,-32768,-32768,-32768,
+    13,   538,-32768,   134,-32768,  1977,-32768,  1083,-32768,  1081,
+  1087,-32768,-32768,  1091,-32768,  1074,  1082,  2514,  2514,-32768,
+  1061,   782,-32768,-32768,   956,-32768,   862,-32768,   403,-32768,
+   732,   174,  2324,-32768,-32768,-32768,-32768,-32768,  1057,  1059,
+   403,-32768,   705,  1100,-32768,-32768,  1060,  1015,-32768,  1058,
+-32768,   978,   140,   544,   544,-32768,   951,-32768,-32768,-32768,
+-32768,-32768,    36,   169,  1977,  1977,-32768,-32768,-32768,-32768,
+  1977,-32768,  1977,  1977,  1977,   686,-32768,   374,  1110,  1977,
+-32768,-32768,   545,-32768,  1047,  1049,-32768,-32768,-32768,-32768,
+-32768,   470,-32768,-32768,  1065,-32768,   261,  1064,-32768,-32768,
+   330,-32768,-32768,  1117,-32768,-32768,   788,   174,   547,  1111,
+  1115,-32768,  1105,-32768,-32768,-32768,-32768,  2514,-32768,   888,
+-32768,-32768,-32768,-32768,-32768,-32768,   705,-32768,   403,-32768,
+-32768,-32768,  1118,  1072,    50,-32768,  1113,   544,-32768,-32768,
+  1136,  1629,-32768,-32768,  1125,-32768,-32768,  1977,-32768,-32768,
+  1977,  1120,-32768,   879,-32768,-32768,   705,  1123,-32768,-32768,
+   255,-32768,   544,  1131,  1143,-32768,  1134,  1629,  1135,  1151,
+    39,   407,  1629,  1629,  1153,   545,   545,   545,   545,   545,
+   474,   474,   140,-32768,-32768,-32768,-32768,-32768,   705,  1144,
+-32768,-32768,   879,  1977,-32768,   599,  1118,-32768,-32768,-32768,
+  1168,   227,  1149,  1132,   515,-32768,    99,   140,  1159,-32768,
+   533,  1159,  1160,  1165,  1149,   545,   255,   255,  1164,   255,
+  1162,-32768,   426,   615,  1125,-32768,   997,  1183,-32768,  1184,
+  1190,  1629,-32768,  1169,  1180,    11,  1189,  1191,   474,   474,
+  1187,-32768,  1629,   324,   563,  1160,   769,   769,  1069,  1069,
+  1160,  2185,-32768,   782,   709,-32768,  1173,-32768,-32768,-32768,
+   782,  1185,   756,-32768,-32768,  1200,-32768,-32768,  1117,-32768,
+  1179,-32768,  1629,   823,-32768,-32768,-32768,  1202,  1203,  1204,
+  1205,  1629,-32768,  1159,-32768,   635,-32768,-32768,-32768,  1199,
+  1211,  1212,  1213,-32768,-32768,-32768,   642,-32768,-32768,  1216,
+  1192,  1149,  1629,  1215,   782,-32768,-32768,   660,-32768,  1117,
+   255,   782,  1217,-32768,-32768,  1218,    11,  1227,  1230,  1231,
+-32768,  1160,-32768,   782,  1159,  1159,  1159,  1159,-32768,  2215,
+-32768,  1629,-32768,-32768,-32768,  1219,-32768,   756,-32768,-32768,
+  1221,  1223,  1220,   710,  1210,-32768,-32768,    11,    11,    11,
+-32768,-32768,   782,   782,   782,   782,-32768,-32768,-32768,-32768,
+-32768,  1629,    88,-32768,-32768,-32768,-32768,  1222,-32768,-32768,
+  1224,     3,     3,     3,  1238,  1239,  1240,  1245,-32768,   380,
+  1629,  1629,-32768,-32768,-32768,-32768,-32768,  1241,  1242,  1243,
+  1244,  1629,-32768,  1249,-32768,-32768,-32768,-32768,  1251,-32768,
+-32768,  1265,  1273,-32768
+};
+
+static const short yypgoto[] = {-32768,
+-32768,-32768,-32768,  1106,-32768,-32768,  1141,-32768,-32768,    95,
+   791,  -604,   611,-32768,   495,-32768,   604,   783,   540,-32768,
+-32768,   555,  -477,-32768,-32768,-32768,-32768,  -902,-32768,-32768,
+-32768,-32768,-32768,   370,-32768,   399,  -746,   472,-32768,   286,
+   437,   -95,-32768,-32768,-32768,-32768,-32768,   258,-32768,   302,
+-32768,  -135,  -527,  -427,-32768,   238,  -732,  -652,-32768,   276,
+-32768,-32768,  -705,-32768,  -401,-32768,   269,-32768,-32768,-32768,
+-32768,  1285,  1286,  1267,-32768,-32768,    68,   634,-32768,   630,
+  1260,  1266,  1070,-32768,-32768,-32768,    52,-32768,  1207,-32768,
+-32768,-32768,-32768,-32768,-32768,   235,  1281,  1154,-32768,-32768,
+-32768,  -442,-32768,   781,  -243,-32768,-32768,   -53,   -22,   612,
+-32768,   840,  1084,   863,-32768,-32768,-32768,-32768,-32768,   -88,
+   839,   -59,   -90,  -245,-32768,   353,  1226,   -78,-32768,  -505,
+   794,  -657,-32768,   -72,-32768,   784,   617,  -100,-32768,   854,
+  -508,-32768,-32768,-32768,   803,  -662,  -804,   730,   -44,  -255,
+-32768,  -355,-32768,-32768,-32768,   208,  -159,-32768,  -117,-32768,
+   -60,-32768,-32768,   -51,-32768,-32768,   584,-32768,   950,-32768,
+-32768,-32768,   590,-32768,-32768,-32768,   641,   543,-32768,-32768,
+   436,   598,  -142,  -199,  1010,-32768,   -73,   -97,    -7,-32768,
+  -218,  -209,  -203,-32768,  -202,-32768,-32768,   -34,-32768,-32768,
+-32768,   120,-32768,-32768,  -208,   -47,-32768,   960,   -29,   -76,
+  1139,-32768,  -400,   806,-32768,    43,  -103,   752,    -6,   -18,
+   -14,-32768,   -23,   -20,-32768,-32768
+};
+
+
+#define        YYLAST          2695
+
+
+static const short yytable[] = {    52,
+    42,   130,   115,   530,    20,   842,    46,   193,   115,   163,
+   164,   165,    56,   167,   101,    32,    57,   566,   345,   235,
+   101,   201,   380,   339,   207,   381,   603,   299,   409,   108,
+   494,   190,   363,   293,   246,   108,   363,   394,   192,   507,
+   208,   364,    48,   234,   642,   364,   794,   365,   366,   651,
+   651,   365,   366,   210,   180,   547,  1001,   291,   248,   296,
+   732,   774,   472,   127,   739,   128,     8,   218,   665,   668,
+   172,    12,  1073,   780,   745,   851,   182,    43,   336,   299,
+   965,   235,   752,   347,   182,   219,   232,   232,   273,   753,
+   961,   495,   127,   294,   128,   574,   300,  1029,   181,   666,
+   886,   932,   240,   674,    52,   298,   181,   181,   231,   231,
+   332,     5,   842,   280,   218,   738,   253,   746,   852,  1074,
+   127,   148,   128,   256,   795,   146,   933,   235,   966,   130,
+   345,   235,   914,   575,   547,   254,   115,   315,   317,   676,
+   235,   517,   149,    13,   898,   182,   232,   297,   101,   232,
+   362,   341,   327,   575,   362,   346,   757,   507,   325,   758,
+   924,   846,   430,   108,   350,   325,   467,   181,   231,   181,
+   731,   231,   947,   575,   248,   130,    65,   129,   248,   390,
+   182,   885,   820,   182,   498,   730,   461,   182,   520,   499,
+   251,   232,   549,   340,   255,   232,   941,    78,   551,   232,
+   468,   235,   181,   557,   442,   181,   129,   349,   232,   181,
+   384,   435,   462,   231,   651,   231,   391,   231,   387,  -327,
+   916,   231,   257,   175,   439,   431,   546,   373,   662,   327,
+   231,   305,   787,   307,   129,   460,   313,   580,   796,   522,
+   421,   127,   294,   128,   547,   547,   441,   797,   798,   235,
+   921,   313,   536,   258,   922,   363,   581,    47,   456,   947,
+   182,   481,   615,    15,   364,   663,   791,   792,  1012,   232,
+   365,   366,    22,   470,    65,   325,   689,   482,    49,   628,
+   548,   719,   181,   979,   477,   479,   542,   690,   984,   547,
+   478,   231,   480,   483,    48,    78,   156,   182,   158,   232,
+   182,  1058,  1058,   458,   793,   195,    48,   459,  -305,  1043,
+  1044,  1045,  1046,   232,   185,   232,   160,   232,   161,   181,
+   196,   231,   181,   569,   197,   819,   278,    48,   575,  -305,
+   500,   475,    47,   506,   330,   231,    48,   231,   373,   231,
+   127,   148,   128,    28,   544,   373,   440,   472,   485,   130,
+   854,   509,   516,    49,   309,   129,   310,   526,   628,  1041,
+   328,   329,   149,   534,   148,    29,   127,   148,   128,   622,
+   622,   622,   622,   362,   387,   889,    33,   629,    41,   148,
+   541,   261,   524,   379,   343,   344,   525,   588,   149,   265,
+   715,   266,   560,   148,   538,   562,   199,   248,   822,   232,
+   344,    48,   823,   921,   539,   565,    48,  1082,   540,   900,
+   330,   248,   465,   466,   344,   330,   573,    47,    48,   597,
+    41,   231,   716,   115,   115,   235,   639,   742,    47,    48,
+   901,   558,   135,   124,   384,   559,   232,   562,    49,   600,
+   136,   571,    33,   911,   912,    31,   127,   148,   128,   591,
+   108,   108,   125,    59,   129,   637,   435,   373,   231,   435,
+   594,   710,   484,   710,   710,   710,   428,   429,   149,   489,
+   618,   619,    34,    35,    36,   671,    47,    48,   630,  1037,
+   129,   652,   652,   435,   435,   631,   632,    61,   626,   115,
+   115,    63,   816,   232,   677,   817,   237,   591,   669,    47,
+    48,   970,   971,  -337,   115,   115,   238,   121,   768,   768,
+  1062,  1063,  1064,    65,   986,   231,   108,   108,   670,   235,
+    49,   370,   137,   115,   115,   127,   148,   128,   535,   159,
+  -327,   108,   108,   977,    78,   718,   980,   981,   138,   658,
+   322,   535,   990,   130,   659,   703,   604,   149,    48,   994,
+   108,   108,   605,   168,    81,    82,    83,    84,   320,   345,
+   129,   607,   692,   755,   608,   195,    48,   609,   700,   756,
+   721,   722,   866,   867,   868,   869,   870,   871,   872,   873,
+   196,   330,   711,   169,   197,   975,   278,   232,   937,   938,
+   939,   940,   986,  1026,   706,    33,   727,   171,   707,   170,
+  1032,   708,   729,   133,   134,   709,  1057,   713,   768,   231,
+   173,   714,  1042,   501,   502,    33,   834,   252,   503,   835,
+   320,   918,   115,   171,   817,   724,   926,   927,   928,   929,
+   930,    33,   725,   474,   728,   320,   614,   956,   241,   129,
+   817,  1065,  1066,  1067,  1068,   776,   652,   435,   553,   108,
+   554,   759,   771,   594,   750,   279,   199,  1013,   262,   263,
+  1014,   444,   446,   252,  1019,   195,    48,  1020,   545,   813,
+    33,   457,   657,   784,   195,    48,   284,   285,   232,   232,
+   196,   267,  1027,   264,   197,  1028,   278,   316,   115,   196,
+   195,    48,    33,   197,   723,   278,   316,    34,    35,    36,
+   231,   231,    65,    48,    33,   196,   808,   195,    48,   197,
+   800,   434,    47,    48,   269,   108,   700,   270,   805,   806,
+   807,   833,   196,   243,   244,   812,   197,   991,   278,   992,
+   274,   245,   457,  1053,   535,   271,   790,   623,   624,   625,
+   333,   334,   809,   353,   354,   275,   457,   535,   811,   432,
+   433,   454,   455,   486,   487,   279,   199,   784,   195,    48,
+   666,   827,   894,   299,   279,   199,   276,   903,   904,   454,
+   497,   527,   528,   196,   781,   584,   487,   197,   232,   278,
+    53,   199,   590,   487,   195,    48,   302,   784,   120,   195,
+   320,   611,   263,   882,   120,   303,   883,   279,   199,   196,
+   231,   320,   877,   197,   306,   278,  1054,   308,   866,   867,
+   868,   869,   870,   871,   872,   873,   314,   195,    48,   784,
+   318,   827,    65,    48,   876,   996,   962,  -302,   877,   612,
+   613,   324,   196,   877,   877,   326,   197,   973,   198,   917,
+   166,   877,   877,   243,   586,   655,   656,   342,   279,   199,
+   876,   587,   681,   354,   331,   876,   876,   682,   683,   347,
+   189,   191,   194,   206,   209,   294,   913,  1003,   351,   195,
+    48,   352,  -296,   237,   279,   199,  1011,   949,   950,   368,
+   952,   686,   656,   954,   196,    53,   772,   773,   197,   375,
+   278,   934,   877,  -296,   830,   831,   377,  1024,   376,   877,
+   877,   457,   378,   877,   385,   644,   646,   388,   199,   457,
+   393,   268,   877,   386,   876,   841,   284,  1004,  1005,   423,
+   195,    48,   120,   425,   283,   876,  1048,  1076,  1077,   426,
+   427,   982,   983,   877,   989,   196,   209,   450,  -289,   197,
+   452,   278,   877,   453,   312,  -296,   195,    48,   283,   283,
+   463,   464,   263,   471,   476,   876,  1069,   321,   195,    48,
+   199,   196,   474,   877,   876,   197,   493,   278,   445,   488,
+   490,   827,   543,   196,   496,  1083,  1084,   197,   531,   278,
+   532,   195,    48,   533,   550,   876,  1089,   537,   320,   552,
+   877,   322,   877,   555,   556,   567,   196,   570,   568,   391,
+   197,   578,   278,   599,   877,   130,   577,   579,   374,   602,
+   583,   199,   989,   610,   876,   627,  -521,   195,    48,   321,
+   312,   283,   877,  -522,   620,   284,   654,  1061,   634,   283,
+   635,   636,   196,   657,   321,   660,   197,   199,   434,   688,
+   661,   877,   877,   679,   876,   672,   678,   680,   699,   199,
+   684,   685,   877,   438,   191,   687,   712,   283,   553,   443,
+   321,   449,   720,   876,   876,   492,   238,   457,   723,   283,
+   321,   726,   199,  -303,   876,   209,    67,    68,    69,    70,
+    71,    72,    73,    74,    75,    76,   733,   740,    47,    48,
+   127,   212,   213,    67,    68,    69,    70,    71,    72,    73,
+    74,    75,    76,   736,   581,   760,   761,   176,   199,   177,
+   214,   762,   743,   764,   189,   191,   194,   209,   763,   374,
+   178,   765,   179,   770,   663,   785,   374,   779,   786,   788,
+   808,   321,   821,   814,   828,   815,   755,   837,   838,   847,
+   850,   283,   853,   855,   283,   321,   879,   884,   887,   890,
+   891,   893,   895,   896,    47,    48,   127,   294,   213,    67,
+    68,    69,    70,    71,    72,    73,    74,    75,    76,   915,
+   905,   920,   921,   176,   925,   177,   295,    91,    92,    93,
+   935,   942,   944,   953,   209,   283,   178,   951,   179,   321,
+   959,   960,   961,   312,    91,    92,    93,   964,   963,   968,
+   321,   969,   993,   283,   129,   972,   283,  1000,   995,   120,
+   120,  1002,  1007,  1008,  1009,  1010,  1015,    67,    68,    69,
+    70,    71,    72,    73,    74,    75,    76,   283,  1016,  1017,
+  1018,  1022,   312,   921,  1021,  1033,  1036,  1038,   374,  1025,
+  1039,  1040,   250,  1049,   183,   283,   851,  1051,   283,  1071,
+   283,  1072,   183,   183,   233,   236,  1078,  1079,  1080,  1052,
+    91,    92,    93,  1081,  1093,  1085,  1086,  1087,  1088,  1090,
+   129,  1091,  1094,   249,   242,   120,   120,   585,   737,   818,
+   747,   789,   601,   778,   957,   919,  1031,   888,   845,   283,
+   120,   120,  1060,  1023,  1070,  1047,  1050,   283,   438,   443,
+   321,   438,    26,    27,   321,   321,  1054,   122,   321,   120,
+   120,   748,   749,   183,   233,   183,   143,   236,    91,    92,
+    93,   367,   144,   123,   277,   438,   438,   239,   191,   283,
+   443,   643,   775,   596,   209,   598,   572,   204,   369,   777,
+   638,   589,   653,   633,   804,   510,   705,   802,   183,   769,
+   840,   183,   958,   801,   469,   183,   521,     0,   645,   233,
+     0,   233,     0,   236,     0,     0,     0,   236,     0,     0,
+     0,     0,    47,    48,     0,     0,   236,    67,    68,    69,
+    70,    71,    72,    73,    74,    75,    76,   321,     0,     0,
+   443,   176,     0,   177,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,   178,     0,   179,   283,   120,     0,
+     0,     0,     0,   283,     0,     0,     0,     0,     0,     0,
+     0,     0,   312,     0,     0,     0,     0,     0,   183,     0,
+     0,     0,     0,     0,     0,     0,     0,   236,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,   283,     0,   183,   321,   233,   183,     0,
+   443,     0,     0,     0,   120,     0,     0,     0,    91,    92,
+    93,   233,   443,   233,   283,   236,     0,     0,     0,   438,
+     0,     0,   473,    47,    48,   511,   512,   513,    67,    68,
+    69,    70,    71,    72,    73,    74,    75,    76,     0,     0,
+     0,     0,   396,     0,   397,   514,     0,   515,     0,     0,
+     0,     0,     0,     0,   443,   398,     0,   399,   400,   401,
+     0,     0,   402,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,   403,   404,   405,   406,
+   407,   408,    47,    48,   127,   294,   337,    67,    68,    69,
+    70,    71,    72,    73,    74,    75,    76,   233,   283,     0,
+   443,   221,     0,   223,   338,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,   224,     0,   225,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,     0,   283,    91,
+    92,    93,     0,     0,   233,     0,     0,     0,     0,   129,
+     0,     0,     0,     0,     0,     0,     0,   906,   907,   908,
+   909,   910,     0,     0,     0,     0,   249,     0,   595,     0,
+   283,    47,    48,     0,     0,     0,    67,    68,    69,    70,
+    71,    72,    73,    74,    75,    76,     0,     0,     0,     0,
+     0,     0,   591,     0,     0,     0,     0,   948,    91,    92,
+    93,   236,     0,     0,     0,     0,   856,   857,   129,     0,
+   858,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,   283,     0,   859,     0,
+     0,     0,     0,     0,     0,   283,     0,     0,     0,     0,
+     0,     0,   283,     0,   283,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,   860,   861,   862,   863,
+   864,     0,     0,     0,     0,     0,   865,   866,   867,   868,
+   869,   870,   871,   872,   873,     0,     0,    91,    92,    93,
+     0,     0,     0,     0,     0,     0,   283,     0,     0,     0,
+     0,     0,     0,   283,     0,   236,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,   283,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,     0,     0,   283,
+     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,   283,   283,   283,   283,    65,    48,
+     0,     0,    66,    67,    68,    69,    70,    71,    72,    73,
+    74,    75,    76,     0,     0,     0,     0,    77,     0,    78,
+     0,   595,     0,   751,     0,     0,     0,     0,     0,     0,
+    79,     0,    80,     0,     0,     0,     0,     0,     0,    81,
+    82,    83,    84,    85,     0,     0,   233,   233,     0,     0,
+     0,     0,     0,     0,    47,    48,     0,     0,   395,    67,
+    68,    69,    70,    71,    72,    73,    74,    75,    76,     0,
+     0,     0,     0,   396,   508,   397,     0,    86,    87,    88,
+    89,    90,     0,     0,     0,     0,   398,     0,   399,   400,
+   401,     0,     0,   402,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,    91,    92,    93,   403,   404,   405,
+   406,   407,   408,     0,     0,     0,     0,     0,    47,    48,
+     0,     0,   395,    67,    68,    69,    70,    71,    72,    73,
+    74,    75,    76,     0,     0,     0,     0,   396,     0,   397,
+   702,     0,     0,     0,     0,     0,   233,     0,     0,     0,
+   398,     0,   399,   400,   401,     0,     0,   402,     0,     0,
+    91,    92,    93,     0,     0,     0,     0,     0,     0,     0,
+   878,   403,   404,   405,   406,   407,   408,     0,     0,    47,
+    48,     0,     0,   395,    67,    68,    69,    70,    71,    72,
+    73,    74,    75,    76,     0,     0,   878,     0,   396,   899,
+   397,   878,   878,     0,     0,     0,     0,     0,     0,   878,
+   878,   398,     0,   399,   400,   401,     0,     0,   402,     0,
+     0,     0,     0,     0,    91,    92,    93,     0,     0,     0,
+     0,     0,   403,   404,   405,   406,   407,   408,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     0,   955,     0,     0,     0,     0,     0,     0,     0,     0,
+   878,     0,     0,     0,     0,     0,     0,   878,   878,     0,
+     0,   878,   974,     0,     0,     0,     0,     0,     0,     0,
+   878,     0,     0,     0,     0,    91,    92,    93,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     0,   878,     0,     0,     0,     0,     0,     0,    47,    48,
+   878,     0,     0,    67,    68,    69,    70,    71,    72,    73,
+    74,    75,    76,     0,     0,     0,     0,   396,     0,   397,
+     0,   878,     0,     0,     0,     0,     0,     0,     0,     0,
+   398,     0,   399,   400,   401,     0,     0,   402,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,     0,   878,     0,
+   878,   403,   404,   405,   406,   407,   408,     0,     0,     0,
+    65,    48,   878,     0,    66,    67,    68,    69,    70,    71,
+    72,    73,    74,    75,    76,     0,     0,    47,    48,    77,
+   878,    78,    67,    68,    69,    70,    71,    72,    73,    74,
+    75,    76,    79,     0,    80,     0,     0,   985,   591,   878,
+   878,     0,     0,     0,    91,    92,    93,    47,    48,     0,
+   878,     0,    67,    68,    69,    70,    71,    72,    73,    74,
+    75,    76,     0,     0,     0,     0,     0,     0,   591,     0,
+     0,     0,     0,     0,     0,     0,     0,     0,     0,    86,
+    87,    88,    89,    90,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,    91,    92,    93,     0,
+     0,     0,     0,   866,   867,   868,   869,   870,   871,   872,
+   873,     0,     0,    91,    92,    93,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,   866,   867,   868,   869,   870,   871,   872,
+   873,     0,     0,    91,    92,    93,    65,    48,     0,     0,
+    66,    67,    68,    69,    70,    71,    72,    73,    74,    75,
+    76,     0,     0,     0,     0,    77,     0,    78,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,     0,    79,     0,
+    80,    47,    48,     0,     0,   220,    67,    68,    69,    70,
+    71,    72,    73,    74,    75,    76,     0,     0,     0,     0,
+   221,   222,   223,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,   224,     0,   225,     0,     0,     0,     0,
+     0,     0,     0,     0,    47,    48,   647,   648,   220,    67,
+    68,    69,    70,    71,    72,    73,    74,    75,    76,     0,
+     0,     0,     0,   221,   292,   223,     0,     0,     0,     0,
+     0,     0,    91,    92,    93,     0,   224,     0,   225,    47,
+    48,     0,     0,   220,    67,    68,    69,    70,    71,    72,
+    73,    74,    75,    76,     0,     0,     0,     0,   221,   335,
+   223,     0,     0,     0,     0,     0,     0,    91,    92,    93,
+     0,   224,     0,   225,    47,    48,     0,     0,   290,    67,
+    68,    69,    70,    71,    72,    73,    74,    75,    76,     0,
+     0,     0,     0,   176,     0,   177,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,   178,     0,   179,     0,
+    91,    92,    93,     0,     0,     0,    47,    48,     0,     0,
+   220,    67,    68,    69,    70,    71,    72,    73,    74,    75,
+    76,     0,     0,     0,     0,   221,     0,   223,     0,     0,
+     0,     0,     0,     0,     0,    91,    92,    93,   224,     0,
+   225,    47,    48,     0,     0,     0,    67,    68,    69,    70,
+    71,    72,    73,    74,    75,    76,     0,     0,     0,     0,
+   221,     0,   223,     0,     0,     0,     0,     0,     0,     0,
+    91,    92,    93,   224,     0,   225,    47,    48,     0,     0,
+     0,    67,    68,    69,    70,    71,    72,    73,    74,    75,
+    76,     0,     0,     0,     0,   396,     0,   397,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,     0,   398,     0,
+   399,     0,    91,    92,    93,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,    91,    92,    93,
+     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,    91,    92,    93
+};
+
+static const short yycheck[] = {    29,
+    24,    49,    37,   404,    11,   810,    27,   111,    43,    86,
+    87,    88,    31,    90,    37,    22,    31,   460,   227,   117,
+    43,   112,   268,   223,   113,   269,   504,    36,   284,    37,
+    26,   110,   251,   176,   135,    43,   255,   283,   111,   395,
+   113,   251,     4,   117,   550,   255,    11,   251,   251,   558,
+   559,   255,   255,   114,   106,    29,   959,   175,   135,   177,
+   665,   719,    24,     5,   669,     7,    52,   115,   574,   575,
+    94,     4,    70,   731,    26,    26,   106,    26,   221,    36,
+    70,   179,    70,    36,   114,   115,   116,   117,   165,    77,
+     3,    87,     5,     6,     7,    30,   185,  1000,   106,    73,
+   847,     3,   123,   581,   134,   179,   114,   115,   116,   117,
+   119,    54,   917,   173,   162,    30,   140,    69,    69,   117,
+     5,     6,     7,   144,    89,    58,    28,   225,   118,   177,
+   339,   229,   879,    68,    29,   142,   171,   197,   198,   582,
+   238,   397,    27,     4,   106,   175,   176,   177,   171,   179,
+   251,   225,   213,    68,   255,   229,    23,   513,   210,    26,
+   893,   819,   119,   171,   238,   217,   119,   175,   176,   177,
+    65,   179,   905,    68,   251,   223,     3,   119,   255,    31,
+   210,   844,   787,   213,    26,   663,   329,   217,   397,    31,
+   139,   221,   438,   223,   143,   225,   902,    24,   442,   229,
+   343,   299,   210,   449,   308,   213,   119,   237,   238,   217,
+   270,   302,   330,   221,   723,   223,    68,   225,   278,    31,
+   883,   229,    24,   104,   303,   299,   435,   257,    31,   290,
+   238,   189,   738,   191,   119,   324,   194,   481,    70,   399,
+   285,     5,     6,     7,    29,    29,   306,    79,    80,   347,
+    24,   209,   412,    55,    28,   474,    68,     3,   318,   992,
+   290,   365,   518,    67,   474,    68,   744,   745,   974,   299,
+   474,   474,    53,   347,     3,   327,    70,   366,    24,   535,
+    65,    65,   290,   936,   363,   364,   429,    81,   941,    29,
+   363,   299,   365,   366,     4,    24,    62,   327,    64,   329,
+   330,  1034,  1035,   322,   747,     3,     4,   322,     6,  1015,
+  1016,  1017,  1018,   343,    24,   345,    45,   347,    47,   327,
+    18,   329,   330,   466,    22,    65,    24,     4,    68,    27,
+   390,   355,     3,   393,   215,   343,     4,   345,   368,   347,
+     5,     6,     7,    18,   433,   375,   304,    24,   369,   397,
+   828,   396,   397,    24,    22,   119,    24,   402,   614,  1012,
+    25,    26,    27,   408,     6,    24,     5,     6,     7,   529,
+   530,   531,   532,   474,   434,   853,    19,   537,    21,     6,
+   425,   147,   401,   264,    26,    27,   401,   488,    27,   155,
+   636,   157,   452,     6,    33,   455,    94,   474,    69,   429,
+    27,     4,    73,    24,   423,   459,     4,    28,   423,     3,
+   291,   488,    25,    26,    27,   296,   476,     3,     4,   496,
+    21,   429,    25,   458,   459,   523,    24,   671,     3,     4,
+    24,   450,    24,     1,   494,   450,   466,   497,    24,   499,
+    32,   471,    19,   871,   872,    41,     5,     6,     7,    24,
+   458,   459,    20,     8,   119,   546,   547,   487,   466,   550,
+   490,   621,   368,   623,   624,   625,    25,    26,    27,   375,
+   524,   525,    49,    50,    51,   579,     3,     4,   538,  1007,
+   119,   558,   559,   574,   575,   539,   540,     8,   533,   524,
+   525,     8,    23,   523,   583,    26,    26,    24,   577,     3,
+     4,   929,   930,    33,   539,   540,    36,    21,   708,   709,
+  1038,  1039,  1040,     3,   942,   523,   524,   525,   578,   617,
+    24,    25,    41,   558,   559,     5,     6,     7,   409,    78,
+    31,   539,   540,   935,    24,   639,   937,   938,    53,   563,
+    41,   422,   944,   591,   565,    25,    70,    27,     4,   951,
+   558,   559,    76,     8,    44,    45,    46,    47,   206,   768,
+   119,    26,   607,    26,    29,     3,     4,    32,   613,    32,
+   647,   648,    99,   100,   101,   102,   103,   104,   105,   106,
+    18,   462,   627,     8,    22,    23,    24,   617,    56,    57,
+    58,    59,  1020,   995,   618,    19,   656,    21,   619,    11,
+  1002,   620,   662,    25,    26,   620,  1034,   631,   808,   617,
+    33,   632,  1014,    70,    71,    19,    70,    21,    75,    73,
+   268,    23,   657,    21,    26,   649,   112,   113,   114,   115,
+   116,    19,   653,    21,   657,   283,   517,    23,    25,   119,
+    26,  1043,  1044,  1045,  1046,   722,   723,   738,    26,   657,
+    28,   696,   712,   683,   684,    93,    94,    23,     3,     4,
+    26,   309,   310,    21,    23,     3,     4,    26,     6,   773,
+    19,   319,    21,   733,     3,     4,    29,    30,   708,   709,
+    18,     4,    23,    26,    22,    26,    24,    25,   723,    18,
+     3,     4,    19,    22,    21,    24,    25,    49,    50,    51,
+   708,   709,     3,     4,    19,    18,    21,     3,     4,    22,
+   755,    24,     3,     4,     4,   723,   761,    33,   763,   764,
+   765,   798,    18,    24,    25,   770,    22,    19,    24,    21,
+    87,    32,   380,    24,   615,     4,   743,   530,   531,   532,
+     8,     9,   766,    25,    26,    87,   394,   628,   769,    25,
+    26,    25,    26,    25,    26,    93,    94,   817,     3,     4,
+    73,   791,   858,    36,    93,    94,     8,   863,   864,    25,
+    26,     3,     4,    18,    70,    25,    26,    22,   808,    24,
+    29,    94,    25,    26,     3,     4,    30,   847,    37,     3,
+   438,     3,     4,   838,    43,    31,   841,    93,    94,    18,
+   808,   449,   832,    22,    30,    24,    97,    31,    99,   100,
+   101,   102,   103,   104,   105,   106,    18,     3,     4,   879,
+    28,   851,     3,     4,   832,    70,   922,    28,   858,    25,
+    26,    31,    18,   863,   864,    25,    22,   933,    24,   884,
+    89,   871,   872,    24,    25,    25,    26,    23,    93,    94,
+   858,    32,    25,    26,    25,   863,   864,    25,    26,    36,
+   109,   110,   111,   112,   113,     6,   873,   963,    25,     3,
+     4,    25,     6,    26,    93,    94,   972,   907,   908,    24,
+   910,    25,    26,   913,    18,   134,    25,    26,    22,    24,
+    24,   898,   922,    27,   107,   108,    27,   993,    64,   929,
+   930,   549,    27,   933,    87,   553,   554,    94,    94,   557,
+    28,   160,   942,    87,   922,    28,    29,    95,    96,    41,
+     3,     4,   171,    30,   173,   933,  1022,  1063,  1064,    23,
+    25,   939,   940,   963,   942,    18,   185,    41,    31,    22,
+     4,    24,   972,    23,   193,    28,     3,     4,   197,   198,
+     8,    23,     4,    26,    33,   963,  1052,   206,     3,     4,
+    94,    18,    21,   993,   972,    22,    87,    24,    25,    24,
+    24,  1001,     8,    18,    30,  1071,  1072,    22,    17,    24,
+    17,     3,     4,    11,    30,   993,  1082,    36,   636,    23,
+  1020,    41,  1022,    25,    25,    25,    18,     8,    25,    68,
+    22,    30,    24,    94,  1034,  1053,    31,    31,   257,     8,
+    31,    94,  1020,    23,  1022,    62,    25,     3,     4,   268,
+   269,   270,  1052,    25,    43,    29,    19,  1035,    25,   278,
+    25,    25,    18,    21,   283,    25,    22,    94,    24,     8,
+    25,  1071,  1072,    25,  1052,    68,    64,    25,    27,    94,
+    66,    66,  1082,   302,   303,    69,    31,   306,    26,   308,
+   309,   310,    25,  1071,  1072,    87,    36,   715,    21,   318,
+   319,    19,    94,    28,  1082,   324,     8,     9,    10,    11,
+    12,    13,    14,    15,    16,    17,    22,    68,     3,     4,
+     5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
+    15,    16,    17,    69,    68,    23,    26,    22,    94,    24,
+    25,    25,    74,    40,   363,   364,   365,   366,    28,   368,
+    35,    40,    37,    63,    68,    26,   375,    69,    69,    72,
+    21,   380,    69,    87,    18,    87,    26,    23,    34,    22,
+    69,   390,    30,     8,   393,   394,    22,    28,    26,    19,
+     8,    18,    18,     3,     3,     4,     5,     6,     7,     8,
+     9,    10,    11,    12,    13,    14,    15,    16,    17,    26,
+    18,     4,    24,    22,    43,    24,    25,   109,   110,   111,
+    22,    22,    18,    22,   433,   434,    35,    24,    37,   438,
+     8,     8,     3,   442,   109,   110,   111,    18,    30,    11,
+   449,    11,    30,   452,   119,    19,   455,     8,    24,   458,
+   459,    33,    11,    11,    11,    11,    18,     8,     9,    10,
+    11,    12,    13,    14,    15,    16,    17,   476,    18,    18,
+    18,    40,   481,    24,    19,    19,    19,    11,   487,    25,
+    11,    11,   137,    25,   106,   494,    26,    25,   497,    28,
+   499,    28,   114,   115,   116,   117,    19,    19,    19,    40,
+   109,   110,   111,    19,     0,    25,    25,    25,    25,    21,
+   119,    21,     0,   135,   134,   524,   525,   487,   668,   785,
+   677,   742,   500,   729,   915,   887,  1001,   851,   817,   538,
+   539,   540,  1035,   992,  1057,  1020,  1028,   546,   547,   548,
+   549,   550,    18,    18,   553,   554,    97,    41,   557,   558,
+   559,   678,   683,   175,   176,   177,    57,   179,   109,   110,
+   111,   252,    57,    43,   171,   574,   575,   121,   577,   578,
+   579,   551,   721,   494,   583,   497,   474,   112,   255,   723,
+   547,   488,   559,   541,   761,   396,   617,   758,   210,   709,
+   808,   213,   917,   756,   345,   217,   397,    -1,   553,   221,
+    -1,   223,    -1,   225,    -1,    -1,    -1,   229,    -1,    -1,
+    -1,    -1,     3,     4,    -1,    -1,   238,     8,     9,    10,
+    11,    12,    13,    14,    15,    16,    17,   636,    -1,    -1,
+   639,    22,    -1,    24,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    35,    -1,    37,   656,   657,    -1,
+    -1,    -1,    -1,   662,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,   671,    -1,    -1,    -1,    -1,    -1,   290,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,   299,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,   712,    -1,   327,   715,   329,   330,    -1,
+   719,    -1,    -1,    -1,   723,    -1,    -1,    -1,   109,   110,
+   111,   343,   731,   345,   733,   347,    -1,    -1,    -1,   738,
+    -1,    -1,   354,     3,     4,     5,     6,     7,     8,     9,
+    10,    11,    12,    13,    14,    15,    16,    17,    -1,    -1,
+    -1,    -1,    22,    -1,    24,    25,    -1,    27,    -1,    -1,
+    -1,    -1,    -1,    -1,   773,    35,    -1,    37,    38,    39,
+    -1,    -1,    42,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    56,    57,    58,    59,
+    60,    61,     3,     4,     5,     6,     7,     8,     9,    10,
+    11,    12,    13,    14,    15,    16,    17,   429,   817,    -1,
+   819,    22,    -1,    24,    25,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    35,    -1,    37,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   847,   109,
+   110,   111,    -1,    -1,   466,    -1,    -1,    -1,    -1,   119,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,   866,   867,   868,
+   869,   870,    -1,    -1,    -1,    -1,   488,    -1,   490,    -1,
+   879,     3,     4,    -1,    -1,    -1,     8,     9,    10,    11,
+    12,    13,    14,    15,    16,    17,    -1,    -1,    -1,    -1,
+    -1,    -1,    24,    -1,    -1,    -1,    -1,   906,   109,   110,
+   111,   523,    -1,    -1,    -1,    -1,    38,    39,   119,    -1,
+    42,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,   935,    -1,    60,    -1,
+    -1,    -1,    -1,    -1,    -1,   944,    -1,    -1,    -1,    -1,
+    -1,    -1,   951,    -1,   953,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    88,    89,    90,    91,
+    92,    -1,    -1,    -1,    -1,    -1,    98,    99,   100,   101,
+   102,   103,   104,   105,   106,    -1,    -1,   109,   110,   111,
+    -1,    -1,    -1,    -1,    -1,    -1,   995,    -1,    -1,    -1,
+    -1,    -1,    -1,  1002,    -1,   617,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,  1014,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1028,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,  1043,  1044,  1045,  1046,     3,     4,
+    -1,    -1,     7,     8,     9,    10,    11,    12,    13,    14,
+    15,    16,    17,    -1,    -1,    -1,    -1,    22,    -1,    24,
+    -1,   683,    -1,   685,    -1,    -1,    -1,    -1,    -1,    -1,
+    35,    -1,    37,    -1,    -1,    -1,    -1,    -1,    -1,    44,
+    45,    46,    47,    48,    -1,    -1,   708,   709,    -1,    -1,
+    -1,    -1,    -1,    -1,     3,     4,    -1,    -1,     7,     8,
+     9,    10,    11,    12,    13,    14,    15,    16,    17,    -1,
+    -1,    -1,    -1,    22,    23,    24,    -1,    82,    83,    84,
+    85,    86,    -1,    -1,    -1,    -1,    35,    -1,    37,    38,
+    39,    -1,    -1,    42,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,   109,   110,   111,    56,    57,    58,
+    59,    60,    61,    -1,    -1,    -1,    -1,    -1,     3,     4,
+    -1,    -1,     7,     8,     9,    10,    11,    12,    13,    14,
+    15,    16,    17,    -1,    -1,    -1,    -1,    22,    -1,    24,
+    25,    -1,    -1,    -1,    -1,    -1,   808,    -1,    -1,    -1,
+    35,    -1,    37,    38,    39,    -1,    -1,    42,    -1,    -1,
+   109,   110,   111,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+   832,    56,    57,    58,    59,    60,    61,    -1,    -1,     3,
+     4,    -1,    -1,     7,     8,     9,    10,    11,    12,    13,
+    14,    15,    16,    17,    -1,    -1,   858,    -1,    22,   861,
+    24,   863,   864,    -1,    -1,    -1,    -1,    -1,    -1,   871,
+   872,    35,    -1,    37,    38,    39,    -1,    -1,    42,    -1,
+    -1,    -1,    -1,    -1,   109,   110,   111,    -1,    -1,    -1,
+    -1,    -1,    56,    57,    58,    59,    60,    61,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,   913,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+   922,    -1,    -1,    -1,    -1,    -1,    -1,   929,   930,    -1,
+    -1,   933,   934,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+   942,    -1,    -1,    -1,    -1,   109,   110,   111,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,   963,    -1,    -1,    -1,    -1,    -1,    -1,     3,     4,
+   972,    -1,    -1,     8,     9,    10,    11,    12,    13,    14,
+    15,    16,    17,    -1,    -1,    -1,    -1,    22,    -1,    24,
+    -1,   993,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    35,    -1,    37,    38,    39,    -1,    -1,    42,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1020,    -1,
+  1022,    56,    57,    58,    59,    60,    61,    -1,    -1,    -1,
+     3,     4,  1034,    -1,     7,     8,     9,    10,    11,    12,
+    13,    14,    15,    16,    17,    -1,    -1,     3,     4,    22,
+  1052,    24,     8,     9,    10,    11,    12,    13,    14,    15,
+    16,    17,    35,    -1,    37,    -1,    -1,    23,    24,  1071,
+  1072,    -1,    -1,    -1,   109,   110,   111,     3,     4,    -1,
+  1082,    -1,     8,     9,    10,    11,    12,    13,    14,    15,
+    16,    17,    -1,    -1,    -1,    -1,    -1,    -1,    24,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    82,
+    83,    84,    85,    86,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,   109,   110,   111,    -1,
+    -1,    -1,    -1,    99,   100,   101,   102,   103,   104,   105,
+   106,    -1,    -1,   109,   110,   111,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    99,   100,   101,   102,   103,   104,   105,
+   106,    -1,    -1,   109,   110,   111,     3,     4,    -1,    -1,
+     7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
+    17,    -1,    -1,    -1,    -1,    22,    -1,    24,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    35,    -1,
+    37,     3,     4,    -1,    -1,     7,     8,     9,    10,    11,
+    12,    13,    14,    15,    16,    17,    -1,    -1,    -1,    -1,
+    22,    23,    24,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    35,    -1,    37,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,     3,     4,    83,    84,     7,     8,
+     9,    10,    11,    12,    13,    14,    15,    16,    17,    -1,
+    -1,    -1,    -1,    22,    23,    24,    -1,    -1,    -1,    -1,
+    -1,    -1,   109,   110,   111,    -1,    35,    -1,    37,     3,
+     4,    -1,    -1,     7,     8,     9,    10,    11,    12,    13,
+    14,    15,    16,    17,    -1,    -1,    -1,    -1,    22,    23,
+    24,    -1,    -1,    -1,    -1,    -1,    -1,   109,   110,   111,
+    -1,    35,    -1,    37,     3,     4,    -1,    -1,     7,     8,
+     9,    10,    11,    12,    13,    14,    15,    16,    17,    -1,
+    -1,    -1,    -1,    22,    -1,    24,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    35,    -1,    37,    -1,
+   109,   110,   111,    -1,    -1,    -1,     3,     4,    -1,    -1,
+     7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
+    17,    -1,    -1,    -1,    -1,    22,    -1,    24,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,   109,   110,   111,    35,    -1,
+    37,     3,     4,    -1,    -1,    -1,     8,     9,    10,    11,
+    12,    13,    14,    15,    16,    17,    -1,    -1,    -1,    -1,
+    22,    -1,    24,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+   109,   110,   111,    35,    -1,    37,     3,     4,    -1,    -1,
+    -1,     8,     9,    10,    11,    12,    13,    14,    15,    16,
+    17,    -1,    -1,    -1,    -1,    22,    -1,    24,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    35,    -1,
+    37,    -1,   109,   110,   111,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,   109,   110,   111,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,   109,   110,   111
+};
+/* -*-C-*-  Note some compilers choke on comments on `#line' lines.  */
+#line 3 "/usr/local/gnu/lib/bison.simple"
+
+/* Skeleton output parser for bison,
+   Copyright (C) 1984, 1989, 1990 Bob Corbett and Richard Stallman
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 1, or (at your option)
+   any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software
+   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.  */
+
+
+#ifndef alloca
+#ifdef __GNUC__
+#define alloca __builtin_alloca
+#else /* not GNU C.  */
+#if (!defined (__STDC__) && defined (sparc)) || defined (__sparc__) || defined (__sparc) || defined (__sgi)
+#include <alloca.h>
+#else /* not sparc */
+#if defined (MSDOS) && !defined (__TURBOC__)
+#include <malloc.h>
+#else /* not MSDOS, or __TURBOC__ */
+#if defined(_AIX)
+#include <malloc.h>
+ #pragma alloca
+#else /* not MSDOS, __TURBOC__, or _AIX */
+#ifdef __hpux
+#ifdef __cplusplus
+extern "C" {
+void *alloca (unsigned int);
+};
+#else /* not __cplusplus */
+void *alloca (unsigned int);
+#endif /* not __cplusplus */
+#endif /* __hpux */
+#endif /* not _AIX */
+#endif /* not MSDOS, or __TURBOC__ */
+#endif /* not sparc.  */
+#endif /* not GNU C.  */
+#endif /* alloca not defined.  */
+
+/* This is the parser code that is written into each bison parser
+  when the %semantic_parser declaration is not specified in the grammar.
+  It was written by Richard Stallman by simplifying the hairy parser
+  used when %semantic_parser is specified.  */
+
+/* Note: there must be only one dollar sign in this file.
+   It is replaced by the list of actions, each action
+   as one case of the switch.  */
+
+#define yyerrok                (yyerrstatus = 0)
+#define yyclearin      (yychar = YYEMPTY)
+#define YYEMPTY                -2
+#define YYEOF          0
+#define YYACCEPT       return(0)
+#define YYABORT        return(1)
+#define YYERROR                goto yyerrlab1
+/* Like YYERROR except do call yyerror.
+   This remains here temporarily to ease the
+   transition to the new meaning of YYERROR, for GCC.
+   Once GCC version 2 has supplanted version 1, this can go.  */
+#define YYFAIL         goto yyerrlab
+#define YYRECOVERING()  (!!yyerrstatus)
+#define YYBACKUP(token, value) \
+do                                                             \
+  if (yychar == YYEMPTY && yylen == 1)                         \
+    { yychar = (token), yylval = (value);                      \
+      yychar1 = YYTRANSLATE (yychar);                          \
+      YYPOPSTACK;                                              \
+      goto yybackup;                                           \
+    }                                                          \
+  else                                                         \
+    { yyerror ("syntax error: cannot back up"); YYERROR; }     \
+while (0)
+
+#define YYTERROR       1
+#define YYERRCODE      256
+
+#ifndef YYPURE
+#define YYLEX          yylex()
+#endif
+
+#ifdef YYPURE
+#ifdef YYLSP_NEEDED
+#define YYLEX          yylex(&yylval, &yylloc)
+#else
+#define YYLEX          yylex(&yylval)
+#endif
+#endif
+
+/* If nonreentrant, generate the variables here */
+
+#ifndef YYPURE
+
+int    yychar;                 /*  the lookahead symbol                */
+YYSTYPE        yylval;                 /*  the semantic value of the           */
+                               /*  lookahead symbol                    */
+
+#ifdef YYLSP_NEEDED
+YYLTYPE yylloc;                        /*  location data for the lookahead     */
+                               /*  symbol                              */
+#endif
+
+int yynerrs;                   /*  number of parse errors so far       */
+#endif  /* not YYPURE */
+
+#if YYDEBUG != 0
+int yydebug;                   /*  nonzero means print parse trace     */
+/* Since this is uninitialized, it does not stop multiple parsers
+   from coexisting.  */
+#endif
+
+/*  YYINITDEPTH indicates the initial size of the parser's stacks      */
+
+#ifndef        YYINITDEPTH
+#define YYINITDEPTH 200
+#endif
+
+/*  YYMAXDEPTH is the maximum size the stacks can grow to
+    (effective only if the built-in stack extension method is used).  */
+
+#if YYMAXDEPTH == 0
+#undef YYMAXDEPTH
+#endif
+
+#ifndef YYMAXDEPTH
+#define YYMAXDEPTH 10000
+#endif
+
+/* Prevent warning if -Wstrict-prototypes.  */
+#ifdef __GNUC__
+int yyparse (void);
+#endif
+\f
+#if __GNUC__ > 1               /* GNU C and GNU C++ define this.  */
+#define __yy_bcopy(FROM,TO,COUNT)      __builtin_memcpy(TO,FROM,COUNT)
+#else                          /* not GNU C or C++ */
+#ifndef __cplusplus
+
+/* This is the most reliable way to avoid incompatibilities
+   in available built-in functions on various systems.  */
+static void
+__yy_bcopy (from, to, count)
+     char *from;
+     char *to;
+     int count;
+{
+  register char *f = from;
+  register char *t = to;
+  register int i = count;
+
+  while (i-- > 0)
+    *t++ = *f++;
+}
+
+#else /* __cplusplus */
+
+/* This is the most reliable way to avoid incompatibilities
+   in available built-in functions on various systems.  */
+static void
+__yy_bcopy (char *from, char *to, int count)
+{
+  register char *f = from;
+  register char *t = to;
+  register int i = count;
+
+  while (i-- > 0)
+    *t++ = *f++;
+}
+
+#endif
+#endif
+\f
+#line 184 "/usr/local/gnu/lib/bison.simple"
+int
+yyparse()
+{
+  register int yystate;
+  register int yyn;
+  register short *yyssp;
+  register YYSTYPE *yyvsp;
+  int yyerrstatus;     /*  number of tokens to shift before error messages enabled */
+  int yychar1;         /*  lookahead token as an internal (translated) token number */
+
+  short        yyssa[YYINITDEPTH];     /*  the state stack                     */
+  YYSTYPE yyvsa[YYINITDEPTH];  /*  the semantic value stack            */
+
+  short *yyss = yyssa;         /*  refer to the stacks thru separate pointers */
+  YYSTYPE *yyvs = yyvsa;       /*  to allow yyoverflow to reallocate them elsewhere */
+
+#ifdef YYLSP_NEEDED
+  YYLTYPE yylsa[YYINITDEPTH];  /*  the location stack                  */
+  YYLTYPE *yyls = yylsa;
+  YYLTYPE *yylsp;
+
+#define YYPOPSTACK   (yyvsp--, yyssp--, yylsp--)
+#else
+#define YYPOPSTACK   (yyvsp--, yyssp--)
+#endif
+
+  int yystacksize = YYINITDEPTH;
+
+#ifdef YYPURE
+  int yychar;
+  YYSTYPE yylval;
+  int yynerrs;
+#ifdef YYLSP_NEEDED
+  YYLTYPE yylloc;
+#endif
+#endif
+
+  YYSTYPE yyval;               /*  the variable used to return         */
+                               /*  semantic values from the action     */
+                               /*  routines                            */
+
+  int yylen;
+
+#if YYDEBUG != 0
+  if (yydebug)
+    fprintf(stderr, "Starting parse\n");
+#endif
+
+  yystate = 0;
+  yyerrstatus = 0;
+  yynerrs = 0;
+  yychar = YYEMPTY;            /* Cause a token to be read.  */
+
+  /* Initialize stack pointers.
+     Waste one element of value and location stack
+     so that they stay on the same level as the state stack.
+     The wasted elements are never initialized.  */
+
+  yyssp = yyss - 1;
+  yyvsp = yyvs;
+#ifdef YYLSP_NEEDED
+  yylsp = yyls;
+#endif
+
+/* Push a new state, which is found in  yystate  .  */
+/* In all cases, when you get here, the value and location stacks
+   have just been pushed. so pushing a state here evens the stacks.  */
+yynewstate:
+
+  *++yyssp = yystate;
+
+  if (yyssp >= yyss + yystacksize - 1)
+    {
+      /* Give user a chance to reallocate the stack */
+      /* Use copies of these so that the &'s don't force the real ones into memory. */
+      YYSTYPE *yyvs1 = yyvs;
+      short *yyss1 = yyss;
+#ifdef YYLSP_NEEDED
+      YYLTYPE *yyls1 = yyls;
+#endif
+
+      /* Get the current used size of the three stacks, in elements.  */
+      int size = yyssp - yyss + 1;
+
+#ifdef yyoverflow
+      /* Each stack pointer address is followed by the size of
+        the data in use in that stack, in bytes.  */
+      yyoverflow("parser stack overflow",
+                &yyss1, size * sizeof (*yyssp),
+                &yyvs1, size * sizeof (*yyvsp),
+#ifdef YYLSP_NEEDED
+                &yyls1, size * sizeof (*yylsp),
+#endif
+                &yystacksize);
+
+      yyss = yyss1; yyvs = yyvs1;
+#ifdef YYLSP_NEEDED
+      yyls = yyls1;
+#endif
+#else /* no yyoverflow */
+      /* Extend the stack our own way.  */
+      if (yystacksize >= YYMAXDEPTH)
+       {
+         yyerror("parser stack overflow");
+         return 2;
+       }
+      yystacksize *= 2;
+      if (yystacksize > YYMAXDEPTH)
+       yystacksize = YYMAXDEPTH;
+      yyss = (short *) alloca (yystacksize * sizeof (*yyssp));
+      __yy_bcopy ((char *)yyss1, (char *)yyss, size * sizeof (*yyssp));
+      yyvs = (YYSTYPE *) alloca (yystacksize * sizeof (*yyvsp));
+      __yy_bcopy ((char *)yyvs1, (char *)yyvs, size * sizeof (*yyvsp));
+#ifdef YYLSP_NEEDED
+      yyls = (YYLTYPE *) alloca (yystacksize * sizeof (*yylsp));
+      __yy_bcopy ((char *)yyls1, (char *)yyls, size * sizeof (*yylsp));
+#endif
+#endif /* no yyoverflow */
+
+      yyssp = yyss + size - 1;
+      yyvsp = yyvs + size - 1;
+#ifdef YYLSP_NEEDED
+      yylsp = yyls + size - 1;
+#endif
+
+#if YYDEBUG != 0
+      if (yydebug)
+       fprintf(stderr, "Stack size increased to %d\n", yystacksize);
+#endif
+
+      if (yyssp >= yyss + yystacksize - 1)
+       YYABORT;
+    }
+
+#if YYDEBUG != 0
+  if (yydebug)
+    fprintf(stderr, "Entering state %d\n", yystate);
+#endif
+
+  goto yybackup;
+ yybackup:
+
+/* Do appropriate processing given the current state.  */
+/* Read a lookahead token if we need one and don't already have one.  */
+/* yyresume: */
+
+  /* First try to decide what to do without reference to lookahead token.  */
+
+  yyn = yypact[yystate];
+  if (yyn == YYFLAG)
+    goto yydefault;
+
+  /* Not known => get a lookahead token if don't already have one.  */
+
+  /* yychar is either YYEMPTY or YYEOF
+     or a valid token in external form.  */
+
+  if (yychar == YYEMPTY)
+    {
+#if YYDEBUG != 0
+      if (yydebug)
+       fprintf(stderr, "Reading a token: ");
+#endif
+      yychar = YYLEX;
+    }
+
+  /* Convert token to internal form (in yychar1) for indexing tables with */
+
+  if (yychar <= 0)             /* This means end of input. */
+    {
+      yychar1 = 0;
+      yychar = YYEOF;          /* Don't call YYLEX any more */
+
+#if YYDEBUG != 0
+      if (yydebug)
+       fprintf(stderr, "Now at end of input.\n");
+#endif
+    }
+  else
+    {
+      yychar1 = YYTRANSLATE(yychar);
+
+#if YYDEBUG != 0
+      if (yydebug)
+       {
+         fprintf (stderr, "Next token is %d (%s", yychar, yytname[yychar1]);
+         /* Give the individual parser a way to print the precise meaning
+            of a token, for further debugging info.  */
+#ifdef YYPRINT
+         YYPRINT (stderr, yychar, yylval);
+#endif
+         fprintf (stderr, ")\n");
+       }
+#endif
+    }
+
+  yyn += yychar1;
+  if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != yychar1)
+    goto yydefault;
+
+  yyn = yytable[yyn];
+
+  /* yyn is what to do for this token type in this state.
+     Negative => reduce, -yyn is rule number.
+     Positive => shift, yyn is new state.
+       New state is final state => don't bother to shift,
+       just return success.
+     0, or most negative number => error.  */
+
+  if (yyn < 0)
+    {
+      if (yyn == YYFLAG)
+       goto yyerrlab;
+      yyn = -yyn;
+      goto yyreduce;
+    }
+  else if (yyn == 0)
+    goto yyerrlab;
+
+  if (yyn == YYFINAL)
+    YYACCEPT;
+
+  /* Shift the lookahead token.  */
+
+#if YYDEBUG != 0
+  if (yydebug)
+    fprintf(stderr, "Shifting token %d (%s), ", yychar, yytname[yychar1]);
+#endif
+
+  /* Discard the token being shifted unless it is eof.  */
+  if (yychar != YYEOF)
+    yychar = YYEMPTY;
+
+  *++yyvsp = yylval;
+#ifdef YYLSP_NEEDED
+  *++yylsp = yylloc;
+#endif
+
+  /* count tokens shifted since error; after three, turn off error status.  */
+  if (yyerrstatus) yyerrstatus--;
+
+  yystate = yyn;
+  goto yynewstate;
+
+/* Do the default action for the current state.  */
+yydefault:
+
+  yyn = yydefact[yystate];
+  if (yyn == 0)
+    goto yyerrlab;
+
+/* Do a reduction.  yyn is the number of a rule to reduce with.  */
+yyreduce:
+  yylen = yyr2[yyn];
+  yyval = yyvsp[1-yylen]; /* implement default value of the action */
+
+#if YYDEBUG != 0
+  if (yydebug)
+    {
+      int i;
+
+      fprintf (stderr, "Reducing via rule %d (line %d), ",
+              yyn, yyrline[yyn]);
+
+      /* Print the symbols being reduced, and their result.  */
+      for (i = yyprhs[yyn]; yyrhs[i] > 0; i++)
+       fprintf (stderr, "%s ", yytname[yyrhs[i]]);
+      fprintf (stderr, " -> %s\n", yytname[yyr1[yyn]]);
+    }
+#endif
+
+
+  switch (yyn) {
+
+case 2:
+#line 335 "yaccParser/hsparser.y"
+{ the_module_name = yyvsp[-1].uid; module_exports = yyvsp[0].ulist; ;
+    break;}
+case 4:
+#line 337 "yaccParser/hsparser.y"
+{ the_module_name = install_literal("Main"); module_exports = Lnil; ;
+    break;}
+case 6:
+#line 343 "yaccParser/hsparser.y"
+{
+                root = mkhmodule(the_module_name,lconc(prelude_imports,yyvsp[-3].ulist),module_exports,yyvsp[-1].ubinding,startlineno);
+              ;
+    break;}
+case 7:
+#line 347 "yaccParser/hsparser.y"
+{
+                root = mkhmodule(the_module_name,lconc(prelude_imports,yyvsp[-3].ulist),module_exports,yyvsp[-1].ubinding,startlineno);
+              ;
+    break;}
+case 8:
+#line 352 "yaccParser/hsparser.y"
+{
+                root = mkhmodule(the_module_name,lconc(prelude_imports,yyvsp[-1].ulist),module_exports,mknullbind(),startlineno);
+              ;
+    break;}
+case 9:
+#line 356 "yaccParser/hsparser.y"
+{
+                root = mkhmodule(the_module_name,lconc(prelude_imports,yyvsp[-1].ulist),module_exports,mknullbind(),startlineno);
+              ;
+    break;}
+case 10:
+#line 362 "yaccParser/hsparser.y"
+{
+                root = mkhmodule(the_module_name,lconc(prelude_imports,yyvsp[-1].ulist),module_exports,mknullbind(),startlineno);
+              ;
+    break;}
+case 11:
+#line 366 "yaccParser/hsparser.y"
+{
+                root = mkhmodule(the_module_name,lconc(prelude_imports,yyvsp[-1].ulist),module_exports,mknullbind(),startlineno);
+              ;
+    break;}
+case 12:
+#line 372 "yaccParser/hsparser.y"
+{ yyval.ulist = Lnil; ;
+    break;}
+case 13:
+#line 373 "yaccParser/hsparser.y"
+{ yyval.ulist = yyvsp[-1].ulist; ;
+    break;}
+case 14:
+#line 377 "yaccParser/hsparser.y"
+{ yyval.ulist = lsing(yyvsp[0].uentid); ;
+    break;}
+case 15:
+#line 378 "yaccParser/hsparser.y"
+{ yyval.ulist = lapp(yyvsp[-2].ulist, yyvsp[0].uentid); ;
+    break;}
+case 16:
+#line 382 "yaccParser/hsparser.y"
+{ yyval.uentid = mkentid(yyvsp[0].uid); ;
+    break;}
+case 17:
+#line 383 "yaccParser/hsparser.y"
+{ yyval.uentid = mkenttype(yyvsp[0].uid); ;
+    break;}
+case 18:
+#line 384 "yaccParser/hsparser.y"
+{ yyval.uentid = mkenttypeall(yyvsp[-3].uid); ;
+    break;}
+case 19:
+#line 386 "yaccParser/hsparser.y"
+{ yyval.uentid = mkenttypecons(yyvsp[-3].uid,yyvsp[-1].ulist);
+                 /* should be a datatype with cons representing all constructors */
+               ;
+    break;}
+case 20:
+#line 390 "yaccParser/hsparser.y"
+{ yyval.uentid = mkentclass(yyvsp[-3].uid,yyvsp[-1].ulist);
+                 /* should be a class with vars representing all Class operations */
+               ;
+    break;}
+case 21:
+#line 394 "yaccParser/hsparser.y"
+{ yyval.uentid = mkentclass(yyvsp[-2].uid,Lnil);
+                 /* "tycon" should be a class with no operations */
+               ;
+    break;}
+case 22:
+#line 398 "yaccParser/hsparser.y"
+{ yyval.uentid = mkentmod(yyvsp[-1].uid);
+                 /* "tycon" is a module id (but "modid" is bad for your identifier's health [KH])  */
+               ;
+    break;}
+case 23:
+#line 404 "yaccParser/hsparser.y"
+{ yyval.ulist = yyvsp[-1].ulist; hidden = FALSE; ;
+    break;}
+case 24:
+#line 405 "yaccParser/hsparser.y"
+{ yyval.ulist = yyvsp[-1].ulist; hidden = TRUE; ;
+    break;}
+case 25:
+#line 406 "yaccParser/hsparser.y"
+{ yyval.ulist = Lnil; hidden = FALSE; ;
+    break;}
+case 26:
+#line 409 "yaccParser/hsparser.y"
+{ yyval.ulist = Lnil; ;
+    break;}
+case 27:
+#line 410 "yaccParser/hsparser.y"
+{ yyval.ulist = yyvsp[0].ulist; ;
+    break;}
+case 28:
+#line 414 "yaccParser/hsparser.y"
+{ yyval.ulist = lsing(yyvsp[0].uentid); ;
+    break;}
+case 29:
+#line 415 "yaccParser/hsparser.y"
+{ yyval.ulist = lapp(yyvsp[-2].ulist, yyvsp[0].uentid); ;
+    break;}
+case 30:
+#line 419 "yaccParser/hsparser.y"
+{ yyval.uentid = mkentid(yyvsp[0].uid); ;
+    break;}
+case 31:
+#line 420 "yaccParser/hsparser.y"
+{ yyval.uentid = mkenttype(yyvsp[0].uid); ;
+    break;}
+case 32:
+#line 421 "yaccParser/hsparser.y"
+{ yyval.uentid = mkenttypeall(yyvsp[-3].uid); ;
+    break;}
+case 33:
+#line 423 "yaccParser/hsparser.y"
+{ yyval.uentid = mkenttypecons(yyvsp[-3].uid,yyvsp[-1].ulist);
+                 /* should be a datatype with cons representing all constructors */
+               ;
+    break;}
+case 34:
+#line 427 "yaccParser/hsparser.y"
+{ yyval.uentid = mkentclass(yyvsp[-3].uid,yyvsp[-1].ulist);
+                 /* should be a class with vars representing all Class operations */
+               ;
+    break;}
+case 35:
+#line 431 "yaccParser/hsparser.y"
+{ yyval.uentid = mkentclass(yyvsp[-2].uid,Lnil);
+                 /* "tycon" should be a class with no operations */
+               ;
+    break;}
+case 36:
+#line 440 "yaccParser/hsparser.y"
+{ yyval.uhpragma = mkidata_pragma(yyvsp[-2].ulist, yyvsp[-1].ulist); ;
+    break;}
+case 37:
+#line 442 "yaccParser/hsparser.y"
+{ yyval.uhpragma = mkidata_pragma(Lnil, yyvsp[-1].ulist); ;
+    break;}
+case 38:
+#line 443 "yaccParser/hsparser.y"
+{ yyval.uhpragma = mkno_pragma(); ;
+    break;}
+case 39:
+#line 448 "yaccParser/hsparser.y"
+{ yyval.ulist = yyvsp[0].ulist; ;
+    break;}
+case 40:
+#line 449 "yaccParser/hsparser.y"
+{ yyval.ulist = Lnil; ;
+    break;}
+case 41:
+#line 453 "yaccParser/hsparser.y"
+{ yyval.ulist = lsing(yyvsp[0].uhpragma); ;
+    break;}
+case 42:
+#line 455 "yaccParser/hsparser.y"
+{ yyval.ulist = lapp(yyvsp[-2].ulist, yyvsp[0].uhpragma); ;
+    break;}
+case 43:
+#line 459 "yaccParser/hsparser.y"
+{ yyval.uhpragma = mkidata_pragma_4s(yyvsp[-1].ulist); ;
+    break;}
+case 44:
+#line 463 "yaccParser/hsparser.y"
+{ yyval.uhpragma = mkitype_pragma(); ;
+    break;}
+case 45:
+#line 464 "yaccParser/hsparser.y"
+{ yyval.uhpragma = mkno_pragma(); ;
+    break;}
+case 46:
+#line 468 "yaccParser/hsparser.y"
+{ yyval.uhpragma = mkiclas_pragma(yyvsp[-1].ulist); ;
+    break;}
+case 47:
+#line 469 "yaccParser/hsparser.y"
+{ yyval.uhpragma = mkno_pragma(); ;
+    break;}
+case 48:
+#line 474 "yaccParser/hsparser.y"
+{ yyval.uhpragma = mkiclasop_pragma(yyvsp[-2].uhpragma, yyvsp[-1].uhpragma); ;
+    break;}
+case 49:
+#line 476 "yaccParser/hsparser.y"
+{ yyval.uhpragma = mkno_pragma(); ;
+    break;}
+case 50:
+#line 481 "yaccParser/hsparser.y"
+{ yyval.uhpragma = mkiinst_simpl_pragma(yyvsp[-2].uid, yyvsp[-1].uhpragma); ;
+    break;}
+case 51:
+#line 484 "yaccParser/hsparser.y"
+{ yyval.uhpragma = mkiinst_const_pragma(yyvsp[-3].uid, yyvsp[-2].uhpragma, yyvsp[-1].ulist); ;
+    break;}
+case 52:
+#line 487 "yaccParser/hsparser.y"
+{ yyval.uhpragma = mkiinst_spec_pragma(yyvsp[-3].uid, yyvsp[-2].uhpragma, yyvsp[-1].ulist); ;
+    break;}
+case 53:
+#line 490 "yaccParser/hsparser.y"
+{ yyval.uhpragma = mkno_pragma(); ;
+    break;}
+case 54:
+#line 495 "yaccParser/hsparser.y"
+{ yyval.uid = yyvsp[0].uid; ;
+    break;}
+case 55:
+#line 497 "yaccParser/hsparser.y"
+{ yyval.uid = install_literal(""); ;
+    break;}
+case 56:
+#line 500 "yaccParser/hsparser.y"
+{ yyval.ulist = yyvsp[0].ulist; ;
+    break;}
+case 57:
+#line 505 "yaccParser/hsparser.y"
+{ yyval.uhpragma = yyvsp[-1].uhpragma; ;
+    break;}
+case 58:
+#line 507 "yaccParser/hsparser.y"
+{ yyval.uhpragma = mkno_pragma(); ;
+    break;}
+case 59:
+#line 512 "yaccParser/hsparser.y"
+{ yyval.uhpragma = mkno_pragma(); ;
+    break;}
+case 60:
+#line 514 "yaccParser/hsparser.y"
+{ yyval.uhpragma = mkigen_pragma(yyvsp[-5].uhpragma, yyvsp[-4].uhpragma, yyvsp[-3].uhpragma, yyvsp[-2].uhpragma, yyvsp[-1].uhpragma, yyvsp[0].ulist); ;
+    break;}
+case 61:
+#line 518 "yaccParser/hsparser.y"
+{ yyval.uhpragma = mkno_pragma(); ;
+    break;}
+case 62:
+#line 519 "yaccParser/hsparser.y"
+{ yyval.uhpragma = mkiarity_pragma(yyvsp[0].ustring); ;
+    break;}
+case 63:
+#line 523 "yaccParser/hsparser.y"
+{ yyval.uhpragma = mkno_pragma(); ;
+    break;}
+case 64:
+#line 524 "yaccParser/hsparser.y"
+{ yyval.uhpragma = mkiupdate_pragma(yyvsp[0].ustring); ;
+    break;}
+case 65:
+#line 528 "yaccParser/hsparser.y"
+{ yyval.uhpragma = mkno_pragma(); ;
+    break;}
+case 66:
+#line 529 "yaccParser/hsparser.y"
+{ yyval.uhpragma = mkideforest_pragma(); ;
+    break;}
+case 67:
+#line 533 "yaccParser/hsparser.y"
+{ yyval.uhpragma = mkno_pragma(); ;
+    break;}
+case 68:
+#line 534 "yaccParser/hsparser.y"
+{ yyval.uhpragma = mkistrictness_pragma(installHstring(1, "B"),
+                                     /* _!_ = COCON = bottom */ mkno_pragma());
+                                   ;
+    break;}
+case 69:
+#line 538 "yaccParser/hsparser.y"
+{ yyval.uhpragma = mkistrictness_pragma(yyvsp[-1].uhstring, yyvsp[0].uhpragma); ;
+    break;}
+case 70:
+#line 542 "yaccParser/hsparser.y"
+{ yyval.uhpragma = yyvsp[-1].uhpragma; ;
+    break;}
+case 71:
+#line 543 "yaccParser/hsparser.y"
+{ yyval.uhpragma = mkno_pragma(); ;
+    break;}
+case 72:
+#line 546 "yaccParser/hsparser.y"
+{ yyval.uhpragma = mkno_pragma(); ;
+    break;}
+case 73:
+#line 548 "yaccParser/hsparser.y"
+{ yyval.uhpragma = mkimagic_unfolding_pragma(yyvsp[0].uid); ;
+    break;}
+case 74:
+#line 550 "yaccParser/hsparser.y"
+{ yyval.uhpragma = mkiunfolding_pragma(yyvsp[-1].uhpragma, yyvsp[0].ucoresyn); ;
+    break;}
+case 75:
+#line 555 "yaccParser/hsparser.y"
+{ yyval.uhpragma = mkiunfold_always(); ;
+    break;}
+case 76:
+#line 557 "yaccParser/hsparser.y"
+{ yyval.uhpragma = mkiunfold_if_args(yyvsp[-3].ustring, yyvsp[-2].ustring, yyvsp[-1].uid, yyvsp[0].ustring); ;
+    break;}
+case 77:
+#line 561 "yaccParser/hsparser.y"
+{ yyval.ulist = lsing(yyvsp[0].uhpragma); ;
+    break;}
+case 78:
+#line 562 "yaccParser/hsparser.y"
+{ yyval.ulist = lapp(yyvsp[-2].ulist, yyvsp[0].uhpragma); ;
+    break;}
+case 79:
+#line 566 "yaccParser/hsparser.y"
+{ yyval.ulist = Lnil; ;
+    break;}
+case 80:
+#line 567 "yaccParser/hsparser.y"
+{ yyval.ulist = yyvsp[0].ulist; ;
+    break;}
+case 81:
+#line 571 "yaccParser/hsparser.y"
+{ yyval.ulist = lsing(yyvsp[0].uhpragma); ;
+    break;}
+case 82:
+#line 572 "yaccParser/hsparser.y"
+{ yyval.ulist = lapp(yyvsp[-2].ulist, yyvsp[0].uhpragma); ;
+    break;}
+case 83:
+#line 577 "yaccParser/hsparser.y"
+{ yyval.uhpragma = mkitype_pragma_pr(yyvsp[-3].ulist, yyvsp[-1].ustring, yyvsp[0].uhpragma); ;
+    break;}
+case 84:
+#line 581 "yaccParser/hsparser.y"
+{ yyval.ulist = lsing(yyvsp[0].uhpragma); ;
+    break;}
+case 85:
+#line 582 "yaccParser/hsparser.y"
+{ yyval.ulist = lapp(yyvsp[-2].ulist,yyvsp[0].uhpragma); ;
+    break;}
+case 86:
+#line 587 "yaccParser/hsparser.y"
+{ yyval.uhpragma = mkiinst_pragma_3s(yyvsp[-4].ulist, yyvsp[-2].ustring, yyvsp[-1].uhpragma, yyvsp[0].ulist); ;
+    break;}
+case 87:
+#line 591 "yaccParser/hsparser.y"
+{ yyval.ulist = lsing(yyvsp[0].uttype); ;
+    break;}
+case 88:
+#line 592 "yaccParser/hsparser.y"
+{ yyval.ulist = lapp(yyvsp[-2].ulist, yyvsp[0].uttype); ;
+    break;}
+case 89:
+#line 596 "yaccParser/hsparser.y"
+{ yyval.uttype = mkty_maybe_nothing(); ;
+    break;}
+case 90:
+#line 597 "yaccParser/hsparser.y"
+{ yyval.uttype = mkty_maybe_just(yyvsp[0].uttype); ;
+    break;}
+case 91:
+#line 601 "yaccParser/hsparser.y"
+{ yyval.ulist = Lnil; ;
+    break;}
+case 92:
+#line 602 "yaccParser/hsparser.y"
+{ yyval.ulist = yyvsp[0].ulist; ;
+    break;}
+case 93:
+#line 606 "yaccParser/hsparser.y"
+{ yyval.ulist = lsing(yyvsp[0].uhpragma); ;
+    break;}
+case 94:
+#line 607 "yaccParser/hsparser.y"
+{ yyval.ulist = lapp(yyvsp[-2].ulist, yyvsp[0].uhpragma); ;
+    break;}
+case 95:
+#line 612 "yaccParser/hsparser.y"
+{ yyval.uhpragma = mkiname_pragma_pr(yyvsp[-2].uid, yyvsp[0].uhpragma); ;
+    break;}
+case 96:
+#line 621 "yaccParser/hsparser.y"
+{ yyval.ucoresyn = mkcolam(yyvsp[-2].ulist, yyvsp[0].ucoresyn); ;
+    break;}
+case 97:
+#line 623 "yaccParser/hsparser.y"
+{ yyval.ucoresyn = mkcotylam(yyvsp[-2].ulist, yyvsp[0].ucoresyn); ;
+    break;}
+case 98:
+#line 625 "yaccParser/hsparser.y"
+{ yyval.ucoresyn = mkcocon(mkco_id(yyvsp[-2].uid), yyvsp[-1].ulist, yyvsp[0].ulist); ;
+    break;}
+case 99:
+#line 627 "yaccParser/hsparser.y"
+{ yyval.ucoresyn = mkcocon(mkco_orig_id(yyvsp[-3].uid,yyvsp[-2].uid), yyvsp[-1].ulist, yyvsp[0].ulist); ;
+    break;}
+case 100:
+#line 629 "yaccParser/hsparser.y"
+{ yyval.ucoresyn = mkcoprim(yyvsp[-2].ucoresyn, yyvsp[-1].ulist, yyvsp[0].ulist); ;
+    break;}
+case 101:
+#line 631 "yaccParser/hsparser.y"
+{ yyval.ucoresyn = mkcoapp(yyvsp[-1].ucoresyn, yyvsp[0].ulist); ;
+    break;}
+case 102:
+#line 633 "yaccParser/hsparser.y"
+{ yyval.ucoresyn = mkcotyapp(yyvsp[-3].ucoresyn, yyvsp[-1].uttype); ;
+    break;}
+case 103:
+#line 635 "yaccParser/hsparser.y"
+{ yyval.ucoresyn = mkcocase(yyvsp[-4].ucoresyn, yyvsp[-1].ucoresyn); ;
+    break;}
+case 104:
+#line 637 "yaccParser/hsparser.y"
+{ yyval.ucoresyn = mkcolet(mkcononrec(yyvsp[-5].ucoresyn, yyvsp[-3].ucoresyn), yyvsp[0].ucoresyn); ;
+    break;}
+case 105:
+#line 639 "yaccParser/hsparser.y"
+{ yyval.ucoresyn = mkcolet(mkcorec(yyvsp[-3].ulist), yyvsp[0].ucoresyn); ;
+    break;}
+case 106:
+#line 641 "yaccParser/hsparser.y"
+{ yyval.ucoresyn = mkcoscc(yyvsp[-2].ucoresyn, yyvsp[0].ucoresyn); ;
+    break;}
+case 107:
+#line 642 "yaccParser/hsparser.y"
+{ yyval.ucoresyn = mkcoliteral(yyvsp[0].uliteral); ;
+    break;}
+case 108:
+#line 643 "yaccParser/hsparser.y"
+{ yyval.ucoresyn = mkcovar(yyvsp[0].ucoresyn); ;
+    break;}
+case 109:
+#line 648 "yaccParser/hsparser.y"
+{ yyval.ucoresyn = mkcoalg_alts(yyvsp[-1].ulist, yyvsp[0].ucoresyn); ;
+    break;}
+case 110:
+#line 650 "yaccParser/hsparser.y"
+{ yyval.ucoresyn = mkcoprim_alts(yyvsp[-1].ulist, yyvsp[0].ucoresyn); ;
+    break;}
+case 111:
+#line 654 "yaccParser/hsparser.y"
+{ yyval.ulist = Lnil; ;
+    break;}
+case 112:
+#line 655 "yaccParser/hsparser.y"
+{ yyval.ulist = lapp(yyvsp[-1].ulist, yyvsp[0].ucoresyn); ;
+    break;}
+case 113:
+#line 659 "yaccParser/hsparser.y"
+{ yyval.ucoresyn = mkcoalg_alt(yyvsp[-4].ucoresyn, yyvsp[-3].ulist, yyvsp[-1].ucoresyn); ;
+    break;}
+case 114:
+#line 664 "yaccParser/hsparser.y"
+{ yyval.ulist = Lnil; ;
+    break;}
+case 115:
+#line 665 "yaccParser/hsparser.y"
+{ yyval.ulist = lapp(yyvsp[-1].ulist, yyvsp[0].ucoresyn); ;
+    break;}
+case 116:
+#line 669 "yaccParser/hsparser.y"
+{ yyval.ucoresyn = mkcoprim_alt(yyvsp[-3].uliteral, yyvsp[-1].ucoresyn); ;
+    break;}
+case 117:
+#line 673 "yaccParser/hsparser.y"
+{ yyval.ucoresyn = mkconodeflt(); ;
+    break;}
+case 118:
+#line 674 "yaccParser/hsparser.y"
+{ yyval.ucoresyn = mkcobinddeflt(yyvsp[-2].ucoresyn, yyvsp[0].ucoresyn); ;
+    break;}
+case 119:
+#line 678 "yaccParser/hsparser.y"
+{ yyval.ulist = lsing(yyvsp[0].ucoresyn); ;
+    break;}
+case 120:
+#line 679 "yaccParser/hsparser.y"
+{ yyval.ulist = lapp(yyvsp[-2].ulist, yyvsp[0].ucoresyn); ;
+    break;}
+case 121:
+#line 683 "yaccParser/hsparser.y"
+{ yyval.ucoresyn = mkcorec_pair(yyvsp[-2].ucoresyn, yyvsp[0].ucoresyn); ;
+    break;}
+case 122:
+#line 687 "yaccParser/hsparser.y"
+{ yyval.ucoresyn = mkco_preludedictscc(yyvsp[0].ucoresyn); ;
+    break;}
+case 123:
+#line 688 "yaccParser/hsparser.y"
+{ yyval.ucoresyn = mkco_alldictscc(yyvsp[-2].uhstring,yyvsp[-1].uhstring,yyvsp[0].ucoresyn); ;
+    break;}
+case 124:
+#line 690 "yaccParser/hsparser.y"
+{ yyval.ucoresyn = mkco_usercc(yyvsp[-4].uhstring,yyvsp[-3].uhstring,yyvsp[-2].uhstring,yyvsp[-1].ucoresyn,yyvsp[0].ucoresyn); ;
+    break;}
+case 125:
+#line 692 "yaccParser/hsparser.y"
+{ yyval.ucoresyn = mkco_autocc(yyvsp[-4].ucoresyn,yyvsp[-3].uhstring,yyvsp[-2].uhstring,yyvsp[-1].ucoresyn,yyvsp[0].ucoresyn); ;
+    break;}
+case 126:
+#line 694 "yaccParser/hsparser.y"
+{ yyval.ucoresyn = mkco_dictcc(yyvsp[-4].ucoresyn,yyvsp[-3].uhstring,yyvsp[-2].uhstring,yyvsp[-1].ucoresyn,yyvsp[0].ucoresyn); ;
+    break;}
+case 127:
+#line 696 "yaccParser/hsparser.y"
+{ yyval.ucoresyn = mkco_scc_noncaf(); ;
+    break;}
+case 128:
+#line 697 "yaccParser/hsparser.y"
+{ yyval.ucoresyn = mkco_scc_caf(); ;
+    break;}
+case 129:
+#line 699 "yaccParser/hsparser.y"
+{ yyval.ucoresyn = mkco_scc_nondupd(); ;
+    break;}
+case 130:
+#line 700 "yaccParser/hsparser.y"
+{ yyval.ucoresyn = mkco_scc_dupd(); ;
+    break;}
+case 131:
+#line 703 "yaccParser/hsparser.y"
+{ yyval.ucoresyn = mkco_sdselid(yyvsp[-1].uid, yyvsp[0].uid); ;
+    break;}
+case 132:
+#line 704 "yaccParser/hsparser.y"
+{ yyval.ucoresyn = mkco_classopid(yyvsp[-1].uid, yyvsp[0].uid); ;
+    break;}
+case 133:
+#line 705 "yaccParser/hsparser.y"
+{ yyval.ucoresyn = mkco_defmid(yyvsp[-1].uid, yyvsp[0].uid); ;
+    break;}
+case 134:
+#line 707 "yaccParser/hsparser.y"
+{ yyval.ucoresyn = mkco_dfunid(yyvsp[-3].uid, yyvsp[-1].uttype); ;
+    break;}
+case 135:
+#line 709 "yaccParser/hsparser.y"
+{ yyval.ucoresyn = mkco_constmid(yyvsp[-4].uid, yyvsp[-3].uid, yyvsp[-1].uttype); ;
+    break;}
+case 136:
+#line 711 "yaccParser/hsparser.y"
+{ yyval.ucoresyn = mkco_specid(yyvsp[-3].ucoresyn, yyvsp[-1].ulist); ;
+    break;}
+case 137:
+#line 712 "yaccParser/hsparser.y"
+{ yyval.ucoresyn = mkco_wrkrid(yyvsp[0].ucoresyn); ;
+    break;}
+case 138:
+#line 713 "yaccParser/hsparser.y"
+{ yyval.ucoresyn = mkco_orig_id(yyvsp[-1].uid, yyvsp[0].uid); ;
+    break;}
+case 139:
+#line 714 "yaccParser/hsparser.y"
+{ yyval.ucoresyn = mkco_orig_id(yyvsp[-1].uid, yyvsp[0].uid); ;
+    break;}
+case 140:
+#line 715 "yaccParser/hsparser.y"
+{ yyval.ucoresyn = mkco_id(yyvsp[0].uid); ;
+    break;}
+case 141:
+#line 716 "yaccParser/hsparser.y"
+{ yyval.ucoresyn = mkco_id(yyvsp[0].uid); ;
+    break;}
+case 142:
+#line 721 "yaccParser/hsparser.y"
+{ yyval.ucoresyn = mkco_ccall(yyvsp[-5].uid,0,yyvsp[-3].ulist,yyvsp[-2].uttype); ;
+    break;}
+case 143:
+#line 723 "yaccParser/hsparser.y"
+{ yyval.ucoresyn = mkco_ccall(yyvsp[-5].uid,1,yyvsp[-3].ulist,yyvsp[-2].uttype); ;
+    break;}
+case 144:
+#line 725 "yaccParser/hsparser.y"
+{ yyval.ucoresyn = mkco_casm(yyvsp[-5].uliteral,0,yyvsp[-3].ulist,yyvsp[-2].uttype); ;
+    break;}
+case 145:
+#line 727 "yaccParser/hsparser.y"
+{ yyval.ucoresyn = mkco_casm(yyvsp[-5].uliteral,1,yyvsp[-3].ulist,yyvsp[-2].uttype); ;
+    break;}
+case 146:
+#line 728 "yaccParser/hsparser.y"
+{ yyval.ucoresyn = mkco_primop(yyvsp[0].uid); ;
+    break;}
+case 147:
+#line 732 "yaccParser/hsparser.y"
+{ yyval.ulist = Lnil; ;
+    break;}
+case 148:
+#line 733 "yaccParser/hsparser.y"
+{ yyval.ulist = lapp(yyvsp[-1].ulist, yyvsp[0].ucoresyn); ;
+    break;}
+case 149:
+#line 737 "yaccParser/hsparser.y"
+{ yyval.ucoresyn = mkcobinder(yyvsp[-3].uid, yyvsp[-1].uttype); ;
+    break;}
+case 150:
+#line 740 "yaccParser/hsparser.y"
+{ yyval.ulist = Lnil; ;
+    break;}
+case 151:
+#line 741 "yaccParser/hsparser.y"
+{ yyval.ulist = yyvsp[-1].ulist; ;
+    break;}
+case 152:
+#line 745 "yaccParser/hsparser.y"
+{ yyval.ulist = lsing(yyvsp[0].ucoresyn); ;
+    break;}
+case 153:
+#line 746 "yaccParser/hsparser.y"
+{ yyval.ulist = lapp(yyvsp[-2].ulist, yyvsp[0].ucoresyn); ;
+    break;}
+case 154:
+#line 750 "yaccParser/hsparser.y"
+{ yyval.ucoresyn = mkcolit(yyvsp[0].uliteral); ;
+    break;}
+case 155:
+#line 751 "yaccParser/hsparser.y"
+{ yyval.ucoresyn = mkcolocal(yyvsp[0].ucoresyn); ;
+    break;}
+case 156:
+#line 755 "yaccParser/hsparser.y"
+{ yyval.ulist = lsing(yyvsp[0].uid); ;
+    break;}
+case 157:
+#line 756 "yaccParser/hsparser.y"
+{ yyval.ulist = lapp(yyvsp[-1].ulist, yyvsp[0].uid); ;
+    break;}
+case 158:
+#line 760 "yaccParser/hsparser.y"
+{ yyval.ulist = lsing(yyvsp[0].uid); ;
+    break;}
+case 159:
+#line 761 "yaccParser/hsparser.y"
+{ yyval.ulist = lapp(yyvsp[-2].ulist, yyvsp[0].uid); ;
+    break;}
+case 160:
+#line 765 "yaccParser/hsparser.y"
+{ yyval.ulist = Lnil; ;
+    break;}
+case 161:
+#line 766 "yaccParser/hsparser.y"
+{ yyval.ulist = yyvsp[-1].ulist; ;
+    break;}
+case 162:
+#line 770 "yaccParser/hsparser.y"
+{ yyval.ulist = lsing(yyvsp[0].uttype); ;
+    break;}
+case 163:
+#line 771 "yaccParser/hsparser.y"
+{ yyval.ulist = lapp(yyvsp[-2].ulist, yyvsp[0].uttype); ;
+    break;}
+case 164:
+#line 775 "yaccParser/hsparser.y"
+{ yyval.uttype = yyvsp[0].uttype; ;
+    break;}
+case 165:
+#line 795 "yaccParser/hsparser.y"
+{ yyval.ulist = lsing(yyvsp[0].uttype); ;
+    break;}
+case 166:
+#line 796 "yaccParser/hsparser.y"
+{ yyval.ulist = lapp(yyvsp[-2].ulist, yyvsp[0].uttype); ;
+    break;}
+case 167:
+#line 800 "yaccParser/hsparser.y"
+{ yyval.uttype = mkty_maybe_nothing(); ;
+    break;}
+case 168:
+#line 801 "yaccParser/hsparser.y"
+{ yyval.uttype = mkty_maybe_just(yyvsp[0].uttype); ;
+    break;}
+case 169:
+#line 807 "yaccParser/hsparser.y"
+{
+                 if ( implicitPrelude && !etags ) {
+                    /* we try to avoid reading interfaces when etagging */
+                    find_module_on_imports_dirlist(
+                       (haskell1_3Flag) ? "PrelCore13" : "PreludeCore",
+                       TRUE,interface_filename);
+                 } else {
+                    find_module_on_imports_dirlist("PreludeNull_",TRUE,interface_filename);
+                 }
+                 thisIfacePragmaVersion = 0;
+                 setyyin(interface_filename);
+                 enteriscope();
+               ;
+    break;}
+case 170:
+#line 821 "yaccParser/hsparser.y"
+{
+                 binding prelude_core = mkimport(installid(iface_name),Lnil,Lnil,yyvsp[0].ubinding,xstrdup(interface_filename),hsplineno);
+                 prelude_core_import = implicitPrelude? lsing(prelude_core): Lnil;
+                 
+               ;
+    break;}
+case 171:
+#line 829 "yaccParser/hsparser.y"
+{
+                 if ( implicitPrelude && !etags ) {
+                    find_module_on_imports_dirlist(
+                       ( haskell1_3Flag ) ? "Prel13" : "Prelude",
+                       TRUE,interface_filename);
+                 } else {
+                    find_module_on_imports_dirlist("PreludeNull_",TRUE,interface_filename);
+                 }
+                 thisIfacePragmaVersion = 0;
+                 setyyin(interface_filename);
+                 enteriscope();
+               ;
+    break;}
+case 172:
+#line 842 "yaccParser/hsparser.y"
+{
+                 binding prelude = mkimport(installid(iface_name),Lnil,Lnil,yyvsp[0].ubinding,xstrdup(interface_filename),hsplineno);
+                 prelude_imports = (! implicitPrelude) ? Lnil
+                                       : lconc(prelude_core_import,lsing(prelude));
+               ;
+    break;}
+case 173:
+#line 849 "yaccParser/hsparser.y"
+{ yyval.ulist = Lnil; ;
+    break;}
+case 174:
+#line 850 "yaccParser/hsparser.y"
+{ yyval.ulist = yyvsp[-1].ulist; ;
+    break;}
+case 175:
+#line 853 "yaccParser/hsparser.y"
+{ yyval.ulist = yyvsp[0].ulist; ;
+    break;}
+case 176:
+#line 854 "yaccParser/hsparser.y"
+{ yyval.ulist = lconc(yyvsp[-2].ulist,yyvsp[0].ulist); ;
+    break;}
+case 177:
+#line 858 "yaccParser/hsparser.y"
+{ /* filename returned in "interface_filename" */
+                 char *module_name = id_to_string(yyvsp[0].uid);
+                 if ( ! etags ) {
+                     find_module_on_imports_dirlist(
+                       (haskell1_3Flag && strcmp(module_name, "Prelude") == 0)
+                           ? "Prel13" : module_name,
+                       FALSE, interface_filename);
+                 } else {
+                    find_module_on_imports_dirlist("PreludeNull_",TRUE,interface_filename);
+                 }
+                 thisIfacePragmaVersion = 0;
+                 setyyin(interface_filename);
+                 enteriscope();
+                 if (strcmp(module_name,"PreludeCore")==0) {
+                   hsperror("Cannot explicitly import `PreludeCore'");
+
+                 } else if (strcmp(module_name,"Prelude")==0) {
+                   prelude_imports = prelude_core_import; /* unavoidable */
+                 }
+               ;
+    break;}
+case 178:
+#line 879 "yaccParser/hsparser.y"
+{
+                 if (hidden)
+                   yyvsp[0].ubinding->tag = hiding;
+                 yyval.ulist = lsing(yyvsp[0].ubinding);
+               ;
+    break;}
+case 179:
+#line 887 "yaccParser/hsparser.y"
+{ yyval.ubinding = mkimport(installid(iface_name),yyvsp[0].ulist,Lnil,yyvsp[-1].ubinding,xstrdup(interface_filename),hsplineno); ;
+    break;}
+case 180:
+#line 890 "yaccParser/hsparser.y"
+{ yyval.ubinding = mkimport(installid(iface_name),yyvsp[-2].ulist,yyvsp[0].ulist,yyvsp[-3].ubinding,xstrdup(interface_filename),hsplineno); ;
+    break;}
+case 181:
+#line 895 "yaccParser/hsparser.y"
+{
+                 exposeis(); /* partain: expose infix ops at level i+1 to level i */
+                 yyval.ubinding = yyvsp[-1].ubinding;
+               ;
+    break;}
+case 182:
+#line 901 "yaccParser/hsparser.y"
+{ yyval.ulist = yyvsp[-1].ulist; ;
+    break;}
+case 183:
+#line 905 "yaccParser/hsparser.y"
+{ yyval.ulist = lsing(yyvsp[0].ulist); ;
+    break;}
+case 184:
+#line 906 "yaccParser/hsparser.y"
+{ yyval.ulist = lapp(yyvsp[-2].ulist, yyvsp[0].ulist); ;
+    break;}
+case 185:
+#line 909 "yaccParser/hsparser.y"
+{ yyval.ulist = ldub(yyvsp[-2].uid,yyvsp[0].uid); ;
+    break;}
+case 186:
+#line 910 "yaccParser/hsparser.y"
+{ yyval.ulist = ldub(yyvsp[-2].uid,yyvsp[0].uid); ;
+    break;}
+case 187:
+#line 913 "yaccParser/hsparser.y"
+{ yyval.ubinding = mknullbind(); ;
+    break;}
+case 188:
+#line 914 "yaccParser/hsparser.y"
+{ yyval.ubinding = yyvsp[-1].ubinding; ;
+    break;}
+case 189:
+#line 917 "yaccParser/hsparser.y"
+{ yyval.ubinding = yyvsp[0].ubinding; ;
+    break;}
+case 190:
+#line 918 "yaccParser/hsparser.y"
+{ yyval.ubinding = mkabind(yyvsp[-2].ubinding,yyvsp[0].ubinding); ;
+    break;}
+case 191:
+#line 922 "yaccParser/hsparser.y"
+{ yyval.ubinding = mkmbind(yyvsp[-3].uid,yyvsp[-1].ulist,Lnil,startlineno); ;
+    break;}
+case 192:
+#line 924 "yaccParser/hsparser.y"
+{ yyval.ubinding = mkmbind(yyvsp[-5].uid,yyvsp[-3].ulist,yyvsp[0].ulist,startlineno); ;
+    break;}
+case 193:
+#line 930 "yaccParser/hsparser.y"
+{ fixlist = Lnil;
+                 strcpy(iface_name, id_to_string(yyvsp[0].uid));
+               ;
+    break;}
+case 194:
+#line 934 "yaccParser/hsparser.y"
+{
+               /* WDP: not only do we not check the module name
+                  but we take the one in the interface to be what we really want
+                  -- we need this for Prelude jiggery-pokery.  (Blech.  KH)
+                  ToDo: possibly revert....
+                  checkmodname(modname,id_to_string($2));
+               */
+                 yyval.ubinding = yyvsp[0].ubinding;
+               ;
+    break;}
+case 195:
+#line 947 "yaccParser/hsparser.y"
+{
+                 yyval.ubinding = mkabind(yyvsp[-3].ubinding,yyvsp[-1].ubinding);
+               ;
+    break;}
+case 196:
+#line 951 "yaccParser/hsparser.y"
+{
+                 yyval.ubinding = yyvsp[-1].ubinding;
+               ;
+    break;}
+case 197:
+#line 955 "yaccParser/hsparser.y"
+{
+                 yyval.ubinding = mkabind(yyvsp[-3].ubinding,yyvsp[-1].ubinding);
+               ;
+    break;}
+case 198:
+#line 959 "yaccParser/hsparser.y"
+{
+                 yyval.ubinding = yyvsp[-1].ubinding;
+               ;
+    break;}
+case 203:
+#line 974 "yaccParser/hsparser.y"
+{ Precedence = checkfixity(yyvsp[0].ustring); Fixity = INFIXL; ;
+    break;}
+case 205:
+#line 977 "yaccParser/hsparser.y"
+{ Precedence = checkfixity(yyvsp[0].ustring); Fixity = INFIXR; ;
+    break;}
+case 207:
+#line 980 "yaccParser/hsparser.y"
+{ Precedence = checkfixity(yyvsp[0].ustring); Fixity = INFIX; ;
+    break;}
+case 209:
+#line 983 "yaccParser/hsparser.y"
+{ Fixity = INFIXL; Precedence = 9; ;
+    break;}
+case 211:
+#line 986 "yaccParser/hsparser.y"
+{ Fixity = INFIXR; Precedence = 9; ;
+    break;}
+case 213:
+#line 989 "yaccParser/hsparser.y"
+{ Fixity = INFIX; Precedence = 9; ;
+    break;}
+case 215:
+#line 993 "yaccParser/hsparser.y"
+{ makeinfix(id_to_string(yyvsp[0].uid),Fixity,Precedence); ;
+    break;}
+case 216:
+#line 994 "yaccParser/hsparser.y"
+{ makeinfix(id_to_string(yyvsp[0].uid),Fixity,Precedence); ;
+    break;}
+case 218:
+#line 999 "yaccParser/hsparser.y"
+{
+                 if(yyvsp[-2].ubinding != NULL)
+                   if(yyvsp[0].ubinding != NULL)
+                     if(SAMEFN)
+                       {
+                         extendfn(yyvsp[-2].ubinding,yyvsp[0].ubinding);
+                         yyval.ubinding = yyvsp[-2].ubinding;
+                       }
+                     else
+                       yyval.ubinding = mkabind(yyvsp[-2].ubinding,yyvsp[0].ubinding);
+                   else
+                     yyval.ubinding = yyvsp[-2].ubinding;
+                 else
+                   yyval.ubinding = yyvsp[0].ubinding;
+                 SAMEFN = 0;
+               ;
+    break;}
+case 219:
+#line 1017 "yaccParser/hsparser.y"
+{ yyval.ubinding = yyvsp[0].ubinding; ;
+    break;}
+case 220:
+#line 1018 "yaccParser/hsparser.y"
+{ yyval.ubinding = yyvsp[0].ubinding; ;
+    break;}
+case 221:
+#line 1019 "yaccParser/hsparser.y"
+{ yyval.ubinding = yyvsp[0].ubinding; ;
+    break;}
+case 222:
+#line 1020 "yaccParser/hsparser.y"
+{ yyval.ubinding = yyvsp[0].ubinding; ;
+    break;}
+case 223:
+#line 1021 "yaccParser/hsparser.y"
+{ yyval.ubinding = yyvsp[0].ubinding; ;
+    break;}
+case 224:
+#line 1022 "yaccParser/hsparser.y"
+{ yyval.ubinding = yyvsp[0].ubinding; ;
+    break;}
+case 225:
+#line 1025 "yaccParser/hsparser.y"
+{ yyval.ubinding = mknbind(yyvsp[-2].uttype,yyvsp[0].uttype,startlineno,mkno_pragma()); ;
+    break;}
+case 226:
+#line 1030 "yaccParser/hsparser.y"
+{ yyval.ubinding = mktbind(yyvsp[-4].ulist,yyvsp[-2].uttype,yyvsp[0].ulist,all,startlineno,mkno_pragma()); ;
+    break;}
+case 227:
+#line 1032 "yaccParser/hsparser.y"
+{ yyval.ubinding = mktbind(Lnil,yyvsp[-2].uttype,yyvsp[0].ulist,all,startlineno,mkno_pragma()); ;
+    break;}
+case 228:
+#line 1034 "yaccParser/hsparser.y"
+{ yyval.ubinding = mktbind(yyvsp[-6].ulist,yyvsp[-4].uttype,yyvsp[-2].ulist,yyvsp[0].ulist,startlineno,mkno_pragma()); ;
+    break;}
+case 229:
+#line 1036 "yaccParser/hsparser.y"
+{ yyval.ubinding = mktbind(Lnil,yyvsp[-4].uttype,yyvsp[-2].ulist,yyvsp[0].ulist,startlineno,mkno_pragma()); ;
+    break;}
+case 230:
+#line 1039 "yaccParser/hsparser.y"
+{ yyval.ubinding = mkcbind(yyvsp[-3].ulist,yyvsp[-1].uttype,yyvsp[0].ubinding,startlineno,mkno_pragma()); ;
+    break;}
+case 231:
+#line 1040 "yaccParser/hsparser.y"
+{ yyval.ubinding = mkcbind(Lnil,yyvsp[-1].uttype,yyvsp[0].ubinding,startlineno,mkno_pragma()); ;
+    break;}
+case 232:
+#line 1043 "yaccParser/hsparser.y"
+{ yyval.ubinding = mknullbind(); ;
+    break;}
+case 233:
+#line 1044 "yaccParser/hsparser.y"
+{ checkorder(yyvsp[-1].ubinding); yyval.ubinding = yyvsp[-1].ubinding; ;
+    break;}
+case 234:
+#line 1045 "yaccParser/hsparser.y"
+{ checkorder(yyvsp[-1].ubinding); yyval.ubinding =yyvsp[-1].ubinding; ;
+    break;}
+case 235:
+#line 1048 "yaccParser/hsparser.y"
+{ yyval.ubinding = mkibind(yyvsp[-4].ulist,yyvsp[-2].uid,yyvsp[-1].uttype,yyvsp[0].ubinding,startlineno,mkno_pragma()); ;
+    break;}
+case 236:
+#line 1049 "yaccParser/hsparser.y"
+{ yyval.ubinding = mkibind(Lnil,yyvsp[-2].uid,yyvsp[-1].uttype,yyvsp[0].ubinding,startlineno,mkno_pragma()); ;
+    break;}
+case 237:
+#line 1052 "yaccParser/hsparser.y"
+{ yyval.ubinding = mknullbind(); ;
+    break;}
+case 238:
+#line 1053 "yaccParser/hsparser.y"
+{ yyval.ubinding = yyvsp[-1].ubinding; ;
+    break;}
+case 239:
+#line 1054 "yaccParser/hsparser.y"
+{ yyval.ubinding = yyvsp[-1].ubinding; ;
+    break;}
+case 240:
+#line 1057 "yaccParser/hsparser.y"
+{ yyval.uttype = mktname(yyvsp[0].uid,Lnil); ;
+    break;}
+case 241:
+#line 1058 "yaccParser/hsparser.y"
+{ yyval.uttype = yyvsp[-1].uttype; ;
+    break;}
+case 242:
+#line 1060 "yaccParser/hsparser.y"
+{ yyval.uttype = mkttuple(yyvsp[-1].ulist); ;
+    break;}
+case 243:
+#line 1061 "yaccParser/hsparser.y"
+{ yyval.uttype = mkttuple(Lnil); ;
+    break;}
+case 244:
+#line 1062 "yaccParser/hsparser.y"
+{ yyval.uttype = mktllist(yyvsp[-1].uttype); ;
+    break;}
+case 245:
+#line 1063 "yaccParser/hsparser.y"
+{ yyval.uttype = mktfun(yyvsp[-3].uttype,yyvsp[-1].uttype); ;
+    break;}
+case 246:
+#line 1066 "yaccParser/hsparser.y"
+{ yyval.ubinding = mkdbind(yyvsp[0].ulist,startlineno); ;
+    break;}
+case 247:
+#line 1069 "yaccParser/hsparser.y"
+{ yyval.ulist = mklcons(yyvsp[-3].uttype,yyvsp[-1].ulist); ;
+    break;}
+case 248:
+#line 1070 "yaccParser/hsparser.y"
+{ yyval.ulist = lsing(yyvsp[0].uttype); ;
+    break;}
+case 250:
+#line 1079 "yaccParser/hsparser.y"
+{
+                 if(SAMEFN)
+                   {
+                     extendfn(yyvsp[-2].ubinding,yyvsp[0].ubinding);
+                     yyval.ubinding = yyvsp[-2].ubinding;
+                   }
+                 else
+                   yyval.ubinding = mkabind(yyvsp[-2].ubinding,yyvsp[0].ubinding);
+               ;
+    break;}
+case 251:
+#line 1108 "yaccParser/hsparser.y"
+{ /* type2context.c for code */
+                 yyval.ubinding = mksbind(yyvsp[-5].ulist,mkcontext(type2context(yyvsp[-3].uttype),yyvsp[-1].uttype),startlineno,yyvsp[0].uhpragma);
+                 PREVPATT = NULL; FN = NULL; SAMEFN = 0;
+               ;
+    break;}
+case 252:
+#line 1113 "yaccParser/hsparser.y"
+{
+                 yyval.ubinding = mksbind(yyvsp[-3].ulist,yyvsp[-1].uttype,startlineno,yyvsp[0].uhpragma);
+                 PREVPATT = NULL; FN = NULL; SAMEFN = 0;
+               ;
+    break;}
+case 253:
+#line 1126 "yaccParser/hsparser.y"
+{
+                 yyval.ubinding = mkvspec_uprag(yyvsp[-3].uid, yyvsp[-1].ulist, startlineno);
+                 PREVPATT = NULL; FN = NULL; SAMEFN = 0;
+               ;
+    break;}
+case 254:
+#line 1132 "yaccParser/hsparser.y"
+{
+                 yyval.ubinding = mkispec_uprag(yyvsp[-2].uid, yyvsp[-1].uttype, startlineno);
+                 PREVPATT = NULL; FN = NULL; SAMEFN = 0;
+               ;
+    break;}
+case 255:
+#line 1138 "yaccParser/hsparser.y"
+{
+                 yyval.ubinding = mkdspec_uprag(yyvsp[-2].uid, yyvsp[-1].ulist, startlineno);
+                 PREVPATT = NULL; FN = NULL; SAMEFN = 0;
+               ;
+    break;}
+case 256:
+#line 1144 "yaccParser/hsparser.y"
+{
+                 yyval.ubinding = mkinline_uprag(yyvsp[-2].uid, yyvsp[-1].ulist, startlineno);
+                 PREVPATT = NULL; FN = NULL; SAMEFN = 0;
+               ;
+    break;}
+case 257:
+#line 1150 "yaccParser/hsparser.y"
+{
+                 yyval.ubinding = mkmagicuf_uprag(yyvsp[-2].uid, yyvsp[-1].uid, startlineno);
+                 PREVPATT = NULL; FN = NULL; SAMEFN = 0;
+               ;
+    break;}
+case 258:
+#line 1156 "yaccParser/hsparser.y"
+{
+                 yyval.ubinding = mkdeforest_uprag(yyvsp[-1].uid, startlineno);
+                 PREVPATT = NULL; FN = NULL; SAMEFN = 0;
+               ;
+    break;}
+case 259:
+#line 1162 "yaccParser/hsparser.y"
+{
+                 yyval.ubinding = mkabstract_uprag(yyvsp[-1].uid, startlineno);
+                 PREVPATT = NULL; FN = NULL; SAMEFN = 0;
+               ;
+    break;}
+case 261:
+#line 1170 "yaccParser/hsparser.y"
+{ yyval.ubinding = mknullbind(); PREVPATT = NULL; FN = NULL; SAMEFN = 0; ;
+    break;}
+case 262:
+#line 1174 "yaccParser/hsparser.y"
+{ yyval.ulist = Lnil; ;
+    break;}
+case 263:
+#line 1175 "yaccParser/hsparser.y"
+{ yyval.ulist = lsing(yyvsp[0].uid); ;
+    break;}
+case 264:
+#line 1178 "yaccParser/hsparser.y"
+{ yyval.ulist = lsing(yyvsp[0].ubinding); ;
+    break;}
+case 265:
+#line 1179 "yaccParser/hsparser.y"
+{ yyval.ulist = lapp(yyvsp[-2].ulist,yyvsp[0].ubinding); ;
+    break;}
+case 266:
+#line 1183 "yaccParser/hsparser.y"
+{ yyval.ubinding = mkvspec_ty_and_id(yyvsp[0].uttype,Lnil); ;
+    break;}
+case 267:
+#line 1184 "yaccParser/hsparser.y"
+{ yyval.ubinding = mkvspec_ty_and_id(yyvsp[-2].uttype,lsing(yyvsp[0].uid)); ;
+    break;}
+case 268:
+#line 1186 "yaccParser/hsparser.y"
+{ yyval.ubinding = yyvsp[0].ubinding; ;
+    break;}
+case 269:
+#line 1187 "yaccParser/hsparser.y"
+{ yyval.ubinding = mkabind(yyvsp[-2].ubinding,yyvsp[0].ubinding); ;
+    break;}
+case 270:
+#line 1190 "yaccParser/hsparser.y"
+{ yyval.ubinding = yyvsp[0].ubinding; ;
+    break;}
+case 271:
+#line 1191 "yaccParser/hsparser.y"
+{ yyval.ubinding = yyvsp[0].ubinding; ;
+    break;}
+case 272:
+#line 1192 "yaccParser/hsparser.y"
+{ yyval.ubinding = yyvsp[0].ubinding; ;
+    break;}
+case 273:
+#line 1193 "yaccParser/hsparser.y"
+{ yyval.ubinding = yyvsp[0].ubinding; ;
+    break;}
+case 274:
+#line 1194 "yaccParser/hsparser.y"
+{ yyval.ubinding = yyvsp[0].ubinding; ;
+    break;}
+case 275:
+#line 1195 "yaccParser/hsparser.y"
+{ yyval.ubinding = mknullbind(); ;
+    break;}
+case 276:
+#line 1200 "yaccParser/hsparser.y"
+{ yyval.ubinding = mksbind(yyvsp[-5].ulist,mkcontext(type2context(yyvsp[-3].uttype),yyvsp[-1].uttype),startlineno,yyvsp[0].uhpragma); ;
+    break;}
+case 277:
+#line 1202 "yaccParser/hsparser.y"
+{ yyval.ubinding = mksbind(yyvsp[-3].ulist,yyvsp[-1].uttype,startlineno,yyvsp[0].uhpragma); ;
+    break;}
+case 278:
+#line 1206 "yaccParser/hsparser.y"
+{ yyval.ubinding = mknbind(yyvsp[-3].uttype,yyvsp[-1].uttype,startlineno,yyvsp[0].uhpragma); ;
+    break;}
+case 279:
+#line 1210 "yaccParser/hsparser.y"
+{ yyval.ubinding = mktbind(yyvsp[-3].ulist,yyvsp[-1].uttype,Lnil,Lnil,startlineno,yyvsp[0].uhpragma); ;
+    break;}
+case 280:
+#line 1212 "yaccParser/hsparser.y"
+{ yyval.ubinding = mktbind(Lnil,yyvsp[-1].uttype,Lnil,Lnil,startlineno,yyvsp[0].uhpragma); ;
+    break;}
+case 281:
+#line 1214 "yaccParser/hsparser.y"
+{ yyval.ubinding = mktbind(yyvsp[-5].ulist,yyvsp[-3].uttype,yyvsp[-1].ulist,Lnil,startlineno,yyvsp[0].uhpragma); ;
+    break;}
+case 282:
+#line 1216 "yaccParser/hsparser.y"
+{ yyval.ubinding = mktbind(Lnil,yyvsp[-3].uttype,yyvsp[-1].ulist,Lnil,startlineno,yyvsp[0].uhpragma); ;
+    break;}
+case 283:
+#line 1218 "yaccParser/hsparser.y"
+{ yyval.ubinding = mktbind(yyvsp[-6].ulist,yyvsp[-4].uttype,yyvsp[-2].ulist,yyvsp[0].ulist,startlineno,mkno_pragma()); ;
+    break;}
+case 284:
+#line 1220 "yaccParser/hsparser.y"
+{ yyval.ubinding = mktbind(Lnil,yyvsp[-4].uttype,yyvsp[-2].ulist,yyvsp[0].ulist,startlineno,mkno_pragma()); ;
+    break;}
+case 285:
+#line 1224 "yaccParser/hsparser.y"
+{ yyval.ubinding = mkcbind(yyvsp[-4].ulist,yyvsp[-2].uttype,yyvsp[0].ubinding,startlineno,yyvsp[-1].uhpragma); ;
+    break;}
+case 286:
+#line 1226 "yaccParser/hsparser.y"
+{ yyval.ubinding = mkcbind(Lnil,yyvsp[-2].uttype,yyvsp[0].ubinding,startlineno,yyvsp[-1].uhpragma); ;
+    break;}
+case 287:
+#line 1230 "yaccParser/hsparser.y"
+{ yyval.ubinding = mkibind(yyvsp[-4].ulist,yyvsp[-2].uid,yyvsp[-1].uttype,mknullbind(),startlineno,yyvsp[0].uhpragma); ;
+    break;}
+case 288:
+#line 1232 "yaccParser/hsparser.y"
+{ yyval.ubinding = mkibind(Lnil,yyvsp[-2].uid,yyvsp[-1].uttype,mknullbind(),startlineno,yyvsp[0].uhpragma); ;
+    break;}
+case 289:
+#line 1238 "yaccParser/hsparser.y"
+{ yyval.uttype = mktname(yyvsp[-1].uid,lsing(yyvsp[0].uttype)); ;
+    break;}
+case 290:
+#line 1242 "yaccParser/hsparser.y"
+{ yyval.ulist = lsing(yyvsp[0].uttype); ;
+    break;}
+case 291:
+#line 1243 "yaccParser/hsparser.y"
+{ yyval.ulist = lapp(yyvsp[-2].ulist,yyvsp[0].uttype); ;
+    break;}
+case 292:
+#line 1246 "yaccParser/hsparser.y"
+{ yyval.uttype = yyvsp[0].uttype; ;
+    break;}
+case 293:
+#line 1247 "yaccParser/hsparser.y"
+{ yyval.uttype = mktfun(yyvsp[-2].uttype,yyvsp[0].uttype); ;
+    break;}
+case 294:
+#line 1250 "yaccParser/hsparser.y"
+{ yyval.uttype = mkuniforall(yyvsp[-2].ulist, yyvsp[0].uttype); ;
+    break;}
+case 295:
+#line 1252 "yaccParser/hsparser.y"
+{ yyval.uttype = yyvsp[0].uttype; ;
+    break;}
+case 296:
+#line 1253 "yaccParser/hsparser.y"
+{ yyval.uttype = mktname(yyvsp[-1].uid,yyvsp[0].ulist); ;
+    break;}
+case 297:
+#line 1256 "yaccParser/hsparser.y"
+{ yyval.ulist = lapp(yyvsp[-1].ulist,yyvsp[0].uttype); ;
+    break;}
+case 298:
+#line 1257 "yaccParser/hsparser.y"
+{ yyval.ulist = lsing(yyvsp[0].uttype); ;
+    break;}
+case 299:
+#line 1261 "yaccParser/hsparser.y"
+{ yyval.uttype = yyvsp[0].uttype; ;
+    break;}
+case 300:
+#line 1262 "yaccParser/hsparser.y"
+{ yyval.uttype = mktfun(yyvsp[-2].uttype,yyvsp[0].uttype); ;
+    break;}
+case 301:
+#line 1263 "yaccParser/hsparser.y"
+{ yyval.uttype = mktname(yyvsp[-1].uid,yyvsp[0].ulist); ;
+    break;}
+case 303:
+#line 1267 "yaccParser/hsparser.y"
+{ yyval.uttype = mkttuple(mklcons(yyvsp[-3].uttype,yyvsp[-1].ulist)); ;
+    break;}
+case 304:
+#line 1270 "yaccParser/hsparser.y"
+{ yyval.uttype = yyvsp[0].uttype; ;
+    break;}
+case 305:
+#line 1271 "yaccParser/hsparser.y"
+{ yyval.uttype = mktname(yyvsp[0].uid,Lnil); ;
+    break;}
+case 306:
+#line 1272 "yaccParser/hsparser.y"
+{ yyval.uttype = mkttuple(Lnil); ;
+    break;}
+case 307:
+#line 1273 "yaccParser/hsparser.y"
+{ yyval.uttype = yyvsp[-1].uttype; ;
+    break;}
+case 308:
+#line 1274 "yaccParser/hsparser.y"
+{ yyval.uttype = mktllist(yyvsp[-1].uttype); ;
+    break;}
+case 309:
+#line 1277 "yaccParser/hsparser.y"
+{ yyval.uttype = mkunidict(yyvsp[-3].uid, yyvsp[-2].uttype); ;
+    break;}
+case 310:
+#line 1278 "yaccParser/hsparser.y"
+{ yyval.uttype = mkunityvartemplate(yyvsp[0].uid); ;
+    break;}
+case 311:
+#line 1282 "yaccParser/hsparser.y"
+{ yyval.uttype = mktname(yyvsp[0].uid,Lnil); ;
+    break;}
+case 312:
+#line 1283 "yaccParser/hsparser.y"
+{ yyval.uttype = mktname(yyvsp[-1].uid,yyvsp[0].ulist); ;
+    break;}
+case 313:
+#line 1287 "yaccParser/hsparser.y"
+{ yyval.uttype = mktname(yyvsp[-1].uid,yyvsp[0].ulist); ;
+    break;}
+case 314:
+#line 1293 "yaccParser/hsparser.y"
+{ yyval.ulist = lsing(yyvsp[0].uatype); ;
+    break;}
+case 315:
+#line 1294 "yaccParser/hsparser.y"
+{ yyval.ulist = lapp(yyvsp[-2].ulist,yyvsp[0].uatype); ;
+    break;}
+case 316:
+#line 1298 "yaccParser/hsparser.y"
+{ yyval.uatype = mkatc(yyvsp[-1].uid,yyvsp[0].ulist,hsplineno); ;
+    break;}
+case 317:
+#line 1299 "yaccParser/hsparser.y"
+{ yyval.uatype = mkatc(yyvsp[-2].uid,yyvsp[0].ulist,hsplineno); ;
+    break;}
+case 318:
+#line 1300 "yaccParser/hsparser.y"
+{ yyval.uatype = mkatc(yyvsp[0].uid,Lnil,hsplineno); ;
+    break;}
+case 319:
+#line 1301 "yaccParser/hsparser.y"
+{ yyval.uatype = mkatc(yyvsp[-1].uid,Lnil,hsplineno); ;
+    break;}
+case 320:
+#line 1302 "yaccParser/hsparser.y"
+{ yyval.uatype = mkatc(yyvsp[-1].uid, ldub(yyvsp[-2].uttype,yyvsp[0].uttype),hsplineno); ;
+    break;}
+case 321:
+#line 1305 "yaccParser/hsparser.y"
+{ yyval.ulist = yyvsp[-1].ulist; ;
+    break;}
+case 322:
+#line 1306 "yaccParser/hsparser.y"
+{ yyval.ulist = Lnil; ;
+    break;}
+case 323:
+#line 1307 "yaccParser/hsparser.y"
+{ yyval.ulist = lsing(yyvsp[0].uid); ;
+    break;}
+case 324:
+#line 1310 "yaccParser/hsparser.y"
+{ yyval.ulist = lsing(yyvsp[0].uid); ;
+    break;}
+case 325:
+#line 1311 "yaccParser/hsparser.y"
+{ yyval.ulist = lapp(yyvsp[-2].ulist,yyvsp[0].uid); ;
+    break;}
+case 326:
+#line 1314 "yaccParser/hsparser.y"
+{ yyval.ulist = yyvsp[-1].ulist; ;
+    break;}
+case 327:
+#line 1315 "yaccParser/hsparser.y"
+{ yyval.ulist = lsing(yyvsp[0].uttype); ;
+    break;}
+case 328:
+#line 1318 "yaccParser/hsparser.y"
+{ yyval.ulist = lsing(yyvsp[0].uttype); ;
+    break;}
+case 329:
+#line 1319 "yaccParser/hsparser.y"
+{ yyval.ulist = lapp(yyvsp[-2].ulist,yyvsp[0].uttype); ;
+    break;}
+case 330:
+#line 1322 "yaccParser/hsparser.y"
+{ yyval.ubinding = mknullbind(); ;
+    break;}
+case 331:
+#line 1323 "yaccParser/hsparser.y"
+{ yyval.ubinding = yyvsp[0].ubinding; ;
+    break;}
+case 332:
+#line 1325 "yaccParser/hsparser.y"
+{
+                 if(SAMEFN)
+                   {
+                     extendfn(yyvsp[-2].ubinding,yyvsp[0].ubinding);
+                     yyval.ubinding = yyvsp[-2].ubinding;
+                   }
+                 else
+                   yyval.ubinding = mkabind(yyvsp[-2].ubinding,yyvsp[0].ubinding);
+               ;
+    break;}
+case 333:
+#line 1339 "yaccParser/hsparser.y"
+{
+                 yyval.ubinding = mkinline_uprag(yyvsp[-2].uid, yyvsp[-1].ulist, startlineno);
+                 PREVPATT = NULL; FN = NULL; SAMEFN = 0;
+               ;
+    break;}
+case 334:
+#line 1345 "yaccParser/hsparser.y"
+{
+                 yyval.ubinding = mkmagicuf_uprag(yyvsp[-2].uid, yyvsp[-1].uid, startlineno);
+                 PREVPATT = NULL; FN = NULL; SAMEFN = 0;
+               ;
+    break;}
+case 336:
+#line 1354 "yaccParser/hsparser.y"
+{ yyval.ulist = mklcons(yyvsp[-2].uid,yyvsp[0].ulist); ;
+    break;}
+case 337:
+#line 1355 "yaccParser/hsparser.y"
+{ yyval.ulist = lsing(yyvsp[0].uid); ;
+    break;}
+case 338:
+#line 1359 "yaccParser/hsparser.y"
+{ yyval.ulist = lsing(yyvsp[0].uid); ;
+    break;}
+case 339:
+#line 1360 "yaccParser/hsparser.y"
+{ yyval.ulist = lapp(yyvsp[-2].ulist,yyvsp[0].uid); ;
+    break;}
+case 340:
+#line 1363 "yaccParser/hsparser.y"
+{ yyval.ulist = lsing(yyvsp[0].uid); ;
+    break;}
+case 341:
+#line 1364 "yaccParser/hsparser.y"
+{ yyval.ulist = lapp(yyvsp[-2].ulist,yyvsp[0].uid); ;
+    break;}
+case 342:
+#line 1369 "yaccParser/hsparser.y"
+{
+                 tree fn = function(yyvsp[0].utree);
+
+                 PREVPATT = yyvsp[0].utree;
+
+                 if(ttree(fn) == ident)
+                   {
+                     checksamefn(gident((struct Sident *) fn));
+                     FN = fn;
+                   }
+
+                 else if (ttree(fn) == tinfixop && ttree(ginfun((struct Sap *) fn)) == ident)
+                   {
+                     checksamefn(gident((struct Sident *) (ginfun((struct Sap *) fn))));
+                     FN = ginfun((struct Sap *) fn);
+                   }
+
+                 else if(etags)
+#if 1/*etags*/
+                   printf("%u\n",startlineno);
+#else
+                   fprintf(stderr,"%u\tvaldef\n",startlineno);
+#endif
+               ;
+    break;}
+case 343:
+#line 1394 "yaccParser/hsparser.y"
+{
+                 if ( lhs_is_patt(yyvsp[-2].utree) )
+                   {
+                     yyval.ubinding = mkpbind(yyvsp[0].ulist, startlineno);
+                     FN = NULL;
+                     SAMEFN = 0;
+                   }
+                 else /* lhs is function */
+                   yyval.ubinding = mkfbind(yyvsp[0].ulist,startlineno);
+
+                 PREVPATT = NULL;
+               ;
+    break;}
+case 344:
+#line 1408 "yaccParser/hsparser.y"
+{ yyval.ulist = lsing(createpat(yyvsp[-1].ulist, yyvsp[0].ubinding)); ;
+    break;}
+case 346:
+#line 1412 "yaccParser/hsparser.y"
+{ yyval.ulist = lsing(mktruecase(yyvsp[0].utree)); ;
+    break;}
+case 347:
+#line 1415 "yaccParser/hsparser.y"
+{ yyval.ulist = lsing(ldub(yyvsp[-2].utree,yyvsp[0].utree)); ;
+    break;}
+case 348:
+#line 1416 "yaccParser/hsparser.y"
+{ yyval.ulist = mklcons(ldub(yyvsp[-3].utree,yyvsp[-1].utree),yyvsp[0].ulist); ;
+    break;}
+case 349:
+#line 1420 "yaccParser/hsparser.y"
+{ yyval.ubinding = yyvsp[-1].ubinding; ;
+    break;}
+case 350:
+#line 1421 "yaccParser/hsparser.y"
+{ yyval.ubinding = yyvsp[-1].ubinding; ;
+    break;}
+case 351:
+#line 1422 "yaccParser/hsparser.y"
+{ yyval.ubinding = mknullbind(); ;
+    break;}
+case 352:
+#line 1425 "yaccParser/hsparser.y"
+{ yyval.utree = yyvsp[0].utree; ;
+    break;}
+case 353:
+#line 1429 "yaccParser/hsparser.y"
+{ yyval.ulist = mklcons(yyvsp[-1].utree,yyvsp[0].ulist); ;
+    break;}
+case 354:
+#line 1430 "yaccParser/hsparser.y"
+{ yyval.ulist = lsing(yyvsp[0].utree); ;
+    break;}
+case 355:
+#line 1439 "yaccParser/hsparser.y"
+{ yyval.utree = mkrestr(yyvsp[-4].utree,mkcontext(type2context(yyvsp[-2].uttype),yyvsp[0].uttype)); ;
+    break;}
+case 356:
+#line 1440 "yaccParser/hsparser.y"
+{ yyval.utree = mkrestr(yyvsp[-2].utree,yyvsp[0].uttype); ;
+    break;}
+case 359:
+#line 1452 "yaccParser/hsparser.y"
+{ yyval.utree = mkinfixop(yyvsp[-1].uid,yyvsp[-2].utree,yyvsp[0].utree); precparse(yyval.utree); ;
+    break;}
+case 360:
+#line 1461 "yaccParser/hsparser.y"
+{ yyval.utree = mknegate(yyvsp[0].utree); ;
+    break;}
+case 362:
+#line 1470 "yaccParser/hsparser.y"
+{ /* enteriscope(); /? I don't understand this -- KH */
+                 hsincindent();    /* added by partain; push new context for */
+                                   /* FN = NULL; not actually concerned about */
+                 FN = NULL;        /* indenting */
+                 yyval.uint = hsplineno; /* remember current line number */
+               ;
+    break;}
+case 363:
+#line 1477 "yaccParser/hsparser.y"
+{ hsendindent();    /* added by partain */
+                 /* exitiscope();          /? Also not understood */
+               ;
+    break;}
+case 364:
+#line 1481 "yaccParser/hsparser.y"
+{
+                 yyval.utree = mklambda(yyvsp[-3].ulist, yyvsp[0].utree, yyvsp[-4].uint);
+               ;
+    break;}
+case 365:
+#line 1486 "yaccParser/hsparser.y"
+{ yyval.utree = mklet(yyvsp[-3].ubinding,yyvsp[0].utree); ;
+    break;}
+case 366:
+#line 1487 "yaccParser/hsparser.y"
+{ yyval.utree = mklet(yyvsp[-3].ubinding,yyvsp[0].utree); ;
+    break;}
+case 367:
+#line 1490 "yaccParser/hsparser.y"
+{ yyval.utree = mkife(yyvsp[-4].utree,yyvsp[-2].utree,yyvsp[0].utree); ;
+    break;}
+case 368:
+#line 1493 "yaccParser/hsparser.y"
+{ yyval.utree = mkcasee(yyvsp[-4].utree,yyvsp[-1].ulist); ;
+    break;}
+case 369:
+#line 1494 "yaccParser/hsparser.y"
+{ yyval.utree = mkcasee(yyvsp[-4].utree,yyvsp[-1].ulist); ;
+    break;}
+case 370:
+#line 1497 "yaccParser/hsparser.y"
+{ yyval.utree = mkccall(yyvsp[-1].uid,installid("n"),yyvsp[0].ulist); ;
+    break;}
+case 371:
+#line 1498 "yaccParser/hsparser.y"
+{ yyval.utree = mkccall(yyvsp[0].uid,installid("n"),Lnil); ;
+    break;}
+case 372:
+#line 1499 "yaccParser/hsparser.y"
+{ yyval.utree = mkccall(yyvsp[-1].uid,installid("p"),yyvsp[0].ulist); ;
+    break;}
+case 373:
+#line 1500 "yaccParser/hsparser.y"
+{ yyval.utree = mkccall(yyvsp[0].uid,installid("p"),Lnil); ;
+    break;}
+case 374:
+#line 1501 "yaccParser/hsparser.y"
+{ yyval.utree = mkccall(yyvsp[-1].ustring,installid("N"),yyvsp[0].ulist); ;
+    break;}
+case 375:
+#line 1502 "yaccParser/hsparser.y"
+{ yyval.utree = mkccall(yyvsp[0].ustring,installid("N"),Lnil); ;
+    break;}
+case 376:
+#line 1503 "yaccParser/hsparser.y"
+{ yyval.utree = mkccall(yyvsp[-1].ustring,installid("P"),yyvsp[0].ulist); ;
+    break;}
+case 377:
+#line 1504 "yaccParser/hsparser.y"
+{ yyval.utree = mkccall(yyvsp[0].ustring,installid("P"),Lnil); ;
+    break;}
+case 378:
+#line 1508 "yaccParser/hsparser.y"
+{ extern BOOLEAN ignoreSCC;
+                 extern BOOLEAN warnSCC;
+
+                 if (ignoreSCC) {
+                   if (warnSCC)
+                       fprintf(stderr,
+                               "\"%s\", line %d: _scc_ (`set [profiling] cost centre') ignored\n",
+                               input_filename, hsplineno);
+                   yyval.utree = yyvsp[0].utree;
+                 } else {
+                   yyval.utree = mkscc(yyvsp[-1].uhstring, yyvsp[0].utree);
+                 }
+               ;
+    break;}
+case 380:
+#line 1526 "yaccParser/hsparser.y"
+{ yyval.utree = mkap(yyvsp[-1].utree,yyvsp[0].utree); ;
+    break;}
+case 382:
+#line 1530 "yaccParser/hsparser.y"
+{ yyval.ulist = lapp(yyvsp[-1].ulist,yyvsp[0].utree); ;
+    break;}
+case 383:
+#line 1531 "yaccParser/hsparser.y"
+{ yyval.ulist = lsing(yyvsp[0].utree); ;
+    break;}
+case 384:
+#line 1541 "yaccParser/hsparser.y"
+{ yyval.utree = mkident(yyvsp[0].uid); ;
+    break;}
+case 385:
+#line 1542 "yaccParser/hsparser.y"
+{ yyval.utree = mkident(yyvsp[0].uid); ;
+    break;}
+case 386:
+#line 1543 "yaccParser/hsparser.y"
+{ yyval.utree = mklit(yyvsp[0].uliteral); ;
+    break;}
+case 387:
+#line 1544 "yaccParser/hsparser.y"
+{ yyval.utree = mkpar(yyvsp[-1].utree); ;
+    break;}
+case 388:
+#line 1545 "yaccParser/hsparser.y"
+{ checkprec(yyvsp[-2].utree,yyvsp[-1].uid,FALSE); yyval.utree = mklsection(yyvsp[-2].utree,yyvsp[-1].uid); ;
+    break;}
+case 389:
+#line 1546 "yaccParser/hsparser.y"
+{ checkprec(yyvsp[-1].utree,yyvsp[-2].uid,TRUE);  yyval.utree = mkrsection(yyvsp[-2].uid,yyvsp[-1].utree); ;
+    break;}
+case 391:
+#line 1550 "yaccParser/hsparser.y"
+{ yyval.utree = mkpar(yyvsp[0].utree); ;
+    break;}
+case 392:
+#line 1551 "yaccParser/hsparser.y"
+{ yyval.utree = mkpar(yyvsp[0].utree); ;
+    break;}
+case 393:
+#line 1552 "yaccParser/hsparser.y"
+{ yyval.utree = mkpar(yyvsp[0].utree); ;
+    break;}
+case 394:
+#line 1555 "yaccParser/hsparser.y"
+{ checkinpat();  yyval.utree = mkas(yyvsp[-2].uid,yyvsp[0].utree); ;
+    break;}
+case 395:
+#line 1556 "yaccParser/hsparser.y"
+{ checkinpat();  yyval.utree = mkwildp();   ;
+    break;}
+case 396:
+#line 1557 "yaccParser/hsparser.y"
+{ checkinpat();  yyval.utree = mklazyp(yyvsp[0].utree); ;
+    break;}
+case 398:
+#line 1592 "yaccParser/hsparser.y"
+{
+                 yyval.utree = mkinfixop(yyvsp[-1].uid,yyvsp[-2].utree,yyvsp[0].utree);
+
+                 if(isconstr(id_to_string(yyvsp[-1].uid)))
+                   precparse(yyval.utree);
+                 else
+                   {
+                     checkprec(yyvsp[-2].utree,yyvsp[-1].uid,FALSE);   /* Check the precedence of the left pattern */
+                     checkprec(yyvsp[0].utree,yyvsp[-1].uid,TRUE);     /* then check the right pattern */
+                   }
+               ;
+    break;}
+case 400:
+#line 1607 "yaccParser/hsparser.y"
+{
+                 yyval.utree = mkinfixop(yyvsp[-1].uid,yyvsp[-2].utree,yyvsp[0].utree);
+
+                 if(isconstr(id_to_string(yyvsp[-1].uid)))
+                   precparse(yyval.utree);
+                 else
+                   {
+                     checkprec(yyvsp[-2].utree,yyvsp[-1].uid,FALSE);   /* Check the precedence of the left pattern */
+                     checkprec(yyvsp[0].utree,yyvsp[-1].uid,TRUE);     /* then check the right pattern */
+                   }
+               ;
+    break;}
+case 401:
+#line 1626 "yaccParser/hsparser.y"
+{ yyval.utree = mknegate(yyvsp[0].utree); ;
+    break;}
+case 403:
+#line 1631 "yaccParser/hsparser.y"
+{ yyval.utree = mkap(yyvsp[-1].utree,yyvsp[0].utree); ;
+    break;}
+case 405:
+#line 1635 "yaccParser/hsparser.y"
+{ yyval.utree = mknegate(yyvsp[0].utree); ;
+    break;}
+case 407:
+#line 1640 "yaccParser/hsparser.y"
+{ yyval.utree = mkap(yyvsp[-1].utree,yyvsp[0].utree); ;
+    break;}
+case 409:
+#line 1644 "yaccParser/hsparser.y"
+{ yyval.utree = mkident(yyvsp[0].uid); ;
+    break;}
+case 410:
+#line 1645 "yaccParser/hsparser.y"
+{ yyval.utree = mkident(yyvsp[0].uid); ;
+    break;}
+case 411:
+#line 1646 "yaccParser/hsparser.y"
+{ yyval.utree = mkas(yyvsp[-2].uid,yyvsp[0].utree); ;
+    break;}
+case 412:
+#line 1647 "yaccParser/hsparser.y"
+{ yyval.utree = mklit(yyvsp[0].uliteral); ;
+    break;}
+case 413:
+#line 1648 "yaccParser/hsparser.y"
+{ yyval.utree = mkwildp(); ;
+    break;}
+case 414:
+#line 1649 "yaccParser/hsparser.y"
+{ yyval.utree = mktuple(Lnil); ;
+    break;}
+case 415:
+#line 1650 "yaccParser/hsparser.y"
+{ yyval.utree = mkplusp(mkident(yyvsp[-3].uid),mkinteger(yyvsp[-1].ustring)); ;
+    break;}
+case 416:
+#line 1654 "yaccParser/hsparser.y"
+{ yyval.utree = mkpar(yyvsp[-1].utree); ;
+    break;}
+case 417:
+#line 1655 "yaccParser/hsparser.y"
+{ yyval.utree = mktuple(mklcons(yyvsp[-3].utree,yyvsp[-1].ulist)); ;
+    break;}
+case 418:
+#line 1656 "yaccParser/hsparser.y"
+{ yyval.utree = mkllist(yyvsp[-1].ulist); ;
+    break;}
+case 419:
+#line 1657 "yaccParser/hsparser.y"
+{ yyval.utree = mkllist(Lnil); ;
+    break;}
+case 420:
+#line 1658 "yaccParser/hsparser.y"
+{ yyval.utree = mklazyp(yyvsp[0].utree); ;
+    break;}
+case 421:
+#line 1661 "yaccParser/hsparser.y"
+{ yyval.utree = mkident(yyvsp[0].uid); ;
+    break;}
+case 422:
+#line 1662 "yaccParser/hsparser.y"
+{ yyval.utree = mkident(yyvsp[0].uid); ;
+    break;}
+case 423:
+#line 1663 "yaccParser/hsparser.y"
+{ yyval.utree = mkas(yyvsp[-2].uid,yyvsp[0].utree); ;
+    break;}
+case 424:
+#line 1664 "yaccParser/hsparser.y"
+{ yyval.utree = mklit(yyvsp[0].uliteral); setstartlineno(); ;
+    break;}
+case 425:
+#line 1665 "yaccParser/hsparser.y"
+{ yyval.utree = mkwildp(); setstartlineno(); ;
+    break;}
+case 426:
+#line 1666 "yaccParser/hsparser.y"
+{ yyval.utree = mktuple(Lnil); ;
+    break;}
+case 427:
+#line 1667 "yaccParser/hsparser.y"
+{ yyval.utree = mkplusp(mkident(yyvsp[-3].uid),mkinteger(yyvsp[-1].ustring)); ;
+    break;}
+case 428:
+#line 1671 "yaccParser/hsparser.y"
+{ yyval.utree = mkpar(yyvsp[-1].utree); ;
+    break;}
+case 429:
+#line 1672 "yaccParser/hsparser.y"
+{ yyval.utree = mktuple(mklcons(yyvsp[-3].utree,yyvsp[-1].ulist)); ;
+    break;}
+case 430:
+#line 1673 "yaccParser/hsparser.y"
+{ yyval.utree = mkllist(yyvsp[-1].ulist); ;
+    break;}
+case 431:
+#line 1674 "yaccParser/hsparser.y"
+{ yyval.utree = mkllist(Lnil); ;
+    break;}
+case 432:
+#line 1675 "yaccParser/hsparser.y"
+{ yyval.utree = mklazyp(yyvsp[0].utree); ;
+    break;}
+case 433:
+#line 1686 "yaccParser/hsparser.y"
+{ if (ttree(yyvsp[-1].utree) == tuple)
+                   yyval.utree = mktuple(mklcons(yyvsp[-3].utree, gtuplelist((struct Stuple *) yyvsp[-1].utree)));
+               else
+                 yyval.utree = mktuple(ldub(yyvsp[-3].utree, yyvsp[-1].utree));
+               ;
+    break;}
+case 434:
+#line 1692 "yaccParser/hsparser.y"
+{ yyval.utree = mktuple(Lnil); ;
+    break;}
+case 435:
+#line 1695 "yaccParser/hsparser.y"
+{ yyval.utree = mkpar(yyvsp[0].utree); ;
+    break;}
+case 436:
+#line 1697 "yaccParser/hsparser.y"
+{ if (ttree(yyvsp[0].utree) == tuple)
+                   yyval.utree = mktuple(mklcons(yyvsp[-2].utree, gtuplelist((struct Stuple *) yyvsp[0].utree)));
+               else
+                 yyval.utree = mktuple(ldub(yyvsp[-2].utree, yyvsp[0].utree));
+               ;
+    break;}
+case 437:
+#line 1706 "yaccParser/hsparser.y"
+{ yyval.utree = mkllist(Lnil); ;
+    break;}
+case 438:
+#line 1707 "yaccParser/hsparser.y"
+{ yyval.utree = mkllist(yyvsp[-1].ulist); ;
+    break;}
+case 439:
+#line 1711 "yaccParser/hsparser.y"
+{ yyval.ulist = lsing(yyvsp[0].utree); ;
+    break;}
+case 440:
+#line 1712 "yaccParser/hsparser.y"
+{ yyval.ulist = mklcons(yyvsp[-2].utree, yyvsp[0].ulist); ;
+    break;}
+case 441:
+#line 1727 "yaccParser/hsparser.y"
+{yyval.utree = mkeenum(yyvsp[-5].utree,lsing(yyvsp[-3].utree),yyvsp[-1].ulist);;
+    break;}
+case 442:
+#line 1728 "yaccParser/hsparser.y"
+{ yyval.utree = mkeenum(yyvsp[-3].utree,Lnil,yyvsp[-1].ulist); ;
+    break;}
+case 443:
+#line 1731 "yaccParser/hsparser.y"
+{ yyval.utree = mkcomprh(yyvsp[-3].utree,yyvsp[-1].ulist); ;
+    break;}
+case 444:
+#line 1734 "yaccParser/hsparser.y"
+{ yyval.ulist = lsing(yyvsp[0].utree); ;
+    break;}
+case 445:
+#line 1735 "yaccParser/hsparser.y"
+{ yyval.ulist = lapp(yyvsp[-2].ulist,yyvsp[0].utree); ;
+    break;}
+case 446:
+#line 1738 "yaccParser/hsparser.y"
+{ inpat = TRUE; ;
+    break;}
+case 447:
+#line 1738 "yaccParser/hsparser.y"
+{ inpat = FALSE; ;
+    break;}
+case 448:
+#line 1739 "yaccParser/hsparser.y"
+{ if (yyvsp[0].utree == NULL)
+                   yyval.utree = mkguard(yyvsp[-2].utree);
+                 else
+                   {
+                     checkpatt(yyvsp[-2].utree);
+                     if(ttree(yyvsp[0].utree)==def)
+                       {
+                         tree prevpatt_save = PREVPATT;
+                         PREVPATT = yyvsp[-2].utree;
+                         yyval.utree = mkdef((tree) mkpbind(lsing(createpat(lsing(mktruecase(ggdef((struct Sdef *) yyvsp[0].utree))),mknullbind())),hsplineno));
+                         PREVPATT = prevpatt_save;
+                       }
+                     else
+                       yyval.utree = mkqual(yyvsp[-2].utree,yyvsp[0].utree);
+                   }
+               ;
+    break;}
+case 449:
+#line 1757 "yaccParser/hsparser.y"
+{ yyval.utree = yyvsp[0].utree; ;
+    break;}
+case 450:
+#line 1758 "yaccParser/hsparser.y"
+{ yyval.utree = NULL; ;
+    break;}
+case 451:
+#line 1761 "yaccParser/hsparser.y"
+{ yyval.ulist = yyvsp[0].ulist; ;
+    break;}
+case 452:
+#line 1762 "yaccParser/hsparser.y"
+{ yyval.ulist = lconc(yyvsp[-2].ulist,yyvsp[0].ulist); ;
+    break;}
+case 453:
+#line 1766 "yaccParser/hsparser.y"
+{ PREVPATT = yyvsp[0].utree; ;
+    break;}
+case 454:
+#line 1768 "yaccParser/hsparser.y"
+{ yyval.ulist = yyvsp[0].ulist;
+                 PREVPATT = NULL;
+               ;
+    break;}
+case 455:
+#line 1771 "yaccParser/hsparser.y"
+{ yyval.ulist = Lnil; ;
+    break;}
+case 456:
+#line 1774 "yaccParser/hsparser.y"
+{ yyval.ulist = lsing(createpat(yyvsp[-1].ulist, yyvsp[0].ubinding)); ;
+    break;}
+case 457:
+#line 1775 "yaccParser/hsparser.y"
+{ yyval.ulist = lsing(createpat(lsing(mktruecase(yyvsp[-1].utree)), yyvsp[0].ubinding)); ;
+    break;}
+case 458:
+#line 1778 "yaccParser/hsparser.y"
+{ yyval.ulist = mklcons(ldub(yyvsp[-3].utree,yyvsp[-1].utree),yyvsp[0].ulist);  ;
+    break;}
+case 459:
+#line 1779 "yaccParser/hsparser.y"
+{ yyval.ulist = lsing(ldub(yyvsp[-2].utree,yyvsp[0].utree)); ;
+    break;}
+case 460:
+#line 1782 "yaccParser/hsparser.y"
+{ yyval.ulist = Lnil; ;
+    break;}
+case 461:
+#line 1783 "yaccParser/hsparser.y"
+{ yyval.ulist = lsing(yyvsp[0].utree); ;
+    break;}
+case 462:
+#line 1786 "yaccParser/hsparser.y"
+{ yyval.ulist = mklcons(yyvsp[-2].utree, yyvsp[0].ulist); ;
+    break;}
+case 463:
+#line 1787 "yaccParser/hsparser.y"
+{ yyval.ulist = lsing(yyvsp[0].utree); ;
+    break;}
+case 465:
+#line 1792 "yaccParser/hsparser.y"
+{ yyval.utree = mkinfixop(yyvsp[-1].uid,yyvsp[-2].utree,yyvsp[0].utree); precparse(yyval.utree); ;
+    break;}
+case 468:
+#line 1797 "yaccParser/hsparser.y"
+{ yyval.utree = mklit(mkinteger(ineg(yyvsp[0].ustring))); ;
+    break;}
+case 469:
+#line 1798 "yaccParser/hsparser.y"
+{ yyval.utree = mklit(mkfloatr(ineg(yyvsp[0].ustring))); ;
+    break;}
+case 470:
+#line 1801 "yaccParser/hsparser.y"
+{ yyval.utree = mkident(yyvsp[0].uid); ;
+    break;}
+case 471:
+#line 1802 "yaccParser/hsparser.y"
+{ yyval.utree = mkap(yyvsp[-1].utree,yyvsp[0].utree); ;
+    break;}
+case 472:
+#line 1805 "yaccParser/hsparser.y"
+{ yyval.utree = mkident(yyvsp[0].uid); ;
+    break;}
+case 474:
+#line 1809 "yaccParser/hsparser.y"
+{ yyval.utree = mkident(yyvsp[0].uid); ;
+    break;}
+case 475:
+#line 1810 "yaccParser/hsparser.y"
+{ yyval.utree = mkas(yyvsp[-2].uid,yyvsp[0].utree); ;
+    break;}
+case 476:
+#line 1811 "yaccParser/hsparser.y"
+{ yyval.utree = mklit(yyvsp[0].uliteral); ;
+    break;}
+case 477:
+#line 1812 "yaccParser/hsparser.y"
+{ yyval.utree = mkwildp(); ;
+    break;}
+case 478:
+#line 1813 "yaccParser/hsparser.y"
+{ yyval.utree = mktuple(Lnil); ;
+    break;}
+case 479:
+#line 1814 "yaccParser/hsparser.y"
+{ yyval.utree = mkplusp(mkident(yyvsp[-3].uid),mkinteger(yyvsp[-1].ustring)); ;
+    break;}
+case 480:
+#line 1818 "yaccParser/hsparser.y"
+{ yyval.utree = mkpar(yyvsp[-1].utree); ;
+    break;}
+case 481:
+#line 1819 "yaccParser/hsparser.y"
+{ yyval.utree = mktuple(mklcons(yyvsp[-3].utree,yyvsp[-1].ulist)); ;
+    break;}
+case 482:
+#line 1820 "yaccParser/hsparser.y"
+{ yyval.utree = mkllist(yyvsp[-1].ulist); ;
+    break;}
+case 483:
+#line 1821 "yaccParser/hsparser.y"
+{ yyval.utree = mkllist(Lnil); ;
+    break;}
+case 484:
+#line 1822 "yaccParser/hsparser.y"
+{ yyval.utree = mklazyp(yyvsp[0].utree); ;
+    break;}
+case 485:
+#line 1826 "yaccParser/hsparser.y"
+{ yyval.uliteral = mkinteger(yyvsp[0].ustring); ;
+    break;}
+case 486:
+#line 1827 "yaccParser/hsparser.y"
+{ yyval.uliteral = mkfloatr(yyvsp[0].ustring); ;
+    break;}
+case 487:
+#line 1828 "yaccParser/hsparser.y"
+{ yyval.uliteral = mkcharr(yyvsp[0].uhstring); ;
+    break;}
+case 488:
+#line 1829 "yaccParser/hsparser.y"
+{ yyval.uliteral = mkstring(yyvsp[0].uhstring); ;
+    break;}
+case 489:
+#line 1830 "yaccParser/hsparser.y"
+{ yyval.uliteral = mkcharprim(yyvsp[0].uhstring); ;
+    break;}
+case 490:
+#line 1831 "yaccParser/hsparser.y"
+{ yyval.uliteral = mkstringprim(yyvsp[0].uhstring); ;
+    break;}
+case 491:
+#line 1832 "yaccParser/hsparser.y"
+{ yyval.uliteral = mkintprim(yyvsp[0].ustring); ;
+    break;}
+case 492:
+#line 1833 "yaccParser/hsparser.y"
+{ yyval.uliteral = mkfloatprim(yyvsp[0].ustring); ;
+    break;}
+case 493:
+#line 1834 "yaccParser/hsparser.y"
+{ yyval.uliteral = mkdoubleprim(yyvsp[0].ustring); ;
+    break;}
+case 494:
+#line 1835 "yaccParser/hsparser.y"
+{ yyval.uliteral = mkclitlit(yyvsp[0].ustring, ""); ;
+    break;}
+case 495:
+#line 1836 "yaccParser/hsparser.y"
+{ yyval.uliteral = mkclitlit(yyvsp[-2].ustring, yyvsp[0].uid); ;
+    break;}
+case 496:
+#line 1837 "yaccParser/hsparser.y"
+{ yyval.uliteral = mknorepi(yyvsp[0].ustring); ;
+    break;}
+case 497:
+#line 1838 "yaccParser/hsparser.y"
+{ yyval.uliteral = mknorepr(yyvsp[-1].ustring, yyvsp[0].ustring); ;
+    break;}
+case 498:
+#line 1839 "yaccParser/hsparser.y"
+{ yyval.uliteral = mknoreps(yyvsp[0].uhstring); ;
+    break;}
+case 499:
+#line 1845 "yaccParser/hsparser.y"
+{ setstartlineno(); ;
+    break;}
+case 500:
+#line 1848 "yaccParser/hsparser.y"
+{ setstartlineno();
+                         if(etags)
+#if 1/*etags*/
+                           printf("%u\n",startlineno);
+#else
+                           fprintf(stderr,"%u\tdata\n",startlineno);
+#endif
+                       ;
+    break;}
+case 501:
+#line 1858 "yaccParser/hsparser.y"
+{ setstartlineno();
+                         if(etags)
+#if 1/*etags*/
+                           printf("%u\n",startlineno);
+#else
+                           fprintf(stderr,"%u\ttype\n",startlineno);
+#endif
+                       ;
+    break;}
+case 502:
+#line 1868 "yaccParser/hsparser.y"
+{ setstartlineno();
+#if 1/*etags*/
+/* OUT:                          if(etags)
+                           printf("%u\n",startlineno);
+*/
+#else
+                           fprintf(stderr,"%u\tinstance\n",startlineno);
+#endif
+                       ;
+    break;}
+case 503:
+#line 1879 "yaccParser/hsparser.y"
+{ setstartlineno(); ;
+    break;}
+case 504:
+#line 1882 "yaccParser/hsparser.y"
+{ setstartlineno();
+                         if(etags)
+#if 1/*etags*/
+                           printf("%u\n",startlineno);
+#else
+                           fprintf(stderr,"%u\tclass\n",startlineno);
+#endif
+                       ;
+    break;}
+case 505:
+#line 1892 "yaccParser/hsparser.y"
+{ setstartlineno(); ;
+    break;}
+case 506:
+#line 1895 "yaccParser/hsparser.y"
+{ setstartlineno();
+                         if(etags)
+#if 1/*etags*/
+                           printf("%u\n",startlineno);
+#else
+                           fprintf(stderr,"%u\tmodule\n",startlineno);
+#endif
+                       ;
+    break;}
+case 507:
+#line 1905 "yaccParser/hsparser.y"
+{ setstartlineno(); ;
+    break;}
+case 508:
+#line 1908 "yaccParser/hsparser.y"
+{ setstartlineno(); ;
+    break;}
+case 509:
+#line 1911 "yaccParser/hsparser.y"
+{ setstartlineno(); ;
+    break;}
+case 515:
+#line 1926 "yaccParser/hsparser.y"
+{ yyval.uid = yyvsp[-1].uid; ;
+    break;}
+case 518:
+#line 1932 "yaccParser/hsparser.y"
+{ yyval.uid = yyvsp[-1].uid; ;
+    break;}
+case 520:
+#line 1936 "yaccParser/hsparser.y"
+{ yyval.uid = yyvsp[-1].uid; ;
+    break;}
+case 524:
+#line 1944 "yaccParser/hsparser.y"
+{ yyval.uid = install_literal("-"); ;
+    break;}
+case 525:
+#line 1947 "yaccParser/hsparser.y"
+{ yyval.uid = install_literal("+"); ;
+    break;}
+case 527:
+#line 1951 "yaccParser/hsparser.y"
+{ yyval.uid = yyvsp[-1].uid; ;
+    break;}
+case 528:
+#line 1954 "yaccParser/hsparser.y"
+{ setstartlineno(); yyval.uid = yyvsp[0].uid; ;
+    break;}
+case 529:
+#line 1955 "yaccParser/hsparser.y"
+{ yyval.uid = yyvsp[-1].uid; ;
+    break;}
+case 531:
+#line 1960 "yaccParser/hsparser.y"
+{ yyval.uid = yyvsp[-1].uid; ;
+    break;}
+case 532:
+#line 1963 "yaccParser/hsparser.y"
+{ setstartlineno(); yyval.uid = yyvsp[0].uid; ;
+    break;}
+case 533:
+#line 1964 "yaccParser/hsparser.y"
+{ yyval.uid = yyvsp[-1].uid; ;
+    break;}
+case 536:
+#line 1972 "yaccParser/hsparser.y"
+{ yyval.ulist = mklcons(yyvsp[-2].uttype,lsing(yyvsp[0].uttype)); ;
+    break;}
+case 537:
+#line 1973 "yaccParser/hsparser.y"
+{ yyval.ulist = mklcons(yyvsp[-2].uttype,yyvsp[0].ulist); ;
+    break;}
+case 538:
+#line 1977 "yaccParser/hsparser.y"
+{ yyval.ulist = lsing(yyvsp[0].uttype); ;
+    break;}
+case 539:
+#line 1978 "yaccParser/hsparser.y"
+{ yyval.ulist = lapp(yyvsp[-1].ulist, yyvsp[0].uttype); ;
+    break;}
+case 540:
+#line 1981 "yaccParser/hsparser.y"
+{ yyval.uttype = mknamedtvar(yyvsp[0].uid); ;
+    break;}
+case 544:
+#line 1997 "yaccParser/hsparser.y"
+{ hsincindent(); ;
+    break;}
+case 545:
+#line 1999 "yaccParser/hsparser.y"
+{ hssetindent(); ;
+    break;}
+case 546:
+#line 2002 "yaccParser/hsparser.y"
+{ hsindentoff(); ;
+    break;}
+case 547:
+#line 2007 "yaccParser/hsparser.y"
+{
+                 FN = NULL; SAMEFN = 0; PREVPATT = NULL;
+                 hsendindent();
+               ;
+    break;}
+case 548:
+#line 2013 "yaccParser/hsparser.y"
+{ expect_ccurly = 1; ;
+    break;}
+case 549:
+#line 2013 "yaccParser/hsparser.y"
+{ expect_ccurly = 0; ;
+    break;}
+case 550:
+#line 2018 "yaccParser/hsparser.y"
+{
+                 FN = NULL; SAMEFN = 0; PREVPATT = NULL;
+                 hsendindent();
+               ;
+    break;}
+case 551:
+#line 2023 "yaccParser/hsparser.y"
+{
+                 yyerrok;
+                 FN = NULL; SAMEFN = 0; PREVPATT = NULL;
+                 hsendindent();
+               ;
+    break;}
+}
+   /* the action file gets copied in in place of this dollarsign */
+#line 457 "/usr/local/gnu/lib/bison.simple"
+\f
+  yyvsp -= yylen;
+  yyssp -= yylen;
+#ifdef YYLSP_NEEDED
+  yylsp -= yylen;
+#endif
+
+#if YYDEBUG != 0
+  if (yydebug)
+    {
+      short *ssp1 = yyss - 1;
+      fprintf (stderr, "state stack now");
+      while (ssp1 != yyssp)
+       fprintf (stderr, " %d", *++ssp1);
+      fprintf (stderr, "\n");
+    }
+#endif
+
+  *++yyvsp = yyval;
+
+#ifdef YYLSP_NEEDED
+  yylsp++;
+  if (yylen == 0)
+    {
+      yylsp->first_line = yylloc.first_line;
+      yylsp->first_column = yylloc.first_column;
+      yylsp->last_line = (yylsp-1)->last_line;
+      yylsp->last_column = (yylsp-1)->last_column;
+      yylsp->text = 0;
+    }
+  else
+    {
+      yylsp->last_line = (yylsp+yylen-1)->last_line;
+      yylsp->last_column = (yylsp+yylen-1)->last_column;
+    }
+#endif
+
+  /* Now "shift" the result of the reduction.
+     Determine what state that goes to,
+     based on the state we popped back to
+     and the rule number reduced by.  */
+
+  yyn = yyr1[yyn];
+
+  yystate = yypgoto[yyn - YYNTBASE] + *yyssp;
+  if (yystate >= 0 && yystate <= YYLAST && yycheck[yystate] == *yyssp)
+    yystate = yytable[yystate];
+  else
+    yystate = yydefgoto[yyn - YYNTBASE];
+
+  goto yynewstate;
+
+yyerrlab:   /* here on detecting error */
+
+  if (! yyerrstatus)
+    /* If not already recovering from an error, report this error.  */
+    {
+      ++yynerrs;
+
+#ifdef YYERROR_VERBOSE
+      yyn = yypact[yystate];
+
+      if (yyn > YYFLAG && yyn < YYLAST)
+       {
+         int size = 0;
+         char *msg;
+         int x, count;
+
+         count = 0;
+         /* Start X at -yyn if nec to avoid negative indexes in yycheck.  */
+         for (x = (yyn < 0 ? -yyn : 0);
+              x < (sizeof(yytname) / sizeof(char *)); x++)
+           if (yycheck[x + yyn] == x)
+             size += strlen(yytname[x]) + 15, count++;
+         msg = (char *) malloc(size + 15);
+         if (msg != 0)
+           {
+             strcpy(msg, "parse error");
+
+             if (count < 5)
+               {
+                 count = 0;
+                 for (x = (yyn < 0 ? -yyn : 0);
+                      x < (sizeof(yytname) / sizeof(char *)); x++)
+                   if (yycheck[x + yyn] == x)
+                     {
+                       strcat(msg, count == 0 ? ", expecting `" : " or `");
+                       strcat(msg, yytname[x]);
+                       strcat(msg, "'");
+                       count++;
+                     }
+               }
+             yyerror(msg);
+             free(msg);
+           }
+         else
+           yyerror ("parse error; also virtual memory exceeded");
+       }
+      else
+#endif /* YYERROR_VERBOSE */
+       yyerror("parse error");
+    }
+
+  goto yyerrlab1;
+yyerrlab1:   /* here on error raised explicitly by an action */
+
+  if (yyerrstatus == 3)
+    {
+      /* if just tried and failed to reuse lookahead token after an error, discard it.  */
+
+      /* return failure if at end of input */
+      if (yychar == YYEOF)
+       YYABORT;
+
+#if YYDEBUG != 0
+      if (yydebug)
+       fprintf(stderr, "Discarding token %d (%s).\n", yychar, yytname[yychar1]);
+#endif
+
+      yychar = YYEMPTY;
+    }
+
+  /* Else will try to reuse lookahead token
+     after shifting the error token.  */
+
+  yyerrstatus = 3;             /* Each real token shifted decrements this */
+
+  goto yyerrhandle;
+
+yyerrdefault:  /* current state does not do anything special for the error token. */
+
+#if 0
+  /* This is wrong; only states that explicitly want error tokens
+     should shift them.  */
+  yyn = yydefact[yystate];  /* If its default is to accept any token, ok.  Otherwise pop it.*/
+  if (yyn) goto yydefault;
+#endif
+
+yyerrpop:   /* pop the current state because it cannot handle the error token */
+
+  if (yyssp == yyss) YYABORT;
+  yyvsp--;
+  yystate = *--yyssp;
+#ifdef YYLSP_NEEDED
+  yylsp--;
+#endif
+
+#if YYDEBUG != 0
+  if (yydebug)
+    {
+      short *ssp1 = yyss - 1;
+      fprintf (stderr, "Error: state stack now");
+      while (ssp1 != yyssp)
+       fprintf (stderr, " %d", *++ssp1);
+      fprintf (stderr, "\n");
+    }
+#endif
+
+yyerrhandle:
+
+  yyn = yypact[yystate];
+  if (yyn == YYFLAG)
+    goto yyerrdefault;
+
+  yyn += YYTERROR;
+  if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != YYTERROR)
+    goto yyerrdefault;
+
+  yyn = yytable[yyn];
+  if (yyn < 0)
+    {
+      if (yyn == YYFLAG)
+       goto yyerrpop;
+      yyn = -yyn;
+      goto yyreduce;
+    }
+  else if (yyn == 0)
+    goto yyerrpop;
+
+  if (yyn == YYFINAL)
+    YYACCEPT;
+
+#if YYDEBUG != 0
+  if (yydebug)
+    fprintf(stderr, "Shifting error token, ");
+#endif
+
+  *++yyvsp = yylval;
+#ifdef YYLSP_NEEDED
+  *++yylsp = yylloc;
+#endif
+
+  yystate = yyn;
+  goto yynewstate;
+}
+#line 2030 "yaccParser/hsparser.y"
+
+
+/**********************************************************************
+*                                                                     *
+*      Error Processing and Reporting                                 *
+*                                                                     *
+*  (This stuff is here in case we want to use Yacc macros and such.)  *
+*                                                                     *
+**********************************************************************/
+
+/* The parser calls "hsperror" when it sees a
+   `report this and die' error.  It sets the stage
+   and calls "yyerror".
+
+   There should be no direct calls in the parser to
+   "yyerror", except for the one from "hsperror".  Thus,
+   the only other calls will be from the error productions
+   introduced by yacc/bison/whatever.
+
+   We need to be able to recognise the from-error-production
+   case, because we sometimes want to say, "Oh, never mind",
+   because the layout rule kicks into action and may save
+   the day.  [WDP]
+*/
+
+static BOOLEAN error_and_I_mean_it = FALSE;
+
+void
+hsperror(s)
+  char *s;
+{
+    error_and_I_mean_it = TRUE;
+    yyerror(s);
+}
+
+void
+yyerror(s)
+  char *s;
+{
+    extern char *yytext;
+    extern int yyleng;
+
+    /* We want to be able to distinguish 'error'-raised yyerrors
+       from yyerrors explicitly coded by the parser hacker.
+    */
+    if (expect_ccurly && ! error_and_I_mean_it ) {
+       /*NOTHING*/;
+
+    } else {
+       fprintf(stderr, "\"%s\", line %d, column %d: %s on input: ",
+         input_filename, hsplineno, hspcolno + 1, s);
+
+       if (yyleng == 1 && *yytext == '\0')
+           fprintf(stderr, "<EOF>");
+
+       else {
+           fputc('"', stderr);
+           format_string(stderr, (unsigned char *) yytext, yyleng);
+           fputc('"', stderr);
+       }
+       fputc('\n', stderr);
+
+       /* a common problem */
+       if (strcmp(yytext, "#") == 0)
+           fprintf(stderr, "\t(Perhaps you forgot a `-cpp' or `-fglasgow-exts' flag?)\n");
+
+       exit(1);
+    }
+}
+
+void
+format_string(fp, s, len)
+  FILE *fp;
+  unsigned char *s;
+  int len;
+{
+    while (len-- > 0) {
+       switch (*s) {
+       case '\0':    fputs("\\NUL", fp);   break;
+       case '\007':  fputs("\\a", fp);     break;
+       case '\010':  fputs("\\b", fp);     break;
+       case '\011':  fputs("\\t", fp);     break;
+       case '\012':  fputs("\\n", fp);     break;
+       case '\013':  fputs("\\v", fp);     break;
+       case '\014':  fputs("\\f", fp);     break;
+       case '\015':  fputs("\\r", fp);     break;
+       case '\033':  fputs("\\ESC", fp);   break;
+       case '\034':  fputs("\\FS", fp);    break;
+       case '\035':  fputs("\\GS", fp);    break;
+       case '\036':  fputs("\\RS", fp);    break;
+       case '\037':  fputs("\\US", fp);    break;
+       case '\177':  fputs("\\DEL", fp);   break;
+       default:
+           if (*s >= ' ')
+               fputc(*s, fp);
+           else
+               fprintf(fp, "\\^%c", *s + '@');
+           break;
+       }
+       s++;
+    }
+}