
/*  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	GCC_ASM_KEYWORD	282
#define	TYPEOF	283
#define	ALIGNOF	284
#define	HEADOF	285
#define	CLASSOF	286
#define	ATTRIBUTE	287
#define	EXTENSION	288
#define	LABEL	289
#define	AGGR	290
#define	VISSPEC	291
#define	DELETE	292
#define	NEW	293
#define	OVERLOAD	294
#define	THIS	295
#define	OPERATOR	296
#define	DYNAMIC	297
#define	POINTSAT_LEFT_RIGHT	298
#define	LEFT_RIGHT	299
#define	TEMPLATE	300
#define	SCOPE	301
#define	START_DECLARATOR	302
#define	EMPTY	303
#define	TYPENAME_COLON	304
#define	ASSIGN	305
#define	RANGE	306
#define	OROR	307
#define	ANDAND	308
#define	MIN_MAX	309
#define	EQCOMPARE	310
#define	ARITHCOMPARE	311
#define	LSHIFT	312
#define	RSHIFT	313
#define	UNARY	314
#define	PLUSPLUS	315
#define	MINUSMINUS	316
#define	HYPERUNARY	317
#define	PAREN_STAR_PAREN	318
#define	POINTSAT	319
#define	POINTSAT_STAR	320
#define	DOT_STAR	321
#define	RAISE	322
#define	RAISES	323
#define	RERAISE	324
#define	TRY	325
#define	EXCEPT	326
#define	CATCH	327
#define	THROW	328
#define	ANSI_TRY	329
#define	ANSI_THROW	330
#define	TYPENAME_ELLIPSIS	331
#define	PTYPENAME	332
#define	PRE_PARSED_FUNCTION_DECL	333
#define	EXTERN_LANG_STRING	334
#define	ALL	335
#define	PRE_PARSED_CLASS_DECL	336
#define	TYPENAME_DEFN	337
#define	IDENTIFIER_DEFN	338
#define	PTYPENAME_DEFN	339
#define	END_OF_SAVED_INPUT	340

#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"

/* Since parsers are distinct for each language, put the language string
   definition here.  (fnf) */
char *language_string = "GNU C++";

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 the statement keyword (if/while/do) to include in an
   error message if the user supplies an empty conditional expression.  */
static char *cond_stmt_keyword;

