BSD 4_4 development
authorCSRG <csrg@ucbvax.Berkeley.EDU>
Tue, 25 May 1993 08:12:37 +0000 (00:12 -0800)
committerCSRG <csrg@ucbvax.Berkeley.EDU>
Tue, 25 May 1993 08:12:37 +0000 (00:12 -0800)
Work on file usr/src/contrib/gcc-2.3.3/cp-parse.c

Synthesized-from: CSRG/cd3/4.4

usr/src/contrib/gcc-2.3.3/cp-parse.c [new file with mode: 0644]

diff --git a/usr/src/contrib/gcc-2.3.3/cp-parse.c b/usr/src/contrib/gcc-2.3.3/cp-parse.c
new file mode 100644 (file)
index 0000000..2b4bf82
--- /dev/null
@@ -0,0 +1,7301 @@
+
+/*  A Bison parser, made from cp-parse.y  */
+
+#define YYBISON 1  /* Identify Bison output.  */
+
+#define        IDENTIFIER      258
+#define        TYPENAME        259
+#define        SCOPED_TYPENAME 260
+#define        SCSPEC  261
+#define        TYPESPEC        262
+#define        TYPE_QUAL       263
+#define        CONSTANT        264
+#define        STRING  265
+#define        ELLIPSIS        266
+#define        SIZEOF  267
+#define        ENUM    268
+#define        IF      269
+#define        ELSE    270
+#define        WHILE   271
+#define        DO      272
+#define        FOR     273
+#define        SWITCH  274
+#define        CASE    275
+#define        DEFAULT 276
+#define        BREAK   277
+#define        CONTINUE        278
+#define        RETURN  279
+#define        GOTO    280
+#define        ASM_KEYWORD     281
+#define        TYPEOF  282
+#define        ALIGNOF 283
+#define        HEADOF  284
+#define        CLASSOF 285
+#define        ATTRIBUTE       286
+#define        EXTENSION       287
+#define        LABEL   288
+#define        AGGR    289
+#define        VISSPEC 290
+#define        DELETE  291
+#define        NEW     292
+#define        OVERLOAD        293
+#define        THIS    294
+#define        OPERATOR        295
+#define        DYNAMIC 296
+#define        POINTSAT_LEFT_RIGHT     297
+#define        LEFT_RIGHT      298
+#define        TEMPLATE        299
+#define        SCOPE   300
+#define        START_DECLARATOR        301
+#define        EMPTY   302
+#define        TYPENAME_COLON  303
+#define        ASSIGN  304
+#define        RANGE   305
+#define        OROR    306
+#define        ANDAND  307
+#define        MIN_MAX 308
+#define        EQCOMPARE       309
+#define        ARITHCOMPARE    310
+#define        LSHIFT  311
+#define        RSHIFT  312
+#define        UNARY   313
+#define        PLUSPLUS        314
+#define        MINUSMINUS      315
+#define        HYPERUNARY      316
+#define        PAREN_STAR_PAREN        317
+#define        POINTSAT        318
+#define        POINTSAT_STAR   319
+#define        DOT_STAR        320
+#define        RAISE   321
+#define        RAISES  322
+#define        RERAISE 323
+#define        TRY     324
+#define        EXCEPT  325
+#define        CATCH   326
+#define        THROW   327
+#define        ANSI_TRY        328
+#define        ANSI_THROW      329
+#define        TYPENAME_ELLIPSIS       330
+#define        PTYPENAME       331
+#define        PRE_PARSED_FUNCTION_DECL        332
+#define        EXTERN_LANG_STRING      333
+#define        ALL     334
+#define        PRE_PARSED_CLASS_DECL   335
+#define        TYPENAME_DEFN   336
+#define        IDENTIFIER_DEFN 337
+#define        PTYPENAME_DEFN  338
+#define        END_OF_SAVED_INPUT      339
+
+#line 42 "cp-parse.y"
+
+#if defined(GATHER_STATISTICS) || defined(SPEW_DEBUG)
+#undef YYDEBUG
+#define YYDEBUG 1
+#endif
+
+#include "config.h"
+
+#include <stdio.h>
+#include <errno.h>
+
+#include "tree.h"
+#include "input.h"
+#include "flags.h"
+#include "cp-lex.h"
+#include "cp-tree.h"
+
+extern tree void_list_node;
+extern struct obstack permanent_obstack;
+
+#ifndef errno
+extern int errno;
+#endif
+
+extern int end_of_file;
+
+void yyerror ();
+
+/* Like YYERROR but do call yyerror.  */
+#define YYERROR1 { yyerror ("syntax error"); YYERROR; }
+
+static void position_after_white_space ();
+
+/* Contains error message to give if user tries to declare
+   a variable where one does not belong.  */
+static char *stmt_decl_msg = 0;
+
+/* Nonzero if we have an `extern "C"' acting as an extern specifier.  */
+int have_extern_spec;
+int used_extern_spec;
+
+void yyhook ();
+
+/* Cons up an empty parameter list.  */
+#ifdef __GNUC__
+__inline
+#endif
+static tree
+empty_parms ()
+{
+  tree parms;
+
+  if (strict_prototype)
+    parms = void_list_node;
+  else
+    parms = NULL_TREE;
+  return parms;
+}
+
+#line 104 "cp-parse.y"
+typedef union {long itype; tree ttype; char *strtype; enum tree_code code; } YYSTYPE;
+#line 261 "cp-parse.y"
+
+/* List of types and structure classes of the current declaration.  */
+static tree current_declspecs;
+
+/* When defining an aggregate, this is the most recent one being defined.  */
+static tree current_aggr;
+
+/* 1 if we explained undeclared var errors.  */
+int undeclared_variable_notice;
+
+/* Tell yyparse how to print a token's value, if yydebug is set.  */
+
+#define YYPRINT(FILE,YYCHAR,YYLVAL) yyprint(FILE,YYCHAR,YYLVAL)
+extern void yyprint ();
+
+#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 __STDC__
+#define const
+#endif
+
+
+
+#define        YYFINAL         1271
+#define        YYFLAG          -32768
+#define        YYNTBASE        109
+
+#define YYTRANSLATE(x) ((unsigned)(x) <= 339 ? yytranslate[x] : 298)
+
+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,   107,     2,     2,     2,    72,    60,     2,    82,
+   103,    70,    68,    50,    69,    80,    71,     2,     2,     2,
+     2,     2,     2,     2,     2,     2,     2,    54,   104,    64,
+    52,    65,    53,     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,
+    83,     2,   108,    59,     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,    49,    58,   105,   106,     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,    51,    55,    56,    57,    61,    62,    63,
+    66,    67,    73,    74,    75,    76,    77,    78,    79,    81,
+    84,    85,    86,    87,    88,    89,    90,    91,    92,    93,
+    94,    95,    96,    97,    98,    99,   100,   101,   102
+};
+
+static const short yyprhs[] = {     0,
+     0,     1,     3,     4,     7,    10,    11,    12,    14,    16,
+    18,    20,    26,    31,    35,    40,    45,    47,    48,    54,
+    56,    60,    63,    68,    72,    74,    78,    80,    84,    85,
+    91,    92,    98,    99,   105,   106,   112,   116,   120,   127,
+   135,   140,   144,   148,   150,   152,   154,   156,   158,   161,
+   165,   169,   173,   177,   180,   183,   186,   189,   191,   195,
+   200,   204,   210,   215,   219,   223,   226,   230,   234,   237,
+   244,   251,   256,   261,   263,   270,   275,   279,   286,   291,
+   295,   298,   301,   303,   307,   312,   315,   319,   320,   321,
+   323,   327,   330,   334,   336,   341,   344,   349,   352,   357,
+   360,   366,   370,   372,   374,   376,   378,   380,   382,   384,
+   386,   388,   391,   393,   397,   402,   407,   409,   411,   412,
+   413,   415,   419,   421,   423,   424,   431,   432,   434,   435,
+   438,   440,   442,   444,   446,   448,   450,   452,   454,   458,
+   462,   464,   465,   469,   472,   475,   478,   481,   484,   487,
+   492,   495,   500,   504,   511,   518,   528,   533,   541,   547,
+   556,   566,   576,   583,   593,   600,   610,   614,   621,   624,
+   629,   635,   637,   642,   650,   655,   660,   665,   667,   671,
+   675,   679,   683,   687,   691,   695,   699,   703,   707,   711,
+   715,   719,   723,   727,   731,   735,   741,   745,   749,   753,
+   756,   758,   760,   762,   764,   768,   772,   773,   778,   779,
+   786,   789,   794,   797,   801,   804,   807,   809,   814,   819,
+   822,   828,   832,   835,   838,   841,   847,   851,   857,   861,
+   868,   873,   875,   880,   883,   889,   890,   892,   894,   897,
+   899,   902,   903,   906,   909,   912,   916,   920,   924,   928,
+   931,   934,   936,   938,   941,   944,   946,   949,   952,   956,
+   958,   960,   963,   966,   968,   970,   973,   976,   978,   981,
+   984,   988,   990,   993,   995,   997,   999,  1001,  1006,  1011,
+  1013,  1015,  1017,  1019,  1021,  1025,  1027,  1031,  1032,  1037,
+  1038,  1046,  1051,  1052,  1060,  1065,  1066,  1074,  1079,  1080,
+  1087,  1089,  1093,  1095,  1100,  1109,  1111,  1115,  1117,  1120,
+  1124,  1129,  1131,  1133,  1137,  1142,  1149,  1153,  1159,  1160,
+  1168,  1173,  1174,  1181,  1185,  1188,  1193,  1195,  1196,  1198,
+  1199,  1201,  1203,  1206,  1212,  1215,  1218,  1221,  1224,  1227,
+  1230,  1233,  1237,  1241,  1244,  1245,  1249,  1250,  1254,  1257,
+  1259,  1261,  1262,  1264,  1267,  1269,  1273,  1275,  1277,  1280,
+  1283,  1286,  1290,  1292,  1294,  1296,  1299,  1302,  1304,  1305,
+  1307,  1312,  1316,  1318,  1321,  1324,  1328,  1334,  1340,  1344,
+  1348,  1352,  1356,  1360,  1366,  1372,  1376,  1380,  1384,  1388,
+  1390,  1393,  1396,  1400,  1404,  1405,  1407,  1411,  1416,  1423,
+  1428,  1432,  1435,  1440,  1447,  1452,  1456,  1459,  1461,  1465,
+  1467,  1471,  1474,  1477,  1478,  1480,  1483,  1485,  1488,  1489,
+  1492,  1493,  1496,  1502,  1508,  1512,  1518,  1523,  1527,  1531,
+  1537,  1539,  1541,  1547,  1551,  1555,  1557,  1563,  1569,  1573,
+  1579,  1584,  1588,  1592,  1594,  1596,  1600,  1604,  1610,  1616,
+  1620,  1626,  1630,  1634,  1638,  1643,  1647,  1649,  1651,  1654,
+  1657,  1660,  1664,  1668,  1676,  1684,  1690,  1698,  1702,  1710,
+  1718,  1724,  1732,  1736,  1738,  1741,  1744,  1746,  1749,  1753,
+  1757,  1760,  1762,  1766,  1770,  1773,  1779,  1783,  1788,  1792,
+  1797,  1800,  1804,  1807,  1811,  1816,  1820,  1825,  1831,  1837,
+  1839,  1841,  1844,  1847,  1850,  1851,  1852,  1854,  1856,  1859,
+  1863,  1865,  1868,  1871,  1877,  1883,  1884,  1891,  1893,  1895,
+  1898,  1899,  1904,  1906,  1907,  1908,  1916,  1917,  1918,  1928,
+  1929,  1930,  1931,  1941,  1942,  1943,  1944,  1954,  1955,  1962,
+  1963,  1969,  1970,  1978,  1979,  1984,  1987,  1990,  1993,  1997,
+  2004,  2013,  2024,  2037,  2042,  2046,  2049,  2052,  2054,  2057,
+  2061,  2068,  2073,  2080,  2085,  2089,  2090,  2098,  2101,  2102,
+  2108,  2112,  2114,  2117,  2121,  2125,  2128,  2131,  2133,  2134,
+  2139,  2142,  2146,  2150,  2151,  2152,  2157,  2158,  2159,  2164,
+  2165,  2170,  2171,  2173,  2174,  2175,  2184,  2188,  2193,  2198,
+  2202,  2207,  2214,  2221,  2222,  2224,  2225,  2227,  2229,  2230,
+  2232,  2234,  2238,  2243,  2245,  2249,  2250,  2252,  2256,  2259,
+  2261,  2263,  2266,  2269,  2271,  2275,  2279,  2285,  2289,  2295,
+  2299,  2303,  2305,  2307,  2310,  2312,  2313,  2315,  2316,  2319,
+  2324,  2326,  2328,  2330,  2333,  2336,  2339,  2341,  2343,  2345,
+  2349,  2351,  2355,  2358,  2361,  2364,  2367,  2370,  2373,  2376,
+  2379,  2382,  2385,  2388,  2391,  2394,  2397,  2400,  2403,  2406,
+  2409,  2412,  2415,  2418,  2421,  2424,  2428,  2431,  2434,  2437,
+  2441,  2444,  2448,  2451,  2454,  2458
+};
+
+static const short yyrhs[] = {    -1,
+   110,     0,     0,   111,   114,     0,   110,   114,     0,     0,
+     0,   129,     0,   128,     0,   122,     0,   120,     0,    26,
+    82,   164,   103,   104,     0,   115,    49,   110,   105,     0,
+   115,    49,   105,     0,   115,   112,   129,   113,     0,   115,
+   112,   128,   113,     0,    96,     0,     0,    44,    64,   117,
+   118,    65,     0,   119,     0,   118,    50,   119,     0,   197,
+   138,     0,   197,   139,    54,   209,     0,   197,    48,   209,
+     0,   287,     0,    38,   121,   104,     0,     3,     0,   121,
+    50,     3,     0,     0,   116,   198,    49,   123,   104,     0,
+     0,   116,   199,    49,   124,   104,     0,     0,   116,   198,
+    54,   125,   104,     0,     0,   116,   199,    54,   126,   104,
+     0,   116,   198,   104,     0,   116,   199,   104,     0,   116,
+   228,   292,   179,   186,   127,     0,   116,   170,   169,   292,
+   179,   186,   127,     0,   116,   172,   169,   127,     0,   116,
+     1,   105,     0,   116,     1,   104,     0,    49,     0,    54,
+     0,   104,     0,    52,     0,    24,     0,   178,   104,     0,
+   172,   178,   104,     0,   172,   169,   104,     0,   170,   177,
+   104,     0,   170,   169,   104,     0,   172,   104,     0,   170,
+   104,     0,     1,   104,     0,     1,   105,     0,   104,     0,
+   130,   134,   241,     0,   130,   133,   134,   241,     0,   130,
+   165,   241,     0,   130,   133,   104,   165,   241,     0,   130,
+   133,   165,   241,     0,   170,   169,     1,     0,   172,   228,
+     1,     0,   228,     1,     0,   170,   169,   292,     0,   172,
+   228,   292,     0,   228,   292,     0,     4,    82,   285,   103,
+   223,   292,     0,   231,    82,   285,   103,   223,   292,     0,
+     4,    43,   223,   292,     0,   231,    43,   223,   292,     0,
+    95,     0,   170,    82,   285,   103,   223,   292,     0,   170,
+    43,   223,   292,     0,   170,   169,   292,     0,   172,    82,
+   285,   103,   223,   292,     0,   172,    43,   223,   292,     0,
+   172,   169,   292,     0,   228,   292,     0,    24,     3,     0,
+   132,     0,   132,    52,   190,     0,   132,    82,   153,   103,
+     0,   132,    43,     0,    54,   135,   136,     0,     0,     0,
+   137,     0,   136,    50,   137,     0,   136,     1,     0,    82,
+   153,   103,     0,    43,     0,   138,    82,   153,   103,     0,
+   138,    43,     0,   142,    82,   153,   103,     0,   142,    43,
+     0,   231,    82,   153,   103,     0,   231,    43,     0,   229,
+   138,    82,   153,   103,     0,   229,   138,    43,     0,     3,
+     0,     4,     0,    94,     0,   100,     0,    99,     0,   101,
+     0,     3,     0,     4,     0,    94,     0,   106,   138,     0,
+   297,     0,   142,   143,   149,     0,    94,    64,   145,    65,
+     0,     4,    64,   145,    65,     0,    49,     0,    54,     0,
+     0,     0,   146,     0,   145,    50,   146,     0,   220,     0,
+   157,     0,     0,    98,   205,   148,   211,   212,   105,     0,
+     0,   147,     0,     0,   147,   150,     0,    69,     0,    68,
+     0,    74,     0,    75,     0,   107,     0,   153,     0,   157,
+     0,   157,     0,   153,    50,   157,     0,   153,    50,     1,
+     0,   158,     0,     0,    32,   155,   156,     0,    70,   156,
+     0,    60,   156,     0,   106,   156,     0,   151,   156,     0,
+    57,   138,     0,    12,   154,     0,    12,    82,   220,   103,
+     0,    28,   154,     0,    28,    82,   220,   103,     0,   162,
+   161,   220,     0,   162,   161,    82,   153,   103,   220,     0,
+   162,   161,   175,    82,   153,   103,     0,   162,   161,    82,
+   153,   103,   175,    82,   153,   103,     0,   162,   161,   175,
+    43,     0,   162,   161,    82,   153,   103,   175,    43,     0,
+   162,   161,   220,    52,   190,     0,   162,   161,    82,   153,
+   103,   220,    52,   190,     0,   162,   161,    82,   173,   221,
+   103,    83,   224,   108,     0,   162,   161,    82,   222,   221,
+   103,    83,   224,   108,     0,   162,   161,    82,   173,   221,
+   103,     0,   162,   161,    82,   153,   103,    82,   173,   221,
+   103,     0,   162,   161,    82,   222,   221,   103,     0,   162,
+   161,    82,   153,   103,    82,   222,   221,   103,     0,   162,
+   161,    48,     0,   162,   161,    82,   153,   103,    48,     0,
+   163,   156,     0,   163,    83,   108,   156,     0,   163,    83,
+   152,   108,   156,     0,   154,     0,    82,   220,   103,   157,
+     0,    82,   220,   103,    49,   191,   195,   105,     0,    29,
+    82,   152,   103,     0,    30,    82,   152,   103,     0,    30,
+    82,     4,   103,     0,   156,     0,   157,    68,   157,     0,
+   157,    69,   157,     0,   157,    70,   157,     0,   157,    71,
+   157,     0,   157,    72,   157,     0,   157,    66,   157,     0,
+   157,    67,   157,     0,   157,    63,   157,     0,   157,    64,
+   157,     0,   157,    65,   157,     0,   157,    62,   157,     0,
+   157,    61,   157,     0,   157,    60,   157,     0,   157,    58,
+   157,     0,   157,    59,   157,     0,   157,    57,   157,     0,
+   157,    56,   157,     0,   157,    53,   280,    54,   157,     0,
+   157,    52,   157,     0,   157,    51,   157,     0,   158,    81,
+   157,     0,   167,   157,     0,     3,     0,   297,     0,     9,
+     0,   164,     0,    82,   152,   103,     0,    82,     1,   103,
+     0,     0,    82,   159,   242,   103,     0,     0,   158,    82,
+   153,   103,   160,   150,     0,   158,    43,     0,   158,    83,
+   152,   108,     0,   166,   140,     0,   166,   229,   140,     0,
+   158,    74,     0,   158,    75,     0,    39,     0,     8,    82,
+   153,   103,     0,   175,    82,   153,   103,     0,   175,    43,
+     0,    45,   175,    82,   153,   103,     0,    45,   175,    43,
+     0,    45,     3,     0,    45,   297,     0,   229,   140,     0,
+   229,   140,    82,   153,   103,     0,   229,   140,    43,     0,
+   166,   140,    82,   153,   103,     0,   166,   140,    43,     0,
+   166,   229,   140,    82,   153,   103,     0,   166,   229,   140,
+    43,     0,    37,     0,    37,    49,   153,   105,     0,    37,
+    41,     0,    37,    41,    82,   164,   103,     0,     0,    45,
+     0,    36,     0,    45,   163,     0,    10,     0,   164,    10,
+     0,     0,   158,    80,     0,   158,    78,     0,   158,    79,
+     0,   170,   177,   104,     0,   170,   169,   104,     0,   172,
+   178,   104,     0,   172,   169,   104,     0,   170,   104,     0,
+   172,   104,     0,   226,     0,   228,     0,    46,   226,     0,
+    46,   228,     0,   175,     0,   172,   175,     0,   175,   171,
+     0,   172,   175,   171,     0,   176,     0,     6,     0,   171,
+   176,     0,   171,     6,     0,     8,     0,     6,     0,   172,
+     8,     0,   172,     6,     0,   175,     0,   222,   175,     0,
+   175,   174,     0,   222,   175,   174,     0,   176,     0,   174,
+   176,     0,   192,     0,     7,     0,     4,     0,   231,     0,
+    27,    82,   152,   103,     0,    27,    82,   220,   103,     0,
+   141,     0,     7,     0,     8,     0,   192,     0,   180,     0,
+   177,    50,   182,     0,   184,     0,   178,    50,   182,     0,
+     0,    26,    82,   164,   103,     0,     0,   169,   292,   179,
+   186,    52,   181,   190,     0,   169,   292,   179,   186,     0,
+     0,   169,   292,   179,   186,    52,   183,   190,     0,   169,
+   292,   179,   186,     0,     0,   228,   292,   179,   186,    52,
+   185,   190,     0,   228,   292,   179,   186,     0,     0,    31,
+    82,    82,   187,   103,   103,     0,   188,     0,   187,    50,
+   188,     0,     3,     0,     3,    82,     9,   103,     0,     3,
+    82,     3,    50,     9,    50,     9,   103,     0,   138,     0,
+   189,    50,   138,     0,   157,     0,    49,   105,     0,    49,
+   191,   105,     0,    49,   191,    50,   105,     0,     1,     0,
+   190,     0,   191,    50,   190,     0,    83,   157,   108,   190,
+     0,   191,    50,    20,   157,    54,   190,     0,   138,    54,
+   190,     0,   191,    50,   138,    54,   190,     0,     0,    13,
+   138,    49,   193,   218,   196,   105,     0,    13,   138,    49,
+   105,     0,     0,    13,    49,   194,   218,   196,   105,     0,
+    13,    49,   105,     0,    13,   138,     0,   204,   211,   212,
+   105,     0,   204,     0,     0,    50,     0,     0,    50,     0,
+    34,     0,    41,    34,     0,    41,    82,   164,   103,    34,
+     0,   197,     6,     0,   197,     7,     0,   197,     8,     0,
+   197,    34,     0,   197,   138,     0,   197,   142,     0,   197,
+    48,     0,   197,   142,    49,     0,   197,   142,    54,     0,
+   197,   139,     0,     0,   198,   201,   205,     0,     0,   199,
+   202,   205,     0,   197,    49,     0,   203,     0,   200,     0,
+     0,    54,     0,    54,   206,     0,   207,     0,   206,    50,
+   207,     0,   209,     0,   208,     0,   210,   209,     0,   210,
+   208,     0,   209,     5,     0,   142,   144,   149,     0,   138,
+     0,    35,     0,     6,     0,   210,    35,     0,   210,     6,
+     0,    49,     0,     0,   213,     0,   212,    35,    54,   213,
+     0,   212,    35,    54,     0,   214,     0,   213,   214,     0,
+   213,   104,     0,   170,   215,   104,     0,   170,    82,   285,
+   103,   104,     0,   170,    82,   285,   103,   105,     0,   170,
+    43,   104,     0,   170,    43,   105,     0,   172,   215,   104,
+     0,   172,   169,   104,     0,   172,   215,   105,     0,   172,
+    82,   285,   103,   104,     0,   172,    82,   285,   103,   105,
+     0,   172,    43,   104,     0,   172,    43,   105,     0,    54,
+   157,   104,     0,    54,   157,   105,     0,     1,     0,   131,
+    54,     0,   131,    49,     0,   228,   292,   104,     0,   228,
+   292,   105,     0,     0,   216,     0,   215,    50,   217,     0,
+   169,   292,   179,   186,     0,   169,   292,   179,   186,    52,
+   190,     0,     3,    54,   157,   186,     0,    48,   157,   186,
+     0,    54,   157,     0,   169,   292,   179,   186,     0,   169,
+   292,   179,   186,    52,   190,     0,     3,    54,   157,   186,
+     0,    48,   157,   186,     0,    54,   157,     0,   219,     0,
+   218,    50,   219,     0,   138,     0,   138,    52,   157,     0,
+   173,   221,     0,   222,   221,     0,     0,   232,     0,    46,
+   232,     0,     8,     0,   222,     8,     0,     0,   223,     8,
+     0,     0,   225,   152,     0,   226,    82,   153,   103,   223,
+     0,   226,    82,   285,   103,   223,     0,   226,    43,   223,
+     0,   226,    82,     1,   103,   223,     0,   226,    83,   224,
+   108,     0,   226,    83,   108,     0,    82,   227,   103,     0,
+    82,    70,   223,   226,   103,     0,    77,     0,   234,     0,
+    82,    60,   223,   226,   103,     0,    70,   223,   226,     0,
+    60,   223,   226,     0,     4,     0,   227,    82,   153,   103,
+   223,     0,   227,    82,   285,   103,   223,     0,   227,    43,
+   223,     0,   227,    82,     1,   103,   223,     0,   227,    83,
+   224,   108,     0,   227,    83,   108,     0,    82,   227,   103,
+     0,    77,     0,   234,     0,    70,   223,   226,     0,    60,
+   223,   226,     0,   228,    82,   153,   103,   223,     0,   228,
+    82,   285,   103,   223,     0,   228,    43,   223,     0,   228,
+    82,     1,   103,   223,     0,    82,   228,   103,     0,    70,
+   223,   228,     0,    60,   223,   228,     0,   228,    83,   224,
+   108,     0,   228,    83,   108,     0,     3,     0,   297,     0,
+   106,     4,     0,   106,     3,     0,   106,    94,     0,   229,
+   289,   228,     0,   229,   289,     4,     0,   229,   289,     4,
+    82,   153,   103,   223,     0,   229,   289,     4,    82,   285,
+   103,   223,     0,   229,   289,     4,    43,   223,     0,   229,
+   289,     4,    82,     1,   103,   223,     0,   229,   289,    94,
+     0,   229,   289,    94,    82,   153,   103,   223,     0,   229,
+   289,    94,    82,   285,   103,   223,     0,   229,   289,    94,
+    43,   223,     0,   229,   289,    94,    82,     1,   103,   223,
+     0,    45,   289,   228,     0,   230,     0,   141,    45,     0,
+     4,    45,     0,     5,     0,   141,     5,     0,    82,   232,
+   103,     0,    70,   223,   232,     0,    70,   223,     0,    77,
+     0,    82,   233,   103,     0,    60,   223,   232,     0,    60,
+   223,     0,   232,    82,   285,   103,   223,     0,   232,    43,
+   223,     0,   232,    83,   224,   108,     0,   232,    83,   108,
+     0,    82,   285,   103,   223,     0,    43,   223,     0,    83,
+   224,   108,     0,    83,   108,     0,   229,    70,   223,     0,
+   229,    70,   223,   232,     0,   229,    60,   223,     0,   229,
+    60,   223,   232,     0,   229,   289,    70,   223,   226,     0,
+   229,   289,    60,   223,   226,     0,   245,     0,   236,     0,
+   235,   245,     0,   235,   236,     0,     1,   104,     0,     0,
+     0,   239,     0,   240,     0,   239,   240,     0,    33,   189,
+   104,     0,   242,     0,     1,   242,     0,    49,   105,     0,
+    49,   237,   238,   235,   105,     0,    49,   237,   238,     1,
+   105,     0,     0,    14,    82,   152,   103,   244,   245,     0,
+   242,     0,   168,     0,   152,   104,     0,     0,   243,    15,
+   246,   245,     0,   243,     0,     0,     0,    16,   247,    82,
+   152,   103,   248,   245,     0,     0,     0,    17,   249,   245,
+    16,   250,    82,   152,   103,   104,     0,     0,     0,     0,
+   277,   251,   280,   104,   252,   280,   103,   253,   245,     0,
+     0,     0,     0,   278,   254,   280,   104,   255,   280,   103,
+   256,   245,     0,     0,    19,    82,   152,   103,   257,   245,
+     0,     0,    20,   152,    54,   258,   245,     0,     0,    20,
+   152,    55,   152,    54,   259,   245,     0,     0,    21,    54,
+   260,   245,     0,    22,   104,     0,    23,   104,     0,    24,
+   104,     0,    24,   152,   104,     0,    26,   279,    82,   164,
+   103,   104,     0,    26,   279,    82,   164,    54,   281,   103,
+   104,     0,    26,   279,    82,   164,    54,   281,    54,   281,
+   103,   104,     0,    26,   279,    82,   164,    54,   281,    54,
+   281,    54,   284,   103,   104,     0,    25,    70,   152,   104,
+     0,    25,   138,   104,     0,   264,   245,     0,   264,   105,
+     0,   104,     0,    92,   104,     0,    92,   152,   104,     0,
+    90,   293,    82,   153,   103,   104,     0,    90,   293,    43,
+   104,     0,    84,   293,    82,   153,   103,   104,     0,    84,
+   293,    43,   104,     0,    84,   138,   104,     0,     0,   263,
+    88,   138,    49,   261,   271,   105,     0,   263,     1,     0,
+     0,   267,   268,   268,   262,   275,     0,   263,    86,   295,
+     0,   263,     0,   265,   105,     0,   265,   235,   105,     0,
+   265,     1,   105,     0,     3,    54,     0,    94,    54,     0,
+    48,     0,     0,    87,    49,   266,   237,     0,   269,   105,
+     0,   269,   235,   105,     0,   269,     1,   105,     0,     0,
+     0,    91,    49,   270,   237,     0,     0,     0,   271,   293,
+   272,   242,     0,     0,   271,    21,   273,   242,     0,     0,
+   138,     0,     0,     0,   275,    89,    82,   220,   274,   103,
+   276,   242,     0,    18,    82,   104,     0,    18,    82,   152,
+   104,     0,    18,    82,    49,   105,     0,    18,    82,   168,
+     0,    18,    82,     1,   104,     0,    18,    82,    49,   237,
+   235,   105,     0,    18,    82,    49,   237,     1,   105,     0,
+     0,     8,     0,     0,   152,     0,     1,     0,     0,   282,
+     0,   283,     0,   282,    50,   283,     0,    10,    82,   152,
+   103,     0,    10,     0,   284,    50,    10,     0,     0,   286,
+     0,   286,    50,    11,     0,   286,    11,     0,    11,     0,
+    93,     0,   286,    93,     0,   286,    54,     0,   287,     0,
+   287,    52,   190,     0,   286,    50,   287,     0,   286,    50,
+   287,    52,   190,     0,   286,    50,   291,     0,   286,    50,
+   291,    52,   190,     0,   170,   290,   288,     0,   172,   290,
+   288,     0,   221,     0,   228,     0,    46,   228,     0,   223,
+     0,     0,   288,     0,     0,    85,   295,     0,    92,    82,
+   296,   103,     0,    97,     0,     3,     0,     4,     0,    45,
+     3,     0,    45,     4,     0,   229,     3,     0,   231,     0,
+   220,     0,   293,     0,   295,    50,   293,     0,   294,     0,
+   296,    50,   294,     0,    40,    70,     0,    40,    71,     0,
+    40,    72,     0,    40,    68,     0,    40,    69,     0,    40,
+    60,     0,    40,    58,     0,    40,    59,     0,    40,   106,
+     0,    40,    50,     0,    40,    63,     0,    40,    64,     0,
+    40,    65,     0,    40,    62,     0,    40,    51,     0,    40,
+    52,     0,    40,    66,     0,    40,    67,     0,    40,    74,
+     0,    40,    75,     0,    40,    57,     0,    40,    56,     0,
+    40,   107,     0,    40,    53,    54,     0,    40,    61,     0,
+    40,    78,     0,    40,    79,     0,    40,    42,   223,     0,
+    40,    43,     0,    40,    83,   108,     0,    40,    37,     0,
+    40,    36,     0,    40,   173,   221,     0,    40,     1,     0
+};
+
+#if YYDEBUG != 0
+static const short yyrline[] = { 0,
+   278,   279,   287,   289,   290,   294,   299,   303,   306,   308,
+   310,   311,   316,   318,   320,   323,   328,   333,   336,   340,
+   343,   347,   360,   367,   374,   377,   380,   382,   386,   392,
+   392,   395,   395,   398,   398,   411,   411,   416,   421,   436,
+   458,   467,   468,   471,   472,   473,   474,   475,   478,   484,
+   487,   492,   498,   505,   507,   525,   526,   527,   530,   544,
+   557,   560,   563,   566,   568,   570,   574,   580,   585,   590,
+   595,   600,   605,   610,   616,   626,   635,   642,   651,   660,
+   667,   676,   684,   686,   688,   690,   694,   703,   726,   729,
+   731,   732,   735,   742,   749,   753,   755,   757,   759,   761,
+   763,   767,   773,   775,   776,   779,   781,   782,   785,   787,
+   788,   792,   793,   796,   818,   821,   825,   829,   830,   834,
+   839,   842,   846,   849,   852,   884,   904,   907,   911,   914,
+   918,   920,   922,   924,   926,   930,   933,   936,   939,   941,
+   945,   952,   955,   958,   960,   962,   964,   970,   975,   988,
+   990,  1023,  1026,  1028,  1030,  1032,  1034,  1036,  1038,  1040,
+  1048,  1058,  1061,  1063,  1065,  1067,  1070,  1072,  1075,  1103,
+  1122,  1147,  1149,  1152,  1167,  1169,  1171,  1182,  1184,  1186,
+  1188,  1190,  1192,  1194,  1196,  1198,  1200,  1202,  1204,  1206,
+  1208,  1210,  1212,  1214,  1216,  1218,  1220,  1222,  1229,  1232,
+  1247,  1250,  1265,  1266,  1268,  1270,  1272,  1280,  1295,  1300,
+  1307,  1318,  1368,  1370,  1386,  1388,  1392,  1415,  1459,  1461,
+  1463,  1465,  1467,  1503,  1510,  1512,  1514,  1516,  1519,  1522,
+  1524,  1566,  1568,  1573,  1575,  1579,  1582,  1586,  1588,  1596,
+  1598,  1602,  1611,  1626,  1632,  1635,  1642,  1650,  1653,  1660,
+  1665,  1672,  1674,  1675,  1677,  1685,  1688,  1690,  1692,  1696,
+  1700,  1705,  1707,  1718,  1722,  1724,  1727,  1742,  1745,  1747,
+  1749,  1753,  1756,  1764,  1765,  1766,  1767,  1768,  1772,  1776,
+  1781,  1782,  1783,  1786,  1788,  1791,  1793,  1796,  1799,  1807,
+  1815,  1817,  1826,  1832,  1833,  1839,  1847,  1849,  1860,  1863,
+  1868,  1870,  1875,  1880,  1891,  1906,  1909,  1913,  1915,  1920,
+  1923,  1926,  1932,  1935,  1938,  1940,  1942,  1944,  1948,  1952,
+  1956,  1959,  1962,  1966,  1969,  1973,  2028,  2043,  2045,  2048,
+  2050,  2055,  2056,  2058,  2060,  2063,  2066,  2069,  2074,  2077,
+  2079,  2081,  2087,  2091,  2096,  2101,  2108,  2113,  2122,  2127,
+  2127,  2129,  2132,  2134,  2138,  2140,  2144,  2149,  2153,  2157,
+  2163,  2172,  2186,  2189,  2191,  2195,  2221,  2230,  2256,  2259,
+  2261,  2263,  2266,  2269,  2272,  2277,  2342,  2344,  2348,  2350,
+  2354,  2357,  2359,  2363,  2365,  2369,  2371,  2375,  2377,  2381,
+  2386,  2388,  2390,  2392,  2398,  2401,  2402,  2413,  2418,  2422,
+  2426,  2430,  2435,  2439,  2442,  2445,  2448,  2456,  2458,  2462,
+  2465,  2469,  2472,  2476,  2479,  2480,  2484,  2487,  2491,  2494,
+  2502,  2504,  2508,  2511,  2513,  2515,  2517,  2519,  2521,  2523,
+  2525,  2527,  2528,  2530,  2532,  2534,  2537,  2540,  2542,  2544,
+  2546,  2548,  2550,  2552,  2554,  2555,  2557,  2564,  2567,  2569,
+  2571,  2573,  2575,  2577,  2579,  2581,  2583,  2587,  2590,  2596,
+  2598,  2600,  2609,  2611,  2613,  2615,  2617,  2620,  2622,  2624,
+  2626,  2628,  2630,  2634,  2642,  2659,  2662,  2663,  2684,  2689,
+  2691,  2693,  2695,  2697,  2699,  2701,  2703,  2705,  2707,  2709,
+  2711,  2713,  2715,  2719,  2727,  2734,  2741,  2750,  2758,  2771,
+  2773,  2774,  2775,  2778,  2785,  2797,  2799,  2804,  2806,  2809,
+  2823,  2826,  2829,  2831,  2837,  2845,  2851,  2854,  2857,  2862,
+  2875,  2879,  2882,  2886,  2890,  2894,  2898,  2903,  2906,  2912,
+  2917,  2920,  2926,  2933,  2937,  2940,  2947,  2963,  2971,  2975,
+  3025,  3025,  3104,  3104,  3120,  3120,  3124,  3128,  3131,  3136,
+  3143,  3152,  3161,  3170,  3173,  3179,  3181,  3185,  3189,  3190,
+  3191,  3194,  3197,  3200,  3203,  3206,  3219,  3248,  3258,  3272,
+  3300,  3332,  3344,  3352,  3357,  3364,  3372,  3374,  3381,  3383,
+  3383,  3391,  3396,  3403,  3404,  3406,  3406,  3409,  3430,  3446,
+  3465,  3483,  3486,  3488,  3491,  3510,  3528,  3531,  3533,  3537,
+  3540,  3542,  3544,  3550,  3555,  3561,  3564,  3565,  3571,  3573,
+  3576,  3578,  3582,  3587,  3590,  3599,  3606,  3611,  3616,  3620,
+  3627,  3631,  3635,  3649,  3652,  3654,  3656,  3658,  3660,  3668,
+  3684,  3689,  3690,  3691,  3695,  3699,  3717,  3725,  3728,  3730,
+  3734,  3737,  3739,  3741,  3743,  3745,  3747,  3750,  3755,  3757,
+  3764,  3766,  3773,  3776,  3778,  3780,  3782,  3784,  3786,  3788,
+  3790,  3792,  3794,  3796,  3798,  3800,  3802,  3804,  3813,  3815,
+  3817,  3819,  3821,  3823,  3825,  3827,  3829,  3831,  3843,  3855,
+  3886,  3898,  3910,  3923,  3939,  3941
+};
+
+static const char * const yytname[] = {   "$","error","$illegal.","IDENTIFIER",
+"TYPENAME","SCOPED_TYPENAME","SCSPEC","TYPESPEC","TYPE_QUAL","CONSTANT","STRING",
+"ELLIPSIS","SIZEOF","ENUM","IF","ELSE","WHILE","DO","FOR","SWITCH","CASE","DEFAULT",
+"BREAK","CONTINUE","RETURN","GOTO","ASM_KEYWORD","TYPEOF","ALIGNOF","HEADOF",
+"CLASSOF","ATTRIBUTE","EXTENSION","LABEL","AGGR","VISSPEC","DELETE","NEW","OVERLOAD",
+"THIS","OPERATOR","DYNAMIC","POINTSAT_LEFT_RIGHT","LEFT_RIGHT","TEMPLATE","SCOPE",
+"START_DECLARATOR","EMPTY","TYPENAME_COLON","'{'","','","ASSIGN","'='","'?'",
+"':'","RANGE","OROR","ANDAND","'|'","'^'","'&'","MIN_MAX","EQCOMPARE","ARITHCOMPARE",
+"'<'","'>'","LSHIFT","RSHIFT","'+'","'-'","'*'","'/'","'%'","UNARY","PLUSPLUS",
+"MINUSMINUS","HYPERUNARY","PAREN_STAR_PAREN","POINTSAT","POINTSAT_STAR","'.'",
+"DOT_STAR","'('","'['","RAISE","RAISES","RERAISE","TRY","EXCEPT","CATCH","THROW",
+"ANSI_TRY","ANSI_THROW","TYPENAME_ELLIPSIS","PTYPENAME","PRE_PARSED_FUNCTION_DECL",
+"EXTERN_LANG_STRING","ALL","PRE_PARSED_CLASS_DECL","TYPENAME_DEFN","IDENTIFIER_DEFN",
+"PTYPENAME_DEFN","END_OF_SAVED_INPUT","')'","';'","'}'","'~'","'!'","']'","program",
+"extdefs","@1",".hush_warning",".warning_ok","extdef","extern_lang_string","template_header",
+"@2","template_parm_list","template_parm","overloaddef","ov_identifiers","template_def",
+"@3","@4","@5","@6","fn_tmpl_end","datadef","fndef","fn.def1","fn.def2","return_id",
+"return_init","base_init",".set_base_init","member_init_list","member_init",
+"identifier","identifier_defn","identifier_or_opname","template_type","template_type_name",
+"tmpl.1","tmpl.2","template_arg_list","template_arg","template_instantiate_once",
+"@7","template_instantiation","template_instantiate_some","unop","expr","nonnull_exprlist",
+"unary_expr","@8","cast_expr","expr_no_commas","primary","@9","@10","new",".scope",
+"delete","string","nodecls","object","object_star","decl","declarator","typed_declspecs",
+"reserved_declspecs","declmods","typed_typespecs","reserved_typespecquals","typespec",
+"typespecqual_reserved","initdecls","notype_initdecls","maybeasm","initdcl0",
+"@11","initdcl","@12","notype_initdcl0","@13","maybe_attribute","attribute_list",
+"attrib","identifiers_or_typenames","init","initlist","structsp","@14","@15",
+"maybecomma","maybecomma_warn","aggr","named_class_head_sans_basetype","named_class_head_sans_basetype_defn",
+"named_class_head","@16","@17","unnamed_class_head","class_head","maybe_base_class_list",
+"base_class_list","base_class","scoped_base_class","base_class.1","base_class_visibility_list",
+"left_curly","opt.component_decl_list","component_decl_list","component_decl",
+"components","component_declarator0","component_declarator","enumlist","enumerator",
+"typename","absdcl","nonempty_type_quals","type_quals","nonmomentary_expr","@18",
+"after_type_declarator","after_type_declarator_no_typename","notype_declarator",
+"scoped_id","typename_scope","scoped_typename","absdcl1","abs_member_declarator",
+"after_type_member_declarator","stmts","errstmt",".pushlevel","maybe_label_decls",
+"label_decls","label_decl","compstmt_or_error","compstmt","simple_if","@19",
+"stmt","@20","@21","@22","@23","@24","@25","@26","@27","@28","@29","@30","@31",
+"@32","@33","@34","@35","@36","try","label_colon","try_head","@37","ansi_try",
+"ansi_dummy","ansi_try_head","@38","except_stmts","@39","@40","optional_identifier",
+"ansi_except_stmts","@41","forhead.1","forhead.2","maybe_type_qual","xexpr",
+"asm_operands","nonnull_asm_operands","asm_operand","asm_clobbers","parmlist",
+"parms","parm","abs_or_notype_decl","see_typename","dont_see_typename","bad_parm",
+"maybe_raises","raise_identifier","ansi_raise_identifier","raise_identifiers",
+"ansi_raise_identifiers","operator_name",""
+};
+#endif
+
+static const short yyr1[] = {     0,
+   109,   109,   111,   110,   110,   112,   113,   114,   114,   114,
+   114,   114,   114,   114,   114,   114,   115,   117,   116,   118,
+   118,   119,   119,   119,   119,   120,   121,   121,   123,   122,
+   124,   122,   125,   122,   126,   122,   122,   122,   122,   122,
+   122,   122,   122,   127,   127,   127,   127,   127,   128,   128,
+   128,   128,   128,   128,   128,   128,   128,   128,   129,   129,
+   129,   129,   129,   129,   129,   129,   130,   130,   130,   130,
+   130,   130,   130,   130,   131,   131,   131,   131,   131,   131,
+   131,   132,   133,   133,   133,   133,   134,   135,   136,   136,
+   136,   136,   137,   137,   137,   137,   137,   137,   137,   137,
+   137,   137,   138,   138,   138,   139,   139,   139,   140,   140,
+   140,   140,   140,   141,   142,   142,   143,   143,   143,   144,
+   145,   145,   146,   146,   148,   147,   149,   149,   150,   150,
+   151,   151,   151,   151,   151,   152,   152,   153,   153,   153,
+   154,   155,   154,   154,   154,   154,   154,   154,   154,   154,
+   154,   154,   154,   154,   154,   154,   154,   154,   154,   154,
+   154,   154,   154,   154,   154,   154,   154,   154,   154,   154,
+   154,   156,   156,   156,   156,   156,   156,   157,   157,   157,
+   157,   157,   157,   157,   157,   157,   157,   157,   157,   157,
+   157,   157,   157,   157,   157,   157,   157,   157,   157,   157,
+   158,   158,   158,   158,   158,   158,   159,   158,   160,   158,
+   158,   158,   158,   158,   158,   158,   158,   158,   158,   158,
+   158,   158,   158,   158,   158,   158,   158,   158,   158,   158,
+   158,   161,   161,   161,   161,   162,   162,   163,   163,   164,
+   164,   165,   166,   166,   167,   168,   168,   168,   168,   168,
+   168,   169,   169,   169,   169,   170,   170,   170,   170,   171,
+   171,   171,   171,   172,   172,   172,   172,   173,   173,   173,
+   173,   174,   174,   175,   175,   175,   175,   175,   175,   175,
+   176,   176,   176,   177,   177,   178,   178,   179,   179,   181,
+   180,   180,   183,   182,   182,   185,   184,   184,   186,   186,
+   187,   187,   188,   188,   188,   189,   189,   190,   190,   190,
+   190,   190,   191,   191,   191,   191,   191,   191,   193,   192,
+   192,   194,   192,   192,   192,   192,   192,   195,   195,   196,
+   196,   197,   197,   197,   197,   197,   197,   197,   198,   198,
+   198,   198,   198,   199,   201,   200,   202,   200,   203,   204,
+   204,   205,   205,   205,   206,   206,   207,   207,   207,   207,
+   208,   209,   209,   210,   210,   210,   210,   211,   212,   212,
+   212,   212,   213,   213,   213,   214,   214,   214,   214,   214,
+   214,   214,   214,   214,   214,   214,   214,   214,   214,   214,
+   214,   214,   214,   214,   215,   215,   215,   216,   216,   216,
+   216,   216,   217,   217,   217,   217,   217,   218,   218,   219,
+   219,   220,   220,   221,   221,   221,   222,   222,   223,   223,
+   225,   224,   226,   226,   226,   226,   226,   226,   226,   226,
+   226,   226,   226,   226,   226,   226,   227,   227,   227,   227,
+   227,   227,   227,   227,   227,   227,   227,   228,   228,   228,
+   228,   228,   228,   228,   228,   228,   228,   228,   228,   228,
+   228,   228,   228,   228,   228,   228,   228,   228,   228,   228,
+   228,   228,   228,   229,   229,   230,   231,   231,   232,   232,
+   232,   232,   232,   232,   232,   232,   232,   232,   232,   232,
+   232,   232,   232,   233,   233,   233,   233,   234,   234,   235,
+   235,   235,   235,   236,   237,   238,   238,   239,   239,   240,
+   241,   241,   242,   242,   242,   244,   243,   245,   245,   245,
+   246,   245,   245,   247,   248,   245,   249,   250,   245,   251,
+   252,   253,   245,   254,   255,   256,   245,   257,   245,   258,
+   245,   259,   245,   260,   245,   245,   245,   245,   245,   245,
+   245,   245,   245,   245,   245,   245,   245,   245,   245,   245,
+   245,   245,   245,   245,   245,   261,   245,   245,   262,   245,
+   245,   245,   263,   263,   263,   264,   264,   264,   266,   265,
+   267,   267,   267,   268,   270,   269,   271,   272,   271,   273,
+   271,   274,   274,   275,   276,   275,   277,   277,   277,   278,
+   278,   278,   278,   279,   279,   280,   280,   280,   281,   281,
+   282,   282,   283,   284,   284,   285,   285,   285,   285,   285,
+   285,   285,   285,   286,   286,   286,   286,   286,   286,   287,
+   287,   288,   288,   288,   289,   290,   291,   292,   292,   292,
+   293,   293,   293,   293,   293,   293,   293,   294,   295,   295,
+   296,   296,   297,   297,   297,   297,   297,   297,   297,   297,
+   297,   297,   297,   297,   297,   297,   297,   297,   297,   297,
+   297,   297,   297,   297,   297,   297,   297,   297,   297,   297,
+   297,   297,   297,   297,   297,   297
+};
+
+static const short yyr2[] = {     0,
+     0,     1,     0,     2,     2,     0,     0,     1,     1,     1,
+     1,     5,     4,     3,     4,     4,     1,     0,     5,     1,
+     3,     2,     4,     3,     1,     3,     1,     3,     0,     5,
+     0,     5,     0,     5,     0,     5,     3,     3,     6,     7,
+     4,     3,     3,     1,     1,     1,     1,     1,     2,     3,
+     3,     3,     3,     2,     2,     2,     2,     1,     3,     4,
+     3,     5,     4,     3,     3,     2,     3,     3,     2,     6,
+     6,     4,     4,     1,     6,     4,     3,     6,     4,     3,
+     2,     2,     1,     3,     4,     2,     3,     0,     0,     1,
+     3,     2,     3,     1,     4,     2,     4,     2,     4,     2,
+     5,     3,     1,     1,     1,     1,     1,     1,     1,     1,
+     1,     2,     1,     3,     4,     4,     1,     1,     0,     0,
+     1,     3,     1,     1,     0,     6,     0,     1,     0,     2,
+     1,     1,     1,     1,     1,     1,     1,     1,     3,     3,
+     1,     0,     3,     2,     2,     2,     2,     2,     2,     4,
+     2,     4,     3,     6,     6,     9,     4,     7,     5,     8,
+     9,     9,     6,     9,     6,     9,     3,     6,     2,     4,
+     5,     1,     4,     7,     4,     4,     4,     1,     3,     3,
+     3,     3,     3,     3,     3,     3,     3,     3,     3,     3,
+     3,     3,     3,     3,     3,     5,     3,     3,     3,     2,
+     1,     1,     1,     1,     3,     3,     0,     4,     0,     6,
+     2,     4,     2,     3,     2,     2,     1,     4,     4,     2,
+     5,     3,     2,     2,     2,     5,     3,     5,     3,     6,
+     4,     1,     4,     2,     5,     0,     1,     1,     2,     1,
+     2,     0,     2,     2,     2,     3,     3,     3,     3,     2,
+     2,     1,     1,     2,     2,     1,     2,     2,     3,     1,
+     1,     2,     2,     1,     1,     2,     2,     1,     2,     2,
+     3,     1,     2,     1,     1,     1,     1,     4,     4,     1,
+     1,     1,     1,     1,     3,     1,     3,     0,     4,     0,
+     7,     4,     0,     7,     4,     0,     7,     4,     0,     6,
+     1,     3,     1,     4,     8,     1,     3,     1,     2,     3,
+     4,     1,     1,     3,     4,     6,     3,     5,     0,     7,
+     4,     0,     6,     3,     2,     4,     1,     0,     1,     0,
+     1,     1,     2,     5,     2,     2,     2,     2,     2,     2,
+     2,     3,     3,     2,     0,     3,     0,     3,     2,     1,
+     1,     0,     1,     2,     1,     3,     1,     1,     2,     2,
+     2,     3,     1,     1,     1,     2,     2,     1,     0,     1,
+     4,     3,     1,     2,     2,     3,     5,     5,     3,     3,
+     3,     3,     3,     5,     5,     3,     3,     3,     3,     1,
+     2,     2,     3,     3,     0,     1,     3,     4,     6,     4,
+     3,     2,     4,     6,     4,     3,     2,     1,     3,     1,
+     3,     2,     2,     0,     1,     2,     1,     2,     0,     2,
+     0,     2,     5,     5,     3,     5,     4,     3,     3,     5,
+     1,     1,     5,     3,     3,     1,     5,     5,     3,     5,
+     4,     3,     3,     1,     1,     3,     3,     5,     5,     3,
+     5,     3,     3,     3,     4,     3,     1,     1,     2,     2,
+     2,     3,     3,     7,     7,     5,     7,     3,     7,     7,
+     5,     7,     3,     1,     2,     2,     1,     2,     3,     3,
+     2,     1,     3,     3,     2,     5,     3,     4,     3,     4,
+     2,     3,     2,     3,     4,     3,     4,     5,     5,     1,
+     1,     2,     2,     2,     0,     0,     1,     1,     2,     3,
+     1,     2,     2,     5,     5,     0,     6,     1,     1,     2,
+     0,     4,     1,     0,     0,     7,     0,     0,     9,     0,
+     0,     0,     9,     0,     0,     0,     9,     0,     6,     0,
+     5,     0,     7,     0,     4,     2,     2,     2,     3,     6,
+     8,    10,    12,     4,     3,     2,     2,     1,     2,     3,
+     6,     4,     6,     4,     3,     0,     7,     2,     0,     5,
+     3,     1,     2,     3,     3,     2,     2,     1,     0,     4,
+     2,     3,     3,     0,     0,     4,     0,     0,     4,     0,
+     4,     0,     1,     0,     0,     8,     3,     4,     4,     3,
+     4,     6,     6,     0,     1,     0,     1,     1,     0,     1,
+     1,     3,     4,     1,     3,     0,     1,     3,     2,     1,
+     1,     2,     2,     1,     3,     3,     5,     3,     5,     3,
+     3,     1,     1,     2,     1,     0,     1,     0,     2,     4,
+     1,     1,     1,     2,     2,     2,     1,     1,     1,     3,
+     1,     3,     2,     2,     2,     2,     2,     2,     2,     2,
+     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+     2,     2,     2,     2,     2,     3,     2,     2,     2,     3,
+     2,     3,     2,     2,     3,     2
+};
+
+static const short yydefact[] = {     3,
+     0,     0,     0,   457,   276,   477,   265,   275,   264,     0,
+     0,     0,   332,     0,     0,     0,     0,   419,   419,   419,
+     0,     0,    74,    17,    58,     0,     5,     6,     0,    11,
+    10,     9,     8,   242,   280,   119,     0,     0,   256,     0,
+   286,   274,     0,   345,   347,   351,   350,   327,     0,   419,
+   474,   277,   458,     4,    56,    57,   419,   476,   236,   616,
+   103,   104,   322,   105,   325,     0,   236,    27,     0,   686,
+   276,   417,   684,   683,   419,   681,   662,   667,   668,     0,
+   674,   673,   659,   660,   658,   677,   666,   663,   664,   665,
+   669,   670,   656,   657,   653,   654,   655,   671,   672,   678,
+   679,     0,   661,   675,   280,   414,   268,     0,   277,   333,
+     0,    18,   635,     0,     0,     0,     0,     0,     0,   236,
+   460,   459,   461,     3,     0,     0,   276,     0,     0,   345,
+   347,   638,     0,    88,    83,   242,     0,     0,   478,   475,
+   117,   118,   127,   436,     0,   419,   419,   431,     0,    55,
+     0,     0,   284,   252,   253,   419,   432,   276,   267,   266,
+    54,     0,   257,     0,     0,   261,   281,   282,   258,   260,
+   283,     0,    49,   104,   335,   336,   337,   338,   341,   349,
+   105,   107,   106,   108,   339,   344,   340,   352,   352,   368,
+     0,    66,   419,     0,   421,     0,     0,    69,     0,   419,
+   616,   638,   201,   417,   203,   240,   236,   236,     0,     0,
+   142,   238,   217,   237,     0,   236,   132,   131,   236,   133,
+   134,     0,   236,   135,     0,   121,   236,   172,   178,   124,
+   141,     0,   236,   204,     0,   236,   414,   268,   123,   414,
+     0,   202,   620,   621,   636,   636,     0,   617,   624,   324,
+     0,   319,     0,     0,   136,   137,     0,     0,    26,   680,
+   676,   682,   419,     0,   419,   419,   482,   616,   421,   685,
+   415,   270,   272,   418,   269,     0,     0,   420,   473,   454,
+   453,   452,     0,    14,     0,     7,     7,    43,    42,   638,
+     0,    29,    33,    37,    31,    35,    38,   288,    82,    89,
+    86,     0,   236,   242,     0,     0,     0,   505,    59,   511,
+    61,   352,   128,   114,   254,   255,     0,     0,   419,   419,
+   444,     0,     0,   445,    64,    53,    67,     0,    52,   419,
+     0,   421,     0,    51,   259,    50,    65,    68,   263,   262,
+   638,   287,   342,   343,   353,   346,   348,   390,   236,     0,
+   395,   395,     0,     0,   373,   638,   450,     0,   264,     0,
+   138,   256,     0,   456,     0,   236,   642,   643,     0,   641,
+     0,     0,   647,   649,   639,     0,     0,   299,   463,   468,
+   462,   638,     0,    72,   236,     0,     0,   149,   141,     0,
+     0,   151,   236,   236,   236,   223,     0,   239,     0,   224,
+   148,   145,   144,     0,     0,     0,     0,   146,   236,   116,
+   147,   236,   236,     0,   236,   236,   236,   236,   236,   236,
+   236,   236,   236,   236,   236,   236,   236,   236,   236,   236,
+   236,   211,   215,   216,   244,   245,   243,   236,   236,   236,
+   232,     0,   236,   169,   241,   109,   110,   111,     0,   213,
+     0,   113,   200,   412,   220,   236,   413,   110,   111,   225,
+   414,   414,   419,   619,   414,   623,   622,     0,   410,   330,
+   408,   321,     0,     0,   278,     0,   279,    28,   491,   416,
+   485,   481,     0,     0,     0,     0,   493,     0,   419,   616,
+   421,   273,   271,     0,     0,    20,     0,    25,   115,    13,
+    16,    15,   288,    48,    44,    47,    45,    46,    41,     0,
+     0,     0,     0,   299,   104,    94,   236,     0,    90,     0,
+   119,     0,     0,   312,     0,   308,    84,     0,     0,    60,
+    63,   512,   513,   506,   125,   435,   434,     0,     0,   419,
+   419,     0,   419,     0,   421,   429,   299,   285,   425,     0,
+     0,     0,   428,     0,   419,   419,   288,   365,   364,   363,
+   120,   354,   355,   358,   357,     0,     0,   392,   391,   457,
+   419,   236,   236,   616,   638,     0,   396,   419,   616,   638,
+     0,     0,   326,   375,   374,    81,   419,   419,   419,   455,
+   422,   644,   645,   646,     0,   648,   651,     0,     0,     0,
+   298,   419,     0,   419,     0,    73,   419,     0,     0,     0,
+     0,   276,     0,   143,   222,   236,   206,   205,     0,   236,
+   122,   198,   197,   608,   607,     0,   195,   194,   192,   193,
+   191,   190,   189,   186,   187,   188,   184,   185,   179,   180,
+   181,   182,   183,   199,     0,     0,   234,   236,   167,   236,
+   268,   153,   236,     0,   112,   229,   236,   214,     0,   227,
+   236,     0,   419,   419,   616,   632,   633,   630,   631,   638,
+   618,   626,   637,   628,   625,   236,   331,     0,   330,    12,
+   140,   139,   484,   480,   419,   419,   479,   483,   419,   492,
+   487,     0,   489,     0,   334,     0,    19,   341,   339,   344,
+   299,    30,    34,    32,    36,     0,     0,    92,     0,    96,
+   236,    98,   236,     0,   100,   236,   201,   276,   236,   309,
+     0,   313,     0,    85,    62,     0,     0,   507,   508,     0,
+     0,     0,     0,     0,   443,   439,     0,     0,     0,   442,
+     0,   292,   419,   419,   419,   427,     0,     0,   299,   127,
+     0,   361,   367,   366,   360,   359,   388,   389,   236,   379,
+   380,   638,   299,   402,     0,   288,     0,   376,   386,   387,
+   638,     0,   382,   288,   381,   383,     0,   393,   394,   451,
+   448,   449,   650,     0,   640,     0,     0,   296,   466,     0,
+     0,     0,   471,     0,     0,     0,   638,   218,   150,   152,
+   175,   177,   176,     0,   208,     0,   173,   236,   209,   212,
+     0,     0,     0,   414,   414,   157,   236,     0,   170,   236,
+     0,   231,   236,   219,     0,   634,   485,   481,   419,    70,
+     0,     0,   411,   409,   323,     0,   496,   494,   490,   419,
+   488,    21,    24,     0,     0,    39,    93,    91,     0,     0,
+   102,   236,     0,     0,     0,     0,   310,   306,     0,     0,
+   201,     0,   524,   527,     0,     0,   236,     0,     0,     0,
+   236,     0,   604,   578,     0,     0,     0,     0,   236,     0,
+   558,     0,   519,     0,     0,     0,   501,   518,   523,   500,
+     0,   236,     0,   584,     0,   530,   534,   509,     0,   433,
+   430,   447,   446,   419,   419,   419,   441,   290,   426,   423,
+   424,   499,   498,   295,   362,   356,   299,    76,   401,   419,
+   299,   457,   236,   236,   638,   397,    79,   419,     0,   652,
+   289,     0,     0,   419,   419,   419,   419,   419,   419,    71,
+   221,   328,   196,   129,     0,   233,     0,     0,     0,     0,
+   159,   171,   228,     0,   226,   627,   629,   320,   497,   495,
+   486,    23,    40,    95,    97,     0,    99,     0,   317,   236,
+   311,     0,   314,     0,   510,   504,   515,   576,   236,     0,
+   236,     0,   236,     0,   544,   546,   547,   548,     0,   236,
+     0,   605,     0,   642,   643,     0,     0,   579,     0,   585,
+   559,     0,   577,   520,   250,   638,     0,   251,     0,     0,
+   638,     0,   514,   503,   502,   521,   568,     0,     0,   557,
+   556,     0,   573,     0,   584,     0,   581,     0,     0,     0,
+     0,   440,   437,   438,     0,   293,   400,   377,   378,   638,
+   398,   236,   299,   407,   288,   384,   385,   638,   303,     0,
+   301,   297,   467,   464,   465,   472,   469,   470,     0,     0,
+   129,   210,   235,   168,     0,   268,   154,   163,   165,   155,
+   230,   101,   315,     0,     0,   307,     0,   236,     0,     0,
+   505,   597,     0,   600,     0,   540,   236,   236,   549,     0,
+   555,     0,   565,     0,   236,   505,     0,   236,   505,   560,
+   247,   288,   246,   249,   248,   288,   236,   571,     0,   575,
+   574,   569,   583,   582,     0,     0,   126,   291,     0,    75,
+     0,   299,   406,   299,    78,     0,     0,     0,   174,   130,
+   414,   414,   158,   236,     0,   421,   421,     0,   318,   516,
+     0,   528,   601,   599,     0,   598,   538,   236,     0,   545,
+   554,     0,   564,     0,   580,   562,     0,   586,   522,   566,
+   594,   531,   535,   294,   399,   405,   403,     0,     0,   302,
+   300,     0,     0,     0,   160,     0,     0,   316,   236,   525,
+     0,     0,     0,   236,   541,   542,   609,     0,     0,     0,
+   587,   570,     0,     0,     0,     0,   304,   164,   166,   156,
+   161,   162,   517,   236,   236,   603,   602,   539,   236,     0,
+     0,   610,   611,   550,   563,   561,     0,     0,     0,     0,
+   404,     0,   526,     0,   543,   236,   609,     0,     0,   590,
+   567,   588,     0,   532,   536,     0,     0,     0,     0,   551,
+   612,     0,     0,   592,   236,   236,     0,   529,   613,     0,
+     0,   591,   589,   593,     0,   533,   537,   305,   614,     0,
+   552,   595,     0,     0,     0,   615,   553,   596,     0,     0,
+     0
+};
+
+static const short yydefgoto[] = {  1269,
+     1,     2,   125,   501,    27,    28,    29,   277,   495,   496,
+    30,    69,    31,   510,   512,   511,   513,   509,    32,    33,
+    34,   350,   135,   136,   137,   300,   518,   519,   560,   186,
+   450,    35,    36,   143,   750,   225,   226,   313,   730,   314,
+  1062,   227,   882,   255,   228,   395,   229,   256,   231,   406,
+   944,   442,   232,   233,   234,   138,   235,   236,   883,   341,
+   884,   169,   885,   237,   272,   390,   273,   152,    40,   378,
+   153,  1035,   342,  1119,    41,   933,   601,  1050,  1051,   859,
+   722,   723,    42,   473,   251,  1060,   678,    43,    44,    45,
+    46,   188,   189,    47,    48,   346,   562,   563,   564,   565,
+   566,   191,   353,   354,   355,   576,   577,   926,   470,   471,
+   239,   666,   240,   113,   365,   366,   154,   323,   155,   241,
+    51,   109,   271,   485,   157,   886,   887,   534,   727,   728,
+   729,   309,   888,   889,  1179,   890,  1107,   980,  1204,   981,
+  1181,  1029,  1193,  1245,  1030,  1194,  1246,  1184,  1148,  1209,
+  1088,  1191,  1161,   891,   892,   893,  1096,   894,  1025,   895,
+  1099,  1217,  1243,  1242,  1255,  1192,  1265,   896,   897,   993,
+   626,  1211,  1212,  1213,  1260,   486,   248,   249,   668,   199,
+   461,   674,   198,   374,   597,   375,   598,   242
+};
+
+static const short yypact[] = {   198,
+  1834,  4824,   391,-32768,   583,-32768,-32768,-32768,-32768,   286,
+   133,   135,-32768,   261,  3239,   203,   169,-32768,-32768,-32768,
+   380,   272,-32768,-32768,-32768,   144,-32768,   293,  5180,-32768,
+-32768,-32768,-32768,   195,   309,   325,   850,  6231,   970,    32,
+-32768,-32768,  1232,-32768,-32768,-32768,-32768,   329,  1576,-32768,
+-32768,   315,-32768,-32768,-32768,-32768,-32768,-32768,  5817,  2205,
+-32768,-32768,   370,-32768,   365,   441,  5817,-32768,    72,-32768,
+   418,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,   437,
+-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
+-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
+-32768,   399,-32768,-32768,   524,   774,  1155,  1384,-32768,-32768,
+   441,-32768,   551,   380,  1094,  1094,    30,   505,   312,  5817,
+-32768,-32768,-32768,   467,  5129,   527,    30,   710,  6360,    52,
+   201,   653,   619,-32768,   679,    31,   340,   340,-32768,-32768,
+-32768,-32768,   507,    30,  1379,-32768,-32768,-32768,  1904,-32768,
+   103,   101,-32768,   577,   610,-32768,-32768,   881,-32768,-32768,
+-32768,   558,   970,   161,  6391,-32768,-32768,-32768,  1087,-32768,
+-32768,   710,-32768,   418,-32768,-32768,-32768,-32768,-32768,-32768,
+   272,-32768,-32768,-32768,-32768,-32768,   602,   649,   649,-32768,
+  5013,-32768,-32768,  3331,   591,   109,   634,   216,   947,-32768,
+  2205,   100,-32768,   641,-32768,-32768,  6059,  6135,   700,   702,
+-32768,-32768,-32768,  1809,   146,  5900,-32768,-32768,  5900,-32768,
+-32768,  4281,  5900,-32768,   434,-32768,  5900,-32768,-32768,  5185,
+  1784,   749,  5485,   793,    77,  5900,   774,  1241,-32768,  6483,
+    93,-32768,-32768,-32768,-32768,   426,   716,    39,   753,-32768,
+   146,   724,    57,   718,   788,  6617,   729,   859,-32768,   551,
+-32768,-32768,-32768,   624,-32768,-32768,-32768,  6451,   756,-32768,
+   628,  1155,-32768,-32768,  1155,    60,   761,-32768,-32768,   610,
+   610,-32768,   448,-32768,  2019,-32768,-32768,-32768,-32768,   496,
+   307,-32768,-32768,-32768,-32768,-32768,-32768,   841,-32768,    95,
+-32768,  4364,  5900,-32768,   340,   340,   820,   766,-32768,-32768,
+-32768,   649,-32768,-32768,   577,   610,   497,   497,-32768,-32768,
+-32768,  1998,   320,-32768,-32768,-32768,   216,   710,-32768,-32768,
+  3438,   770,  1584,-32768,  1087,-32768,-32768,   216,-32768,-32768,
+   496,-32768,-32768,-32768,   275,-32768,-32768,-32768,  5900,   633,
+  1502,  2144,    36,  4897,-32768,   653,   551,   779,   641,    23,
+  6661,  1083,   798,-32768,   795,  5900,-32768,    30,    75,-32768,
+   309,   870,-32768,-32768,   856,  1698,   832,   894,    30,   272,
+-32768,   100,   828,-32768,  5900,   641,  4281,-32768,   765,   511,
+  4281,-32768,  5900,  5983,  5900,-32768,   390,-32768,   528,-32768,
+-32768,-32768,-32768,   840,   844,   820,   846,-32768,  5817,-32768,
+-32768,  5900,  5900,  4447,  5900,  5900,  5900,  5900,  5900,  5900,
+  5900,  5900,  5900,  5900,  5900,  5900,  5900,  5900,  5900,  5900,
+  5900,-32768,-32768,-32768,-32768,-32768,-32768,  5900,  5900,  5900,
+   748,   548,  4779,-32768,-32768,-32768,    30,   272,   146,   596,
+    93,-32768,-32768,-32768,-32768,  5900,-32768,-32768,-32768,   645,
+   322,   322,-32768,-32768,  1711,-32768,-32768,  4364,   877,   903,
+-32768,-32768,   146,   861,-32768,  4696,-32768,-32768,   551,   628,
+   517,   517,   471,   420,   860,   865,-32768,   867,-32768,  2205,
+   871,-32768,  1155,   954,   698,-32768,  1512,-32768,-32768,-32768,
+-32768,-32768,   841,-32768,-32768,-32768,-32768,-32768,-32768,   887,
+   893,   899,   901,   894,    30,-32768,  5900,   472,-32768,   655,
+   742,   146,   689,-32768,  3866,  6661,-32768,    55,   340,-32768,
+-32768,-32768,-32768,   977,-32768,   577,   577,   497,   497,-32768,
+-32768,   445,-32768,  3545,   906,-32768,   894,-32768,   551,   913,
+   244,   922,-32768,   918,-32768,-32768,   841,-32768,-32768,-32768,
+-32768,   986,-32768,-32768,  1035,   403,  6544,-32768,-32768,   991,
+   782,  5900,  5900,  6276,   496,   179,-32768,   813,  6276,   721,
+   211,   992,-32768,-32768,-32768,   817,-32768,-32768,-32768,-32768,
+-32768,-32768,-32768,-32768,   109,-32768,-32768,   249,   441,   967,
+   998,-32768,  3652,-32768,  3759,-32768,-32768,   282,   948,   951,
+   955,   189,   958,-32768,-32768,  5900,-32768,-32768,   965,  5568,
+-32768,  6661,  6661,-32768,-32768,  1011,  6697,  6712,  6572,  2413,
+  3391,  2064,  2095,  2250,  2250,  2250,   962,   962,    20,    20,
+-32768,-32768,-32768,-32768,   310,   961,   988,  5900,-32768,  5817,
+  1372,  1021,  5900,   966,-32768,-32768,  5900,   690,   314,-32768,
+  5900,   912,-32768,-32768,  6180,-32768,   610,-32768,-32768,   100,
+-32768,  1023,-32768,  1027,-32768,  5900,   146,   976,   903,-32768,
+-32768,  6661,   628,   628,-32768,-32768,-32768,-32768,-32768,-32768,
+   551,   979,-32768,   978,-32768,   761,-32768,  1009,   699,  1031,
+   894,-32768,-32768,-32768,-32768,   307,   326,-32768,    95,-32768,
+  5900,-32768,  5900,   691,-32768,  5900,  1038,   855,  5900,-32768,
+  1053,-32768,   172,-32768,-32768,   146,  3040,   977,-32768,   329,
+   481,   483,   497,   497,-32768,   551,  1005,   341,  1008,-32768,
+  1004,  1061,-32768,-32768,-32768,-32768,   497,   497,   894,   507,
+   275,-32768,-32768,-32768,-32768,  1035,-32768,-32768,  5900,-32768,
+-32768,   100,  6594,  6661,  1013,   826,  1902,-32768,-32768,-32768,
+   100,  1016,-32768,   848,-32768,-32768,  5071,-32768,-32768,   551,
+   551,   551,-32768,  1698,-32768,    67,  1040,-32768,   551,  1017,
+   362,  1020,   551,  1022,   374,  1026,   100,-32768,-32768,-32768,
+-32768,-32768,-32768,   409,-32768,  4198,-32768,  5900,-32768,-32768,
+   441,   196,   411,   774,  6483,-32768,  5900,  4364,-32768,  5900,
+   433,-32768,  5900,-32768,   442,   610,   603,   603,   471,-32768,
+  4364,  4364,  6661,-32768,-32768,  1028,   517,   517,   551,-32768,
+-32768,-32768,-32768,   254,   307,-32768,-32768,-32768,   466,   482,
+-32768,  5900,   526,  6522,  4364,  3949,-32768,-32768,   225,   831,
+  1081,  1055,-32768,-32768,  1056,  1058,  5900,  1088,  1037,  1041,
+  5651,   158,  1138,-32768,   304,  1100,   109,  1101,  5734,   346,
+-32768,  1047,-32768,  1395,  6344,  2362,-32768,-32768,  1137,-32768,
+  2255,  5275,  2505,-32768,  2612,-32768,-32768,-32768,  5013,-32768,
+-32768,   577,   577,-32768,-32768,-32768,-32768,-32768,   551,   551,
+   551,   577,   577,  1103,-32768,-32768,  6594,-32768,-32768,   834,
+   894,  1105,  5900,  5900,   496,-32768,-32768,   836,  4955,-32768,
+-32768,  1157,  4364,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
+-32768,  1111,  6681,   507,    78,-32768,  1987,  1063,  1066,   530,
+-32768,-32768,-32768,   533,-32768,-32768,-32768,-32768,   628,   628,
+   551,-32768,-32768,-32768,-32768,   542,-32768,  4364,-32768,  5900,
+-32768,  1116,-32768,   146,-32768,-32768,-32768,-32768,  5900,  1104,
+  5380,  4032,  5900,   905,-32768,-32768,-32768,-32768,  1086,  5900,
+  1089,-32768,  1110,  1090,   167,  1091,   708,-32768,   711,-32768,
+-32768,  1093,-32768,-32768,-32768,   819,   230,-32768,  1095,   277,
+    33,  1098,-32768,-32768,-32768,-32768,-32768,   109,   146,-32768,
+-32768,   880,-32768,  2719,-32768,   897,-32768,  2826,  4530,  4530,
+    37,   551,   551,   551,  4364,-32768,-32768,-32768,-32768,   100,
+  1146,  5900,  6594,  6661,   841,-32768,-32768,   100,  1122,   547,
+-32768,-32768,   551,   551,   551,   551,   551,   551,  4115,  1102,
+   507,-32768,-32768,-32768,  1698,  1686,  1154,  1127,  1128,-32768,
+-32768,-32768,-32768,  6639,  4364,-32768,  1112,  5900,  1197,  1113,
+  1109,-32768,  1115,-32768,  1117,-32768,  5900,  5380,-32768,  1118,
+-32768,   441,-32768,  1120,  5900,-32768,  1121,  5900,-32768,-32768,
+-32768,   841,-32768,-32768,-32768,   841,  5380,   856,  1167,-32768,
+-32768,-32768,-32768,-32768,  1125,  1126,-32768,-32768,  4364,-32768,
+  4364,  6594,-32768,   894,-32768,   743,  1157,  1123,-32768,-32768,
+   774,  6483,-32768,  5900,  4364,-32768,-32768,  4364,-32768,-32768,
+  1131,-32768,-32768,-32768,  3147,-32768,-32768,  5380,  1177,-32768,
+-32768,    76,-32768,   563,-32768,-32768,   565,-32768,-32768,-32768,
+-32768,-32768,-32768,-32768,-32768,-32768,  1169,  1196,  1144,-32768,
+-32768,  1147,  1148,   566,-32768,  1145,  1150,-32768,  5380,-32768,
+  1170,   915,  2933,  5380,-32768,-32768,  1245,  1156,  1158,  1161,
+-32768,  1172,  4613,  4613,  4364,  1250,-32768,-32768,-32768,-32768,
+-32768,-32768,-32768,  5380,  5900,-32768,-32768,-32768,  5380,  1186,
+   333,  1219,-32768,-32768,-32768,-32768,   736,  1189,  1171,  1176,
+-32768,  1223,-32768,  1180,-32768,  5900,  1245,  1181,  1245,-32768,
+-32768,-32768,  1698,-32768,-32768,  1279,  1188,  1207,   367,-32768,
+-32768,   820,   820,   146,  5380,  5380,  1208,-32768,-32768,  1302,
+  1209,-32768,-32768,-32768,  1211,-32768,-32768,-32768,-32768,   571,
+-32768,-32768,  1305,  1214,   820,-32768,-32768,-32768,  1321,  1322,
+-32768
+};
+
+static const short yypgoto[] = {-32768,
+  1200,-32768,-32768,  1043,  1323,-32768,-32768,-32768,-32768,   632,
+-32768,-32768,-32768,-32768,-32768,-32768,-32768,  -665,  1204,  1210,
+-32768,-32768,-32768,-32768,  1202,-32768,-32768,   631,    -7,   845,
+  -197,    -5,   -26,-32768,-32768,  1221,   936,  -879,-32768,   598,
+   288,-32768,   -21,   -99,   814,-32768,  -159,   878,  -185,-32768,
+-32768,-32768,-32768,  -179,   -64,   -84,-32768,-32768,   368,    -8,
+   799,  1194,  1076,    -9,  1077,    -1,    15,   474,   -19,  -287,
+-32768,-32768,  1034,-32768,-32768,-32768,  -445,-32768,   224,-32768,
+   -20,   557,   -24,-32768,-32768,-32768,   686,  -244,  1337,  1339,
+-32768,-32768,-32768,-32768,-32768,  -126,-32768,   618,   804,  -523,
+-32768,   642,   475,   594,  -334,  1024,-32768,-32768,   904,   704,
+   -54,   -94,    -6,  1566,  -248,-32768,   -58,  1065,  1042,   509,
+-32768,     6,  -219,-32768,  -125,  -842,  -859,  -321,-32768,-32768,
+   662,   -82,  -133,-32768,-32768,   386,-32768,-32768,-32768,-32768,
+-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
+-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,   375,-32768,
+-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
+  -968,   174,-32768,   176,-32768,   -35,-32768,  -238,   190,     8,
+  1163,-32768,   137,  -577,   636,   394,-32768,  1318
+};
+
+
+#define        YYLAST          6784
+
+
+static const short yytable[] = {    39,
+    39,   253,    65,   310,   310,   106,    52,    52,   108,   105,
+   514,   270,   257,   107,   171,   118,   187,   783,   164,   585,
+   488,   389,   389,   324,   247,   114,  1014,    39,   151,   162,
+   389,   118,   497,   389,   398,   185,   163,   389,   498,   547,
+   846,   389,   756,   460,   480,   254,   276,   389,   484,   464,
+  1024,   306,  1028,   170,   105,   311,   402,   238,    39,   403,
+  1115,  1116,   347,   408,  1061,   238,   445,   411,   706,   445,
+   582,   582,   476,   444,    58,   193,   445,   592,   593,   446,
+   447,   172,   171,   554,   134,   445,   315,   445,   465,   429,
+   430,   431,   466,    59,   360,   446,   458,    61,   515,     6,
+   292,   742,   105,   325,   476,   293,   275,   278,   118,   118,
+   118,   367,   368,     6,   194,   195,    15,   196,   238,   290,
+   291,   258,   118,    39,   197,   588,  -638,   163,  -638,  1187,
+    52,   467,    15,  -638,   304,   173,  -253,   516,   171,   118,
+   583,  1117,   454,   118,   171,   457,   121,   122,    61,    62,
+   328,  -638,  -638,   369,  -638,   294,  -638,   724,   363,   474,
+    61,    62,   494,   333,  1014,   383,   118,   407,  1014,   931,
+   448,   310,   310,   532,   843,   259,   517,   170,  1188,   963,
+  1063,  1061,   449,   340,   196,   535,   459,   196,   181,    39,
+   371,   197,   362,   118,   197,   105,   324,    -1,   449,    39,
+   405,   373,    22,   528,   329,   370,   326,   401,   105,   389,
+   172,    58,   399,   171,    66,   701,    67,   398,   133,   529,
+   238,   856,   530,   531,  1219,  1220,   672,   990,   767,   118,
+    59,   551,   112,    58,   105,   614,   110,   123,   275,    64,
+   105,   377,   694,   469,   163,   476,  -288,   171,   134,   295,
+   171,    64,    59,   658,   296,   845,    61,   174,   536,   537,
+   767,   683,   684,    68,   336,  -288,    39,  -288,   298,   749,
+  -104,   105,   619,   521,   974,    39,   857,    61,   174,   328,
+   558,   527,   768,    39,   111,   608,   492,   327,    61,    62,
+    52,   802,   520,   476,   371,   552,   741,   997,   784,   999,
+   946,   338,  1183,   914,   297,   523,   994,   995,     6,   559,
+   171,   118,   118,   139,   775,   776,   118,   919,   561,  -288,
+   962,   596,   118,  1014,     4,   117,   172,   118,   975,   362,
+   504,   476,   609,  1103,    63,   120,   610,   171,   384,   645,
+   307,   124,   575,   580,   591,   118,   744,   181,   369,   340,
+   163,   785,    39,   140,   193,   505,   659,   200,   506,   476,
+   507,    15,   543,   476,   263,   405,    18,   662,   181,   405,
+   105,   611,   613,   141,   107,   476,   170,   190,   142,    64,
+  1105,   663,     4,   117,   798,   238,  1227,   652,   308,   238,
+   476,   664,   625,   194,   195,   310,   201,   181,   267,  1003,
+   370,   544,   545,   665,   269,    61,   174,   238,   753,   120,
+   508,   476,   809,   252,   282,    22,   824,   707,   646,    15,
+  1250,   654,   546,   476,    18,   212,   503,    26,   847,    71,
+     6,   159,     8,   160,   397,  1228,   105,   754,    10,    19,
+   651,   655,   480,   905,   738,   484,   725,   675,   324,    20,
+   206,   497,    12,   324,   692,   118,   118,   498,   476,    13,
+   476,    21,   489,    39,   935,   469,    16,   389,   171,  1251,
+   187,  1037,   708,    22,   250,  1041,   938,   557,   921,   731,
+   732,    59,   476,   409,   105,    26,   921,   543,    39,   699,
+   261,   476,   586,   819,    55,    56,   181,   409,   410,     4,
+   144,   490,   491,   791,   278,   795,   262,   492,   739,    50,
+    50,   941,   499,   947,   714,   476,   804,   721,   606,    22,
+   -87,   709,   687,   330,   278,   330,   544,   545,   139,    50,
+   685,   476,   118,   118,   786,   953,    15,    50,   765,   561,
+   686,    18,   362,   772,   955,   156,   156,   735,   812,   140,
+   813,    71,     6,   455,     8,    72,   146,   821,   278,   263,
+    10,   825,   331,   332,   331,   332,   147,   792,   964,   796,
+   615,   284,    39,   148,    12,   476,   265,    39,   149,   476,
+   196,    13,   476,   900,   965,   901,   266,   197,    16,   371,
+    22,   476,   456,   267,   585,   649,  1127,  1123,   268,   269,
+   373,   362,    26,   362,   312,     4,   117,   683,   684,   616,
+   278,   849,   476,   850,   476,   476,   853,   959,   960,   330,
+  1263,   299,    50,    50,    50,    57,   171,    58,   967,   650,
+   288,   289,  1070,    50,   389,  1071,   156,   156,   656,  1232,
+   814,    22,    15,   815,  1072,   263,    59,    18,   238,  1128,
+   343,   669,   193,   156,   673,   344,   118,   156,   331,   332,
+   952,   334,   663,    39,    60,  1189,   263,  1190,  1200,   469,
+   489,   561,   664,  1264,   902,   903,  1166,   657,  1167,   267,
+   156,   568,   521,   265,   665,   269,   569,   660,   912,   913,
+   105,   194,   195,   266,    39,   193,    22,   710,   364,    50,
+   267,   520,   345,   371,   372,   268,   269,    50,    26,   490,
+   491,   766,     4,   144,   523,   376,   774,   950,   858,   948,
+   949,   301,   385,   954,   561,   362,   661,   118,   118,   596,
+   302,   715,   822,   851,   194,   195,   711,   196,   367,   368,
+     6,   118,   118,   451,   197,  1168,   945,   696,   -22,    15,
+  1094,  1169,   966,  1097,    18,   145,  1230,  1124,   925,  1145,
+   303,   118,   697,   -22,    71,     6,     7,     8,     9,   146,
+   716,   823,   852,    10,  1155,    39,   483,  1158,   105,   147,
+   369,   393,   107,   394,   712,   441,   148,    12,   647,  1095,
+   141,   149,  1098,    50,    13,   142,   648,   951,   721,    37,
+    37,    16,   445,    22,   468,   196,   830,   432,   522,   105,
+   956,   957,   197,   275,   547,    26,   263,   561,   463,   264,
+   475,   118,   118,   713,   773,   156,   156,   128,   472,    22,
+   156,   477,   370,   265,   969,   973,   156,   476,   433,   434,
+  1231,    50,   435,   266,   437,   984,   439,   440,   972,   989,
+   267,   377,     4,   144,    22,   268,   269,  1002,   245,   156,
+   156,   478,    50,   487,   991,  1010,   377,   996,   308,   371,
+   533,   371,   594,   377,   -77,  1006,  1009,   553,   118,   -77,
+   373,   587,   373,   163,   362,   760,   761,  1176,  1177,    15,
+   362,   362,  1067,   362,    18,   145,   -80,    39,   918,    58,
+   589,   -80,   590,   196,  -436,   595,  -436,   927,  -104,   146,
+   197,  -436,  1052,   599,     4,   117,   769,   770,    59,   147,
+   778,   779,  1101,    37,   600,    58,   148,    39,   676,  -436,
+   607,   149,  -436,   940,   976,   977,   230,  1038,  1039,  1046,
+  1047,   105,   617,    22,    59,  1066,   618,  1073,   620,     4,
+   379,    15,   677,   150,   263,    26,    18,  1077,  1086,  1087,
+  1083,  1085,   688,  -436,   680,  -436,  1076,   689,  1090,    50,
+    50,   663,  -436,    50,   690,   166,   167,   168,   693,   362,
+   362,   664,    10,   976,  1110,  -436,    15,   695,   267,   351,
+   702,    18,   245,   665,   269,  1154,   703,   230,  1157,   245,
+   976,  1113,   704,    13,   705,    22,    19,   625,   625,   726,
+    16,  1109,   371,   740,  1118,   743,    20,    26,   976,  1206,
+   388,   392,   362,   373,   745,   746,   362,  1152,    21,   427,
+   428,   429,   430,   431,  1174,   751,  1172,  1173,   973,   752,
+   380,   171,    49,    49,   759,   777,   156,   156,   787,   788,
+   799,   972,    26,   800,  1139,  1131,  1141,   801,  1132,   105,
+   803,  1045,   119,   107,   808,  1149,   245,   805,   810,   811,
+   132,   361,   818,   820,   831,   245,    38,    38,   832,   165,
+   835,   840,   156,    37,   844,   841,   362,   156,   166,   167,
+   168,  -103,   339,   167,   168,    10,     4,   117,  1164,    10,
+  1165,   278,   181,   372,   129,   362,   855,   904,  1252,  1253,
+   906,   907,   908,   453,  1175,   920,    13,  1178,   928,   934,
+    13,   932,   936,    16,   937,   455,   105,    16,   939,   245,
+   275,  1268,   958,    15,   978,   246,   979,   982,    18,   983,
+   986,   985,  1102,   362,   987,   992,   362,  1106,   998,  1000,
+  1004,  1016,   351,    19,  1036,   279,   280,   281,  1042,  1049,
+  1059,   167,   168,    20,   456,  1068,    49,    10,  1069,  1075,
+    50,   625,   625,   829,  1221,    21,  1120,   362,  1244,   526,
+   361,   362,   362,  1224,  1125,  1078,   316,    22,    13,  1089,
+   119,  1092,  1091,  -103,  1093,    16,  1100,  1121,  1104,    26,
+    38,   976,   362,  1126,  1238,  1135,  1129,   362,   361,  1136,
+  1137,   371,  1142,  1144,  1140,  1160,  1143,   522,  1146,  1147,
+  1195,  1151,   373,  1153,  1156,  1171,   567,   105,  1162,  1163,
+  1186,   107,   356,  1180,    61,   174,  1254,   175,   176,   177,
+   381,   156,   156,   362,   362,  1196,  1197,   167,   168,  1198,
+  1199,  1205,  1201,    10,  1210,   156,   156,  1202,  1222,  1214,
+  1218,  1215,   361,   245,  1216,   178,   352,  1226,  1229,   246,
+  1233,  1015,  1236,  1234,    13,   156,   246,  1021,  1235,   179,
+   180,    16,  1237,   455,  1240,    50,   230,  1247,   245,   622,
+   623,  1248,   627,   628,   629,   630,   631,   632,   633,   634,
+   635,   636,   637,   638,   639,   640,   641,   642,   643,  1249,
+  1258,  1259,  1261,  1262,  1266,   644,   361,  1267,    53,    53,
+  1270,  1271,   456,   285,    54,   181,    49,   842,   286,   502,
+   182,   183,   184,   361,   287,    50,    50,   305,    53,   848,
+   283,   700,   245,   246,   621,   526,    53,   915,  1130,  1084,
+  1170,   493,   246,   682,    53,    53,   335,  1007,   280,   281,
+    38,   548,   942,   119,   836,   130,  1079,   131,   916,   755,
+   929,   899,   245,  1031,   381,   581,   679,   245,   167,   168,
+   834,     4,   144,   372,    10,   372,   542,    71,     6,   898,
+     8,   274,   156,   156,   361,   356,    10,     4,   144,  1112,
+  1239,   245,   526,   245,  1241,    13,   246,    50,   462,  1015,
+    12,  1108,    16,  1015,   816,     0,     0,    13,    15,   930,
+     0,   361,     0,    18,    16,     0,     0,     0,     0,   352,
+     0,    53,    53,    53,    15,     0,     0,    50,   146,    18,
+   145,     0,    53,     0,     0,    53,    53,     0,   147,   763,
+   764,     0,     0,   817,   146,   148,     0,     0,     0,     0,
+   149,     0,    53,   245,   147,     0,    53,     0,     0,     0,
+     0,   148,    22,  1150,     0,     0,   149,    22,     0,     0,
+   361,     0,   361,     0,    26,     0,     0,     0,    22,    53,
+     0,     0,  1159,   361,   245,     0,     0,   807,  1005,     0,
+    26,     0,   667,   667,   570,   144,   667,     0,    53,     0,
+     0,     0,     0,     0,    61,   174,    53,   175,   176,   177,
+     0,     0,     0,     0,     0,   361,   372,   361,     0,     0,
+     0,   400,     0,  1185,   361,     0,     0,     0,   361,     0,
+   246,    15,     0,     0,   571,   178,    18,   145,     0,   572,
+     0,     0,   452,   833,     0,   573,     0,     0,   452,   698,
+   180,   146,     0,     0,  1203,   246,     0,     0,  1015,  1208,
+     0,   147,     0,     0,     0,   351,   192,     0,   148,   280,
+   281,     0,     0,   574,   115,   116,     4,   379,   361,  1223,
+   361,     0,     0,   361,  1225,    22,   854,     0,     0,  -638,
+     0,  -638,    53,     0,     0,   181,  -638,    26,     0,     0,
+   182,   183,   184,     0,     0,   119,     0,     0,   193,   246,
+   119,     0,   202,    15,  -638,  -638,     0,  -638,    18,  -638,
+  1256,  1257,     0,     0,    53,    53,   917,     0,     0,    53,
+   260,     0,     0,   555,     0,    53,     0,     0,     0,   246,
+    53,     0,     0,   556,   246,     0,     0,   194,   195,     0,
+   196,     0,     0,     0,     0,    21,     0,   197,    53,    53,
+     0,    53,     0,     0,     0,     0,     0,   380,   246,  -638,
+   246,     0,     0,   526,     0,   943,     0,     0,     0,    26,
+     0,     0,   167,   168,   361,   526,     0,   351,    10,     0,
+   361,    71,     6,   826,     8,    72,   119,     0,   526,   526,
+    10,   317,   318,     4,   127,     6,     7,     8,     9,    13,
+     0,   671,     0,    10,    12,   372,    16,   351,  1133,   361,
+     0,    13,   526,   526,     0,     0,     0,    12,    16,     0,
+   246,     0,     0,     0,    13,     0,     0,     0,     0,     0,
+    15,    16,     0,   263,     0,    18,   662,     0,   357,     0,
+     0,     0,     0,     0,     0,   382,     0,  1134,   452,     0,
+   663,   246,     0,     0,   280,   281,     0,     0,    53,    53,
+   664,     0,    53,     0,     0,     0,     0,   267,   280,   281,
+     0,    22,   665,   269,     0,     0,     0,     0,     0,     0,
+  1043,  1044,     0,     0,    22,     0,     0,     0,     0,     0,
+   526,   396,    71,     6,     0,     8,    26,     0,   356,     0,
+     0,    10,     0,     0,     0,     0,   432,     0,   479,     0,
+   481,   482,     0,    -2,     3,    12,     4,     5,     6,     7,
+     8,     9,    13,     0,   212,   526,    10,  1074,    15,    16,
+     0,     0,   352,   397,     0,    53,    53,   433,   434,    11,
+    12,   435,   436,   437,   438,   439,   440,    13,   280,   281,
+     0,    14,     0,    15,    16,     0,     0,    17,    18,     0,
+     0,     0,     0,     0,   538,   539,     0,     0,     0,     0,
+     0,    53,     0,    19,     0,   549,    53,     0,     0,     0,
+     0,     0,    22,    20,   922,   144,     4,   117,     0,     0,
+     0,     0,   526,     0,     0,    21,     0,     0,     0,  1122,
+     0,     0,     0,     0,     0,     0,  1011,    22,    23,    24,
+     0,     0,     0,     0,     0,     0,   526,    25,     0,    26,
+   356,    15,     0,    15,     0,     0,    18,   145,    18,   923,
+     0,     0,   526,     0,     0,   924,     0,     0,     0,     0,
+     0,   146,     0,   319,     0,     0,     0,     0,     0,     0,
+   356,   147,   361,   320,   352,   361,     0,     0,   148,    53,
+   321,     0,    53,   149,     0,   322,     0,     0,     0,     0,
+    71,     6,     0,     8,    72,    22,   526,    22,   526,    10,
+     4,   117,     0,     0,   352,     0,     0,    26,     0,    26,
+     0,   361,   526,    12,     0,   526,     0,     0,     0,     3,
+    13,     4,     5,     6,     7,     8,     9,    16,   670,     0,
+     0,    10,     0,     0,  1064,     0,     0,    15,     0,     0,
+     0,     0,    18,     0,    11,    12,     0,     0,     0,     0,
+    53,    53,    13,     0,   691,     0,    14,   540,    15,    16,
+     0,     0,    17,    18,    53,    53,     0,   541,  1065,     0,
+     0,     0,   526,     0,   321,     0,     0,     0,    19,   322,
+    22,     0,     0,     0,    53,     0,     0,     0,    20,     0,
+     0,    22,     0,     0,    53,     0,     0,     0,     0,     0,
+    21,     0,     0,    26,     0,   733,   734,     0,   736,     0,
+     0,     0,    22,    23,    24,     0,     0,     0,     0,     0,
+   747,   748,    25,   500,    26,   421,   422,   423,   424,   425,
+   426,   427,   428,   429,   430,   431,   762,     0,     0,     0,
+     0,     0,     0,   771,    53,    53,   570,   158,     6,   159,
+     8,   160,   780,   781,   782,     0,    10,   422,   423,   424,
+   425,   426,   427,   428,   429,   430,   431,   789,     0,   793,
+    12,     0,   797,     0,     0,     0,     0,    13,     0,     0,
+     0,     0,     0,    15,    16,     0,   578,     0,    18,   145,
+     0,   572,     0,     0,     0,     0,     0,   573,     0,     0,
+     0,    53,    53,   146,     0,     0,     0,     0,    71,     6,
+     7,     8,     9,   147,     0,   243,    53,    10,     0,     0,
+   148,     0,     0,     0,     0,   579,     0,     0,   827,   828,
+     0,    12,     0,     0,     0,     0,     0,    22,    13,     0,
+     0,     0,     0,     0,     0,    16,    53,     0,     0,    26,
+   837,   838,     0,     0,   839,  1017,     0,  -572,  -572,  -572,
+  -572,  -572,  -572,  -572,  -572,     0,  -572,  -572,  -572,  -572,
+  -572,  -572,  -572,  -572,  -572,  -572,  -572,  -572,  -572,  -572,
+  -572,  -572,  -572,  -572,  -572,     0,  -572,     0,  -572,     0,
+  -572,  -572,     0,  -572,  -572,  -572,     0,   244,    22,  -572,
+     0,     0,  -572,  -572,     0,     0,     0,     0,   909,   910,
+   911,  -572,     0,     0,  -572,   425,   426,   427,   428,   429,
+   430,   431,  -572,  -572,  -572,     0,     0,     0,  -572,  -572,
+     0,     0,     0,     0,     0,     0,  -572,     0,  -572,     0,
+  1018,  -572,  1019,     0,  -572,  -572,  -572,     0,  -572,     0,
+     0,     0,     0,     0,     0,     0,     0,     0,  -572,  -572,
+  -572,  -572,  1012,     0,   861,   127,     6,     7,     8,   359,
+   205,   206,     0,   207,    10,   862,     0,   863,   864,   865,
+   866,   867,   868,   869,   870,   871,   872,   873,    12,   208,
+   209,   210,     0,   211,     0,    13,     0,   212,  -236,     0,
+   213,    15,    16,     0,     0,   961,   214,     0,     0,   874,
+   308,     0,     0,     0,     0,     0,     0,     0,   215,     0,
+     0,   216,     0,     0,     0,     0,     0,     0,     0,   217,
+   218,   219,     0,     0,     0,   220,   221,     0,     0,     0,
+     0,     0,     0,   222,     0,   875,     0,     0,   876,     0,
+     0,   877,   878,   879,     0,   880,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,   881,  1013,   223,   224,  1032,
+  1033,  1034,   419,   420,   421,   422,   423,   424,   425,   426,
+   427,   428,   429,   430,   431,  1040,     0,     0,     0,     0,
+     0,     0,     0,  1048,     0,     0,     0,     0,     0,  1053,
+  1054,  1055,  1056,  1057,  1058,  1022,     0,   861,   127,     6,
+     7,     8,   359,   205,   206,     0,   207,    10,   862,     0,
+   863,   864,   865,   866,   867,   868,   869,   870,   871,   872,
+   873,    12,   208,   209,   210,     0,   211,     0,    13,     0,
+   212,  -236,     0,   213,    15,    16,     0,     0,     0,   214,
+     0,     0,   874,   308,     0,     0,     0,     0,     0,     0,
+     0,   215,     0,     0,   216,     0,     0,     0,     0,     0,
+     0,     0,   217,   218,   219,     0,     0,     0,   220,   221,
+     0,     0,     0,     0,     0,     0,   222,     0,   875,     0,
+     0,   876,     0,     0,   877,   878,   879,     0,   880,     0,
+     0,     0,     0,     0,     0,     0,     0,     0,   881,  1023,
+   223,   224,  1026,     0,   861,   127,     6,     7,     8,   359,
+   205,   206,     0,   207,    10,   862,     0,   863,   864,   865,
+   866,   867,   868,   869,   870,   871,   872,   873,    12,   208,
+   209,   210,     0,   211,     0,    13,     0,   212,  -236,     0,
+   213,    15,    16,     0,     0,     0,   214,     0,     0,   874,
+   308,     0,     0,     0,     0,     0,     0,     0,   215,     0,
+     0,   216,     0,     0,     0,     0,     0,     0,     0,   217,
+   218,   219,     0,     0,     0,   220,   221,     0,     0,     0,
+     0,     0,     0,   222,     0,   875,     0,     0,   876,     0,
+     0,   877,   878,   879,     0,   880,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,   881,  1027,   223,   224,  1012,
+     0,   861,   127,     6,     7,     8,   359,   205,   206,     0,
+   207,    10,   862,     0,   863,   864,   865,   866,   867,   868,
+   869,   870,   871,   872,   873,    12,   208,   209,   210,     0,
+   211,     0,    13,     0,   212,  -236,     0,   213,    15,    16,
+     0,     0,     0,   214,     0,     0,   874,   308,     0,     0,
+     0,     0,     0,     0,     0,   215,     0,     0,   216,     0,
+     0,     0,     0,     0,     0,     0,   217,   218,   219,     0,
+     0,     0,   220,   221,     0,     0,     0,     0,     0,     0,
+   222,     0,   875,     0,     0,   876,     0,     0,   877,   878,
+   879,     0,   880,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,   881,  1111,   223,   224,  1012,     0,   861,   127,
+     6,     7,     8,   359,   205,   206,     0,   207,    10,   862,
+     0,   863,   864,   865,   866,   867,   868,   869,   870,   871,
+   872,   873,    12,   208,   209,   210,     0,   211,     0,    13,
+     0,   212,  -236,     0,   213,    15,    16,     0,     0,     0,
+   214,     0,     0,   874,   308,     0,     0,     0,     0,     0,
+     0,     0,   215,     0,     0,   216,     0,     0,     0,     0,
+     0,     0,     0,   217,   218,   219,     0,     0,     0,   220,
+   221,     0,     0,     0,     0,     0,     0,   222,     0,   875,
+     0,     0,   876,     0,     0,   877,   878,   879,     0,   880,
+     0,     0,     0,     0,     0,     0,     0,     0,     0,   881,
+  1114,   223,   224,  1012,     0,   861,   127,     6,     7,     8,
+   359,   205,   206,     0,   207,    10,   862,     0,   863,   864,
+   865,   866,   867,   868,   869,   870,   871,   872,   873,    12,
+   208,   209,   210,     0,   211,     0,    13,     0,   212,  -236,
+     0,   213,    15,    16,     0,     0,     0,   214,     0,     0,
+   874,   308,     0,     0,     0,     0,     0,     0,     0,   215,
+     0,     0,   216,     0,     0,     0,     0,     0,     0,     0,
+   217,   218,   219,     0,     0,     0,   220,   221,     0,     0,
+     0,     0,     0,     0,   222,     0,   875,     0,     0,   876,
+     0,     0,   877,   878,   879,     0,   880,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,   881,  1207,   223,   224,
+   860,     0,   861,   127,     6,     7,     8,   359,   205,   206,
+     0,   207,    10,   862,     0,   863,   864,   865,   866,   867,
+   868,   869,   870,   871,   872,   873,    12,   208,   209,   210,
+     0,   211,     0,    13,     0,   212,  -236,     0,   213,    15,
+    16,     0,     0,     0,   214,     0,     0,   874,   308,     0,
+     0,     0,     0,     0,     0,     0,   215,     0,     0,   216,
+     0,     0,     0,     0,     0,     0,     0,   217,   218,   219,
+     0,     0,     0,   220,   221,     0,     0,     0,     0,     0,
+     0,   222,     0,   875,     0,     0,   876,     0,     0,   877,
+   878,   879,     0,   880,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,   881,     0,   223,   224,  1182,     0,   861,
+   127,     6,     7,     8,   359,   205,   206,     0,   207,    10,
+   862,     0,   863,   864,   865,   866,   867,   868,   869,   870,
+   871,   872,   873,    12,   208,   209,   210,     0,   211,     0,
+    13,     0,   212,  -236,     0,   213,    15,    16,     0,     0,
+     0,   214,     0,     0,   874,   308,     0,     0,     0,     0,
+     0,     0,     0,   215,     0,     0,   216,     0,     0,     0,
+     0,     0,     0,     0,   217,   218,   219,     0,     0,     0,
+   220,   221,     0,     0,     0,     0,     0,     0,   222,     0,
+   875,     0,     0,   876,     0,     0,   877,   878,   879,    70,
+   880,     0,    71,     6,     0,     8,    72,     0,     0,     0,
+   881,    10,   223,   224,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,    12,     0,     0,     0,     0,
+     0,     0,    13,     0,    73,    74,     0,     0,     0,    16,
+    75,    76,     0,     0,     0,     0,     0,     0,    77,    78,
+    79,    80,     0,     0,    81,    82,    83,    84,    85,    86,
+    87,    88,    89,    90,    91,    92,    93,    94,    95,    96,
+    97,     0,    98,    99,     0,     0,   100,   101,     0,     0,
+     0,   102,     0,     0,     0,     0,     0,     0,     0,     0,
+     0,   358,    22,   203,   127,     6,     7,     8,   359,   205,
+   206,   243,   207,    10,   103,   104,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,    12,   208,   209,
+   210,     0,   211,     0,    13,     0,   212,  -236,     0,   213,
+    15,    16,     0,     0,     0,   214,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,   215,     0,     0,
+   216,     0,     0,     0,     0,     0,     0,     0,   217,   218,
+   219,     0,     0,     0,   220,   221,     0,     0,     0,     0,
+     0,     0,   222,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,   244,    22,     0,     0,     0,     0,     0,
+     0,     0,     0,  -616,     0,     0,   223,   224,   550,     0,
+   203,   127,     6,     7,     8,   359,   205,   206,   243,   207,
+    10,   420,   421,   422,   423,   424,   425,   426,   427,   428,
+   429,   430,   431,     0,    12,   208,   209,   210,     0,   211,
+     0,    13,     0,   212,  -236,     0,   213,    15,    16,     0,
+     0,     0,   214,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,   215,     0,     0,   216,     0,     0,
+     0,     0,     0,     0,     0,   217,   218,   219,     0,     0,
+     0,   220,   221,     0,     0,     0,     0,     0,     0,   222,
+     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+   244,    22,     0,     0,     0,     0,     0,     0,     0,     0,
+  -616,     0,     0,   223,   224,   737,     0,   203,   127,     6,
+     7,     8,   359,   205,   206,   243,   207,    10,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     0,    12,   208,   209,   210,     0,   211,     0,    13,     0,
+   212,  -236,     0,   213,    15,    16,     0,     0,     0,   214,
+     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     0,   215,     0,     0,   216,     0,     0,     0,     0,     0,
+     0,     0,   217,   218,   219,     0,     0,     0,   220,   221,
+     0,     0,     0,     0,     0,     0,   222,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,   244,    22,     0,
+     0,     0,     0,     0,     0,     0,     0,  -616,     0,     0,
+   223,   224,   790,     0,   203,   127,     6,     7,     8,   359,
+   205,   206,   243,   207,    10,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,     0,    12,   208,
+   209,   210,     0,   211,     0,    13,     0,   212,  -236,     0,
+   213,    15,    16,     0,     0,     0,   214,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,     0,   215,     0,
+     0,   216,     0,     0,     0,     0,     0,     0,     0,   217,
+   218,   219,     0,     0,     0,   220,   221,     0,     0,     0,
+     0,     0,     0,   222,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,   244,    22,     0,     0,     0,     0,
+     0,     0,     0,     0,  -616,     0,     0,   223,   224,   794,
+     0,   203,   127,     6,     7,     8,   359,   205,   206,   243,
+   207,    10,     0,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,    12,   208,   209,   210,     0,
+   211,     0,    13,     0,   212,  -236,     0,   213,    15,    16,
+     0,     0,     0,   214,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,   215,     0,     0,   216,     0,
+     0,     0,     0,     0,     0,     0,   217,   218,   219,     0,
+     0,     0,   220,   221,     0,     0,     0,     0,     0,     0,
+   222,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     0,   244,    22,     0,     0,     0,     0,     0,     0,     0,
+     0,  -616,     0,     0,   223,   224,   524,     0,   717,   718,
+     6,     0,     8,   386,   205,   206,     0,   207,    10,     0,
+     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,    12,   208,   209,   210,     0,   211,     0,    13,
+     0,   212,  -236,     0,   213,    15,    16,     0,     0,     0,
+   214,     0,     0,     0,   525,     0,     0,     0,     0,     0,
+     0,     0,   215,     0,     0,   216,     0,     0,     0,     0,
+     0,     0,     0,   217,   218,   219,     0,     0,     0,   220,
+   221,     0,     0,     0,     0,     0,     0,   222,   719,   524,
+     0,   717,   718,     6,     0,     8,   386,   205,   206,   181,
+   207,    10,     0,     0,     0,     0,     0,     0,   970,     0,
+   720,   223,   224,     0,     0,    12,   208,   209,   210,     0,
+   211,     0,    13,     0,   212,  -236,     0,   213,    15,    16,
+     0,     0,     0,   214,     0,     0,     0,   525,     0,     0,
+     0,     0,     0,     0,     0,   215,     0,     0,   216,     0,
+     0,     0,     0,     0,     0,     0,   217,   218,   219,     0,
+     0,     0,   220,   221,     0,     0,     0,     0,     0,     0,
+   222,     0,  1080,     0,   203,   127,     6,     7,     8,   359,
+   205,   206,   181,   207,    10,     0,     0,     0,     0,     0,
+     0,     0,     0,   971,   223,   224,     0,     0,    12,   208,
+   209,   210,     0,   211,     0,    13,     0,   212,  -236,     0,
+   213,    15,    16,     0,     0,     0,   214,     0,     0,     0,
+  1081,     0,     0,     0,     0,     0,     0,     0,   215,     0,
+     0,   216,     0,     0,     0,     0,     0,     0,     0,   217,
+   218,   219,     0,     0,     0,   220,   221,     0,     0,     0,
+     0,     0,     0,   222,     0,   524,     0,   717,   718,     6,
+     0,     8,   386,   205,   206,    22,   207,    10,     0,     0,
+     0,     0,     0,     0,   970,  1082,     0,   223,   224,     0,
+     0,    12,   208,   209,   210,     0,   211,     0,    13,     0,
+   212,  -236,     0,   213,    15,    16,     0,     0,     0,   214,
+     0,     0,     0,   525,     0,     0,     0,     0,     0,     0,
+     0,   215,     0,     0,   216,     0,     0,     0,     0,     0,
+     0,     0,   217,   218,   219,     0,     0,     0,   220,   221,
+     0,     0,     0,     0,     0,     0,   222,     0,   524,     0,
+   717,   718,     6,     0,     8,   386,   205,   206,   181,   207,
+    10,     0,     0,     0,     0,     0,     0,     0,     0,  -329,
+   223,   224,     0,     0,    12,   208,   209,   210,     0,   211,
+     0,    13,     0,   212,  -236,     0,   213,    15,    16,     0,
+     0,     0,   214,     0,     0,     0,   525,     0,     0,     0,
+     0,     0,     0,     0,   215,     0,     0,   216,     0,     0,
+     0,     0,     0,     0,     0,   217,   218,   219,     0,     0,
+     0,   220,   221,     0,     0,     0,     0,     0,     0,   222,
+   719,   404,     0,   203,   127,     6,     0,     8,   204,   205,
+   206,   181,   207,    10,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,   223,   224,     0,     0,    12,   208,   209,
+   210,     0,   211,     0,    13,     0,   212,  -236,     0,   213,
+    15,    16,     0,     0,     0,   214,     0,     0,     0,  -207,
+     0,     0,     0,     0,     0,     0,     0,   215,     0,     0,
+   216,     0,     0,     0,     0,     0,     0,     0,   217,   218,
+   219,     0,     0,     0,   220,   221,     0,     0,     0,     0,
+     0,     0,   222,     0,   524,     0,   203,   127,     6,     0,
+     8,   386,   205,   206,    22,   207,    10,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,   223,   224,     0,     0,
+    12,   208,   209,   210,     0,   211,     0,    13,     0,   212,
+  -236,     0,   213,    15,    16,     0,     0,     0,   214,     0,
+     0,     0,   525,     0,     0,     0,     0,     0,     0,     0,
+   215,     0,     0,   216,     0,     0,     0,     0,     0,     0,
+     0,   217,   218,   219,     0,     0,     0,   220,   221,     0,
+     0,     0,     0,     0,     0,   222,     0,   624,     0,   203,
+   127,     6,     0,     8,   386,   205,   206,    22,   207,    10,
+     0,     0,     0,     0,     0,     0,     0,     0,     0,   223,
+   224,     0,     0,    12,   208,   209,   210,     0,   211,     0,
+    13,     0,   212,  -236,     0,   213,    15,    16,     0,     0,
+     0,   214,     0,     0,     0,     0,     0,     0,     0,     0,
+  -606,     0,     0,   215,     0,     0,   216,     0,     0,     0,
+     0,     0,     0,     0,   217,   218,   219,     0,     0,     0,
+   220,   221,     0,     0,     0,     0,     0,     0,   222,     0,
+   624,     0,   203,   127,     6,     0,     8,   386,   205,   206,
+    22,   207,    10,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,   223,   224,     0,     0,    12,   208,   209,   210,
+     0,   211,     0,    13,     0,   212,  -236,     0,   213,    15,
+    16,     0,     0,     0,   214,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,   215,     0,     0,   216,
+     0,     0,     0,     0,     0,     0,     0,   217,   218,   219,
+     0,     0,     0,   220,   221,     0,     0,     0,     0,     0,
+     0,   222,     0,   624,     0,   203,   127,     6,     0,     8,
+   386,   205,   206,    22,   207,    10,     0,     0,     0,     0,
+     0,     0,     0,  -606,     0,   223,   224,     0,     0,    12,
+   208,   209,   210,     0,   211,     0,    13,     0,   212,  -236,
+     0,   213,    15,    16,     0,     0,     0,   214,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,     0,     0,   215,
+     0,     0,   216,     0,     0,     0,     0,     0,     0,     0,
+   217,   218,   219,     0,     0,     0,   220,   221,     0,     0,
+     0,     0,     0,     0,   222,     0,   681,     0,   203,   127,
+     6,     0,     8,   386,   205,   206,    22,   207,    10,     0,
+     0,     0,     0,     0,     0,  -606,     0,     0,   223,   224,
+     0,     0,    12,   208,   209,   210,     0,   211,     0,    13,
+     0,   212,  -236,     0,   213,    15,    16,     0,     0,     0,
+   214,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,   215,     0,     0,   216,     0,     0,     0,     0,
+     0,     0,     0,   217,   218,   219,     0,     0,     0,   220,
+   221,     0,     0,     0,     0,     0,     0,   222,     0,     0,
+     0,   203,   127,     6,     0,     8,   386,   205,   206,    22,
+   207,    10,     0,     0,     0,     0,     0,     0,     0,     0,
+     0,   223,   224,     0,     0,    12,   208,   209,   210,     0,
+   211,     0,    13,     0,   212,     0,     0,   213,    15,    16,
+     0,     0,     0,   214,     3,     0,     4,     5,     6,     7,
+     8,     9,     0,     0,     0,   215,    10,     0,   216,     0,
+     0,     0,     0,     0,     0,     0,   217,   218,   219,    11,
+    12,     0,   220,   221,     0,     0,     0,    13,     0,     0,
+   222,    14,     0,    15,    16,     0,     0,    17,    18,     0,
+     0,     0,    22,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,    19,   223,   224,   653,     0,     0,     0,
+     0,     0,     0,    20,     0,     0,     0,   348,     0,     4,
+   127,     6,     7,     8,     9,    21,     0,     0,     0,    10,
+     0,     0,     0,     0,     0,     0,     0,    22,    23,    24,
+     0,     0,     0,    12,     0,     0,     0,    25,     0,    26,
+    13,  -370,     0,     0,     0,     0,    15,    16,     0,     0,
+     0,    18,     0,     0,     0,     0,     0,     0,     0,     0,
+   349,     0,     0,     0,     0,   348,    19,     4,   127,     6,
+     7,     8,     9,     0,     0,     0,    20,    10,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,     0,    21,     0,
+     0,    12,     0,     0,     0,     0,     0,     0,    13,  -371,
+    22,     0,     0,     0,    15,    16,     0,     0,     0,    18,
+   584,  -370,    26,     0,     0,     0,     0,     0,   349,     0,
+     0,     0,     0,   348,    19,     4,   127,     6,     7,     8,
+     9,     0,     0,     0,    20,    10,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,    21,     0,     0,    12,
+     0,     0,     0,     0,     0,     0,    13,  -369,    22,     0,
+     0,     0,    15,    16,     0,     0,     0,    18,   584,  -371,
+    26,     0,     0,     0,     0,     0,   349,     0,     0,     0,
+     0,   348,    19,     4,   127,     6,     7,     8,     9,     0,
+     0,     0,    20,    10,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,    21,     0,     0,    12,     0,     0,
+     0,     0,     0,     0,    13,  -372,    22,     0,     0,     0,
+    15,    16,     0,     0,     0,    18,     0,  -369,    26,     0,
+     0,     0,     0,     0,   349,     0,     0,     0,     0,     3,
+    19,     4,     5,     6,     7,     8,     9,     0,     0,     0,
+    20,    10,     0,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,    21,     0,     0,    12,     0,     0,     0,     0,
+     0,     0,    13,     0,    22,     0,     0,     0,    15,    16,
+     0,     0,     0,    18,     0,  -372,    26,     0,     0,     0,
+   126,     0,     4,   127,     6,     7,     8,     9,    19,     0,
+     0,     0,    10,     0,     0,     0,     0,     0,    20,     0,
+     0,     0,     0,     0,     0,     0,    12,     0,     0,     0,
+    21,     0,     0,    13,     0,     0,     0,     0,     0,    15,
+    16,     0,    22,    23,    18,     0,     0,     0,     0,     0,
+     0,     0,    25,     0,    26,   412,   413,   414,     0,    19,
+   415,   416,   417,   418,   419,   420,   421,   422,   423,    20,
+   425,   426,   427,   428,   429,   430,   431,     0,     0,     0,
+     0,    21,     0,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,    22,     0,     0,     0,   861,   127,     6,
+     7,     8,   359,   205,   206,    26,   207,    10,   862,     0,
+   863,   864,   865,   866,   867,   868,   869,   870,   871,   872,
+   873,    12,   208,   209,   210,     0,   211,     0,    13,     0,
+   212,     0,     0,   213,    15,    16,     0,     0,     0,   214,
+     0,     0,   874,   308,     0,     0,     0,     0,     0,     0,
+     0,   215,     0,     0,   216,     0,     0,     0,     0,     0,
+     0,     0,   217,   218,   219,     0,     0,     0,   220,   221,
+     0,     0,     0,     0,     0,     0,   222,     0,   875,     0,
+     0,   876,     0,     0,   877,   878,   879,     0,   880,     0,
+     0,     0,     0,     0,     0,     0,     0,     0,   881,  1020,
+   223,   224,   861,   127,     6,     7,     8,   359,   205,   206,
+     0,   207,    10,   862,     0,   863,   864,   865,   866,   867,
+   868,   869,   870,   871,   872,   873,    12,   208,   209,   210,
+     0,   211,     0,    13,     0,   212,     0,     0,   213,    15,
+    16,     0,     0,     0,   214,     0,     0,   874,   308,     0,
+     0,     0,     0,     0,     0,     0,   215,     0,     0,   216,
+     0,     0,     0,     0,     0,     0,     0,   217,   218,   219,
+     0,     0,     0,   220,   221,     0,     0,     0,     0,     0,
+     0,   222,     0,   875,     0,     0,   876,     0,     0,   877,
+   878,   879,     0,   880,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,   881,     0,   223,   224,   203,   127,     6,
+     0,     8,   386,   205,   206,     0,   207,    10,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     0,    12,   208,   209,   210,     0,   211,     0,    13,     0,
+   212,     0,     0,   213,    15,    16,     0,     0,     0,   214,
+     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     0,   215,     0,     0,   216,     0,     0,     0,     0,     0,
+     0,     0,   217,   218,   219,     0,     0,     0,   220,   221,
+     0,     0,     0,     0,     0,     0,   222,   443,     0,     0,
+   203,   127,     6,     0,     8,   386,   205,   206,    22,   207,
+    10,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+   223,   224,     0,     0,    12,   208,   209,   210,     0,   211,
+     0,    13,     0,   212,     0,     0,   213,    15,    16,     0,
+     0,     0,   214,     0,     0,     0,   806,     0,     0,     0,
+     0,     0,     0,     0,   215,     0,     0,   216,     0,     0,
+     0,     0,     0,     0,     0,   217,   218,   219,     0,     0,
+     0,   220,   221,     0,     0,     0,     0,     0,     0,   222,
+     0,     0,     0,   203,   127,     6,     0,     8,   386,   205,
+   206,    22,   207,    10,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,   223,   224,     0,     0,    12,   208,   209,
+   210,     0,   211,     0,    13,     0,   212,     0,     0,   213,
+    15,    16,     0,     0,     0,   214,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,   215,     0,     0,
+   216,     0,     0,     0,     0,     0,     0,     0,   217,   218,
+   219,     0,     0,     0,   220,   221,     0,     0,     0,     0,
+     0,     0,   222,     0,     0,     0,   203,   127,     6,     0,
+     8,   386,   205,   206,    22,   207,    10,     0,     0,     0,
+     0,     0,     0,     0,   988,     0,   223,   224,     0,     0,
+    12,   208,   209,   210,     0,   211,     0,    13,     0,   212,
+     0,     0,   213,    15,    16,     0,     0,     0,   214,     0,
+     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+   215,     0,     0,   216,     0,     0,     0,     0,     0,     0,
+     0,   217,   218,   219,     0,     0,     0,   220,   221,     0,
+     0,     0,     0,     0,     0,   222,     0,     0,     0,   203,
+   127,     6,     0,     8,   204,   205,   206,    22,   207,    10,
+     0,     0,     0,     0,     0,     0,     0,  1001,     0,   223,
+   224,     0,     0,    12,   208,   209,   210,     0,   211,     0,
+    13,     0,   212,     0,     0,   213,    15,    16,     0,     0,
+     0,   214,     0,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,   215,     0,     0,   216,     0,     0,     0,
+     0,     0,     0,     0,   217,   218,   219,     0,     0,     0,
+   220,   221,     0,     0,     0,     0,     0,     0,   222,     0,
+     0,     0,   203,   127,     6,     0,     8,   386,   205,   206,
+    22,   207,    10,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,   223,   224,     0,     0,    12,   208,   209,   210,
+     0,   211,     0,    13,     0,   212,     0,     0,   213,    15,
+    16,     0,     0,     0,   214,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,   215,     0,     0,   216,
+     0,     0,     0,     0,     0,     0,     0,   217,   218,   219,
+     0,     0,     0,   220,   221,     0,     0,     0,     0,     0,
+     0,   222,     0,     0,     0,   203,   612,     6,     0,     8,
+   386,   205,   206,    22,   207,    10,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,   223,   224,     0,     0,    12,
+   208,   209,   210,     0,   211,     0,    13,     0,   212,     0,
+     0,   213,    15,    16,     0,     0,     0,   214,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,     0,     0,   215,
+     0,     0,   216,     0,     0,     0,     0,     0,     0,     0,
+   217,   218,   219,     0,     0,     0,   220,   221,     0,     0,
+     0,   203,   127,     6,   222,     8,   386,   205,   206,     0,
+   207,    10,     0,     0,     0,     0,    22,     0,     0,     0,
+     0,     0,     0,     0,     0,    12,   208,     0,   223,   224,
+   211,     0,    13,     0,   212,     0,     0,   213,    15,    16,
+     0,     0,     0,   214,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,   215,     0,     0,   216,     0,
+     0,     0,     0,     0,     0,     0,   217,   218,   219,     0,
+     0,     0,   220,   221,     0,     0,     0,   203,   127,     6,
+   387,     8,   386,   205,   206,     0,   207,    10,     0,     0,
+     0,     0,    22,     0,     0,     0,     0,     0,     0,     0,
+     0,    12,   208,     0,   223,   224,   211,     0,    13,     0,
+   212,     0,     0,   213,    15,    16,     0,     0,     0,   214,
+     0,     0,     4,   127,     6,     7,     8,     9,     0,     0,
+   243,   215,    10,     0,   216,     0,     0,     0,     0,     0,
+     0,     0,   217,   218,   219,     0,    12,     0,   220,   221,
+     0,     0,     0,    13,     0,     0,   391,     0,     0,    15,
+    16,     0,   263,     0,    18,     0,     0,     0,    22,     0,
+     0,     0,     0,     4,   158,     6,   159,     8,   160,   663,
+   223,   224,     0,    10,     0,     0,     0,     0,     0,   664,
+     0,     0,     0,     0,     0,     0,   267,    12,     0,     0,
+     0,   665,   269,     0,    13,     0,     0,     0,     0,     0,
+    15,    16,   244,    22,     0,    18,   145,     0,     4,   127,
+     6,     7,     8,     9,     0,    26,   243,     0,    10,     0,
+   146,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+   147,     0,    12,     0,     0,     0,     0,   148,     0,    13,
+     0,     0,   149,     0,     0,    15,    16,     0,     0,     0,
+    18,     0,     0,     0,    22,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,   161,   319,    26,     0,     0,     0,
+     0,     0,     0,     0,     0,   320,     4,   158,     6,   159,
+     8,   160,   321,     0,     0,     0,    10,   322,     0,     0,
+     0,     0,     4,   158,     6,   159,     8,   160,   244,    22,
+    12,     0,    10,     0,     0,     0,     0,    13,     0,     0,
+     0,    26,     0,    15,    16,     0,    12,     0,    18,   145,
+     0,   337,     0,    13,     0,     0,     0,     0,     0,    15,
+    16,     0,     0,   146,    18,   145,     0,     0,     0,     0,
+     0,     0,     0,   147,  -638,     0,  -638,     0,     0,   146,
+   148,  -638,     0,     0,     0,   149,     0,     0,     0,   147,
+     0,     0,     0,   193,     0,     0,   148,    22,     0,  -638,
+  -638,   149,  -638,     0,  -638,     0,     0,  1008,     0,    26,
+     0,     0,     0,    22,   127,     6,     7,     8,     9,     0,
+     0,   243,     0,    10,     0,    26,     0,     0,     0,     0,
+     0,     0,   194,   195,     0,   196,     0,    12,     0,     0,
+     0,     0,   197,     0,    13,     0,    71,     6,     0,     8,
+   274,    16,     0,   263,  -253,    10,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,     0,     0,    12,
+   265,     0,     0,     0,     0,     0,    13,     0,     0,     0,
+   266,     0,     0,    16,     0,   263,     0,   267,   264,     0,
+     0,     0,   268,   269,     0,     0,     0,     0,     0,     0,
+     0,     0,   265,   244,    22,     0,     0,     0,     0,     0,
+     0,     0,   266,     0,     0,     0,     0,     0,     0,   267,
+     0,     0,     0,     0,   268,   269,     0,     0,     0,     0,
+     0,     0,   412,   413,   414,     0,    22,   415,   416,   417,
+   418,   419,   420,   421,   422,   423,   424,   425,   426,   427,
+   428,   429,   430,   431,   412,   413,   414,     0,     0,   415,
+   416,   417,   418,   419,   420,   421,   422,   423,   424,   425,
+   426,   427,   428,   429,   430,   431,     0,     0,     0,     0,
+     0,     0,     0,     0,   600,     0,     0,     0,     0,   968,
+   418,   419,   420,   421,   422,   423,   424,   425,   426,   427,
+   428,   429,   430,   431,   412,   413,   414,   757,   758,   415,
+   416,   417,   418,   419,   420,   421,   422,   423,   424,   425,
+   426,   427,   428,   429,   430,   431,  -138,   412,   413,   414,
+     0,     0,   415,   416,   417,   418,   419,   420,   421,   422,
+   423,   424,   425,   426,   427,   428,   429,   430,   431,   412,
+   413,   414,  1138,     0,   415,   416,   417,   418,   419,   420,
+   421,   422,   423,   424,   425,   426,   427,   428,   429,   430,
+   431,   412,   413,   414,     0,     0,   415,   416,   417,   418,
+   419,   420,   421,   422,   423,   424,   425,   426,   427,   428,
+   429,   430,   431,   414,     0,     0,   415,   416,   417,   418,
+   419,   420,   421,   422,   423,   424,   425,   426,   427,   428,
+   429,   430,   431,   416,   417,   418,   419,   420,   421,   422,
+   423,   424,   425,   426,   427,   428,   429,   430,   431,   417,
+   418,   419,   420,   421,   422,   423,   424,   425,   426,   427,
+   428,   429,   430,   431
+};
+
+static const short yycheck[] = {     1,
+     2,    66,    10,   137,   138,    15,     1,     2,    15,    15,
+   298,   106,    67,    15,    39,    21,    43,   595,    38,   354,
+   269,   207,   208,   149,    60,    18,   886,    29,    37,    38,
+   216,    37,   277,   219,   214,    43,    38,   223,   277,   327,
+   706,   227,   566,   241,   264,    67,   111,   233,   268,    11,
+   893,   136,   895,    39,    60,   138,   216,    59,    60,   219,
+  1029,  1030,   189,   223,   944,    67,    10,   227,   514,    10,
+    35,    35,    50,   233,    45,    43,    10,     3,     4,     3,
+     4,    50,   107,   332,    54,    10,   145,    10,    50,    70,
+    71,    72,    54,    64,   194,     3,     4,     3,     4,     5,
+    49,   547,   108,     1,    50,    54,   108,     8,   114,   115,
+   116,     3,     4,     5,    82,    83,    40,    85,   120,   128,
+   129,    50,   128,   125,    92,   103,    24,   129,    26,    54,
+   125,    93,    40,    31,   104,   104,   104,    43,   163,   145,
+   105,   105,   237,   149,   169,   240,     3,     4,     3,     4,
+    50,    49,    50,    45,    52,   104,    54,   103,   194,   103,
+     3,     4,   103,   156,  1024,   201,   172,   222,  1028,   103,
+    94,   305,   306,   307,   698,   104,    82,   163,   103,   845,
+   103,  1061,   106,   169,    85,   312,    94,    85,    94,   191,
+   196,    92,   194,   199,    92,   201,   322,     0,   106,   201,
+   222,   196,    94,   303,   104,    97,   104,   215,   214,   395,
+    50,    45,   214,   238,    82,   503,    82,   397,    24,   304,
+   222,    50,   305,   306,  1193,  1194,   465,    70,    50,   235,
+    64,   331,    64,    45,   240,   395,    34,    94,   240,    94,
+   246,    26,   491,   251,   246,    50,    31,   272,    54,    49,
+   275,    94,    64,   451,    54,   701,     3,     4,   317,   318,
+    50,   481,   482,     3,   104,    50,   268,    52,   132,   557,
+   104,   277,   406,   300,    50,   277,   105,     3,     4,    50,
+     6,   302,   104,   285,    82,   385,   272,   151,     3,     4,
+   285,   103,   300,    50,   300,   331,   545,   875,    50,   877,
+   105,   165,  1145,   749,   104,   300,     3,     4,     5,    35,
+   335,   317,   318,     5,   104,   105,   322,   763,   345,   104,
+   844,   376,   328,  1183,     3,     4,    50,   333,   104,   331,
+    24,    50,   387,   104,    49,    64,   391,   362,   202,   439,
+     1,    49,   351,   352,   366,   351,   103,    94,    45,   335,
+   352,   103,   354,    45,    43,    49,   456,    43,    52,    50,
+    54,    40,    43,    50,    43,   387,    45,    46,    94,   391,
+   376,   393,   394,    49,   376,    50,   362,    49,    54,    94,
+   104,    60,     3,     4,   103,   387,    54,   442,    49,   391,
+    50,    70,   414,    82,    83,   529,    82,    94,    77,    54,
+    97,    82,    83,    82,    83,     3,     4,   409,     6,    64,
+   104,    50,   103,    49,   103,    94,   103,   517,   440,    40,
+    54,   443,   103,    50,    45,    36,   290,   106,   103,     4,
+     5,     6,     7,     8,    45,   103,   442,    35,    13,    60,
+   442,   449,   662,   103,   544,   665,   529,   468,   574,    70,
+    10,   696,    27,   579,   490,   461,   462,   696,    50,    34,
+    50,    82,    43,   465,   103,   473,    41,   653,   493,   103,
+   497,   917,     1,    94,   105,   921,   103,   341,   766,   538,
+   539,    64,    50,    50,   490,   106,   774,    43,   490,   497,
+    54,    50,   356,   653,   104,   105,    94,    50,    65,     3,
+     4,    82,    83,   603,     8,   605,   108,   493,   544,     1,
+     2,   103,    65,   103,   522,    50,   616,   525,   382,    94,
+    49,    50,   103,    43,     8,    43,    82,    83,     5,    21,
+    60,    50,   538,   539,   599,   103,    40,    29,   574,   566,
+    70,    45,   544,   579,   103,    37,    38,   103,   648,    45,
+   650,     4,     5,    43,     7,     8,    60,   657,     8,    43,
+    13,   661,    82,    83,    82,    83,    70,   603,   103,   605,
+    43,   105,   574,    77,    27,    50,    60,   579,    82,    50,
+    85,    34,    50,   103,   103,   103,    70,    92,    41,   595,
+    94,    50,    82,    77,   929,    48,    50,  1043,    82,    83,
+   595,   603,   106,   605,    98,     3,     4,   827,   828,    82,
+     8,   711,    50,   713,    50,    50,   716,   837,   838,    43,
+    50,     3,   114,   115,   116,    43,   651,    45,   103,    82,
+   104,   105,   103,   125,   820,   103,   128,   129,    43,  1217,
+   650,    94,    40,   650,   103,    43,    64,    45,   650,   103,
+    49,   462,    43,   145,   465,    54,   662,   149,    82,    83,
+   820,   104,    60,   665,    82,   103,    43,   103,   103,   677,
+    43,   698,    70,   103,   733,   734,  1122,    82,  1124,    77,
+   172,    49,   709,    60,    82,    83,    54,    43,   747,   748,
+   696,    82,    83,    70,   696,    43,    94,    43,   108,   191,
+    77,   709,    54,   709,   196,    82,    83,   199,   106,    82,
+    83,   575,     3,     4,   709,    82,   580,   817,   726,   814,
+   815,    43,    82,   823,   751,   727,    82,   733,   734,   784,
+    52,    43,    43,    43,    82,    83,    82,    85,     3,     4,
+     5,   747,   748,   235,    92,     3,   811,    50,    50,    40,
+    43,     9,   852,    43,    45,    46,    21,  1045,   767,  1081,
+    82,   767,    65,    65,     4,     5,     6,     7,     8,    60,
+    82,    82,    82,    13,  1096,   777,   268,  1099,   784,    70,
+    45,    82,   784,    82,    43,    37,    77,    27,    41,    82,
+    49,    82,    82,   285,    34,    54,    49,   818,   806,     1,
+     2,    41,    10,    94,    52,    85,   670,    43,   300,   815,
+   831,   832,    92,   815,  1102,   106,    43,   844,   103,    46,
+   103,   827,   828,    82,   104,   317,   318,    29,   105,    94,
+   322,   103,    97,    60,   855,   856,   328,    50,    74,    75,
+   105,   333,    78,    70,    80,   867,    82,    83,   856,   871,
+    77,    26,     3,     4,    94,    82,    83,   879,    60,   351,
+   352,     3,   354,   108,   872,   885,    26,   875,    49,   875,
+   105,   877,     3,    26,    49,   884,   885,   108,   884,    54,
+   875,   103,   877,   885,   886,   104,   105,  1136,  1137,    40,
+   892,   893,   947,   895,    45,    46,    49,   899,   762,    45,
+   103,    54,   108,    85,    24,    50,    26,   771,    54,    60,
+    92,    31,   933,    82,     3,     4,   104,   105,    64,    70,
+   104,   105,   104,   125,    31,    45,    77,   929,    52,    49,
+   103,    82,    52,   797,   104,   105,    59,   104,   105,   104,
+   105,   947,   103,    94,    64,   947,   103,   968,   103,     3,
+     4,    40,    50,   104,    43,   106,    45,   979,    54,    55,
+   982,   983,   103,    83,   104,    85,   974,   103,   990,   461,
+   462,    60,    92,   465,   108,     6,     7,     8,   108,   981,
+   982,    70,    13,   104,   105,   105,    40,    34,    77,   191,
+   104,    45,   194,    82,    83,  1095,   104,   120,  1098,   201,
+   104,   105,   104,    34,   104,    94,    60,  1029,  1030,    33,
+    41,  1019,  1018,   108,  1035,   103,    70,   106,   104,   105,
+   207,   208,  1024,  1018,   103,   108,  1028,  1092,    82,    68,
+    69,    70,    71,    72,  1134,    50,  1131,  1132,  1059,     5,
+    94,  1066,     1,     2,    54,    54,   538,   539,    82,    52,
+   103,  1059,   106,   103,  1075,  1065,  1078,   103,  1065,  1065,
+   103,   925,    21,  1065,    54,  1087,   268,   103,   108,    82,
+    29,   194,    52,   108,    52,   277,     1,     2,    52,    38,
+   105,   103,   574,   285,    54,   108,  1088,   579,     6,     7,
+     8,    54,     6,     7,     8,    13,     3,     4,  1119,    13,
+  1121,     8,    94,   595,    29,  1107,    54,   103,  1242,  1243,
+   103,   108,    52,   236,  1135,   103,    34,  1138,   103,   103,
+    34,    82,   103,    41,   103,    43,  1132,    41,   103,   331,
+  1132,  1265,   105,    40,    54,    60,    82,    82,    45,    82,
+   104,    54,  1006,  1145,   104,     8,  1148,  1011,    49,    49,
+   104,    15,   354,    60,    52,   114,   115,   116,    54,     3,
+    50,     7,     8,    70,    82,   103,   125,    13,   103,    54,
+   662,  1193,  1194,   665,  1195,    82,  1040,  1179,  1233,   302,
+   303,  1183,  1184,  1205,  1048,    82,   145,    94,    34,   104,
+   149,    82,   104,   104,   104,    41,   104,    52,   104,   106,
+   125,   104,  1204,    82,  1226,    52,   105,  1209,   331,    83,
+    83,  1217,    16,   105,   103,    49,   104,   709,   104,   103,
+    52,   104,  1217,   104,   104,   103,   349,  1233,   104,   104,
+    54,  1233,   191,   103,     3,     4,  1244,     6,     7,     8,
+   199,   733,   734,  1245,  1246,    50,   103,     7,     8,   103,
+   103,    82,   108,    13,    10,   747,   748,   108,     9,   104,
+    89,   104,   385,   465,   104,    34,   191,    82,    50,   194,
+    82,   886,    50,   103,    34,   767,   201,   892,   103,    48,
+    49,    41,   103,    43,   104,   777,   409,     9,   490,   412,
+   413,   104,   415,   416,   417,   418,   419,   420,   421,   422,
+   423,   424,   425,   426,   427,   428,   429,   430,   431,   103,
+   103,    10,   104,   103,    10,   438,   439,   104,     1,     2,
+     0,     0,    82,   124,     2,    94,   285,   696,   125,   287,
+    99,   100,   101,   456,   125,   827,   828,   136,    21,   709,
+   120,   497,   544,   268,   409,   468,    29,   750,  1061,   982,
+  1127,   275,   277,   476,    37,    38,   163,   884,   317,   318,
+   285,   328,   806,   322,   679,    29,   981,    29,   751,   566,
+   777,   730,   574,   899,   333,   352,   473,   579,     7,     8,
+   677,     3,     4,   875,    13,   877,   322,     4,     5,   728,
+     7,     8,   884,   885,   517,   354,    13,     3,     4,  1025,
+  1227,   603,   525,   605,  1229,    34,   331,   899,   246,  1024,
+    27,  1018,    41,  1028,    43,    -1,    -1,    34,    40,   784,
+    -1,   544,    -1,    45,    41,    -1,    -1,    -1,    -1,   354,
+    -1,   114,   115,   116,    40,    -1,    -1,   929,    60,    45,
+    46,    -1,   125,    -1,    -1,   128,   129,    -1,    70,   572,
+   573,    -1,    -1,    82,    60,    77,    -1,    -1,    -1,    -1,
+    82,    -1,   145,   665,    70,    -1,   149,    -1,    -1,    -1,
+    -1,    77,    94,  1088,    -1,    -1,    82,    94,    -1,    -1,
+   603,    -1,   605,    -1,   106,    -1,    -1,    -1,    94,   172,
+    -1,    -1,  1107,   616,   696,    -1,    -1,   620,   104,    -1,
+   106,    -1,   461,   462,     3,     4,   465,    -1,   191,    -1,
+    -1,    -1,    -1,    -1,     3,     4,   199,     6,     7,     8,
+    -1,    -1,    -1,    -1,    -1,   648,  1018,   650,    -1,    -1,
+    -1,   214,    -1,  1148,   657,    -1,    -1,    -1,   661,    -1,
+   465,    40,    -1,    -1,    43,    34,    45,    46,    -1,    48,
+    -1,    -1,   235,   676,    -1,    54,    -1,    -1,   241,    48,
+    49,    60,    -1,    -1,  1179,   490,    -1,    -1,  1183,  1184,
+    -1,    70,    -1,    -1,    -1,   777,     1,    -1,    77,   538,
+   539,    -1,    -1,    82,    19,    20,     3,     4,   711,  1204,
+   713,    -1,    -1,   716,  1209,    94,   719,    -1,    -1,    24,
+    -1,    26,   285,    -1,    -1,    94,    31,   106,    -1,    -1,
+    99,   100,   101,    -1,    -1,   574,    -1,    -1,    43,   544,
+   579,    -1,    57,    40,    49,    50,    -1,    52,    45,    54,
+  1245,  1246,    -1,    -1,   317,   318,   759,    -1,    -1,   322,
+    75,    -1,    -1,    60,    -1,   328,    -1,    -1,    -1,   574,
+   333,    -1,    -1,    70,   579,    -1,    -1,    82,    83,    -1,
+    85,    -1,    -1,    -1,    -1,    82,    -1,    92,   351,   352,
+    -1,   354,    -1,    -1,    -1,    -1,    -1,    94,   603,   104,
+   605,    -1,    -1,   806,    -1,   808,    -1,    -1,    -1,   106,
+    -1,    -1,     7,     8,   817,   818,    -1,   899,    13,    -1,
+   823,     4,     5,   662,     7,     8,   665,    -1,   831,   832,
+    13,   146,   147,     3,     4,     5,     6,     7,     8,    34,
+    -1,    11,    -1,    13,    27,  1217,    41,   929,    43,   852,
+    -1,    34,   855,   856,    -1,    -1,    -1,    27,    41,    -1,
+   665,    -1,    -1,    -1,    34,    -1,    -1,    -1,    -1,    -1,
+    40,    41,    -1,    43,    -1,    45,    46,    -1,   193,    -1,
+    -1,    -1,    -1,    -1,    -1,   200,    -1,    82,   451,    -1,
+    60,   696,    -1,    -1,   733,   734,    -1,    -1,   461,   462,
+    70,    -1,   465,    -1,    -1,    -1,    -1,    77,   747,   748,
+    -1,    94,    82,    83,    -1,    -1,    -1,    -1,    -1,    -1,
+   923,   924,    -1,    -1,    94,    -1,    -1,    -1,    -1,    -1,
+   933,     3,     4,     5,    -1,     7,   106,    -1,   777,    -1,
+    -1,    13,    -1,    -1,    -1,    -1,    43,    -1,   263,    -1,
+   265,   266,    -1,     0,     1,    27,     3,     4,     5,     6,
+     7,     8,    34,    -1,    36,   968,    13,   970,    40,    41,
+    -1,    -1,   777,    45,    -1,   538,   539,    74,    75,    26,
+    27,    78,    79,    80,    81,    82,    83,    34,   827,   828,
+    -1,    38,    -1,    40,    41,    -1,    -1,    44,    45,    -1,
+    -1,    -1,    -1,    -1,   319,   320,    -1,    -1,    -1,    -1,
+    -1,   574,    -1,    60,    -1,   330,   579,    -1,    -1,    -1,
+    -1,    -1,    94,    70,     3,     4,     3,     4,    -1,    -1,
+    -1,    -1,  1035,    -1,    -1,    82,    -1,    -1,    -1,  1042,
+    -1,    -1,    -1,    -1,    -1,    -1,   885,    94,    95,    96,
+    -1,    -1,    -1,    -1,    -1,    -1,  1059,   104,    -1,   106,
+   899,    40,    -1,    40,    -1,    -1,    45,    46,    45,    48,
+    -1,    -1,  1075,    -1,    -1,    54,    -1,    -1,    -1,    -1,
+    -1,    60,    -1,    60,    -1,    -1,    -1,    -1,    -1,    -1,
+   929,    70,  1095,    70,   899,  1098,    -1,    -1,    77,   662,
+    77,    -1,   665,    82,    -1,    82,    -1,    -1,    -1,    -1,
+     4,     5,    -1,     7,     8,    94,  1119,    94,  1121,    13,
+     3,     4,    -1,    -1,   929,    -1,    -1,   106,    -1,   106,
+    -1,  1134,  1135,    27,    -1,  1138,    -1,    -1,    -1,     1,
+    34,     3,     4,     5,     6,     7,     8,    41,   463,    -1,
+    -1,    13,    -1,    -1,    48,    -1,    -1,    40,    -1,    -1,
+    -1,    -1,    45,    -1,    26,    27,    -1,    -1,    -1,    -1,
+   733,   734,    34,    -1,   489,    -1,    38,    60,    40,    41,
+    -1,    -1,    44,    45,   747,   748,    -1,    70,    82,    -1,
+    -1,    -1,  1195,    -1,    77,    -1,    -1,    -1,    60,    82,
+    94,    -1,    -1,    -1,   767,    -1,    -1,    -1,    70,    -1,
+    -1,    94,    -1,    -1,   777,    -1,    -1,    -1,    -1,    -1,
+    82,    -1,    -1,   106,    -1,   540,   541,    -1,   543,    -1,
+    -1,    -1,    94,    95,    96,    -1,    -1,    -1,    -1,    -1,
+   555,   556,   104,   105,   106,    62,    63,    64,    65,    66,
+    67,    68,    69,    70,    71,    72,   571,    -1,    -1,    -1,
+    -1,    -1,    -1,   578,   827,   828,     3,     4,     5,     6,
+     7,     8,   587,   588,   589,    -1,    13,    63,    64,    65,
+    66,    67,    68,    69,    70,    71,    72,   602,    -1,   604,
+    27,    -1,   607,    -1,    -1,    -1,    -1,    34,    -1,    -1,
+    -1,    -1,    -1,    40,    41,    -1,    43,    -1,    45,    46,
+    -1,    48,    -1,    -1,    -1,    -1,    -1,    54,    -1,    -1,
+    -1,   884,   885,    60,    -1,    -1,    -1,    -1,     4,     5,
+     6,     7,     8,    70,    -1,    11,   899,    13,    -1,    -1,
+    77,    -1,    -1,    -1,    -1,    82,    -1,    -1,   663,   664,
+    -1,    27,    -1,    -1,    -1,    -1,    -1,    94,    34,    -1,
+    -1,    -1,    -1,    -1,    -1,    41,   929,    -1,    -1,   106,
+   685,   686,    -1,    -1,   689,     1,    -1,     3,     4,     5,
+     6,     7,     8,     9,    10,    -1,    12,    13,    14,    15,
+    16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
+    26,    27,    28,    29,    30,    -1,    32,    -1,    34,    -1,
+    36,    37,    -1,    39,    40,    41,    -1,    93,    94,    45,
+    -1,    -1,    48,    49,    -1,    -1,    -1,    -1,   743,   744,
+   745,    57,    -1,    -1,    60,    66,    67,    68,    69,    70,
+    71,    72,    68,    69,    70,    -1,    -1,    -1,    74,    75,
+    -1,    -1,    -1,    -1,    -1,    -1,    82,    -1,    84,    -1,
+    86,    87,    88,    -1,    90,    91,    92,    -1,    94,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   104,   105,
+   106,   107,     1,    -1,     3,     4,     5,     6,     7,     8,
+     9,    10,    -1,    12,    13,    14,    -1,    16,    17,    18,
+    19,    20,    21,    22,    23,    24,    25,    26,    27,    28,
+    29,    30,    -1,    32,    -1,    34,    -1,    36,    37,    -1,
+    39,    40,    41,    -1,    -1,   840,    45,    -1,    -1,    48,
+    49,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    57,    -1,
+    -1,    60,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    68,
+    69,    70,    -1,    -1,    -1,    74,    75,    -1,    -1,    -1,
+    -1,    -1,    -1,    82,    -1,    84,    -1,    -1,    87,    -1,
+    -1,    90,    91,    92,    -1,    94,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,   104,   105,   106,   107,   904,
+   905,   906,    60,    61,    62,    63,    64,    65,    66,    67,
+    68,    69,    70,    71,    72,   920,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,   928,    -1,    -1,    -1,    -1,    -1,   934,
+   935,   936,   937,   938,   939,     1,    -1,     3,     4,     5,
+     6,     7,     8,     9,    10,    -1,    12,    13,    14,    -1,
+    16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
+    26,    27,    28,    29,    30,    -1,    32,    -1,    34,    -1,
+    36,    37,    -1,    39,    40,    41,    -1,    -1,    -1,    45,
+    -1,    -1,    48,    49,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    57,    -1,    -1,    60,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    68,    69,    70,    -1,    -1,    -1,    74,    75,
+    -1,    -1,    -1,    -1,    -1,    -1,    82,    -1,    84,    -1,
+    -1,    87,    -1,    -1,    90,    91,    92,    -1,    94,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   104,   105,
+   106,   107,     1,    -1,     3,     4,     5,     6,     7,     8,
+     9,    10,    -1,    12,    13,    14,    -1,    16,    17,    18,
+    19,    20,    21,    22,    23,    24,    25,    26,    27,    28,
+    29,    30,    -1,    32,    -1,    34,    -1,    36,    37,    -1,
+    39,    40,    41,    -1,    -1,    -1,    45,    -1,    -1,    48,
+    49,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    57,    -1,
+    -1,    60,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    68,
+    69,    70,    -1,    -1,    -1,    74,    75,    -1,    -1,    -1,
+    -1,    -1,    -1,    82,    -1,    84,    -1,    -1,    87,    -1,
+    -1,    90,    91,    92,    -1,    94,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,   104,   105,   106,   107,     1,
+    -1,     3,     4,     5,     6,     7,     8,     9,    10,    -1,
+    12,    13,    14,    -1,    16,    17,    18,    19,    20,    21,
+    22,    23,    24,    25,    26,    27,    28,    29,    30,    -1,
+    32,    -1,    34,    -1,    36,    37,    -1,    39,    40,    41,
+    -1,    -1,    -1,    45,    -1,    -1,    48,    49,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    57,    -1,    -1,    60,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    68,    69,    70,    -1,
+    -1,    -1,    74,    75,    -1,    -1,    -1,    -1,    -1,    -1,
+    82,    -1,    84,    -1,    -1,    87,    -1,    -1,    90,    91,
+    92,    -1,    94,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,   104,   105,   106,   107,     1,    -1,     3,     4,
+     5,     6,     7,     8,     9,    10,    -1,    12,    13,    14,
+    -1,    16,    17,    18,    19,    20,    21,    22,    23,    24,
+    25,    26,    27,    28,    29,    30,    -1,    32,    -1,    34,
+    -1,    36,    37,    -1,    39,    40,    41,    -1,    -1,    -1,
+    45,    -1,    -1,    48,    49,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    57,    -1,    -1,    60,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    68,    69,    70,    -1,    -1,    -1,    74,
+    75,    -1,    -1,    -1,    -1,    -1,    -1,    82,    -1,    84,
+    -1,    -1,    87,    -1,    -1,    90,    91,    92,    -1,    94,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   104,
+   105,   106,   107,     1,    -1,     3,     4,     5,     6,     7,
+     8,     9,    10,    -1,    12,    13,    14,    -1,    16,    17,
+    18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
+    28,    29,    30,    -1,    32,    -1,    34,    -1,    36,    37,
+    -1,    39,    40,    41,    -1,    -1,    -1,    45,    -1,    -1,
+    48,    49,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    57,
+    -1,    -1,    60,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    68,    69,    70,    -1,    -1,    -1,    74,    75,    -1,    -1,
+    -1,    -1,    -1,    -1,    82,    -1,    84,    -1,    -1,    87,
+    -1,    -1,    90,    91,    92,    -1,    94,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,   104,   105,   106,   107,
+     1,    -1,     3,     4,     5,     6,     7,     8,     9,    10,
+    -1,    12,    13,    14,    -1,    16,    17,    18,    19,    20,
+    21,    22,    23,    24,    25,    26,    27,    28,    29,    30,
+    -1,    32,    -1,    34,    -1,    36,    37,    -1,    39,    40,
+    41,    -1,    -1,    -1,    45,    -1,    -1,    48,    49,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    57,    -1,    -1,    60,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    68,    69,    70,
+    -1,    -1,    -1,    74,    75,    -1,    -1,    -1,    -1,    -1,
+    -1,    82,    -1,    84,    -1,    -1,    87,    -1,    -1,    90,
+    91,    92,    -1,    94,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,   104,    -1,   106,   107,     1,    -1,     3,
+     4,     5,     6,     7,     8,     9,    10,    -1,    12,    13,
+    14,    -1,    16,    17,    18,    19,    20,    21,    22,    23,
+    24,    25,    26,    27,    28,    29,    30,    -1,    32,    -1,
+    34,    -1,    36,    37,    -1,    39,    40,    41,    -1,    -1,
+    -1,    45,    -1,    -1,    48,    49,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    57,    -1,    -1,    60,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    68,    69,    70,    -1,    -1,    -1,
+    74,    75,    -1,    -1,    -1,    -1,    -1,    -1,    82,    -1,
+    84,    -1,    -1,    87,    -1,    -1,    90,    91,    92,     1,
+    94,    -1,     4,     5,    -1,     7,     8,    -1,    -1,    -1,
+   104,    13,   106,   107,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    27,    -1,    -1,    -1,    -1,
+    -1,    -1,    34,    -1,    36,    37,    -1,    -1,    -1,    41,
+    42,    43,    -1,    -1,    -1,    -1,    -1,    -1,    50,    51,
+    52,    53,    -1,    -1,    56,    57,    58,    59,    60,    61,
+    62,    63,    64,    65,    66,    67,    68,    69,    70,    71,
+    72,    -1,    74,    75,    -1,    -1,    78,    79,    -1,    -1,
+    -1,    83,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,     1,    94,     3,     4,     5,     6,     7,     8,     9,
+    10,    11,    12,    13,   106,   107,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    27,    28,    29,
+    30,    -1,    32,    -1,    34,    -1,    36,    37,    -1,    39,
+    40,    41,    -1,    -1,    -1,    45,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    57,    -1,    -1,
+    60,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    68,    69,
+    70,    -1,    -1,    -1,    74,    75,    -1,    -1,    -1,    -1,
+    -1,    -1,    82,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    93,    94,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,   103,    -1,    -1,   106,   107,     1,    -1,
+     3,     4,     5,     6,     7,     8,     9,    10,    11,    12,
+    13,    61,    62,    63,    64,    65,    66,    67,    68,    69,
+    70,    71,    72,    -1,    27,    28,    29,    30,    -1,    32,
+    -1,    34,    -1,    36,    37,    -1,    39,    40,    41,    -1,
+    -1,    -1,    45,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    57,    -1,    -1,    60,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    68,    69,    70,    -1,    -1,
+    -1,    74,    75,    -1,    -1,    -1,    -1,    -1,    -1,    82,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    93,    94,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+   103,    -1,    -1,   106,   107,     1,    -1,     3,     4,     5,
+     6,     7,     8,     9,    10,    11,    12,    13,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    27,    28,    29,    30,    -1,    32,    -1,    34,    -1,
+    36,    37,    -1,    39,    40,    41,    -1,    -1,    -1,    45,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    57,    -1,    -1,    60,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    68,    69,    70,    -1,    -1,    -1,    74,    75,
+    -1,    -1,    -1,    -1,    -1,    -1,    82,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    93,    94,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,   103,    -1,    -1,
+   106,   107,     1,    -1,     3,     4,     5,     6,     7,     8,
+     9,    10,    11,    12,    13,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    27,    28,
+    29,    30,    -1,    32,    -1,    34,    -1,    36,    37,    -1,
+    39,    40,    41,    -1,    -1,    -1,    45,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    57,    -1,
+    -1,    60,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    68,
+    69,    70,    -1,    -1,    -1,    74,    75,    -1,    -1,    -1,
+    -1,    -1,    -1,    82,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    93,    94,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,   103,    -1,    -1,   106,   107,     1,
+    -1,     3,     4,     5,     6,     7,     8,     9,    10,    11,
+    12,    13,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    27,    28,    29,    30,    -1,
+    32,    -1,    34,    -1,    36,    37,    -1,    39,    40,    41,
+    -1,    -1,    -1,    45,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    57,    -1,    -1,    60,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    68,    69,    70,    -1,
+    -1,    -1,    74,    75,    -1,    -1,    -1,    -1,    -1,    -1,
+    82,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    93,    94,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,   103,    -1,    -1,   106,   107,     1,    -1,     3,     4,
+     5,    -1,     7,     8,     9,    10,    -1,    12,    13,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    27,    28,    29,    30,    -1,    32,    -1,    34,
+    -1,    36,    37,    -1,    39,    40,    41,    -1,    -1,    -1,
+    45,    -1,    -1,    -1,    49,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    57,    -1,    -1,    60,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    68,    69,    70,    -1,    -1,    -1,    74,
+    75,    -1,    -1,    -1,    -1,    -1,    -1,    82,    83,     1,
+    -1,     3,     4,     5,    -1,     7,     8,     9,    10,    94,
+    12,    13,    -1,    -1,    -1,    -1,    -1,    -1,    20,    -1,
+   105,   106,   107,    -1,    -1,    27,    28,    29,    30,    -1,
+    32,    -1,    34,    -1,    36,    37,    -1,    39,    40,    41,
+    -1,    -1,    -1,    45,    -1,    -1,    -1,    49,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    57,    -1,    -1,    60,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    68,    69,    70,    -1,
+    -1,    -1,    74,    75,    -1,    -1,    -1,    -1,    -1,    -1,
+    82,    -1,     1,    -1,     3,     4,     5,     6,     7,     8,
+     9,    10,    94,    12,    13,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,   105,   106,   107,    -1,    -1,    27,    28,
+    29,    30,    -1,    32,    -1,    34,    -1,    36,    37,    -1,
+    39,    40,    41,    -1,    -1,    -1,    45,    -1,    -1,    -1,
+    49,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    57,    -1,
+    -1,    60,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    68,
+    69,    70,    -1,    -1,    -1,    74,    75,    -1,    -1,    -1,
+    -1,    -1,    -1,    82,    -1,     1,    -1,     3,     4,     5,
+    -1,     7,     8,     9,    10,    94,    12,    13,    -1,    -1,
+    -1,    -1,    -1,    -1,    20,   104,    -1,   106,   107,    -1,
+    -1,    27,    28,    29,    30,    -1,    32,    -1,    34,    -1,
+    36,    37,    -1,    39,    40,    41,    -1,    -1,    -1,    45,
+    -1,    -1,    -1,    49,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    57,    -1,    -1,    60,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    68,    69,    70,    -1,    -1,    -1,    74,    75,
+    -1,    -1,    -1,    -1,    -1,    -1,    82,    -1,     1,    -1,
+     3,     4,     5,    -1,     7,     8,     9,    10,    94,    12,
+    13,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   105,
+   106,   107,    -1,    -1,    27,    28,    29,    30,    -1,    32,
+    -1,    34,    -1,    36,    37,    -1,    39,    40,    41,    -1,
+    -1,    -1,    45,    -1,    -1,    -1,    49,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    57,    -1,    -1,    60,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    68,    69,    70,    -1,    -1,
+    -1,    74,    75,    -1,    -1,    -1,    -1,    -1,    -1,    82,
+    83,     1,    -1,     3,     4,     5,    -1,     7,     8,     9,
+    10,    94,    12,    13,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,   106,   107,    -1,    -1,    27,    28,    29,
+    30,    -1,    32,    -1,    34,    -1,    36,    37,    -1,    39,
+    40,    41,    -1,    -1,    -1,    45,    -1,    -1,    -1,    49,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    57,    -1,    -1,
+    60,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    68,    69,
+    70,    -1,    -1,    -1,    74,    75,    -1,    -1,    -1,    -1,
+    -1,    -1,    82,    -1,     1,    -1,     3,     4,     5,    -1,
+     7,     8,     9,    10,    94,    12,    13,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,   106,   107,    -1,    -1,
+    27,    28,    29,    30,    -1,    32,    -1,    34,    -1,    36,
+    37,    -1,    39,    40,    41,    -1,    -1,    -1,    45,    -1,
+    -1,    -1,    49,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    57,    -1,    -1,    60,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    68,    69,    70,    -1,    -1,    -1,    74,    75,    -1,
+    -1,    -1,    -1,    -1,    -1,    82,    -1,     1,    -1,     3,
+     4,     5,    -1,     7,     8,     9,    10,    94,    12,    13,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   106,
+   107,    -1,    -1,    27,    28,    29,    30,    -1,    32,    -1,
+    34,    -1,    36,    37,    -1,    39,    40,    41,    -1,    -1,
+    -1,    45,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    54,    -1,    -1,    57,    -1,    -1,    60,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    68,    69,    70,    -1,    -1,    -1,
+    74,    75,    -1,    -1,    -1,    -1,    -1,    -1,    82,    -1,
+     1,    -1,     3,     4,     5,    -1,     7,     8,     9,    10,
+    94,    12,    13,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,   106,   107,    -1,    -1,    27,    28,    29,    30,
+    -1,    32,    -1,    34,    -1,    36,    37,    -1,    39,    40,
+    41,    -1,    -1,    -1,    45,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    57,    -1,    -1,    60,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    68,    69,    70,
+    -1,    -1,    -1,    74,    75,    -1,    -1,    -1,    -1,    -1,
+    -1,    82,    -1,     1,    -1,     3,     4,     5,    -1,     7,
+     8,     9,    10,    94,    12,    13,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,   104,    -1,   106,   107,    -1,    -1,    27,
+    28,    29,    30,    -1,    32,    -1,    34,    -1,    36,    37,
+    -1,    39,    40,    41,    -1,    -1,    -1,    45,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    57,
+    -1,    -1,    60,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    68,    69,    70,    -1,    -1,    -1,    74,    75,    -1,    -1,
+    -1,    -1,    -1,    -1,    82,    -1,     1,    -1,     3,     4,
+     5,    -1,     7,     8,     9,    10,    94,    12,    13,    -1,
+    -1,    -1,    -1,    -1,    -1,   103,    -1,    -1,   106,   107,
+    -1,    -1,    27,    28,    29,    30,    -1,    32,    -1,    34,
+    -1,    36,    37,    -1,    39,    40,    41,    -1,    -1,    -1,
+    45,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    57,    -1,    -1,    60,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    68,    69,    70,    -1,    -1,    -1,    74,
+    75,    -1,    -1,    -1,    -1,    -1,    -1,    82,    -1,    -1,
+    -1,     3,     4,     5,    -1,     7,     8,     9,    10,    94,
+    12,    13,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,   106,   107,    -1,    -1,    27,    28,    29,    30,    -1,
+    32,    -1,    34,    -1,    36,    -1,    -1,    39,    40,    41,
+    -1,    -1,    -1,    45,     1,    -1,     3,     4,     5,     6,
+     7,     8,    -1,    -1,    -1,    57,    13,    -1,    60,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    68,    69,    70,    26,
+    27,    -1,    74,    75,    -1,    -1,    -1,    34,    -1,    -1,
+    82,    38,    -1,    40,    41,    -1,    -1,    44,    45,    -1,
+    -1,    -1,    94,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    60,   106,   107,   108,    -1,    -1,    -1,
+    -1,    -1,    -1,    70,    -1,    -1,    -1,     1,    -1,     3,
+     4,     5,     6,     7,     8,    82,    -1,    -1,    -1,    13,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    94,    95,    96,
+    -1,    -1,    -1,    27,    -1,    -1,    -1,   104,    -1,   106,
+    34,    35,    -1,    -1,    -1,    -1,    40,    41,    -1,    -1,
+    -1,    45,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    54,    -1,    -1,    -1,    -1,     1,    60,     3,     4,     5,
+     6,     7,     8,    -1,    -1,    -1,    70,    13,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    82,    -1,
+    -1,    27,    -1,    -1,    -1,    -1,    -1,    -1,    34,    35,
+    94,    -1,    -1,    -1,    40,    41,    -1,    -1,    -1,    45,
+   104,   105,   106,    -1,    -1,    -1,    -1,    -1,    54,    -1,
+    -1,    -1,    -1,     1,    60,     3,     4,     5,     6,     7,
+     8,    -1,    -1,    -1,    70,    13,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    82,    -1,    -1,    27,
+    -1,    -1,    -1,    -1,    -1,    -1,    34,    35,    94,    -1,
+    -1,    -1,    40,    41,    -1,    -1,    -1,    45,   104,   105,
+   106,    -1,    -1,    -1,    -1,    -1,    54,    -1,    -1,    -1,
+    -1,     1,    60,     3,     4,     5,     6,     7,     8,    -1,
+    -1,    -1,    70,    13,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    82,    -1,    -1,    27,    -1,    -1,
+    -1,    -1,    -1,    -1,    34,    35,    94,    -1,    -1,    -1,
+    40,    41,    -1,    -1,    -1,    45,    -1,   105,   106,    -1,
+    -1,    -1,    -1,    -1,    54,    -1,    -1,    -1,    -1,     1,
+    60,     3,     4,     5,     6,     7,     8,    -1,    -1,    -1,
+    70,    13,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    82,    -1,    -1,    27,    -1,    -1,    -1,    -1,
+    -1,    -1,    34,    -1,    94,    -1,    -1,    -1,    40,    41,
+    -1,    -1,    -1,    45,    -1,   105,   106,    -1,    -1,    -1,
+     1,    -1,     3,     4,     5,     6,     7,     8,    60,    -1,
+    -1,    -1,    13,    -1,    -1,    -1,    -1,    -1,    70,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    27,    -1,    -1,    -1,
+    82,    -1,    -1,    34,    -1,    -1,    -1,    -1,    -1,    40,
+    41,    -1,    94,    95,    45,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,   104,    -1,   106,    51,    52,    53,    -1,    60,
+    56,    57,    58,    59,    60,    61,    62,    63,    64,    70,
+    66,    67,    68,    69,    70,    71,    72,    -1,    -1,    -1,
+    -1,    82,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    94,    -1,    -1,    -1,     3,     4,     5,
+     6,     7,     8,     9,    10,   106,    12,    13,    14,    -1,
+    16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
+    26,    27,    28,    29,    30,    -1,    32,    -1,    34,    -1,
+    36,    -1,    -1,    39,    40,    41,    -1,    -1,    -1,    45,
+    -1,    -1,    48,    49,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    57,    -1,    -1,    60,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    68,    69,    70,    -1,    -1,    -1,    74,    75,
+    -1,    -1,    -1,    -1,    -1,    -1,    82,    -1,    84,    -1,
+    -1,    87,    -1,    -1,    90,    91,    92,    -1,    94,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   104,   105,
+   106,   107,     3,     4,     5,     6,     7,     8,     9,    10,
+    -1,    12,    13,    14,    -1,    16,    17,    18,    19,    20,
+    21,    22,    23,    24,    25,    26,    27,    28,    29,    30,
+    -1,    32,    -1,    34,    -1,    36,    -1,    -1,    39,    40,
+    41,    -1,    -1,    -1,    45,    -1,    -1,    48,    49,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    57,    -1,    -1,    60,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    68,    69,    70,
+    -1,    -1,    -1,    74,    75,    -1,    -1,    -1,    -1,    -1,
+    -1,    82,    -1,    84,    -1,    -1,    87,    -1,    -1,    90,
+    91,    92,    -1,    94,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,   104,    -1,   106,   107,     3,     4,     5,
+    -1,     7,     8,     9,    10,    -1,    12,    13,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    27,    28,    29,    30,    -1,    32,    -1,    34,    -1,
+    36,    -1,    -1,    39,    40,    41,    -1,    -1,    -1,    45,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    57,    -1,    -1,    60,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    68,    69,    70,    -1,    -1,    -1,    74,    75,
+    -1,    -1,    -1,    -1,    -1,    -1,    82,    83,    -1,    -1,
+     3,     4,     5,    -1,     7,     8,     9,    10,    94,    12,
+    13,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+   106,   107,    -1,    -1,    27,    28,    29,    30,    -1,    32,
+    -1,    34,    -1,    36,    -1,    -1,    39,    40,    41,    -1,
+    -1,    -1,    45,    -1,    -1,    -1,    49,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    57,    -1,    -1,    60,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    68,    69,    70,    -1,    -1,
+    -1,    74,    75,    -1,    -1,    -1,    -1,    -1,    -1,    82,
+    -1,    -1,    -1,     3,     4,     5,    -1,     7,     8,     9,
+    10,    94,    12,    13,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,   106,   107,    -1,    -1,    27,    28,    29,
+    30,    -1,    32,    -1,    34,    -1,    36,    -1,    -1,    39,
+    40,    41,    -1,    -1,    -1,    45,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    57,    -1,    -1,
+    60,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    68,    69,
+    70,    -1,    -1,    -1,    74,    75,    -1,    -1,    -1,    -1,
+    -1,    -1,    82,    -1,    -1,    -1,     3,     4,     5,    -1,
+     7,     8,     9,    10,    94,    12,    13,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,   104,    -1,   106,   107,    -1,    -1,
+    27,    28,    29,    30,    -1,    32,    -1,    34,    -1,    36,
+    -1,    -1,    39,    40,    41,    -1,    -1,    -1,    45,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    57,    -1,    -1,    60,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    68,    69,    70,    -1,    -1,    -1,    74,    75,    -1,
+    -1,    -1,    -1,    -1,    -1,    82,    -1,    -1,    -1,     3,
+     4,     5,    -1,     7,     8,     9,    10,    94,    12,    13,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,   104,    -1,   106,
+   107,    -1,    -1,    27,    28,    29,    30,    -1,    32,    -1,
+    34,    -1,    36,    -1,    -1,    39,    40,    41,    -1,    -1,
+    -1,    45,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    57,    -1,    -1,    60,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    68,    69,    70,    -1,    -1,    -1,
+    74,    75,    -1,    -1,    -1,    -1,    -1,    -1,    82,    -1,
+    -1,    -1,     3,     4,     5,    -1,     7,     8,     9,    10,
+    94,    12,    13,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,   106,   107,    -1,    -1,    27,    28,    29,    30,
+    -1,    32,    -1,    34,    -1,    36,    -1,    -1,    39,    40,
+    41,    -1,    -1,    -1,    45,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    57,    -1,    -1,    60,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    68,    69,    70,
+    -1,    -1,    -1,    74,    75,    -1,    -1,    -1,    -1,    -1,
+    -1,    82,    -1,    -1,    -1,     3,     4,     5,    -1,     7,
+     8,     9,    10,    94,    12,    13,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,   106,   107,    -1,    -1,    27,
+    28,    29,    30,    -1,    32,    -1,    34,    -1,    36,    -1,
+    -1,    39,    40,    41,    -1,    -1,    -1,    45,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    57,
+    -1,    -1,    60,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    68,    69,    70,    -1,    -1,    -1,    74,    75,    -1,    -1,
+    -1,     3,     4,     5,    82,     7,     8,     9,    10,    -1,
+    12,    13,    -1,    -1,    -1,    -1,    94,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    27,    28,    -1,   106,   107,
+    32,    -1,    34,    -1,    36,    -1,    -1,    39,    40,    41,
+    -1,    -1,    -1,    45,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    57,    -1,    -1,    60,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    68,    69,    70,    -1,
+    -1,    -1,    74,    75,    -1,    -1,    -1,     3,     4,     5,
+    82,     7,     8,     9,    10,    -1,    12,    13,    -1,    -1,
+    -1,    -1,    94,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    27,    28,    -1,   106,   107,    32,    -1,    34,    -1,
+    36,    -1,    -1,    39,    40,    41,    -1,    -1,    -1,    45,
+    -1,    -1,     3,     4,     5,     6,     7,     8,    -1,    -1,
+    11,    57,    13,    -1,    60,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    68,    69,    70,    -1,    27,    -1,    74,    75,
+    -1,    -1,    -1,    34,    -1,    -1,    82,    -1,    -1,    40,
+    41,    -1,    43,    -1,    45,    -1,    -1,    -1,    94,    -1,
+    -1,    -1,    -1,     3,     4,     5,     6,     7,     8,    60,
+   106,   107,    -1,    13,    -1,    -1,    -1,    -1,    -1,    70,
+    -1,    -1,    -1,    -1,    -1,    -1,    77,    27,    -1,    -1,
+    -1,    82,    83,    -1,    34,    -1,    -1,    -1,    -1,    -1,
+    40,    41,    93,    94,    -1,    45,    46,    -1,     3,     4,
+     5,     6,     7,     8,    -1,   106,    11,    -1,    13,    -1,
+    60,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    70,    -1,    27,    -1,    -1,    -1,    -1,    77,    -1,    34,
+    -1,    -1,    82,    -1,    -1,    40,    41,    -1,    -1,    -1,
+    45,    -1,    -1,    -1,    94,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,   104,    60,   106,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    70,     3,     4,     5,     6,
+     7,     8,    77,    -1,    -1,    -1,    13,    82,    -1,    -1,
+    -1,    -1,     3,     4,     5,     6,     7,     8,    93,    94,
+    27,    -1,    13,    -1,    -1,    -1,    -1,    34,    -1,    -1,
+    -1,   106,    -1,    40,    41,    -1,    27,    -1,    45,    46,
+    -1,     1,    -1,    34,    -1,    -1,    -1,    -1,    -1,    40,
+    41,    -1,    -1,    60,    45,    46,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    70,    24,    -1,    26,    -1,    -1,    60,
+    77,    31,    -1,    -1,    -1,    82,    -1,    -1,    -1,    70,
+    -1,    -1,    -1,    43,    -1,    -1,    77,    94,    -1,    49,
+    50,    82,    52,    -1,    54,    -1,    -1,   104,    -1,   106,
+    -1,    -1,    -1,    94,     4,     5,     6,     7,     8,    -1,
+    -1,    11,    -1,    13,    -1,   106,    -1,    -1,    -1,    -1,
+    -1,    -1,    82,    83,    -1,    85,    -1,    27,    -1,    -1,
+    -1,    -1,    92,    -1,    34,    -1,     4,     5,    -1,     7,
+     8,    41,    -1,    43,   104,    13,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    27,
+    60,    -1,    -1,    -1,    -1,    -1,    34,    -1,    -1,    -1,
+    70,    -1,    -1,    41,    -1,    43,    -1,    77,    46,    -1,
+    -1,    -1,    82,    83,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    60,    93,    94,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    70,    -1,    -1,    -1,    -1,    -1,    -1,    77,
+    -1,    -1,    -1,    -1,    82,    83,    -1,    -1,    -1,    -1,
+    -1,    -1,    51,    52,    53,    -1,    94,    56,    57,    58,
+    59,    60,    61,    62,    63,    64,    65,    66,    67,    68,
+    69,    70,    71,    72,    51,    52,    53,    -1,    -1,    56,
+    57,    58,    59,    60,    61,    62,    63,    64,    65,    66,
+    67,    68,    69,    70,    71,    72,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    31,    -1,    -1,    -1,    -1,   108,
+    59,    60,    61,    62,    63,    64,    65,    66,    67,    68,
+    69,    70,    71,    72,    51,    52,    53,   104,   105,    56,
+    57,    58,    59,    60,    61,    62,    63,    64,    65,    66,
+    67,    68,    69,    70,    71,    72,    50,    51,    52,    53,
+    -1,    -1,    56,    57,    58,    59,    60,    61,    62,    63,
+    64,    65,    66,    67,    68,    69,    70,    71,    72,    51,
+    52,    53,    54,    -1,    56,    57,    58,    59,    60,    61,
+    62,    63,    64,    65,    66,    67,    68,    69,    70,    71,
+    72,    51,    52,    53,    -1,    -1,    56,    57,    58,    59,
+    60,    61,    62,    63,    64,    65,    66,    67,    68,    69,
+    70,    71,    72,    53,    -1,    -1,    56,    57,    58,    59,
+    60,    61,    62,    63,    64,    65,    66,    67,    68,    69,
+    70,    71,    72,    57,    58,    59,    60,    61,    62,    63,
+    64,    65,    66,    67,    68,    69,    70,    71,    72,    58,
+    59,    60,    61,    62,    63,    64,    65,    66,    67,    68,
+    69,    70,    71,    72
+};
+/* -*-C-*-  Note some compilers choke on comments on `#line' lines.  */
+#line 3 "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__)
+#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
+#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
+\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 169 "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.  */
+
+  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
+
+ 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 symboles 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 280 "cp-parse.y"
+{ finish_file (); ;
+    break;}
+case 3:
+#line 288 "cp-parse.y"
+{ yyval.ttype = NULL_TREE; ;
+    break;}
+case 4:
+#line 289 "cp-parse.y"
+{yyval.ttype = NULL_TREE; ;
+    break;}
+case 5:
+#line 291 "cp-parse.y"
+{yyval.ttype = NULL_TREE; ;
+    break;}
+case 6:
+#line 295 "cp-parse.y"
+{ have_extern_spec = 1;
+                 used_extern_spec = 0;
+                 yyval.ttype = NULL_TREE; ;
+    break;}
+case 7:
+#line 300 "cp-parse.y"
+{ have_extern_spec = 0; ;
+    break;}
+case 8:
+#line 305 "cp-parse.y"
+{ if (pending_inlines) do_pending_inlines (); ;
+    break;}
+case 9:
+#line 307 "cp-parse.y"
+{ if (pending_inlines) do_pending_inlines (); ;
+    break;}
+case 10:
+#line 309 "cp-parse.y"
+{ if (pending_inlines) do_pending_inlines (); ;
+    break;}
+case 12:
+#line 312 "cp-parse.y"
+{ if (pedantic)
+                   pedwarn ("ANSI C++ forbids use of `asm' keyword");
+                 if (TREE_CHAIN (yyvsp[-2].ttype)) yyvsp[-2].ttype = combine_strings (yyvsp[-2].ttype);
+                 assemble_asm (yyvsp[-2].ttype); ;
+    break;}
+case 13:
+#line 317 "cp-parse.y"
+{ pop_lang_context (); ;
+    break;}
+case 14:
+#line 319 "cp-parse.y"
+{ pop_lang_context (); ;
+    break;}
+case 15:
+#line 321 "cp-parse.y"
+{ if (pending_inlines) do_pending_inlines ();
+                 pop_lang_context (); ;
+    break;}
+case 16:
+#line 324 "cp-parse.y"
+{ if (pending_inlines) do_pending_inlines ();
+                 pop_lang_context (); ;
+    break;}
+case 17:
+#line 330 "cp-parse.y"
+{ push_lang_context (yyvsp[0].ttype); ;
+    break;}
+case 18:
+#line 335 "cp-parse.y"
+{ begin_template_parm_list (); ;
+    break;}
+case 19:
+#line 337 "cp-parse.y"
+{ yyval.ttype = end_template_parm_list (yyvsp[-1].ttype); ;
+    break;}
+case 20:
+#line 342 "cp-parse.y"
+{ yyval.ttype = process_template_parm (0, yyvsp[0].ttype); ;
+    break;}
+case 21:
+#line 344 "cp-parse.y"
+{ yyval.ttype = process_template_parm (yyvsp[-2].ttype, yyvsp[0].ttype); ;
+    break;}
+case 22:
+#line 355 "cp-parse.y"
+{
+                 if (yyvsp[-1].ttype != class_type_node)
+                   error ("template type parameter must use keyword `class'");
+                 yyval.ttype = build_tree_list (yyvsp[0].ttype, NULL_TREE);
+               ;
+    break;}
+case 23:
+#line 361 "cp-parse.y"
+{
+                 if (yyvsp[-3].ttype != class_type_node)
+                   error ("template type parameter must use keyword `class'");
+                 warning ("restricted template type parameters not yet implemented");
+                 yyval.ttype = build_tree_list (yyvsp[-2].ttype, yyvsp[0].ttype);
+               ;
+    break;}
+case 24:
+#line 368 "cp-parse.y"
+{
+                 if (yyvsp[-2].ttype != class_type_node)
+                   error ("template type parameter must use keyword `class'");
+                 warning ("restricted template type parameters not yet implemented");
+                 yyval.ttype = build_tree_list (yyvsp[-1].ttype, yyvsp[0].ttype);
+               ;
+    break;}
+case 27:
+#line 381 "cp-parse.y"
+{ declare_overloaded (yyvsp[0].ttype); ;
+    break;}
+case 28:
+#line 383 "cp-parse.y"
+{ declare_overloaded (yyvsp[0].ttype); ;
+    break;}
+case 29:
+#line 390 "cp-parse.y"
+{ yychar = '{'; goto template1; ;
+    break;}
+case 31:
+#line 393 "cp-parse.y"
+{ yychar = '{'; goto template1; ;
+    break;}
+case 33:
+#line 396 "cp-parse.y"
+{ yychar = ':'; goto template1; ;
+    break;}
+case 35:
+#line 399 "cp-parse.y"
+{
+                 yychar = ':';
+               template1:
+                 if (current_aggr == exception_type_node)
+                   error ("template type must define an aggregate or union");
+                 /* Maybe pedantic warning for union?
+                    How about an enum? :-)  */
+                 end_template_decl (yyvsp[-2].ttype, yyvsp[-1].ttype, current_aggr);
+                 reinit_parse_for_template (yychar, yyvsp[-2].ttype, yyvsp[-1].ttype);
+                 yychar = YYEMPTY;
+               ;
+    break;}
+case 37:
+#line 412 "cp-parse.y"
+{
+                 end_template_decl (yyvsp[-2].ttype, yyvsp[-1].ttype, current_aggr);
+                 /* declare $2 as template name with $1 parm list */
+               ;
+    break;}
+case 38:
+#line 417 "cp-parse.y"
+{
+                 end_template_decl (yyvsp[-2].ttype, yyvsp[-1].ttype, current_aggr);
+                 /* declare $2 as template name with $1 parm list */
+               ;
+    break;}
+case 39:
+#line 424 "cp-parse.y"
+{
+                 tree d;
+                 int momentary;
+                 momentary = suspend_momentary ();
+                 d = start_decl (yyvsp[-4].ttype, /*current_declspecs*/0, 0, yyvsp[-3].ttype);
+                 cplus_decl_attributes (d, yyvsp[-1].ttype);
+                 finish_decl (d, NULL_TREE, yyvsp[-2].ttype, 0);
+                 end_template_decl (yyvsp[-5].ttype, d, 0);
+                 if (yyvsp[0].itype != ';')
+                   reinit_parse_for_template (yyvsp[0].itype, yyvsp[-5].ttype, d);
+                 resume_momentary (momentary);
+               ;
+    break;}
+case 40:
+#line 439 "cp-parse.y"
+{
+                 tree d;
+                 int momentary;
+
+                 current_declspecs = yyvsp[-5].ttype;
+                 momentary = suspend_momentary ();
+                 d = start_decl (yyvsp[-4].ttype, current_declspecs, 0, yyvsp[-3].ttype);
+                 cplus_decl_attributes (d, yyvsp[-1].ttype);
+                 finish_decl (d, NULL_TREE, yyvsp[-2].ttype, 0);
+                 end_exception_decls ();
+                 end_template_decl (yyvsp[-6].ttype, d, 0);
+                 if (yyvsp[0].itype != ';')
+                   {
+                     reinit_parse_for_template (yyvsp[0].itype, yyvsp[-6].ttype, d);
+                     yychar = YYEMPTY;
+                   }
+                 note_list_got_semicolon (yyvsp[-5].ttype);
+                 resume_momentary (momentary);
+               ;
+    break;}
+case 41:
+#line 459 "cp-parse.y"
+{
+                 tree d = start_decl (yyvsp[-1].ttype, yyvsp[-2].ttype, 0, NULL_TREE);
+                 finish_decl (d, NULL_TREE, NULL_TREE, 0);
+                 end_template_decl (yyvsp[-3].ttype, d, 0);
+                 if (yyvsp[0].itype != ';')
+                   reinit_parse_for_template (yyvsp[0].itype, yyvsp[-3].ttype, d);
+               ;
+    break;}
+case 42:
+#line 467 "cp-parse.y"
+{ end_template_decl (yyvsp[-2].ttype, 0, 0); ;
+    break;}
+case 43:
+#line 468 "cp-parse.y"
+{ end_template_decl (yyvsp[-2].ttype, 0, 0); ;
+    break;}
+case 44:
+#line 471 "cp-parse.y"
+{ yyval.itype = '{'; ;
+    break;}
+case 45:
+#line 472 "cp-parse.y"
+{ yyval.itype = ':'; ;
+    break;}
+case 46:
+#line 473 "cp-parse.y"
+{ yyval.itype = ';'; ;
+    break;}
+case 47:
+#line 474 "cp-parse.y"
+{ yyval.itype = '='; ;
+    break;}
+case 48:
+#line 475 "cp-parse.y"
+{ yyval.itype = RETURN; ;
+    break;}
+case 49:
+#line 480 "cp-parse.y"
+{ if (pedantic)
+                   pedwarn ("ANSI C++ forbids data definition with no type or storage class");
+                 else if (! flag_traditional && ! have_extern_spec)
+                   warning ("data definition has no type or storage class"); ;
+    break;}
+case 50:
+#line 485 "cp-parse.y"
+{;
+    break;}
+case 51:
+#line 488 "cp-parse.y"
+{ tree d;
+                 d = start_decl (yyvsp[-1].ttype, yyval.ttype, 0, NULL_TREE);
+                 finish_decl (d, NULL_TREE, NULL_TREE, 0);
+               ;
+    break;}
+case 52:
+#line 493 "cp-parse.y"
+{
+                 end_exception_decls ();
+                 note_list_got_semicolon (yyval.ttype);
+               ;
+    break;}
+case 53:
+#line 499 "cp-parse.y"
+{ tree d;
+                 d = start_decl (yyvsp[-1].ttype, yyval.ttype, 0, NULL_TREE);
+                 finish_decl (d, NULL_TREE, NULL_TREE, 0);
+                 end_exception_decls ();
+                 note_list_got_semicolon (yyval.ttype);
+               ;
+    break;}
+case 54:
+#line 506 "cp-parse.y"
+{ pedwarn ("empty declaration"); ;
+    break;}
+case 55:
+#line 508 "cp-parse.y"
+{
+           tree t = yyval.ttype;
+           shadow_tag (t);
+           if (TREE_CODE (t) == TREE_LIST
+               && TREE_PURPOSE (t) == NULL_TREE)
+             {
+               t = TREE_VALUE (t);
+               if (TREE_CODE (t) == RECORD_TYPE)
+                 {
+                   if (CLASSTYPE_USE_TEMPLATE (t) == 0)
+                     CLASSTYPE_USE_TEMPLATE (t) = 2;
+                   else if (CLASSTYPE_USE_TEMPLATE (t) == 1)
+                     error ("override declaration for already-expanded template");
+                 }
+             }
+           note_list_got_semicolon (yyval.ttype);
+         ;
+    break;}
+case 59:
+#line 532 "cp-parse.y"
+{
+                 finish_function (lineno, 1);
+                 /* finish_function performs these three statements:
+
+                    expand_end_bindings (getdecls (), 1, 0);
+                    poplevel (1, 1, 0);
+
+                    expand_end_bindings (0, 0, 0);
+                    poplevel (0, 0, 1);
+                    */
+                 if (yyval.ttype) process_next_inline (yyval.ttype);
+               ;
+    break;}
+case 60:
+#line 545 "cp-parse.y"
+{
+                 finish_function (lineno, 1);
+                 /* finish_function performs these three statements:
+
+                    expand_end_bindings (getdecls (), 1, 0);
+                    poplevel (1, 1, 0);
+
+                    expand_end_bindings (0, 0, 0);
+                    poplevel (0, 0, 1);
+                    */
+                 if (yyval.ttype) process_next_inline (yyval.ttype);
+               ;
+    break;}
+case 61:
+#line 558 "cp-parse.y"
+{ finish_function (lineno, 0);
+                 if (yyval.ttype) process_next_inline (yyval.ttype); ;
+    break;}
+case 62:
+#line 561 "cp-parse.y"
+{ finish_function (lineno, 0);
+                 if (yyval.ttype) process_next_inline (yyval.ttype); ;
+    break;}
+case 63:
+#line 564 "cp-parse.y"
+{ finish_function (lineno, 0);
+                 if (yyval.ttype) process_next_inline (yyval.ttype); ;
+    break;}
+case 64:
+#line 567 "cp-parse.y"
+{;
+    break;}
+case 65:
+#line 569 "cp-parse.y"
+{;
+    break;}
+case 66:
+#line 571 "cp-parse.y"
+{;
+    break;}
+case 67:
+#line 576 "cp-parse.y"
+{ if (! start_function (yyval.ttype, yyvsp[-1].ttype, yyvsp[0].ttype, 0))
+                   YYERROR1;
+                 reinit_parse_for_function ();
+                 yyval.ttype = NULL_TREE; ;
+    break;}
+case 68:
+#line 581 "cp-parse.y"
+{ if (! start_function (yyval.ttype, yyvsp[-1].ttype, yyvsp[0].ttype, 0))
+                   YYERROR1;
+                 reinit_parse_for_function ();
+                 yyval.ttype = NULL_TREE; ;
+    break;}
+case 69:
+#line 586 "cp-parse.y"
+{ if (! start_function (NULL_TREE, yyval.ttype, yyvsp[0].ttype, 0))
+                   YYERROR1;
+                 reinit_parse_for_function ();
+                 yyval.ttype = NULL_TREE; ;
+    break;}
+case 70:
+#line 591 "cp-parse.y"
+{ if (! start_function (NULL_TREE, build_parse_node (CALL_EXPR, yyval.ttype, yyvsp[-3].ttype, yyvsp[-1].ttype), yyvsp[0].ttype, 0))
+                   YYERROR1;
+                 reinit_parse_for_function ();
+                 yyval.ttype = NULL_TREE; ;
+    break;}
+case 71:
+#line 596 "cp-parse.y"
+{ if (! start_function (NULL_TREE, build_parse_node (CALL_EXPR, yyval.ttype, yyvsp[-3].ttype, yyvsp[-1].ttype), yyvsp[0].ttype, 0))
+                   YYERROR1;
+                 reinit_parse_for_function ();
+                 yyval.ttype = NULL_TREE; ;
+    break;}
+case 72:
+#line 601 "cp-parse.y"
+{ if (! start_function (NULL_TREE, build_parse_node (CALL_EXPR, yyval.ttype, empty_parms (), yyvsp[-1].ttype), yyvsp[0].ttype, 0))
+                   YYERROR1;
+                 reinit_parse_for_function ();
+                 yyval.ttype = NULL_TREE; ;
+    break;}
+case 73:
+#line 606 "cp-parse.y"
+{ if (! start_function (NULL_TREE, build_parse_node (CALL_EXPR, yyval.ttype, empty_parms (), yyvsp[-1].ttype), yyvsp[0].ttype, 0))
+                   YYERROR1;
+                 reinit_parse_for_function ();
+                 yyval.ttype = NULL_TREE; ;
+    break;}
+case 74:
+#line 611 "cp-parse.y"
+{ start_function (NULL_TREE, TREE_VALUE (yyval.ttype), NULL_TREE, 1);
+                 reinit_parse_for_function (); ;
+    break;}
+case 75:
+#line 618 "cp-parse.y"
+{
+                 tree decl = build_parse_node (CALL_EXPR, TREE_VALUE (yyval.ttype), yyvsp[-3].ttype, yyvsp[-1].ttype);
+                 yyval.ttype = start_method (TREE_CHAIN (yyval.ttype), decl, yyvsp[0].ttype);
+                 if (! yyval.ttype)
+                   YYERROR1;
+                 if (yychar == YYEMPTY)
+                   yychar = YYLEX;
+                 reinit_parse_for_method (yychar, yyval.ttype); ;
+    break;}
+case 76:
+#line 627 "cp-parse.y"
+{
+                 tree decl = build_parse_node (CALL_EXPR, TREE_VALUE (yyval.ttype), empty_parms (), yyvsp[-1].ttype);
+                 yyval.ttype = start_method (TREE_CHAIN (yyval.ttype), decl, yyvsp[0].ttype);
+                 if (! yyval.ttype)
+                   YYERROR1;
+                 if (yychar == YYEMPTY)
+                   yychar = YYLEX;
+                 reinit_parse_for_method (yychar, yyval.ttype); ;
+    break;}
+case 77:
+#line 636 "cp-parse.y"
+{ yyval.ttype = start_method (yyval.ttype, yyvsp[-1].ttype, yyvsp[0].ttype);
+                 if (! yyval.ttype)
+                   YYERROR1;
+                 if (yychar == YYEMPTY)
+                   yychar = YYLEX;
+                 reinit_parse_for_method (yychar, yyval.ttype); ;
+    break;}
+case 78:
+#line 643 "cp-parse.y"
+{
+                 tree decl = build_parse_node (CALL_EXPR, TREE_VALUE (yyval.ttype), yyvsp[-3].ttype, yyvsp[-1].ttype);
+                 yyval.ttype = start_method (TREE_CHAIN (yyval.ttype), decl, yyvsp[0].ttype);
+                 if (! yyval.ttype)
+                   YYERROR1;
+                 if (yychar == YYEMPTY)
+                   yychar = YYLEX;
+                 reinit_parse_for_method (yychar, yyval.ttype); ;
+    break;}
+case 79:
+#line 652 "cp-parse.y"
+{
+                 tree decl = build_parse_node (CALL_EXPR, TREE_VALUE (yyval.ttype), empty_parms (), yyvsp[-1].ttype);
+                 yyval.ttype = start_method (TREE_CHAIN (yyval.ttype), decl, yyvsp[0].ttype);
+                 if (! yyval.ttype)
+                   YYERROR1;
+                 if (yychar == YYEMPTY)
+                   yychar = YYLEX;
+                 reinit_parse_for_method (yychar, yyval.ttype); ;
+    break;}
+case 80:
+#line 661 "cp-parse.y"
+{ yyval.ttype = start_method (yyval.ttype, yyvsp[-1].ttype, yyvsp[0].ttype);
+                 if (! yyval.ttype)
+                   YYERROR1;
+                 if (yychar == YYEMPTY)
+                   yychar = YYLEX;
+                 reinit_parse_for_method (yychar, yyval.ttype); ;
+    break;}
+case 81:
+#line 668 "cp-parse.y"
+{ yyval.ttype = start_method (NULL_TREE, yyval.ttype, yyvsp[0].ttype);
+                 if (! yyval.ttype)
+                   YYERROR1;
+                 if (yychar == YYEMPTY)
+                   yychar = YYLEX;
+                 reinit_parse_for_method (yychar, yyval.ttype); ;
+    break;}
+case 82:
+#line 677 "cp-parse.y"
+{
+                 if (! current_function_parms_stored)
+                   store_parm_decls ();
+                 yyval.ttype = yyvsp[0].ttype;
+               ;
+    break;}
+case 83:
+#line 685 "cp-parse.y"
+{ store_return_init (yyval.ttype, NULL_TREE); ;
+    break;}
+case 84:
+#line 687 "cp-parse.y"
+{ store_return_init (yyval.ttype, yyvsp[0].ttype); ;
+    break;}
+case 85:
+#line 689 "cp-parse.y"
+{ store_return_init (yyval.ttype, yyvsp[-1].ttype); ;
+    break;}
+case 86:
+#line 691 "cp-parse.y"
+{ store_return_init (yyval.ttype, NULL_TREE); ;
+    break;}
+case 87:
+#line 696 "cp-parse.y"
+{
+                 if (yyvsp[0].itype == 0)
+                   error ("no base initializers given following ':'");
+                 setup_vtbl_ptr ();
+               ;
+    break;}
+case 88:
+#line 705 "cp-parse.y"
+{
+                 if (! current_function_parms_stored)
+                   store_parm_decls ();
+
+                 /* Flag that we are processing base and member initializers.  */
+                 current_vtable_decl = error_mark_node;
+
+                 if (DECL_CONSTRUCTOR_P (current_function_decl))
+                   {
+                     /* Make a contour for the initializer list.  */
+                     pushlevel (0);
+                     clear_last_expr ();
+                     expand_start_bindings (0);
+                   }
+                 else if (current_class_type == NULL_TREE)
+                   error ("base initializers not allowed for non-member functions");
+                 else if (! DECL_CONSTRUCTOR_P (current_function_decl))
+                   error ("only constructors take base initializers");
+               ;
+    break;}
+case 89:
+#line 728 "cp-parse.y"
+{ yyval.itype = 0; ;
+    break;}
+case 90:
+#line 730 "cp-parse.y"
+{ yyval.itype = 1; ;
+    break;}
+case 93:
+#line 736 "cp-parse.y"
+{
+                 if (current_class_name && !flag_traditional)
+                   pedwarn ("ANSI C++ forbids old style base class initialization",
+                            IDENTIFIER_POINTER (current_class_name));
+                 expand_member_init (C_C_D, NULL_TREE, yyvsp[-1].ttype);
+               ;
+    break;}
+case 94:
+#line 743 "cp-parse.y"
+{
+                 if (current_class_name && !flag_traditional)
+                   pedwarn ("ANSI C++ forbids old style base class initialization",
+                            IDENTIFIER_POINTER (current_class_name));
+                 expand_member_init (C_C_D, NULL_TREE, void_type_node);
+               ;
+    break;}
+case 95:
+#line 750 "cp-parse.y"
+{
+                 expand_member_init (C_C_D, yyval.ttype, yyvsp[-1].ttype);
+               ;
+    break;}
+case 96:
+#line 754 "cp-parse.y"
+{ expand_member_init (C_C_D, yyval.ttype, void_type_node); ;
+    break;}
+case 97:
+#line 756 "cp-parse.y"
+{ expand_member_init (C_C_D, yyval.ttype, yyvsp[-1].ttype); ;
+    break;}
+case 98:
+#line 758 "cp-parse.y"
+{ expand_member_init (C_C_D, yyval.ttype, void_type_node); ;
+    break;}
+case 99:
+#line 760 "cp-parse.y"
+{ expand_member_init (C_C_D, yyval.ttype, yyvsp[-1].ttype); ;
+    break;}
+case 100:
+#line 762 "cp-parse.y"
+{ expand_member_init (C_C_D, yyval.ttype, void_type_node); ;
+    break;}
+case 101:
+#line 764 "cp-parse.y"
+{
+                 do_member_init (yyval.ttype, yyvsp[-3].ttype, yyvsp[-1].ttype);
+               ;
+    break;}
+case 102:
+#line 768 "cp-parse.y"
+{
+                 do_member_init (yyval.ttype, yyvsp[-1].ttype, void_type_node);
+               ;
+    break;}
+case 112:
+#line 792 "cp-parse.y"
+{ yyval.ttype = build_parse_node (BIT_NOT_EXPR,yyvsp[0].ttype);;
+    break;}
+case 114:
+#line 798 "cp-parse.y"
+{
+                 extern tree template_type_seen_before_scope;
+
+                 if (yyvsp[0].ttype) 
+                   yyval.ttype = yyvsp[0].ttype;
+                 else if (yyval.ttype != error_mark_node)
+                   yyval.ttype = IDENTIFIER_TYPE_VALUE (yyval.ttype);
+                 /* This is a kludge: In order to detect nested types inside
+                  * template classes, we have to tell the lexer that it should
+                  * try to replace a following SCOPE token with the correct
+                  * SCOPED_TYPENAME for the nested type.  This SCOPED_TYPENAME
+                  * token will be handled in the rule "scoped_typename".
+                  * - niklas@appli.se */
+                 if (yychar == SCOPE) {
+                   template_type_seen_before_scope = TYPE_IDENTIFIER (yyval.ttype);
+                   yychar = YYLEX;
+                 }
+               ;
+    break;}
+case 115:
+#line 820 "cp-parse.y"
+{ yyval.ttype = lookup_template_class (yyval.ttype, yyvsp[-1].ttype); ;
+    break;}
+case 116:
+#line 822 "cp-parse.y"
+{ yyval.ttype = lookup_template_class (yyval.ttype, yyvsp[-1].ttype); ;
+    break;}
+case 117:
+#line 828 "cp-parse.y"
+{ yyungetc ('{', 1); yyval.ttype = 0; ;
+    break;}
+case 118:
+#line 829 "cp-parse.y"
+{ yyungetc (':', 1); yyval.ttype = 0; ;
+    break;}
+case 119:
+#line 831 "cp-parse.y"
+{ yyval.ttype = instantiate_class_template (yyvsp[0].ttype, 1); ;
+    break;}
+case 120:
+#line 836 "cp-parse.y"
+{ yyval.ttype = instantiate_class_template (yyvsp[0].ttype, 1); ;
+    break;}
+case 121:
+#line 841 "cp-parse.y"
+{ yyval.ttype = build_tree_list (NULL_TREE, yyval.ttype); ;
+    break;}
+case 122:
+#line 843 "cp-parse.y"
+{ yyval.ttype = chainon (yyval.ttype, build_tree_list (NULL_TREE, yyvsp[0].ttype)); ;
+    break;}
+case 123:
+#line 848 "cp-parse.y"
+{ yyval.ttype = groktypename (yyval.ttype); ;
+    break;}
+case 125:
+#line 854 "cp-parse.y"
+{
+                 tree t, decl, id, tmpl;
+
+                 id = TREE_VALUE (yyvsp[-1].ttype);
+                 tmpl = TREE_PURPOSE (IDENTIFIER_TEMPLATE (id));
+                 t = xref_tag (DECL_TEMPLATE_INFO (tmpl)->aggr, id, yyvsp[0].ttype);
+                 set_current_level_tags_transparency (1);
+                 my_friendly_assert (TREE_CODE (t) == RECORD_TYPE, 257);
+                 yyval.ttype = t;
+
+                 /* Now, put a copy of the decl in global scope, to avoid
+                    recursive expansion.  */
+                 decl = IDENTIFIER_LOCAL_VALUE (id);
+                 if (!decl)
+                   decl = IDENTIFIER_CLASS_VALUE (id);
+                 /* Now, put a copy of the decl in global scope, to avoid
+                    recursive expansion.  */
+                  if (decl)
+                    {
+                     /* Need to copy it to clear the chain pointer,
+                        and need to get it into permanent storage.  */
+                      my_friendly_assert (TREE_CODE (decl) == TYPE_DECL, 258);
+                     push_obstacks (&permanent_obstack, &permanent_obstack);
+                      decl = copy_node (decl);
+                     if (DECL_LANG_SPECIFIC (decl))
+                       copy_lang_decl (decl);
+                     pop_obstacks ();
+                     pushdecl_top_level (decl);
+                   }
+               ;
+    break;}
+case 126:
+#line 885 "cp-parse.y"
+{
+                 extern void end_template_instantiation ();
+                 int old_interface = interface_unknown;
+
+                 interface_unknown = 1;
+                 yyval.ttype = finish_struct (yyvsp[-3].ttype, yyvsp[-1].ttype, 0, 0);
+
+                 pop_obstacks ();
+                 end_template_instantiation (yyvsp[-5].ttype, yyvsp[-3].ttype);
+
+                  /* Now go after the methods & class data.  */
+                 old_interface = interface_unknown;
+                 interface_unknown = 1;
+                  instantiate_member_templates (yyvsp[-5].ttype);
+                 interface_unknown = old_interface;
+                 CLASSTYPE_GOT_SEMICOLON (yyval.ttype) = 1;
+               ;
+    break;}
+case 127:
+#line 906 "cp-parse.y"
+{ yyval.ttype = NULL_TREE; ;
+    break;}
+case 128:
+#line 908 "cp-parse.y"
+{ yyval.ttype = yyvsp[0].ttype; ;
+    break;}
+case 129:
+#line 913 "cp-parse.y"
+{ yyval.ttype = NULL_TREE; /* never used from here... */;
+    break;}
+case 130:
+#line 915 "cp-parse.y"
+{ yyval.ttype = yyvsp[-1].ttype; /*???*/ ;
+    break;}
+case 131:
+#line 919 "cp-parse.y"
+{ yyval.code = NEGATE_EXPR; ;
+    break;}
+case 132:
+#line 921 "cp-parse.y"
+{ yyval.code = CONVERT_EXPR; ;
+    break;}
+case 133:
+#line 923 "cp-parse.y"
+{ yyval.code = PREINCREMENT_EXPR; ;
+    break;}
+case 134:
+#line 925 "cp-parse.y"
+{ yyval.code = PREDECREMENT_EXPR; ;
+    break;}
+case 135:
+#line 927 "cp-parse.y"
+{ yyval.code = TRUTH_NOT_EXPR; ;
+    break;}
+case 136:
+#line 931 "cp-parse.y"
+{ yyval.ttype = build_x_compound_expr (yyval.ttype); ;
+    break;}
+case 138:
+#line 938 "cp-parse.y"
+{ yyval.ttype = build_tree_list (NULL_TREE, yyval.ttype); ;
+    break;}
+case 139:
+#line 940 "cp-parse.y"
+{ chainon (yyval.ttype, build_tree_list (NULL_TREE, yyvsp[0].ttype)); ;
+    break;}
+case 140:
+#line 942 "cp-parse.y"
+{ chainon (yyval.ttype, build_tree_list (NULL_TREE, error_mark_node)); ;
+    break;}
+case 141:
+#line 947 "cp-parse.y"
+{
+                 if (TREE_CODE (yyval.ttype) == TYPE_EXPR)
+                   yyval.ttype = build_component_type_expr (C_C_D, yyval.ttype, NULL_TREE, 1);
+               ;
+    break;}
+case 142:
+#line 953 "cp-parse.y"
+{ yyvsp[0].itype = pedantic;
+                 pedantic = 0; ;
+    break;}
+case 143:
+#line 956 "cp-parse.y"
+{ yyval.ttype = yyvsp[0].ttype;
+                 pedantic = yyvsp[-2].itype; ;
+    break;}
+case 144:
+#line 959 "cp-parse.y"
+{ yyval.ttype = build_x_indirect_ref (yyvsp[0].ttype, "unary *"); ;
+    break;}
+case 145:
+#line 961 "cp-parse.y"
+{ yyval.ttype = build_x_unary_op (ADDR_EXPR, yyvsp[0].ttype); ;
+    break;}
+case 146:
+#line 963 "cp-parse.y"
+{ yyval.ttype = build_x_unary_op (BIT_NOT_EXPR, yyvsp[0].ttype); ;
+    break;}
+case 147:
+#line 965 "cp-parse.y"
+{ yyval.ttype = build_x_unary_op (yyval.ttype, yyvsp[0].ttype);
+                 if (yyvsp[-1].code == NEGATE_EXPR && TREE_CODE (yyvsp[0].ttype) == INTEGER_CST)
+                   TREE_NEGATED_INT (yyval.ttype) = 1;
+               ;
+    break;}
+case 148:
+#line 971 "cp-parse.y"
+{ tree label = lookup_label (yyvsp[0].ttype);
+                 TREE_USED (label) = 1;
+                 yyval.ttype = build1 (ADDR_EXPR, ptr_type_node, label);
+                 TREE_CONSTANT (yyval.ttype) = 1; ;
+    break;}
+case 149:
+#line 976 "cp-parse.y"
+{ if (TREE_CODE (yyvsp[0].ttype) == COMPONENT_REF
+                     && DECL_BIT_FIELD (TREE_OPERAND (yyvsp[0].ttype, 1)))
+                   error ("sizeof applied to a bit-field");
+                 /* ANSI says arrays and functions are converted inside comma.
+                    But we can't really convert them in build_compound_expr
+                    because that would break commas in lvalues.
+                    So do the conversion here if operand was a comma.  */
+                 if (TREE_CODE (yyvsp[0].ttype) == COMPOUND_EXPR
+                     && (TREE_CODE (TREE_TYPE (yyvsp[0].ttype)) == ARRAY_TYPE
+                         || TREE_CODE (TREE_TYPE (yyvsp[0].ttype)) == FUNCTION_TYPE))
+                   yyvsp[0].ttype = default_conversion (yyvsp[0].ttype);
+                 yyval.ttype = c_sizeof (TREE_TYPE (yyvsp[0].ttype)); ;
+    break;}
+case 150:
+#line 989 "cp-parse.y"
+{ yyval.ttype = c_sizeof (groktypename (yyvsp[-1].ttype)); ;
+    break;}
+case 151:
+#line 991 "cp-parse.y"
+{ if (TREE_CODE (yyvsp[0].ttype) == COMPONENT_REF
+                     && DECL_BIT_FIELD (TREE_OPERAND (yyvsp[0].ttype, 1)))
+                   error ("`__alignof' applied to a bit-field");
+                 if (TREE_CODE (yyvsp[0].ttype) == INDIRECT_REF)
+                   {
+                     tree t = TREE_OPERAND (yyvsp[0].ttype, 0);
+                     tree best = t;
+                     int bestalign = TYPE_ALIGN (TREE_TYPE (TREE_TYPE (t)));
+                     while (TREE_CODE (t) == NOP_EXPR
+                            && TREE_CODE (TREE_TYPE (TREE_OPERAND (t, 0))) == POINTER_TYPE)
+                       {
+                         int thisalign;
+                         t = TREE_OPERAND (t, 0);
+                         thisalign = TYPE_ALIGN (TREE_TYPE (TREE_TYPE (t)));
+                         if (thisalign > bestalign)
+                           best = t, bestalign = thisalign;
+                       }
+                     yyval.ttype = c_alignof (TREE_TYPE (TREE_TYPE (best)));
+                   }
+                 else
+                   {
+                     /* ANSI says arrays and fns are converted inside comma.
+                        But we can't convert them in build_compound_expr
+                        because that would break commas in lvalues.
+                        So do the conversion here if operand was a comma.  */
+                     if (TREE_CODE (yyvsp[0].ttype) == COMPOUND_EXPR
+                         && (TREE_CODE (TREE_TYPE (yyvsp[0].ttype)) == ARRAY_TYPE
+                             || TREE_CODE (TREE_TYPE (yyvsp[0].ttype)) == FUNCTION_TYPE))
+                       yyvsp[0].ttype = default_conversion (yyvsp[0].ttype);
+                     yyval.ttype = c_alignof (TREE_TYPE (yyvsp[0].ttype));
+                   }
+               ;
+    break;}
+case 152:
+#line 1024 "cp-parse.y"
+{ yyval.ttype = c_alignof (groktypename (yyvsp[-1].ttype)); ;
+    break;}
+case 153:
+#line 1027 "cp-parse.y"
+{ yyval.ttype = build_new (yyvsp[-1].ttype, yyvsp[0].ttype, NULL_TREE, yyval.ttype); ;
+    break;}
+case 154:
+#line 1029 "cp-parse.y"
+{ yyval.ttype = build_new (yyvsp[-2].ttype, yyvsp[0].ttype, NULL_TREE, yyval.ttype); ;
+    break;}
+case 155:
+#line 1031 "cp-parse.y"
+{ yyval.ttype = build_new (yyvsp[-4].ttype, yyvsp[-3].ttype, yyvsp[-1].ttype, yyval.ttype); ;
+    break;}
+case 156:
+#line 1033 "cp-parse.y"
+{ yyval.ttype = build_new (yyvsp[-5].ttype, yyvsp[-3].ttype, yyvsp[-1].ttype, yyval.ttype); ;
+    break;}
+case 157:
+#line 1035 "cp-parse.y"
+{ yyval.ttype = build_new (yyvsp[-2].ttype, yyvsp[-1].ttype, NULL_TREE, yyval.ttype); ;
+    break;}
+case 158:
+#line 1037 "cp-parse.y"
+{ yyval.ttype = build_new (yyvsp[-3].ttype, yyvsp[-1].ttype, NULL_TREE, yyval.ttype); ;
+    break;}
+case 159:
+#line 1039 "cp-parse.y"
+{ yyval.ttype = build_new (yyvsp[-3].ttype, yyvsp[-2].ttype, yyvsp[0].ttype, yyval.ttype); ;
+    break;}
+case 160:
+#line 1041 "cp-parse.y"
+{ yyval.ttype = build_new (yyvsp[-4].ttype, yyvsp[-2].ttype, yyvsp[0].ttype, yyval.ttype); ;
+    break;}
+case 161:
+#line 1049 "cp-parse.y"
+{
+                 tree absdcl, typename;
+
+               illegal_new_array:
+                 absdcl = build_parse_node (ARRAY_REF, yyvsp[-4].ttype, yyvsp[-1].ttype);
+                 typename = build_decl_list (yyvsp[-5].ttype, absdcl);
+                 pedwarn ("ANSI C++ forbids array dimensions with parenthesized type");
+                 yyval.ttype = build_new (yyvsp[-7].ttype, typename, NULL_TREE, yyval.ttype);
+               ;
+    break;}
+case 162:
+#line 1059 "cp-parse.y"
+{ goto illegal_new_array; ;
+    break;}
+case 163:
+#line 1062 "cp-parse.y"
+{ yyval.ttype = build_new (yyvsp[-4].ttype, build_decl_list (yyvsp[-2].ttype, yyvsp[-1].ttype), NULL_TREE, yyval.ttype); ;
+    break;}
+case 164:
+#line 1064 "cp-parse.y"
+{ yyval.ttype = build_new (yyvsp[-5].ttype, build_decl_list (yyvsp[-2].ttype, yyvsp[-1].ttype), NULL_TREE, yyval.ttype); ;
+    break;}
+case 165:
+#line 1066 "cp-parse.y"
+{ yyval.ttype = build_new (yyvsp[-4].ttype, build_decl_list (yyvsp[-2].ttype, yyvsp[-1].ttype), NULL_TREE, yyval.ttype); ;
+    break;}
+case 166:
+#line 1068 "cp-parse.y"
+{ yyval.ttype = build_new (yyvsp[-5].ttype, build_decl_list (yyvsp[-2].ttype, yyvsp[-1].ttype), NULL_TREE, yyval.ttype); ;
+    break;}
+case 167:
+#line 1071 "cp-parse.y"
+{ yyungetc (':', 1); yyval.ttype = build_new (yyvsp[-1].ttype, yyvsp[0].ttype, NULL_TREE, yyval.ttype); ;
+    break;}
+case 168:
+#line 1073 "cp-parse.y"
+{ yyungetc (':', 1); yyval.ttype = build_new (yyvsp[-2].ttype, yyvsp[0].ttype, NULL_TREE, yyval.ttype); ;
+    break;}
+case 169:
+#line 1076 "cp-parse.y"
+{ tree expr = stabilize_reference (convert_from_reference (yyvsp[0].ttype));
+                 tree type = TREE_TYPE (expr);
+
+                 if (TREE_CODE (type) != POINTER_TYPE)
+                   {
+                     error ("non-pointer type to `delete'");
+                     yyval.ttype = error_mark_node;
+                     break;
+                   }
+                 else if (integer_zerop (expr))
+                   {
+                     /* ANSI C++ June 5 1992 WP 5.3.4.  Deleting a pointer
+                        with the value zero is legal and has no effect.  */
+                     yyval.ttype = build1 (NOP_EXPR, void_type_node, expr);
+                     break;
+                   }
+                 else if (TREE_READONLY (TREE_TYPE (type)))
+                   {
+                     error ("`const *' cannot be deleted");
+                     yyval.ttype = error_mark_node;
+                     break;
+                   }
+                 yyval.ttype = build_delete (type, expr, integer_three_node,
+                                    LOOKUP_NORMAL|LOOKUP_HAS_IN_CHARGE,
+                                    TYPE_HAS_DESTRUCTOR (TREE_TYPE (type)),
+                                    0);
+               ;
+    break;}
+case 170:
+#line 1104 "cp-parse.y"
+{
+                 tree exp = stabilize_reference (convert_from_reference (yyvsp[0].ttype));
+                 tree type = TREE_TYPE (exp);
+                 tree elt_size = c_sizeof (type);
+
+                 if (yychar == YYEMPTY)
+                   yychar = YYLEX;
+
+                 if (TREE_CODE (type) == POINTER_TYPE
+                     && TREE_READONLY (TREE_TYPE (type)))
+                   {
+                     error ("`const *' cannot be deleted");
+                     yyval.ttype = error_mark_node;
+                     break;
+                   }
+                 yyval.ttype = build_vec_delete (exp, NULL_TREE, elt_size, NULL_TREE,
+                                        integer_one_node, integer_two_node);
+               ;
+    break;}
+case 171:
+#line 1123 "cp-parse.y"
+{
+                 tree maxindex = build_binary_op (MINUS_EXPR, yyvsp[-2].ttype,
+                                                  integer_one_node);
+                 tree exp = stabilize_reference (convert_from_reference (yyvsp[0].ttype));
+                 tree type = TREE_TYPE (exp);
+                 tree elt_size = c_sizeof (type);
+
+                 if (yychar == YYEMPTY)
+                   yychar = YYLEX;
+
+                 if (! flag_traditional)
+                   pedwarn ("ANSI C++ forbids array size in vector delete");
+                 if (TREE_CODE (type) == POINTER_TYPE
+                     && TREE_READONLY (TREE_TYPE (type)))
+                   {
+                     error ("`const *' cannot be deleted");
+                     yyval.ttype = error_mark_node;
+                     break;
+                   }
+                 yyval.ttype = build_vec_delete (exp, maxindex, elt_size, NULL_TREE,
+                                        integer_one_node, integer_two_node);
+               ;
+    break;}
+case 173:
+#line 1150 "cp-parse.y"
+{ tree type = groktypename (yyvsp[-2].ttype);
+                 yyval.ttype = build_c_cast (type, yyvsp[0].ttype); ;
+    break;}
+case 174:
+#line 1153 "cp-parse.y"
+{ tree type = groktypename (yyvsp[-5].ttype);
+                 tree init = build_nt (CONSTRUCTOR, NULL_TREE, nreverse (yyvsp[-2].ttype));
+                 if (pedantic)
+                   pedwarn ("ANSI C++ forbids constructor-expressions");
+                 /* Indicate that this was a GNU C constructor expression.  */
+                 TREE_HAS_CONSTRUCTOR (init) = 1;
+                 yyval.ttype = digest_init (type, init, 0);
+                 if (TREE_CODE (type) == ARRAY_TYPE && TYPE_SIZE (type) == 0)
+                   {
+                     int failure = complete_array_type (type, yyval.ttype, 1);
+                     if (failure)
+                       my_friendly_abort (78);
+                   }
+               ;
+    break;}
+case 175:
+#line 1168 "cp-parse.y"
+{ yyval.ttype = build_headof (yyvsp[-1].ttype); ;
+    break;}
+case 176:
+#line 1170 "cp-parse.y"
+{ yyval.ttype = build_classof (yyvsp[-1].ttype); ;
+    break;}
+case 177:
+#line 1172 "cp-parse.y"
+{ if (is_aggr_typedef (yyvsp[-1].ttype, 1))
+                   {
+                     tree type = IDENTIFIER_TYPE_VALUE (yyvsp[-1].ttype);
+                     yyval.ttype = CLASSTYPE_DOSSIER (type);
+                   }
+                 else
+                   yyval.ttype = error_mark_node;
+               ;
+    break;}
+case 179:
+#line 1185 "cp-parse.y"
+{ yyval.ttype = build_x_binary_op (yyvsp[-1].code, yyval.ttype, yyvsp[0].ttype); ;
+    break;}
+case 180:
+#line 1187 "cp-parse.y"
+{ yyval.ttype = build_x_binary_op (yyvsp[-1].code, yyval.ttype, yyvsp[0].ttype); ;
+    break;}
+case 181:
+#line 1189 "cp-parse.y"
+{ yyval.ttype = build_x_binary_op (yyvsp[-1].code, yyval.ttype, yyvsp[0].ttype); ;
+    break;}
+case 182:
+#line 1191 "cp-parse.y"
+{ yyval.ttype = build_x_binary_op (yyvsp[-1].code, yyval.ttype, yyvsp[0].ttype); ;
+    break;}
+case 183:
+#line 1193 "cp-parse.y"
+{ yyval.ttype = build_x_binary_op (yyvsp[-1].code, yyval.ttype, yyvsp[0].ttype); ;
+    break;}
+case 184:
+#line 1195 "cp-parse.y"
+{ yyval.ttype = build_x_binary_op (yyvsp[-1].code, yyval.ttype, yyvsp[0].ttype); ;
+    break;}
+case 185:
+#line 1197 "cp-parse.y"
+{ yyval.ttype = build_x_binary_op (yyvsp[-1].code, yyval.ttype, yyvsp[0].ttype); ;
+    break;}
+case 186:
+#line 1199 "cp-parse.y"
+{ yyval.ttype = build_x_binary_op (yyvsp[-1].code, yyval.ttype, yyvsp[0].ttype); ;
+    break;}
+case 187:
+#line 1201 "cp-parse.y"
+{ yyval.ttype = build_x_binary_op (LT_EXPR, yyval.ttype, yyvsp[0].ttype); ;
+    break;}
+case 188:
+#line 1203 "cp-parse.y"
+{ yyval.ttype = build_x_binary_op (GT_EXPR, yyval.ttype, yyvsp[0].ttype); ;
+    break;}
+case 189:
+#line 1205 "cp-parse.y"
+{ yyval.ttype = build_x_binary_op (yyvsp[-1].code, yyval.ttype, yyvsp[0].ttype); ;
+    break;}
+case 190:
+#line 1207 "cp-parse.y"
+{ yyval.ttype = build_x_binary_op (yyvsp[-1].code, yyval.ttype, yyvsp[0].ttype); ;
+    break;}
+case 191:
+#line 1209 "cp-parse.y"
+{ yyval.ttype = build_x_binary_op (yyvsp[-1].code, yyval.ttype, yyvsp[0].ttype); ;
+    break;}
+case 192:
+#line 1211 "cp-parse.y"
+{ yyval.ttype = build_x_binary_op (yyvsp[-1].code, yyval.ttype, yyvsp[0].ttype); ;
+    break;}
+case 193:
+#line 1213 "cp-parse.y"
+{ yyval.ttype = build_x_binary_op (yyvsp[-1].code, yyval.ttype, yyvsp[0].ttype); ;
+    break;}
+case 194:
+#line 1215 "cp-parse.y"
+{ yyval.ttype = build_x_binary_op (TRUTH_ANDIF_EXPR, yyval.ttype, yyvsp[0].ttype); ;
+    break;}
+case 195:
+#line 1217 "cp-parse.y"
+{ yyval.ttype = build_x_binary_op (TRUTH_ORIF_EXPR, yyval.ttype, yyvsp[0].ttype); ;
+    break;}
+case 196:
+#line 1219 "cp-parse.y"
+{ yyval.ttype = build_x_conditional_expr (yyval.ttype, yyvsp[-2].ttype, yyvsp[0].ttype); ;
+    break;}
+case 197:
+#line 1221 "cp-parse.y"
+{ yyval.ttype = build_modify_expr (yyval.ttype, NOP_EXPR, yyvsp[0].ttype); ;
+    break;}
+case 198:
+#line 1223 "cp-parse.y"
+{ register tree rval;
+                 if (rval = build_opfncall (MODIFY_EXPR, LOOKUP_NORMAL, yyval.ttype, yyvsp[0].ttype,
+                       make_node (yyvsp[-1].code)))
+                   yyval.ttype = rval;
+                 else
+                   yyval.ttype = build_modify_expr (yyval.ttype, yyvsp[-1].code, yyvsp[0].ttype); ;
+    break;}
+case 199:
+#line 1230 "cp-parse.y"
+{ yyval.ttype = build_m_component_ref (yyval.ttype, build_indirect_ref (yyvsp[0].ttype, 0)); ;
+    break;}
+case 200:
+#line 1233 "cp-parse.y"
+{ yyval.ttype = build_x_binary_op (MEMBER_REF, yyval.ttype, yyvsp[0].ttype); ;
+    break;}
+case 201:
+#line 1249 "cp-parse.y"
+{ yyval.ttype = do_identifier (yyval.ttype); ;
+    break;}
+case 202:
+#line 1251 "cp-parse.y"
+{
+                 tree op = yyval.ttype;
+                 if (TREE_CODE (op) != IDENTIFIER_NODE)
+                   yyval.ttype = op;
+                 else
+                   {
+                     yyval.ttype = lookup_name (op, 0);
+                     if (yyval.ttype == NULL_TREE)
+                       {
+                         error ("operator %s not defined", operator_name_string (op));
+                         yyval.ttype = error_mark_node;
+                       }
+                   }
+               ;
+    break;}
+case 204:
+#line 1267 "cp-parse.y"
+{ yyval.ttype = combine_strings (yyval.ttype); ;
+    break;}
+case 205:
+#line 1269 "cp-parse.y"
+{ yyval.ttype = yyvsp[-1].ttype; ;
+    break;}
+case 206:
+#line 1271 "cp-parse.y"
+{ yyval.ttype = error_mark_node; ;
+    break;}
+case 207:
+#line 1273 "cp-parse.y"
+{ if (current_function_decl == 0)
+                   {
+                     error ("braced-group within expression allowed only inside a function");
+                     YYERROR;
+                   }
+                 keep_next_level ();
+                 yyval.ttype = expand_start_stmt_expr (); ;
+    break;}
+case 208:
+#line 1281 "cp-parse.y"
+{ tree rtl_exp;
+                 if (pedantic)
+                   pedwarn ("ANSI C++ forbids braced-groups within expressions");
+                 rtl_exp = expand_end_stmt_expr (yyvsp[-2].ttype);
+                 /* The statements have side effects, so the group does.  */
+                 TREE_SIDE_EFFECTS (rtl_exp) = 1;
+                 /* Make a BIND_EXPR for the BLOCK already made.  */
+                 yyval.ttype = build (BIND_EXPR, TREE_TYPE (rtl_exp),
+                             NULL_TREE, rtl_exp, yyvsp[-1].ttype);
+                 /* Remove the block from the tree at this point.
+                    It gets put back at the proper place
+                    when the BIND_EXPR is expanded.  */
+                 delete_block (yyvsp[-1].ttype);
+               ;
+    break;}
+case 209:
+#line 1296 "cp-parse.y"
+{ /* [eichin:19911016.1902EST] */
+                  yyval.ttype = build_x_function_call (yyvsp[-3].ttype, yyvsp[-1].ttype, current_class_decl); 
+                  /* here we instantiate_class_template as needed... */
+                  do_pending_templates ();
+                ;
+    break;}
+case 210:
+#line 1300 "cp-parse.y"
+{
+                  if (TREE_CODE (yyvsp[-1].ttype) == CALL_EXPR
+                      && TREE_TYPE (yyvsp[-1].ttype) != void_type_node)
+                   yyval.ttype = require_complete_type (yyvsp[-1].ttype);
+                  else
+                    yyval.ttype = yyvsp[-1].ttype;
+                ;
+    break;}
+case 211:
+#line 1308 "cp-parse.y"
+{ 
+               if (yyval.ttype != error_mark_node)
+                 {
+                   yyval.ttype = build_x_function_call (yyval.ttype, NULL_TREE,
+                                               current_class_decl);
+                   if (TREE_CODE (yyval.ttype) == CALL_EXPR
+                       && TREE_TYPE (yyval.ttype) != void_type_node)
+                     yyval.ttype = require_complete_type (yyval.ttype);
+                 }
+                ;
+    break;}
+case 212:
+#line 1319 "cp-parse.y"
+{
+               do_array:
+                 {
+                   tree array_expr = yyval.ttype;
+                   tree index_exp = yyvsp[-1].ttype;
+                   tree type = TREE_TYPE (array_expr);
+                   if (type == error_mark_node || index_exp == error_mark_node)
+                     yyval.ttype = error_mark_node;
+                   else if (type == NULL_TREE)
+                     {
+                       /* Something has gone very wrong.  Assume we
+                          are mistakenly reducing an expression
+                          instead of a declaration.  */
+                       error ("parser may be lost: is there a '{' missing somewhere?");
+                       yyval.ttype = NULL_TREE;
+                     }
+                   else
+                     {
+                       if (TREE_CODE (type) == OFFSET_TYPE)
+                         type = TREE_TYPE (type);
+                       if (TREE_CODE (type) == REFERENCE_TYPE)
+                         type = TREE_TYPE (type);
+
+                       if (TYPE_LANG_SPECIFIC (type)
+                           && TYPE_OVERLOADS_ARRAY_REF (type))
+                         yyval.ttype = build_opfncall (ARRAY_REF, LOOKUP_NORMAL, array_expr, index_exp);
+                       else if (TREE_CODE (type) == POINTER_TYPE
+                                || TREE_CODE (type) == ARRAY_TYPE)
+                         yyval.ttype = build_array_ref (array_expr, index_exp);
+                       else
+                         {
+                           type = TREE_TYPE (index_exp);
+                           if (TREE_CODE (type) == OFFSET_TYPE)
+                             type = TREE_TYPE (type);
+                           if (TREE_CODE (type) == REFERENCE_TYPE)
+                             type = TREE_TYPE (type);
+                           
+                           if (TYPE_LANG_SPECIFIC (type)
+                               && TYPE_OVERLOADS_ARRAY_REF (type))
+                             error ("array expression backwards");
+                           else if (TREE_CODE (type) == POINTER_TYPE
+                                    || TREE_CODE (type) == ARRAY_TYPE)
+                             yyval.ttype = build_array_ref (index_exp, array_expr);
+                           else
+                             error("[] applied to non-pointer type");
+                         }
+                     }
+                 }
+               ;
+    break;}
+case 213:
+#line 1369 "cp-parse.y"
+{ yyval.ttype = build_component_ref (yyval.ttype, yyvsp[0].ttype, NULL_TREE, 1); ;
+    break;}
+case 214:
+#line 1371 "cp-parse.y"
+{
+                 tree basetype = yyvsp[-1].ttype;
+                 if (is_aggr_typedef (basetype, 1))
+                   {
+                     basetype = IDENTIFIER_TYPE_VALUE (basetype);
+
+                     if (yyval.ttype == error_mark_node)
+                       ;
+                     else if (binfo_or_else (basetype, TREE_TYPE (yyval.ttype)))
+                       yyval.ttype = build_component_ref (build_scoped_ref (yyval.ttype, yyvsp[-1].ttype), yyvsp[0].ttype, NULL_TREE, 1);
+                     else
+                       yyval.ttype = error_mark_node;
+                   }
+                 else yyval.ttype = error_mark_node;
+               ;
+    break;}
+case 215:
+#line 1387 "cp-parse.y"
+{ yyval.ttype = build_x_unary_op (POSTINCREMENT_EXPR, yyval.ttype); ;
+    break;}
+case 216:
+#line 1389 "cp-parse.y"
+{ yyval.ttype = build_x_unary_op (POSTDECREMENT_EXPR, yyval.ttype); ;
+    break;}
+case 217:
+#line 1393 "cp-parse.y"
+{ if (current_class_decl)
+                   {
+#ifdef WARNING_ABOUT_CCD
+                     TREE_USED (current_class_decl) = 1;
+#endif
+                     yyval.ttype = current_class_decl;
+                   }
+                 else if (current_function_decl
+                          && DECL_STATIC_FUNCTION_P (current_function_decl))
+                   {
+                     error ("`this' is unavailable for static member functions");
+                     yyval.ttype = error_mark_node;
+                   }
+                 else
+                   {
+                     if (current_function_decl)
+                       error ("invalid use of `this' in non-member function");
+                     else
+                       error ("invalid use of `this' at top level");
+                     yyval.ttype = error_mark_node;
+                   }
+               ;
+    break;}
+case 218:
+#line 1416 "cp-parse.y"
+{
+                 tree type;
+                 tree id = yyval.ttype;
+
+                 /* This is a C cast in C++'s `functional' notation.  */
+                 if (yyvsp[-1].ttype == error_mark_node)
+                   {
+                     yyval.ttype = error_mark_node;
+                     break;
+                   }
+#if 0
+                 if (yyvsp[-1].ttype == NULL_TREE)
+                   {
+                     error ("cannot cast null list to type `%s'",
+                            IDENTIFIER_POINTER (TYPE_NAME (id)));
+                     yyval.ttype = error_mark_node;
+                     break;
+                   }
+#endif
+#if 0
+                 /* type is not set! (mrs) */
+                 if (type == error_mark_node)
+                   yyval.ttype = error_mark_node;
+                 else
+#endif
+                   {
+                     if (id == ridpointers[(int) RID_CONST])
+                       type = build_type_variant (integer_type_node, 1, 0);
+                     else if (id == ridpointers[(int) RID_VOLATILE])
+                       type = build_type_variant (integer_type_node, 0, 1);
+#if 0
+                     /* should not be able to get here (mrs) */
+                     else if (id == ridpointers[(int) RID_FRIEND])
+                       {
+                         error ("cannot cast expression to `friend' type");
+                         yyval.ttype = error_mark_node;
+                         break;
+                       }
+#endif
+                     else my_friendly_abort (79);
+                     yyval.ttype = build_c_cast (type, build_compound_expr (yyvsp[-1].ttype));
+                   }
+               ;
+    break;}
+case 219:
+#line 1460 "cp-parse.y"
+{ yyval.ttype = build_functional_cast (yyval.ttype, yyvsp[-1].ttype); ;
+    break;}
+case 220:
+#line 1462 "cp-parse.y"
+{ yyval.ttype = build_functional_cast (yyval.ttype, NULL_TREE); ;
+    break;}
+case 221:
+#line 1464 "cp-parse.y"
+{ yyval.ttype = build_functional_cast (yyvsp[-3].ttype, yyvsp[-1].ttype); ;
+    break;}
+case 222:
+#line 1466 "cp-parse.y"
+{ yyval.ttype = build_functional_cast (yyvsp[-1].ttype, NULL_TREE); ;
+    break;}
+case 223:
+#line 1468 "cp-parse.y"
+{
+               do_scoped_id:
+                 yyval.ttype = IDENTIFIER_GLOBAL_VALUE (yyvsp[0].ttype);
+                 if (yychar == YYEMPTY)
+                   yychar = YYLEX;
+                 if (! yyval.ttype)
+                   {
+                     if (yychar == '(' || yychar == LEFT_RIGHT)
+                       yyval.ttype = implicitly_declare (yyvsp[0].ttype);
+                     else
+                       {
+                         if (IDENTIFIER_GLOBAL_VALUE (yyvsp[0].ttype) != error_mark_node)
+                           error ("undeclared variable `%s' (first use here)",
+                                  IDENTIFIER_POINTER (yyvsp[0].ttype));
+                         yyval.ttype = error_mark_node;
+                         /* Prevent repeated error messages.  */
+                         IDENTIFIER_GLOBAL_VALUE (yyvsp[0].ttype) = error_mark_node;
+                       }
+                   }
+                 else
+                   {
+                     assemble_external (yyval.ttype);
+                     TREE_USED (yyval.ttype) = 1;
+                   }
+                 if (TREE_CODE (yyval.ttype) == CONST_DECL)
+                   {
+                     /* XXX CHS - should we set TREE_USED of the constant? */
+                     yyval.ttype = DECL_INITIAL (yyval.ttype);
+                     /* This is to prevent an enum whose value is 0
+                        from being considered a null pointer constant.  */
+                     yyval.ttype = build1 (NOP_EXPR, TREE_TYPE (yyval.ttype), yyval.ttype);
+                     TREE_CONSTANT (yyval.ttype) = 1;
+                   }
+
+               ;
+    break;}
+case 224:
+#line 1504 "cp-parse.y"
+{
+                 if (TREE_CODE (yyvsp[0].ttype) == IDENTIFIER_NODE)
+                   goto do_scoped_id;
+               do_scoped_operator:
+                 yyval.ttype = yyvsp[0].ttype;
+               ;
+    break;}
+case 225:
+#line 1511 "cp-parse.y"
+{ yyval.ttype = build_offset_ref (yyval.ttype, yyvsp[0].ttype); ;
+    break;}
+case 226:
+#line 1513 "cp-parse.y"
+{ yyval.ttype = build_member_call (yyval.ttype, yyvsp[-3].ttype, yyvsp[-1].ttype); ;
+    break;}
+case 227:
+#line 1515 "cp-parse.y"
+{ yyval.ttype = build_member_call (yyval.ttype, yyvsp[-1].ttype, NULL_TREE); ;
+    break;}
+case 228:
+#line 1517 "cp-parse.y"
+{ yyval.ttype = build_method_call (yyval.ttype, yyvsp[-3].ttype, yyvsp[-1].ttype, NULL_TREE,
+                                         (LOOKUP_NORMAL|LOOKUP_AGGR)); ;
+    break;}
+case 229:
+#line 1520 "cp-parse.y"
+{ yyval.ttype = build_method_call (yyval.ttype, yyvsp[-1].ttype, NULL_TREE, NULL_TREE,
+                                         (LOOKUP_NORMAL|LOOKUP_AGGR)); ;
+    break;}
+case 230:
+#line 1523 "cp-parse.y"
+{ yyval.ttype = build_scoped_method_call (yyval.ttype, yyvsp[-4].ttype, yyvsp[-3].ttype, yyvsp[-1].ttype); ;
+    break;}
+case 231:
+#line 1525 "cp-parse.y"
+{ yyval.ttype = build_scoped_method_call (yyval.ttype, yyvsp[-2].ttype, yyvsp[-1].ttype, NULL_TREE); ;
+    break;}
+case 232:
+#line 1567 "cp-parse.y"
+{ yyval.ttype = NULL_TREE; ;
+    break;}
+case 233:
+#line 1569 "cp-parse.y"
+{
+                 yyval.ttype = yyvsp[-1].ttype;
+                 pedwarn ("old style placement syntax, use () instead");
+               ;
+    break;}
+case 234:
+#line 1574 "cp-parse.y"
+{ yyval.ttype = void_type_node; ;
+    break;}
+case 235:
+#line 1576 "cp-parse.y"
+{ yyval.ttype = combine_strings (yyvsp[-1].ttype); ;
+    break;}
+case 236:
+#line 1581 "cp-parse.y"
+{ yyval.itype = 0; ;
+    break;}
+case 237:
+#line 1583 "cp-parse.y"
+{ yyval.itype = 1; ;
+    break;}
+case 238:
+#line 1587 "cp-parse.y"
+{ yyval.ttype = NULL_TREE; ;
+    break;}
+case 239:
+#line 1589 "cp-parse.y"
+{ if (yyvsp[0].ttype)
+                   error ("extra `::' before `delete' ignored");
+                 yyval.ttype = error_mark_node;
+               ;
+    break;}
+case 241:
+#line 1599 "cp-parse.y"
+{ yyval.ttype = chainon (yyval.ttype, yyvsp[0].ttype); ;
+    break;}
+case 242:
+#line 1604 "cp-parse.y"
+{
+                 if (! current_function_parms_stored)
+                   store_parm_decls ();
+                 setup_vtbl_ptr ();
+               ;
+    break;}
+case 243:
+#line 1612 "cp-parse.y"
+{
+                 if (yyval.ttype == error_mark_node)
+                   ;
+                 else
+                   {
+                     tree type = TREE_TYPE (yyval.ttype);
+
+                     if (! PROMOTES_TO_AGGR_TYPE (type, REFERENCE_TYPE))
+                       {
+                         error ("object in '.' expression is not of aggregate type");
+                         yyval.ttype = error_mark_node;
+                       }
+                   }
+               ;
+    break;}
+case 244:
+#line 1627 "cp-parse.y"
+{
+                 yyval.ttype = build_x_arrow (yyval.ttype);
+               ;
+    break;}
+case 246:
+#line 1637 "cp-parse.y"
+{
+                 resume_momentary (yyvsp[-1].itype);
+                 note_list_got_semicolon (yyval.ttype);
+               ;
+    break;}
+case 247:
+#line 1643 "cp-parse.y"
+{ tree d;
+                 int yes = suspend_momentary ();
+                 d = start_decl (yyvsp[-1].ttype, yyval.ttype, 0, NULL_TREE);
+                 finish_decl (d, NULL_TREE, NULL_TREE, 0);
+                 resume_momentary (yes);
+                 note_list_got_semicolon (yyval.ttype);
+               ;
+    break;}
+case 248:
+#line 1651 "cp-parse.y"
+{ resume_momentary (yyvsp[-1].itype); ;
+    break;}
+case 249:
+#line 1654 "cp-parse.y"
+{ tree d;
+                 int yes = suspend_momentary ();
+                 d = start_decl (yyvsp[-1].ttype, yyval.ttype, 0, NULL_TREE);
+                 finish_decl (d, NULL_TREE, NULL_TREE, 0);
+                 resume_momentary (yes);
+               ;
+    break;}
+case 250:
+#line 1661 "cp-parse.y"
+{
+                 shadow_tag (yyval.ttype);
+                 note_list_got_semicolon (yyval.ttype);
+               ;
+    break;}
+case 251:
+#line 1666 "cp-parse.y"
+{ warning ("empty declaration"); ;
+    break;}
+case 254:
+#line 1676 "cp-parse.y"
+{ yyval.ttype = yyvsp[0].ttype; ;
+    break;}
+case 255:
+#line 1678 "cp-parse.y"
+{ yyval.ttype = yyvsp[0].ttype; ;
+    break;}
+case 256:
+#line 1687 "cp-parse.y"
+{ yyval.ttype = list_hash_lookup_or_cons (yyval.ttype); ;
+    break;}
+case 257:
+#line 1689 "cp-parse.y"
+{ yyval.ttype = hash_tree_chain (yyvsp[0].ttype, yyval.ttype); ;
+    break;}
+case 258:
+#line 1691 "cp-parse.y"
+{ yyval.ttype = hash_tree_chain (yyval.ttype, yyvsp[0].ttype); ;
+    break;}
+case 259:
+#line 1693 "cp-parse.y"
+{ yyval.ttype = hash_tree_chain (yyvsp[-1].ttype, hash_chainon (yyvsp[0].ttype, yyval.ttype)); ;
+    break;}
+case 260:
+#line 1699 "cp-parse.y"
+{ yyval.ttype = build_decl_list (NULL_TREE, yyval.ttype); ;
+    break;}
+case 261:
+#line 1701 "cp-parse.y"
+{ if (extra_warnings)
+                   warning ("`%s' is not at beginning of declaration",
+                            IDENTIFIER_POINTER (yyval.ttype));
+                 yyval.ttype = build_decl_list (NULL_TREE, yyval.ttype); ;
+    break;}
+case 262:
+#line 1706 "cp-parse.y"
+{ yyval.ttype = decl_tree_cons (NULL_TREE, yyvsp[0].ttype, yyval.ttype); ;
+    break;}
+case 263:
+#line 1708 "cp-parse.y"
+{ if (extra_warnings)
+                   warning ("`%s' is not at beginning of declaration",
+                            IDENTIFIER_POINTER (yyvsp[0].ttype));
+                 yyval.ttype = decl_tree_cons (NULL_TREE, yyvsp[0].ttype, yyval.ttype); ;
+    break;}
+case 264:
+#line 1720 "cp-parse.y"
+{ yyval.ttype = IDENTIFIER_AS_LIST (yyval.ttype);
+                 TREE_STATIC (yyval.ttype) = 1; ;
+    break;}
+case 265:
+#line 1723 "cp-parse.y"
+{ yyval.ttype = IDENTIFIER_AS_LIST (yyval.ttype); ;
+    break;}
+case 266:
+#line 1725 "cp-parse.y"
+{ yyval.ttype = hash_tree_chain (yyvsp[0].ttype, yyval.ttype);
+                 TREE_STATIC (yyval.ttype) = 1; ;
+    break;}
+case 267:
+#line 1728 "cp-parse.y"
+{ if (extra_warnings && TREE_STATIC (yyval.ttype))
+                   warning ("`%s' is not at beginning of declaration",
+                            IDENTIFIER_POINTER (yyvsp[0].ttype));
+                 yyval.ttype = hash_tree_chain (yyvsp[0].ttype, yyval.ttype);
+                 TREE_STATIC (yyval.ttype) = TREE_STATIC (yyvsp[-1].ttype); ;
+    break;}
+case 268:
+#line 1744 "cp-parse.y"
+{ yyval.ttype = get_decl_list (yyval.ttype); ;
+    break;}
+case 269:
+#line 1746 "cp-parse.y"
+{ yyval.ttype = decl_tree_cons (NULL_TREE, yyvsp[0].ttype, yyval.ttype); ;
+    break;}
+case 270:
+#line 1748 "cp-parse.y"
+{ yyval.ttype = decl_tree_cons (NULL_TREE, yyval.ttype, yyvsp[0].ttype); ;
+    break;}
+case 271:
+#line 1750 "cp-parse.y"
+{ yyval.ttype = decl_tree_cons (NULL_TREE, yyvsp[-1].ttype, hash_chainon (yyvsp[0].ttype, yyval.ttype)); ;
+    break;}
+case 272:
+#line 1755 "cp-parse.y"
+{ yyval.ttype = get_decl_list (yyval.ttype); ;
+    break;}
+case 273:
+#line 1757 "cp-parse.y"
+{ yyval.ttype = decl_tree_cons (NULL_TREE, yyvsp[0].ttype, yyval.ttype); ;
+    break;}
+case 278:
+#line 1769 "cp-parse.y"
+{ yyval.ttype = TREE_TYPE (yyvsp[-1].ttype);
+                 if (pedantic)
+                   pedwarn ("ANSI C++ forbids `typeof'"); ;
+    break;}
+case 279:
+#line 1773 "cp-parse.y"
+{ yyval.ttype = groktypename (yyvsp[-1].ttype);
+                 if (pedantic)
+                   pedwarn ("ANSI C++ forbids `typeof'"); ;
+    break;}
+case 288:
+#line 1798 "cp-parse.y"
+{ yyval.ttype = NULL_TREE; ;
+    break;}
+case 289:
+#line 1800 "cp-parse.y"
+{ if (TREE_CHAIN (yyvsp[-1].ttype)) yyvsp[-1].ttype = combine_strings (yyvsp[-1].ttype);
+                 yyval.ttype = yyvsp[-1].ttype;
+                 if (pedantic)
+                   pedwarn ("ANSI C++ forbids use of `asm' keyword");
+               ;
+    break;}
+case 290:
+#line 1809 "cp-parse.y"
+{ current_declspecs = yyvsp[-5].ttype;
+                 yyvsp[0].itype = suspend_momentary ();
+                 yyval.ttype = start_decl (yyvsp[-4].ttype, current_declspecs, 1, yyvsp[-3].ttype);
+                 cplus_decl_attributes (yyval.ttype, yyvsp[-1].ttype); ;
+    break;}
+case 291:
+#line 1815 "cp-parse.y"
+{ finish_decl (yyvsp[-1].ttype, yyvsp[0].ttype, yyvsp[-4].ttype, 0);
+                 yyval.itype = yyvsp[-2].itype; ;
+    break;}
+case 292:
+#line 1818 "cp-parse.y"
+{ tree d;
+                 current_declspecs = yyvsp[-4].ttype;
+                 yyval.itype = suspend_momentary ();
+                 d = start_decl (yyvsp[-3].ttype, current_declspecs, 0, yyvsp[-2].ttype);
+                 cplus_decl_attributes (d, yyvsp[0].ttype);
+                 finish_decl (d, NULL_TREE, yyvsp[-1].ttype, 0); ;
+    break;}
+case 293:
+#line 1828 "cp-parse.y"
+{ yyval.ttype = start_decl (yyvsp[-4].ttype, current_declspecs, 1, yyvsp[-3].ttype);
+                 cplus_decl_attributes (yyval.ttype, yyvsp[-1].ttype); ;
+    break;}
+case 294:
+#line 1832 "cp-parse.y"
+{ finish_decl (yyvsp[-1].ttype, yyvsp[0].ttype, yyvsp[-4].ttype, 0); ;
+    break;}
+case 295:
+#line 1834 "cp-parse.y"
+{ tree d = start_decl (yyval.itype, current_declspecs, 0, yyvsp[-2].ttype);
+                 cplus_decl_attributes (yyval.ttype, yyvsp[0].ttype);
+                 finish_decl (d, NULL_TREE, yyvsp[-1].ttype, 0); ;
+    break;}
+case 296:
+#line 1841 "cp-parse.y"
+{ current_declspecs = yyvsp[-5].ttype;
+                 yyvsp[0].itype = suspend_momentary ();
+                 yyval.ttype = start_decl (yyvsp[-4].ttype, current_declspecs, 1, yyvsp[-3].ttype);
+                 cplus_decl_attributes (yyval.ttype, yyvsp[-1].ttype); ;
+    break;}
+case 297:
+#line 1847 "cp-parse.y"
+{ finish_decl (yyvsp[-1].ttype, yyvsp[0].ttype, yyvsp[-4].ttype, 0);
+                 yyval.itype = yyvsp[-2].itype; ;
+    break;}
+case 298:
+#line 1850 "cp-parse.y"
+{ tree d;
+                 current_declspecs = yyvsp[-4].ttype;
+                 yyval.itype = suspend_momentary ();
+                 d = start_decl (yyvsp[-3].ttype, current_declspecs, 0, yyvsp[-2].ttype);
+                 cplus_decl_attributes (d, yyvsp[0].ttype);
+                 finish_decl (d, NULL_TREE, yyvsp[-1].ttype, 0); ;
+    break;}
+case 299:
+#line 1862 "cp-parse.y"
+{ yyval.ttype = NULL_TREE; ;
+    break;}
+case 300:
+#line 1864 "cp-parse.y"
+{ yyval.ttype = yyvsp[-2].ttype; ;
+    break;}
+case 301:
+#line 1869 "cp-parse.y"
+{ yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, NULL_TREE); ;
+    break;}
+case 302:
+#line 1871 "cp-parse.y"
+{ yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-2].ttype); ;
+    break;}
+case 303:
+#line 1876 "cp-parse.y"
+{ if (strcmp (IDENTIFIER_POINTER (yyvsp[0].ttype), "packed"))
+           warning ("`%s' attribute directive ignored",
+                    IDENTIFIER_POINTER (yyvsp[0].ttype));
+         yyval.ttype = yyvsp[0].ttype; ;
+    break;}
+case 304:
+#line 1881 "cp-parse.y"
+{ /* if not "aligned(n)", then issue warning */
+         if (strcmp (IDENTIFIER_POINTER (yyvsp[-3].ttype), "aligned") != 0
+             || TREE_CODE (yyvsp[-1].ttype) != INTEGER_CST)
+           {
+             warning ("`%s' attribute directive ignored",
+                      IDENTIFIER_POINTER (yyvsp[-3].ttype));
+             yyval.ttype = yyvsp[-3].ttype;
+           }
+         else
+           yyval.ttype = tree_cons (yyvsp[-3].ttype, yyvsp[-1].ttype, NULL_TREE); ;
+    break;}
+case 305:
+#line 1892 "cp-parse.y"
+{ /* if not "format(...)", then issue warning */
+         if (strcmp (IDENTIFIER_POINTER (yyvsp[-7].ttype), "format") != 0
+             || TREE_CODE (yyvsp[-3].ttype) != INTEGER_CST
+             || TREE_CODE (yyvsp[-1].ttype) != INTEGER_CST)
+           {
+             warning ("`%s' attribute directive ignored",
+                      IDENTIFIER_POINTER (yyvsp[-7].ttype));
+             yyval.ttype = yyvsp[-7].ttype;
+           }
+         else
+           yyval.ttype = tree_cons (yyvsp[-7].ttype, tree_cons (yyvsp[-5].ttype, tree_cons (yyvsp[-3].ttype, yyvsp[-1].ttype, NULL_TREE), NULL_TREE), NULL_TREE); ;
+    break;}
+case 306:
+#line 1908 "cp-parse.y"
+{ yyval.ttype = build_tree_list (NULL_TREE, yyvsp[0].ttype); ;
+    break;}
+case 307:
+#line 1910 "cp-parse.y"
+{ yyval.ttype = chainon (yyvsp[-2].ttype, build_tree_list (NULL_TREE, yyvsp[0].ttype)); ;
+    break;}
+case 309:
+#line 1916 "cp-parse.y"
+{ yyval.ttype = build_nt (CONSTRUCTOR, NULL_TREE, NULL_TREE);
+                 TREE_HAS_CONSTRUCTOR (yyval.ttype) = 1;
+                 if (pedantic)
+                   pedwarn ("ANSI C++ forbids empty initializer braces"); ;
+    break;}
+case 310:
+#line 1921 "cp-parse.y"
+{ yyval.ttype = build_nt (CONSTRUCTOR, NULL_TREE, nreverse (yyvsp[-1].ttype));
+                 TREE_HAS_CONSTRUCTOR (yyval.ttype) = 1; ;
+    break;}
+case 311:
+#line 1924 "cp-parse.y"
+{ yyval.ttype = build_nt (CONSTRUCTOR, NULL_TREE, nreverse (yyvsp[-2].ttype));
+                 TREE_HAS_CONSTRUCTOR (yyval.ttype) = 1; ;
+    break;}
+case 312:
+#line 1927 "cp-parse.y"
+{ yyval.ttype = NULL_TREE; ;
+    break;}
+case 313:
+#line 1934 "cp-parse.y"
+{ yyval.ttype = build_tree_list (NULL_TREE, yyval.ttype); ;
+    break;}
+case 314:
+#line 1936 "cp-parse.y"
+{ yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyval.ttype); ;
+    break;}
+case 315:
+#line 1939 "cp-parse.y"
+{ yyval.ttype = build_tree_list (yyvsp[-2].ttype, yyvsp[0].ttype); ;
+    break;}
+case 316:
+#line 1941 "cp-parse.y"
+{ yyval.ttype = tree_cons (yyvsp[-2].ttype, yyvsp[0].ttype, yyval.ttype); ;
+    break;}
+case 317:
+#line 1943 "cp-parse.y"
+{ yyval.ttype = build_tree_list (yyval.ttype, yyvsp[0].ttype); ;
+    break;}
+case 318:
+#line 1945 "cp-parse.y"
+{ yyval.ttype = tree_cons (yyvsp[-2].ttype, yyvsp[0].ttype, yyval.ttype); ;
+    break;}
+case 319:
+#line 1950 "cp-parse.y"
+{ yyvsp[0].itype = suspend_momentary ();
+                 yyval.ttype = start_enum (yyvsp[-1].ttype); ;
+    break;}
+case 320:
+#line 1953 "cp-parse.y"
+{ yyval.ttype = finish_enum (yyvsp[-3].ttype, yyvsp[-2].ttype);
+                 resume_momentary (yyvsp[-4].itype);
+                 check_for_missing_semicolon (yyvsp[-3].ttype); ;
+    break;}
+case 321:
+#line 1957 "cp-parse.y"
+{ yyval.ttype = finish_enum (start_enum (yyvsp[-2].ttype), NULL_TREE);
+                 check_for_missing_semicolon (yyval.ttype); ;
+    break;}
+case 322:
+#line 1960 "cp-parse.y"
+{ yyvsp[0].itype = suspend_momentary ();
+                 yyval.ttype = start_enum (make_anon_name ()); ;
+    break;}
+case 323:
+#line 1963 "cp-parse.y"
+{ yyval.ttype = finish_enum (yyvsp[-3].ttype, yyvsp[-2].ttype);
+                 resume_momentary (yyvsp[-5].itype);
+                 check_for_missing_semicolon (yyvsp[-3].ttype); ;
+    break;}
+case 324:
+#line 1967 "cp-parse.y"
+{ yyval.ttype = finish_enum (start_enum (make_anon_name()), NULL_TREE);
+                 check_for_missing_semicolon (yyval.ttype); ;
+    break;}
+case 325:
+#line 1970 "cp-parse.y"
+{ yyval.ttype = xref_tag (enum_type_node, yyvsp[0].ttype, NULL_TREE); ;
+    break;}
+case 326:
+#line 1974 "cp-parse.y"
+{
+                 int semi;
+                 tree id;
+
+#if 0
+                 /* Need to rework class nesting in the
+                    presence of nested classes, etc.  */
+                 shadow_tag (CLASSTYPE_AS_LIST (yyval.ttype)); */
+#endif
+                 if (yychar == YYEMPTY)
+                   yychar = YYLEX;
+                 semi = yychar == ';';
+                 /* finish_struct nukes this anyway; if
+                    finish_exception does too, then it can go. */
+                 if (semi)
+                   note_got_semicolon (yyval.ttype);
+
+                 if (TREE_CODE (yyval.ttype) == ENUMERAL_TYPE)
+                   /* $$ = $1 from default rule.  */;
+                 else if (CLASSTYPE_DECLARED_EXCEPTION (yyval.ttype))
+                   {
+                     if (! semi)
+                       yyval.ttype = finish_exception (yyval.ttype, yyvsp[-1].ttype);
+                     else
+                       warning ("empty exception declaration\n");
+                   }
+                 else
+                   {
+                     yyval.ttype = finish_struct (yyval.ttype, yyvsp[-1].ttype, semi, semi);
+                     if (semi) note_got_semicolon (yyval.ttype);
+                   }
+
+                 pop_obstacks ();
+
+                 id = TYPE_IDENTIFIER (yyval.ttype);
+                 if (IDENTIFIER_TEMPLATE (id))
+                   {
+                     tree decl;
+
+                     /* I don't know if the copying of this TYPE_DECL is
+                      * really needed.  However, it's such a small per-
+                      * formance penalty that the extra safety is a bargain.
+                      * - niklas@appli.se
+                      */
+                     push_obstacks (&permanent_obstack, &permanent_obstack);
+                     decl = copy_node (lookup_name (id));
+                     if (DECL_LANG_SPECIFIC (decl))
+                       copy_lang_decl (decl);
+                     pop_obstacks ();
+                     undo_template_name_overload (id, 0);
+                     pushdecl_top_level (decl);
+                   }
+                 if (! semi)
+                   check_for_missing_semicolon (yyval.ttype); ;
+    break;}
+case 327:
+#line 2029 "cp-parse.y"
+{
+#if 0
+  /* It's no longer clear what the following error is supposed to
+     accomplish.  If it turns out to be needed, add a comment why.  */
+                 if (TYPE_BINFO_BASETYPES (yyval.ttype) && !TYPE_SIZE (yyval.ttype))
+                   {
+                     error ("incomplete definition of type `%s'",
+                            TYPE_NAME_STRING (yyval.ttype));
+                     yyval.ttype = error_mark_node;
+                   }
+#endif
+               ;
+    break;}
+case 331:
+#line 2051 "cp-parse.y"
+{ if (pedantic)
+                   pedwarn ("ANSI C++ forbids comma at end of enumerator list"); ;
+    break;}
+case 333:
+#line 2057 "cp-parse.y"
+{ yyval.ttype = build_tree_list (NULL_TREE, yyvsp[0].ttype); ;
+    break;}
+case 334:
+#line 2059 "cp-parse.y"
+{ yyval.ttype = build_tree_list (yyvsp[-2].ttype, yyvsp[0].ttype); ;
+    break;}
+case 335:
+#line 2061 "cp-parse.y"
+{ error ("storage class specifier `%s' not allowed after struct or class", IDENTIFIER_POINTER (yyvsp[0].ttype));
+               ;
+    break;}
+case 336:
+#line 2064 "cp-parse.y"
+{ error ("type specifier `%s' not allowed after struct or class", IDENTIFIER_POINTER (yyvsp[0].ttype));
+               ;
+    break;}
+case 337:
+#line 2067 "cp-parse.y"
+{ error ("type qualifier `%s' not allowed after struct or class", IDENTIFIER_POINTER (yyvsp[0].ttype));
+               ;
+    break;}
+case 338:
+#line 2070 "cp-parse.y"
+{ error ("no body nor ';' separates two class, struct or union declarations");
+               ;
+    break;}
+case 339:
+#line 2076 "cp-parse.y"
+{ aggr1: current_aggr = yyval.ttype; yyval.ttype = yyvsp[0].ttype; ;
+    break;}
+case 340:
+#line 2078 "cp-parse.y"
+{ current_aggr = yyval.ttype; yyval.ttype = yyvsp[0].ttype; ;
+    break;}
+case 341:
+#line 2080 "cp-parse.y"
+{ yyungetc (':', 1); goto aggr1; ;
+    break;}
+case 342:
+#line 2082 "cp-parse.y"
+{ yyungetc ('{', 1);
+               aggr2:
+                 current_aggr = yyval.ttype;
+                 yyval.ttype = yyvsp[-1].ttype;
+                 overload_template_name (yyval.ttype, 0); ;
+    break;}
+case 343:
+#line 2088 "cp-parse.y"
+{ yyungetc (':', 1); goto aggr2; ;
+    break;}
+case 344:
+#line 2093 "cp-parse.y"
+{ current_aggr = yyval.ttype; yyval.ttype = yyvsp[0].ttype; ;
+    break;}
+case 345:
+#line 2098 "cp-parse.y"
+{
+                 yyval.ttype = xref_tag (current_aggr, yyvsp[0].ttype, NULL_TREE);
+               ;
+    break;}
+case 346:
+#line 2102 "cp-parse.y"
+{
+                 if (yyvsp[0].ttype)
+                   yyval.ttype = xref_tag (current_aggr, yyvsp[-2].ttype, yyvsp[0].ttype);
+                 else
+                   yyval.ttype = yyvsp[-1].ttype;
+               ;
+    break;}
+case 347:
+#line 2110 "cp-parse.y"
+{
+                 yyval.ttype = xref_defn_tag (current_aggr, yyvsp[0].ttype, NULL_TREE);
+               ;
+    break;}
+case 348:
+#line 2114 "cp-parse.y"
+{
+                 if (yyvsp[0].ttype)
+                   yyval.ttype = xref_defn_tag (current_aggr, yyvsp[-2].ttype, yyvsp[0].ttype);
+                 else
+                   yyval.ttype = yyvsp[-1].ttype;
+               ;
+    break;}
+case 349:
+#line 2123 "cp-parse.y"
+{ yyval.ttype = xref_tag (yyval.ttype, make_anon_name (), NULL_TREE);
+                 yyungetc ('{', 1); ;
+    break;}
+case 352:
+#line 2131 "cp-parse.y"
+{ yyval.ttype = NULL_TREE; ;
+    break;}
+case 353:
+#line 2133 "cp-parse.y"
+{ yyungetc(':', 1); yyval.ttype = NULL_TREE; ;
+    break;}
+case 354:
+#line 2135 "cp-parse.y"
+{ yyval.ttype = yyvsp[0].ttype; ;
+    break;}
+case 356:
+#line 2141 "cp-parse.y"
+{ yyval.ttype = chainon (yyval.ttype, yyvsp[0].ttype); ;
+    break;}
+case 357:
+#line 2146 "cp-parse.y"
+{ if (! is_aggr_typedef (yyval.ttype, 1))
+                   yyval.ttype = NULL_TREE;
+                 else yyval.ttype = build_tree_list ((tree)visibility_default, yyval.ttype); ;
+    break;}
+case 358:
+#line 2150 "cp-parse.y"
+{ if (! is_aggr_typedef (yyval.ttype, 1))
+                   yyval.ttype = NULL_TREE;
+                 else yyval.ttype = build_tree_list ((tree)visibility_default, yyval.ttype); ;
+    break;}
+case 359:
+#line 2154 "cp-parse.y"
+{ if (! is_aggr_typedef (yyvsp[0].ttype, 1))
+                   yyval.ttype = NULL_TREE;
+                 else yyval.ttype = build_tree_list ((tree) yyval.ttype, yyvsp[0].ttype); ;
+    break;}
+case 360:
+#line 2158 "cp-parse.y"
+{ if (! is_aggr_typedef (yyvsp[0].ttype, 1))
+                   yyval.ttype = NULL_TREE;
+                 else yyval.ttype = build_tree_list ((tree) yyval.ttype, yyvsp[0].ttype); ;
+    break;}
+case 361:
+#line 2165 "cp-parse.y"
+{
+                 /* Kludge!!! See rule "template_type" and the code
+                  * dealing with "template_type_seen_before_scope" in
+                  * yylex(). */
+                 yyval.ttype = yyvsp[0].ttype;
+               ;
+    break;}
+case 362:
+#line 2174 "cp-parse.y"
+{
+                 extern tree template_type_seen_before_scope;
+                 tree id = yyvsp[0].ttype ? TYPE_IDENTIFIER (yyvsp[0].ttype) : yyvsp[-2].ttype;
+
+                 /* Check the rule template_type to get this... */
+                 if (yychar == YYEMPTY)
+                   yychar = YYLEX;
+                 if (yychar == SCOPE) {
+                   template_type_seen_before_scope = id;
+                   yychar = YYLEX;
+                 }
+               ;
+    break;}
+case 365:
+#line 2192 "cp-parse.y"
+{ if (yyval.ttype != ridpointers[(int)RID_VIRTUAL])
+                   sorry ("non-virtual visibility");
+                 yyval.itype = visibility_default_virtual; ;
+    break;}
+case 366:
+#line 2196 "cp-parse.y"
+{ int err = 0;
+                 if (yyvsp[0].itype == visibility_protected)
+                   {
+                     warning ("`protected' visibility not implemented");
+                     yyvsp[0].itype = visibility_public;
+                     err++;
+                   }
+                 else if (yyvsp[0].itype == visibility_public)
+                   {
+                     if (yyvsp[-1].itype == visibility_private)
+                       {
+                       mixed:
+                         error ("base class cannot be public and private");
+                       }
+                     else if (yyvsp[-1].itype == visibility_default_virtual)
+                       yyval.itype = visibility_public_virtual;
+                   }
+                 else /* $2 == visibility_private */
+                   {
+                     if (yyvsp[-1].itype == visibility_public)
+                       goto mixed;
+                     else if (yyvsp[-1].itype == visibility_default_virtual)
+                       yyval.itype = visibility_private_virtual;
+                   }
+               ;
+    break;}
+case 367:
+#line 2222 "cp-parse.y"
+{ if (yyvsp[0].ttype != ridpointers[(int)RID_VIRTUAL])
+                   sorry ("non-virtual visibility");
+                 if (yyval.itype == visibility_public)
+                   yyval.itype = visibility_public_virtual;
+                 else if (yyval.itype == visibility_private)
+                   yyval.itype = visibility_private_virtual; ;
+    break;}
+case 368:
+#line 2231 "cp-parse.y"
+{ tree t;
+                 push_obstacks_nochange ();
+                 end_temporary_allocation ();
+
+                 if (! IS_AGGR_TYPE (yyvsp[-1].ttype))
+                   {
+                     yyvsp[-1].ttype = make_lang_type (RECORD_TYPE);
+                     TYPE_NAME (yyvsp[-1].ttype) = get_identifier ("erroneous type");
+                   }
+                 if (TYPE_SIZE (yyvsp[-1].ttype))
+                   duplicate_tag_error (yyvsp[-1].ttype);
+                  if (TYPE_SIZE (yyvsp[-1].ttype) || TYPE_BEING_DEFINED (yyvsp[-1].ttype))
+                    {
+                      t = make_lang_type (TREE_CODE (yyvsp[-1].ttype));
+                      pushtag (TYPE_IDENTIFIER (yyvsp[-1].ttype), t);
+                      yyvsp[-1].ttype = t;
+                    }
+                 pushclass (yyvsp[-1].ttype, 0);
+                 TYPE_BEING_DEFINED (yyvsp[-1].ttype) = 1;
+                 t = TYPE_IDENTIFIER (yyvsp[-1].ttype);
+                 if (IDENTIFIER_TEMPLATE (t))
+                   overload_template_name (t, 1);
+               ;
+    break;}
+case 369:
+#line 2258 "cp-parse.y"
+{ yyval.ttype = NULL_TREE; ;
+    break;}
+case 370:
+#line 2260 "cp-parse.y"
+{ yyval.ttype = build_tree_list ((tree)visibility_default, yyval.ttype); ;
+    break;}
+case 371:
+#line 2262 "cp-parse.y"
+{ yyval.ttype = chainon (yyval.ttype, build_tree_list ((tree) yyvsp[-2].itype, yyvsp[0].ttype)); ;
+    break;}
+case 373:
+#line 2268 "cp-parse.y"
+{ if (yyval.ttype == void_type_node) yyval.ttype = NULL_TREE; ;
+    break;}
+case 374:
+#line 2270 "cp-parse.y"
+{ if (yyvsp[0].ttype != NULL_TREE && yyvsp[0].ttype != void_type_node)
+                   yyval.ttype = chainon (yyval.ttype, yyvsp[0].ttype); ;
+    break;}
+case 375:
+#line 2273 "cp-parse.y"
+{ if (pedantic)
+                   pedwarn ("ANSI C++ forbids extra semicolons here"); ;
+    break;}
+case 376:
+#line 2279 "cp-parse.y"
+{
+               do_components:
+                 if (yyvsp[-1].ttype == void_type_node)
+                   /* We just got some friends.
+                      They have been recorded elsewhere.  */
+                   yyval.ttype = NULL_TREE;
+                 else if (yyvsp[-1].ttype == NULL_TREE)
+                   {
+                     tree t = groktypename (build_decl_list (yyval.ttype, NULL_TREE));
+                     if (t == NULL_TREE)
+                       {
+                         error ("error in component specification");
+                         yyval.ttype = NULL_TREE;
+                       }
+                     else if (TREE_CODE (t) == UNION_TYPE)
+                       {
+                         /* handle anonymous unions */
+                         if (ANON_AGGRNAME_P (TYPE_IDENTIFIER (t)))
+                           yyval.ttype = build_lang_field_decl (FIELD_DECL,
+                                                       NULL_TREE, t);
+                         else
+                           {
+                             /* This is a local union decl with a name, but
+                                no components, I think this is the right thing
+                                to do.  (mrs)  */
+#if 0
+                             /* I copied this from below, it is probably
+                                needed, but I cannot prove that to myself
+                                right now, but if you find it is needed
+                                please turn it on. (mrs)  */
+                             if (TYPE_LANG_SPECIFIC (t)
+                                 && CLASSTYPE_DECLARED_EXCEPTION (t))
+                               shadow_tag (yyval.ttype);
+#endif
+                             yyval.ttype = NULL_TREE;
+                           }
+                       }
+                     else if (TREE_CODE (t) == ENUMERAL_TYPE)
+                       yyval.ttype = grok_enum_decls (t, NULL_TREE);
+                     else if (TREE_CODE (t) == RECORD_TYPE)
+                       {
+                         if (TYPE_LANG_SPECIFIC (t)
+                             && CLASSTYPE_DECLARED_EXCEPTION (t))
+                           shadow_tag (yyval.ttype);
+                         yyval.ttype = NULL_TREE;
+                       }
+                     else if (t != void_type_node)
+                       {
+                         error ("empty component declaration");
+                         yyval.ttype = NULL_TREE;
+                       }
+                     else yyval.ttype = NULL_TREE;
+                   }
+                 else
+                   {
+                     tree t = TREE_TYPE (yyvsp[-1].ttype);
+                     if (TREE_CODE (t) == ENUMERAL_TYPE && TREE_NONLOCAL_FLAG (t))
+                       yyval.ttype = grok_enum_decls (t, yyvsp[-1].ttype);
+                     else
+                       yyval.ttype = yyvsp[-1].ttype;
+                   }
+                 end_exception_decls ();
+               ;
+    break;}
+case 377:
+#line 2343 "cp-parse.y"
+{ yyval.ttype = groktypefield (yyval.ttype, yyvsp[-2].ttype); ;
+    break;}
+case 378:
+#line 2345 "cp-parse.y"
+{ error ("missing ';' before right brace");
+                 yyungetc ('}', 0);
+                 yyval.ttype = groktypefield (yyval.ttype, yyvsp[-2].ttype); ;
+    break;}
+case 379:
+#line 2349 "cp-parse.y"
+{ yyval.ttype = groktypefield (yyval.ttype, empty_parms ()); ;
+    break;}
+case 380:
+#line 2351 "cp-parse.y"
+{ error ("missing ';' before right brace");
+                 yyungetc ('}', 0);
+                 yyval.ttype = groktypefield (yyval.ttype, empty_parms ()); ;
+    break;}
+case 381:
+#line 2355 "cp-parse.y"
+{ goto do_components; ;
+    break;}
+case 382:
+#line 2358 "cp-parse.y"
+{ yyval.ttype = grokfield (yyvsp[-1].ttype, yyval.ttype, 0, 0, 0, 0); ;
+    break;}
+case 383:
+#line 2360 "cp-parse.y"
+{ error ("missing ';' before right brace");
+                 yyungetc ('}', 0);
+                 goto do_components; ;
+    break;}
+case 384:
+#line 2364 "cp-parse.y"
+{ yyval.ttype = groktypefield (yyval.ttype, yyvsp[-2].ttype); ;
+    break;}
+case 385:
+#line 2366 "cp-parse.y"
+{ error ("missing ';' before right brace");
+                 yyungetc ('}', 0);
+                 yyval.ttype = groktypefield (yyval.ttype, yyvsp[-2].ttype); ;
+    break;}
+case 386:
+#line 2370 "cp-parse.y"
+{ yyval.ttype = groktypefield (yyval.ttype, empty_parms ()); ;
+    break;}
+case 387:
+#line 2372 "cp-parse.y"
+{ error ("missing ';' before right brace");
+                 yyungetc ('}', 0);
+                 yyval.ttype = groktypefield (yyval.ttype, empty_parms ()); ;
+    break;}
+case 388:
+#line 2376 "cp-parse.y"
+{ yyval.ttype = grokbitfield (NULL_TREE, NULL_TREE, yyvsp[-1].ttype); ;
+    break;}
+case 389:
+#line 2378 "cp-parse.y"
+{ error ("missing ';' before right brace");
+                 yyungetc ('}', 0);
+                 yyval.ttype = grokbitfield (NULL_TREE, NULL_TREE, yyvsp[-1].ttype); ;
+    break;}
+case 390:
+#line 2382 "cp-parse.y"
+{ yyval.ttype = NULL_TREE; ;
+    break;}
+case 391:
+#line 2387 "cp-parse.y"
+{ yyval.ttype = finish_method (yyval.ttype); ;
+    break;}
+case 392:
+#line 2389 "cp-parse.y"
+{ yyval.ttype = finish_method (yyval.ttype); ;
+    break;}
+case 393:
+#line 2391 "cp-parse.y"
+{ yyval.ttype = grokfield (yyval.ttype, NULL_TREE, yyvsp[-1].ttype, NULL_TREE, NULL_TREE); ;
+    break;}
+case 394:
+#line 2393 "cp-parse.y"
+{ error ("missing ';' before right brace");
+                 yyungetc ('}', 0);
+                 yyval.ttype = grokfield (yyval.ttype, NULL_TREE, yyvsp[-1].ttype, NULL_TREE, NULL_TREE); ;
+    break;}
+case 395:
+#line 2400 "cp-parse.y"
+{ yyval.ttype = NULL_TREE; ;
+    break;}
+case 397:
+#line 2403 "cp-parse.y"
+{
+                 /* In this context, void_type_node encodes
+                    friends.  They have been recorded elsewhere.  */
+                 if (yyval.ttype == void_type_node)
+                   yyval.ttype = yyvsp[0].ttype;
+                 else
+                   yyval.ttype = chainon (yyval.ttype, yyvsp[0].ttype);
+               ;
+    break;}
+case 398:
+#line 2415 "cp-parse.y"
+{ current_declspecs = yyvsp[-4].ttype;
+                 yyval.ttype = grokfield (yyval.ttype, current_declspecs, yyvsp[-2].ttype, NULL_TREE, yyvsp[-1].ttype);
+                 cplus_decl_attributes (yyval.ttype, yyvsp[0].ttype); ;
+    break;}
+case 399:
+#line 2419 "cp-parse.y"
+{ current_declspecs = yyvsp[-6].ttype;
+                 yyval.ttype = grokfield (yyval.ttype, current_declspecs, yyvsp[-4].ttype, yyvsp[0].ttype, yyvsp[-3].ttype);
+                 cplus_decl_attributes (yyval.ttype, yyvsp[-2].ttype); ;
+    break;}
+case 400:
+#line 2423 "cp-parse.y"
+{ current_declspecs = yyvsp[-4].ttype;
+                 yyval.ttype = grokbitfield (yyval.ttype, current_declspecs, yyvsp[-1].ttype);
+                 cplus_decl_attributes (yyval.ttype, yyvsp[0].ttype); ;
+    break;}
+case 401:
+#line 2427 "cp-parse.y"
+{ current_declspecs = yyvsp[-3].ttype;
+                 yyval.ttype = grokbitfield (yyval.ttype, current_declspecs, yyvsp[-1].ttype);
+                 cplus_decl_attributes (yyval.ttype, yyvsp[0].ttype); ;
+    break;}
+case 402:
+#line 2431 "cp-parse.y"
+{ current_declspecs = yyvsp[-2].ttype;
+                 yyval.ttype = grokbitfield (NULL_TREE, NULL_TREE, yyvsp[0].ttype); ;
+    break;}
+case 403:
+#line 2437 "cp-parse.y"
+{ yyval.ttype = grokfield (yyval.ttype, current_declspecs, yyvsp[-2].ttype, NULL_TREE, yyvsp[-1].ttype);
+                 cplus_decl_attributes (yyval.ttype, yyvsp[0].ttype); ;
+    break;}
+case 404:
+#line 2440 "cp-parse.y"
+{ yyval.ttype = grokfield (yyval.ttype, current_declspecs, yyvsp[-4].ttype, yyvsp[0].ttype, yyvsp[-3].ttype);
+                 cplus_decl_attributes (yyval.ttype, yyvsp[-2].ttype); ;
+    break;}
+case 405:
+#line 2443 "cp-parse.y"
+{ yyval.ttype = grokbitfield (yyval.ttype, current_declspecs, yyvsp[-1].ttype);
+                 cplus_decl_attributes (yyval.ttype, yyvsp[0].ttype); ;
+    break;}
+case 406:
+#line 2446 "cp-parse.y"
+{ yyval.ttype = grokbitfield (yyval.ttype, current_declspecs, yyvsp[-1].ttype);
+                 cplus_decl_attributes (yyval.ttype, yyvsp[0].ttype); ;
+    break;}
+case 407:
+#line 2449 "cp-parse.y"
+{ yyval.ttype = grokbitfield (NULL_TREE, NULL_TREE, yyvsp[0].ttype); ;
+    break;}
+case 409:
+#line 2459 "cp-parse.y"
+{ TREE_CHAIN (yyvsp[0].ttype) = yyval.ttype; yyval.ttype = yyvsp[0].ttype; ;
+    break;}
+case 410:
+#line 2464 "cp-parse.y"
+{ yyval.ttype = build_enumerator (yyval.ttype, NULL_TREE); ;
+    break;}
+case 411:
+#line 2466 "cp-parse.y"
+{ yyval.ttype = build_enumerator (yyval.ttype, yyvsp[0].ttype); ;
+    break;}
+case 412:
+#line 2471 "cp-parse.y"
+{ yyval.ttype = build_decl_list (yyval.ttype, yyvsp[0].ttype); ;
+    break;}
+case 413:
+#line 2473 "cp-parse.y"
+{ yyval.ttype = build_decl_list (yyval.ttype, yyvsp[0].ttype); ;
+    break;}
+case 414:
+#line 2478 "cp-parse.y"
+{ yyval.ttype = NULL_TREE; ;
+    break;}
+case 416:
+#line 2481 "cp-parse.y"
+{ yyval.ttype = yyvsp[0].ttype; ;
+    break;}
+case 417:
+#line 2486 "cp-parse.y"
+{ yyval.ttype = IDENTIFIER_AS_LIST (yyval.ttype); ;
+    break;}
+case 418:
+#line 2488 "cp-parse.y"
+{ yyval.ttype = decl_tree_cons (NULL_TREE, yyvsp[0].ttype, yyval.ttype); ;
+    break;}
+case 419:
+#line 2493 "cp-parse.y"
+{ yyval.ttype = NULL_TREE; ;
+    break;}
+case 420:
+#line 2495 "cp-parse.y"
+{ yyval.ttype = decl_tree_cons (NULL_TREE, yyvsp[0].ttype, yyval.ttype); ;
+    break;}
+case 421:
+#line 2503 "cp-parse.y"
+{ yyval.itype = suspend_momentary (); ;
+    break;}
+case 422:
+#line 2504 "cp-parse.y"
+{ resume_momentary (yyvsp[-1].itype); yyval.ttype = yyvsp[0].ttype; ;
+    break;}
+case 423:
+#line 2510 "cp-parse.y"
+{ yyval.ttype = build_parse_node (CALL_EXPR, yyval.ttype, yyvsp[-2].ttype, yyvsp[0].ttype); ;
+    break;}
+case 424:
+#line 2512 "cp-parse.y"
+{ yyval.ttype = build_parse_node (CALL_EXPR, yyval.ttype, yyvsp[-2].ttype, yyvsp[0].ttype); ;
+    break;}
+case 425:
+#line 2514 "cp-parse.y"
+{ yyval.ttype = build_parse_node (CALL_EXPR, yyval.ttype, empty_parms (), yyvsp[0].ttype); ;
+    break;}
+case 426:
+#line 2516 "cp-parse.y"
+{ yyval.ttype = build_parse_node (CALL_EXPR, yyval.ttype, NULL_TREE, NULL_TREE); ;
+    break;}
+case 427:
+#line 2518 "cp-parse.y"
+{ yyval.ttype = build_parse_node (ARRAY_REF, yyval.ttype, yyvsp[-1].ttype); ;
+    break;}
+case 428:
+#line 2520 "cp-parse.y"
+{ yyval.ttype = build_parse_node (ARRAY_REF, yyval.ttype, NULL_TREE); ;
+    break;}
+case 429:
+#line 2522 "cp-parse.y"
+{ yyval.ttype = yyvsp[-1].ttype; ;
+    break;}
+case 430:
+#line 2524 "cp-parse.y"
+{ yyval.ttype = make_pointer_declarator (yyvsp[-2].ttype, yyvsp[-1].ttype); ;
+    break;}
+case 431:
+#line 2526 "cp-parse.y"
+{ see_typename (); ;
+    break;}
+case 433:
+#line 2529 "cp-parse.y"
+{ yyval.ttype = make_reference_declarator (yyvsp[-2].ttype, yyvsp[-1].ttype); ;
+    break;}
+case 434:
+#line 2531 "cp-parse.y"
+{ yyval.ttype = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ;
+    break;}
+case 435:
+#line 2533 "cp-parse.y"
+{ yyval.ttype = make_reference_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ;
+    break;}
+case 437:
+#line 2539 "cp-parse.y"
+{ yyval.ttype = build_parse_node (CALL_EXPR, yyval.ttype, yyvsp[-2].ttype, yyvsp[0].ttype); ;
+    break;}
+case 438:
+#line 2541 "cp-parse.y"
+{ yyval.ttype = build_parse_node (CALL_EXPR, yyval.ttype, yyvsp[-2].ttype, yyvsp[0].ttype); ;
+    break;}
+case 439:
+#line 2543 "cp-parse.y"
+{ yyval.ttype = build_parse_node (CALL_EXPR, yyval.ttype, empty_parms (), yyvsp[0].ttype); ;
+    break;}
+case 440:
+#line 2545 "cp-parse.y"
+{ yyval.ttype = build_parse_node (CALL_EXPR, yyval.ttype, NULL_TREE, NULL_TREE); ;
+    break;}
+case 441:
+#line 2547 "cp-parse.y"
+{ yyval.ttype = build_parse_node (ARRAY_REF, yyval.ttype, yyvsp[-1].ttype); ;
+    break;}
+case 442:
+#line 2549 "cp-parse.y"
+{ yyval.ttype = build_parse_node (ARRAY_REF, yyval.ttype, NULL_TREE); ;
+    break;}
+case 443:
+#line 2551 "cp-parse.y"
+{ yyval.ttype = yyvsp[-1].ttype; ;
+    break;}
+case 444:
+#line 2553 "cp-parse.y"
+{ see_typename (); ;
+    break;}
+case 446:
+#line 2556 "cp-parse.y"
+{ yyval.ttype = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ;
+    break;}
+case 447:
+#line 2558 "cp-parse.y"
+{ yyval.ttype = make_reference_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ;
+    break;}
+case 448:
+#line 2566 "cp-parse.y"
+{ yyval.ttype = build_parse_node (CALL_EXPR, yyval.ttype, yyvsp[-2].ttype, yyvsp[0].ttype); ;
+    break;}
+case 449:
+#line 2568 "cp-parse.y"
+{ yyval.ttype = build_parse_node (CALL_EXPR, yyval.ttype, yyvsp[-2].ttype, yyvsp[0].ttype); ;
+    break;}
+case 450:
+#line 2570 "cp-parse.y"
+{ yyval.ttype = build_parse_node (CALL_EXPR, yyval.ttype, empty_parms (), yyvsp[0].ttype); ;
+    break;}
+case 451:
+#line 2572 "cp-parse.y"
+{ yyval.ttype = build_parse_node (CALL_EXPR, yyval.ttype, NULL_TREE, NULL_TREE); ;
+    break;}
+case 452:
+#line 2574 "cp-parse.y"
+{ yyval.ttype = yyvsp[-1].ttype; ;
+    break;}
+case 453:
+#line 2576 "cp-parse.y"
+{ yyval.ttype = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ;
+    break;}
+case 454:
+#line 2578 "cp-parse.y"
+{ yyval.ttype = make_reference_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ;
+    break;}
+case 455:
+#line 2580 "cp-parse.y"
+{ yyval.ttype = build_parse_node (ARRAY_REF, yyval.ttype, yyvsp[-1].ttype); ;
+    break;}
+case 456:
+#line 2582 "cp-parse.y"
+{ yyval.ttype = build_parse_node (ARRAY_REF, yyval.ttype, NULL_TREE); ;
+    break;}
+case 457:
+#line 2584 "cp-parse.y"
+{ see_typename (); ;
+    break;}
+case 458:
+#line 2588 "cp-parse.y"
+{ see_typename (); ;
+    break;}
+case 459:
+#line 2591 "cp-parse.y"
+{
+               destructor_name:
+                 see_typename ();
+                 yyval.ttype = build_parse_node (BIT_NOT_EXPR, yyvsp[0].ttype);
+               ;
+    break;}
+case 460:
+#line 2597 "cp-parse.y"
+{ goto destructor_name; ;
+    break;}
+case 461:
+#line 2599 "cp-parse.y"
+{ goto destructor_name; ;
+    break;}
+case 462:
+#line 2601 "cp-parse.y"
+{ see_typename ();
+                 if (TREE_CODE (yyval.ttype) != SCOPE_REF)
+                   yyval.ttype = build_push_scope (yyval.ttype, yyvsp[0].ttype);
+                 else if (TREE_OPERAND (yyval.ttype, 1) == NULL_TREE)
+                   TREE_OPERAND (yyval.ttype, 1) = yyvsp[0].ttype;
+                 else
+                   yyval.ttype = build_parse_node (SCOPE_REF, yyval.ttype, yyvsp[0].ttype);
+               ;
+    break;}
+case 463:
+#line 2610 "cp-parse.y"
+{ yyval.ttype = build_push_scope (yyval.ttype, yyvsp[0].ttype); ;
+    break;}
+case 464:
+#line 2612 "cp-parse.y"
+{ yyval.ttype = build_push_scope (yyval.ttype, build_parse_node (CALL_EXPR, yyvsp[-4].ttype, yyvsp[-2].ttype, yyvsp[0].ttype)); ;
+    break;}
+case 465:
+#line 2614 "cp-parse.y"
+{ yyval.ttype = build_push_scope (yyval.ttype, build_parse_node (CALL_EXPR, yyvsp[-4].ttype, yyvsp[-2].ttype, yyvsp[0].ttype)); ;
+    break;}
+case 466:
+#line 2616 "cp-parse.y"
+{ yyval.ttype = build_push_scope (yyval.ttype, build_parse_node (CALL_EXPR, yyvsp[-2].ttype, empty_parms (), yyvsp[0].ttype)); ;
+    break;}
+case 467:
+#line 2618 "cp-parse.y"
+{ yyval.ttype = build_push_scope (yyval.ttype, build_parse_node (CALL_EXPR, yyvsp[-4].ttype, NULL_TREE, NULL_TREE)); ;
+    break;}
+case 468:
+#line 2621 "cp-parse.y"
+{ yyval.ttype = build_push_scope (yyval.ttype, yyvsp[0].ttype); ;
+    break;}
+case 469:
+#line 2623 "cp-parse.y"
+{ yyval.ttype = build_push_scope (yyval.ttype, build_parse_node (CALL_EXPR, yyvsp[-4].ttype, yyvsp[-2].ttype, yyvsp[0].ttype)); ;
+    break;}
+case 470:
+#line 2625 "cp-parse.y"
+{ yyval.ttype = build_push_scope (yyval.ttype, build_parse_node (CALL_EXPR, yyvsp[-4].ttype, yyvsp[-2].ttype, yyvsp[0].ttype)); ;
+    break;}
+case 471:
+#line 2627 "cp-parse.y"
+{ yyval.ttype = build_push_scope (yyval.ttype, build_parse_node (CALL_EXPR, yyvsp[-2].ttype, empty_parms (), yyvsp[0].ttype)); ;
+    break;}
+case 472:
+#line 2629 "cp-parse.y"
+{ yyval.ttype = build_push_scope (yyval.ttype, build_parse_node (CALL_EXPR, yyvsp[-4].ttype, NULL_TREE, NULL_TREE)); ;
+    break;}
+case 473:
+#line 2631 "cp-parse.y"
+{ yyval.ttype = build_parse_node (SCOPE_REF, NULL_TREE, yyvsp[0].ttype); ;
+    break;}
+case 474:
+#line 2635 "cp-parse.y"
+{ yyval.ttype = resolve_scope_to_name (NULL_TREE, yyval.ttype);
+                 if (yyval.ttype == NULL_TREE)
+                   {
+                     error ("undefined explicitly scoped type");
+                     yyval.ttype = error_mark_node; 
+                   }
+               ;
+    break;}
+case 475:
+#line 2643 "cp-parse.y"
+{
+                  if (yyval.ttype == error_mark_node)
+                    /* leave it alone */;
+                  else
+                   {
+                     yyval.ttype = resolve_scope_to_name (NULL_TREE, TYPE_IDENTIFIER (yyval.ttype));
+                     if (yyval.ttype == NULL_TREE)
+                       {
+                         error ("undefined explicitly scoped type");
+                         yyval.ttype = error_mark_node; 
+                       }
+                   }
+/*                  if ($3) popclass (1); */
+               ;
+    break;}
+case 478:
+#line 2664 "cp-parse.y"
+{
+                 /* Kludge!!! See rule "template_type" and the code
+                  * dealing with "template_type_seen_before_scope" in
+                  * yylex(). */
+                 yyval.ttype = yyvsp[0].ttype;
+               ;
+    break;}
+case 479:
+#line 2686 "cp-parse.y"
+{ see_typename ();
+                 yyval.ttype = yyvsp[-1].ttype; ;
+    break;}
+case 480:
+#line 2690 "cp-parse.y"
+{ yyval.ttype = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ;
+    break;}
+case 481:
+#line 2692 "cp-parse.y"
+{ yyval.ttype = make_pointer_declarator (yyvsp[0].ttype, NULL_TREE); ;
+    break;}
+case 482:
+#line 2694 "cp-parse.y"
+{ see_typename (); ;
+    break;}
+case 483:
+#line 2696 "cp-parse.y"
+{ yyval.ttype = yyvsp[-1].ttype; ;
+    break;}
+case 484:
+#line 2698 "cp-parse.y"
+{ yyval.ttype = make_reference_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ;
+    break;}
+case 485:
+#line 2700 "cp-parse.y"
+{ yyval.ttype = make_reference_declarator (yyvsp[0].ttype, NULL_TREE); ;
+    break;}
+case 486:
+#line 2702 "cp-parse.y"
+{ yyval.ttype = build_parse_node (CALL_EXPR, yyval.ttype, yyvsp[-2].ttype, yyvsp[0].ttype); ;
+    break;}
+case 487:
+#line 2704 "cp-parse.y"
+{ yyval.ttype = build_parse_node (CALL_EXPR, yyval.ttype, empty_parms (), yyvsp[0].ttype); ;
+    break;}
+case 488:
+#line 2706 "cp-parse.y"
+{ yyval.ttype = build_parse_node (ARRAY_REF, yyval.ttype, yyvsp[-1].ttype); ;
+    break;}
+case 489:
+#line 2708 "cp-parse.y"
+{ yyval.ttype = build_parse_node (ARRAY_REF, yyval.ttype, NULL_TREE); ;
+    break;}
+case 490:
+#line 2710 "cp-parse.y"
+{ yyval.ttype = build_parse_node (CALL_EXPR, NULL_TREE, yyvsp[-2].ttype, yyvsp[0].ttype); ;
+    break;}
+case 491:
+#line 2712 "cp-parse.y"
+{ yyval.ttype = build_parse_node (CALL_EXPR, NULL_TREE, empty_parms (), yyvsp[0].ttype); ;
+    break;}
+case 492:
+#line 2714 "cp-parse.y"
+{ yyval.ttype = build_parse_node (ARRAY_REF, NULL_TREE, yyvsp[-1].ttype); ;
+    break;}
+case 493:
+#line 2716 "cp-parse.y"
+{ yyval.ttype = build_parse_node (ARRAY_REF, NULL_TREE, NULL_TREE); ;
+    break;}
+case 494:
+#line 2721 "cp-parse.y"
+{ tree t;
+                 t = yyval.ttype;
+                 while (TREE_OPERAND (t, 1))
+                   t = TREE_OPERAND (t, 1);
+                 TREE_OPERAND (t, 1) = build_parse_node (INDIRECT_REF, 0);
+               ;
+    break;}
+case 495:
+#line 2728 "cp-parse.y"
+{ tree t;
+                 t = yyval.ttype;
+                 while (TREE_OPERAND (t, 1))
+                   t = TREE_OPERAND (t, 1);
+                 TREE_OPERAND (t, 1) = build_parse_node (INDIRECT_REF, yyvsp[0].ttype);
+               ;
+    break;}
+case 496:
+#line 2735 "cp-parse.y"
+{ tree t;
+                 t = yyval.ttype;
+                 while (TREE_OPERAND (t, 1))
+                   t = TREE_OPERAND (t, 1);
+                 TREE_OPERAND (t, 1) = build_parse_node (ADDR_EXPR, 0);
+               ;
+    break;}
+case 497:
+#line 2742 "cp-parse.y"
+{ tree t;
+                 t = yyval.ttype;
+                 while (TREE_OPERAND (t, 1))
+                   t = TREE_OPERAND (t, 1);
+                 TREE_OPERAND (t, 1) = build_parse_node (ADDR_EXPR, yyvsp[0].ttype);
+               ;
+    break;}
+case 498:
+#line 2752 "cp-parse.y"
+{ tree t;
+                 t = yyval.ttype;
+                 while (TREE_OPERAND (t, 1))
+                   t = TREE_OPERAND (t, 1);
+                 TREE_OPERAND (t, 1) = build_parse_node (INDIRECT_REF, yyvsp[0].ttype);
+               ;
+    break;}
+case 499:
+#line 2759 "cp-parse.y"
+{ tree t;
+                 t = yyval.ttype;
+                 while (TREE_OPERAND (t, 1))
+                   t = TREE_OPERAND (t, 1);
+                 TREE_OPERAND (t, 1) = build_parse_node (ADDR_EXPR, yyvsp[0].ttype);
+               ;
+    break;}
+case 505:
+#line 2786 "cp-parse.y"
+{ emit_line_note (input_filename, lineno);
+                 pushlevel (0);
+                 clear_last_expr ();
+                 push_momentary ();
+                 expand_start_bindings (0);
+                 yyval.strtype = stmt_decl_msg;
+                 stmt_decl_msg = 0; ;
+    break;}
+case 507:
+#line 2800 "cp-parse.y"
+{ if (pedantic)
+                   pedwarn ("ANSI C++ forbids label declarations"); ;
+    break;}
+case 510:
+#line 2811 "cp-parse.y"
+{ tree link;
+                 for (link = yyvsp[-1].ttype; link; link = TREE_CHAIN (link))
+                   {
+                     tree label = shadow_label (TREE_VALUE (link));
+                     C_DECLARED_LABEL_FLAG (label) = 1;
+                     declare_nonlocal_label (label);
+                   }
+               ;
+    break;}
+case 511:
+#line 2825 "cp-parse.y"
+{;
+    break;}
+case 513:
+#line 2830 "cp-parse.y"
+{ yyval.ttype = convert (void_type_node, integer_zero_node); ;
+    break;}
+case 514:
+#line 2832 "cp-parse.y"
+{ pop_implicit_try_blocks (NULL_TREE);
+                 stmt_decl_msg = yyvsp[-3].strtype;
+                 expand_end_bindings (getdecls (), kept_level_p (), 1);
+                 yyval.ttype = poplevel (kept_level_p (), 1, 0);
+                 pop_momentary (); ;
+    break;}
+case 515:
+#line 2838 "cp-parse.y"
+{ pop_implicit_try_blocks (NULL_TREE);
+                 stmt_decl_msg = yyvsp[-3].strtype;
+                 expand_end_bindings (getdecls (), kept_level_p (), 1);
+                 yyval.ttype = poplevel (kept_level_p (), 0, 0);
+                 pop_momentary (); ;
+    break;}
+case 516:
+#line 2847 "cp-parse.y"
+{ emit_line_note (input_filename, lineno);
+                 expand_start_cond (truthvalue_conversion (yyvsp[-1].ttype), 0);
+                 stmt_decl_msg = "if"; ;
+    break;}
+case 517:
+#line 2851 "cp-parse.y"
+{ stmt_decl_msg = 0; ;
+    break;}
+case 518:
+#line 2856 "cp-parse.y"
+{ finish_stmt (); ;
+    break;}
+case 519:
+#line 2858 "cp-parse.y"
+{ if (stmt_decl_msg)
+                   error ("declaration after %s invalid", stmt_decl_msg);
+                 stmt_decl_msg = 0;
+                 finish_stmt (); ;
+    break;}
+case 520:
+#line 2863 "cp-parse.y"
+{
+                 tree expr = yyvsp[-1].ttype;
+                 emit_line_note (input_filename, lineno);
+                 /* Do default conversion if safe and possibly important,
+                    in case within ({...}).  */
+                 if ((TREE_CODE (TREE_TYPE (expr)) == ARRAY_TYPE
+                      && lvalue_p (expr))
+                     || TREE_CODE (TREE_TYPE (expr)) == FUNCTION_TYPE)
+                   expr = default_conversion (expr);
+                 cplus_expand_expr_stmt (expr);
+                 clear_momentary ();
+                 finish_stmt (); ;
+    break;}
+case 521:
+#line 2876 "cp-parse.y"
+{ expand_start_else ();
+                 stmt_decl_msg = "else"; ;
+    break;}
+case 522:
+#line 2879 "cp-parse.y"
+{ expand_end_cond ();
+                 stmt_decl_msg = 0;
+                 finish_stmt (); ;
+    break;}
+case 523:
+#line 2883 "cp-parse.y"
+{ expand_end_cond ();
+                 stmt_decl_msg = 0;
+                 finish_stmt (); ;
+    break;}
+case 524:
+#line 2887 "cp-parse.y"
+{ emit_nop ();
+                 emit_line_note (input_filename, lineno);
+                 expand_start_loop (1); ;
+    break;}
+case 525:
+#line 2891 "cp-parse.y"
+{ expand_exit_loop_if_false (0, truthvalue_conversion (yyvsp[-1].ttype));
+                 stmt_decl_msg = "while"; ;
+    break;}
+case 526:
+#line 2894 "cp-parse.y"
+{ 
+                 expand_end_loop ();
+                 stmt_decl_msg = 0;
+                 finish_stmt (); ;
+    break;}
+case 527:
+#line 2899 "cp-parse.y"
+{ emit_nop ();
+                 emit_line_note (input_filename, lineno);
+                 expand_start_loop_continue_elsewhere (1);
+                 stmt_decl_msg = "do"; ;
+    break;}
+case 528:
+#line 2904 "cp-parse.y"
+{ stmt_decl_msg = 0;
+                 expand_loop_continue_here (); ;
+    break;}
+case 529:
+#line 2907 "cp-parse.y"
+{ emit_line_note (input_filename, lineno);
+                 expand_exit_loop_if_false (0, truthvalue_conversion (yyvsp[-2].ttype));
+                 expand_end_loop ();
+                 clear_momentary ();
+                 finish_stmt (); ;
+    break;}
+case 530:
+#line 2913 "cp-parse.y"
+{ emit_nop ();
+                 emit_line_note (input_filename, lineno);
+                 if (yyvsp[0].ttype) cplus_expand_expr_stmt (yyvsp[0].ttype);
+                 expand_start_loop_continue_elsewhere (1); ;
+    break;}
+case 531:
+#line 2918 "cp-parse.y"
+{ emit_line_note (input_filename, lineno);
+                 if (yyvsp[-1].ttype) expand_exit_loop_if_false (0, truthvalue_conversion (yyvsp[-1].ttype)); ;
+    break;}
+case 532:
+#line 2923 "cp-parse.y"
+{ push_momentary ();
+                 stmt_decl_msg = "for"; ;
+    break;}
+case 533:
+#line 2926 "cp-parse.y"
+{ emit_line_note (input_filename, lineno);
+                 expand_loop_continue_here ();
+                 if (yyvsp[-3].ttype) cplus_expand_expr_stmt (yyvsp[-3].ttype);
+                 pop_momentary ();
+                 expand_end_loop ();
+                 stmt_decl_msg = 0;
+                 finish_stmt (); ;
+    break;}
+case 534:
+#line 2934 "cp-parse.y"
+{ emit_nop ();
+                 emit_line_note (input_filename, lineno);
+                 expand_start_loop_continue_elsewhere (1); ;
+    break;}
+case 535:
+#line 2938 "cp-parse.y"
+{ emit_line_note (input_filename, lineno);
+                 if (yyvsp[-1].ttype) expand_exit_loop_if_false (0, truthvalue_conversion (yyvsp[-1].ttype)); ;
+    break;}
+case 536:
+#line 2943 "cp-parse.y"
+{ push_momentary ();
+                 stmt_decl_msg = "for";
+                 yyvsp[0].itype = lineno; ;
+    break;}
+case 537:
+#line 2947 "cp-parse.y"
+{ emit_line_note (input_filename, yyvsp[-2].itype);
+                 expand_loop_continue_here ();
+                 if (yyvsp[-3].ttype) cplus_expand_expr_stmt (yyvsp[-3].ttype);
+                 pop_momentary ();
+                 expand_end_loop ();
+                 pop_implicit_try_blocks (NULL_TREE);
+                 if (yyvsp[-8].itype)
+                   {
+                     register int keep = yyvsp[-8].itype > 0;
+                     if (keep) expand_end_bindings (0, keep, 1);
+                     poplevel (keep, 1, 0);
+                     pop_momentary ();
+                   }
+                 stmt_decl_msg = 0;
+                 finish_stmt ();
+               ;
+    break;}
+case 538:
+#line 2964 "cp-parse.y"
+{ emit_line_note (input_filename, lineno);
+                 c_expand_start_case (yyvsp[-1].ttype);
+                 /* Don't let the tree nodes for $3 be discarded by
+                    clear_momentary during the parsing of the next stmt.  */
+                 push_momentary ();
+                 stmt_decl_msg = "switch"; ;
+    break;}
+case 539:
+#line 2971 "cp-parse.y"
+{ expand_end_case (yyvsp[-3].ttype);
+                 pop_momentary ();
+                 stmt_decl_msg = 0;
+                 finish_stmt (); ;
+    break;}
+case 540:
+#line 2976 "cp-parse.y"
+{ register tree value = yyvsp[-1].ttype;
+                 register tree label
+                   = build_decl (LABEL_DECL, NULL_TREE, NULL_TREE);
+
+                 /* build_c_cast puts on a NOP_EXPR to make a non-lvalue.
+                    Strip such NOP_EXPRs.  */
+                 if (TREE_CODE (value) == NOP_EXPR
+                     && TREE_TYPE (value) == TREE_TYPE (TREE_OPERAND (value, 0)))
+                   value = TREE_OPERAND (value, 0);
+
+                 if (TREE_READONLY_DECL_P (value))
+                   {
+                     value = decl_constant_value (value);
+                     /* build_c_cast puts on a NOP_EXPR to make a non-lvalue.
+                        Strip such NOP_EXPRs.  */
+                     if (TREE_CODE (value) == NOP_EXPR
+                         && TREE_TYPE (value) == TREE_TYPE (TREE_OPERAND (value, 0)))
+                       value = TREE_OPERAND (value, 0);
+                   }
+                 value = fold (value);
+
+                 if (TREE_CODE (value) != INTEGER_CST
+                     && value != error_mark_node)
+                   {
+                     error ("case label does not reduce to an integer constant");
+                     value = error_mark_node;
+                   }
+                 else
+                   /* Promote char or short to int.  */
+                   value = default_conversion (value);
+                 if (value != error_mark_node)
+                   {
+                     tree duplicate;
+                     int success = pushcase (value, label, &duplicate);
+                     if (success == 1)
+                       error ("case label not within a switch statement");
+                     else if (success == 2)
+                       {
+                         error ("duplicate case value");
+                         error_with_decl (duplicate, "this is the first entry for that value");
+                       }
+                     else if (success == 3)
+                       warning ("case value out of range");
+                     else if (success == 5)
+                       error ("case label within scope of cleanup or variable array");
+                   }
+                 define_case_label (label);
+               ;
+    break;}
+case 542:
+#line 3026 "cp-parse.y"
+{ register tree value1 = yyvsp[-3].ttype;
+                 register tree value2 = yyvsp[-1].ttype;
+                 register tree label
+                   = build_decl (LABEL_DECL, NULL_TREE, NULL_TREE);
+
+                 if (pedantic)
+                   pedwarn ("ANSI C++ forbids range expressions in switch statement");
+
+                 /* build_c_cast puts on a NOP_EXPR to make a non-lvalue.
+                    Strip such NOP_EXPRs.  */
+                 if (TREE_CODE (value1) == NOP_EXPR
+                     && TREE_TYPE (value1) == TREE_TYPE (TREE_OPERAND (value1, 0)))
+                   value1 = TREE_OPERAND (value1, 0);
+
+                 if (TREE_READONLY_DECL_P (value1))
+                   {
+                     value1 = decl_constant_value (value1);
+                     /* build_c_cast puts on a NOP_EXPR to make a non-lvalue.
+                        Strip such NOP_EXPRs.  */
+                     if (TREE_CODE (value1) == NOP_EXPR
+                         && TREE_TYPE (value1) == TREE_TYPE (TREE_OPERAND (value1, 0)))
+                       value1 = TREE_OPERAND (value1, 0);
+                   }
+                 value1 = fold (value1);
+
+                 /* build_c_cast puts on a NOP_EXPR to make a non-lvalue.
+                    Strip such NOP_EXPRs.  */
+                 if (TREE_CODE (value2) == NOP_EXPR
+                     && TREE_TYPE (value2) == TREE_TYPE (TREE_OPERAND (value2, 0)))
+                   value2 = TREE_OPERAND (value2, 0);
+
+                 if (TREE_READONLY_DECL_P (value2))
+                   {
+                     value2 = decl_constant_value (value2);
+                     /* build_c_cast puts on a NOP_EXPR to make a non-lvalue.
+                        Strip such NOP_EXPRs.  */
+                     if (TREE_CODE (value2) == NOP_EXPR
+                         && TREE_TYPE (value2) == TREE_TYPE (TREE_OPERAND (value2, 0)))
+                       value2 = TREE_OPERAND (value2, 0);
+                   }
+                 value2 = fold (value2);
+
+
+                 if (TREE_CODE (value1) != INTEGER_CST
+                     && value1 != error_mark_node)
+                   {
+                     error ("case label does not reduce to an integer constant");
+                     value1 = error_mark_node;
+                   }
+                 if (TREE_CODE (value2) != INTEGER_CST
+                     && value2 != error_mark_node)
+                   {
+                     error ("case label does not reduce to an integer constant");
+                     value2 = error_mark_node;
+                   }
+                 if (value1 != error_mark_node
+                     && value2 != error_mark_node)
+                   {
+                     tree duplicate;
+                     int success = pushcase_range (value1, value2, label,
+                                                   &duplicate);
+                     if (success == 1)
+                       error ("case label not within a switch statement");
+                     else if (success == 2)
+                       {
+                         error ("duplicate (or overlapping) case value");
+                         error_with_decl (duplicate, "this is the first entry overlapping that value");
+                       }
+                     else if (success == 3)
+                       warning ("case value out of range");
+                     else if (success == 4)
+                       warning ("empty range specified");
+                     else if (success == 5)
+                       error ("case label within scope of cleanup or variable array");
+                   }
+                 define_case_label (label);
+               ;
+    break;}
+case 544:
+#line 3105 "cp-parse.y"
+{
+                 tree duplicate;
+                 register tree label
+                   = build_decl (LABEL_DECL, NULL_TREE, NULL_TREE);
+                 int success = pushcase (NULL_TREE, label, &duplicate);
+                 if (success == 1)
+                   error ("default label not within a switch statement");
+                 else if (success == 2)
+                   {
+                     error ("multiple default labels in one switch");
+                     error_with_decl (duplicate, "this is the first default label");
+                   }
+                 define_case_label (NULL_TREE);
+               ;
+    break;}
+case 546:
+#line 3121 "cp-parse.y"
+{ emit_line_note (input_filename, lineno);
+                 if ( ! expand_exit_something ())
+                   error ("break statement not within loop or switch"); ;
+    break;}
+case 547:
+#line 3125 "cp-parse.y"
+{ emit_line_note (input_filename, lineno);
+                 if (! expand_continue_loop (0))
+                   error ("continue statement not within a loop"); ;
+    break;}
+case 548:
+#line 3129 "cp-parse.y"
+{ emit_line_note (input_filename, lineno);
+                 c_expand_return (NULL_TREE); ;
+    break;}
+case 549:
+#line 3132 "cp-parse.y"
+{ emit_line_note (input_filename, lineno);
+                 c_expand_return (yyvsp[-1].ttype);
+                 finish_stmt ();
+               ;
+    break;}
+case 550:
+#line 3137 "cp-parse.y"
+{ if (TREE_CHAIN (yyvsp[-2].ttype)) yyvsp[-2].ttype = combine_strings (yyvsp[-2].ttype);
+                 emit_line_note (input_filename, lineno);
+                 expand_asm (yyvsp[-2].ttype);
+                 finish_stmt ();
+               ;
+    break;}
+case 551:
+#line 3144 "cp-parse.y"
+{ if (TREE_CHAIN (yyvsp[-4].ttype)) yyvsp[-4].ttype = combine_strings (yyvsp[-4].ttype);
+                 emit_line_note (input_filename, lineno);
+                 c_expand_asm_operands (yyvsp[-4].ttype, yyvsp[-2].ttype, NULL_TREE, NULL_TREE,
+                                        yyvsp[-6].ttype == ridpointers[(int)RID_VOLATILE],
+                                        input_filename, lineno);
+                 finish_stmt ();
+               ;
+    break;}
+case 552:
+#line 3153 "cp-parse.y"
+{ if (TREE_CHAIN (yyvsp[-6].ttype)) yyvsp[-6].ttype = combine_strings (yyvsp[-6].ttype);
+                 emit_line_note (input_filename, lineno);
+                 c_expand_asm_operands (yyvsp[-6].ttype, yyvsp[-4].ttype, yyvsp[-2].ttype, NULL_TREE,
+                                        yyvsp[-8].ttype == ridpointers[(int)RID_VOLATILE],
+                                        input_filename, lineno);
+                 finish_stmt ();
+               ;
+    break;}
+case 553:
+#line 3163 "cp-parse.y"
+{ if (TREE_CHAIN (yyvsp[-8].ttype)) yyvsp[-8].ttype = combine_strings (yyvsp[-8].ttype);
+                 emit_line_note (input_filename, lineno);
+                 c_expand_asm_operands (yyvsp[-8].ttype, yyvsp[-6].ttype, yyvsp[-4].ttype, yyvsp[-2].ttype,
+                                        yyvsp[-10].ttype == ridpointers[(int)RID_VOLATILE],
+                                        input_filename, lineno);
+                 finish_stmt ();
+               ;
+    break;}
+case 554:
+#line 3171 "cp-parse.y"
+{ emit_line_note (input_filename, lineno);
+                 expand_computed_goto (yyvsp[-1].ttype); ;
+    break;}
+case 555:
+#line 3174 "cp-parse.y"
+{ tree decl;
+                 emit_line_note (input_filename, lineno);
+                 decl = lookup_label (yyvsp[-1].ttype);
+                 TREE_USED (decl) = 1;
+                 expand_goto (decl); ;
+    break;}
+case 556:
+#line 3180 "cp-parse.y"
+{ finish_stmt (); ;
+    break;}
+case 557:
+#line 3182 "cp-parse.y"
+{ error ("label must be followed by statement");
+                 yyungetc ('}', 0);
+                 finish_stmt (); ;
+    break;}
+case 558:
+#line 3186 "cp-parse.y"
+{ finish_stmt (); ;
+    break;}
+case 559:
+#line 3189 "cp-parse.y"
+{ cplus_expand_throw (NULL_TREE); ;
+    break;}
+case 560:
+#line 3190 "cp-parse.y"
+{ cplus_expand_throw (yyvsp[-1].ttype); ;
+    break;}
+case 561:
+#line 3192 "cp-parse.y"
+{ cplus_expand_raise (yyvsp[-4].ttype, yyvsp[-2].ttype, NULL_TREE, 0);
+                 finish_stmt (); ;
+    break;}
+case 562:
+#line 3195 "cp-parse.y"
+{ cplus_expand_raise (yyvsp[-2].ttype, NULL_TREE, NULL_TREE, 0);
+                 finish_stmt (); ;
+    break;}
+case 563:
+#line 3198 "cp-parse.y"
+{ cplus_expand_raise (yyvsp[-4].ttype, yyvsp[-2].ttype, NULL_TREE, 0);
+                 finish_stmt (); ;
+    break;}
+case 564:
+#line 3201 "cp-parse.y"
+{ cplus_expand_raise (yyvsp[-2].ttype, NULL_TREE, NULL_TREE, 0);
+                 finish_stmt (); ;
+    break;}
+case 565:
+#line 3204 "cp-parse.y"
+{ cplus_expand_reraise (yyvsp[-1].ttype);
+                 finish_stmt (); ;
+    break;}
+case 566:
+#line 3207 "cp-parse.y"
+{
+                 tree decl = cplus_expand_end_try (yyvsp[-3].itype);
+                 yyvsp[-2].ttype = current_exception_type;
+                 yyvsp[0].ttype = current_exception_decl;
+                 yyval.ttype = current_exception_object;
+                 cplus_expand_start_except (yyvsp[-1].ttype, decl);
+                 pushlevel (0);
+                 clear_last_expr ();
+                 push_momentary ();
+                 expand_start_bindings (0);
+                 stmt_decl_msg = 0;
+               ;
+    break;}
+case 567:
+#line 3220 "cp-parse.y"
+{
+                 tree decls = getdecls ();
+                 /* If there is a default exception to handle,
+                    handle it here.  */
+                 if (yyvsp[-1].ttype)
+                   {
+                     tree decl = build_decl (CPLUS_CATCH_DECL, NULL_TREE, 0);
+                     tree block;
+
+                     pushlevel (1);
+                     expand_start_bindings (0);
+                     expand_expr (yyvsp[-1].ttype, 0, 0, 0);
+                     expand_end_bindings (0, 1, 0);
+                     block = poplevel (1, 0, 0);
+
+                     /* This is a catch block.  */
+                     TREE_LANG_FLAG_2 (block) = 1;
+                     BLOCK_VARS (block) = decl;
+                   }
+
+                 expand_end_bindings (decls, decls != 0, 1);
+                 poplevel (decls != 0, 1, 0);
+                 pop_momentary ();
+                 current_exception_type = yyvsp[-5].ttype;
+                 current_exception_decl = yyvsp[-3].ttype;
+                 current_exception_object = yyvsp[-2].ttype;
+                 cplus_expand_end_except (yyvsp[-1].ttype);
+               ;
+    break;}
+case 568:
+#line 3249 "cp-parse.y"
+{
+                 cplus_expand_end_try (yyvsp[-1].itype);
+                 /* These are the important actions of
+                    `cplus_expand_end_except' which we must emulate.  */
+                 if (expand_escape_except ())
+                   expand_end_except ();
+                 expand_end_bindings (0, 0, 1);
+                 poplevel (0, 0, 0);
+               ;
+    break;}
+case 569:
+#line 3259 "cp-parse.y"
+{
+                 tree decl = cplus_expand_end_try (yyvsp[-2].itype);
+                 yyvsp[-1].ttype = current_exception_type;
+                 yyvsp[0].ttype = current_exception_decl;
+                 yyval.ttype = current_exception_object;
+                 cplus_expand_start_except (NULL, decl);
+                 pushlevel (0);
+                 clear_last_expr ();
+                 push_momentary ();
+                 expand_start_bindings (0);
+                 stmt_decl_msg = 0;
+               ;
+    break;}
+case 570:
+#line 3272 "cp-parse.y"
+{
+                 tree decls = getdecls ();
+                 /* If there is a default exception to handle,
+                    handle it here.  */
+                 if (yyvsp[0].ttype)
+                   {
+                     tree decl = build_decl (CPLUS_CATCH_DECL, NULL_TREE, 0);
+                     tree block;
+
+                     pushlevel (1);
+                     expand_start_bindings (0);
+                     expand_expr (yyvsp[0].ttype, 0, 0, 0);
+                     expand_end_bindings (0, 1, 0);
+                     block = poplevel (1, 0, 0);
+
+                     /* This is a catch block.  */
+                     TREE_LANG_FLAG_2 (block) = 1;
+                     BLOCK_VARS (block) = decl;
+                   }
+
+                 expand_end_bindings (decls, decls != 0, 1);
+                 poplevel (decls != 0, 1, 0);
+                 pop_momentary ();
+                 current_exception_type = yyvsp[-3].ttype;
+                 current_exception_decl = yyvsp[-2].ttype;
+                 current_exception_object = yyvsp[-1].ttype;
+                 cplus_expand_end_except (yyvsp[0].ttype);
+               ;
+    break;}
+case 571:
+#line 3301 "cp-parse.y"
+{ tree name = get_identifier ("(compiler error)");
+                 tree orig_ex_type = current_exception_type;
+                 tree orig_ex_decl = current_exception_decl;
+                 tree orig_ex_obj = current_exception_object;
+                 tree decl = cplus_expand_end_try (yyvsp[-2].itype), decls;
+
+                 /* Start hidden EXCEPT.  */
+                 cplus_expand_start_except (name, decl);
+                 pushlevel (0);
+                 clear_last_expr ();
+                 push_momentary ();
+                 expand_start_bindings (0);
+                 stmt_decl_msg = 0;
+
+                 /* This sets up the reraise.  */
+                 cplus_expand_reraise (yyvsp[0].ttype);
+
+                 decls = getdecls ();
+                 expand_end_bindings (decls, decls != 0, 1);
+                 poplevel (decls != 0, 1, 0);
+                 pop_momentary ();
+                 current_exception_type = orig_ex_type;
+                 current_exception_decl = orig_ex_decl;
+                 current_exception_object = orig_ex_obj;
+                 /* This will reraise for us.  */
+                 cplus_expand_end_except (error_mark_node);
+                 if (yychar == YYEMPTY)
+                   yychar = YYLEX;
+                 if (yychar != ';')
+                   error ("missing ';' after reraise statement");
+               ;
+    break;}
+case 572:
+#line 3333 "cp-parse.y"
+{ yyerror ("`except' missing after `try' statement");
+                 /* Terminate the binding contour started by special
+                    code in `.pushlevel'.  Automagically pops off
+                    the conditional we started for `try' stmt.  */
+                 cplus_expand_end_try (yyvsp[0].itype);
+                 expand_end_bindings (0, 0, 1);
+                 poplevel (0, 0, 0);
+                 pop_momentary ();
+                 YYERROR; ;
+    break;}
+case 573:
+#line 3348 "cp-parse.y"
+{
+                 yyval.itype = 1;
+                 pop_implicit_try_blocks (NULL_TREE);
+               ;
+    break;}
+case 574:
+#line 3353 "cp-parse.y"
+{
+                 yyval.itype = 1;
+                 pop_implicit_try_blocks (NULL_TREE);
+               ;
+    break;}
+case 575:
+#line 3358 "cp-parse.y"
+{
+                 yyval.itype = 0;
+                 pop_implicit_try_blocks (NULL_TREE);
+               ;
+    break;}
+case 576:
+#line 3366 "cp-parse.y"
+{ tree label;
+               do_label:
+                 label = define_label (input_filename, lineno, yyvsp[-1].ttype);
+                 if (label)
+                   expand_label (label);
+               ;
+    break;}
+case 577:
+#line 3373 "cp-parse.y"
+{ goto do_label; ;
+    break;}
+case 578:
+#line 3375 "cp-parse.y"
+{ tree label = define_label (input_filename, lineno, yyvsp[0].ttype);
+                 if (label)
+                   expand_label (label);
+               ;
+    break;}
+case 579:
+#line 3381 "cp-parse.y"
+{ cplus_expand_start_try (0); ;
+    break;}
+case 581:
+#line 3387 "cp-parse.y"
+{
+                 yyval.itype = 1;
+                 pop_implicit_try_blocks (NULL_TREE);
+               ;
+    break;}
+case 582:
+#line 3392 "cp-parse.y"
+{
+                 yyval.itype = 1;
+                 pop_implicit_try_blocks (NULL_TREE);
+               ;
+    break;}
+case 583:
+#line 3397 "cp-parse.y"
+{
+                 yyval.itype = 0;
+                 pop_implicit_try_blocks (NULL_TREE);
+               ;
+    break;}
+case 585:
+#line 3404 "cp-parse.y"
+{ cplus_expand_start_try (0); ;
+    break;}
+case 587:
+#line 3408 "cp-parse.y"
+{ yyval.ttype = NULL_TREE; ;
+    break;}
+case 588:
+#line 3410 "cp-parse.y"
+{
+                 tree type = lookup_exception_type (current_class_type, current_class_name, yyvsp[0].ttype);
+                 if (type == NULL_TREE)
+                   {
+                     error ("`%s' is not an exception type",
+                            IDENTIFIER_POINTER (TREE_VALUE (yyvsp[0].ttype)));
+                     current_exception_type = NULL_TREE;
+                     TREE_TYPE (current_exception_object) = error_mark_node;
+                   }
+                 else
+                   {
+                     current_exception_type = type;
+                     /* In-place union.  */
+                     TREE_TYPE (current_exception_object) = type;
+                   }
+                 yyvsp[0].ttype = cplus_expand_start_catch (yyvsp[0].ttype);
+                 pushlevel (1);
+                 expand_start_bindings (0);
+               ;
+    break;}
+case 589:
+#line 3430 "cp-parse.y"
+{
+                 expand_end_bindings (0, 1, 0);
+                 yyvsp[0].ttype = poplevel (1, 0, 0);
+
+                 cplus_expand_end_catch (0);
+
+                 /* Mark this as a catch block.  */
+                 TREE_LANG_FLAG_2 (yyvsp[0].ttype) = 1;
+                 if (yyvsp[-2].ttype != error_mark_node)
+                   {
+                     tree decl = build_decl (CPLUS_CATCH_DECL, DECL_NAME (yyvsp[-2].ttype), 0);
+                     DECL_RTL (decl) = DECL_RTL (yyvsp[-2].ttype);
+                     TREE_CHAIN (decl) = BLOCK_VARS (yyvsp[0].ttype);
+                     BLOCK_VARS (yyvsp[0].ttype) = decl;
+                   }
+               ;
+    break;}
+case 590:
+#line 3447 "cp-parse.y"
+{
+                 if (yyvsp[-1].ttype)
+                   error ("duplicate default in exception handler");
+                 current_exception_type = NULL_TREE;
+                 /* Takes it right out of scope.  */
+                 TREE_TYPE (current_exception_object) = error_mark_node;
+
+                 if (! expand_catch_default ())
+                   compiler_error ("default catch botch");
+
+                 /* The default exception is handled as the
+                    last in the chain of exceptions handled.  */
+                 do_pending_stack_adjust ();
+                 start_sequence ();
+                 yyvsp[-1].ttype = make_node (RTL_EXPR);
+                 TREE_TYPE (yyvsp[-1].ttype) = void_type_node;
+               ;
+    break;}
+case 591:
+#line 3465 "cp-parse.y"
+{
+                 extern struct rtx_def *get_insns ();
+                 do_pending_stack_adjust ();
+                 if (! expand_catch (NULL_TREE))
+                   compiler_error ("except nesting botch");
+                 if (! expand_end_catch ())
+                   compiler_error ("except nesting botch");
+                 RTL_EXPR_SEQUENCE (yyvsp[-3].ttype) = get_insns ();
+                 if (yyvsp[0].ttype)
+                   {
+                     /* Mark this block as the default catch block.  */
+                     TREE_LANG_FLAG_1 (yyvsp[0].ttype) = 1;
+                     TREE_LANG_FLAG_2 (yyvsp[0].ttype) = 1;
+                   }
+                 end_sequence ();
+               ;
+    break;}
+case 592:
+#line 3485 "cp-parse.y"
+{ yyval.ttype = NULL_TREE; ;
+    break;}
+case 594:
+#line 3490 "cp-parse.y"
+{ yyval.ttype = NULL_TREE; ;
+    break;}
+case 595:
+#line 3492 "cp-parse.y"
+{
+                 extern tree ansi_expand_start_catch ();
+                 extern tree cplus_exception_name ();
+                 tree type = groktypename (yyvsp[-2].ttype);
+                 current_exception_type = type;
+                 /* In-place union.  */
+                 if (yyvsp[-1].ttype)
+                   {
+                     tree tmp;
+                     tmp = pushdecl (build_decl (VAR_DECL, yyvsp[-1].ttype, type));
+                     current_exception_object =
+                         build1 (INDIRECT_REF, type, tmp);
+                    }
+                 yyvsp[-2].ttype = ansi_expand_start_catch(type);
+                 pushlevel (1);
+                 expand_start_bindings (0);
+               ;
+    break;}
+case 596:
+#line 3510 "cp-parse.y"
+{
+                 expand_end_bindings (0, 1, 0);
+                 yyvsp[0].ttype = poplevel (1, 0, 0);
+
+                 cplus_expand_end_catch (0);
+
+                 /* Mark this as a catch block.  */
+                 TREE_LANG_FLAG_2 (yyvsp[0].ttype) = 1;
+                 if (yyvsp[-4].ttype != error_mark_node)
+                   {
+                     tree decl = build_decl (CPLUS_CATCH_DECL, DECL_NAME (yyvsp[-4].ttype), 0);
+                     DECL_RTL (decl) = DECL_RTL (yyvsp[-4].ttype);
+                     TREE_CHAIN (decl) = BLOCK_VARS (yyvsp[0].ttype);
+                     BLOCK_VARS (yyvsp[0].ttype) = decl;
+                   }
+               ;
+    break;}
+case 597:
+#line 3530 "cp-parse.y"
+{ yyval.ttype = NULL_TREE; ;
+    break;}
+case 598:
+#line 3532 "cp-parse.y"
+{ yyval.ttype = yyvsp[-1].ttype; ;
+    break;}
+case 599:
+#line 3534 "cp-parse.y"
+{ yyval.ttype = NULL_TREE; ;
+    break;}
+case 600:
+#line 3539 "cp-parse.y"
+{ yyval.itype = 0; ;
+    break;}
+case 601:
+#line 3541 "cp-parse.y"
+{ yyval.itype = 0; ;
+    break;}
+case 602:
+#line 3543 "cp-parse.y"
+{ yyval.itype = 1; ;
+    break;}
+case 603:
+#line 3545 "cp-parse.y"
+{ yyval.itype = -1; ;
+    break;}
+case 604:
+#line 3552 "cp-parse.y"
+{ if (pedantic)
+                   pedwarn ("ANSI C++ forbids use of `asm' keyword");
+                 emit_line_note (input_filename, lineno); ;
+    break;}
+case 605:
+#line 3556 "cp-parse.y"
+{ if (pedantic)
+                   pedwarn ("ANSI C++ forbids use of `asm' keyword");
+                 emit_line_note (input_filename, lineno); ;
+    break;}
+case 606:
+#line 3563 "cp-parse.y"
+{ yyval.ttype = NULL_TREE; ;
+    break;}
+case 608:
+#line 3566 "cp-parse.y"
+{ yyval.ttype = NULL_TREE; ;
+    break;}
+case 609:
+#line 3572 "cp-parse.y"
+{ yyval.ttype = NULL_TREE; ;
+    break;}
+case 612:
+#line 3579 "cp-parse.y"
+{ yyval.ttype = chainon (yyval.ttype, yyvsp[0].ttype); ;
+    break;}
+case 613:
+#line 3584 "cp-parse.y"
+{ yyval.ttype = build_tree_list (yyval.ttype, yyvsp[-1].ttype); ;
+    break;}
+case 614:
+#line 3589 "cp-parse.y"
+{ yyval.ttype = tree_cons (NULL_TREE, yyval.ttype, NULL_TREE); ;
+    break;}
+case 615:
+#line 3591 "cp-parse.y"
+{ yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyval.ttype); ;
+    break;}
+case 616:
+#line 3600 "cp-parse.y"
+{
+                 if (strict_prototype)
+                   yyval.ttype = void_list_node;
+                 else
+                   yyval.ttype = NULL_TREE;
+               ;
+    break;}
+case 617:
+#line 3607 "cp-parse.y"
+{
+                 yyval.ttype = chainon (yyval.ttype, void_list_node);
+                 TREE_PARMLIST (yyval.ttype) = 1;
+               ;
+    break;}
+case 618:
+#line 3612 "cp-parse.y"
+{
+                 TREE_PARMLIST (yyval.ttype) = 1;
+               ;
+    break;}
+case 619:
+#line 3617 "cp-parse.y"
+{
+                 TREE_PARMLIST (yyval.ttype) = 1;
+               ;
+    break;}
+case 620:
+#line 3621 "cp-parse.y"
+{
+                 /* ARM $8.2.5 has this as a boxed-off comment.  */
+                 if (pedantic)
+                   warning ("use of `...' without a first argument is non-portable");
+                 yyval.ttype = NULL_TREE;
+               ;
+    break;}
+case 621:
+#line 3628 "cp-parse.y"
+{
+                 TREE_PARMLIST (yyval.ttype) = 1;
+               ;
+    break;}
+case 622:
+#line 3632 "cp-parse.y"
+{
+                 TREE_PARMLIST (yyval.ttype) = 1;
+               ;
+    break;}
+case 623:
+#line 3636 "cp-parse.y"
+{
+                 /* This helps us recover from really nasty
+                    parse errors, for example, a missing right
+                    parenthesis.  */
+                 yyerror ("possibly missing ')'");
+                 yyval.ttype = chainon (yyval.ttype, void_list_node);
+                 TREE_PARMLIST (yyval.ttype) = 1;
+                 yyungetc (':', 0);
+                 yychar = ')';
+               ;
+    break;}
+case 624:
+#line 3651 "cp-parse.y"
+{ yyval.ttype = build_tree_list (NULL_TREE, yyval.ttype); ;
+    break;}
+case 625:
+#line 3653 "cp-parse.y"
+{ yyval.ttype = build_tree_list (yyvsp[0].ttype, yyval.ttype); ;
+    break;}
+case 626:
+#line 3655 "cp-parse.y"
+{ yyval.ttype = chainon (yyval.ttype, build_tree_list (NULL_TREE, yyvsp[0].ttype)); ;
+    break;}
+case 627:
+#line 3657 "cp-parse.y"
+{ yyval.ttype = chainon (yyval.ttype, build_tree_list (yyvsp[0].ttype, yyvsp[-2].ttype)); ;
+    break;}
+case 628:
+#line 3659 "cp-parse.y"
+{ yyval.ttype = chainon (yyval.ttype, build_tree_list (NULL_TREE, yyvsp[0].ttype)); ;
+    break;}
+case 629:
+#line 3661 "cp-parse.y"
+{ yyval.ttype = chainon (yyval.ttype, build_tree_list (yyvsp[0].ttype, yyvsp[-2].ttype)); ;
+    break;}
+case 630:
+#line 3682 "cp-parse.y"
+{ yyval.ttype = build_tree_list (yyval.ttype, yyvsp[0].ttype);
+                 see_typename (); ;
+    break;}
+case 631:
+#line 3685 "cp-parse.y"
+{ yyval.ttype = build_tree_list (yyval.ttype, yyvsp[0].ttype);
+                 see_typename (); ;
+    break;}
+case 634:
+#line 3692 "cp-parse.y"
+{ yyval.ttype = yyvsp[0].ttype; ;
+    break;}
+case 635:
+#line 3696 "cp-parse.y"
+{ see_typename (); ;
+    break;}
+case 636:
+#line 3700 "cp-parse.y"
+{ dont_see_typename (); ;
+    break;}
+case 637:
+#line 3719 "cp-parse.y"
+{
+                 warning ("type specifier omitted for parameter");
+                 yyval.ttype = build_tree_list (TREE_PURPOSE (TREE_VALUE (yyvsp[-2].ttype)), yyval.ttype);
+               ;
+    break;}
+case 638:
+#line 3727 "cp-parse.y"
+{ yyval.ttype = NULL_TREE; ;
+    break;}
+case 639:
+#line 3729 "cp-parse.y"
+{ yyval.ttype = yyvsp[0].ttype; ;
+    break;}
+case 640:
+#line 3731 "cp-parse.y"
+{ yyval.ttype = yyvsp[-1].ttype; ;
+    break;}
+case 641:
+#line 3736 "cp-parse.y"
+{ yyval.ttype = void_list_node; ;
+    break;}
+case 642:
+#line 3738 "cp-parse.y"
+{ yyval.ttype = build_decl_list (NULL_TREE, yyval.ttype); ;
+    break;}
+case 643:
+#line 3740 "cp-parse.y"
+{ yyval.ttype = build_decl_list (NULL_TREE, yyval.ttype); ;
+    break;}
+case 644:
+#line 3742 "cp-parse.y"
+{ yyval.ttype = build_decl_list (void_type_node, yyvsp[0].ttype); ;
+    break;}
+case 645:
+#line 3744 "cp-parse.y"
+{ yyval.ttype = build_decl_list (void_type_node, yyvsp[0].ttype); ;
+    break;}
+case 646:
+#line 3746 "cp-parse.y"
+{ yyval.ttype = build_decl_list (yyval.ttype, yyvsp[0].ttype); ;
+    break;}
+case 648:
+#line 3752 "cp-parse.y"
+{ yyval.ttype = build_decl_list (NULL_TREE, yyval.ttype); ;
+    break;}
+case 650:
+#line 3758 "cp-parse.y"
+{
+                 TREE_CHAIN (yyvsp[0].ttype) = yyval.ttype;
+                 yyval.ttype = yyvsp[0].ttype;
+               ;
+    break;}
+case 652:
+#line 3767 "cp-parse.y"
+{
+                 TREE_CHAIN (yyvsp[0].ttype) = yyval.ttype;
+                 yyval.ttype = yyvsp[0].ttype;
+               ;
+    break;}
+case 653:
+#line 3775 "cp-parse.y"
+{ yyval.ttype = ansi_opname[MULT_EXPR]; ;
+    break;}
+case 654:
+#line 3777 "cp-parse.y"
+{ yyval.ttype = ansi_opname[TRUNC_DIV_EXPR]; ;
+    break;}
+case 655:
+#line 3779 "cp-parse.y"
+{ yyval.ttype = ansi_opname[TRUNC_MOD_EXPR]; ;
+    break;}
+case 656:
+#line 3781 "cp-parse.y"
+{ yyval.ttype = ansi_opname[PLUS_EXPR]; ;
+    break;}
+case 657:
+#line 3783 "cp-parse.y"
+{ yyval.ttype = ansi_opname[MINUS_EXPR]; ;
+    break;}
+case 658:
+#line 3785 "cp-parse.y"
+{ yyval.ttype = ansi_opname[BIT_AND_EXPR]; ;
+    break;}
+case 659:
+#line 3787 "cp-parse.y"
+{ yyval.ttype = ansi_opname[BIT_IOR_EXPR]; ;
+    break;}
+case 660:
+#line 3789 "cp-parse.y"
+{ yyval.ttype = ansi_opname[BIT_XOR_EXPR]; ;
+    break;}
+case 661:
+#line 3791 "cp-parse.y"
+{ yyval.ttype = ansi_opname[BIT_NOT_EXPR]; ;
+    break;}
+case 662:
+#line 3793 "cp-parse.y"
+{ yyval.ttype = ansi_opname[COMPOUND_EXPR]; ;
+    break;}
+case 663:
+#line 3795 "cp-parse.y"
+{ yyval.ttype = ansi_opname[yyvsp[0].code]; ;
+    break;}
+case 664:
+#line 3797 "cp-parse.y"
+{ yyval.ttype = ansi_opname[LT_EXPR]; ;
+    break;}
+case 665:
+#line 3799 "cp-parse.y"
+{ yyval.ttype = ansi_opname[GT_EXPR]; ;
+    break;}
+case 666:
+#line 3801 "cp-parse.y"
+{ yyval.ttype = ansi_opname[yyvsp[0].code]; ;
+    break;}
+case 667:
+#line 3803 "cp-parse.y"
+{ yyval.ttype = ansi_assopname[yyvsp[0].code]; ;
+    break;}
+case 668:
+#line 3805 "cp-parse.y"
+{
+                 yyval.ttype = ansi_opname [MODIFY_EXPR];
+                 if (current_class_type)
+                   {
+                     TYPE_HAS_ASSIGNMENT (current_class_type) = 1;
+                     TYPE_GETS_ASSIGNMENT (current_class_type) = 1;
+                   }
+               ;
+    break;}
+case 669:
+#line 3814 "cp-parse.y"
+{ yyval.ttype = ansi_opname[yyvsp[0].code]; ;
+    break;}
+case 670:
+#line 3816 "cp-parse.y"
+{ yyval.ttype = ansi_opname[yyvsp[0].code]; ;
+    break;}
+case 671:
+#line 3818 "cp-parse.y"
+{ yyval.ttype = ansi_opname[POSTINCREMENT_EXPR]; ;
+    break;}
+case 672:
+#line 3820 "cp-parse.y"
+{ yyval.ttype = ansi_opname[PREDECREMENT_EXPR]; ;
+    break;}
+case 673:
+#line 3822 "cp-parse.y"
+{ yyval.ttype = ansi_opname[TRUTH_ANDIF_EXPR]; ;
+    break;}
+case 674:
+#line 3824 "cp-parse.y"
+{ yyval.ttype = ansi_opname[TRUTH_ORIF_EXPR]; ;
+    break;}
+case 675:
+#line 3826 "cp-parse.y"
+{ yyval.ttype = ansi_opname[TRUTH_NOT_EXPR]; ;
+    break;}
+case 676:
+#line 3828 "cp-parse.y"
+{ yyval.ttype = ansi_opname[COND_EXPR]; ;
+    break;}
+case 677:
+#line 3830 "cp-parse.y"
+{ yyval.ttype = ansi_opname[yyvsp[0].code]; ;
+    break;}
+case 678:
+#line 3832 "cp-parse.y"
+{ yyval.ttype = ansi_opname[COMPONENT_REF];
+                 if (current_class_type)
+                   {
+                     tree t = current_class_type;
+                     while (t)
+                       {
+                         TYPE_OVERLOADS_ARROW (t) = 1;
+                         t = TYPE_NEXT_VARIANT (t);
+                       }
+                   }
+               ;
+    break;}
+case 679:
+#line 3844 "cp-parse.y"
+{ yyval.ttype = ansi_opname[MEMBER_REF];
+                 if (current_class_type)
+                   {
+                     tree t = current_class_type;
+                     while (t)
+                       {
+                         TYPE_OVERLOADS_ARROW (t) = 1;
+                         t = TYPE_NEXT_VARIANT (t);
+                       }
+                   }
+               ;
+    break;}
+case 680:
+#line 3856 "cp-parse.y"
+{
+                 if (yychar == YYEMPTY)
+                   yychar = YYLEX;
+                 if (yychar == '(' || yychar == LEFT_RIGHT)
+                   {
+                     yyval.ttype = ansi_opname[METHOD_CALL_EXPR];
+                     if (current_class_type)
+                       {
+                         tree t = current_class_type;
+                         while (t)
+                           {
+                             TYPE_OVERLOADS_METHOD_CALL_EXPR (t) = 1;
+                             t = TYPE_NEXT_VARIANT (t);
+                           }
+                       }
+                   }
+                 else
+                   {
+                     yyval.ttype = build_parse_node (CALL_EXPR, ansi_opname[COMPONENT_REF], void_list_node, yyvsp[0].ttype);
+                     if (current_class_type)
+                       {
+                         tree t = current_class_type;
+                         while (t)
+                           {
+                             TYPE_OVERLOADS_ARROW (t) = 1;
+                             t = TYPE_NEXT_VARIANT (t);
+                           }
+                       }
+                   }
+               ;
+    break;}
+case 681:
+#line 3887 "cp-parse.y"
+{ yyval.ttype = ansi_opname[CALL_EXPR];
+                 if (current_class_type)
+                   {
+                     tree t = current_class_type;
+                     while (t)
+                       {
+                         TYPE_OVERLOADS_CALL_EXPR (t) = 1;
+                         t = TYPE_NEXT_VARIANT (t);
+                       }
+                   }
+               ;
+    break;}
+case 682:
+#line 3899 "cp-parse.y"
+{ yyval.ttype = ansi_opname[ARRAY_REF];
+                 if (current_class_type)
+                   {
+                     tree t = current_class_type;
+                     while (t)
+                       {
+                         TYPE_OVERLOADS_ARRAY_REF (t) = 1;
+                         t = TYPE_NEXT_VARIANT (t);
+                       }
+                   }
+               ;
+    break;}
+case 683:
+#line 3911 "cp-parse.y"
+{
+                 yyval.ttype = ansi_opname[NEW_EXPR];
+                 if (current_class_type)
+                   {
+                     tree t = current_class_type;
+                     while (t)
+                       {
+                         TREE_GETS_NEW (t) = 1;
+                         t = TYPE_NEXT_VARIANT (t);
+                       }
+                   }
+               ;
+    break;}
+case 684:
+#line 3924 "cp-parse.y"
+{
+                 yyval.ttype = ansi_opname[DELETE_EXPR];
+                 if (current_class_type)
+                   {
+                     tree t = current_class_type;
+                     while (t)
+                       {
+                         TREE_GETS_DELETE (t) = 1;
+                         t = TYPE_NEXT_VARIANT (t);
+                       }
+                   }
+               ;
+    break;}
+case 685:
+#line 3940 "cp-parse.y"
+{ yyval.ttype = build1 (TYPE_EXPR, yyvsp[-1].ttype, yyvsp[0].ttype); ;
+    break;}
+case 686:
+#line 3942 "cp-parse.y"
+{ yyval.ttype = ansi_opname[ERROR_MARK]; ;
+    break;}
+}
+   /* the action file gets copied in in place of this dollarsign */
+#line 440 "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;
+         for (x = 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 = 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");
+    }
+
+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 3945 "cp-parse.y"
+
+
+tree
+get_current_declspecs ()
+{
+  return current_declspecs;
+}