/* 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 108 "cp-parse.y"
typedef union {long itype; tree ttype; char *strtype; enum tree_code code; } YYSTYPE;
#line 267 "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;

/* 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 ();
extern tree combine_strings		PROTO((tree));
extern tree truthvalue_conversion	PROTO((tree));

#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		1276
#define	YYFLAG		-32768
#define	YYNTBASE	110

#define YYTRANSLATE(x) ((unsigned)(x) <= 340 ? yytranslate[x] : 304)

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,   108,     2,     2,     2,    73,    61,     2,    83,
   104,    71,    69,    51,    70,    81,    72,     2,     2,     2,
     2,     2,     2,     2,     2,     2,     2,    55,   105,    65,
    53,    66,    54,     2,     2,     2,     2,     2,     2,     2,
     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    84,     2,   109,    60,     2,     2,     2,     2,     2,     2,
     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     2,     2,    50,    59,   106,   107,     2,     2,     2,     2,
     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     2,     2,     2,     2,     2,     1,     2,     3,     4,     5,
     6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
    16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    26,    27,    28,    29,    30,    31,    32,    33,    34,    35,
    36,    37,    38,    39,    40,    41,    42,    43,    44,    45,
    46,    47,    48,    49,    52,    56,    57,    58,    62,    63,
    64,    67,    68,    74,    75,    76,    77,    78,    79,    80,
    82,    85,    86,    87,    88,    89,    90,    91,    92,    93,
    94,    95,    96,    97,    98,    99,   100,   101,   102,   103
};

static const short yyprhs[] = {     0,
     0,     1,     3,     4,     7,    10,    11,    12,    14,    16,
    18,    20,    22,    24,    30,    35,    39,    44,    49,    51,
    52,    58,    60,    64,    67,    72,    76,    78,    82,    84,
    88,    89,    95,    96,   102,   103,   109,   110,   116,   120,
   124,   131,   139,   144,   148,   152,   154,   156,   158,   160,
   162,   165,   169,   173,   177,   181,   184,   187,   190,   193,
   195,   199,   204,   208,   214,   219,   223,   227,   230,   234,
   238,   241,   248,   255,   260,   265,   267,   274,   279,   283,
   290,   295,   299,   302,   305,   307,   311,   316,   319,   323,
   324,   325,   327,   331,   334,   338,   340,   345,   348,   353,
   356,   361,   364,   370,   374,   376,   378,   380,   382,   384,
   386,   388,   390,   392,   395,   397,   401,   406,   411,   413,
   415,   416,   417,   419,   423,   425,   427,   428,   435,   436,
   438,   439,   442,   444,   446,   448,   450,   452,   454,   456,
   458,   462,   464,   468,   472,   474,   475,   479,   482,   485,
   488,   491,   494,   497,   502,   505,   510,   514,   521,   528,
   538,   543,   551,   557,   566,   576,   586,   593,   603,   610,
   620,   624,   631,   634,   639,   645,   647,   652,   660,   665,
   670,   675,   677,   681,   685,   689,   693,   697,   701,   705,
   709,   713,   717,   721,   725,   729,   733,   737,   741,   745,
   751,   755,   759,   763,   766,   768,   770,   772,   774,   778,
   782,   783,   788,   789,   796,   799,   804,   807,   811,   814,
   817,   819,   824,   829,   832,   838,   842,   845,   848,   851,
   857,   861,   867,   871,   878,   883,   885,   890,   893,   899,
   900,   902,   904,   907,   909,   912,   913,   916,   919,   922,
   926,   930,   934,   938,   941,   944,   946,   948,   951,   954,
   956,   959,   962,   966,   968,   970,   973,   976,   978,   980,
   983,   986,   988,   991,   994,   998,  1000,  1003,  1005,  1007,
  1009,  1011,  1016,  1021,  1023,  1025,  1027,  1029,  1031,  1035,
  1037,  1041,  1042,  1047,  1048,  1056,  1061,  1062,  1070,  1075,
  1076,  1084,  1089,  1090,  1097,  1099,  1103,  1105,  1110,  1119,
  1121,  1125,  1127,  1130,  1134,  1139,  1141,  1143,  1147,  1152,
  1159,  1163,  1169,  1170,  1178,  1183,  1184,  1191,  1195,  1198,
  1203,  1205,  1206,  1208,  1209,  1211,  1213,  1216,  1222,  1225,
  1228,  1231,  1234,  1237,  1240,  1243,  1247,  1251,  1254,  1255,
  1259,  1260,  1264,  1267,  1269,  1271,  1272,  1274,  1277,  1279,
  1283,  1285,  1287,  1290,  1293,  1296,  1300,  1302,  1304,  1306,
  1309,  1312,  1314,  1315,  1317,  1322,  1326,  1328,  1331,  1334,
  1338,  1344,  1350,  1354,  1358,  1362,  1366,  1370,  1376,  1382,
  1386,  1390,  1394,  1398,  1400,  1403,  1406,  1410,  1414,  1415,
  1417,  1421,  1426,  1433,  1438,  1442,  1445,  1450,  1457,  1462,
  1466,  1469,  1471,  1475,  1477,  1481,  1484,  1487,  1488,  1490,
  1493,  1495,  1498,  1499,  1502,  1503,  1506,  1512,  1518,  1522,
  1528,  1533,  1537,  1541,  1547,  1549,  1551,  1557,  1561,  1565,
  1567,  1573,  1579,  1583,  1589,  1594,  1598,  1602,  1604,  1606,
  1610,  1614,  1620,  1626,  1630,  1636,  1640,  1644,  1648,  1653,
  1657,  1659,  1661,  1664,  1667,  1670,  1674,  1678,  1686,  1694,
  1700,  1708,  1712,  1720,  1728,  1734,  1742,  1746,  1748,  1751,
  1754,  1756,  1759,  1763,  1767,  1770,  1772,  1776,  1780,  1783,
  1789,  1793,  1798,  1802,  1807,  1810,  1814,  1817,  1821,  1826,
  1830,  1835,  1841,  1847,  1849,  1851,  1854,  1857,  1860,  1861,
  1862,  1864,  1866,  1869,  1873,  1875,  1878,  1881,  1887,  1893,
  1894,  1895,  1901,  1903,  1906,  1908,  1910,  1912,  1915,  1916,
  1921,  1923,  1924,  1925,  1931,  1932,  1933,  1941,  1942,  1943,
  1944,  1954,  1955,  1956,  1957,  1967,  1968,  1975,  1976,  1982,
  1983,  1991,  1992,  1997,  2000,  2003,  2006,  2010,  2017,  2026,
  2037,  2050,  2055,  2059,  2062,  2065,  2067,  2070,  2074,  2081,
  2086,  2093,  2098,  2102,  2103,  2111,  2114,  2115,  2121,  2125,
  2127,  2130,  2134,  2138,  2141,  2144,  2146,  2147,  2152,  2155,
  2159,  2163,  2164,  2165,  2170,  2171,  2172,  2177,  2178,  2183,
  2184,  2186,  2187,  2188,  2197,  2201,  2206,  2211,  2215,  2220,
  2227,  2234,  2235,  2237,  2238,  2240,  2242,  2243,  2245,  2247,
  2251,  2256,  2258,  2262,  2263,  2265,  2269,  2272,  2274,  2276,
  2279,  2282,  2284,  2288,  2292,  2298,  2302,  2308,  2312,  2316,
  2318,  2320,  2323,  2325,  2326,  2328,  2329,  2332,  2337,  2339,
  2341,  2343,  2346,  2349,  2352,  2354,  2356,  2358,  2362,  2364,
  2368,  2371,  2374,  2377,  2380,  2383,  2386,  2389,  2392,  2395,
  2398,  2401,  2404,  2407,  2410,  2413,  2416,  2419,  2422,  2425,
  2428,  2431,  2434,  2437,  2441,  2444,  2447,  2450,  2454,  2457,
  2461,  2464,  2467,  2471
};

static const short yyrhs[] = {    -1,
   111,     0,     0,   112,   116,     0,   111,   116,     0,     0,
     0,    26,     0,    27,     0,   131,     0,   130,     0,   124,
     0,   122,     0,   115,    83,   167,   104,   105,     0,   117,
    50,   111,   106,     0,   117,    50,   106,     0,   117,   113,
   131,   114,     0,   117,   113,   130,   114,     0,    97,     0,
     0,    45,    65,   119,   120,    66,     0,   121,     0,   120,
    51,   121,     0,   200,   140,     0,   200,   141,    55,   212,
     0,   200,    49,   212,     0,   293,     0,    39,   123,   105,
     0,     3,     0,   123,    51,     3,     0,     0,   118,   201,
    50,   125,   105,     0,     0,   118,   202,    50,   126,   105,
     0,     0,   118,   201,    55,   127,   105,     0,     0,   118,
   202,    55,   128,   105,     0,   118,   201,   105,     0,   118,
   202,   105,     0,   118,   231,   298,   182,   189,   129,     0,
   118,   173,   172,   298,   182,   189,   129,     0,   118,   175,
   172,   129,     0,   118,     1,   106,     0,   118,     1,   105,
     0,    50,     0,    55,     0,   105,     0,    53,     0,    24,
     0,   181,   105,     0,   175,   181,   105,     0,   175,   172,
   105,     0,   173,   180,   105,     0,   173,   172,   105,     0,
   175,   105,     0,   173,   105,     0,     1,   105,     0,     1,
   106,     0,   105,     0,   132,   136,   244,     0,   132,   135,
   136,   244,     0,   132,   168,   244,     0,   132,   135,   105,
   168,   244,     0,   132,   135,   168,   244,     0,   173,   172,
     1,     0,   175,   231,     1,     0,   231,     1,     0,   173,
   172,   298,     0,   175,   231,   298,     0,   231,   298,     0,
     4,    83,   291,   104,   226,   298,     0,   234,    83,   291,
   104,   226,   298,     0,     4,    44,   226,   298,     0,   234,
    44,   226,   298,     0,    96,     0,   173,    83,   291,   104,
   226,   298,     0,   173,    44,   226,   298,     0,   173,   172,
   298,     0,   175,    83,   291,   104,   226,   298,     0,   175,
    44,   226,   298,     0,   175,   172,   298,     0,   231,   298,
     0,    24,     3,     0,   134,     0,   134,    53,   193,     0,
   134,    83,   156,   104,     0,   134,    44,     0,    55,   137,
   138,     0,     0,     0,   139,     0,   138,    51,   139,     0,
   138,     1,     0,    83,   156,   104,     0,    44,     0,   140,
    83,   156,   104,     0,   140,    44,     0,   144,    83,   156,
   104,     0,   144,    44,     0,   234,    83,   156,   104,     0,
   234,    44,     0,   232,   140,    83,   156,   104,     0,   232,
   140,    44,     0,     3,     0,     4,     0,    95,     0,   101,
     0,   100,     0,   102,     0,     3,     0,     4,     0,    95,
     0,   107,   140,     0,   303,     0,   144,   145,   151,     0,
    95,    65,   147,    66,     0,     4,    65,   147,    66,     0,
    50,     0,    55,     0,     0,     0,   148,     0,   147,    51,
   148,     0,   223,     0,   160,     0,     0,    99,   208,   150,
   214,   215,   106,     0,     0,   149,     0,     0,   149,   152,
     0,    70,     0,    69,     0,    75,     0,    76,     0,   108,
     0,   156,     0,   160,     0,    44,     0,    83,   154,   104,
     0,   160,     0,   156,    51,   160,     0,   156,    51,     1,
     0,   161,     0,     0,    33,   158,   159,     0,    71,   159,
     0,    61,   159,     0,   107,   159,     0,   153,   159,     0,
    58,   140,     0,    12,   157,     0,    12,    83,   223,   104,
     0,    29,   157,     0,    29,    83,   223,   104,     0,   165,
   164,   223,     0,   165,   164,    83,   156,   104,   223,     0,
   165,   164,   178,    83,   156,   104,     0,   165,   164,    83,
   156,   104,   178,    83,   156,   104,     0,   165,   164,   178,
    44,     0,   165,   164,    83,   156,   104,   178,    44,     0,
   165,   164,   223,    53,   193,     0,   165,   164,    83,   156,
   104,   223,    53,   193,     0,   165,   164,    83,   176,   224,
   104,    84,   227,   109,     0,   165,   164,    83,   225,   224,
   104,    84,   227,   109,     0,   165,   164,    83,   176,   224,
   104,     0,   165,   164,    83,   156,   104,    83,   176,   224,
   104,     0,   165,   164,    83,   225,   224,   104,     0,   165,
   164,    83,   156,   104,    83,   225,   224,   104,     0,   165,
   164,    49,     0,   165,   164,    83,   156,   104,    49,     0,
   166,   159,     0,   166,    84,   109,   159,     0,   166,    84,
   154,   109,   159,     0,   157,     0,    83,   223,   104,   160,
     0,    83,   223,   104,    50,   194,   198,   106,     0,    30,
    83,   154,   104,     0,    31,    83,   154,   104,     0,    31,
    83,     4,   104,     0,   159,     0,   160,    69,   160,     0,
   160,    70,   160,     0,   160,    71,   160,     0,   160,    72,
   160,     0,   160,    73,   160,     0,   160,    67,   160,     0,
   160,    68,   160,     0,   160,    64,   160,     0,   160,    65,
   160,     0,   160,    66,   160,     0,   160,    63,   160,     0,
   160,    62,   160,     0,   160,    61,   160,     0,   160,    59,
   160,     0,   160,    60,   160,     0,   160,    58,   160,     0,
   160,    57,   160,     0,   160,    54,   286,    55,   160,     0,
   160,    53,   160,     0,   160,    52,   160,     0,   161,    82,
   160,     0,   170,   160,     0,     3,     0,   303,     0,     9,
     0,   167,     0,    83,   154,   104,     0,    83,     1,   104,
     0,     0,    83,   162,   245,   104,     0,     0,   161,    83,
   156,   104,   163,   152,     0,   161,    44,     0,   161,    84,
   154,   109,     0,   169,   142,     0,   169,   232,   142,     0,
   161,    75,     0,   161,    76,     0,    40,     0,     8,    83,
   156,   104,     0,   178,    83,   156,   104,     0,   178,    44,
     0,    46,   178,    83,   156,   104,     0,    46,   178,    44,
     0,    46,     3,     0,    46,   303,     0,   232,   142,     0,
   232,   142,    83,   156,   104,     0,   232,   142,    44,     0,
   169,   142,    83,   156,   104,     0,   169,   142,    44,     0,
   169,   232,   142,    83,   156,   104,     0,   169,   232,   142,
    44,     0,    38,     0,    38,    50,   156,   106,     0,    38,
    42,     0,    38,    42,    83,   167,   104,     0,     0,    46,
     0,    37,     0,    46,   166,     0,    10,     0,   167,    10,
     0,     0,   161,    81,     0,   161,    79,     0,   161,    80,
     0,   173,   180,   105,     0,   173,   172,   105,     0,   175,
   181,   105,     0,   175,   172,   105,     0,   173,   105,     0,
   175,   105,     0,   229,     0,   231,     0,    47,   229,     0,
    47,   231,     0,   178,     0,   175,   178,     0,   178,   174,
     0,   175,   178,   174,     0,   179,     0,     6,     0,   174,
   179,     0,   174,     6,     0,     8,     0,     6,     0,   175,
     8,     0,   175,     6,     0,   178,     0,   225,   178,     0,
   178,   177,     0,   225,   178,   177,     0,   179,     0,   177,
   179,     0,   195,     0,     7,     0,     4,     0,   234,     0,
    28,    83,   154,   104,     0,    28,    83,   223,   104,     0,
   143,     0,     7,     0,     8,     0,   195,     0,   183,     0,
   180,    51,   185,     0,   187,     0,   181,    51,   185,     0,
     0,   115,    83,   167,   104,     0,     0,   172,   298,   182,
   189,    53,   184,   193,     0,   172,   298,   182,   189,     0,
     0,   172,   298,   182,   189,    53,   186,   193,     0,   172,
   298,   182,   189,     0,     0,   231,   298,   182,   189,    53,
   188,   193,     0,   231,   298,   182,   189,     0,     0,    32,
    83,    83,   190,   104,   104,     0,   191,     0,   190,    51,
   191,     0,     3,     0,     3,    83,     9,   104,     0,     3,
    83,     3,    51,     9,    51,     9,   104,     0,   140,     0,
   192,    51,   140,     0,   160,     0,    50,   106,     0,    50,
   194,   106,     0,    50,   194,    51,   106,     0,     1,     0,
   193,     0,   194,    51,   193,     0,    84,   160,   109,   193,
     0,   194,    51,    20,   160,    55,   193,     0,   140,    55,
   193,     0,   194,    51,   140,    55,   193,     0,     0,    13,
   140,    50,   196,   221,   199,   106,     0,    13,   140,    50,
   106,     0,     0,    13,    50,   197,   221,   199,   106,     0,
    13,    50,   106,     0,    13,   140,     0,   207,   214,   215,
   106,     0,   207,     0,     0,    51,     0,     0,    51,     0,
    35,     0,    42,    35,     0,    42,    83,   167,   104,    35,
     0,   200,     6,     0,   200,     7,     0,   200,     8,     0,
   200,    35,     0,   200,   140,     0,   200,   144,     0,   200,
    49,     0,   200,   144,    50,     0,   200,   144,    55,     0,
   200,   141,     0,     0,   201,   204,   208,     0,     0,   202,
   205,   208,     0,   200,    50,     0,   206,     0,   203,     0,
     0,    55,     0,    55,   209,     0,   210,     0,   209,    51,
   210,     0,   212,     0,   211,     0,   213,   212,     0,   213,
   211,     0,   212,     5,     0,   144,   146,   151,     0,   140,
     0,    36,     0,     6,     0,   213,    36,     0,   213,     6,
     0,    50,     0,     0,   216,     0,   215,    36,    55,   216,
     0,   215,    36,    55,     0,   217,     0,   216,   217,     0,
   216,   105,     0,   173,   218,   105,     0,   173,    83,   291,
   104,   105,     0,   173,    83,   291,   104,   106,     0,   173,
    44,   105,     0,   173,    44,   106,     0,   175,   218,   105,
     0,   175,   172,   105,     0,   175,   218,   106,     0,   175,
    83,   291,   104,   105,     0,   175,    83,   291,   104,   106,
     0,   175,    44,   105,     0,   175,    44,   106,     0,    55,
   160,   105,     0,    55,   160,   106,     0,     1,     0,   133,
    55,     0,   133,    50,     0,   231,   298,   105,     0,   231,
   298,   106,     0,     0,   219,     0,   218,    51,   220,     0,
   172,   298,   182,   189,     0,   172,   298,   182,   189,    53,
   193,     0,     3,    55,   160,   189,     0,    49,   160,   189,
     0,    55,   160,     0,   172,   298,   182,   189,     0,   172,
   298,   182,   189,    53,   193,     0,     3,    55,   160,   189,
     0,    49,   160,   189,     0,    55,   160,     0,   222,     0,
   221,    51,   222,     0,   140,     0,   140,    53,   160,     0,
   176,   224,     0,   225,   224,     0,     0,   235,     0,    47,
   235,     0,     8,     0,   225,     8,     0,     0,   226,     8,
     0,     0,   228,   154,     0,   229,    83,   156,   104,   226,
     0,   229,    83,   291,   104,   226,     0,   229,    44,   226,
     0,   229,    83,     1,   104,   226,     0,   229,    84,   227,
   109,     0,   229,    84,   109,     0,    83,   230,   104,     0,
    83,    71,   226,   229,   104,     0,    78,     0,   237,     0,
    83,    61,   226,   229,   104,     0,    71,   226,   229,     0,
    61,   226,   229,     0,     4,     0,   230,    83,   156,   104,
   226,     0,   230,    83,   291,   104,   226,     0,   230,    44,
   226,     0,   230,    83,     1,   104,   226,     0,   230,    84,
   227,   109,     0,   230,    84,   109,     0,    83,   230,   104,
     0,    78,     0,   237,     0,    71,   226,   229,     0,    61,
   226,   229,     0,   231,    83,   156,   104,   226,     0,   231,
    83,   291,   104,   226,     0,   231,    44,   226,     0,   231,
    83,     1,   104,   226,     0,    83,   231,   104,     0,    71,
   226,   231,     0,    61,   226,   231,     0,   231,    84,   227,
   109,     0,   231,    84,   109,     0,     3,     0,   303,     0,
   107,     4,     0,   107,     3,     0,   107,    95,     0,   232,
   295,   231,     0,   232,   295,     4,     0,   232,   295,     4,
    83,   156,   104,   226,     0,   232,   295,     4,    83,   291,
   104,   226,     0,   232,   295,     4,    44,   226,     0,   232,
   295,     4,    83,     1,   104,   226,     0,   232,   295,    95,
     0,   232,   295,    95,    83,   156,   104,   226,     0,   232,
   295,    95,    83,   291,   104,   226,     0,   232,   295,    95,
    44,   226,     0,   232,   295,    95,    83,     1,   104,   226,
     0,    46,   295,   231,     0,   233,     0,   143,    46,     0,
     4,    46,     0,     5,     0,   143,     5,     0,    83,   235,
   104,     0,    71,   226,   235,     0,    71,   226,     0,    78,
     0,    83,   236,   104,     0,    61,   226,   235,     0,    61,
   226,     0,   235,    83,   291,   104,   226,     0,   235,    44,
   226,     0,   235,    84,   227,   109,     0,   235,    84,   109,
     0,    83,   291,   104,   226,     0,    44,   226,     0,    84,
   227,   109,     0,    84,   109,     0,   232,    71,   226,     0,
   232,    71,   226,   235,     0,   232,    61,   226,     0,   232,
    61,   226,   235,     0,   232,   295,    71,   226,   229,     0,
   232,   295,    61,   226,   229,     0,   250,     0,   239,     0,
   238,   250,     0,   238,   239,     0,     1,   105,     0,     0,
     0,   242,     0,   243,     0,   242,   243,     0,    34,   192,
   105,     0,   245,     0,     1,   245,     0,    50,   106,     0,
    50,   240,   241,   238,   106,     0,    50,   240,   241,     1,
   106,     0,     0,     0,    14,   247,   155,   248,   249,     0,
   245,     0,   240,   251,     0,   245,     0,   251,     0,   171,
     0,   154,   105,     0,     0,   246,    15,   252,   249,     0,
   246,     0,     0,     0,    16,   253,   155,   254,   249,     0,
     0,     0,    17,   255,   249,    16,   256,   155,   105,     0,
     0,     0,     0,   283,   257,   286,   105,   258,   286,   104,
   259,   249,     0,     0,     0,     0,   284,   260,   286,   105,
   261,   286,   104,   262,   249,     0,     0,    19,    83,   154,
   104,   263,   249,     0,     0,    20,   154,    55,   264,   250,
     0,     0,    20,   154,    56,   154,    55,   265,   250,     0,
     0,    21,    55,   266,   250,     0,    22,   105,     0,    23,
   105,     0,    24,   105,     0,    24,   154,   105,     0,   115,
   285,    83,   167,   104,   105,     0,   115,   285,    83,   167,
    55,   287,   104,   105,     0,   115,   285,    83,   167,    55,
   287,    55,   287,   104,   105,     0,   115,   285,    83,   167,
    55,   287,    55,   287,    55,   290,   104,   105,     0,    25,
    71,   154,   105,     0,    25,   140,   105,     0,   270,   250,
     0,   270,   106,     0,   105,     0,    93,   105,     0,    93,
   154,   105,     0,    91,   299,    83,   156,   104,   105,     0,
    91,   299,    44,   105,     0,    85,   299,    83,   156,   104,
   105,     0,    85,   299,    44,   105,     0,    85,   140,   105,
     0,     0,   269,    89,   140,    50,   267,   277,   106,     0,
   269,     1,     0,     0,   273,   274,   274,   268,   281,     0,
   269,    87,   301,     0,   269,     0,   271,   106,     0,   271,
   238,   106,     0,   271,     1,   106,     0,     3,    55,     0,
    95,    55,     0,    49,     0,     0,    88,    50,   272,   240,
     0,   275,   106,     0,   275,   238,   106,     0,   275,     1,
   106,     0,     0,     0,    92,    50,   276,   240,     0,     0,
     0,   277,   299,   278,   245,     0,     0,   277,    21,   279,
   245,     0,     0,   140,     0,     0,     0,   281,    90,    83,
   223,   280,   104,   282,   245,     0,    18,    83,   105,     0,
    18,    83,   154,   105,     0,    18,    83,    50,   106,     0,
    18,    83,   171,     0,    18,    83,     1,   105,     0,    18,
    83,    50,   240,   238,   106,     0,    18,    83,    50,   240,
     1,   106,     0,     0,     8,     0,     0,   154,     0,     1,
     0,     0,   288,     0,   289,     0,   288,    51,   289,     0,
    10,    83,   154,   104,     0,    10,     0,   290,    51,    10,
     0,     0,   292,     0,   292,    51,    11,     0,   292,    11,
     0,    11,     0,    94,     0,   292,    94,     0,   292,    55,
     0,   293,     0,   293,    53,   193,     0,   292,    51,   293,
     0,   292,    51,   293,    53,   193,     0,   292,    51,   297,
     0,   292,    51,   297,    53,   193,     0,   173,   296,   294,
     0,   175,   296,   294,     0,   224,     0,   231,     0,    47,
   231,     0,   226,     0,     0,   294,     0,     0,    86,   301,
     0,    93,    83,   302,   104,     0,    98,     0,     3,     0,
     4,     0,    46,     3,     0,    46,     4,     0,   232,     3,
     0,   234,     0,   223,     0,   299,     0,   301,    51,   299,
     0,   300,     0,   302,    51,   300,     0,    41,    71,     0,
    41,    72,     0,    41,    73,     0,    41,    69,     0,    41,
    70,     0,    41,    61,     0,    41,    59,     0,    41,    60,
     0,    41,   107,     0,    41,    51,     0,    41,    64,     0,
    41,    65,     0,    41,    66,     0,    41,    63,     0,    41,
    52,     0,    41,    53,     0,    41,    67,     0,    41,    68,
     0,    41,    75,     0,    41,    76,     0,    41,    58,     0,
    41,    57,     0,    41,   108,     0,    41,    54,    55,     0,
    41,    62,     0,    41,    79,     0,    41,    80,     0,    41,
    43,   226,     0,    41,    44,     0,    41,    84,   109,     0,
    41,    38,     0,    41,    37,     0,    41,   176,   224,     0,
    41,     1,     0
};

#if YYDEBUG != 0
static const short yyrline[] = { 0,
   283,   284,   292,   294,   295,   299,   304,   308,   311,   314,
   317,   319,   321,   322,   325,   327,   329,   332,   337,   342,
   345,   349,   352,   356,   369,   376,   383,   386,   391,   393,
   397,   403,   403,   406,   406,   409,   409,   422,   422,   427,
   432,   447,   470,   479,   480,   483,   484,   485,   486,   487,
   490,   496,   499,   504,   510,   517,   519,   537,   538,   539,
   542,   556,   569,   572,   575,   578,   580,   582,   586,   592,
   597,   602,   607,   612,   617,   622,   628,   638,   647,   654,
   663,   672,   679,   688,   696,   698,   700,   702,   706,   715,
   738,   741,   743,   744,   747,   754,   761,   765,   767,   769,
   771,   773,   775,   779,   785,   787,   788,   791,   793,   794,
   797,   799,   800,   804,   805,   808,   837,   840,   844,   848,
   849,   853,   858,   861,   865,   868,   871,   903,   922,   925,
   929,   932,   936,   938,   940,   942,   944,   948,   951,   954,
   959,   963,   966,   968,   972,   979,   982,   985,   987,   989,
   991,   997,  1002,  1022,  1024,  1057,  1060,  1062,  1064,  1066,
  1068,  1070,  1072,  1074,  1082,  1092,  1095,  1097,  1099,  1101,
  1104,  1106,  1109,  1137,  1156,  1181,  1183,  1186,  1201,  1203,
  1205,  1216,  1218,  1220,  1222,  1224,  1226,  1228,  1230,  1232,
  1234,  1236,  1238,  1240,  1242,  1244,  1246,  1248,  1250,  1252,
  1254,  1256,  1263,  1266,  1281,  1284,  1299,  1300,  1302,  1304,
  1306,  1314,  1329,  1334,  1341,  1351,  1401,  1403,  1419,  1421,
  1425,  1448,  1492,  1494,  1496,  1498,  1500,  1539,  1546,  1548,
  1550,  1552,  1555,  1558,  1560,  1602,  1604,  1609,  1611,  1615,
  1618,  1622,  1624,  1632,  1634,  1638,  1647,  1662,  1668,  1671,
  1678,  1686,  1689,  1696,  1701,  1708,  1710,  1711,  1713,  1721,
  1724,  1726,  1728,  1732,  1736,  1741,  1743,  1754,  1758,  1760,
  1763,  1778,  1781,  1783,  1785,  1789,  1792,  1800,  1801,  1802,
  1803,  1804,  1808,  1812,  1817,  1818,  1819,  1822,  1824,  1827,
  1829,  1832,  1835,  1839,  1847,  1849,  1858,  1864,  1865,  1871,
  1879,  1881,  1892,  1895,  1900,  1902,  1907,  1912,  1923,  1938,
  1941,  1945,  1947,  1952,  1955,  1958,  1964,  1967,  1970,  1972,
  1974,  1976,  1980,  1984,  1988,  1991,  1994,  1998,  2001,  2005,
  2060,  2075,  2077,  2080,  2082,  2087,  2088,  2090,  2092,  2095,
  2098,  2101,  2106,  2109,  2111,  2113,  2119,  2123,  2128,  2133,
  2140,  2145,  2154,  2159,  2159,  2161,  2164,  2166,  2170,  2172,
  2176,  2181,  2185,  2189,  2195,  2204,  2218,  2221,  2223,  2227,
  2253,  2262,  2288,  2291,  2293,  2295,  2298,  2301,  2304,  2309,
  2374,  2376,  2380,  2382,  2386,  2389,  2392,  2396,  2398,  2402,
  2404,  2408,  2410,  2414,  2419,  2421,  2423,  2425,  2431,  2434,
  2435,  2446,  2451,  2455,  2459,  2463,  2468,  2472,  2475,  2478,
  2481,  2489,  2491,  2495,  2498,  2502,  2505,  2509,  2512,  2513,
  2517,  2520,  2524,  2527,  2535,  2537,  2541,  2544,  2546,  2548,
  2550,  2552,  2554,  2556,  2558,  2560,  2561,  2563,  2565,  2567,
  2570,  2573,  2575,  2577,  2579,  2581,  2583,  2585,  2587,  2588,
  2590,  2597,  2600,  2602,  2604,  2606,  2608,  2610,  2612,  2614,
  2616,  2620,  2623,  2629,  2631,  2633,  2642,  2644,  2646,  2648,
  2650,  2653,  2655,  2657,  2659,  2661,  2663,  2667,  2675,  2692,
  2695,  2696,  2717,  2722,  2724,  2726,  2728,  2730,  2732,  2734,
  2736,  2738,  2740,  2742,  2744,  2746,  2748,  2752,  2760,  2767,
  2774,  2783,  2791,  2804,  2806,  2807,  2808,  2811,  2818,  2828,
  2830,  2835,  2837,  2840,  2854,  2857,  2860,  2862,  2867,  2874,
  2878,  2881,  2883,  2886,  2893,  2896,  2899,  2902,  2915,  2918,
  2920,  2923,  2929,  2931,  2933,  2937,  2940,  2946,  2951,  2954,
  2959,  2965,  2969,  2972,  2978,  2993,  3000,  3003,  3053,  3053,
  3132,  3132,  3148,  3148,  3152,  3156,  3159,  3164,  3171,  3180,
  3189,  3198,  3201,  3207,  3209,  3213,  3217,  3218,  3219,  3222,
  3225,  3228,  3231,  3234,  3246,  3275,  3285,  3298,  3326,  3357,
  3369,  3377,  3382,  3389,  3397,  3399,  3406,  3408,  3408,  3416,
  3421,  3428,  3429,  3431,  3431,  3434,  3455,  3471,  3490,  3508,
  3511,  3513,  3516,  3533,  3551,  3554,  3556,  3560,  3563,  3565,
  3567,  3573,  3576,  3580,  3583,  3584,  3590,  3592,  3595,  3597,
  3601,  3606,  3609,  3618,  3625,  3630,  3635,  3639,  3646,  3650,
  3654,  3668,  3671,  3673,  3675,  3677,  3679,  3687,  3703,  3708,
  3709,  3710,  3714,  3718,  3736,  3744,  3747,  3749,  3753,  3756,
  3758,  3760,  3762,  3764,  3766,  3769,  3774,  3776,  3783,  3785,
  3792,  3795,  3797,  3799,  3801,  3803,  3805,  3807,  3809,  3811,
  3813,  3815,  3817,  3819,  3821,  3823,  3832,  3834,  3836,  3838,
  3840,  3842,  3844,  3846,  3848,  3850,  3862,  3874,  3905,  3917,
  3929,  3942,  3958,  3960
};

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","GCC_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",
"asm_keyword","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","paren_expr_or_null","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",
"@20","implicitly_scoped_stmt","stmt","simple_stmt","@21","@22","@23","@24",
"@25","@26","@27","@28","@29","@30","@31","@32","@33","@34","@35","@36","@37",
"try","label_colon","try_head","@38","ansi_try","ansi_dummy","ansi_try_head",
"@39","except_stmts","@40","@41","optional_identifier","ansi_except_stmts","@42",
"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,
   110,   110,   112,   111,   111,   113,   114,   115,   115,   116,
   116,   116,   116,   116,   116,   116,   116,   116,   117,   119,
   118,   120,   120,   121,   121,   121,   121,   122,   123,   123,
   125,   124,   126,   124,   127,   124,   128,   124,   124,   124,
   124,   124,   124,   124,   124,   129,   129,   129,   129,   129,
   130,   130,   130,   130,   130,   130,   130,   130,   130,   130,
   131,   131,   131,   131,   131,   131,   131,   131,   132,   132,
   132,   132,   132,   132,   132,   132,   133,   133,   133,   133,
   133,   133,   133,   134,   135,   135,   135,   135,   136,   137,
   138,   138,   138,   138,   139,   139,   139,   139,   139,   139,
   139,   139,   139,   139,   140,   140,   140,   141,   141,   141,
   142,   142,   142,   142,   142,   143,   144,   144,   145,   145,
   145,   146,   147,   147,   148,   148,   150,   149,   151,   151,
   152,   152,   153,   153,   153,   153,   153,   154,   154,   155,
   155,   156,   156,   156,   157,   158,   157,   157,   157,   157,
   157,   157,   157,   157,   157,   157,   157,   157,   157,   157,
   157,   157,   157,   157,   157,   157,   157,   157,   157,   157,
   157,   157,   157,   157,   157,   159,   159,   159,   159,   159,
   159,   160,   160,   160,   160,   160,   160,   160,   160,   160,
   160,   160,   160,   160,   160,   160,   160,   160,   160,   160,
   160,   160,   160,   160,   161,   161,   161,   161,   161,   161,
   162,   161,   163,   161,   161,   161,   161,   161,   161,   161,
   161,   161,   161,   161,   161,   161,   161,   161,   161,   161,
   161,   161,   161,   161,   161,   164,   164,   164,   164,   165,
   165,   166,   166,   167,   167,   168,   169,   169,   170,   171,
   171,   171,   171,   171,   171,   172,   172,   172,   172,   173,
   173,   173,   173,   174,   174,   174,   174,   175,   175,   175,
   175,   176,   176,   176,   176,   177,   177,   178,   178,   178,
   178,   178,   178,   178,   179,   179,   179,   180,   180,   181,
   181,   182,   182,   184,   183,   183,   186,   185,   185,   188,
   187,   187,   189,   189,   190,   190,   191,   191,   191,   192,
   192,   193,   193,   193,   193,   193,   194,   194,   194,   194,
   194,   194,   196,   195,   195,   197,   195,   195,   195,   195,
   195,   198,   198,   199,   199,   200,   200,   200,   200,   200,
   200,   200,   201,   201,   201,   201,   201,   202,   204,   203,
   205,   203,   206,   207,   207,   208,   208,   208,   209,   209,
   210,   210,   210,   210,   211,   212,   212,   213,   213,   213,
   213,   214,   215,   215,   215,   215,   216,   216,   216,   217,
   217,   217,   217,   217,   217,   217,   217,   217,   217,   217,
   217,   217,   217,   217,   217,   217,   217,   217,   218,   218,
   218,   219,   219,   219,   219,   219,   220,   220,   220,   220,
   220,   221,   221,   222,   222,   223,   223,   224,   224,   224,
   225,   225,   226,   226,   228,   227,   229,   229,   229,   229,
   229,   229,   229,   229,   229,   229,   229,   229,   229,   229,
   230,   230,   230,   230,   230,   230,   230,   230,   230,   230,
   230,   231,   231,   231,   231,   231,   231,   231,   231,   231,
   231,   231,   231,   231,   231,   231,   231,   231,   231,   231,
   231,   231,   231,   231,   231,   231,   231,   232,   232,   233,
   234,   234,   235,   235,   235,   235,   235,   235,   235,   235,
   235,   235,   235,   235,   235,   235,   235,   236,   236,   236,
   236,   237,   237,   238,   238,   238,   238,   239,   240,   241,
   241,   242,   242,   243,   244,   244,   245,   245,   245,   247,
   248,   246,   249,   249,   250,   250,   251,   251,   252,   251,
   251,   253,   254,   251,   255,   256,   251,   257,   258,   259,
   251,   260,   261,   262,   251,   263,   251,   264,   251,   265,
   251,   266,   251,   251,   251,   251,   251,   251,   251,   251,
   251,   251,   251,   251,   251,   251,   251,   251,   251,   251,
   251,   251,   251,   267,   251,   251,   268,   251,   251,   251,
   269,   269,   269,   270,   270,   270,   272,   271,   273,   273,
   273,   274,   276,   275,   277,   278,   277,   279,   277,   280,
   280,   281,   282,   281,   283,   283,   283,   284,   284,   284,
   284,   285,   285,   286,   286,   286,   287,   287,   288,   288,
   289,   290,   290,   291,   291,   291,   291,   291,   291,   291,
   291,   292,   292,   292,   292,   292,   292,   293,   293,   294,
   294,   294,   295,   296,   297,   298,   298,   298,   299,   299,
   299,   299,   299,   299,   299,   300,   301,   301,   302,   302,
   303,   303,   303,   303,   303,   303,   303,   303,   303,   303,
   303,   303,   303,   303,   303,   303,   303,   303,   303,   303,
   303,   303,   303,   303,   303,   303,   303,   303,   303,   303,
   303,   303,   303,   303
};

static const short yyr2[] = {     0,
     0,     1,     0,     2,     2,     0,     0,     1,     1,     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,     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,
     0,     5,     1,     2,     1,     1,     1,     2,     0,     4,
     1,     0,     0,     5,     0,     0,     7,     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,   461,   280,   481,   269,   279,   268,     0,
     8,     9,     0,   336,     0,     0,     0,     0,   423,   423,
   423,     0,     0,    76,    19,    60,     0,     0,     5,     6,
     0,    13,    12,    11,    10,   246,   284,   121,     0,     0,
   260,     0,   290,   278,     0,   349,   351,   355,   354,   331,
     0,   423,   478,   281,   462,     4,    58,    59,   423,   480,
   240,   624,   105,   106,   326,   107,   329,   240,    29,     0,
   694,   280,   421,   692,   691,   423,   689,   670,   675,   676,
     0,   682,   681,   667,   668,   666,   685,   674,   671,   672,
   673,   677,   678,   664,   665,   661,   662,   663,   679,   680,
   686,   687,     0,   669,   683,   284,   418,   272,     0,   281,
   337,     0,    20,   643,     0,     0,     0,     0,     0,     0,
   240,   464,   463,   465,     0,     3,     0,     0,   280,     0,
     0,   349,   351,   646,     0,    90,    85,   246,     0,     0,
   482,   479,   119,   120,   129,   440,     0,   423,   423,   435,
     0,    57,     0,     0,   288,   256,   257,   423,   436,   280,
   271,   270,    56,     0,   261,     0,     0,   265,   285,   286,
   262,   264,   287,     0,    51,   106,   339,   340,   341,   342,
   345,   353,   107,   109,   108,   110,   343,   348,   344,   356,
   356,   372,     0,    68,   423,     0,   425,     0,     0,    71,
     0,   423,   624,   646,   205,   421,   207,   244,   240,   240,
     0,     0,   146,   242,   221,   241,     0,   240,   134,   133,
   240,   135,   136,     0,   240,   137,     0,   123,   240,   176,
   182,   126,   145,     0,   240,   208,     0,   240,   418,   272,
   125,   418,     0,   206,   628,   629,   644,   644,     0,   625,
   632,   328,     0,   323,     0,   138,   139,     0,     0,    28,
   688,   684,   690,   423,     0,   423,   423,   486,   624,   425,
   693,   419,   274,   276,   422,   273,     0,     0,   424,   477,
   458,   457,   456,     0,     0,    16,     0,     7,     7,    45,
    44,   646,     0,    31,    35,    39,    33,    37,    40,   292,
    84,    91,    88,     0,   240,   246,     0,     0,     0,   509,
    61,   515,    63,   356,   130,   116,   258,   259,     0,     0,
   423,   423,   448,     0,     0,   449,    66,    55,    69,     0,
    54,   423,     0,   425,     0,    53,   263,    52,    67,    70,
   267,   266,   646,   291,   346,   347,   357,   350,   352,   394,
   240,     0,   399,   399,     0,     0,   377,   646,   454,     0,
   268,     0,   142,   260,     0,   460,     0,   240,   650,   651,
     0,   649,     0,     0,   655,   657,   647,     0,     0,   303,
   467,   472,   466,   646,     0,    74,   240,     0,     0,   153,
   145,     0,     0,   155,   240,   240,   240,   227,     0,   243,
     0,   228,   152,   149,   148,     0,     0,     0,     0,   150,
   240,   118,   151,   240,   240,     0,   240,   240,   240,   240,
   240,   240,   240,   240,   240,   240,   240,   240,   240,   240,
   240,   240,   240,   215,   219,   220,   248,   249,   247,   240,
   240,   240,   236,     0,   240,   173,   245,   111,   112,   113,
     0,   217,     0,   115,   204,   416,   224,   240,   417,   112,
   113,   229,   418,   418,   423,   627,   418,   631,   630,     0,
   414,   334,   412,   325,     0,   282,     0,   283,    30,   495,
   420,   489,   485,     0,     0,     0,     0,   497,     0,   423,
   624,   425,   277,   275,     0,     0,    22,     0,    27,   117,
     0,    15,    18,    17,   292,    50,    46,    49,    47,    48,
    43,     0,     0,     0,     0,   303,   106,    96,   240,     0,
    92,     0,   121,     0,     0,   316,     0,   312,    86,     0,
     0,    62,    65,   516,   517,   510,   127,   439,   438,     0,
     0,   423,   423,     0,   423,     0,   425,   433,   303,   289,
   429,     0,     0,     0,   432,     0,   423,   423,   292,   369,
   368,   367,   122,   358,   359,   362,   361,     0,     0,   396,
   395,   461,   423,   240,   240,   624,   646,     0,   400,   423,
   624,   646,     0,     0,   330,   379,   378,    83,   423,   423,
   423,   459,   426,   652,   653,   654,     0,   656,   659,     0,
     0,     0,   302,   423,     0,   423,     0,    75,   423,     0,
     0,     0,     0,   280,     0,   147,   226,   240,   210,   209,
     0,   240,   124,   202,   201,   616,   615,     0,   199,   198,
   196,   197,   195,   194,   193,   190,   191,   192,   188,   189,
   183,   184,   185,   186,   187,   203,     0,     0,   238,   240,
   171,   240,   272,   157,   240,     0,   114,   233,   240,   218,
     0,   231,   240,     0,   423,   423,   624,   640,   641,   638,
   639,   646,   626,   634,   645,   636,   633,   240,   335,     0,
   334,   144,   143,   488,   484,   423,   423,   483,   487,   423,
   496,   491,     0,   493,     0,   338,     0,    21,   345,   343,
   348,    14,   303,    32,    36,    34,    38,     0,     0,    94,
     0,    98,   240,   100,   240,     0,   102,   240,   205,   280,
   240,   313,     0,   317,     0,    87,    64,     0,     0,   511,
   512,     0,     0,     0,     0,     0,   447,   443,     0,     0,
     0,   446,     0,   296,   423,   423,   423,   431,     0,     0,
   303,   129,     0,   365,   371,   370,   364,   363,   392,   393,
   240,   383,   384,   646,   303,   406,     0,   292,     0,   380,
   390,   391,   646,     0,   386,   292,   385,   387,     0,   397,
   398,   455,   452,   453,   658,     0,   648,     0,     0,   300,
   470,     0,     0,     0,   475,     0,     0,     0,   646,   222,
   154,   156,   179,   181,   180,     0,   212,     0,   177,   240,
   213,   216,     0,     0,     0,   418,   418,   161,   240,     0,
   174,   240,     0,   235,   240,   223,     0,   642,   489,   485,
   423,    72,     0,     0,   415,   413,   327,     0,   500,   498,
   494,   423,   492,    23,    26,     0,     0,    41,    95,    93,
     0,     0,   104,   240,     0,     0,     0,     0,   314,   310,
     0,     0,   205,   520,   532,   535,     0,     0,   240,     0,
     0,     0,   240,     0,   586,     0,     0,     0,     0,   240,
     0,   566,   612,     0,   527,     0,     0,     0,   505,   525,
   531,   504,   526,     0,   240,     0,   592,     0,   538,   542,
   513,     0,   437,   434,   451,   450,   423,   423,   423,   445,
   294,   430,   427,   428,   503,   502,   299,   366,   360,   303,
    78,   405,   423,   303,   461,   240,   240,   646,   401,    81,
   423,     0,   660,   293,     0,     0,   423,   423,   423,   423,
   423,   423,    73,   225,   332,   200,   131,     0,   237,     0,
     0,     0,     0,   163,   175,   232,     0,   230,   635,   637,
   324,   501,   499,   490,    25,    42,    97,    99,     0,   101,
     0,   321,   240,   315,     0,   318,     0,   514,   508,   519,
   584,     0,     0,   509,     0,   240,     0,   552,   554,   555,
   556,     0,   240,     0,   650,   651,     0,     0,   587,     0,
   593,   567,     0,   585,   613,     0,   528,   254,   646,     0,
   255,     0,     0,   646,     0,   518,   507,   506,   529,   576,
     0,     0,   565,   564,     0,   581,     0,   592,     0,   589,
     0,     0,     0,     0,   444,   441,   442,     0,   297,   404,
   381,   382,   646,   402,   240,   303,   411,   292,   388,   389,
   646,   307,     0,   305,   301,   471,   468,   469,   476,   473,
   474,     0,     0,   131,   214,   239,   172,     0,   272,   158,
   167,   169,   159,   234,   103,   319,     0,     0,   311,   140,
   240,   521,   533,   240,   523,     0,     0,   509,   605,     0,
   608,     0,   548,   240,   240,   557,     0,   563,   573,     0,
   240,   509,     0,   240,   509,   568,     0,   251,   292,   250,
   253,   252,   292,   509,   579,     0,   583,   582,   577,   591,
   590,     0,     0,   128,   295,     0,    77,     0,   303,   410,
   303,    80,     0,     0,     0,   178,   132,   418,   418,   162,
   240,     0,   425,   425,     0,   322,     0,   509,   509,   524,
   536,   609,   607,     0,   606,   546,   240,     0,   553,   562,
   572,     0,   588,   570,     0,   594,     0,   530,   574,   602,
   539,   543,   298,   403,   409,   407,     0,     0,   306,   304,
     0,     0,     0,   164,     0,     0,   320,   141,   522,   534,
     0,     0,     0,   509,   549,   550,     0,     0,   617,     0,
   595,   578,     0,     0,     0,     0,   308,   168,   170,   160,
   165,   166,     0,   611,   610,   547,   240,   571,   569,     0,
     0,   618,   619,   558,     0,     0,     0,     0,   408,     0,
   537,   551,   240,   617,     0,     0,   598,   575,   596,     0,
   540,   544,     0,     0,     0,   559,   620,     0,     0,   600,
   509,   509,     0,   621,     0,     0,   599,   597,   601,     0,
   541,   545,   309,   622,     0,   560,   603,     0,     0,     0,
   623,   561,   604,     0,     0,     0
};

static const short yydefgoto[] = {  1274,
     1,     2,   127,   503,   883,    29,    30,    31,   278,   496,
   497,    32,    70,    33,   512,   514,   513,   515,   511,    34,
    35,    36,   352,   137,   138,   139,   302,   520,   521,   562,
   188,   452,    37,    38,   145,   752,   227,   228,   315,   732,
   316,  1065,   229,   884,  1082,   256,   230,   397,   231,   257,
   233,   408,   947,   444,   234,   235,   236,   140,   237,   238,
   885,   343,   247,   171,   248,   239,   273,   392,   274,   154,
    42,   380,   155,  1038,   344,  1126,    43,   936,   603,  1053,
  1054,   861,   724,   725,    44,   475,   253,  1063,   680,    45,
    46,    47,    48,   190,   191,    49,    50,   348,   564,   565,
   566,   567,   568,   193,   355,   356,   357,   578,   579,   929,
   472,   473,   241,   668,   242,   114,   367,   368,   156,   325,
   157,   243,    53,   110,   272,   486,   159,   888,   889,  1084,
   729,   730,   731,   311,   890,   891,   982,  1148,  1086,   892,
   893,  1114,   983,  1149,   984,  1191,  1032,  1203,  1251,  1033,
  1204,  1252,  1194,  1157,  1217,  1095,  1201,  1170,   894,   895,
   896,  1102,   897,  1028,   898,  1105,  1225,  1249,  1248,  1260,
  1202,  1270,   899,   900,  1006,   628,  1221,  1222,  1223,  1265,
   487,   250,   251,   670,   201,   463,   676,   200,   376,   599,
   377,   600,   244
};

static const short yypact[] = {    85,
  1781,  1492,   152,-32768,   749,-32768,-32768,-32768,-32768,   321,
-32768,-32768,    16,-32768,   116,  2019,    74,    82,-32768,-32768,
-32768,  1140,   151,-32768,-32768,-32768,    84,   177,-32768,   285,
   559,-32768,-32768,-32768,-32768,    62,   108,   182,   723,   839,
   997,    92,-32768,-32768,  1078,-32768,-32768,-32768,-32768,   301,
  1615,-32768,-32768,    39,-32768,-32768,-32768,-32768,-32768,-32768,
  5696,  5379,-32768,-32768,   202,-32768,   310,  5696,-32768,   189,
-32768,   312,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
   325,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
-32768,-32768,   316,-32768,-32768,   389,  1204,  1494,  1248,-32768,
-32768,   427,-32768,   510,  1140,   500,   500,    51,   523,    49,
  5696,-32768,-32768,-32768,   427,   450,  4946,   437,    51,  2378,
  1433,    60,   194,   651,   574,-32768,   536,   160,   411,   411,
-32768,-32768,-32768,-32768,   503,    51,  2063,-32768,-32768,-32768,
  3444,-32768,  1265,   212,-32768,   675,   677,-32768,-32768,  2129,
-32768,-32768,-32768,   508,   997,   238,  1746,-32768,-32768,-32768,
  1665,-32768,-32768,  2378,-32768,   312,-32768,-32768,-32768,-32768,
-32768,-32768,   151,-32768,-32768,-32768,-32768,-32768,   473,   566,
   566,-32768,  4861,-32768,-32768,  3380,   506,   103,   540,   494,
  2391,-32768,  5379,   240,-32768,   543,-32768,-32768,  5902,  5979,
   562,   600,-32768,-32768,-32768,  5413,   123,  5777,-32768,-32768,
  5777,-32768,-32768,  4331,  5777,-32768,   195,-32768,  5777,-32768,
-32768,  6505,  1349,   605,  5369,   683,   266,  5777,  1204,   546,
-32768,  6305,   272,-32768,-32768,-32768,-32768,  3429,   606,   303,
   660,-32768,   123,   611,   627,   653,  6439,   637,   742,-32768,
   510,-32768,-32768,-32768,   887,-32768,-32768,-32768,  6261,   641,
-32768,   695,  1494,-32768,-32768,  1494,    48,  3537,-32768,-32768,
   677,   677,-32768,   354,    64,-32768,  1886,-32768,-32768,-32768,
-32768,   341,    70,-32768,-32768,-32768,-32768,-32768,-32768,   591,
-32768,   179,-32768,  4412,  5777,-32768,   411,   411,   704,   681,
-32768,-32768,-32768,   566,-32768,-32768,   675,   677,  1539,  1539,
-32768,-32768,-32768,  3552,   318,-32768,-32768,-32768,   494,  2378,
-32768,-32768,  3488,   657,  3660,-32768,  1665,-32768,-32768,   494,
-32768,-32768,   341,-32768,-32768,-32768,   338,-32768,-32768,-32768,
  5777,   548,  1894,  6023,    42,  1648,-32768,   651,   510,   692,
   543,   175,  6483,   967,   708,-32768,   690,  5777,-32768,    51,
   644,-32768,   108,   805,-32768,-32768,   772,  2568,   748,   809,
    51,   151,-32768,   240,   735,-32768,  5777,   543,  4331,-32768,
  1530,   190,  4331,-32768,  5777,  5858,  5777,-32768,    54,-32768,
   409,-32768,-32768,-32768,-32768,   745,   747,   704,   759,-32768,
  5696,-32768,-32768,  5777,  5777,  4493,  5777,  5777,  5777,  5777,
  5777,  5777,  5777,  5777,  5777,  5777,  5777,  5777,  5777,  5777,
  5777,  5777,  5777,-32768,-32768,-32768,-32768,-32768,-32768,  5777,
  5777,  5777,   465,  1367,  4817,-32768,-32768,-32768,    51,   151,
   123,   541,   272,-32768,-32768,-32768,-32768,  5777,-32768,-32768,
-32768,   646,   702,   702,-32768,-32768,  6085,-32768,-32768,  4412,
   830,   843,-32768,-32768,   123,-32768,  4736,-32768,-32768,   510,
   695,  1298,  1298,    50,   355,   792,   799,-32768,   810,-32768,
  5379,   816,-32768,  1494,   874,   446,-32768,  1102,-32768,-32768,
   824,-32768,-32768,-32768,   591,-32768,-32768,-32768,-32768,-32768,
-32768,   834,   840,   842,   849,   809,    51,-32768,  5777,   448,
-32768,   679,   806,   123,   684,-32768,  3920,  6483,-32768,   178,
   411,-32768,-32768,-32768,-32768,   880,-32768,   675,   675,  1539,
  1539,-32768,-32768,   362,-32768,  3596,   855,-32768,   809,-32768,
   510,   868,   216,   872,-32768,   875,-32768,-32768,   591,-32768,
-32768,-32768,-32768,   926,-32768,-32768,   976,   383,  6366,-32768,
-32768,   931,   602,  5777,  5777,  6192,   341,   258,-32768,   619,
  6192,   731,    -1,   932,-32768,-32768,-32768,   669,-32768,-32768,
-32768,-32768,-32768,-32768,-32768,-32768,   103,-32768,-32768,   314,
   427,   906,   939,-32768,  3704,-32768,  3812,-32768,-32768,   317,
   890,   891,   892,    33,   893,-32768,-32768,  5777,-32768,-32768,
   902,  5453,-32768,  6483,  6483,-32768,-32768,   952,  6541,  6556,
  3766,  3333,  3872,  1802,  1790,  1891,  1891,  1891,  1118,  1118,
   800,   800,-32768,-32768,-32768,-32768,   353,   907,   940,  5777,
-32768,  5696,  1089,   962,  5777,   913,-32768,-32768,  5777,   698,
   356,-32768,  5777,  2362,-32768,-32768,  6130,-32768,   677,-32768,
-32768,   240,-32768,   971,-32768,   972,-32768,  5777,   123,   921,
   843,-32768,  6483,   695,   695,-32768,-32768,-32768,-32768,-32768,
-32768,   510,   927,-32768,   924,-32768,  3537,-32768,   947,   468,
   980,-32768,   809,-32768,-32768,-32768,-32768,    70,   372,-32768,
   179,-32768,  5777,-32768,  5777,   709,-32768,  5777,   989,   814,
  5777,-32768,   993,-32768,    89,-32768,-32768,   123,  3164,   880,
-32768,   301,   492,   592,  1539,  1539,-32768,   510,   950,   375,
   956,-32768,   942,  1003,-32768,-32768,-32768,-32768,  1539,  1539,
   809,   503,   338,-32768,-32768,-32768,-32768,   976,-32768,-32768,
  5777,-32768,-32768,   240,  6416,  6483,   957,   807,  1122,-32768,
-32768,-32768,   240,   960,-32768,   964,-32768,-32768,  4930,-32768,
-32768,   510,   510,   510,-32768,  2568,-32768,    65,   982,-32768,
   510,   965,   418,   968,   510,   970,   431,   973,   240,-32768,
-32768,-32768,-32768,-32768,-32768,   478,-32768,  4247,-32768,  5777,
-32768,-32768,   427,    99,   482,  1204,  6305,-32768,  5777,  4412,
-32768,  5777,   487,-32768,  5777,-32768,   489,   677,  2208,  2208,
    50,-32768,  4412,  4412,  6483,-32768,-32768,   974,  1298,  1298,
   510,-32768,-32768,-32768,-32768,   252,    70,-32768,-32768,-32768,
   555,   560,-32768,  5777,   563,  6344,  4412,  4004,-32768,-32768,
   283,   697,  1011,-32768,-32768,-32768,   996,  1000,  5777,  1034,
   985,   986,  5534,   281,-32768,   300,  1043,   103,  1044,  5615,
   284,-32768,  1087,   994,-32768,  2397,  6236,  2516,-32768,-32768,
  1085,-32768,-32768,  2322,  5051,  2624,-32768,  2732,-32768,-32768,
-32768,  4861,-32768,-32768,   675,   675,-32768,-32768,-32768,-32768,
-32768,   510,   510,   510,   675,   675,  1054,-32768,-32768,  6416,
-32768,-32768,   787,   809,  1056,  5777,  5777,   341,-32768,-32768,
   822,  2195,-32768,-32768,  1111,  4412,-32768,-32768,-32768,-32768,
-32768,-32768,-32768,-32768,  1064,  6525,   503,    67,-32768,  3324,
  1015,  1018,   577,-32768,-32768,-32768,   580,-32768,-32768,-32768,
-32768,   695,   695,   510,-32768,-32768,-32768,-32768,   581,-32768,
  4412,-32768,  5777,-32768,  1075,-32768,   123,-32768,-32768,-32768,
-32768,   721,   721,   704,  4085,  5777,   856,-32768,-32768,-32768,
-32768,  1029,  5777,  1030,  1031,    24,  1033,   727,-32768,   744,
-32768,-32768,  1035,-32768,-32768,  1058,-32768,-32768,   782,   286,
-32768,  1042,   324,   388,  1045,-32768,-32768,-32768,-32768,-32768,
   103,   123,-32768,-32768,   827,-32768,  2840,-32768,   831,-32768,
  2948,  4574,  4574,   124,   510,   510,   510,  4412,-32768,-32768,
-32768,-32768,   240,  1095,  5777,  6416,  6483,   591,-32768,-32768,
   240,  1066,   588,-32768,-32768,   510,   510,   510,   510,   510,
   510,  4166,  1047,   503,-32768,-32768,-32768,  2568,  1407,  1101,
  1071,  1074,-32768,-32768,-32768,-32768,  6461,  4412,-32768,-32768,
  5777,-32768,-32768,  5263,-32768,  1143,  1059,  1055,-32768,  1060,
-32768,  1063,-32768,  5777,  5157,-32768,  1065,-32768,-32768,  1070,
  5777,-32768,  1079,  5777,-32768,-32768,   427,-32768,   591,-32768,
-32768,-32768,   591,   704,   772,  1126,-32768,-32768,-32768,-32768,
-32768,  1090,  1093,-32768,-32768,  4412,-32768,  4412,  6416,-32768,
   809,-32768,   502,  1111,  1103,-32768,-32768,  1204,  6305,-32768,
  5777,  4412,-32768,-32768,  4412,-32768,  1104,   704,   704,-32768,
-32768,-32768,-32768,  3272,-32768,-32768,  5157,  1139,-32768,-32768,
-32768,   590,-32768,-32768,   598,-32768,    47,-32768,-32768,-32768,
-32768,-32768,-32768,-32768,-32768,  1153,  1158,  1106,-32768,-32768,
  1110,  1112,   636,-32768,  1113,  1115,-32768,-32768,-32768,-32768,
   721,   846,  3056,   704,-32768,-32768,  1114,  1120,  1216,  1123,
-32768,  1137,  4655,  4655,  4412,  1221,-32768,-32768,-32768,-32768,
-32768,-32768,  1128,-32768,-32768,-32768,  5157,-32768,-32768,  1148,
   360,  1183,-32768,-32768,   527,  1154,  1132,  1138,-32768,  1198,
-32768,-32768,  5777,  1216,  1145,  1216,-32768,-32768,-32768,  2568,
-32768,-32768,  1249,  1156,   380,-32768,-32768,   704,   704,   123,
   704,   704,  1159,-32768,  1247,  1157,-32768,-32768,-32768,  1160,
-32768,-32768,-32768,-32768,   652,-32768,-32768,  1257,  1164,   704,
-32768,-32768,-32768,  1277,  1279,-32768
};

static const short yypgoto[] = {-32768,
  1146,-32768,-32768,   991,    53,  1284,-32768,-32768,-32768,-32768,
   584,-32768,-32768,-32768,-32768,-32768,-32768,-32768,  -662,  1166,
  1169,-32768,-32768,-32768,-32768,  1161,-32768,-32768,   587,   -10,
   802,  -220,   535,   -31,-32768,-32768,  1180,   894,  -900,-32768,
   550,   243,-32768,    35,  -955,  -163,   752,-32768,  -145,   908,
  -169,-32768,-32768,-32768,-32768,  -177,   -99,   -93,-32768,-32768,
   323,    56,    28,  1144,    61,   -15,  1037,     3,    -9,   424,
   -29,  -293,-32768,-32768,   981,-32768,-32768,-32768,  -468,-32768,
   180,-32768,  -160,   509,   -26,-32768,-32768,-32768,   643,  -261,
  1313,  1314,-32768,-32768,-32768,-32768,-32768,  -140,-32768,   593,
   779,  -496,-32768,   618,   451,   575,  -340,  1001,-32768,-32768,
   881,   678,   -66,  -101,    -6,  1574,  -267,-32768,   -78,  1036,
  1272,   171,-32768,    19,  -151,-32768,  -133,  -854,  -864,  -283,
-32768,-32768,   631,  -118,  -131,-32768,-32768,-32768, -1013,  -827,
   289,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
-32768,-32768,-32768,   339,-32768,-32768,-32768,-32768,-32768,-32768,
-32768,-32768,-32768,-32768,-32768,  -995,   134,-32768,   141,-32768,
   -37,-32768,  -247,  -336,    34,  1131,-32768,    27,  -585,   604,
   363,-32768,  1361
};


#define	YYLAST		6629


static const short yytable[] = {    67,
   107,   258,   489,    41,    41,   271,   516,   312,   312,   109,
   166,   785,   277,   189,   173,   587,   498,   326,   108,    54,
    54,   313,   462,  1017,   249,   285,   536,  1083,    39,    39,
   499,   172,   362,    41,   187,   549,  1122,  1123,   400,   391,
   391,  1027,   165,  1031,   308,   848,  1064,   708,   391,   769,
   349,   391,   115,    28,    28,   391,   447,   447,   130,   391,
  1018,    40,    40,   240,    41,   391,   556,  1024,   317,    60,
   240,   758,   404,   447,   447,   405,   447,   584,    60,   410,
   744,   173,   202,   413,    -1,   135,   122,   123,    61,   446,
   214,   131,   195,   506,   153,   164,    60,    61,    68,   399,
  1168,  1199,   255,   777,   778,   369,   370,     6,   111,   294,
   686,   276,   141,   481,   295,    61,   136,   485,    69,   507,
   687,   203,   508,   240,   509,    63,    64,   671,  -106,    41,
   675,   196,   197,   165,  1189,  1190,   804,   456,   173,   858,
   459,   530,   174,   529,   173,    54,   113,   585,   371,   477,
  1200,   495,   283,   142,    39,   172,   112,   409,   365,   584,
   300,   342,  1017,  1064,   296,   385,  1017,   501,   934,   553,
  1066,    52,    52,   537,   510,   312,   312,   534,   124,   329,
  1216,    63,   517,     6,   966,   292,   293,    40,   532,   533,
   326,   335,    52,   340,   859,    41,   175,    23,   364,  1018,
   372,    52,   845,  1018,   949,    41,   403,  1227,  1228,   158,
   158,   703,   531,   173,   136,   121,   375,    66,   401,   674,
   353,   400,   518,   610,   695,   477,   240,   391,   477,  1124,
   386,   143,   660,   457,   847,  1213,   144,  1261,  1262,   259,
   538,   539,   471,   297,   276,   411,   173,   279,   298,   173,
   165,   616,   379,   354,    63,   176,    57,    58,   407,   125,
   412,   519,   330,   493,   306,   751,   477,  1159,   448,   449,
   523,    41,   458,   183,   448,   460,   621,   647,   590,   743,
    41,   726,   917,    63,    64,    52,    52,    52,   174,    41,
   998,   522,  1000,   260,   661,   554,   922,    52,   299,  1193,
   158,   158,   995,   996,     6,    54,    16,   252,   769,   677,
   173,   598,    16,   466,    39,   563,   331,   158,   505,   746,
   525,   158,   611,    63,    64,   198,   612,   342,  1017,  1195,
   684,   685,   199,   977,   126,   364,   330,   173,  1004,    28,
    63,   176,   338,   560,   158,   371,   183,    40,   121,   965,
   192,   993,   379,   467,   172,   709,   165,   468,    41,   254,
   450,   545,   770,    52,   786,  1018,   461,   477,   374,   559,
    65,    52,   451,   561,   174,    66,    61,   654,   451,   262,
   108,   379,   740,   353,   588,    63,   176,   978,   755,  1232,
  1110,   240,   379,   141,   183,   240,   469,   372,   490,   312,
   546,   547,   593,   477,   411,   545,   477,   453,   577,   582,
   608,   309,   727,   240,  1234,    66,   354,   787,   756,   500,
   800,   548,   477,   407,   263,   477,   198,   407,  1112,   613,
   615,   195,   183,   199,  1255,   498,   208,   491,   492,   484,
   657,   793,   326,   797,   546,   547,   653,   326,   710,   499,
   627,  1040,   617,   693,   806,  1044,   811,    52,   688,   826,
   310,   733,   734,  1235,   471,   737,   189,   173,   477,    41,
   196,   197,   524,   198,   924,   849,   648,   183,   908,   656,
   199,   477,   924,  1256,   493,   391,   814,   700,   815,   158,
   158,   618,  -257,    41,   158,   823,   697,   -89,   711,   827,
   158,   788,     4,   118,  1177,    52,   649,   279,   741,   821,
  1178,   698,   481,   716,   650,   485,   723,   279,   -24,    11,
    12,   938,   345,   158,   158,  -292,    52,   346,   477,   369,
   370,     6,   477,   -24,   941,   332,   563,   477,   767,   477,
    16,   290,   291,   774,  -292,    19,  -292,  1237,   364,   851,
   106,   852,   169,   170,   855,   286,   119,   379,    10,   128,
    20,     4,   129,     6,     7,     8,     9,   794,   142,   798,
    21,    10,   371,   119,   333,   334,   301,  1130,    41,   303,
    14,   944,    22,    41,   658,   950,    13,    17,   304,   457,
   956,   587,   958,    14,    23,   903,   106,   570,  -292,    16,
    17,   314,   571,   768,    19,   477,    27,   364,   776,   364,
   477,   379,   336,   477,   366,   375,    11,    12,   305,    20,
   347,    23,   378,   659,   372,   387,   173,   477,   458,    21,
   477,   477,  1238,    52,    52,   332,   816,    52,  1134,  1239,
   477,    22,   443,   106,   395,   817,   594,   595,   477,   119,
   119,   119,   391,    23,   240,   953,   905,   906,   967,   954,
  1175,   957,  1176,   968,   119,    27,   970,   563,   471,    41,
   915,   916,   959,   960,   333,   334,   955,   684,   685,   523,
  1073,   119,   396,  1074,  1075,   119,   477,   962,   963,   662,
   969,  1135,   447,  1197,   195,   904,   972,   976,   832,    41,
   522,  1198,  1268,   477,     4,   118,   762,   763,   119,   465,
   158,   158,   470,   948,   951,   952,   474,   860,   332,   598,
   195,   563,   712,   771,   772,     4,   146,   717,   663,   525,
   476,   364,   373,   196,   197,   119,   198,   106,   490,  1210,
   478,   824,    16,   199,   479,   264,   158,    19,   664,   488,
   106,   158,   853,   310,  1131,  1269,   886,   333,   334,   196,
   197,   713,   665,    16,  1080,   555,   718,   374,    19,   147,
  1100,   119,   666,   780,   781,  1055,   106,   491,   492,   268,
   825,    41,   106,   148,   667,   270,   535,  1103,   108,   887,
   921,   854,    59,   149,    60,   589,    23,   723,   592,   930,
   150,   979,   980,  1081,  1154,   151,   353,   596,    27,  1101,
  1076,   591,   106,    61,   563,   549,   198,    23,  1163,   276,
   379,  1166,   597,   199,   928,   943,  1104,   152,   379,    27,
   601,    62,    11,    12,    52,   775,   373,   831,   609,   354,
   602,     4,   160,     6,   161,     8,   162,   975,   619,   714,
   620,    10,  1085,   119,   119,   143,   -79,  1013,   119,    60,
   144,   -79,   622,   994,   119,   997,    13,   198,  -106,   119,
   431,   432,   433,    14,   199,  1185,  1186,  1125,    61,    16,
    17,   524,   678,  1070,    19,   147,  1108,   119,   715,   165,
   364,  1041,  1042,   679,   375,   689,   375,   364,   364,   148,
   364,   976,   690,   987,    41,   158,   158,   992,   696,   149,
  1093,  1094,   106,   728,  1003,   886,   150,  1146,   691,   158,
   158,   151,   886,   886,   694,   886,  1049,  1050,   702,   353,
   264,   979,  1117,    23,    41,   979,  1120,  1162,   704,   158,
  1165,  1009,  1012,   163,   705,    27,   706,   266,   887,    52,
   979,  1214,  1069,   707,  1048,   887,   887,   267,   887,   353,
   390,   394,   354,   742,   268,  1173,  1079,  1174,   232,   269,
   270,   745,   168,   169,   170,   747,   753,  1183,   106,    10,
   754,  1184,  1085,   748,  1187,   761,   779,   364,   789,    11,
    12,   790,   354,   801,   802,   803,   805,   119,   119,    52,
    52,    14,   168,   169,   170,   807,   810,  1167,    17,    10,
   457,  1116,   886,   -82,   820,   812,  1085,  1085,   -82,  1090,
  1092,   822,   813,   833,   834,   106,   837,  1097,   232,   364,
   842,    14,   843,   364,   846,  1109,  1181,  1182,    17,   375,
  1113,   183,   173,  -105,  1229,   887,   374,   857,   374,   458,
   910,   975,  1138,   907,   886,   911,   158,   158,   886,   909,
   923,  1139,  1085,   931,   935,   981,   627,   627,   937,  1127,
   108,   939,    52,   940,   119,   119,   942,  1132,   985,   961,
    63,   176,   986,   177,   178,   179,   364,   887,   988,   989,
   990,   887,   999,  1001,  1005,   169,   170,   364,  1007,  1019,
   379,    10,    52,   363,    63,   176,  1039,   177,   178,   179,
  1045,   886,   180,  1052,  1062,  1147,  1257,  1258,  1071,  1085,
  1085,  1072,   886,    14,   925,   146,   181,   182,  1158,  1078,
    17,   373,   818,  1096,  1098,  -105,   180,  1099,  1273,  1106,
  1107,   276,     4,   118,   887,   455,  1111,  1128,  1133,   979,
   699,   182,  1136,  1142,  1143,   887,   364,  1144,  1151,   364,
  1153,   379,    16,  1152,  1155,   379,  1156,    19,   147,  1160,
   926,   819,   183,  1250,  1161,  1169,   927,   184,   185,   186,
    16,   886,   148,  1164,   886,    19,   429,   430,   431,   432,
   433,   374,   149,  1196,  1171,   364,   183,  1172,   119,   150,
    20,   184,   185,   186,   151,  1205,  1180,  1188,  1206,  1207,
    21,   528,   363,  1208,   887,  1209,    23,   887,  1218,   364,
   886,  1211,    22,  1212,  1219,  1220,  1226,  1224,    27,  1230,
  1233,   106,  1231,  1236,    23,  1241,  1240,   627,   627,  1259,
   363,  1242,   108,   375,   886,   373,    27,   264,  1243,  1246,
   265,    72,     6,   887,     8,   275,  1264,  1253,   569,  1254,
    10,  1266,  1263,  1267,   266,   327,  1271,  1244,  1272,   119,
   119,   287,    51,    51,   267,    13,  1275,   887,  1276,   504,
   844,   268,    14,   119,   119,    56,   269,   270,  -646,    17,
  -646,  -646,   288,   120,   363,   289,  -646,   850,   307,   701,
   284,   918,   134,   119,   623,   279,  1137,  1091,   337,  1010,
   550,   167,   494,  1179,  -646,  -646,   945,  -646,   232,  -646,
   106,   624,   625,   838,   629,   630,   631,   632,   633,   634,
   635,   636,   637,   638,   639,   640,   641,   642,   643,   644,
   645,   264,    23,   132,   133,   919,   757,   646,   363,   902,
   198,   106,  1034,   932,   583,   681,   836,   199,   266,   544,
   901,    55,    55,   119,   119,   363,  1119,  1245,   267,   328,
    72,     6,  1150,     8,    73,   268,  1247,   528,   464,    10,
   269,   270,    55,  1115,   683,     0,   280,   281,   282,   933,
     0,    55,   434,     0,    13,   374,     0,     0,    51,    55,
    55,    14,     0,     0,     0,     0,     0,     0,    17,     0,
   373,     0,   373,   169,   170,   651,     0,     0,   318,    10,
   119,     0,   120,   435,   436,     0,   363,   437,   438,   439,
   440,   441,   442,     0,   528,     4,   160,     6,   161,     8,
   162,    14,     0,     0,     0,    10,     0,     0,    17,   652,
  1140,     0,     0,   363,     0,     0,     0,     0,     0,     0,
    13,    23,     0,     0,   358,     0,     0,    14,     0,     0,
     0,     0,   383,    16,    17,    55,    55,    55,    19,   147,
     0,   765,   766,     0,   106,     0,     0,    55,     0,  1141,
    55,    55,     3,   148,     4,     5,     6,     7,     8,     9,
   169,   170,     0,   149,    10,     0,    10,    55,     0,     0,
   150,    55,   363,     0,   363,   151,     0,    11,    12,    13,
     0,     0,     0,     0,     0,   363,    14,    23,    14,   809,
    15,     0,    16,    17,    55,    17,    18,    19,     0,    27,
     0,     4,   146,     0,     0,     0,   279,     0,     0,     0,
     0,     0,    20,    55,     0,   373,     0,   363,    51,   363,
     0,    55,    21,     0,     0,     0,   363,     0,     0,     0,
   363,     0,     0,   434,    22,     0,   402,     0,     0,    16,
     0,     0,     0,     0,    19,   835,    23,    24,    25,     0,
   281,   282,     0,   116,   117,   120,    26,   454,    27,   148,
     0,     0,   106,   454,   435,   436,   383,     0,   437,   149,
   439,     0,   441,   442,     0,   194,   150,     0,     0,     0,
   363,   151,   363,     0,     0,   363,     0,   358,   856,     0,
     0,     0,   204,    23,     0,     0,     0,     0,  -646,     0,
  -646,  -646,     0,     0,     0,    27,  -646,    55,   350,   261,
     4,   129,     6,     7,     8,     9,     0,     0,   195,     0,
    10,     0,     0,     0,  -646,  -646,     0,  -646,   920,  -646,
   341,   169,   170,   106,     0,    13,     0,    10,     0,    55,
    55,     0,    14,  -374,    55,     0,     0,     0,    16,    17,
    55,     0,     0,    19,     0,    55,     0,   196,   197,    14,
   198,     0,   351,     0,     0,     0,    17,   199,    20,     0,
     0,     0,     0,    55,    55,   528,    55,   946,    21,  -646,
     0,   319,   320,     0,     0,     0,   363,   528,     0,     0,
    22,     0,   363,     0,   669,   669,     0,     0,   669,     0,
   528,   528,    23,     0,     0,     0,   339,     0,     0,     0,
     0,     0,   586,  -374,    27,     0,     0,     0,     0,   373,
     0,   363,     0,     0,   528,   528,     0,     0,   359,  -646,
     0,  -646,  -646,     0,   106,   384,     0,  -646,     0,     0,
    -2,     3,     0,     4,     5,     6,     7,     8,     9,   195,
     0,     0,     0,    10,     0,  -646,  -646,     0,  -646,     0,
  -646,     0,     0,     0,     0,     0,    11,    12,    13,     0,
     0,   281,   282,   454,     0,    14,     0,     0,     0,    15,
     0,    16,    17,    55,    55,    18,    19,    55,   196,   197,
     0,   198,     0,  1046,  1047,     0,     0,   480,   199,   482,
   483,    20,     0,   528,     0,     0,     0,   120,     0,     0,
  -257,    21,   120,   424,   425,   426,   427,   428,   429,   430,
   431,   432,   433,    22,   423,   424,   425,   426,   427,   428,
   429,   430,   431,   432,   433,    23,    24,    25,   528,     0,
  1077,     0,     0,     0,     0,    26,     3,    27,     4,     5,
     6,     7,     8,     9,   540,   541,   572,   146,    10,     0,
    55,    55,     0,     0,     0,   551,     0,     0,     0,     0,
     0,    11,    12,    13,     0,     0,     0,     0,     0,     0,
    14,     0,     0,     0,    15,     0,    16,    17,     0,     0,
    18,    19,     0,     0,    16,   828,    55,   573,   120,    19,
   147,    55,   574,     0,     0,   528,    20,     0,   575,     0,
     0,     0,  1129,     0,   148,     0,    21,   427,   428,   429,
   430,   431,   432,   433,   149,     0,     0,     0,    22,   528,
     0,   150,     0,     0,     0,     0,   576,     0,     0,     0,
    23,    24,    25,     0,     0,   528,     0,     0,    23,     0,
    26,   502,    27,     0,     0,     0,     0,     0,     0,     0,
    27,     0,     0,     0,     0,     0,   281,   282,   363,     0,
     0,   363,     0,     0,     0,     0,     0,     0,     0,    71,
   281,   282,    72,     6,    55,     8,    73,    55,     0,     0,
     0,    10,     0,   528,     0,   528,     0,     0,   672,     0,
     0,     0,     0,     0,     0,     0,    13,     0,   363,   528,
   358,     0,   528,    14,     0,    74,    75,     0,     0,     0,
    17,    76,    77,   692,     0,     4,   146,     0,     0,    78,
    79,    80,    81,     0,     0,    82,    83,    84,    85,    86,
    87,    88,    89,    90,    91,    92,    93,    94,    95,    96,
    97,    98,     0,    99,   100,    55,    55,   101,   102,     0,
   281,   282,   103,    16,     0,     0,     0,     0,    19,    55,
    55,     0,   528,    23,     0,   735,   736,     0,   738,     0,
     0,     0,     0,   148,     0,   104,   105,     0,     0,    55,
   749,   750,     0,   149,     0,     0,     0,     0,     0,    55,
   150,     0,     0,     0,     0,   151,   764,     0,     0,     0,
     0,     0,  -440,   773,  -440,  -440,     0,    23,  1014,     0,
  -440,     0,   782,   783,   784,     0,     0,     0,     0,    27,
     0,     0,     0,   358,    60,     0,     0,   791,  -440,   795,
     0,  -440,   799,     0,     0,     0,     0,     0,     0,    55,
    55,     0,     0,    61,     0,   350,     0,     4,   129,     6,
     7,     8,     9,   358,     0,     0,     0,    10,     0,     0,
     4,   118,  -440,     0,  -440,   279,     0,     0,     0,     0,
     0,  -440,    13,     0,     0,     0,     0,     0,     0,    14,
  -375,     0,     0,     0,  -440,    16,    17,     0,   829,   830,
    19,     0,     0,     0,     0,     0,    55,    55,    16,   351,
     0,   264,     0,    19,     0,    20,     0,     0,     0,   839,
   840,     0,    55,   841,     0,    21,     0,     0,   665,     0,
     0,     0,     0,     0,     0,     0,     0,    22,   666,     0,
     0,     0,     0,     0,     0,   268,     0,     0,     0,    23,
   667,   270,    55,     0,     0,     0,     0,     0,     0,   586,
  -375,    27,    23,     0,     0,     0,     0,     0,     0,     0,
     0,     0,     0,     0,    27,     0,     0,     0,   912,   913,
   914,     0,  1020,     0,  -580,  -580,  -580,  -580,  -580,  -580,
  -580,  -580,     0,  -580,  -580,  -580,  -580,  -580,  -580,  -580,
  -580,  -580,  -580,  -580,  -580,  -580,  -580,  -580,  -580,  -580,
  -580,  -580,  -580,     0,  -580,     0,  -580,     0,  -580,  -580,
     0,  -580,  -580,  -580,     4,   118,     0,  -580,     0,     0,
  -580,  -580,     0,     0,     0,     0,     0,     0,     0,  -580,
     4,   146,  -580,     0,     0,     0,     0,     0,     0,     0,
  -580,  -580,  -580,     4,   381,     0,  -580,  -580,     0,     4,
   146,     0,    16,     0,  -580,   264,  -580,    19,  1021,  -580,
  1022,     0,  -580,  -580,  -580,   964,  -580,     0,    16,     0,
     0,     0,   665,    19,   147,     0,  -580,  -580,  -580,  -580,
     0,    16,   666,     0,     0,     0,    19,    16,   148,   268,
     0,     0,    19,   147,   667,   270,     0,     0,   149,     0,
     0,    20,     0,     0,     0,   150,    23,   148,     0,     0,
   151,    21,     0,     0,     0,     0,     0,   149,    27,     0,
     0,     0,    23,    22,   150,     0,     0,     0,     0,   151,
  1035,  1036,  1037,     0,    27,   382,     0,     0,     0,     0,
     0,    23,     0,     0,     0,     0,  1043,    27,     0,     0,
     0,  1008,     0,    27,  1051,     0,     0,     0,     0,     0,
  1056,  1057,  1058,  1059,  1060,  1061,  1015,     0,   863,   129,
     6,     7,     8,   361,   207,   208,     0,   209,    10,   864,
     0,   865,   866,   867,   868,   869,   870,   871,   872,   873,
   874,    11,    12,    13,   210,   211,   212,     0,   213,     0,
    14,     0,   214,  -240,     0,   215,    16,    17,     0,     0,
     0,   216,     0,     0,   875,   310,     0,     0,     0,     0,
     0,    72,     6,   217,     8,    73,   218,     0,     0,     0,
    10,     0,     0,     0,   219,   220,   221,     0,     0,     0,
   222,   223,     0,     0,     0,    13,     0,     0,   224,     0,
   876,     0,    14,   877,     0,     0,   878,   879,   880,    17,
   881,     0,     0,     0,     0,     0,     0,     0,     0,     0,
   882,  1016,   225,   226,  1025,     0,   863,   129,     6,     7,
     8,   361,   207,   208,     0,   209,    10,   864,     0,   865,
   866,   867,   868,   869,   870,   871,   872,   873,   874,    11,
    12,    13,   210,   211,   212,     0,   213,     0,    14,     0,
   214,  -240,    23,   215,    16,    17,     0,     0,     0,   216,
     0,     0,   875,   310,     0,     0,     0,     0,     0,     0,
     0,   217,     0,     0,   218,     0,     0,     0,     0,     0,
     0,     0,   219,   220,   221,     0,     0,     0,   222,   223,
     0,     0,     0,     0,     0,     0,   224,     0,   876,     0,
     0,   877,     0,     0,   878,   879,   880,     0,   881,     0,
     0,     0,     0,     0,     0,     0,     0,     0,   882,  1026,
   225,   226,  1029,     0,   863,   129,     6,     7,     8,   361,
   207,   208,     0,   209,    10,   864,     0,   865,   866,   867,
   868,   869,   870,   871,   872,   873,   874,    11,    12,    13,
   210,   211,   212,     0,   213,     0,    14,     0,   214,  -240,
     0,   215,    16,    17,     0,     0,     0,   216,     0,     0,
   875,   310,     0,     0,     0,     0,     0,     0,     0,   217,
     0,     0,   218,     0,     0,     0,     0,     0,     0,     0,
   219,   220,   221,     0,     0,     0,   222,   223,     0,     0,
     0,     0,     0,     0,   224,     0,   876,     0,     0,   877,
     0,     0,   878,   879,   880,     0,   881,     0,     0,     0,
     0,     0,     0,     0,     0,     0,   882,  1030,   225,   226,
  1015,     0,   863,   129,     6,     7,     8,   361,   207,   208,
     0,   209,    10,   864,     0,   865,   866,   867,   868,   869,
   870,   871,   872,   873,   874,    11,    12,    13,   210,   211,
   212,     0,   213,     0,    14,     0,   214,  -240,     0,   215,
    16,    17,     0,     0,     0,   216,     0,     0,   875,   310,
     0,     0,     0,     0,     0,     0,     0,   217,     0,     0,
   218,     0,     0,     0,     0,     0,     0,     0,   219,   220,
   221,     0,     0,     0,   222,   223,     0,     0,     0,     0,
     0,     0,   224,     0,   876,     0,     0,   877,     0,     0,
   878,   879,   880,     0,   881,     0,     0,     0,     0,     0,
     0,     0,     0,     0,   882,  1118,   225,   226,  1015,     0,
   863,   129,     6,     7,     8,   361,   207,   208,     0,   209,
    10,   864,     0,   865,   866,   867,   868,   869,   870,   871,
   872,   873,   874,    11,    12,    13,   210,   211,   212,     0,
   213,     0,    14,     0,   214,  -240,     0,   215,    16,    17,
     0,     0,     0,   216,     0,     0,   875,   310,     0,     0,
     0,     0,     0,     0,     0,   217,     0,     0,   218,     0,
     0,     0,     0,     0,     0,     0,   219,   220,   221,     0,
     0,     0,   222,   223,     0,     0,     0,     0,     0,     0,
   224,     0,   876,     0,     0,   877,     0,     0,   878,   879,
   880,     0,   881,     0,     0,     0,     0,     0,     0,     0,
     0,     0,   882,  1121,   225,   226,  1015,     0,   863,   129,
     6,     7,     8,   361,   207,   208,     0,   209,    10,   864,
     0,   865,   866,   867,   868,   869,   870,   871,   872,   873,
   874,    11,    12,    13,   210,   211,   212,     0,   213,     0,
    14,     0,   214,  -240,     0,   215,    16,    17,     0,     0,
     0,   216,     0,     0,   875,   310,     0,     0,     0,     0,
     0,     0,     0,   217,     0,     0,   218,     0,     0,     0,
     0,     0,     0,     0,   219,   220,   221,     0,     0,     0,
   222,   223,     0,     0,     0,     0,     0,     0,   224,     0,
   876,     0,     0,   877,     0,     0,   878,   879,   880,     0,
   881,     0,     0,     0,     0,     0,     0,     0,     0,     0,
   882,  1215,   225,   226,   862,     0,   863,   129,     6,     7,
     8,   361,   207,   208,     0,   209,    10,   864,     0,   865,
   866,   867,   868,   869,   870,   871,   872,   873,   874,    11,
    12,    13,   210,   211,   212,     0,   213,     0,    14,     0,
   214,  -240,     0,   215,    16,    17,     0,     0,     0,   216,
     0,     0,   875,   310,     0,     0,     0,     0,     0,     0,
     0,   217,     0,     0,   218,     0,     0,     0,     0,     0,
     0,     0,   219,   220,   221,     0,     0,     0,   222,   223,
     0,     0,     0,     0,     0,     0,   224,     0,   876,     0,
     0,   877,     0,     0,   878,   879,   880,     0,   881,     0,
     0,     0,     0,     0,     0,     0,     0,     0,   882,     0,
   225,   226,  1192,     0,   863,   129,     6,     7,     8,   361,
   207,   208,     0,   209,    10,   864,     0,   865,   866,   867,
   868,   869,   870,   871,   872,   873,   874,    11,    12,    13,
   210,   211,   212,     0,   213,     0,    14,     0,   214,  -240,
     0,   215,    16,    17,     0,     0,     0,   216,     0,     0,
   875,   310,     0,     0,     0,     0,     0,    72,     6,   217,
     8,    73,   218,     0,     0,     0,    10,     0,     0,     0,
   219,   220,   221,     0,     0,     0,   222,   223,     0,     0,
     0,    13,     0,     0,   224,     0,   876,     0,    14,   877,
     0,     0,   878,   879,   880,    17,   881,     0,     0,     0,
     0,     0,  1067,     0,     0,     0,   882,     0,   225,   226,
   360,     0,   205,   129,     6,     7,     8,   361,   207,   208,
   245,   209,    10,   421,   422,   423,   424,   425,   426,   427,
   428,   429,   430,   431,   432,   433,  1068,    13,   210,   211,
   212,     0,   213,     0,    14,     0,   214,  -240,    23,   215,
    16,    17,     0,     0,     0,   216,     0,     0,     0,     0,
     0,     0,    72,     6,   161,     8,   162,   217,     0,     0,
   218,    10,     0,     0,     0,     0,     4,   118,   219,   220,
   221,     0,     0,     0,   222,   223,    13,     0,     0,     0,
     0,     0,   224,    14,     0,     0,     0,     0,     0,     0,
    17,     0,     0,   246,    23,     0,     0,     0,     0,     0,
     0,     0,     0,  -624,    16,     0,   225,   226,   552,    19,
   205,   129,     6,     7,     8,   361,   207,   208,   245,   209,
    10,     0,     0,     0,   321,     0,     0,     0,     0,     0,
     0,     0,     0,     0,   322,    13,   210,   211,   212,     0,
   213,   323,    14,    23,   214,  -240,   324,   215,    16,    17,
     0,     0,     0,   216,     0,     0,     0,     0,    23,     0,
    72,     6,     7,     8,     9,   217,     0,     0,   218,    10,
    27,     0,     0,     0,     4,   118,   219,   220,   221,     0,
     0,     0,   222,   223,    13,     0,     0,     0,     0,     0,
   224,    14,     0,     0,     0,     0,     0,     0,    17,     0,
     0,   246,    23,     0,     0,     0,     0,     0,     0,     0,
     0,  -624,    16,     0,   225,   226,   739,    19,   205,   129,
     6,     7,     8,   361,   207,   208,   245,   209,    10,     0,
     0,     0,   542,     0,     0,     0,     0,     0,     0,     0,
     0,     0,   543,    13,   210,   211,   212,     0,   213,   323,
    14,    23,   214,  -240,   324,   215,    16,    17,     0,     0,
     0,   216,     0,     0,     0,     0,    23,     0,     0,     0,
     0,     0,     0,   217,     0,     0,   218,     0,    27,     0,
     0,     0,     4,   381,   219,   220,   221,     0,     0,     0,
   222,   223,     0,     0,     0,     0,     0,     0,   224,     0,
     0,     0,     0,     0,     0,     0,     0,     0,     0,   246,
    23,     0,     0,     0,     0,     0,     0,     0,     0,  -624,
    16,     0,   225,   226,   792,    19,   205,   129,     6,     7,
     8,   361,   207,   208,   245,   209,    10,     0,     0,     0,
   557,     0,     0,     0,     0,     0,     0,     0,     0,     0,
   558,    13,   210,   211,   212,     0,   213,     0,    14,     0,
   214,  -240,    22,   215,    16,    17,     0,     0,     0,   216,
     0,     0,     0,     0,   382,     0,     0,     0,     0,     0,
     0,   217,     0,     0,   218,     0,    27,     0,     0,     0,
     0,     0,   219,   220,   221,     0,     0,     0,   222,   223,
     0,     0,     0,     0,     0,     0,   224,     0,     0,     0,
     0,     0,     0,     0,     0,     0,     0,   246,    23,     0,
     0,     0,     0,     0,     0,     0,     0,  -624,     0,     0,
   225,   226,   796,     0,   205,   129,     6,     7,     8,   361,
   207,   208,   245,   209,    10,   420,   421,   422,   423,   424,
   425,   426,   427,   428,   429,   430,   431,   432,   433,    13,
   210,   211,   212,     0,   213,     0,    14,     0,   214,  -240,
     0,   215,    16,    17,     0,     0,     0,   216,     0,     0,
     0,     0,     0,     0,     0,     0,     0,     0,     0,   217,
     0,     0,   218,     0,     0,     0,     0,     0,     0,     0,
   219,   220,   221,     0,     0,     0,   222,   223,     0,     0,
     0,     0,     0,     0,   224,     0,     0,     0,     0,     0,
     0,     0,     0,     0,     0,   246,    23,     0,     0,     0,
     0,     0,     0,     0,     0,  -624,     0,     0,   225,   226,
   526,     0,   719,   720,     6,     0,     8,   388,   207,   208,
     0,   209,    10,   422,   423,   424,   425,   426,   427,   428,
   429,   430,   431,   432,   433,     0,     0,    13,   210,   211,
   212,     0,   213,     0,    14,     0,   214,  -240,     0,   215,
    16,    17,     0,     0,     0,   216,     0,     0,     0,   527,
     0,     0,     0,     0,     0,     0,     0,   217,     0,     0,
   218,     0,     0,     0,     0,     0,     0,     0,   219,   220,
   221,     0,     0,     0,   222,   223,     0,     0,     0,     0,
     0,     0,   224,   721,   526,     0,   719,   720,     6,     0,
     8,   388,   207,   208,   183,   209,    10,     0,     0,     0,
     0,     0,     0,   973,     0,   722,   225,   226,     0,     0,
     0,    13,   210,   211,   212,     0,   213,     0,    14,     0,
   214,  -240,     0,   215,    16,    17,     0,     0,     0,   216,
     0,     0,     0,   527,     0,     0,     0,     0,     0,     0,
     0,   217,     0,     0,   218,     0,     0,     0,     0,     0,
     0,     0,   219,   220,   221,     0,     0,     0,   222,   223,
     0,     0,     0,     0,     0,  1087,   224,   205,   129,     6,
     7,     8,   361,   207,   208,     0,   209,    10,   183,     0,
     0,     0,     0,     0,     0,     0,     0,     0,     0,   974,
   225,   226,    13,   210,   211,   212,     0,   213,     0,    14,
     0,   214,  -240,     0,   215,    16,    17,     0,     0,     0,
   216,     0,     0,     0,  1088,     0,     0,     0,     0,     0,
     0,     0,   217,     0,     0,   218,     0,     0,     0,     0,
     0,     0,     0,   219,   220,   221,     0,     0,     0,   222,
   223,     0,     0,     0,     0,     0,   526,   224,   719,   720,
     6,     0,     8,   388,   207,   208,     0,   209,    10,    23,
     0,     0,     0,     0,     0,   973,     0,     0,     0,  1089,
     0,   225,   226,    13,   210,   211,   212,     0,   213,     0,
    14,     0,   214,  -240,     0,   215,    16,    17,     0,     0,
     0,   216,     0,     0,     0,   527,     0,     0,     0,     0,
     0,     0,     0,   217,     0,     0,   218,     0,     0,     0,
     0,     0,     0,     0,   219,   220,   221,     0,     0,     0,
   222,   223,     0,     0,     0,     0,     0,   526,   224,   719,
   720,     6,     0,     8,   388,   207,   208,     0,   209,    10,
   183,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     0,  -333,   225,   226,    13,   210,   211,   212,     0,   213,
     0,    14,     0,   214,  -240,     0,   215,    16,    17,     0,
     0,     0,   216,     0,     0,     0,   527,     0,     0,     0,
     0,     0,     0,     0,   217,     0,     0,   218,     0,     0,
     0,     0,     0,     0,     0,   219,   220,   221,     0,     0,
     0,   222,   223,     0,     0,     0,     0,     0,     0,   224,
   721,   406,     0,   205,   129,     6,     0,     8,   206,   207,
   208,   183,   209,    10,     0,     0,     0,     0,     0,     0,
     0,     0,     0,   225,   226,     0,     0,     0,    13,   210,
   211,   212,     0,   213,     0,    14,     0,   214,  -240,     0,
   215,    16,    17,     0,     0,     0,   216,     0,     0,     0,
  -211,     0,     0,     0,     0,     0,     0,     0,   217,     0,
     0,   218,     0,     0,     0,     0,     0,     0,     0,   219,
   220,   221,     0,     0,     0,   222,   223,     0,     0,     0,
     0,     0,   526,   224,   205,   129,     6,     0,     8,   388,
   207,   208,     0,   209,    10,    23,     0,     0,     0,     0,
     0,     0,     0,     0,     0,     0,     0,   225,   226,    13,
   210,   211,   212,     0,   213,     0,    14,     0,   214,  -240,
     0,   215,    16,    17,     0,     0,     0,   216,     0,     0,
     0,   527,     0,     0,     0,     0,     0,     0,     0,   217,
     0,     0,   218,     0,     0,     0,     0,     0,     0,     0,
   219,   220,   221,     0,     0,     0,   222,   223,     0,     0,
     0,     0,     0,   626,   224,   205,   129,     6,     0,     8,
   388,   207,   208,     0,   209,    10,    23,     0,     0,     0,
     0,     0,     0,     0,     0,     0,     0,     0,   225,   226,
    13,   210,   211,   212,     0,   213,     0,    14,     0,   214,
  -240,     0,   215,    16,    17,     0,     0,     0,   216,     0,
     0,     0,     0,     0,     0,     0,     0,  -614,     0,     0,
   217,     0,     0,   218,     0,     0,     0,     0,     0,     0,
     0,   219,   220,   221,     0,     0,     0,   222,   223,     0,
     0,     0,     0,     0,   626,   224,   205,   129,     6,     0,
     8,   388,   207,   208,     0,   209,    10,    23,     0,     0,
     0,     0,     0,     0,     0,     0,     0,     0,     0,   225,
   226,    13,   210,   211,   212,     0,   213,     0,    14,     0,
   214,  -240,     0,   215,    16,    17,     0,     0,     0,   216,
     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     0,   217,     0,     0,   218,     0,     0,     0,     0,     0,
     0,     0,   219,   220,   221,     0,     0,     0,   222,   223,
     0,     0,     0,     0,     0,   626,   224,   205,   129,     6,
     0,     8,   388,   207,   208,     0,   209,    10,    23,     0,
     0,     0,     0,     0,     0,     0,     0,     0,  -614,     0,
   225,   226,    13,   210,   211,   212,     0,   213,     0,    14,
     0,   214,  -240,     0,   215,    16,    17,     0,     0,     0,
   216,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     0,     0,   217,     0,     0,   218,     0,     0,     0,     0,
     0,     0,     0,   219,   220,   221,     0,     0,     0,   222,
   223,     0,     0,     0,     0,     0,   682,   224,   205,   129,
     6,     0,     8,   388,   207,   208,     0,   209,    10,    23,
     0,     0,     0,     0,     0,     0,     0,     0,  -614,     0,
     0,   225,   226,    13,   210,   211,   212,     0,   213,     0,
    14,     0,   214,  -240,     0,   215,    16,    17,     0,     0,
     0,   216,     0,     0,     0,     0,     0,     0,     0,     0,
     0,     0,     0,   217,     0,     0,   218,     0,     0,     0,
     0,     0,     0,     0,   219,   220,   221,     0,     0,     0,
   222,   223,     0,     0,     0,     0,     0,     0,   224,   205,
   129,     6,     0,     8,   388,   207,   208,     0,   209,    10,
    23,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     0,     0,   225,   226,    13,   210,   211,   212,     0,   213,
     0,    14,     0,   214,     0,     0,   215,    16,    17,     0,
     0,   350,   216,     4,   129,     6,     7,     8,     9,     0,
     0,     0,     0,    10,   217,     0,     0,   218,     0,     0,
     0,     0,     0,     0,     0,   219,   220,   221,    13,     0,
     0,   222,   223,     0,     0,    14,  -373,     0,     0,   224,
     0,    16,    17,     0,     0,     0,    19,     0,     0,     0,
     0,    23,     0,     0,     0,   351,     0,     0,     0,     0,
     0,    20,     0,   225,   226,   655,     0,     0,     0,     0,
   350,    21,     4,   129,     6,     7,     8,     9,     0,     0,
     0,     0,    10,    22,     0,     0,     3,     0,     4,     5,
     6,     7,     8,     9,     0,    23,     0,    13,    10,     0,
     0,     0,     0,     0,    14,  -376,  -373,    27,     0,     0,
    16,    17,     0,    13,     0,    19,     0,     0,     0,     0,
    14,     0,     0,     0,   351,     0,    16,    17,     0,     0,
    20,    19,     0,     0,     0,     0,     0,     0,     0,     0,
    21,     0,     0,     0,     0,     0,    20,     0,     0,     0,
     0,     0,    22,     0,     0,     0,    21,     0,     0,     0,
     0,     0,     0,     0,    23,     0,     0,     0,    22,     0,
     0,     0,     0,     0,     0,  -376,    27,     0,     0,     0,
    23,    24,     0,     0,     0,     0,     0,     0,     0,     0,
    26,     0,    27,   863,   129,     6,     7,     8,   361,   207,
   208,     0,   209,    10,   864,     0,   865,   866,   867,   868,
   869,   870,   871,   872,   873,   874,    11,    12,    13,   210,
   211,   212,     0,   213,     0,    14,     0,   214,     0,     0,
   215,    16,    17,     0,     0,     0,   216,     0,     0,   875,
   310,     0,     0,     0,     0,     0,     0,     0,   217,     0,
     0,   218,     0,     0,     0,     0,     0,     0,     0,   219,
   220,   221,     0,     0,     0,   222,   223,     0,     0,     0,
     0,     0,     0,   224,     0,   876,     0,     0,   877,     0,
     0,   878,   879,   880,     0,   881,     0,     0,     0,     0,
     0,     0,     0,     0,     0,   882,  1023,   225,   226,   863,
   129,     6,     7,     8,   361,   207,   208,     0,   209,    10,
   864,     0,   865,   866,   867,   868,   869,   870,   871,   872,
   873,   874,    11,    12,    13,   210,   211,   212,     0,   213,
     0,    14,     0,   214,     0,     0,   215,    16,    17,     0,
     0,     0,   216,     0,     0,   875,   310,     0,     0,     0,
     0,     0,     0,     0,   217,     0,     0,   218,     0,     0,
     0,     0,     0,     0,     0,   219,   220,   221,     0,     0,
     0,   222,   223,     0,     0,     0,     0,     0,     0,   224,
     0,   876,     0,     0,   877,     0,     0,   878,   879,   880,
     0,   881,     0,     0,     0,     0,     0,     0,     0,     0,
     0,   882,     0,   225,   226,   863,   129,     6,     7,     8,
   361,   207,   208,     0,   209,    10,   864,     0,   865,   866,
   867,   868,   869,   870,   871,   872,   873,   874,    11,    12,
    13,   210,   211,   212,     0,   213,     0,    14,     0,   214,
     0,     0,   215,    16,    17,     0,     0,     0,   216,     0,
     0,   875,     0,     0,     0,     0,     0,     0,     0,     0,
   217,     0,     0,   218,     0,     0,     0,     0,     0,     0,
     0,   219,   220,   221,     0,     0,     0,   222,   223,     0,
     0,     0,     0,     0,     0,   224,     0,   876,     0,     0,
   877,     0,     0,   878,   879,   880,     0,   881,     0,     0,
     0,     0,     0,     0,     0,     0,     0,   882,     0,   225,
   226,   205,   129,     6,     0,     8,   388,   207,   208,     0,
   209,    10,    72,     6,     7,     8,     9,     0,     0,   245,
     0,    10,     0,     0,     0,     0,    13,   210,   211,   212,
     0,   213,     0,    14,     0,   214,    13,     0,   215,    16,
    17,     0,     0,    14,   216,   398,    72,     6,     0,     8,
    17,     0,     0,     0,     0,    10,   217,     0,     0,   218,
     0,     0,     0,     0,     0,     0,     0,   219,   220,   221,
    13,     0,     0,   222,   223,     0,     0,    14,     0,   214,
     0,   224,   445,    16,    17,   205,   129,     6,   399,     8,
   388,   207,   208,    23,   209,    10,     0,     0,     0,     0,
     0,     0,   246,    23,     0,   225,   226,     0,     0,     0,
    13,   210,   211,   212,     0,   213,     0,    14,     0,   214,
     0,     0,   215,    16,    17,     0,     0,     0,   216,     0,
     0,     0,   808,     0,     0,     0,     0,    23,     0,     0,
   217,     0,     0,   218,     0,     0,     0,     0,     0,     0,
     0,   219,   220,   221,     0,     0,     0,   222,   223,     0,
     0,     0,     0,     0,     0,   224,   205,   129,     6,     0,
     8,   388,   207,   208,     0,   209,    10,    23,     0,     0,
     0,     0,     0,     0,     0,     0,     0,     0,     0,   225,
   226,    13,   210,   211,   212,     0,   213,     0,    14,     0,
   214,     0,     0,   215,    16,    17,     0,     0,     0,   216,
     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     0,   217,     0,     0,   218,     0,     0,     0,     0,     0,
     0,     0,   219,   220,   221,     0,     0,     0,   222,   223,
     0,     0,     0,     0,     0,     0,   224,   205,   129,     6,
     0,     8,   388,   207,   208,     0,   209,    10,    23,     0,
     0,     0,     0,     0,     0,     0,     0,     0,   991,     0,
   225,   226,    13,   210,   211,   212,     0,   213,     0,    14,
     0,   214,     0,     0,   215,    16,    17,     0,     0,     0,
   216,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     0,     0,   217,     0,     0,   218,     0,     0,     0,     0,
     0,     0,     0,   219,   220,   221,     0,     0,     0,   222,
   223,     0,     0,     0,     0,     0,     0,   224,   205,   129,
     6,     0,     8,   206,   207,   208,     0,   209,    10,    23,
     0,     0,     0,     0,     0,     0,     0,     0,     0,  1002,
     0,   225,   226,    13,   210,   211,   212,     0,   213,     0,
    14,     0,   214,     0,     0,   215,    16,    17,     0,     0,
     0,   216,     0,     0,     0,     0,     0,     0,     0,     0,
     0,     0,     0,   217,     0,     0,   218,     0,     0,     0,
     0,     0,     0,     0,   219,   220,   221,     0,     0,     0,
   222,   223,     0,     0,     0,     0,     0,     0,   224,   205,
   129,     6,     0,     8,   388,   207,   208,     0,   209,    10,
    23,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     0,     0,   225,   226,    13,   210,   211,   212,     0,   213,
     0,    14,     0,   214,     0,     0,   215,    16,    17,     0,
     0,     0,   216,     0,     0,     0,     0,     0,     0,     0,
     0,     0,     0,     0,   217,     0,     0,   218,     0,     0,
     0,     0,     0,     0,     0,   219,   220,   221,     0,     0,
     0,   222,   223,     0,     0,     0,     0,     0,     0,   224,
   205,   614,     6,     0,     8,   388,   207,   208,     0,   209,
    10,    23,     0,     0,     0,     0,     0,     0,     0,     0,
     0,     0,     0,   225,   226,    13,   210,   211,   212,     0,
   213,     0,    14,     0,   214,     0,     0,   215,    16,    17,
     0,     0,     0,   216,   205,   129,     6,     0,     8,   388,
   207,   208,     0,   209,    10,   217,     0,     0,   218,     0,
     0,     0,     0,     0,     0,     0,   219,   220,   221,    13,
   210,     0,   222,   223,   213,     0,    14,     0,   214,     0,
   224,   215,    16,    17,     0,     0,     0,   216,     0,     0,
     0,     0,    23,     0,     0,     0,     0,     0,     0,   217,
     0,     0,   218,     0,   225,   226,     0,     0,     0,     0,
   219,   220,   221,     0,     0,     0,   222,   223,     0,     0,
     0,   205,   129,     6,   389,     8,   388,   207,   208,     0,
   209,    10,     0,     0,     0,     0,    23,     0,     0,     0,
     0,     0,     0,     0,     0,     0,    13,   210,   225,   226,
     0,   213,     0,    14,     0,   214,     0,     0,   215,    16,
    17,     0,     0,     0,   216,   572,   160,     6,   161,     8,
   162,     0,     0,     0,     0,    10,   217,     0,     0,   218,
     0,     0,     0,     0,     0,     0,     0,   219,   220,   221,
    13,     0,     0,   222,   223,     0,     0,    14,     0,     0,
     0,   393,     0,    16,    17,     0,   580,     0,    19,   147,
     0,   574,     0,    23,     0,     0,     0,   575,     0,     0,
     0,     0,     0,   148,     0,   225,   226,     4,   129,     6,
     7,     8,     9,   149,     0,   673,     0,    10,     0,     0,
   150,     0,     0,     0,     0,   581,     0,     0,     0,     0,
     0,     0,    13,     0,     0,     0,     0,    23,     0,    14,
     0,     0,     0,     0,     0,    16,    17,     0,   264,    27,
    19,   664,     4,   129,     6,     7,     8,     9,     0,     0,
   245,     0,    10,     0,     0,   665,     0,     0,     0,     0,
     0,     0,     0,     0,     0,   666,     0,    13,     0,     0,
     0,     0,   268,     0,    14,     0,     0,   667,   270,     0,
    16,    17,     0,   264,     0,    19,     0,     0,     0,    23,
     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
   665,    27,     0,     0,     4,   129,     6,     7,     8,     9,
   666,     0,   245,     0,    10,     0,     0,   268,     0,     0,
     0,     0,   667,   270,     0,     0,     0,     0,     0,    13,
     0,     0,     0,   246,    23,     0,    14,     0,     0,     0,
     0,     0,    16,    17,     0,     0,    27,    19,     4,   160,
     6,   161,     8,   162,     0,     0,     0,     0,    10,     0,
     0,     0,   321,     0,     0,     0,     0,     0,     0,     0,
     0,     0,   322,    13,   129,     6,     7,     8,     9,   323,
    14,   245,     0,    10,   324,     0,    16,    17,     0,     0,
     0,    19,   147,     0,     0,   246,    23,     0,    13,     0,
     0,     0,     0,     0,     0,    14,   148,     0,    27,     0,
     0,     0,    17,     0,   264,     0,   149,     0,    72,     6,
     0,     8,   275,   150,     0,     0,     0,    10,   151,     0,
     0,   266,     0,     0,     0,     0,     0,     0,     0,     0,
    23,   267,    13,     0,     0,     0,     0,     0,   268,    14,
  1011,     0,    27,   269,   270,     0,    17,     0,   264,     0,
     0,   265,     0,     0,   246,    23,     0,     0,     0,     0,
     0,     0,     0,     0,     0,   266,     0,     0,     0,     0,
     0,     0,     0,     0,     0,   267,     0,     0,     0,     0,
     0,     0,   268,     0,     0,     0,     0,   269,   270,     0,
     0,     0,     0,     0,     0,   414,   415,   416,     0,    23,
   417,   418,   419,   420,   421,   422,   423,   424,   425,   426,
   427,   428,   429,   430,   431,   432,   433,   414,   415,   416,
     0,     0,   417,   418,   419,   420,   421,   422,   423,   424,
   425,   426,   427,   428,   429,   430,   431,   432,   433,     0,
     0,     0,     0,     0,     0,     0,     0,   602,     0,     0,
     0,     0,   971,     0,     0,     0,     0,     0,     0,     0,
     0,     0,     0,     0,     0,     0,     0,   414,   415,   416,
   759,   760,   417,   418,   419,   420,   421,   422,   423,   424,
   425,   426,   427,   428,   429,   430,   431,   432,   433,  -142,
   414,   415,   416,     0,     0,   417,   418,   419,   420,   421,
   422,   423,   424,   425,   426,   427,   428,   429,   430,   431,
   432,   433,   414,   415,   416,  1145,     0,   417,   418,   419,
   420,   421,   422,   423,   424,   425,   426,   427,   428,   429,
   430,   431,   432,   433,   414,   415,   416,     0,     0,   417,
   418,   419,   420,   421,   422,   423,   424,   425,   426,   427,
   428,   429,   430,   431,   432,   433,   414,   415,   416,     0,
     0,   417,   418,   419,   420,   421,   422,   423,   424,   425,
     0,   427,   428,   429,   430,   431,   432,   433,   416,     0,
     0,   417,   418,   419,   420,   421,   422,   423,   424,   425,
   426,   427,   428,   429,   430,   431,   432,   433,   418,   419,
   420,   421,   422,   423,   424,   425,   426,   427,   428,   429,
   430,   431,   432,   433,   419,   420,   421,   422,   423,   424,
   425,   426,   427,   428,   429,   430,   431,   432,   433
};

static const short yycheck[] = {    10,
    16,    68,   270,     1,     2,   107,   300,   139,   140,    16,
    40,   597,   112,    45,    41,   356,   278,   151,    16,     1,
     2,   140,   243,   888,    62,   125,   310,   983,     1,     2,
   278,    41,   196,    31,    45,   329,  1032,  1033,   216,   209,
   210,   896,    40,   898,   138,   708,   947,   516,   218,    51,
   191,   221,    19,     1,     2,   225,    10,    10,    31,   229,
   888,     1,     2,    61,    62,   235,   334,   895,   147,    46,
    68,   568,   218,    10,    10,   221,    10,    36,    46,   225,
   549,   108,    44,   229,     0,    24,     3,     4,    65,   235,
    37,    31,    44,    24,    39,    40,    46,    65,    83,    46,
  1114,    55,    68,   105,   106,     3,     4,     5,    35,    50,
    61,   109,     5,   265,    55,    65,    55,   269,     3,    50,
    71,    83,    53,   121,    55,     3,     4,   464,   105,   127,
   467,    83,    84,   131,  1148,  1149,   104,   239,   165,    51,
   242,   305,    51,   304,   171,   127,    65,   106,    46,    51,
   104,   104,   104,    46,   127,   165,    83,   224,   196,    36,
   134,   171,  1027,  1064,   105,   203,  1031,   104,   104,   333,
   104,     1,     2,   314,   105,   307,   308,   309,    95,   153,
  1194,     3,     4,     5,   847,   130,   131,   127,   307,   308,
   324,   158,    22,   167,   106,   193,   105,    95,   196,  1027,
    98,    31,   699,  1031,   106,   203,   217,  1203,  1204,    39,
    40,   505,   306,   240,    55,    65,   198,    95,   216,   467,
   193,   399,    44,   387,   492,    51,   224,   397,    51,   106,
   204,    50,   453,    44,   703,  1191,    55,  1251,  1252,    51,
   319,   320,   253,    50,   242,    51,   273,     8,    55,   276,
   248,   397,   200,   193,     3,     4,   105,   106,   224,    83,
    66,    83,    51,   273,   105,   559,    51,  1095,     3,     4,
   302,   269,    83,    95,     3,     4,   408,   441,   104,   547,
   278,   104,   751,     3,     4,   115,   116,   117,    51,   287,
   876,   302,   878,   105,   458,   333,   765,   127,   105,  1154,
   130,   131,     3,     4,     5,   287,    41,   106,    51,   470,
   337,   378,    41,    11,   287,   347,   105,   147,   292,   104,
   302,   151,   389,     3,     4,    86,   393,   337,  1193,  1157,
   482,   483,    93,    51,    50,   333,    51,   364,    55,   287,
     3,     4,   105,     6,   174,    46,    95,   287,    65,   846,
    50,    71,   300,    51,   364,   519,   354,    55,   356,    50,
    95,    44,   105,   193,    51,  1193,    95,    51,   198,   343,
    50,   201,   107,    36,    51,    95,    65,   444,   107,    55,
   378,   329,   546,   356,   358,     3,     4,   105,     6,  1217,
   105,   389,   340,     5,    95,   393,    94,    98,    44,   531,
    83,    84,   368,    51,    51,    44,    51,   237,   353,   354,
   384,     1,   531,   411,    55,    95,   356,   104,    36,    66,
   104,   104,    51,   389,   109,    51,    86,   393,   105,   395,
   396,    44,    95,    93,    55,   697,    10,    83,    84,   269,
   451,   605,   576,   607,    83,    84,   444,   581,     1,   697,
   416,   920,    44,   491,   618,   924,   104,   287,   104,   104,
    50,   540,   541,   104,   475,   104,   498,   494,    51,   467,
    83,    84,   302,    86,   768,   104,   442,    95,   104,   445,
    93,    51,   776,   104,   494,   655,   650,   498,   652,   319,
   320,    83,   105,   491,   324,   659,    51,    50,    51,   663,
   330,   601,     3,     4,     3,   335,    42,     8,   546,   655,
     9,    66,   664,   524,    50,   667,   527,     8,    51,    26,
    27,   104,    50,   353,   354,    32,   356,    55,    51,     3,
     4,     5,    51,    66,   104,    44,   568,    51,   576,    51,
    41,   105,   106,   581,    51,    46,    53,    21,   546,   713,
    16,   715,     7,     8,   718,   106,    22,   505,    13,     1,
    61,     3,     4,     5,     6,     7,     8,   605,    46,   607,
    71,    13,    46,    39,    83,    84,     3,  1046,   576,    44,
    35,   104,    83,   581,    44,   104,    28,    42,    53,    44,
   104,   932,   104,    35,    95,   104,    62,    50,   105,    41,
    42,    99,    55,   577,    46,    51,   107,   605,   582,   607,
    51,   559,   105,    51,   109,   597,    26,    27,    83,    61,
    55,    95,    83,    83,    98,    83,   653,    51,    83,    71,
    51,    51,   106,   463,   464,    44,   652,   467,    51,  1225,
    51,    83,    38,   109,    83,   652,     3,     4,    51,   115,
   116,   117,   822,    95,   652,   819,   735,   736,   104,   820,
  1129,   825,  1131,   104,   130,   107,   104,   699,   679,   667,
   749,   750,   833,   834,    83,    84,   822,   829,   830,   711,
   104,   147,    83,   104,   104,   151,    51,   839,   840,    44,
   854,   104,    10,   104,    44,   104,   857,   858,   672,   697,
   711,   104,    51,    51,     3,     4,   105,   106,   174,   104,
   540,   541,    53,   813,   816,   817,   106,   728,    44,   786,
    44,   753,    44,   105,   106,     3,     4,    44,    83,   711,
   104,   729,   198,    83,    84,   201,    86,   203,    44,   104,
   104,    44,    41,    93,     3,    44,   576,    46,    47,   109,
   216,   581,    44,    50,  1048,   104,   729,    83,    84,    83,
    84,    83,    61,    41,    44,   109,    83,   597,    46,    47,
    44,   237,    71,   105,   106,   936,   242,    83,    84,    78,
    83,   779,   248,    61,    83,    84,   106,    44,   786,   729,
   764,    83,    44,    71,    46,   104,    95,   808,   109,   773,
    78,   105,   106,    83,  1088,    83,   779,     3,   107,    83,
   971,   104,   278,    65,   846,  1109,    86,    95,  1102,   817,
   768,  1105,    51,    93,   769,   799,    83,   105,   776,   107,
    83,    83,    26,    27,   664,   105,   302,   667,   104,   779,
    32,     3,     4,     5,     6,     7,     8,   858,   104,    44,
   104,    13,   984,   319,   320,    50,    50,   887,   324,    46,
    55,    55,   104,   874,   330,   876,    28,    86,    55,   335,
    71,    72,    73,    35,    93,  1143,  1144,  1038,    65,    41,
    42,   711,    53,   950,    46,    47,   105,   353,    83,   887,
   888,   105,   106,    51,   876,   104,   878,   895,   896,    61,
   898,  1062,   104,   869,   902,   735,   736,   873,    35,    71,
    55,    56,   378,    34,   880,   888,    78,  1078,   109,   749,
   750,    83,   895,   896,   109,   898,   105,   106,   105,   902,
    44,   105,   106,    95,   932,   105,   106,  1101,   105,   769,
  1104,   886,   887,   105,   105,   107,   105,    61,   888,   779,
   105,   106,   950,   105,   928,   895,   896,    71,   898,   932,
   209,   210,   902,   109,    78,  1126,   977,  1128,    61,    83,
    84,   104,     6,     7,     8,   104,    51,  1141,   444,    13,
     5,  1142,  1114,   109,  1145,    55,    55,   985,    83,    26,
    27,    53,   932,   104,   104,   104,   104,   463,   464,   829,
   830,    35,     6,     7,     8,   104,    55,  1107,    42,    13,
    44,  1022,   985,    50,    53,   109,  1148,  1149,    55,   985,
   986,   109,    83,    53,    53,   491,   106,   993,   121,  1027,
   104,    35,   109,  1031,    55,  1009,  1138,  1139,    42,  1021,
  1014,    95,  1069,    55,  1205,   985,   876,    55,   878,    83,
   109,  1062,  1068,   104,  1027,    53,   886,   887,  1031,   104,
   104,  1068,  1194,   104,    83,    55,  1032,  1033,   104,  1043,
  1068,   104,   902,   104,   540,   541,   104,  1051,    83,   106,
     3,     4,    83,     6,     7,     8,  1084,  1027,    55,   105,
   105,  1031,    50,    50,     8,     7,     8,  1095,   105,    15,
  1048,    13,   932,   196,     3,     4,    53,     6,     7,     8,
    55,  1084,    35,     3,    51,  1081,  1248,  1249,   104,  1251,
  1252,   104,  1095,    35,     3,     4,    49,    50,  1094,    55,
    42,   597,    44,   105,   105,   105,    35,   105,  1270,   105,
    83,  1139,     3,     4,  1084,   238,   105,    53,    83,   105,
    49,    50,   106,    53,    84,  1095,  1154,    84,    16,  1157,
   106,  1109,    41,   105,   105,  1113,   104,    46,    47,   105,
    49,    83,    95,  1240,   105,    50,    55,   100,   101,   102,
    41,  1154,    61,   105,  1157,    46,    69,    70,    71,    72,
    73,  1021,    71,    55,   105,  1193,    95,   105,   664,    78,
    61,   100,   101,   102,    83,    53,   104,   104,    51,   104,
    71,   304,   305,   104,  1154,   104,    95,  1157,   105,  1217,
  1193,   109,    83,   109,   105,    10,    90,   105,   107,     9,
    83,   697,   105,    51,    95,   104,    83,  1203,  1204,  1250,
   333,   104,  1240,  1225,  1217,   711,   107,    44,    51,   105,
    47,     4,     5,  1193,     7,     8,    10,     9,   351,   104,
    13,   105,   104,   104,    61,     1,    10,  1233,   105,   735,
   736,   126,     1,     2,    71,    28,     0,  1217,     0,   289,
   697,    78,    35,   749,   750,     2,    83,    84,    24,    42,
    26,    27,   127,    22,   387,   127,    32,   711,   138,   498,
   121,   752,    31,   769,   411,     8,  1064,   985,   165,   886,
   330,    40,   276,  1134,    50,    51,   808,    53,   411,    55,
   786,   414,   415,   681,   417,   418,   419,   420,   421,   422,
   423,   424,   425,   426,   427,   428,   429,   430,   431,   432,
   433,    44,    95,    31,    31,   753,   568,   440,   441,   732,
    86,   817,   902,   779,   354,   475,   679,    93,    61,   324,
   730,     1,     2,   829,   830,   458,  1028,  1234,    71,   105,
     4,     5,  1084,     7,     8,    78,  1236,   470,   248,    13,
    83,    84,    22,  1021,   477,    -1,   115,   116,   117,   786,
    -1,    31,    44,    -1,    28,  1225,    -1,    -1,   127,    39,
    40,    35,    -1,    -1,    -1,    -1,    -1,    -1,    42,    -1,
   876,    -1,   878,     7,     8,    49,    -1,    -1,   147,    13,
   886,    -1,   151,    75,    76,    -1,   519,    79,    80,    81,
    82,    83,    84,    -1,   527,     3,     4,     5,     6,     7,
     8,    35,    -1,    -1,    -1,    13,    -1,    -1,    42,    83,
    44,    -1,    -1,   546,    -1,    -1,    -1,    -1,    -1,    -1,
    28,    95,    -1,    -1,   193,    -1,    -1,    35,    -1,    -1,
    -1,    -1,   201,    41,    42,   115,   116,   117,    46,    47,
    -1,   574,   575,    -1,   950,    -1,    -1,   127,    -1,    83,
   130,   131,     1,    61,     3,     4,     5,     6,     7,     8,
     7,     8,    -1,    71,    13,    -1,    13,   147,    -1,    -1,
    78,   151,   605,    -1,   607,    83,    -1,    26,    27,    28,
    -1,    -1,    -1,    -1,    -1,   618,    35,    95,    35,   622,
    39,    -1,    41,    42,   174,    42,    45,    46,    -1,   107,
    -1,     3,     4,    -1,    -1,    -1,     8,    -1,    -1,    -1,
    -1,    -1,    61,   193,    -1,  1021,    -1,   650,   287,   652,
    -1,   201,    71,    -1,    -1,    -1,   659,    -1,    -1,    -1,
   663,    -1,    -1,    44,    83,    -1,   216,    -1,    -1,    41,
    -1,    -1,    -1,    -1,    46,   678,    95,    96,    97,    -1,
   319,   320,    -1,    20,    21,   324,   105,   237,   107,    61,
    -1,    -1,  1068,   243,    75,    76,   335,    -1,    79,    71,
    81,    -1,    83,    84,    -1,     1,    78,    -1,    -1,    -1,
   713,    83,   715,    -1,    -1,   718,    -1,   356,   721,    -1,
    -1,    -1,    59,    95,    -1,    -1,    -1,    -1,    24,    -1,
    26,    27,    -1,    -1,    -1,   107,    32,   287,     1,    76,
     3,     4,     5,     6,     7,     8,    -1,    -1,    44,    -1,
    13,    -1,    -1,    -1,    50,    51,    -1,    53,   761,    55,
     6,     7,     8,  1139,    -1,    28,    -1,    13,    -1,   319,
   320,    -1,    35,    36,   324,    -1,    -1,    -1,    41,    42,
   330,    -1,    -1,    46,    -1,   335,    -1,    83,    84,    35,
    86,    -1,    55,    -1,    -1,    -1,    42,    93,    61,    -1,
    -1,    -1,    -1,   353,   354,   808,   356,   810,    71,   105,
    -1,   148,   149,    -1,    -1,    -1,   819,   820,    -1,    -1,
    83,    -1,   825,    -1,   463,   464,    -1,    -1,   467,    -1,
   833,   834,    95,    -1,    -1,    -1,     1,    -1,    -1,    -1,
    -1,    -1,   105,   106,   107,    -1,    -1,    -1,    -1,  1225,
    -1,   854,    -1,    -1,   857,   858,    -1,    -1,   195,    24,
    -1,    26,    27,    -1,  1240,   202,    -1,    32,    -1,    -1,
     0,     1,    -1,     3,     4,     5,     6,     7,     8,    44,
    -1,    -1,    -1,    13,    -1,    50,    51,    -1,    53,    -1,
    55,    -1,    -1,    -1,    -1,    -1,    26,    27,    28,    -1,
    -1,   540,   541,   453,    -1,    35,    -1,    -1,    -1,    39,
    -1,    41,    42,   463,   464,    45,    46,   467,    83,    84,
    -1,    86,    -1,   926,   927,    -1,    -1,   264,    93,   266,
   267,    61,    -1,   936,    -1,    -1,    -1,   576,    -1,    -1,
   105,    71,   581,    64,    65,    66,    67,    68,    69,    70,
    71,    72,    73,    83,    63,    64,    65,    66,    67,    68,
    69,    70,    71,    72,    73,    95,    96,    97,   971,    -1,
   973,    -1,    -1,    -1,    -1,   105,     1,   107,     3,     4,
     5,     6,     7,     8,   321,   322,     3,     4,    13,    -1,
   540,   541,    -1,    -1,    -1,   332,    -1,    -1,    -1,    -1,
    -1,    26,    27,    28,    -1,    -1,    -1,    -1,    -1,    -1,
    35,    -1,    -1,    -1,    39,    -1,    41,    42,    -1,    -1,
    45,    46,    -1,    -1,    41,   664,   576,    44,   667,    46,
    47,   581,    49,    -1,    -1,  1038,    61,    -1,    55,    -1,
    -1,    -1,  1045,    -1,    61,    -1,    71,    67,    68,    69,
    70,    71,    72,    73,    71,    -1,    -1,    -1,    83,  1062,
    -1,    78,    -1,    -1,    -1,    -1,    83,    -1,    -1,    -1,
    95,    96,    97,    -1,    -1,  1078,    -1,    -1,    95,    -1,
   105,   106,   107,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
   107,    -1,    -1,    -1,    -1,    -1,   735,   736,  1101,    -1,
    -1,  1104,    -1,    -1,    -1,    -1,    -1,    -1,    -1,     1,
   749,   750,     4,     5,   664,     7,     8,   667,    -1,    -1,
    -1,    13,    -1,  1126,    -1,  1128,    -1,    -1,   465,    -1,
    -1,    -1,    -1,    -1,    -1,    -1,    28,    -1,  1141,  1142,
   779,    -1,  1145,    35,    -1,    37,    38,    -1,    -1,    -1,
    42,    43,    44,   490,    -1,     3,     4,    -1,    -1,    51,
    52,    53,    54,    -1,    -1,    57,    58,    59,    60,    61,
    62,    63,    64,    65,    66,    67,    68,    69,    70,    71,
    72,    73,    -1,    75,    76,   735,   736,    79,    80,    -1,
   829,   830,    84,    41,    -1,    -1,    -1,    -1,    46,   749,
   750,    -1,  1205,    95,    -1,   542,   543,    -1,   545,    -1,
    -1,    -1,    -1,    61,    -1,   107,   108,    -1,    -1,   769,
   557,   558,    -1,    71,    -1,    -1,    -1,    -1,    -1,   779,
    78,    -1,    -1,    -1,    -1,    83,   573,    -1,    -1,    -1,
    -1,    -1,    24,   580,    26,    27,    -1,    95,   887,    -1,
    32,    -1,   589,   590,   591,    -1,    -1,    -1,    -1,   107,
    -1,    -1,    -1,   902,    46,    -1,    -1,   604,    50,   606,
    -1,    53,   609,    -1,    -1,    -1,    -1,    -1,    -1,   829,
   830,    -1,    -1,    65,    -1,     1,    -1,     3,     4,     5,
     6,     7,     8,   932,    -1,    -1,    -1,    13,    -1,    -1,
     3,     4,    84,    -1,    86,     8,    -1,    -1,    -1,    -1,
    -1,    93,    28,    -1,    -1,    -1,    -1,    -1,    -1,    35,
    36,    -1,    -1,    -1,   106,    41,    42,    -1,   665,   666,
    46,    -1,    -1,    -1,    -1,    -1,   886,   887,    41,    55,
    -1,    44,    -1,    46,    -1,    61,    -1,    -1,    -1,   686,
   687,    -1,   902,   690,    -1,    71,    -1,    -1,    61,    -1,
    -1,    -1,    -1,    -1,    -1,    -1,    -1,    83,    71,    -1,
    -1,    -1,    -1,    -1,    -1,    78,    -1,    -1,    -1,    95,
    83,    84,   932,    -1,    -1,    -1,    -1,    -1,    -1,   105,
   106,   107,    95,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    -1,    -1,    -1,    -1,   107,    -1,    -1,    -1,   745,   746,
   747,    -1,     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,    31,    -1,    33,    -1,    35,    -1,    37,    38,
    -1,    40,    41,    42,     3,     4,    -1,    46,    -1,    -1,
    49,    50,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    58,
     3,     4,    61,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    69,    70,    71,     3,     4,    -1,    75,    76,    -1,     3,
     4,    -1,    41,    -1,    83,    44,    85,    46,    87,    88,
    89,    -1,    91,    92,    93,   842,    95,    -1,    41,    -1,
    -1,    -1,    61,    46,    47,    -1,   105,   106,   107,   108,
    -1,    41,    71,    -1,    -1,    -1,    46,    41,    61,    78,
    -1,    -1,    46,    47,    83,    84,    -1,    -1,    71,    -1,
    -1,    61,    -1,    -1,    -1,    78,    95,    61,    -1,    -1,
    83,    71,    -1,    -1,    -1,    -1,    -1,    71,   107,    -1,
    -1,    -1,    95,    83,    78,    -1,    -1,    -1,    -1,    83,
   907,   908,   909,    -1,   107,    95,    -1,    -1,    -1,    -1,
    -1,    95,    -1,    -1,    -1,    -1,   923,   107,    -1,    -1,
    -1,   105,    -1,   107,   931,    -1,    -1,    -1,    -1,    -1,
   937,   938,   939,   940,   941,   942,     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,    31,    -1,    33,    -1,
    35,    -1,    37,    38,    -1,    40,    41,    42,    -1,    -1,
    -1,    46,    -1,    -1,    49,    50,    -1,    -1,    -1,    -1,
    -1,     4,     5,    58,     7,     8,    61,    -1,    -1,    -1,
    13,    -1,    -1,    -1,    69,    70,    71,    -1,    -1,    -1,
    75,    76,    -1,    -1,    -1,    28,    -1,    -1,    83,    -1,
    85,    -1,    35,    88,    -1,    -1,    91,    92,    93,    42,
    95,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
   105,   106,   107,   108,     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,    31,    -1,    33,    -1,    35,    -1,
    37,    38,    95,    40,    41,    42,    -1,    -1,    -1,    46,
    -1,    -1,    49,    50,    -1,    -1,    -1,    -1,    -1,    -1,
    -1,    58,    -1,    -1,    61,    -1,    -1,    -1,    -1,    -1,
    -1,    -1,    69,    70,    71,    -1,    -1,    -1,    75,    76,
    -1,    -1,    -1,    -1,    -1,    -1,    83,    -1,    85,    -1,
    -1,    88,    -1,    -1,    91,    92,    93,    -1,    95,    -1,
    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   105,   106,
   107,   108,     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,    31,    -1,    33,    -1,    35,    -1,    37,    38,
    -1,    40,    41,    42,    -1,    -1,    -1,    46,    -1,    -1,
    49,    50,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    58,
    -1,    -1,    61,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    69,    70,    71,    -1,    -1,    -1,    75,    76,    -1,    -1,
    -1,    -1,    -1,    -1,    83,    -1,    85,    -1,    -1,    88,
    -1,    -1,    91,    92,    93,    -1,    95,    -1,    -1,    -1,
    -1,    -1,    -1,    -1,    -1,    -1,   105,   106,   107,   108,
     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,
    31,    -1,    33,    -1,    35,    -1,    37,    38,    -1,    40,
    41,    42,    -1,    -1,    -1,    46,    -1,    -1,    49,    50,
    -1,    -1,    -1,    -1,    -1,    -1,    -1,    58,    -1,    -1,
    61,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    69,    70,
    71,    -1,    -1,    -1,    75,    76,    -1,    -1,    -1,    -1,
    -1,    -1,    83,    -1,    85,    -1,    -1,    88,    -1,    -1,
    91,    92,    93,    -1,    95,    -1,    -1,    -1,    -1,    -1,
    -1,    -1,    -1,    -1,   105,   106,   107,   108,     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,    31,    -1,
    33,    -1,    35,    -1,    37,    38,    -1,    40,    41,    42,
    -1,    -1,    -1,    46,    -1,    -1,    49,    50,    -1,    -1,
    -1,    -1,    -1,    -1,    -1,    58,    -1,    -1,    61,    -1,
    -1,    -1,    -1,    -1,    -1,    -1,    69,    70,    71,    -1,
    -1,    -1,    75,    76,    -1,    -1,    -1,    -1,    -1,    -1,
    83,    -1,    85,    -1,    -1,    88,    -1,    -1,    91,    92,
    93,    -1,    95,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    -1,    -1,   105,   106,   107,   108,     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,    31,    -1,    33,    -1,
    35,    -1,    37,    38,    -1,    40,    41,    42,    -1,    -1,
    -1,    46,    -1,    -1,    49,    50,    -1,    -1,    -1,    -1,
    -1,    -1,    -1,    58,    -1,    -1,    61,    -1,    -1,    -1,
    -1,    -1,    -1,    -1,    69,    70,    71,    -1,    -1,    -1,
    75,    76,    -1,    -1,    -1,    -1,    -1,    -1,    83,    -1,
    85,    -1,    -1,    88,    -1,    -1,    91,    92,    93,    -1,
    95,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
   105,   106,   107,   108,     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,    31,    -1,    33,    -1,    35,    -1,
    37,    38,    -1,    40,    41,    42,    -1,    -1,    -1,    46,
    -1,    -1,    49,    50,    -1,    -1,    -1,    -1,    -1,    -1,
    -1,    58,    -1,    -1,    61,    -1,    -1,    -1,    -1,    -1,
    -1,    -1,    69,    70,    71,    -1,    -1,    -1,    75,    76,
    -1,    -1,    -1,    -1,    -1,    -1,    83,    -1,    85,    -1,
    -1,    88,    -1,    -1,    91,    92,    93,    -1,    95,    -1,
    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   105,    -1,
   107,   108,     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,    31,    -1,    33,    -1,    35,    -1,    37,    38,
    -1,    40,    41,    42,    -1,    -1,    -1,    46,    -1,    -1,
    49,    50,    -1,    -1,    -1,    -1,    -1,     4,     5,    58,
     7,     8,    61,    -1,    -1,    -1,    13,    -1,    -1,    -1,
    69,    70,    71,    -1,    -1,    -1,    75,    76,    -1,    -1,
    -1,    28,    -1,    -1,    83,    -1,    85,    -1,    35,    88,
    -1,    -1,    91,    92,    93,    42,    95,    -1,    -1,    -1,
    -1,    -1,    49,    -1,    -1,    -1,   105,    -1,   107,   108,
     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,    73,    83,    28,    29,    30,
    31,    -1,    33,    -1,    35,    -1,    37,    38,    95,    40,
    41,    42,    -1,    -1,    -1,    46,    -1,    -1,    -1,    -1,
    -1,    -1,     4,     5,     6,     7,     8,    58,    -1,    -1,
    61,    13,    -1,    -1,    -1,    -1,     3,     4,    69,    70,
    71,    -1,    -1,    -1,    75,    76,    28,    -1,    -1,    -1,
    -1,    -1,    83,    35,    -1,    -1,    -1,    -1,    -1,    -1,
    42,    -1,    -1,    94,    95,    -1,    -1,    -1,    -1,    -1,
    -1,    -1,    -1,   104,    41,    -1,   107,   108,     1,    46,
     3,     4,     5,     6,     7,     8,     9,    10,    11,    12,
    13,    -1,    -1,    -1,    61,    -1,    -1,    -1,    -1,    -1,
    -1,    -1,    -1,    -1,    71,    28,    29,    30,    31,    -1,
    33,    78,    35,    95,    37,    38,    83,    40,    41,    42,
    -1,    -1,    -1,    46,    -1,    -1,    -1,    -1,    95,    -1,
     4,     5,     6,     7,     8,    58,    -1,    -1,    61,    13,
   107,    -1,    -1,    -1,     3,     4,    69,    70,    71,    -1,
    -1,    -1,    75,    76,    28,    -1,    -1,    -1,    -1,    -1,
    83,    35,    -1,    -1,    -1,    -1,    -1,    -1,    42,    -1,
    -1,    94,    95,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    -1,   104,    41,    -1,   107,   108,     1,    46,     3,     4,
     5,     6,     7,     8,     9,    10,    11,    12,    13,    -1,
    -1,    -1,    61,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    -1,    -1,    71,    28,    29,    30,    31,    -1,    33,    78,
    35,    95,    37,    38,    83,    40,    41,    42,    -1,    -1,
    -1,    46,    -1,    -1,    -1,    -1,    95,    -1,    -1,    -1,
    -1,    -1,    -1,    58,    -1,    -1,    61,    -1,   107,    -1,
    -1,    -1,     3,     4,    69,    70,    71,    -1,    -1,    -1,
    75,    76,    -1,    -1,    -1,    -1,    -1,    -1,    83,    -1,
    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    94,
    95,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   104,
    41,    -1,   107,   108,     1,    46,     3,     4,     5,     6,
     7,     8,     9,    10,    11,    12,    13,    -1,    -1,    -1,
    61,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    71,    28,    29,    30,    31,    -1,    33,    -1,    35,    -1,
    37,    38,    83,    40,    41,    42,    -1,    -1,    -1,    46,
    -1,    -1,    -1,    -1,    95,    -1,    -1,    -1,    -1,    -1,
    -1,    58,    -1,    -1,    61,    -1,   107,    -1,    -1,    -1,
    -1,    -1,    69,    70,    71,    -1,    -1,    -1,    75,    76,
    -1,    -1,    -1,    -1,    -1,    -1,    83,    -1,    -1,    -1,
    -1,    -1,    -1,    -1,    -1,    -1,    -1,    94,    95,    -1,
    -1,    -1,    -1,    -1,    -1,    -1,    -1,   104,    -1,    -1,
   107,   108,     1,    -1,     3,     4,     5,     6,     7,     8,
     9,    10,    11,    12,    13,    60,    61,    62,    63,    64,
    65,    66,    67,    68,    69,    70,    71,    72,    73,    28,
    29,    30,    31,    -1,    33,    -1,    35,    -1,    37,    38,
    -1,    40,    41,    42,    -1,    -1,    -1,    46,    -1,    -1,
    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    58,
    -1,    -1,    61,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    69,    70,    71,    -1,    -1,    -1,    75,    76,    -1,    -1,
    -1,    -1,    -1,    -1,    83,    -1,    -1,    -1,    -1,    -1,
    -1,    -1,    -1,    -1,    -1,    94,    95,    -1,    -1,    -1,
    -1,    -1,    -1,    -1,    -1,   104,    -1,    -1,   107,   108,
     1,    -1,     3,     4,     5,    -1,     7,     8,     9,    10,
    -1,    12,    13,    62,    63,    64,    65,    66,    67,    68,
    69,    70,    71,    72,    73,    -1,    -1,    28,    29,    30,
    31,    -1,    33,    -1,    35,    -1,    37,    38,    -1,    40,
    41,    42,    -1,    -1,    -1,    46,    -1,    -1,    -1,    50,
    -1,    -1,    -1,    -1,    -1,    -1,    -1,    58,    -1,    -1,
    61,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    69,    70,
    71,    -1,    -1,    -1,    75,    76,    -1,    -1,    -1,    -1,
    -1,    -1,    83,    84,     1,    -1,     3,     4,     5,    -1,
     7,     8,     9,    10,    95,    12,    13,    -1,    -1,    -1,
    -1,    -1,    -1,    20,    -1,   106,   107,   108,    -1,    -1,
    -1,    28,    29,    30,    31,    -1,    33,    -1,    35,    -1,
    37,    38,    -1,    40,    41,    42,    -1,    -1,    -1,    46,
    -1,    -1,    -1,    50,    -1,    -1,    -1,    -1,    -1,    -1,
    -1,    58,    -1,    -1,    61,    -1,    -1,    -1,    -1,    -1,
    -1,    -1,    69,    70,    71,    -1,    -1,    -1,    75,    76,
    -1,    -1,    -1,    -1,    -1,     1,    83,     3,     4,     5,
     6,     7,     8,     9,    10,    -1,    12,    13,    95,    -1,
    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   106,
   107,   108,    28,    29,    30,    31,    -1,    33,    -1,    35,
    -1,    37,    38,    -1,    40,    41,    42,    -1,    -1,    -1,
    46,    -1,    -1,    -1,    50,    -1,    -1,    -1,    -1,    -1,
    -1,    -1,    58,    -1,    -1,    61,    -1,    -1,    -1,    -1,
    -1,    -1,    -1,    69,    70,    71,    -1,    -1,    -1,    75,
    76,    -1,    -1,    -1,    -1,    -1,     1,    83,     3,     4,
     5,    -1,     7,     8,     9,    10,    -1,    12,    13,    95,
    -1,    -1,    -1,    -1,    -1,    20,    -1,    -1,    -1,   105,
    -1,   107,   108,    28,    29,    30,    31,    -1,    33,    -1,
    35,    -1,    37,    38,    -1,    40,    41,    42,    -1,    -1,
    -1,    46,    -1,    -1,    -1,    50,    -1,    -1,    -1,    -1,
    -1,    -1,    -1,    58,    -1,    -1,    61,    -1,    -1,    -1,
    -1,    -1,    -1,    -1,    69,    70,    71,    -1,    -1,    -1,
    75,    76,    -1,    -1,    -1,    -1,    -1,     1,    83,     3,
     4,     5,    -1,     7,     8,     9,    10,    -1,    12,    13,
    95,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    -1,   106,   107,   108,    28,    29,    30,    31,    -1,    33,
    -1,    35,    -1,    37,    38,    -1,    40,    41,    42,    -1,
    -1,    -1,    46,    -1,    -1,    -1,    50,    -1,    -1,    -1,
    -1,    -1,    -1,    -1,    58,    -1,    -1,    61,    -1,    -1,
    -1,    -1,    -1,    -1,    -1,    69,    70,    71,    -1,    -1,
    -1,    75,    76,    -1,    -1,    -1,    -1,    -1,    -1,    83,
    84,     1,    -1,     3,     4,     5,    -1,     7,     8,     9,
    10,    95,    12,    13,    -1,    -1,    -1,    -1,    -1,    -1,
    -1,    -1,    -1,   107,   108,    -1,    -1,    -1,    28,    29,
    30,    31,    -1,    33,    -1,    35,    -1,    37,    38,    -1,
    40,    41,    42,    -1,    -1,    -1,    46,    -1,    -1,    -1,
    50,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    58,    -1,
    -1,    61,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    69,
    70,    71,    -1,    -1,    -1,    75,    76,    -1,    -1,    -1,
    -1,    -1,     1,    83,     3,     4,     5,    -1,     7,     8,
     9,    10,    -1,    12,    13,    95,    -1,    -1,    -1,    -1,
    -1,    -1,    -1,    -1,    -1,    -1,    -1,   107,   108,    28,
    29,    30,    31,    -1,    33,    -1,    35,    -1,    37,    38,
    -1,    40,    41,    42,    -1,    -1,    -1,    46,    -1,    -1,
    -1,    50,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    58,
    -1,    -1,    61,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    69,    70,    71,    -1,    -1,    -1,    75,    76,    -1,    -1,
    -1,    -1,    -1,     1,    83,     3,     4,     5,    -1,     7,
     8,     9,    10,    -1,    12,    13,    95,    -1,    -1,    -1,
    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   107,   108,
    28,    29,    30,    31,    -1,    33,    -1,    35,    -1,    37,
    38,    -1,    40,    41,    42,    -1,    -1,    -1,    46,    -1,
    -1,    -1,    -1,    -1,    -1,    -1,    -1,    55,    -1,    -1,
    58,    -1,    -1,    61,    -1,    -1,    -1,    -1,    -1,    -1,
    -1,    69,    70,    71,    -1,    -1,    -1,    75,    76,    -1,
    -1,    -1,    -1,    -1,     1,    83,     3,     4,     5,    -1,
     7,     8,     9,    10,    -1,    12,    13,    95,    -1,    -1,
    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   107,
   108,    28,    29,    30,    31,    -1,    33,    -1,    35,    -1,
    37,    38,    -1,    40,    41,    42,    -1,    -1,    -1,    46,
    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    -1,    58,    -1,    -1,    61,    -1,    -1,    -1,    -1,    -1,
    -1,    -1,    69,    70,    71,    -1,    -1,    -1,    75,    76,
    -1,    -1,    -1,    -1,    -1,     1,    83,     3,     4,     5,
    -1,     7,     8,     9,    10,    -1,    12,    13,    95,    -1,
    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   105,    -1,
   107,   108,    28,    29,    30,    31,    -1,    33,    -1,    35,
    -1,    37,    38,    -1,    40,    41,    42,    -1,    -1,    -1,
    46,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    -1,    -1,    58,    -1,    -1,    61,    -1,    -1,    -1,    -1,
    -1,    -1,    -1,    69,    70,    71,    -1,    -1,    -1,    75,
    76,    -1,    -1,    -1,    -1,    -1,     1,    83,     3,     4,
     5,    -1,     7,     8,     9,    10,    -1,    12,    13,    95,
    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   104,    -1,
    -1,   107,   108,    28,    29,    30,    31,    -1,    33,    -1,
    35,    -1,    37,    38,    -1,    40,    41,    42,    -1,    -1,
    -1,    46,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    -1,    -1,    -1,    58,    -1,    -1,    61,    -1,    -1,    -1,
    -1,    -1,    -1,    -1,    69,    70,    71,    -1,    -1,    -1,
    75,    76,    -1,    -1,    -1,    -1,    -1,    -1,    83,     3,
     4,     5,    -1,     7,     8,     9,    10,    -1,    12,    13,
    95,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    -1,    -1,   107,   108,    28,    29,    30,    31,    -1,    33,
    -1,    35,    -1,    37,    -1,    -1,    40,    41,    42,    -1,
    -1,     1,    46,     3,     4,     5,     6,     7,     8,    -1,
    -1,    -1,    -1,    13,    58,    -1,    -1,    61,    -1,    -1,
    -1,    -1,    -1,    -1,    -1,    69,    70,    71,    28,    -1,
    -1,    75,    76,    -1,    -1,    35,    36,    -1,    -1,    83,
    -1,    41,    42,    -1,    -1,    -1,    46,    -1,    -1,    -1,
    -1,    95,    -1,    -1,    -1,    55,    -1,    -1,    -1,    -1,
    -1,    61,    -1,   107,   108,   109,    -1,    -1,    -1,    -1,
     1,    71,     3,     4,     5,     6,     7,     8,    -1,    -1,
    -1,    -1,    13,    83,    -1,    -1,     1,    -1,     3,     4,
     5,     6,     7,     8,    -1,    95,    -1,    28,    13,    -1,
    -1,    -1,    -1,    -1,    35,    36,   106,   107,    -1,    -1,
    41,    42,    -1,    28,    -1,    46,    -1,    -1,    -1,    -1,
    35,    -1,    -1,    -1,    55,    -1,    41,    42,    -1,    -1,
    61,    46,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    71,    -1,    -1,    -1,    -1,    -1,    61,    -1,    -1,    -1,
    -1,    -1,    83,    -1,    -1,    -1,    71,    -1,    -1,    -1,
    -1,    -1,    -1,    -1,    95,    -1,    -1,    -1,    83,    -1,
    -1,    -1,    -1,    -1,    -1,   106,   107,    -1,    -1,    -1,
    95,    96,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
   105,    -1,   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,    31,    -1,    33,    -1,    35,    -1,    37,    -1,    -1,
    40,    41,    42,    -1,    -1,    -1,    46,    -1,    -1,    49,
    50,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    58,    -1,
    -1,    61,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    69,
    70,    71,    -1,    -1,    -1,    75,    76,    -1,    -1,    -1,
    -1,    -1,    -1,    83,    -1,    85,    -1,    -1,    88,    -1,
    -1,    91,    92,    93,    -1,    95,    -1,    -1,    -1,    -1,
    -1,    -1,    -1,    -1,    -1,   105,   106,   107,   108,     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,    31,    -1,    33,
    -1,    35,    -1,    37,    -1,    -1,    40,    41,    42,    -1,
    -1,    -1,    46,    -1,    -1,    49,    50,    -1,    -1,    -1,
    -1,    -1,    -1,    -1,    58,    -1,    -1,    61,    -1,    -1,
    -1,    -1,    -1,    -1,    -1,    69,    70,    71,    -1,    -1,
    -1,    75,    76,    -1,    -1,    -1,    -1,    -1,    -1,    83,
    -1,    85,    -1,    -1,    88,    -1,    -1,    91,    92,    93,
    -1,    95,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    -1,   105,    -1,   107,   108,     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,    31,    -1,    33,    -1,    35,    -1,    37,
    -1,    -1,    40,    41,    42,    -1,    -1,    -1,    46,    -1,
    -1,    49,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    58,    -1,    -1,    61,    -1,    -1,    -1,    -1,    -1,    -1,
    -1,    69,    70,    71,    -1,    -1,    -1,    75,    76,    -1,
    -1,    -1,    -1,    -1,    -1,    83,    -1,    85,    -1,    -1,
    88,    -1,    -1,    91,    92,    93,    -1,    95,    -1,    -1,
    -1,    -1,    -1,    -1,    -1,    -1,    -1,   105,    -1,   107,
   108,     3,     4,     5,    -1,     7,     8,     9,    10,    -1,
    12,    13,     4,     5,     6,     7,     8,    -1,    -1,    11,
    -1,    13,    -1,    -1,    -1,    -1,    28,    29,    30,    31,
    -1,    33,    -1,    35,    -1,    37,    28,    -1,    40,    41,
    42,    -1,    -1,    35,    46,     3,     4,     5,    -1,     7,
    42,    -1,    -1,    -1,    -1,    13,    58,    -1,    -1,    61,
    -1,    -1,    -1,    -1,    -1,    -1,    -1,    69,    70,    71,
    28,    -1,    -1,    75,    76,    -1,    -1,    35,    -1,    37,
    -1,    83,    84,    41,    42,     3,     4,     5,    46,     7,
     8,     9,    10,    95,    12,    13,    -1,    -1,    -1,    -1,
    -1,    -1,    94,    95,    -1,   107,   108,    -1,    -1,    -1,
    28,    29,    30,    31,    -1,    33,    -1,    35,    -1,    37,
    -1,    -1,    40,    41,    42,    -1,    -1,    -1,    46,    -1,
    -1,    -1,    50,    -1,    -1,    -1,    -1,    95,    -1,    -1,
    58,    -1,    -1,    61,    -1,    -1,    -1,    -1,    -1,    -1,
    -1,    69,    70,    71,    -1,    -1,    -1,    75,    76,    -1,
    -1,    -1,    -1,    -1,    -1,    83,     3,     4,     5,    -1,
     7,     8,     9,    10,    -1,    12,    13,    95,    -1,    -1,
    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   107,
   108,    28,    29,    30,    31,    -1,    33,    -1,    35,    -1,
    37,    -1,    -1,    40,    41,    42,    -1,    -1,    -1,    46,
    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    -1,    58,    -1,    -1,    61,    -1,    -1,    -1,    -1,    -1,
    -1,    -1,    69,    70,    71,    -1,    -1,    -1,    75,    76,
    -1,    -1,    -1,    -1,    -1,    -1,    83,     3,     4,     5,
    -1,     7,     8,     9,    10,    -1,    12,    13,    95,    -1,
    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   105,    -1,
   107,   108,    28,    29,    30,    31,    -1,    33,    -1,    35,
    -1,    37,    -1,    -1,    40,    41,    42,    -1,    -1,    -1,
    46,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    -1,    -1,    58,    -1,    -1,    61,    -1,    -1,    -1,    -1,
    -1,    -1,    -1,    69,    70,    71,    -1,    -1,    -1,    75,
    76,    -1,    -1,    -1,    -1,    -1,    -1,    83,     3,     4,
     5,    -1,     7,     8,     9,    10,    -1,    12,    13,    95,
    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   105,
    -1,   107,   108,    28,    29,    30,    31,    -1,    33,    -1,
    35,    -1,    37,    -1,    -1,    40,    41,    42,    -1,    -1,
    -1,    46,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    -1,    -1,    -1,    58,    -1,    -1,    61,    -1,    -1,    -1,
    -1,    -1,    -1,    -1,    69,    70,    71,    -1,    -1,    -1,
    75,    76,    -1,    -1,    -1,    -1,    -1,    -1,    83,     3,
     4,     5,    -1,     7,     8,     9,    10,    -1,    12,    13,
    95,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    -1,    -1,   107,   108,    28,    29,    30,    31,    -1,    33,
    -1,    35,    -1,    37,    -1,    -1,    40,    41,    42,    -1,
    -1,    -1,    46,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    -1,    -1,    -1,    -1,    58,    -1,    -1,    61,    -1,    -1,
    -1,    -1,    -1,    -1,    -1,    69,    70,    71,    -1,    -1,
    -1,    75,    76,    -1,    -1,    -1,    -1,    -1,    -1,    83,
     3,     4,     5,    -1,     7,     8,     9,    10,    -1,    12,
    13,    95,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    -1,    -1,    -1,   107,   108,    28,    29,    30,    31,    -1,
    33,    -1,    35,    -1,    37,    -1,    -1,    40,    41,    42,
    -1,    -1,    -1,    46,     3,     4,     5,    -1,     7,     8,
     9,    10,    -1,    12,    13,    58,    -1,    -1,    61,    -1,
    -1,    -1,    -1,    -1,    -1,    -1,    69,    70,    71,    28,
    29,    -1,    75,    76,    33,    -1,    35,    -1,    37,    -1,
    83,    40,    41,    42,    -1,    -1,    -1,    46,    -1,    -1,
    -1,    -1,    95,    -1,    -1,    -1,    -1,    -1,    -1,    58,
    -1,    -1,    61,    -1,   107,   108,    -1,    -1,    -1,    -1,
    69,    70,    71,    -1,    -1,    -1,    75,    76,    -1,    -1,
    -1,     3,     4,     5,    83,     7,     8,     9,    10,    -1,
    12,    13,    -1,    -1,    -1,    -1,    95,    -1,    -1,    -1,
    -1,    -1,    -1,    -1,    -1,    -1,    28,    29,   107,   108,
    -1,    33,    -1,    35,    -1,    37,    -1,    -1,    40,    41,
    42,    -1,    -1,    -1,    46,     3,     4,     5,     6,     7,
     8,    -1,    -1,    -1,    -1,    13,    58,    -1,    -1,    61,
    -1,    -1,    -1,    -1,    -1,    -1,    -1,    69,    70,    71,
    28,    -1,    -1,    75,    76,    -1,    -1,    35,    -1,    -1,
    -1,    83,    -1,    41,    42,    -1,    44,    -1,    46,    47,
    -1,    49,    -1,    95,    -1,    -1,    -1,    55,    -1,    -1,
    -1,    -1,    -1,    61,    -1,   107,   108,     3,     4,     5,
     6,     7,     8,    71,    -1,    11,    -1,    13,    -1,    -1,
    78,    -1,    -1,    -1,    -1,    83,    -1,    -1,    -1,    -1,
    -1,    -1,    28,    -1,    -1,    -1,    -1,    95,    -1,    35,
    -1,    -1,    -1,    -1,    -1,    41,    42,    -1,    44,   107,
    46,    47,     3,     4,     5,     6,     7,     8,    -1,    -1,
    11,    -1,    13,    -1,    -1,    61,    -1,    -1,    -1,    -1,
    -1,    -1,    -1,    -1,    -1,    71,    -1,    28,    -1,    -1,
    -1,    -1,    78,    -1,    35,    -1,    -1,    83,    84,    -1,
    41,    42,    -1,    44,    -1,    46,    -1,    -1,    -1,    95,
    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    61,   107,    -1,    -1,     3,     4,     5,     6,     7,     8,
    71,    -1,    11,    -1,    13,    -1,    -1,    78,    -1,    -1,
    -1,    -1,    83,    84,    -1,    -1,    -1,    -1,    -1,    28,
    -1,    -1,    -1,    94,    95,    -1,    35,    -1,    -1,    -1,
    -1,    -1,    41,    42,    -1,    -1,   107,    46,     3,     4,
     5,     6,     7,     8,    -1,    -1,    -1,    -1,    13,    -1,
    -1,    -1,    61,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    -1,    -1,    71,    28,     4,     5,     6,     7,     8,    78,
    35,    11,    -1,    13,    83,    -1,    41,    42,    -1,    -1,
    -1,    46,    47,    -1,    -1,    94,    95,    -1,    28,    -1,
    -1,    -1,    -1,    -1,    -1,    35,    61,    -1,   107,    -1,
    -1,    -1,    42,    -1,    44,    -1,    71,    -1,     4,     5,
    -1,     7,     8,    78,    -1,    -1,    -1,    13,    83,    -1,
    -1,    61,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    95,    71,    28,    -1,    -1,    -1,    -1,    -1,    78,    35,
   105,    -1,   107,    83,    84,    -1,    42,    -1,    44,    -1,
    -1,    47,    -1,    -1,    94,    95,    -1,    -1,    -1,    -1,
    -1,    -1,    -1,    -1,    -1,    61,    -1,    -1,    -1,    -1,
    -1,    -1,    -1,    -1,    -1,    71,    -1,    -1,    -1,    -1,
    -1,    -1,    78,    -1,    -1,    -1,    -1,    83,    84,    -1,
    -1,    -1,    -1,    -1,    -1,    52,    53,    54,    -1,    95,
    57,    58,    59,    60,    61,    62,    63,    64,    65,    66,
    67,    68,    69,    70,    71,    72,    73,    52,    53,    54,
    -1,    -1,    57,    58,    59,    60,    61,    62,    63,    64,
    65,    66,    67,    68,    69,    70,    71,    72,    73,    -1,
    -1,    -1,    -1,    -1,    -1,    -1,    -1,    32,    -1,    -1,
    -1,    -1,   109,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    -1,    -1,    -1,    -1,    -1,    -1,    -1,    52,    53,    54,
   105,   106,    57,    58,    59,    60,    61,    62,    63,    64,
    65,    66,    67,    68,    69,    70,    71,    72,    73,    51,
    52,    53,    54,    -1,    -1,    57,    58,    59,    60,    61,
    62,    63,    64,    65,    66,    67,    68,    69,    70,    71,
    72,    73,    52,    53,    54,    55,    -1,    57,    58,    59,
    60,    61,    62,    63,    64,    65,    66,    67,    68,    69,
    70,    71,    72,    73,    52,    53,    54,    -1,    -1,    57,
    58,    59,    60,    61,    62,    63,    64,    65,    66,    67,
    68,    69,    70,    71,    72,    73,    52,    53,    54,    -1,
    -1,    57,    58,    59,    60,    61,    62,    63,    64,    65,
    -1,    67,    68,    69,    70,    71,    72,    73,    54,    -1,
    -1,    57,    58,    59,    60,    61,    62,    63,    64,    65,
    66,    67,    68,    69,    70,    71,    72,    73,    58,    59,
    60,    61,    62,    63,    64,    65,    66,    67,    68,    69,
    70,    71,    72,    73,    59,    60,    61,    62,    63,    64,
    65,    66,    67,    68,    69,    70,    71,    72,    73
};
/* -*-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

#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

#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 285 "cp-parse.y"
{ finish_file (); ;
    break;}
case 3:
#line 293 "cp-parse.y"
{ yyval.ttype = NULL_TREE; ;
    break;}
case 4:
#line 294 "cp-parse.y"
{yyval.ttype = NULL_TREE; ;
    break;}
case 5:
#line 296 "cp-parse.y"
{yyval.ttype = NULL_TREE; ;
    break;}
case 6:
#line 300 "cp-parse.y"
{ have_extern_spec = 1;
		  used_extern_spec = 0;
		  yyval.ttype = NULL_TREE; ;
    break;}
case 7:
#line 305 "cp-parse.y"
{ have_extern_spec = 0; ;
    break;}
case 8:
#line 309 "cp-parse.y"
{ if (pedantic)
		      pedwarn ("ANSI C++ forbids use of `asm' keyword"); ;
    break;}
case 10:
#line 316 "cp-parse.y"
{ if (pending_inlines) do_pending_inlines (); ;
    break;}
case 11:
#line 318 "cp-parse.y"
{ if (pending_inlines) do_pending_inlines (); ;
    break;}
case 12:
#line 320 "cp-parse.y"
{ if (pending_inlines) do_pending_inlines (); ;
    break;}
case 14:
#line 323 "cp-parse.y"
{ if (TREE_CHAIN (yyvsp[-2].ttype)) yyvsp[-2].ttype = combine_strings (yyvsp[-2].ttype);
		  assemble_asm (yyvsp[-2].ttype); ;
    break;}
case 15:
#line 326 "cp-parse.y"
{ pop_lang_context (); ;
    break;}
case 16:
#line 328 "cp-parse.y"
{ pop_lang_context (); ;
    break;}
case 17:
#line 330 "cp-parse.y"
{ if (pending_inlines) do_pending_inlines ();
		  pop_lang_context (); ;
    break;}
case 18:
#line 333 "cp-parse.y"
{ if (pending_inlines) do_pending_inlines ();
		  pop_lang_context (); ;
    break;}
case 19:
#line 339 "cp-parse.y"
{ push_lang_context (yyvsp[0].ttype); ;
    break;}
case 20:
#line 344 "cp-parse.y"
{ begin_template_parm_list (); ;
    break;}
case 21:
#line 346 "cp-parse.y"
{ yyval.ttype = end_template_parm_list (yyvsp[-1].ttype); ;
    break;}
case 22:
#line 351 "cp-parse.y"
{ yyval.ttype = process_template_parm (NULL_TREE, yyvsp[0].ttype); ;
    break;}
case 23:
#line 353 "cp-parse.y"
{ yyval.ttype = process_template_parm (yyvsp[-2].ttype, yyvsp[0].ttype); ;
    break;}
case 24:
#line 364 "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 25:
#line 370 "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 26:
#line 377 "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 28:
#line 388 "cp-parse.y"
{ warning ("use of `overload' is an anachronism"); ;
    break;}
case 29:
#line 392 "cp-parse.y"
{ declare_overloaded (yyvsp[0].ttype); ;
    break;}
case 30:
#line 394 "cp-parse.y"
{ declare_overloaded (yyvsp[0].ttype); ;
    break;}
case 31:
#line 401 "cp-parse.y"
{ yychar = '{'; goto template1; ;
    break;}
case 33:
#line 404 "cp-parse.y"
{ yychar = '{'; goto template1; ;
    break;}
case 35:
#line 407 "cp-parse.y"
{ yychar = ':'; goto template1; ;
    break;}
case 37:
#line 410 "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 39:
#line 423 "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 40:
#line 428 "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 41:
#line 435 "cp-parse.y"
{
		  tree d;
		  int momentary;
		  momentary = suspend_momentary ();
		  d = start_decl (yyvsp[-4].ttype, /*current_declspecs*/NULL_TREE, 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 ((int) yyvsp[0].itype, yyvsp[-5].ttype, d);
		  resume_momentary (momentary);
		;
    break;}
case 42:
#line 450 "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 ((int) yyvsp[0].itype, yyvsp[-6].ttype, d);
		      yychar = YYEMPTY;
		    }
		  note_list_got_semicolon (yyvsp[-5].ttype);
		  resume_momentary (momentary);
		;
    break;}
case 43:
#line 471 "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 ((int) yyvsp[0].itype, yyvsp[-3].ttype, d);
		;
    break;}
case 44:
#line 479 "cp-parse.y"
{ end_template_decl (yyvsp[-2].ttype, 0, 0); ;
    break;}
case 45:
#line 480 "cp-parse.y"
{ end_template_decl (yyvsp[-2].ttype, 0, 0); ;
    break;}
case 46:
#line 483 "cp-parse.y"
{ yyval.itype = '{'; ;
    break;}
case 47:
#line 484 "cp-parse.y"
{ yyval.itype = ':'; ;
    break;}
case 48:
#line 485 "cp-parse.y"
{ yyval.itype = ';'; ;
    break;}
case 49:
#line 486 "cp-parse.y"
{ yyval.itype = '='; ;
    break;}
case 50:
#line 487 "cp-parse.y"
{ yyval.itype = RETURN; ;
    break;}
case 51:
#line 492 "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 52:
#line 497 "cp-parse.y"
{;
    break;}
case 53:
#line 500 "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 54:
#line 505 "cp-parse.y"
{
		  end_exception_decls ();
		  note_list_got_semicolon (yyval.ttype);
		;
    break;}
case 55:
#line 511 "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 56:
#line 518 "cp-parse.y"
{ pedwarn ("empty declaration"); ;
    break;}
case 57:
#line 520 "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 61:
#line 544 "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 62:
#line 557 "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 63:
#line 570 "cp-parse.y"
{ finish_function (lineno, 0);
		  if (yyval.ttype) process_next_inline (yyval.ttype); ;
    break;}
case 64:
#line 573 "cp-parse.y"
{ finish_function (lineno, 0);
		  if (yyval.ttype) process_next_inline (yyval.ttype); ;
    break;}
case 65:
#line 576 "cp-parse.y"
{ finish_function (lineno, 0);
		  if (yyval.ttype) process_next_inline (yyval.ttype); ;
    break;}
case 66:
#line 579 "cp-parse.y"
{;
    break;}
case 67:
#line 581 "cp-parse.y"
{;
    break;}
case 68:
#line 583 "cp-parse.y"
{;
    break;}
case 69:
#line 588 "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 70:
#line 593 "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 71:
#line 598 "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 72:
#line 603 "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 73:
#line 608 "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 74:
#line 613 "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 75:
#line 618 "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 76:
#line 623 "cp-parse.y"
{ start_function (NULL_TREE, TREE_VALUE (yyval.ttype), NULL_TREE, 1);
		  reinit_parse_for_function (); ;
    break;}
case 77:
#line 630 "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 78:
#line 639 "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 79:
#line 648 "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 80:
#line 655 "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 81:
#line 664 "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 82:
#line 673 "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 83:
#line 680 "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 84:
#line 689 "cp-parse.y"
{
		  if (! current_function_parms_stored)
		    store_parm_decls ();
		  yyval.ttype = yyvsp[0].ttype;
		;
    break;}
case 85:
#line 697 "cp-parse.y"
{ store_return_init (yyval.ttype, NULL_TREE); ;
    break;}
case 86:
#line 699 "cp-parse.y"
{ store_return_init (yyval.ttype, yyvsp[0].ttype); ;
    break;}
case 87:
#line 701 "cp-parse.y"
{ store_return_init (yyval.ttype, yyvsp[-1].ttype); ;
    break;}
case 88:
#line 703 "cp-parse.y"
{ store_return_init (yyval.ttype, NULL_TREE); ;
    break;}
case 89:
#line 708 "cp-parse.y"
{
		  if (yyvsp[0].itype == 0)
		    error ("no base initializers given following ':'");
		  setup_vtbl_ptr ();
		;
    break;}
case 90:
#line 717 "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 91:
#line 740 "cp-parse.y"
{ yyval.itype = 0; ;
    break;}
case 92:
#line 742 "cp-parse.y"
{ yyval.itype = 1; ;
    break;}
case 95:
#line 748 "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 96:
#line 755 "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 97:
#line 762 "cp-parse.y"
{
		  expand_member_init (C_C_D, yyval.ttype, yyvsp[-1].ttype);
		;
    break;}
case 98:
#line 766 "cp-parse.y"
{ expand_member_init (C_C_D, yyval.ttype, void_type_node); ;
    break;}
case 99:
#line 768 "cp-parse.y"
{ expand_member_init (C_C_D, yyval.ttype, yyvsp[-1].ttype); ;
    break;}
case 100:
#line 770 "cp-parse.y"
{ expand_member_init (C_C_D, yyval.ttype, void_type_node); ;
    break;}
case 101:
#line 772 "cp-parse.y"
{ expand_member_init (C_C_D, yyval.ttype, yyvsp[-1].ttype); ;
    break;}
case 102:
#line 774 "cp-parse.y"
{ expand_member_init (C_C_D, yyval.ttype, void_type_node); ;
    break;}
case 103:
#line 776 "cp-parse.y"
{
		  do_member_init (yyval.ttype, yyvsp[-3].ttype, yyvsp[-1].ttype);
		;
    break;}
case 104:
#line 780 "cp-parse.y"
{
		  do_member_init (yyval.ttype, yyvsp[-1].ttype, void_type_node);
		;
    break;}
case 114:
#line 804 "cp-parse.y"
{ yyval.ttype = build_parse_node (BIT_NOT_EXPR,yyvsp[0].ttype);;
    break;}
case 116:
#line 810 "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)
		    {
		      /* We set template_type_seen_before_scope to be
			 an error_mark_node so we can avoid meaningless
			 and unhelpful syntax errors later.  */
		      if (yyval.ttype != error_mark_node)
			template_type_seen_before_scope = TYPE_IDENTIFIER (yyval.ttype);
		      else
			template_type_seen_before_scope = error_mark_node;
		      yychar = YYLEX;
		    }
		;
    break;}
case 117:
#line 839 "cp-parse.y"
{ yyval.ttype = lookup_template_class (yyval.ttype, yyvsp[-1].ttype, NULL_TREE); ;
    break;}
case 118:
#line 841 "cp-parse.y"
{ yyval.ttype = lookup_template_class (yyval.ttype, yyvsp[-1].ttype, NULL_TREE); ;
    break;}
case 119:
#line 847 "cp-parse.y"
{ yyungetc ('{', 1); yyval.ttype = 0; ;
    break;}
case 120:
#line 848 "cp-parse.y"
{ yyungetc (':', 1); yyval.ttype = 0; ;
    break;}
case 121:
#line 850 "cp-parse.y"
{ yyval.ttype = instantiate_class_template (yyvsp[0].ttype, 1); ;
    break;}
case 122:
#line 855 "cp-parse.y"
{ yyval.ttype = instantiate_class_template (yyvsp[0].ttype, 1); ;
    break;}
case 123:
#line 860 "cp-parse.y"
{ yyval.ttype = build_tree_list (NULL_TREE, yyval.ttype); ;
    break;}
case 124:
#line 862 "cp-parse.y"
{ yyval.ttype = chainon (yyval.ttype, build_tree_list (NULL_TREE, yyvsp[0].ttype)); ;
    break;}
case 125:
#line 867 "cp-parse.y"
{ yyval.ttype = groktypename (yyval.ttype); ;
    break;}
case 127:
#line 873 "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 128:
#line 904 "cp-parse.y"
{
		  int old_interface = interface_unknown;

		  interface_unknown = 1;
		  yyval.ttype = finish_struct (yyvsp[-3].ttype, yyvsp[-1].ttype, 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 129:
#line 924 "cp-parse.y"
{ yyval.ttype = NULL_TREE; ;
    break;}
case 130:
#line 926 "cp-parse.y"
{ yyval.ttype = yyvsp[0].ttype; ;
    break;}
case 131:
#line 931 "cp-parse.y"
{ yyval.ttype = NULL_TREE; /* never used from here... */;
    break;}
case 132:
#line 933 "cp-parse.y"
{ yyval.ttype = yyvsp[-1].ttype; /*???*/ ;
    break;}
case 133:
#line 937 "cp-parse.y"
{ yyval.code = NEGATE_EXPR; ;
    break;}
case 134:
#line 939 "cp-parse.y"
{ yyval.code = CONVERT_EXPR; ;
    break;}
case 135:
#line 941 "cp-parse.y"
{ yyval.code = PREINCREMENT_EXPR; ;
    break;}
case 136:
#line 943 "cp-parse.y"
{ yyval.code = PREDECREMENT_EXPR; ;
    break;}
case 137:
#line 945 "cp-parse.y"
{ yyval.code = TRUTH_NOT_EXPR; ;
    break;}
case 138:
#line 949 "cp-parse.y"
{ yyval.ttype = build_x_compound_expr (yyval.ttype); ;
    break;}
case 140:
#line 956 "cp-parse.y"
{ error ("ANSI C++ forbids an empty condition for `%s'",
			 cond_stmt_keyword);
		  yyval.ttype = integer_zero_node; ;
    break;}
case 141:
#line 960 "cp-parse.y"
{ yyval.ttype = yyvsp[-1].ttype; ;
    break;}
case 142:
#line 965 "cp-parse.y"
{ yyval.ttype = build_tree_list (NULL_TREE, yyval.ttype); ;
    break;}
case 143:
#line 967 "cp-parse.y"
{ chainon (yyval.ttype, build_tree_list (NULL_TREE, yyvsp[0].ttype)); ;
    break;}
case 144:
#line 969 "cp-parse.y"
{ chainon (yyval.ttype, build_tree_list (NULL_TREE, error_mark_node)); ;
    break;}
case 145:
#line 974 "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 146:
#line 980 "cp-parse.y"
{ yyvsp[0].itype = pedantic;
		  pedantic = 0; ;
    break;}
case 147:
#line 983 "cp-parse.y"
{ yyval.ttype = yyvsp[0].ttype;
		  pedantic = yyvsp[-2].itype; ;
    break;}
case 148:
#line 986 "cp-parse.y"
{ yyval.ttype = build_x_indirect_ref (yyvsp[0].ttype, "unary *"); ;
    break;}
case 149:
#line 988 "cp-parse.y"
{ yyval.ttype = build_x_unary_op (ADDR_EXPR, yyvsp[0].ttype); ;
    break;}
case 150:
#line 990 "cp-parse.y"
{ yyval.ttype = build_x_unary_op (BIT_NOT_EXPR, yyvsp[0].ttype); ;
    break;}
case 151:
#line 992 "cp-parse.y"
{ yyval.ttype = build_x_unary_op ((enum tree_code) 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 152:
#line 998 "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 153:
#line 1003 "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);
		  else if (TREE_CODE (yyvsp[0].ttype) == TREE_LIST)
	            {
		      tree t = TREE_VALUE (yyvsp[0].ttype);
		      if (t != NULL_TREE
			  && TREE_CODE (TREE_TYPE (t)) == FUNCTION_TYPE)
			pedwarn ("ANSI C++ forbids using sizeof() on a function");
		    }
		  yyval.ttype = c_sizeof (TREE_TYPE (yyvsp[0].ttype)); ;
    break;}
case 154:
#line 1023 "cp-parse.y"
{ yyval.ttype = c_sizeof (groktypename (yyvsp[-1].ttype)); ;
    break;}
case 155:
#line 1025 "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 156:
#line 1058 "cp-parse.y"
{ yyval.ttype = c_alignof (groktypename (yyvsp[-1].ttype)); ;
    break;}
case 157:
#line 1061 "cp-parse.y"
{ yyval.ttype = build_new (yyvsp[-1].ttype, yyvsp[0].ttype, NULL_TREE, yyval.ttype != NULL_TREE); ;
    break;}
case 158:
#line 1063 "cp-parse.y"
{ yyval.ttype = build_new (yyvsp[-2].ttype, yyvsp[0].ttype, NULL_TREE, yyval.ttype != NULL_TREE); ;
    break;}
case 159:
#line 1065 "cp-parse.y"
{ yyval.ttype = build_new (yyvsp[-4].ttype, yyvsp[-3].ttype, yyvsp[-1].ttype, yyval.ttype != NULL_TREE); ;
    break;}
case 160:
#line 1067 "cp-parse.y"
{ yyval.ttype = build_new (yyvsp[-5].ttype, yyvsp[-3].ttype, yyvsp[-1].ttype, yyval.ttype != NULL_TREE); ;
    break;}
case 161:
#line 1069 "cp-parse.y"
{ yyval.ttype = build_new (yyvsp[-2].ttype, yyvsp[-1].ttype, NULL_TREE, yyval.ttype != NULL_TREE); ;
    break;}
case 162:
#line 1071 "cp-parse.y"
{ yyval.ttype = build_new (yyvsp[-3].ttype, yyvsp[-1].ttype, NULL_TREE, yyval.ttype != NULL_TREE); ;
    break;}
case 163:
#line 1073 "cp-parse.y"
{ yyval.ttype = build_new (yyvsp[-3].ttype, yyvsp[-2].ttype, yyvsp[0].ttype, yyval.ttype != NULL_TREE); ;
    break;}
case 164:
#line 1075 "cp-parse.y"
{ yyval.ttype = build_new (yyvsp[-4].ttype, yyvsp[-2].ttype, yyvsp[0].ttype, yyval.ttype != NULL_TREE); ;
    break;}
case 165:
#line 1083 "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 != NULL_TREE);
		;
    break;}
case 166:
#line 1093 "cp-parse.y"
{ goto illegal_new_array; ;
    break;}
case 167:
#line 1096 "cp-parse.y"
{ yyval.ttype = build_new (yyvsp[-4].ttype, build_decl_list (yyvsp[-2].ttype, yyvsp[-1].ttype), NULL_TREE, yyval.ttype != NULL_TREE); ;
    break;}
case 168:
#line 1098 "cp-parse.y"
{ yyval.ttype = build_new (yyvsp[-5].ttype, build_decl_list (yyvsp[-2].ttype, yyvsp[-1].ttype), NULL_TREE, yyval.ttype != NULL_TREE); ;
    break;}
case 169:
#line 1100 "cp-parse.y"
{ yyval.ttype = build_new (yyvsp[-4].ttype, build_decl_list (yyvsp[-2].ttype, yyvsp[-1].ttype), NULL_TREE, yyval.ttype != NULL_TREE); ;
    break;}
case 170:
#line 1102 "cp-parse.y"
{ yyval.ttype = build_new (yyvsp[-5].ttype, build_decl_list (yyvsp[-2].ttype, yyvsp[-1].ttype), NULL_TREE, yyval.ttype != NULL_TREE); ;
    break;}
case 171:
#line 1105 "cp-parse.y"
{ yyungetc (':', 1); yyval.ttype = build_new (yyvsp[-1].ttype, yyvsp[0].ttype, NULL_TREE, yyval.ttype != NULL_TREE); ;
    break;}
case 172:
#line 1107 "cp-parse.y"
{ yyungetc (':', 1); yyval.ttype = build_new (yyvsp[-2].ttype, yyvsp[0].ttype, NULL_TREE, yyval.ttype != NULL_TREE); ;
    break;}
case 173:
#line 1110 "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 174:
#line 1138 "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 175:
#line 1157 "cp-parse.y"
{
		  tree maxindex = build_binary_op (MINUS_EXPR, yyvsp[-2].ttype,
						   integer_one_node, 1);
		  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 177:
#line 1184 "cp-parse.y"
{ tree type = groktypename (yyvsp[-2].ttype);
		  yyval.ttype = build_c_cast (type, yyvsp[0].ttype); ;
    break;}
case 178:
#line 1187 "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, (tree *) 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 179:
#line 1202 "cp-parse.y"
{ yyval.ttype = build_headof (yyvsp[-1].ttype); ;
    break;}
case 180:
#line 1204 "cp-parse.y"
{ yyval.ttype = build_classof (yyvsp[-1].ttype); ;
    break;}
case 181:
#line 1206 "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 183:
#line 1219 "cp-parse.y"
{ yyval.ttype = build_x_binary_op (yyvsp[-1].code, yyval.ttype, yyvsp[0].ttype); ;
    break;}
case 184:
#line 1221 "cp-parse.y"
{ yyval.ttype = build_x_binary_op (yyvsp[-1].code, yyval.ttype, yyvsp[0].ttype); ;
    break;}
case 185:
#line 1223 "cp-parse.y"
{ yyval.ttype = build_x_binary_op (yyvsp[-1].code, yyval.ttype, yyvsp[0].ttype); ;
    break;}
case 186:
#line 1225 "cp-parse.y"
{ yyval.ttype = build_x_binary_op (yyvsp[-1].code, yyval.ttype, yyvsp[0].ttype); ;
    break;}
case 187:
#line 1227 "cp-parse.y"
{ yyval.ttype = build_x_binary_op (yyvsp[-1].code, yyval.ttype, yyvsp[0].ttype); ;
    break;}
case 188:
#line 1229 "cp-parse.y"
{ yyval.ttype = build_x_binary_op (yyvsp[-1].code, yyval.ttype, yyvsp[0].ttype); ;
    break;}
case 189:
#line 1231 "cp-parse.y"
{ yyval.ttype = build_x_binary_op (yyvsp[-1].code, yyval.ttype, yyvsp[0].ttype); ;
    break;}
case 190:
#line 1233 "cp-parse.y"
{ yyval.ttype = build_x_binary_op (yyvsp[-1].code, yyval.ttype, yyvsp[0].ttype); ;
    break;}
case 191:
#line 1235 "cp-parse.y"
{ yyval.ttype = build_x_binary_op (LT_EXPR, yyval.ttype, yyvsp[0].ttype); ;
    break;}
case 192:
#line 1237 "cp-parse.y"
{ yyval.ttype = build_x_binary_op (GT_EXPR, yyval.ttype, yyvsp[0].ttype); ;
    break;}
case 193:
#line 1239 "cp-parse.y"
{ yyval.ttype = build_x_binary_op (yyvsp[-1].code, yyval.ttype, yyvsp[0].ttype); ;
    break;}
case 194:
#line 1241 "cp-parse.y"
{ yyval.ttype = build_x_binary_op (yyvsp[-1].code, yyval.ttype, yyvsp[0].ttype); ;
    break;}
case 195:
#line 1243 "cp-parse.y"
{ yyval.ttype = build_x_binary_op (yyvsp[-1].code, yyval.ttype, yyvsp[0].ttype); ;
    break;}
case 196:
#line 1245 "cp-parse.y"
{ yyval.ttype = build_x_binary_op (yyvsp[-1].code, yyval.ttype, yyvsp[0].ttype); ;
    break;}
case 197:
#line 1247 "cp-parse.y"
{ yyval.ttype = build_x_binary_op (yyvsp[-1].code, yyval.ttype, yyvsp[0].ttype); ;
    break;}
case 198:
#line 1249 "cp-parse.y"
{ yyval.ttype = build_x_binary_op (TRUTH_ANDIF_EXPR, yyval.ttype, yyvsp[0].ttype); ;
    break;}
case 199:
#line 1251 "cp-parse.y"
{ yyval.ttype = build_x_binary_op (TRUTH_ORIF_EXPR, yyval.ttype, yyvsp[0].ttype); ;
    break;}
case 200:
#line 1253 "cp-parse.y"
{ yyval.ttype = build_x_conditional_expr (yyval.ttype, yyvsp[-2].ttype, yyvsp[0].ttype); ;
    break;}
case 201:
#line 1255 "cp-parse.y"
{ yyval.ttype = build_modify_expr (yyval.ttype, NOP_EXPR, yyvsp[0].ttype); ;
    break;}
case 202:
#line 1257 "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 203:
#line 1264 "cp-parse.y"
{ yyval.ttype = build_m_component_ref (yyval.ttype, build_indirect_ref (yyvsp[0].ttype, 0)); ;
    break;}
case 204:
#line 1267 "cp-parse.y"
{ yyval.ttype = build_x_binary_op (MEMBER_REF, yyval.ttype, yyvsp[0].ttype); ;
    break;}
case 205:
#line 1283 "cp-parse.y"
{ yyval.ttype = do_identifier (yyval.ttype); ;
    break;}
case 206:
#line 1285 "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 208:
#line 1301 "cp-parse.y"
{ yyval.ttype = combine_strings (yyval.ttype); ;
    break;}
case 209:
#line 1303 "cp-parse.y"
{ yyval.ttype = yyvsp[-1].ttype; ;
    break;}
case 210:
#line 1305 "cp-parse.y"
{ yyval.ttype = error_mark_node; ;
    break;}
case 211:
#line 1307 "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 212:
#line 1315 "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 213:
#line 1330 "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 214:
#line 1334 "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 215:
#line 1342 "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 216:
#line 1352 "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, NULL_TREE);
			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 217:
#line 1402 "cp-parse.y"
{ yyval.ttype = build_component_ref (yyval.ttype, yyvsp[0].ttype, NULL_TREE, 1); ;
    break;}
case 218:
#line 1404 "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 219:
#line 1420 "cp-parse.y"
{ yyval.ttype = build_x_unary_op (POSTINCREMENT_EXPR, yyval.ttype); ;
    break;}
case 220:
#line 1422 "cp-parse.y"
{ yyval.ttype = build_x_unary_op (POSTDECREMENT_EXPR, yyval.ttype); ;
    break;}
case 221:
#line 1426 "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 222:
#line 1449 "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 223:
#line 1493 "cp-parse.y"
{ yyval.ttype = build_functional_cast (yyval.ttype, yyvsp[-1].ttype); ;
    break;}
case 224:
#line 1495 "cp-parse.y"
{ yyval.ttype = build_functional_cast (yyval.ttype, NULL_TREE); ;
    break;}
case 225:
#line 1497 "cp-parse.y"
{ yyval.ttype = build_functional_cast (yyvsp[-3].ttype, yyvsp[-1].ttype); ;
    break;}
case 226:
#line 1499 "cp-parse.y"
{ yyval.ttype = build_functional_cast (yyvsp[-1].ttype, NULL_TREE); ;
    break;}
case 227:
#line 1501 "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
		    {
		      if (TREE_CODE (yyval.ttype) == ADDR_EXPR)
			assemble_external (TREE_OPERAND (yyval.ttype, 0));
		      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 228:
#line 1540 "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 229:
#line 1547 "cp-parse.y"
{ yyval.ttype = build_offset_ref (yyval.ttype, yyvsp[0].ttype); ;
    break;}
case 230:
#line 1549 "cp-parse.y"
{ yyval.ttype = build_member_call (yyval.ttype, yyvsp[-3].ttype, yyvsp[-1].ttype); ;
    break;}
case 231:
#line 1551 "cp-parse.y"
{ yyval.ttype = build_member_call (yyval.ttype, yyvsp[-1].ttype, NULL_TREE); ;
    break;}
case 232:
#line 1553 "cp-parse.y"
{ yyval.ttype = build_method_call (yyval.ttype, yyvsp[-3].ttype, yyvsp[-1].ttype, NULL_TREE,
					  (LOOKUP_NORMAL|LOOKUP_AGGR)); ;
    break;}
case 233:
#line 1556 "cp-parse.y"
{ yyval.ttype = build_method_call (yyval.ttype, yyvsp[-1].ttype, NULL_TREE, NULL_TREE,
					  (LOOKUP_NORMAL|LOOKUP_AGGR)); ;
    break;}
case 234:
#line 1559 "cp-parse.y"
{ yyval.ttype = build_scoped_method_call (yyval.ttype, yyvsp[-4].ttype, yyvsp[-3].ttype, yyvsp[-1].ttype); ;
    break;}
case 235:
#line 1561 "cp-parse.y"
{ yyval.ttype = build_scoped_method_call (yyval.ttype, yyvsp[-2].ttype, yyvsp[-1].ttype, NULL_TREE); ;
    break;}
case 236:
#line 1603 "cp-parse.y"
{ yyval.ttype = NULL_TREE; ;
    break;}
case 237:
#line 1605 "cp-parse.y"
{
		  yyval.ttype = yyvsp[-1].ttype;
		  pedwarn ("old style placement syntax, use () instead");
		;
    break;}
case 238:
#line 1610 "cp-parse.y"
{ yyval.ttype = void_type_node; ;
    break;}
case 239:
#line 1612 "cp-parse.y"
{ yyval.ttype = combine_strings (yyvsp[-1].ttype); ;
    break;}
case 240:
#line 1617 "cp-parse.y"
{ yyval.itype = 0; ;
    break;}
case 241:
#line 1619 "cp-parse.y"
{ yyval.itype = 1; ;
    break;}
case 242:
#line 1623 "cp-parse.y"
{ yyval.ttype = NULL_TREE; ;
    break;}
case 243:
#line 1625 "cp-parse.y"
{ if (yyvsp[0].ttype)
		    error ("extra `::' before `delete' ignored");
		  yyval.ttype = error_mark_node;
		;
    break;}
case 245:
#line 1635 "cp-parse.y"
{ yyval.ttype = chainon (yyval.ttype, yyvsp[0].ttype); ;
    break;}
case 246:
#line 1640 "cp-parse.y"
{
		  if (! current_function_parms_stored)
		    store_parm_decls ();
		  setup_vtbl_ptr ();
		;
    break;}
case 247:
#line 1648 "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 248:
#line 1663 "cp-parse.y"
{
		  yyval.ttype = build_x_arrow (yyval.ttype);
		;
    break;}
case 250:
#line 1673 "cp-parse.y"
{
		  resume_momentary (yyvsp[-1].itype);
		  note_list_got_semicolon (yyval.ttype);
		;
    break;}
case 251:
#line 1679 "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 252:
#line 1687 "cp-parse.y"
{ resume_momentary ((int) yyvsp[-1].itype); ;
    break;}
case 253:
#line 1690 "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 254:
#line 1697 "cp-parse.y"
{
		  shadow_tag (yyval.ttype);
		  note_list_got_semicolon (yyval.ttype);
		;
    break;}
case 255:
#line 1702 "cp-parse.y"
{ warning ("empty declaration"); ;
    break;}
case 258:
#line 1712 "cp-parse.y"
{ yyval.ttype = yyvsp[0].ttype; ;
    break;}
case 259:
#line 1714 "cp-parse.y"
{ yyval.ttype = yyvsp[0].ttype; ;
    break;}
case 260:
#line 1723 "cp-parse.y"
{ yyval.ttype = list_hash_lookup_or_cons (yyval.ttype); ;
    break;}
case 261:
#line 1725 "cp-parse.y"
{ yyval.ttype = hash_tree_chain (yyvsp[0].ttype, yyval.ttype); ;
    break;}
case 262:
#line 1727 "cp-parse.y"
{ yyval.ttype = hash_tree_chain (yyval.ttype, yyvsp[0].ttype); ;
    break;}
case 263:
#line 1729 "cp-parse.y"
{ yyval.ttype = hash_tree_chain (yyvsp[-1].ttype, hash_chainon (yyvsp[0].ttype, yyval.ttype)); ;
    break;}
case 264:
#line 1735 "cp-parse.y"
{ yyval.ttype = build_decl_list (NULL_TREE, yyval.ttype); ;
    break;}
case 265:
#line 1737 "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 266:
#line 1742 "cp-parse.y"
{ yyval.ttype = decl_tree_cons (NULL_TREE, yyvsp[0].ttype, yyval.ttype); ;
    break;}
case 267:
#line 1744 "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 268:
#line 1756 "cp-parse.y"
{ yyval.ttype = IDENTIFIER_AS_LIST (yyval.ttype);
		  TREE_STATIC (yyval.ttype) = 1; ;
    break;}
case 269:
#line 1759 "cp-parse.y"
{ yyval.ttype = IDENTIFIER_AS_LIST (yyval.ttype); ;
    break;}
case 270:
#line 1761 "cp-parse.y"
{ yyval.ttype = hash_tree_chain (yyvsp[0].ttype, yyval.ttype);
		  TREE_STATIC (yyval.ttype) = 1; ;
    break;}
case 271:
#line 1764 "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 272:
#line 1780 "cp-parse.y"
{ yyval.ttype = get_decl_list (yyval.ttype); ;
    break;}
case 273:
#line 1782 "cp-parse.y"
{ yyval.ttype = decl_tree_cons (NULL_TREE, yyvsp[0].ttype, yyval.ttype); ;
    break;}
case 274:
#line 1784 "cp-parse.y"
{ yyval.ttype = decl_tree_cons (NULL_TREE, yyval.ttype, yyvsp[0].ttype); ;
    break;}
case 275:
#line 1786 "cp-parse.y"
{ yyval.ttype = decl_tree_cons (NULL_TREE, yyvsp[-1].ttype, hash_chainon (yyvsp[0].ttype, yyval.ttype)); ;
    break;}
case 276:
#line 1791 "cp-parse.y"
{ yyval.ttype = get_decl_list (yyval.ttype); ;
    break;}
case 277:
#line 1793 "cp-parse.y"
{ yyval.ttype = decl_tree_cons (NULL_TREE, yyvsp[0].ttype, yyval.ttype); ;
    break;}
case 282:
#line 1805 "cp-parse.y"
{ yyval.ttype = TREE_TYPE (yyvsp[-1].ttype);
		  if (pedantic)
		    pedwarn ("ANSI C++ forbids `typeof'"); ;
    break;}
case 283:
#line 1809 "cp-parse.y"
{ yyval.ttype = groktypename (yyvsp[-1].ttype);
		  if (pedantic)
		    pedwarn ("ANSI C++ forbids `typeof'"); ;
    break;}
case 292:
#line 1834 "cp-parse.y"
{ yyval.ttype = NULL_TREE; ;
    break;}
case 293:
#line 1836 "cp-parse.y"
{ if (TREE_CHAIN (yyvsp[-1].ttype)) yyvsp[-1].ttype = combine_strings (yyvsp[-1].ttype); yyval.ttype = yyvsp[-1].ttype; ;
    break;}
case 294:
#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 295:
#line 1847 "cp-parse.y"
{ finish_decl (yyvsp[-1].ttype, yyvsp[0].ttype, yyvsp[-4].ttype, 0);
		  yyval.itype = yyvsp[-2].itype; ;
    break;}
case 296:
#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 297:
#line 1860 "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 298:
#line 1864 "cp-parse.y"
{ finish_decl (yyvsp[-1].ttype, yyvsp[0].ttype, yyvsp[-4].ttype, 0); ;
    break;}
case 299:
#line 1866 "cp-parse.y"
{ tree d = start_decl (yyvsp[-3].ttype, 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 300:
#line 1873 "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 301:
#line 1879 "cp-parse.y"
{ finish_decl (yyvsp[-1].ttype, yyvsp[0].ttype, yyvsp[-4].ttype, 0);
		  yyval.itype = yyvsp[-2].itype; ;
    break;}
case 302:
#line 1882 "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 303:
#line 1894 "cp-parse.y"
{ yyval.ttype = NULL_TREE; ;
    break;}
case 304:
#line 1896 "cp-parse.y"
{ yyval.ttype = yyvsp[-2].ttype; ;
    break;}
case 305:
#line 1901 "cp-parse.y"
{ yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, NULL_TREE); ;
    break;}
case 306:
#line 1903 "cp-parse.y"
{ yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-2].ttype); ;
    break;}
case 307:
#line 1908 "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 308:
#line 1913 "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 309:
#line 1924 "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 310:
#line 1940 "cp-parse.y"
{ yyval.ttype = build_tree_list (NULL_TREE, yyvsp[0].ttype); ;
    break;}
case 311:
#line 1942 "cp-parse.y"
{ yyval.ttype = chainon (yyvsp[-2].ttype, build_tree_list (NULL_TREE, yyvsp[0].ttype)); ;
    break;}
case 313:
#line 1948 "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 314:
#line 1953 "cp-parse.y"
{ yyval.ttype = build_nt (CONSTRUCTOR, NULL_TREE, nreverse (yyvsp[-1].ttype));
		  TREE_HAS_CONSTRUCTOR (yyval.ttype) = 1; ;
    break;}
case 315:
#line 1956 "cp-parse.y"
{ yyval.ttype = build_nt (CONSTRUCTOR, NULL_TREE, nreverse (yyvsp[-2].ttype));
		  TREE_HAS_CONSTRUCTOR (yyval.ttype) = 1; ;
    break;}
case 316:
#line 1959 "cp-parse.y"
{ yyval.ttype = NULL_TREE; ;
    break;}
case 317:
#line 1966 "cp-parse.y"
{ yyval.ttype = build_tree_list (NULL_TREE, yyval.ttype); ;
    break;}
case 318:
#line 1968 "cp-parse.y"
{ yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyval.ttype); ;
    break;}
case 319:
#line 1971 "cp-parse.y"
{ yyval.ttype = build_tree_list (yyvsp[-2].ttype, yyvsp[0].ttype); ;
    break;}
case 320:
#line 1973 "cp-parse.y"
{ yyval.ttype = tree_cons (yyvsp[-2].ttype, yyvsp[0].ttype, yyval.ttype); ;
    break;}
case 321:
#line 1975 "cp-parse.y"
{ yyval.ttype = build_tree_list (yyval.ttype, yyvsp[0].ttype); ;
    break;}
case 322:
#line 1977 "cp-parse.y"
{ yyval.ttype = tree_cons (yyvsp[-2].ttype, yyvsp[0].ttype, yyval.ttype); ;
    break;}
case 323:
#line 1982 "cp-parse.y"
{ yyvsp[0].itype = suspend_momentary ();
		  yyval.ttype = start_enum (yyvsp[-1].ttype); ;
    break;}
case 324:
#line 1985 "cp-parse.y"
{ yyval.ttype = finish_enum (yyvsp[-3].ttype, yyvsp[-2].ttype);
		  resume_momentary ((int) yyvsp[-4].itype);
		  check_for_missing_semicolon (yyvsp[-3].ttype); ;
    break;}
case 325:
#line 1989 "cp-parse.y"
{ yyval.ttype = finish_enum (start_enum (yyvsp[-2].ttype), NULL_TREE);
		  check_for_missing_semicolon (yyval.ttype); ;
    break;}
case 326:
#line 1992 "cp-parse.y"
{ yyvsp[0].itype = suspend_momentary ();
		  yyval.ttype = start_enum (make_anon_name ()); ;
    break;}
case 327:
#line 1995 "cp-parse.y"
{ yyval.ttype = finish_enum (yyvsp[-3].ttype, yyvsp[-2].ttype);
		  resume_momentary ((int) yyvsp[-5].itype);
		  check_for_missing_semicolon (yyvsp[-3].ttype); ;
    break;}
case 328:
#line 1999 "cp-parse.y"
{ yyval.ttype = finish_enum (start_enum (make_anon_name()), NULL_TREE);
		  check_for_missing_semicolon (yyval.ttype); ;
    break;}
case 329:
#line 2002 "cp-parse.y"
{ yyval.ttype = xref_tag (enum_type_node, yyvsp[0].ttype, NULL_TREE); ;
    break;}
case 330:
#line 2006 "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);
		      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, 0));
		      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 331:
#line 2061 "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 335:
#line 2083 "cp-parse.y"
{ if (pedantic)
		    pedwarn ("ANSI C++ forbids comma at end of enumerator list"); ;
    break;}
case 337:
#line 2089 "cp-parse.y"
{ yyval.ttype = build_tree_list (NULL_TREE, yyvsp[0].ttype); ;
    break;}
case 338:
#line 2091 "cp-parse.y"
{ yyval.ttype = build_tree_list (yyvsp[-2].ttype, yyvsp[0].ttype); ;
    break;}
case 339:
#line 2093 "cp-parse.y"
{ error ("storage class specifier `%s' not allowed after struct or class", IDENTIFIER_POINTER (yyvsp[0].ttype));
		;
    break;}
case 340:
#line 2096 "cp-parse.y"
{ error ("type specifier `%s' not allowed after struct or class", IDENTIFIER_POINTER (yyvsp[0].ttype));
		;
    break;}
case 341:
#line 2099 "cp-parse.y"
{ error ("type qualifier `%s' not allowed after struct or class", IDENTIFIER_POINTER (yyvsp[0].ttype));
		;
    break;}
case 342:
#line 2102 "cp-parse.y"
{ error ("no body nor ';' separates two class, struct or union declarations");
		;
    break;}
case 343:
#line 2108 "cp-parse.y"
{ aggr1: current_aggr = yyval.ttype; yyval.ttype = yyvsp[0].ttype; ;
    break;}
case 344:
#line 2110 "cp-parse.y"
{ current_aggr = yyval.ttype; yyval.ttype = yyvsp[0].ttype; ;
    break;}
case 345:
#line 2112 "cp-parse.y"
{ yyungetc (':', 1); goto aggr1; ;
    break;}
case 346:
#line 2114 "cp-parse.y"
{ yyungetc ('{', 1);
		aggr2:
		  current_aggr = yyval.ttype;
		  yyval.ttype = yyvsp[-1].ttype;
		  overload_template_name (yyval.ttype, 0); ;
    break;}
case 347:
#line 2120 "cp-parse.y"
{ yyungetc (':', 1); goto aggr2; ;
    break;}
case 348:
#line 2125 "cp-parse.y"
{ current_aggr = yyval.ttype; yyval.ttype = yyvsp[0].ttype; ;
    break;}
case 349:
#line 2130 "cp-parse.y"
{
		  yyval.ttype = xref_tag (current_aggr, yyvsp[0].ttype, NULL_TREE);
		;
    break;}
case 350:
#line 2134 "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 351:
#line 2142 "cp-parse.y"
{
		  yyval.ttype = xref_defn_tag (current_aggr, yyvsp[0].ttype, NULL_TREE);
		;
    break;}
case 352:
#line 2146 "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 353:
#line 2155 "cp-parse.y"
{ yyval.ttype = xref_tag (yyval.ttype, make_anon_name (), NULL_TREE);
		  yyungetc ('{', 1); ;
    break;}
case 356:
#line 2163 "cp-parse.y"
{ yyval.ttype = NULL_TREE; ;
    break;}
case 357:
#line 2165 "cp-parse.y"
{ yyungetc(':', 1); yyval.ttype = NULL_TREE; ;
    break;}
case 358:
#line 2167 "cp-parse.y"
{ yyval.ttype = yyvsp[0].ttype; ;
    break;}
case 360:
#line 2173 "cp-parse.y"
{ yyval.ttype = chainon (yyval.ttype, yyvsp[0].ttype); ;
    break;}
case 361:
#line 2178 "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 362:
#line 2182 "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 363:
#line 2186 "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 364:
#line 2190 "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 365:
#line 2197 "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 366:
#line 2206 "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 369:
#line 2224 "cp-parse.y"
{ if (yyval.ttype != ridpointers[(int)RID_VIRTUAL])
		    sorry ("non-virtual visibility");
		  yyval.itype = visibility_default_virtual; ;
    break;}
case 370:
#line 2228 "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 371:
#line 2254 "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 372:
#line 2263 "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 373:
#line 2290 "cp-parse.y"
{ yyval.ttype = NULL_TREE; ;
    break;}
case 374:
#line 2292 "cp-parse.y"
{ yyval.ttype = build_tree_list ((tree)visibility_default, yyval.ttype); ;
    break;}
case 375:
#line 2294 "cp-parse.y"
{ yyval.ttype = chainon (yyval.ttype, build_tree_list ((tree) yyvsp[-2].itype, yyvsp[0].ttype)); ;
    break;}
case 377:
#line 2300 "cp-parse.y"
{ if (yyval.ttype == void_type_node) yyval.ttype = NULL_TREE; ;
    break;}
case 378:
#line 2302 "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 379:
#line 2305 "cp-parse.y"
{ if (pedantic)
		    pedwarn ("ANSI C++ forbids extra semicolons here"); ;
    break;}
case 380:
#line 2311 "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 381:
#line 2375 "cp-parse.y"
{ yyval.ttype = groktypefield (yyval.ttype, yyvsp[-2].ttype); ;
    break;}
case 382:
#line 2377 "cp-parse.y"
{ error ("missing ';' before right brace");
		  yyungetc ('}', 0);
		  yyval.ttype = groktypefield (yyval.ttype, yyvsp[-2].ttype); ;
    break;}
case 383:
#line 2381 "cp-parse.y"
{ yyval.ttype = groktypefield (yyval.ttype, empty_parms ()); ;
    break;}
case 384:
#line 2383 "cp-parse.y"
{ error ("missing ';' before right brace");
		  yyungetc ('}', 0);
		  yyval.ttype = groktypefield (yyval.ttype, empty_parms ()); ;
    break;}
case 385:
#line 2387 "cp-parse.y"
{ goto do_components; ;
    break;}
case 386:
#line 2390 "cp-parse.y"
{ yyval.ttype = grokfield (yyvsp[-1].ttype, yyval.ttype,
				  NULL_TREE, NULL_TREE, NULL_TREE); ;
    break;}
case 387:
#line 2393 "cp-parse.y"
{ error ("missing ';' before right brace");
		  yyungetc ('}', 0);
		  goto do_components; ;
    break;}
case 388:
#line 2397 "cp-parse.y"
{ yyval.ttype = groktypefield (yyval.ttype, yyvsp[-2].ttype); ;
    break;}
case 389:
#line 2399 "cp-parse.y"
{ error ("missing ';' before right brace");
		  yyungetc ('}', 0);
		  yyval.ttype = groktypefield (yyval.ttype, yyvsp[-2].ttype); ;
    break;}
case 390:
#line 2403 "cp-parse.y"
{ yyval.ttype = groktypefield (yyval.ttype, empty_parms ()); ;
    break;}
case 391:
#line 2405 "cp-parse.y"
{ error ("missing ';' before right brace");
		  yyungetc ('}', 0);
		  yyval.ttype = groktypefield (yyval.ttype, empty_parms ()); ;
    break;}
case 392:
#line 2409 "cp-parse.y"
{ yyval.ttype = grokbitfield (NULL_TREE, NULL_TREE, yyvsp[-1].ttype); ;
    break;}
case 393:
#line 2411 "cp-parse.y"
{ error ("missing ';' before right brace");
		  yyungetc ('}', 0);
		  yyval.ttype = grokbitfield (NULL_TREE, NULL_TREE, yyvsp[-1].ttype); ;
    break;}
case 394:
#line 2415 "cp-parse.y"
{ yyval.ttype = NULL_TREE; ;
    break;}
case 395:
#line 2420 "cp-parse.y"
{ yyval.ttype = finish_method (yyval.ttype); ;
    break;}
case 396:
#line 2422 "cp-parse.y"
{ yyval.ttype = finish_method (yyval.ttype); ;
    break;}
case 397:
#line 2424 "cp-parse.y"
{ yyval.ttype = grokfield (yyval.ttype, NULL_TREE, yyvsp[-1].ttype, NULL_TREE, NULL_TREE); ;
    break;}
case 398:
#line 2426 "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 399:
#line 2433 "cp-parse.y"
{ yyval.ttype = NULL_TREE; ;
    break;}
case 401:
#line 2436 "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 402:
#line 2448 "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 403:
#line 2452 "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 404:
#line 2456 "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 405:
#line 2460 "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 406:
#line 2464 "cp-parse.y"
{ current_declspecs = yyvsp[-2].ttype;
		  yyval.ttype = grokbitfield (NULL_TREE, NULL_TREE, yyvsp[0].ttype); ;
    break;}
case 407:
#line 2470 "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 408:
#line 2473 "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 409:
#line 2476 "cp-parse.y"
{ yyval.ttype = grokbitfield (yyval.ttype, current_declspecs, yyvsp[-1].ttype);
		  cplus_decl_attributes (yyval.ttype, yyvsp[0].ttype); ;
    break;}
case 410:
#line 2479 "cp-parse.y"
{ yyval.ttype = grokbitfield (yyval.ttype, current_declspecs, yyvsp[-1].ttype);
		  cplus_decl_attributes (yyval.ttype, yyvsp[0].ttype); ;
    break;}
case 411:
#line 2482 "cp-parse.y"
{ yyval.ttype = grokbitfield (NULL_TREE, NULL_TREE, yyvsp[0].ttype); ;
    break;}
case 413:
#line 2492 "cp-parse.y"
{ TREE_CHAIN (yyvsp[0].ttype) = yyval.ttype; yyval.ttype = yyvsp[0].ttype; ;
    break;}
case 414:
#line 2497 "cp-parse.y"
{ yyval.ttype = build_enumerator (yyval.ttype, NULL_TREE); ;
    break;}
case 415:
#line 2499 "cp-parse.y"
{ yyval.ttype = build_enumerator (yyval.ttype, yyvsp[0].ttype); ;
    break;}
case 416:
#line 2504 "cp-parse.y"
{ yyval.ttype = build_decl_list (yyval.ttype, yyvsp[0].ttype); ;
    break;}
case 417:
#line 2506 "cp-parse.y"
{ yyval.ttype = build_decl_list (yyval.ttype, yyvsp[0].ttype); ;
    break;}
case 418:
#line 2511 "cp-parse.y"
{ yyval.ttype = NULL_TREE; ;
    break;}
case 420:
#line 2514 "cp-parse.y"
{ yyval.ttype = yyvsp[0].ttype; ;
    break;}
case 421:
#line 2519 "cp-parse.y"
{ yyval.ttype = IDENTIFIER_AS_LIST (yyval.ttype); ;
    break;}
case 422:
#line 2521 "cp-parse.y"
{ yyval.ttype = decl_tree_cons (NULL_TREE, yyvsp[0].ttype, yyval.ttype); ;
    break;}
case 423:
#line 2526 "cp-parse.y"
{ yyval.ttype = NULL_TREE; ;
    break;}
case 424:
#line 2528 "cp-parse.y"
{ yyval.ttype = decl_tree_cons (NULL_TREE, yyvsp[0].ttype, yyval.ttype); ;
    break;}
case 425:
#line 2536 "cp-parse.y"
{ yyval.itype = suspend_momentary (); ;
    break;}
case 426:
#line 2537 "cp-parse.y"
{ resume_momentary ((int) yyvsp[-1].itype); yyval.ttype = yyvsp[0].ttype; ;
    break;}
case 427:
#line 2543 "cp-parse.y"
{ yyval.ttype = build_parse_node (CALL_EXPR, yyval.ttype, yyvsp[-2].ttype, yyvsp[0].ttype); ;
    break;}
case 428:
#line 2545 "cp-parse.y"
{ yyval.ttype = build_parse_node (CALL_EXPR, yyval.ttype, yyvsp[-2].ttype, yyvsp[0].ttype); ;
    break;}
case 429:
#line 2547 "cp-parse.y"
{ yyval.ttype = build_parse_node (CALL_EXPR, yyval.ttype, empty_parms (), yyvsp[0].ttype); ;
    break;}
case 430:
#line 2549 "cp-parse.y"
{ yyval.ttype = build_parse_node (CALL_EXPR, yyval.ttype, NULL_TREE, NULL_TREE); ;
    break;}
case 431:
#line 2551 "cp-parse.y"
{ yyval.ttype = build_parse_node (ARRAY_REF, yyval.ttype, yyvsp[-1].ttype); ;
    break;}
case 432:
#line 2553 "cp-parse.y"
{ yyval.ttype = build_parse_node (ARRAY_REF, yyval.ttype, NULL_TREE); ;
    break;}
case 433:
#line 2555 "cp-parse.y"
{ yyval.ttype = yyvsp[-1].ttype; ;
    break;}
case 434:
#line 2557 "cp-parse.y"
{ yyval.ttype = make_pointer_declarator (yyvsp[-2].ttype, yyvsp[-1].ttype); ;
    break;}
case 435:
#line 2559 "cp-parse.y"
{ see_typename (); ;
    break;}
case 437:
#line 2562 "cp-parse.y"
{ yyval.ttype = make_reference_declarator (yyvsp[-2].ttype, yyvsp[-1].ttype); ;
    break;}
case 438:
#line 2564 "cp-parse.y"
{ yyval.ttype = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ;
    break;}
case 439:
#line 2566 "cp-parse.y"
{ yyval.ttype = make_reference_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ;
    break;}
case 441:
#line 2572 "cp-parse.y"
{ yyval.ttype = build_parse_node (CALL_EXPR, yyval.ttype, yyvsp[-2].ttype, yyvsp[0].ttype); ;
    break;}
case 442:
#line 2574 "cp-parse.y"
{ yyval.ttype = build_parse_node (CALL_EXPR, yyval.ttype, yyvsp[-2].ttype, yyvsp[0].ttype); ;
    break;}
case 443:
#line 2576 "cp-parse.y"
{ yyval.ttype = build_parse_node (CALL_EXPR, yyval.ttype, empty_parms (), yyvsp[0].ttype); ;
    break;}
case 444:
#line 2578 "cp-parse.y"
{ yyval.ttype = build_parse_node (CALL_EXPR, yyval.ttype, NULL_TREE, NULL_TREE); ;
    break;}
case 445:
#line 2580 "cp-parse.y"
{ yyval.ttype = build_parse_node (ARRAY_REF, yyval.ttype, yyvsp[-1].ttype); ;
    break;}
case 446:
#line 2582 "cp-parse.y"
{ yyval.ttype = build_parse_node (ARRAY_REF, yyval.ttype, NULL_TREE); ;
    break;}
case 447:
#line 2584 "cp-parse.y"
{ yyval.ttype = yyvsp[-1].ttype; ;
    break;}
case 448:
#line 2586 "cp-parse.y"
{ see_typename (); ;
    break;}
case 450:
#line 2589 "cp-parse.y"
{ yyval.ttype = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ;
    break;}
case 451:
#line 2591 "cp-parse.y"
{ yyval.ttype = make_reference_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ;
    break;}
case 452:
#line 2599 "cp-parse.y"
{ yyval.ttype = build_parse_node (CALL_EXPR, yyval.ttype, yyvsp[-2].ttype, yyvsp[0].ttype); ;
    break;}
case 453:
#line 2601 "cp-parse.y"
{ yyval.ttype = build_parse_node (CALL_EXPR, yyval.ttype, yyvsp[-2].ttype, yyvsp[0].ttype); ;
    break;}
case 454:
#line 2603 "cp-parse.y"
{ yyval.ttype = build_parse_node (CALL_EXPR, yyval.ttype, empty_parms (), yyvsp[0].ttype); ;
    break;}
case 455:
#line 2605 "cp-parse.y"
{ yyval.ttype = build_parse_node (CALL_EXPR, yyval.ttype, NULL_TREE, NULL_TREE); ;
    break;}
case 456:
#line 2607 "cp-parse.y"
{ yyval.ttype = yyvsp[-1].ttype; ;
    break;}
case 457:
#line 2609 "cp-parse.y"
{ yyval.ttype = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ;
    break;}
case 458:
#line 2611 "cp-parse.y"
{ yyval.ttype = make_reference_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ;
    break;}
case 459:
#line 2613 "cp-parse.y"
{ yyval.ttype = build_parse_node (ARRAY_REF, yyval.ttype, yyvsp[-1].ttype); ;
    break;}
case 460:
#line 2615 "cp-parse.y"
{ yyval.ttype = build_parse_node (ARRAY_REF, yyval.ttype, NULL_TREE); ;
    break;}
case 461:
#line 2617 "cp-parse.y"
{ see_typename (); ;
    break;}
case 462:
#line 2621 "cp-parse.y"
{ see_typename (); ;
    break;}
case 463:
#line 2624 "cp-parse.y"
{
		destructor_name:
		  see_typename ();
		  yyval.ttype = build_parse_node (BIT_NOT_EXPR, yyvsp[0].ttype);
		;
    break;}
case 464:
#line 2630 "cp-parse.y"
{ goto destructor_name; ;
    break;}
case 465:
#line 2632 "cp-parse.y"
{ goto destructor_name; ;
    break;}
case 466:
#line 2634 "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 467:
#line 2643 "cp-parse.y"
{ yyval.ttype = build_push_scope (yyval.ttype, yyvsp[0].ttype); ;
    break;}
case 468:
#line 2645 "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 469:
#line 2647 "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 2649 "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 471:
#line 2651 "cp-parse.y"
{ yyval.ttype = build_push_scope (yyval.ttype, build_parse_node (CALL_EXPR, yyvsp[-4].ttype, NULL_TREE, NULL_TREE)); ;
    break;}
case 472:
#line 2654 "cp-parse.y"
{ yyval.ttype = build_push_scope (yyval.ttype, yyvsp[0].ttype); ;
    break;}
case 473:
#line 2656 "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 474:
#line 2658 "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 475:
#line 2660 "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 476:
#line 2662 "cp-parse.y"
{ yyval.ttype = build_push_scope (yyval.ttype, build_parse_node (CALL_EXPR, yyvsp[-4].ttype, NULL_TREE, NULL_TREE)); ;
    break;}
case 477:
#line 2664 "cp-parse.y"
{ yyval.ttype = build_parse_node (SCOPE_REF, NULL_TREE, yyvsp[0].ttype); ;
    break;}
case 478:
#line 2668 "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 479:
#line 2676 "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 482:
#line 2697 "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 483:
#line 2719 "cp-parse.y"
{ see_typename ();
		  yyval.ttype = yyvsp[-1].ttype; ;
    break;}
case 484:
#line 2723 "cp-parse.y"
{ yyval.ttype = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ;
    break;}
case 485:
#line 2725 "cp-parse.y"
{ yyval.ttype = make_pointer_declarator (yyvsp[0].ttype, NULL_TREE); ;
    break;}
case 486:
#line 2727 "cp-parse.y"
{ see_typename (); ;
    break;}
case 487:
#line 2729 "cp-parse.y"
{ yyval.ttype = yyvsp[-1].ttype; ;
    break;}
case 488:
#line 2731 "cp-parse.y"
{ yyval.ttype = make_reference_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ;
    break;}
case 489:
#line 2733 "cp-parse.y"
{ yyval.ttype = make_reference_declarator (yyvsp[0].ttype, NULL_TREE); ;
    break;}
case 490:
#line 2735 "cp-parse.y"
{ yyval.ttype = build_parse_node (CALL_EXPR, yyval.ttype, yyvsp[-2].ttype, yyvsp[0].ttype); ;
    break;}
case 491:
#line 2737 "cp-parse.y"
{ yyval.ttype = build_parse_node (CALL_EXPR, yyval.ttype, empty_parms (), yyvsp[0].ttype); ;
    break;}
case 492:
#line 2739 "cp-parse.y"
{ yyval.ttype = build_parse_node (ARRAY_REF, yyval.ttype, yyvsp[-1].ttype); ;
    break;}
case 493:
#line 2741 "cp-parse.y"
{ yyval.ttype = build_parse_node (ARRAY_REF, yyval.ttype, NULL_TREE); ;
    break;}
case 494:
#line 2743 "cp-parse.y"
{ yyval.ttype = build_parse_node (CALL_EXPR, NULL_TREE, yyvsp[-2].ttype, yyvsp[0].ttype); ;
    break;}
case 495:
#line 2745 "cp-parse.y"
{ yyval.ttype = build_parse_node (CALL_EXPR, NULL_TREE, empty_parms (), yyvsp[0].ttype); ;
    break;}
case 496:
#line 2747 "cp-parse.y"
{ yyval.ttype = build_parse_node (ARRAY_REF, NULL_TREE, yyvsp[-1].ttype); ;
    break;}
case 497:
#line 2749 "cp-parse.y"
{ yyval.ttype = build_parse_node (ARRAY_REF, NULL_TREE, NULL_TREE); ;
    break;}
case 498:
#line 2754 "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 499:
#line 2761 "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 500:
#line 2768 "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 501:
#line 2775 "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 502:
#line 2785 "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 503:
#line 2792 "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 509:
#line 2819 "cp-parse.y"
{ emit_line_note (input_filename, lineno);
		  pushlevel (0);
		  clear_last_expr ();
		  push_momentary ();
		  expand_start_bindings (0); ;
    break;}
case 511:
#line 2831 "cp-parse.y"
{ if (pedantic)
		    pedwarn ("ANSI C++ forbids label declarations"); ;
    break;}
case 514:
#line 2842 "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 515:
#line 2856 "cp-parse.y"
{;
    break;}
case 517:
#line 2861 "cp-parse.y"
{ yyval.ttype = convert (void_type_node, integer_zero_node); ;
    break;}
case 518:
#line 2863 "cp-parse.y"
{ pop_implicit_try_blocks (NULL_TREE);
		  expand_end_bindings (getdecls (), kept_level_p (), 1);
		  yyval.ttype = poplevel (kept_level_p (), 1, 0);
		  pop_momentary (); ;
    break;}
case 519:
#line 2868 "cp-parse.y"
{ pop_implicit_try_blocks (NULL_TREE);
		  expand_end_bindings (getdecls (), kept_level_p (), 1);
		  yyval.ttype = poplevel (kept_level_p (), 0, 0);
		  pop_momentary (); ;
    break;}
case 520:
#line 2876 "cp-parse.y"
{ cond_stmt_keyword = "if"; ;
    break;}
case 521:
#line 2878 "cp-parse.y"
{ emit_line_note (input_filename, lineno);
		  expand_start_cond (truthvalue_conversion (yyvsp[0].ttype), 0); ;
    break;}
case 523:
#line 2885 "cp-parse.y"
{ finish_stmt (); ;
    break;}
case 524:
#line 2887 "cp-parse.y"
{ pop_implicit_try_blocks (NULL_TREE);
		  expand_end_bindings (getdecls (), kept_level_p (), 1);
		  yyval.ttype = poplevel (kept_level_p (), 1, 0);
		  pop_momentary (); ;
    break;}
case 525:
#line 2895 "cp-parse.y"
{ finish_stmt (); ;
    break;}
case 527:
#line 2901 "cp-parse.y"
{ finish_stmt (); ;
    break;}
case 528:
#line 2903 "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 529:
#line 2916 "cp-parse.y"
{ expand_start_else (); ;
    break;}
case 530:
#line 2918 "cp-parse.y"
{ expand_end_cond ();
		  finish_stmt (); ;
    break;}
case 531:
#line 2921 "cp-parse.y"
{ expand_end_cond ();
		  finish_stmt (); ;
    break;}
case 532:
#line 2924 "cp-parse.y"
{ emit_nop ();
		  emit_line_note (input_filename, lineno);
		  expand_start_loop (1);
		  cond_stmt_keyword = "while"; ;
    break;}
case 533:
#line 2929 "cp-parse.y"
{ expand_exit_loop_if_false (0, truthvalue_conversion (yyvsp[0].ttype)); ;
    break;}
case 534:
#line 2931 "cp-parse.y"
{ expand_end_loop ();
		  finish_stmt (); ;
    break;}
case 535:
#line 2934 "cp-parse.y"
{ emit_nop ();
		  emit_line_note (input_filename, lineno);
		  expand_start_loop_continue_elsewhere (1); ;
    break;}
case 536:
#line 2938 "cp-parse.y"
{ expand_loop_continue_here ();
		  cond_stmt_keyword = "do"; ;
    break;}
case 537:
#line 2941 "cp-parse.y"
{ emit_line_note (input_filename, lineno);
		  expand_exit_loop_if_false (0, truthvalue_conversion (yyvsp[-1].ttype));
		  expand_end_loop ();
		  clear_momentary ();
		  finish_stmt (); ;
    break;}
case 538:
#line 2947 "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 539:
#line 2952 "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 540:
#line 2957 "cp-parse.y"
{ push_momentary (); ;
    break;}
case 541:
#line 2959 "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 ();
		  finish_stmt (); ;
    break;}
case 542:
#line 2966 "cp-parse.y"
{ emit_nop ();
		  emit_line_note (input_filename, lineno);
		  expand_start_loop_continue_elsewhere (1); ;
    break;}
case 543:
#line 2970 "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 544:
#line 2975 "cp-parse.y"
{ push_momentary ();
		  yyvsp[0].itype = lineno; ;
    break;}
case 545:
#line 2978 "cp-parse.y"
{ emit_line_note (input_filename, (int) 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 ();
		    }
		  finish_stmt ();
		;
    break;}
case 546:
#line 2994 "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 (); ;
    break;}
case 547:
#line 3000 "cp-parse.y"
{ expand_end_case (yyvsp[-3].ttype);
		  pop_momentary ();
		  finish_stmt (); ;
    break;}
case 548:
#line 3004 "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 550:
#line 3054 "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 552:
#line 3133 "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 554:
#line 3149 "cp-parse.y"
{ emit_line_note (input_filename, lineno);
		  if ( ! expand_exit_something ())
		    error ("break statement not within loop or switch"); ;
    break;}
case 555:
#line 3153 "cp-parse.y"
{ emit_line_note (input_filename, lineno);
		  if (! expand_continue_loop (0))
		    error ("continue statement not within a loop"); ;
    break;}
case 556:
#line 3157 "cp-parse.y"
{ emit_line_note (input_filename, lineno);
		  c_expand_return (NULL_TREE); ;
    break;}
case 557:
#line 3160 "cp-parse.y"
{ emit_line_note (input_filename, lineno);
		  c_expand_return (yyvsp[-1].ttype);
		  finish_stmt ();
		;
    break;}
case 558:
#line 3165 "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 559:
#line 3172 "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 560:
#line 3181 "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 561:
#line 3191 "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 562:
#line 3199 "cp-parse.y"
{ emit_line_note (input_filename, lineno);
		  expand_computed_goto (yyvsp[-1].ttype); ;
    break;}
case 563:
#line 3202 "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 564:
#line 3208 "cp-parse.y"
{ finish_stmt (); ;
    break;}
case 565:
#line 3210 "cp-parse.y"
{ error ("label must be followed by statement");
		  yyungetc ('}', 0);
		  finish_stmt (); ;
    break;}
case 566:
#line 3214 "cp-parse.y"
{ finish_stmt (); ;
    break;}
case 567:
#line 3217 "cp-parse.y"
{ cplus_expand_throw (NULL_TREE); ;
    break;}
case 568:
#line 3218 "cp-parse.y"
{ cplus_expand_throw (yyvsp[-1].ttype); ;
    break;}
case 569:
#line 3220 "cp-parse.y"
{ cplus_expand_raise (yyvsp[-4].ttype, yyvsp[-2].ttype, NULL_TREE, 0);
		  finish_stmt (); ;
    break;}
case 570:
#line 3223 "cp-parse.y"
{ cplus_expand_raise (yyvsp[-2].ttype, NULL_TREE, NULL_TREE, 0);
		  finish_stmt (); ;
    break;}
case 571:
#line 3226 "cp-parse.y"
{ cplus_expand_raise (yyvsp[-4].ttype, yyvsp[-2].ttype, NULL_TREE, 0);
		  finish_stmt (); ;
    break;}
case 572:
#line 3229 "cp-parse.y"
{ cplus_expand_raise (yyvsp[-2].ttype, NULL_TREE, NULL_TREE, 0);
		  finish_stmt (); ;
    break;}
case 573:
#line 3232 "cp-parse.y"
{ cplus_expand_reraise (yyvsp[-1].ttype);
		  finish_stmt (); ;
    break;}
case 574:
#line 3235 "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);
		;
    break;}
case 575:
#line 3247 "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 576:
#line 3276 "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 577:
#line 3286 "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);
		;
    break;}
case 578:
#line 3298 "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 579:
#line 3327 "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);

		  /* 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 580:
#line 3358 "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 581:
#line 3373 "cp-parse.y"
{
		  yyval.itype = 1;
		  pop_implicit_try_blocks (NULL_TREE);
		;
    break;}
case 582:
#line 3378 "cp-parse.y"
{
		  yyval.itype = 1;
		  pop_implicit_try_blocks (NULL_TREE);
		;
    break;}
case 583:
#line 3383 "cp-parse.y"
{
		  yyval.itype = 0;
		  pop_implicit_try_blocks (NULL_TREE);
		;
    break;}
case 584:
#line 3391 "cp-parse.y"
{ tree label;
		do_label:
		  label = define_label (input_filename, lineno, yyvsp[-1].ttype);
		  if (label)
		    expand_label (label);
		;
    break;}
case 585:
#line 3398 "cp-parse.y"
{ goto do_label; ;
    break;}
case 586:
#line 3400 "cp-parse.y"
{ tree label = define_label (input_filename, lineno, yyvsp[0].ttype);
		  if (label)
		    expand_label (label);
		;
    break;}
case 587:
#line 3406 "cp-parse.y"
{ cplus_expand_start_try (0); ;
    break;}
case 589:
#line 3412 "cp-parse.y"
{
		  yyval.itype = 1;
		  pop_implicit_try_blocks (NULL_TREE);
		;
    break;}
case 590:
#line 3417 "cp-parse.y"
{
		  yyval.itype = 1;
		  pop_implicit_try_blocks (NULL_TREE);
		;
    break;}
case 591:
#line 3422 "cp-parse.y"
{
		  yyval.itype = 0;
		  pop_implicit_try_blocks (NULL_TREE);
		;
    break;}
case 593:
#line 3429 "cp-parse.y"
{ cplus_expand_start_try (0); ;
    break;}
case 595:
#line 3433 "cp-parse.y"
{ yyval.ttype = NULL_TREE; ;
    break;}
case 596:
#line 3435 "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 597:
#line 3455 "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 598:
#line 3472 "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 599:
#line 3490 "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 600:
#line 3510 "cp-parse.y"
{ yyval.ttype = NULL_TREE; ;
    break;}
case 602:
#line 3515 "cp-parse.y"
{ yyval.ttype = NULL_TREE; ;
    break;}
case 603:
#line 3517 "cp-parse.y"
{
		  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 604:
#line 3533 "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 605:
#line 3553 "cp-parse.y"
{ yyval.ttype = NULL_TREE; ;
    break;}
case 606:
#line 3555 "cp-parse.y"
{ yyval.ttype = yyvsp[-1].ttype; ;
    break;}
case 607:
#line 3557 "cp-parse.y"
{ yyval.ttype = NULL_TREE; ;
    break;}
case 608:
#line 3562 "cp-parse.y"
{ yyval.itype = 0; ;
    break;}
case 609:
#line 3564 "cp-parse.y"
{ yyval.itype = 0; ;
    break;}
case 610:
#line 3566 "cp-parse.y"
{ yyval.itype = 1; ;
    break;}
case 611:
#line 3568 "cp-parse.y"
{ yyval.itype = -1; ;
    break;}
case 612:
#line 3575 "cp-parse.y"
{ emit_line_note (input_filename, lineno); ;
    break;}
case 613:
#line 3577 "cp-parse.y"
{ emit_line_note (input_filename, lineno); ;
    break;}
case 614:
#line 3582 "cp-parse.y"
{ yyval.ttype = NULL_TREE; ;
    break;}
case 616:
#line 3585 "cp-parse.y"
{ yyval.ttype = NULL_TREE; ;
    break;}
case 617:
#line 3591 "cp-parse.y"
{ yyval.ttype = NULL_TREE; ;
    break;}
case 620:
#line 3598 "cp-parse.y"
{ yyval.ttype = chainon (yyval.ttype, yyvsp[0].ttype); ;
    break;}
case 621:
#line 3603 "cp-parse.y"
{ yyval.ttype = build_tree_list (yyval.ttype, yyvsp[-1].ttype); ;
    break;}
case 622:
#line 3608 "cp-parse.y"
{ yyval.ttype = tree_cons (NULL_TREE, yyval.ttype, NULL_TREE); ;
    break;}
case 623:
#line 3610 "cp-parse.y"
{ yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyval.ttype); ;
    break;}
case 624:
#line 3619 "cp-parse.y"
{
		  if (strict_prototype)
		    yyval.ttype = void_list_node;
		  else
		    yyval.ttype = NULL_TREE;
		;
    break;}
case 625:
#line 3626 "cp-parse.y"
{
		  yyval.ttype = chainon (yyval.ttype, void_list_node);
		  TREE_PARMLIST (yyval.ttype) = 1;
		;
    break;}
case 626:
#line 3631 "cp-parse.y"
{
		  TREE_PARMLIST (yyval.ttype) = 1;
		;
    break;}
case 627:
#line 3636 "cp-parse.y"
{
		  TREE_PARMLIST (yyval.ttype) = 1;
		;
    break;}
case 628:
#line 3640 "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 629:
#line 3647 "cp-parse.y"
{
		  TREE_PARMLIST (yyval.ttype) = 1;
		;
    break;}
case 630:
#line 3651 "cp-parse.y"
{
		  TREE_PARMLIST (yyval.ttype) = 1;
		;
    break;}
case 631:
#line 3655 "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 632:
#line 3670 "cp-parse.y"
{ yyval.ttype = build_tree_list (NULL_TREE, yyval.ttype); ;
    break;}
case 633:
#line 3672 "cp-parse.y"
{ yyval.ttype = build_tree_list (yyvsp[0].ttype, yyval.ttype); ;
    break;}
case 634:
#line 3674 "cp-parse.y"
{ yyval.ttype = chainon (yyval.ttype, build_tree_list (NULL_TREE, yyvsp[0].ttype)); ;
    break;}
case 635:
#line 3676 "cp-parse.y"
{ yyval.ttype = chainon (yyval.ttype, build_tree_list (yyvsp[0].ttype, yyvsp[-2].ttype)); ;
    break;}
case 636:
#line 3678 "cp-parse.y"
{ yyval.ttype = chainon (yyval.ttype, build_tree_list (NULL_TREE, yyvsp[0].ttype)); ;
    break;}
case 637:
#line 3680 "cp-parse.y"
{ yyval.ttype = chainon (yyval.ttype, build_tree_list (yyvsp[0].ttype, yyvsp[-2].ttype)); ;
    break;}
case 638:
#line 3701 "cp-parse.y"
{ yyval.ttype = build_tree_list (yyval.ttype, yyvsp[0].ttype);
		  see_typename (); ;
    break;}
case 639:
#line 3704 "cp-parse.y"
{ yyval.ttype = build_tree_list (yyval.ttype, yyvsp[0].ttype);
		  see_typename (); ;
    break;}
case 642:
#line 3711 "cp-parse.y"
{ yyval.ttype = yyvsp[0].ttype; ;
    break;}
case 643:
#line 3715 "cp-parse.y"
{ see_typename (); ;
    break;}
case 644:
#line 3719 "cp-parse.y"
{ dont_see_typename (); ;
    break;}
case 645:
#line 3738 "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 646:
#line 3746 "cp-parse.y"
{ yyval.ttype = NULL_TREE; ;
    break;}
case 647:
#line 3748 "cp-parse.y"
{ yyval.ttype = yyvsp[0].ttype; ;
    break;}
case 648:
#line 3750 "cp-parse.y"
{ yyval.ttype = yyvsp[-1].ttype; ;
    break;}
case 649:
#line 3755 "cp-parse.y"
{ yyval.ttype = void_list_node; ;
    break;}
case 650:
#line 3757 "cp-parse.y"
{ yyval.ttype = build_decl_list (NULL_TREE, yyval.ttype); ;
    break;}
case 651:
#line 3759 "cp-parse.y"
{ yyval.ttype = build_decl_list (NULL_TREE, yyval.ttype); ;
    break;}
case 652:
#line 3761 "cp-parse.y"
{ yyval.ttype = build_decl_list (void_type_node, yyvsp[0].ttype); ;
    break;}
case 653:
#line 3763 "cp-parse.y"
{ yyval.ttype = build_decl_list (void_type_node, yyvsp[0].ttype); ;
    break;}
case 654:
#line 3765 "cp-parse.y"
{ yyval.ttype = build_decl_list (yyval.ttype, yyvsp[0].ttype); ;
    break;}
case 656:
#line 3771 "cp-parse.y"
{ yyval.ttype = build_decl_list (NULL_TREE, yyval.ttype); ;
    break;}
case 658:
#line 3777 "cp-parse.y"
{
  		  TREE_CHAIN (yyvsp[0].ttype) = yyval.ttype;
		  yyval.ttype = yyvsp[0].ttype;
		;
    break;}
case 660:
#line 3786 "cp-parse.y"
{
  		  TREE_CHAIN (yyvsp[0].ttype) = yyval.ttype;
		  yyval.ttype = yyvsp[0].ttype;
		;
    break;}
case 661:
#line 3794 "cp-parse.y"
{ yyval.ttype = ansi_opname[MULT_EXPR]; ;
    break;}
case 662:
#line 3796 "cp-parse.y"
{ yyval.ttype = ansi_opname[TRUNC_DIV_EXPR]; ;
    break;}
case 663:
#line 3798 "cp-parse.y"
{ yyval.ttype = ansi_opname[TRUNC_MOD_EXPR]; ;
    break;}
case 664:
#line 3800 "cp-parse.y"
{ yyval.ttype = ansi_opname[PLUS_EXPR]; ;
    break;}
case 665:
#line 3802 "cp-parse.y"
{ yyval.ttype = ansi_opname[MINUS_EXPR]; ;
    break;}
case 666:
#line 3804 "cp-parse.y"
{ yyval.ttype = ansi_opname[BIT_AND_EXPR]; ;
    break;}
case 667:
#line 3806 "cp-parse.y"
{ yyval.ttype = ansi_opname[BIT_IOR_EXPR]; ;
    break;}
case 668:
#line 3808 "cp-parse.y"
{ yyval.ttype = ansi_opname[BIT_XOR_EXPR]; ;
    break;}
case 669:
#line 3810 "cp-parse.y"
{ yyval.ttype = ansi_opname[BIT_NOT_EXPR]; ;
    break;}
case 670:
#line 3812 "cp-parse.y"
{ yyval.ttype = ansi_opname[COMPOUND_EXPR]; ;
    break;}
case 671:
#line 3814 "cp-parse.y"
{ yyval.ttype = ansi_opname[yyvsp[0].code]; ;
    break;}
case 672:
#line 3816 "cp-parse.y"
{ yyval.ttype = ansi_opname[LT_EXPR]; ;
    break;}
case 673:
#line 3818 "cp-parse.y"
{ yyval.ttype = ansi_opname[GT_EXPR]; ;
    break;}
case 674:
#line 3820 "cp-parse.y"
{ yyval.ttype = ansi_opname[yyvsp[0].code]; ;
    break;}
case 675:
#line 3822 "cp-parse.y"
{ yyval.ttype = ansi_assopname[yyvsp[0].code]; ;
    break;}
case 676:
#line 3824 "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 677:
#line 3833 "cp-parse.y"
{ yyval.ttype = ansi_opname[yyvsp[0].code]; ;
    break;}
case 678:
#line 3835 "cp-parse.y"
{ yyval.ttype = ansi_opname[yyvsp[0].code]; ;
    break;}
case 679:
#line 3837 "cp-parse.y"
{ yyval.ttype = ansi_opname[POSTINCREMENT_EXPR]; ;
    break;}
case 680:
#line 3839 "cp-parse.y"
{ yyval.ttype = ansi_opname[PREDECREMENT_EXPR]; ;
    break;}
case 681:
#line 3841 "cp-parse.y"
{ yyval.ttype = ansi_opname[TRUTH_ANDIF_EXPR]; ;
    break;}
case 682:
#line 3843 "cp-parse.y"
{ yyval.ttype = ansi_opname[TRUTH_ORIF_EXPR]; ;
    break;}
case 683:
#line 3845 "cp-parse.y"
{ yyval.ttype = ansi_opname[TRUTH_NOT_EXPR]; ;
    break;}
case 684:
#line 3847 "cp-parse.y"
{ yyval.ttype = ansi_opname[COND_EXPR]; ;
    break;}
case 685:
#line 3849 "cp-parse.y"
{ yyval.ttype = ansi_opname[yyvsp[0].code]; ;
    break;}
case 686:
#line 3851 "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 687:
#line 3863 "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 688:
#line 3875 "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 689:
#line 3906 "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 690:
#line 3918 "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 691:
#line 3930 "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 692:
#line 3943 "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 693:
#line 3959 "cp-parse.y"
{ yyval.ttype = build1 (TYPE_EXPR, yyvsp[-1].ttype, yyvsp[0].ttype); ;
    break;}
case 694:
#line 3961 "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"

  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 3964 "cp-parse.y"


tree
get_current_declspecs ()
{
  return current_declspecs;
}
