objc-parse.c   [plain text]


/* A Bison parser, made from objc/objc-parse.y
   by GNU bison 1.35.  */

#define YYBISON 1  /* Identify Bison output.  */

# define	IDENTIFIER	257
# define	TYPENAME	258
# define	SCSPEC	259
# define	STATIC	260
# define	TYPESPEC	261
# define	TYPE_QUAL	262
# define	OBJC_TYPE_QUAL	263
# define	CONSTANT	264
# define	STRING	265
# define	ELLIPSIS	266
# define	SIZEOF	267
# define	ENUM	268
# define	STRUCT	269
# define	UNION	270
# define	IF	271
# define	ELSE	272
# define	WHILE	273
# define	DO	274
# define	FOR	275
# define	SWITCH	276
# define	CASE	277
# define	DEFAULT	278
# define	BREAK	279
# define	CONTINUE	280
# define	RETURN	281
# define	GOTO	282
# define	ASM_KEYWORD	283
# define	TYPEOF	284
# define	ALIGNOF	285
# define	ATTRIBUTE	286
# define	EXTENSION	287
# define	LABEL	288
# define	REALPART	289
# define	IMAGPART	290
# define	VA_ARG	291
# define	CHOOSE_EXPR	292
# define	TYPES_COMPATIBLE_P	293
# define	FUNC_NAME	294
# define	OFFSETOF	295
# define	ASSIGN	296
# define	OROR	297
# define	ANDAND	298
# define	EQCOMPARE	299
# define	ARITHCOMPARE	300
# define	LSHIFT	301
# define	RSHIFT	302
# define	UNARY	303
# define	PLUSPLUS	304
# define	MINUSMINUS	305
# define	HYPERUNARY	306
# define	POINTSAT	307
# define	AT_INTERFACE	308
# define	AT_IMPLEMENTATION	309
# define	AT_END	310
# define	AT_SELECTOR	311
# define	AT_DEFS	312
# define	AT_ENCODE	313
# define	CLASSNAME	314
# define	AT_PUBLIC	315
# define	AT_PRIVATE	316
# define	AT_PROTECTED	317
# define	AT_PROTOCOL	318
# define	AT_CLASS	319
# define	AT_ALIAS	320
# define	AT_THROW	321
# define	AT_TRY	322
# define	AT_CATCH	323
# define	AT_FINALLY	324
# define	AT_SYNCHRONIZED	325
# define	OBJC_STRING	326

#line 33 "objc/objc-parse.y"

#include "config.h"
#include "system.h"
#include "coretypes.h"
#include "tm.h"
#include "tree.h"
#include "langhooks.h"
#include "input.h"
#include "cpplib.h"
#include "intl.h"
#include "timevar.h"
#include "c-pragma.h"		/* For YYDEBUG definition, and parse_in.  */
#include "c-tree.h"
#include "flags.h"
#include "varray.h"
#include "output.h"
#include "toplev.h"
#include "ggc.h"
#include "c-common.h"

#define YYERROR1 { yyerror ("syntax error"); YYERROR; }

/* Like the default stack expander, except (1) use realloc when possible,
   (2) impose no hard maxiumum on stack size, (3) REALLY do not use alloca.

   Irritatingly, YYSTYPE is defined after this %{ %} block, so we cannot
   give malloced_yyvs its proper type.  This is ok since all we need from
   it is to be able to free it.  */

static short *malloced_yyss;
static void *malloced_yyvs;

#define yyoverflow(MSG, SS, SSSIZE, VS, VSSIZE, YYSSZ)			\
do {									\
  size_t newsize;							\
  short *newss;								\
  YYSTYPE *newvs;							\
  newsize = *(YYSSZ) *= 2;						\
  if (malloced_yyss)							\
    {									\
      newss = really_call_realloc (*(SS), newsize * sizeof (short));	\
      newvs = really_call_realloc (*(VS), newsize * sizeof (YYSTYPE));	\
    }									\
  else									\
    {									\
      newss = really_call_malloc (newsize * sizeof (short));		\
      newvs = really_call_malloc (newsize * sizeof (YYSTYPE));		\
      if (newss)							\
        memcpy (newss, *(SS), (SSSIZE));				\
      if (newvs)							\
        memcpy (newvs, *(VS), (VSSIZE));				\
    }									\
  if (!newss || !newvs)							\
    {									\
      yyerror (MSG);							\
      return 2;								\
    }									\
  *(SS) = newss;							\
  *(VS) = newvs;							\
  malloced_yyss = newss;						\
  malloced_yyvs = (void *) newvs;					\
} while (0)

#line 99 "objc/objc-parse.y"
#ifndef YYSTYPE
typedef union {long itype; tree ttype; void *otype; struct c_expr exprtype;
	struct c_arg_info *arginfotype; struct c_declarator *dtrtype;
	struct c_type_name *typenametype; struct c_parm *parmtype;
	struct c_declspecs *dsptype; struct c_typespec tstype;
	enum tree_code code; location_t location; } yystype;
# define YYSTYPE yystype
# define YYSTYPE_IS_TRIVIAL 1
#endif
#line 264 "objc/objc-parse.y"

/* Declaration specifiers of the current declaration.  */
static struct c_declspecs *current_declspecs;
static GTY(()) tree prefix_attributes;

/* List of all the attributes applying to the identifier currently being
   declared; includes prefix_attributes and possibly some more attributes
   just after a comma.  */
static GTY(()) tree all_prefix_attributes;

/* Structure to save declaration specifiers.  */
struct c_declspec_stack {
  /* Saved value of current_declspecs.  */
  struct c_declspecs *current_declspecs;
  /* Saved value of prefix_attributes.  */
  tree prefix_attributes;
  /* Saved value of all_prefix_attributes.  */
  tree all_prefix_attributes;
  /* Next level of stack.  */
  struct c_declspec_stack *next;
};

/* Stack of saved values of current_declspecs, prefix_attributes and
   all_prefix_attributes.  */
static struct c_declspec_stack *declspec_stack;

/* INDIRECT_REF with a TREE_TYPE of the type being queried for offsetof.  */
static tree offsetof_base;

/* PUSH_DECLSPEC_STACK is called from setspecs; POP_DECLSPEC_STACK
   should be called from the productions making use of setspecs.  */
#define PUSH_DECLSPEC_STACK						\
  do {									\
    struct c_declspec_stack *t = XOBNEW (&parser_obstack,		\
					 struct c_declspec_stack);	\
    t->current_declspecs = current_declspecs;				\
    t->prefix_attributes = prefix_attributes;				\
    t->all_prefix_attributes = all_prefix_attributes;			\
    t->next = declspec_stack;						\
    declspec_stack = t;							\
  } while (0)

#define POP_DECLSPEC_STACK						\
  do {									\
    current_declspecs = declspec_stack->current_declspecs;		\
    prefix_attributes = declspec_stack->prefix_attributes;		\
    all_prefix_attributes = declspec_stack->all_prefix_attributes;	\
    declspec_stack = declspec_stack->next;				\
  } while (0)

/* For __extension__, save/restore the warning flags which are
   controlled by __extension__.  */
#define SAVE_EXT_FLAGS()		\
	(pedantic			\
	 | (warn_pointer_arith << 1)	\
	 | (warn_traditional << 2)	\
	 | (flag_iso << 3))

#define RESTORE_EXT_FLAGS(val)			\
  do {						\
    pedantic = val & 1;				\
    warn_pointer_arith = (val >> 1) & 1;	\
    warn_traditional = (val >> 2) & 1;		\
    flag_iso = (val >> 3) & 1;			\
  } while (0)

/* Objective-C specific parser/lexer information */

static int objc_pq_context = 0;

/* The following flag is needed to contextualize ObjC lexical analysis.
   In some cases (e.g., 'int NSObject;'), it is undesirable to bind
   an identifier to an ObjC class, even if a class with that name
   exists.  */
static int objc_need_raw_identifier;
#define OBJC_NEED_RAW_IDENTIFIER(VAL)	objc_need_raw_identifier = VAL


/* Tell yyparse how to print a token's value, if yydebug is set.  */

#define YYPRINT(FILE,YYCHAR,YYLVAL) yyprint(FILE,YYCHAR,YYLVAL)

static void yyprint (FILE *, int, YYSTYPE);
static void yyerror (const char *);
static int yylexname (void);
static inline int _yylex (void);
static int  yylex (void);
static void init_reswords (void);

  /* Initialization routine for this file.  */
void
c_parse_init (void)
{
  init_reswords ();
}

#ifndef YYDEBUG
# define YYDEBUG 0
#endif



#define	YYFINAL		1168
#define	YYFLAG		-32768
#define	YYNTBASE	95

/* YYTRANSLATE(YYLEX) -- Bison token number corresponding to YYLEX. */
#define YYTRANSLATE(x) ((unsigned)(x) <= 326 ? yytranslate[x] : 364)

/* YYTRANSLATE[YYLEX] -- Bison token number corresponding to YYLEX. */
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,    90,     2,     2,     2,    59,    50,     2,
      66,    92,    57,    55,    91,    56,    65,    58,     2,     2,
       2,     2,     2,     2,     2,     2,     2,     2,    45,    87,
       2,    43,     2,    44,     2,     2,     2,     2,     2,     2,
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
       2,    67,     2,    94,    49,     2,     2,     2,     2,     2,
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
       2,     2,     2,    93,    48,    88,    89,     2,     2,     2,
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
       2,     2,     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,     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,    46,    47,    51,
      52,    53,    54,    60,    61,    62,    63,    64,    68,    69,
      70,    71,    72,    73,    74,    75,    76,    77,    78,    79,
      80,    81,    82,    83,    84,    85,    86
};

#if YYDEBUG
static const short yyprhs[] =
{
       0,     0,     1,     3,     4,     8,     9,    14,    16,    18,
      20,    23,    25,    26,    30,    35,    40,    43,    46,    49,
      51,    52,    53,    62,    67,    68,    69,    78,    83,    84,
      85,    93,    97,    99,   101,   103,   105,   107,   109,   111,
     113,   115,   117,   119,   123,   124,   126,   128,   132,   134,
     137,   140,   143,   146,   149,   154,   157,   162,   165,   168,
     170,   172,   174,   176,   181,   183,   187,   191,   195,   199,
     203,   207,   211,   215,   219,   223,   227,   231,   232,   237,
     238,   243,   244,   245,   253,   254,   260,   264,   268,   270,
     272,   274,   276,   277,   285,   289,   293,   297,   301,   306,
     313,   314,   322,   327,   336,   341,   348,   353,   358,   362,
     366,   369,   372,   374,   376,   378,   380,   382,   384,   388,
     393,   394,   396,   399,   401,   403,   406,   409,   414,   419,
     422,   425,   428,   429,   431,   436,   441,   445,   449,   452,
     455,   457,   460,   463,   466,   469,   472,   474,   477,   479,
     482,   485,   488,   491,   494,   497,   499,   502,   505,   508,
     511,   514,   517,   520,   523,   526,   529,   532,   535,   538,
     541,   544,   547,   549,   552,   555,   558,   561,   564,   567,
     570,   573,   576,   579,   582,   585,   588,   591,   594,   597,
     600,   603,   606,   609,   612,   615,   618,   621,   624,   627,
     630,   633,   636,   639,   642,   645,   648,   651,   654,   657,
     660,   663,   666,   669,   672,   675,   678,   681,   683,   685,
     687,   689,   691,   693,   695,   697,   699,   701,   703,   705,
     707,   709,   711,   713,   715,   717,   719,   721,   723,   725,
     727,   729,   731,   733,   735,   737,   739,   741,   743,   745,
     747,   749,   751,   753,   755,   757,   759,   761,   763,   765,
     767,   769,   771,   773,   775,   777,   779,   781,   783,   785,
     787,   789,   791,   793,   794,   796,   798,   800,   802,   804,
     806,   808,   810,   813,   816,   818,   823,   828,   830,   835,
     837,   842,   843,   850,   854,   855,   862,   866,   867,   869,
     871,   874,   883,   887,   889,   893,   894,   896,   901,   908,
     913,   915,   917,   919,   921,   923,   925,   927,   928,   933,
     935,   936,   939,   941,   945,   949,   952,   953,   958,   960,
     961,   966,   968,   970,   972,   975,   978,   980,   986,   990,
     991,   992,   999,  1000,  1001,  1008,  1010,  1012,  1017,  1021,
    1024,  1028,  1030,  1032,  1034,  1038,  1041,  1043,  1047,  1050,
    1054,  1058,  1063,  1067,  1072,  1076,  1079,  1081,  1083,  1086,
    1088,  1091,  1093,  1096,  1097,  1105,  1111,  1112,  1120,  1126,
    1127,  1136,  1137,  1145,  1148,  1151,  1154,  1155,  1157,  1158,
    1160,  1162,  1165,  1166,  1170,  1173,  1178,  1182,  1185,  1189,
    1191,  1193,  1196,  1198,  1203,  1205,  1210,  1213,  1218,  1222,
    1225,  1230,  1234,  1236,  1240,  1242,  1244,  1248,  1249,  1253,
    1254,  1256,  1257,  1259,  1262,  1264,  1266,  1268,  1272,  1275,
    1279,  1284,  1288,  1291,  1294,  1296,  1301,  1305,  1310,  1316,
    1322,  1324,  1326,  1328,  1330,  1332,  1335,  1338,  1341,  1344,
    1346,  1349,  1352,  1355,  1357,  1360,  1363,  1366,  1369,  1371,
    1374,  1376,  1378,  1380,  1382,  1385,  1386,  1387,  1389,  1391,
    1394,  1398,  1400,  1403,  1405,  1407,  1411,  1413,  1415,  1418,
    1421,  1422,  1423,  1426,  1430,  1433,  1436,  1439,  1443,  1447,
    1449,  1459,  1469,  1477,  1485,  1486,  1487,  1497,  1498,  1499,
    1513,  1514,  1516,  1519,  1521,  1524,  1526,  1539,  1540,  1549,
    1552,  1554,  1556,  1558,  1560,  1562,  1565,  1568,  1571,  1575,
    1577,  1581,  1586,  1588,  1592,  1595,  1597,  1604,  1609,  1613,
    1618,  1619,  1622,  1623,  1629,  1633,  1635,  1638,  1640,  1642,
    1646,  1652,  1655,  1660,  1667,  1668,  1670,  1673,  1678,  1687,
    1689,  1693,  1699,  1707,  1708,  1710,  1711,  1713,  1715,  1719,
    1726,  1736,  1738,  1742,  1744,  1745,  1746,  1747,  1751,  1754,
    1755,  1756,  1763,  1766,  1767,  1769,  1771,  1775,  1777,  1781,
    1786,  1791,  1795,  1800,  1804,  1809,  1814,  1818,  1823,  1827,
    1829,  1830,  1834,  1836,  1839,  1841,  1845,  1847,  1851,  1853,
    1855,  1857,  1859,  1861,  1863,  1865,  1867,  1871,  1875,  1880,
    1883,  1884,  1888,  1889,  1890,  1891,  1901,  1902,  1908,  1909,
    1919,  1925,  1926,  1933,  1937,  1938,  1940,  1944,  1945,  1949,
    1950,  1952,  1954,  1956,  1957,  1961,  1964,  1966,  1967,  1969,
    1971,  1973,  1974,  1975,  1982,  1983,  1986,  1987,  1991,  1993,
    1995,  1996,  1997,  2003,  2008,  2010,  2016,  2019,  2022,  2023,
    2027,  2028,  2031,  2033,  2035,  2038,  2040,  2042,  2044,  2046,
    2048,  2050,  2052,  2054,  2056,  2058,  2060,  2062,  2064,  2066,
    2068,  2070,  2072,  2074,  2076,  2078,  2080,  2082,  2084,  2086,
    2088,  2090,  2092,  2095,  2096,  2099,  2101,  2108,  2112,  2118,
    2121,  2123,  2125,  2127,  2130,  2132,  2136,  2139,  2141,  2143,
    2145,  2150,  2152,  2154,  2156,  2159,  2162,  2164,  2169,  2174
};
static const short yyrhs[] =
{
      -1,    96,     0,     0,   100,    97,    99,     0,     0,    96,
     100,    98,    99,     0,   102,     0,   101,     0,   283,     0,
     309,    99,     0,   310,     0,     0,   134,   168,    87,     0,
     154,   134,   168,    87,     0,   153,   134,   167,    87,     0,
     160,    87,     0,     1,    87,     0,     1,    88,     0,    87,
       0,     0,     0,   153,   134,   197,   103,   129,   249,   104,
     243,     0,   153,   134,   197,     1,     0,     0,     0,   154,
     134,   202,   105,   129,   249,   106,   243,     0,   154,   134,
     202,     1,     0,     0,     0,   134,   202,   107,   129,   249,
     108,   243,     0,   134,   202,     1,     0,     3,     0,     4,
       0,    74,     0,    50,     0,    56,     0,    55,     0,    61,
       0,    62,     0,    89,     0,    90,     0,   119,     0,   111,
      91,   119,     0,     0,   113,     0,   119,     0,   113,    91,
     119,     0,   125,     0,    57,   118,     0,   309,   118,     0,
     110,   118,     0,    47,   109,     0,   115,   114,     0,   115,
      66,   223,    92,     0,   116,   114,     0,   116,    66,   223,
      92,     0,    35,   118,     0,    36,   118,     0,    13,     0,
      31,     0,    30,     0,   114,     0,    66,   223,    92,   118,
       0,   118,     0,   119,    55,   119,     0,   119,    56,   119,
       0,   119,    57,   119,     0,   119,    58,   119,     0,   119,
      59,   119,     0,   119,    53,   119,     0,   119,    54,   119,
       0,   119,    52,   119,     0,   119,    51,   119,     0,   119,
      50,   119,     0,   119,    48,   119,     0,   119,    49,   119,
       0,     0,   119,    47,   120,   119,     0,     0,   119,    46,
     121,   119,     0,     0,     0,   119,    44,   122,   111,    45,
     123,   119,     0,     0,   119,    44,   124,    45,   119,     0,
     119,    43,   119,     0,   119,    42,   119,     0,     3,     0,
      10,     0,    11,     0,    40,     0,     0,    66,   223,    92,
      93,   126,   182,    88,     0,    66,   111,    92,     0,    66,
       1,    92,     0,   247,   245,    92,     0,   247,     1,    92,
       0,   125,    66,   112,    92,     0,    37,    66,   119,    91,
     223,    92,     0,     0,    41,    66,   223,    91,   127,   128,
      92,     0,    41,    66,     1,    92,     0,    38,    66,   119,
      91,   119,    91,   119,    92,     0,    38,    66,     1,    92,
       0,    39,    66,   223,    91,   223,    92,     0,    39,    66,
       1,    92,     0,   125,    67,   111,    94,     0,   125,    65,
     109,     0,   125,    64,   109,     0,   125,    61,     0,   125,
      62,     0,   357,     0,   361,     0,   362,     0,   363,     0,
      86,     0,   109,     0,   128,    65,   109,     0,   128,    67,
     111,    94,     0,     0,   131,     0,   249,   132,     0,   130,
       0,   238,     0,   131,   130,     0,   130,   238,     0,   155,
     134,   167,    87,     0,   156,   134,   168,    87,     0,   155,
      87,     0,   156,    87,     0,   249,   136,     0,     0,   173,
       0,   153,   134,   167,    87,     0,   154,   134,   168,    87,
       0,   153,   134,   191,     0,   154,   134,   194,     0,   160,
      87,     0,   309,   136,     0,     8,     0,   137,     8,     0,
     138,     8,     0,   137,   174,     0,   139,     8,     0,   140,
       8,     0,   174,     0,   139,   174,     0,   162,     0,   141,
       8,     0,   142,     8,     0,   141,   164,     0,   142,   164,
       0,   137,   162,     0,   138,   162,     0,   163,     0,   141,
     174,     0,   141,   165,     0,   142,   165,     0,   137,   163,
       0,   138,   163,     0,   143,     8,     0,   144,     8,     0,
     143,   164,     0,   144,   164,     0,   139,   162,     0,   140,
     162,     0,   143,   174,     0,   143,   165,     0,   144,   165,
       0,   139,   163,     0,   140,   163,     0,   179,     0,   145,
       8,     0,   146,     8,     0,   137,   179,     0,   138,   179,
       0,   145,   179,     0,   146,   179,     0,   145,   174,     0,
     147,     8,     0,   148,     8,     0,   139,   179,     0,   140,
     179,     0,   147,   179,     0,   148,   179,     0,   147,   174,
       0,   149,     8,     0,   150,     8,     0,   149,   164,     0,
     150,   164,     0,   145,   162,     0,   146,   162,     0,   141,
     179,     0,   142,   179,     0,   149,   179,     0,   150,   179,
       0,   149,   174,     0,   149,   165,     0,   150,   165,     0,
     145,   163,     0,   146,   163,     0,   151,     8,     0,   152,
       8,     0,   151,   164,     0,   152,   164,     0,   147,   162,
       0,   148,   162,     0,   143,   179,     0,   144,   179,     0,
     151,   179,     0,   152,   179,     0,   151,   174,     0,   151,
     165,     0,   152,   165,     0,   147,   163,     0,   148,   163,
       0,   141,     0,   142,     0,   143,     0,   144,     0,   149,
       0,   150,     0,   151,     0,   152,     0,   137,     0,   138,
       0,   139,     0,   140,     0,   145,     0,   146,     0,   147,
       0,   148,     0,   141,     0,   142,     0,   149,     0,   150,
       0,   137,     0,   138,     0,   145,     0,   146,     0,   141,
       0,   142,     0,   143,     0,   144,     0,   137,     0,   138,
       0,   139,     0,   140,     0,   141,     0,   142,     0,   143,
       0,   144,     0,   137,     0,   138,     0,   139,     0,   140,
       0,   137,     0,   138,     0,   139,     0,   140,     0,   141,
       0,   142,     0,   143,     0,   144,     0,   145,     0,   146,
       0,   147,     0,   148,     0,   149,     0,   150,     0,   151,
       0,   152,     0,     0,   158,     0,   164,     0,   166,     0,
     165,     0,     7,     0,   211,     0,   206,     0,     4,     0,
      74,   323,     0,     4,   324,     0,   324,     0,   117,    66,
     111,    92,     0,   117,    66,   223,    92,     0,   169,     0,
     167,    91,   135,   169,     0,   171,     0,   168,    91,   135,
     171,     0,     0,   197,   282,   173,    43,   170,   180,     0,
     197,   282,   173,     0,     0,   202,   282,   173,    43,   172,
     180,     0,   202,   282,   173,     0,     0,   174,     0,   175,
       0,   174,   175,     0,    32,   292,    66,    66,   176,    92,
      92,   293,     0,    32,     1,   293,     0,   177,     0,   176,
      91,   177,     0,     0,   178,     0,   178,    66,     3,    92,
       0,   178,    66,     3,    91,   113,    92,     0,   178,    66,
     112,    92,     0,   109,     0,   179,     0,     7,     0,     8,
       0,     6,     0,     5,     0,   119,     0,     0,    93,   181,
     182,    88,     0,     1,     0,     0,   183,   212,     0,   184,
       0,   183,    91,   184,     0,   188,    43,   186,     0,   190,
     186,     0,     0,   109,    45,   185,   186,     0,   186,     0,
       0,    93,   187,   182,    88,     0,   119,     0,     1,     0,
     189,     0,   188,   189,     0,    65,   109,     0,   190,     0,
      67,   119,    12,   119,    94,     0,    67,   119,    94,     0,
       0,     0,   197,   192,   129,   249,   193,   248,     0,     0,
       0,   202,   195,   129,   249,   196,   248,     0,   198,     0,
     202,     0,    66,   173,   198,    92,     0,   198,    66,   304,
       0,   198,   231,     0,    57,   161,   198,     0,     4,     0,
     200,     0,   201,     0,   200,    66,   304,     0,   200,   231,
       0,     4,     0,   201,    66,   304,     0,   201,   231,     0,
      57,   161,   200,     0,    57,   161,   201,     0,    66,   173,
     201,    92,     0,   202,    66,   304,     0,    66,   173,   202,
      92,     0,    57,   161,   202,     0,   202,   231,     0,     3,
       0,    15,     0,    15,   174,     0,    16,     0,    16,   174,
       0,    14,     0,    14,   174,     0,     0,   203,   109,    93,
     207,   214,    88,   173,     0,   203,    93,   214,    88,   173,
       0,     0,   204,   109,    93,   208,   214,    88,   173,     0,
     204,    93,   214,    88,   173,     0,     0,   205,   109,    93,
     209,   221,   213,    88,   173,     0,     0,   205,    93,   210,
     221,   213,    88,   173,     0,   203,   109,     0,   204,   109,
       0,   205,   109,     0,     0,    91,     0,     0,    91,     0,
     215,     0,   215,   216,     0,     0,   215,   216,    87,     0,
     215,    87,     0,    72,    66,    74,    92,     0,   157,   134,
     217,     0,   157,   134,     0,   158,   134,   218,     0,   158,
       0,     1,     0,   309,   216,     0,   219,     0,   217,    91,
     135,   219,     0,   220,     0,   218,    91,   135,   220,     0,
     197,   173,     0,   197,    45,   119,   173,     0,    45,   119,
     173,     0,   202,   173,     0,   202,    45,   119,   173,     0,
      45,   119,   173,     0,   222,     0,   221,    91,   222,     0,
       1,     0,   109,     0,   109,    43,   119,     0,     0,   159,
     224,   225,     0,     0,   227,     0,     0,   227,     0,   228,
     174,     0,   229,     0,   228,     0,   230,     0,    57,   161,
     228,     0,    57,   161,     0,    57,   161,   229,     0,    66,
     173,   227,    92,     0,   230,    66,   294,     0,   230,   231,
       0,    66,   294,     0,   231,     0,    67,   161,   119,    94,
       0,    67,   161,    94,     0,    67,   161,    57,    94,     0,
      67,     6,   161,   119,    94,     0,    67,   158,     6,   119,
      94,     0,   233,     0,   234,     0,   235,     0,   236,     0,
     252,     0,   233,   252,     0,   234,   252,     0,   235,   252,
       0,   236,   252,     0,   133,     0,   233,   133,     0,   234,
     133,     0,   236,   133,     0,   253,     0,   233,   253,     0,
     234,   253,     0,   235,   253,     0,   236,   253,     0,   238,
       0,   237,   238,     0,   233,     0,   234,     0,   235,     0,
     236,     0,     1,    87,     0,     0,     0,   241,     0,   242,
       0,   241,   242,     0,    34,   308,    87,     0,   248,     0,
       1,   248,     0,    93,     0,    88,     0,   240,   246,    88,
       0,   232,     0,     1,     0,    66,    93,     0,   244,   245,
       0,     0,     0,   250,   253,     0,   239,   250,   252,     0,
     249,   279,     0,   249,   280,     0,   249,   111,     0,   239,
     250,   257,     0,   239,   250,    87,     0,   251,     0,    17,
     239,   249,    66,   254,    92,   255,    18,   256,     0,    17,
     239,   249,    66,   254,    92,   256,    18,   256,     0,    17,
     239,   249,    66,   254,    92,   255,     0,    17,   239,   249,
      66,   254,    92,   256,     0,     0,     0,    19,   239,   249,
      66,   254,    92,   258,   259,   251,     0,     0,     0,    20,
     239,   249,   258,   259,   251,    19,   262,   263,    66,   254,
      92,    87,     0,     0,   111,     0,   264,    87,     0,   136,
       0,   249,   264,     0,   264,     0,    21,   239,    66,   265,
     249,   266,    87,   267,    92,   258,   259,   251,     0,     0,
      22,   239,    66,   111,    92,   270,   258,   251,     0,   111,
      87,     0,   257,     0,   260,     0,   261,     0,   268,     0,
     269,     0,    25,    87,     0,    26,    87,     0,    27,    87,
       0,    27,   111,    87,     0,   284,     0,    28,   109,    87,
       0,    28,    57,   111,    87,     0,    87,     0,    81,   111,
      87,     0,    81,    87,     0,   278,     0,    85,   249,    66,
     111,    92,   248,     0,    83,    66,   301,    92,     0,   272,
      93,   245,     0,   272,    93,     1,    88,     0,     0,   274,
     273,     0,     0,    82,   249,   248,   276,   274,     0,    84,
     249,   248,     0,   275,     0,   275,   277,     0,   248,     0,
     271,     0,    23,   119,    45,     0,    23,   119,    12,   119,
      45,     0,    24,    45,     0,   109,   249,    45,   173,     0,
      29,   292,    66,   291,    92,   293,     0,     0,   281,     0,
     281,    87,     0,    29,     1,   293,    87,     0,    29,   286,
     292,    66,   285,    92,   293,    87,     0,   291,     0,   291,
      45,   287,     0,   291,    45,   287,    45,   287,     0,   291,
      45,   287,    45,   287,    45,   290,     0,     0,     8,     0,
       0,   288,     0,   289,     0,   288,    91,   289,     0,   291,
     293,    66,   111,    92,   292,     0,    67,   109,    94,   291,
     293,    66,   111,    92,   292,     0,   291,     0,   290,    91,
     291,     0,    11,     0,     0,     0,     0,   173,   295,   296,
       0,   299,    92,     0,     0,     0,   300,    87,   297,   173,
     298,   296,     0,     1,    92,     0,     0,    12,     0,   300,
       0,   300,    91,    12,     0,   302,     0,   300,    91,   301,
       0,   153,   134,   199,   173,     0,   153,   134,   202,   173,
       0,   153,   134,   226,     0,   154,   134,   202,   173,     0,
     154,   134,   226,     0,   155,   303,   199,   173,     0,   155,
     303,   202,   173,     0,   155,   303,   226,     0,   156,   303,
     202,   173,     0,   156,   303,   226,     0,   134,     0,     0,
     173,   305,   306,     0,   296,     0,   307,    92,     0,     3,
       0,   307,    91,     3,     0,   109,     0,   308,    91,   109,
       0,    33,     0,   316,     0,   312,     0,   313,     0,   321,
       0,   331,     0,    70,     0,   109,     0,   311,    91,   109,
       0,    79,   311,    87,     0,    80,   109,   109,    87,     0,
      45,   109,     0,     0,    93,   325,    88,     0,     0,     0,
       0,    68,   109,   314,   323,   317,   315,   318,   334,    70,
       0,     0,    69,   109,   314,   319,   315,     0,     0,    68,
     109,    66,   109,    92,   323,   320,   334,    70,     0,    69,
     109,    66,   109,    92,     0,     0,    78,   109,   323,   322,
     334,    70,     0,    78,   311,    87,     0,     0,   324,     0,
      52,   311,    52,     0,     0,   325,   326,   327,     0,     0,
      76,     0,    77,     0,    75,     0,     0,   327,   328,    87,
       0,   327,    87,     0,   216,     0,     0,    87,     0,    55,
       0,    56,     0,     0,     0,   330,   332,   340,   329,   333,
     243,     0,     0,   334,   337,     0,     0,   334,   335,   101,
       0,    87,     0,     1,     0,     0,     0,   330,   338,   340,
     339,   336,     0,    66,   350,    92,   344,     0,   344,     0,
      66,   350,    92,   345,   341,     0,   345,   341,     0,   342,
     343,     0,     0,   342,    91,   301,     0,     0,    91,    12,
       0,   346,     0,   351,     0,   345,   351,     0,     3,     0,
       4,     0,    74,     0,   347,     0,    14,     0,    15,     0,
      16,     0,    17,     0,    18,     0,    19,     0,    20,     0,
      21,     0,    22,     0,    23,     0,    24,     0,    25,     0,
      26,     0,    27,     0,    28,     0,    29,     0,    13,     0,
      30,     0,    31,     0,     7,     0,     8,     0,     9,     0,
       9,     0,   349,   348,     0,     0,   349,   223,     0,   349,
       0,   346,    45,    66,   350,    92,   109,     0,   346,    45,
     109,     0,    45,    66,   350,    92,   109,     0,    45,   109,
       0,   346,     0,   353,     0,   355,     0,   353,   355,     0,
     113,     0,   346,    45,   354,     0,    45,   354,     0,   111,
       0,    74,     0,     4,     0,    67,   356,   352,    94,     0,
     346,     0,   359,     0,   360,     0,   359,   360,     0,   346,
      45,     0,    45,     0,    71,    66,   358,    92,     0,    78,
      66,   109,    92,     0,    73,    66,   223,    92,     0
};

#endif

#if YYDEBUG
/* YYRLINE[YYN] -- source line where rule number YYN was defined. */
static const short yyrline[] =
{
       0,   363,   367,   374,   374,   377,   377,   382,   384,   385,
     386,   388,   393,   397,   401,   403,   405,   407,   408,   409,
     414,   414,   414,   426,   428,   428,   428,   439,   441,   441,
     441,   452,   456,   458,   459,   462,   464,   466,   469,   471,
     473,   475,   479,   480,   485,   488,   491,   494,   498,   500,
     504,   507,   512,   515,   522,   526,   531,   536,   539,   544,
     548,   552,   556,   558,   563,   565,   567,   569,   571,   573,
     575,   577,   579,   581,   583,   585,   587,   589,   589,   596,
     596,   603,   603,   603,   615,   615,   627,   631,   638,   646,
     648,   650,   653,   653,   674,   679,   681,   687,   692,   695,
     699,   699,   709,   711,   723,   725,   737,   739,   742,   745,
     751,   754,   757,   760,   763,   766,   769,   778,   781,   783,
     787,   789,   795,   800,   802,   803,   804,   811,   814,   816,
     819,   827,   836,   856,   861,   864,   866,   868,   870,   872,
     917,   920,   922,   926,   931,   934,   938,   941,   945,   948,
     950,   952,   954,   956,   958,   962,   965,   967,   969,   971,
     973,   977,   980,   982,   984,   986,   988,   992,   995,   997,
     999,  1001,  1005,  1008,  1010,  1012,  1014,  1016,  1018,  1022,
    1027,  1030,  1032,  1034,  1036,  1038,  1042,  1047,  1050,  1052,
    1054,  1056,  1058,  1060,  1062,  1064,  1066,  1070,  1073,  1075,
    1077,  1079,  1083,  1086,  1088,  1090,  1092,  1094,  1096,  1098,
    1100,  1102,  1106,  1109,  1111,  1113,  1115,  1120,  1122,  1123,
    1124,  1125,  1126,  1127,  1128,  1131,  1133,  1134,  1135,  1136,
    1137,  1138,  1139,  1142,  1144,  1145,  1146,  1149,  1151,  1152,
    1153,  1156,  1158,  1159,  1160,  1163,  1165,  1166,  1167,  1170,
    1172,  1173,  1174,  1175,  1176,  1177,  1178,  1181,  1183,  1184,
    1185,  1186,  1187,  1188,  1189,  1190,  1191,  1192,  1193,  1194,
    1195,  1196,  1197,  1201,  1204,  1229,  1231,  1234,  1238,  1243,
    1246,  1250,  1256,  1259,  1265,  1268,  1278,  1289,  1291,  1294,
    1296,  1299,  1299,  1315,  1323,  1323,  1339,  1347,  1350,  1354,
    1357,  1361,  1365,  1369,  1372,  1376,  1379,  1381,  1383,  1385,
    1392,  1394,  1395,  1396,  1399,  1401,  1406,  1409,  1409,  1413,
    1418,  1422,  1425,  1427,  1432,  1436,  1439,  1439,  1445,  1448,
    1448,  1453,  1455,  1458,  1460,  1463,  1466,  1469,  1474,  1478,
    1478,  1478,  1508,  1508,  1508,  1541,  1543,  1548,  1551,  1553,
    1555,  1557,  1565,  1567,  1570,  1573,  1575,  1579,  1582,  1584,
    1586,  1588,  1595,  1598,  1600,  1602,  1604,  1608,  1611,  1615,
    1618,  1622,  1625,  1635,  1635,  1644,  1650,  1650,  1656,  1662,
    1662,  1668,  1668,  1676,  1679,  1681,  1689,  1691,  1694,  1696,
    1713,  1716,  1721,  1723,  1725,  1729,  1733,  1737,  1745,  1748,
    1753,  1755,  1760,  1762,  1766,  1768,  1772,  1777,  1781,  1788,
    1793,  1797,  1807,  1809,  1814,  1819,  1822,  1826,  1826,  1836,
    1839,  1842,  1846,  1849,  1855,  1857,  1860,  1862,  1866,  1870,
    1874,  1877,  1879,  1881,  1884,  1891,  1894,  1896,  1898,  1901,
    1911,  1913,  1914,  1918,  1921,  1923,  1924,  1925,  1926,  1929,
    1931,  1937,  1938,  1941,  1943,  1944,  1945,  1946,  1949,  1951,
    1954,  1956,  1957,  1958,  1961,  1965,  1971,  1973,  1978,  1980,
    1983,  1997,  2000,  2003,  2006,  2007,  2010,  2012,  2015,  2027,
    2035,  2041,  2043,  2047,  2052,  2070,  2075,  2087,  2092,  2097,
    2100,  2105,  2109,  2113,  2119,  2123,  2127,  2136,  2136,  2136,
    2147,  2150,  2154,  2157,  2161,  2173,  2177,  2187,  2187,  2200,
    2203,  2205,  2207,  2209,  2211,  2213,  2215,  2217,  2219,  2221,
    2222,  2224,  2226,  2228,  2230,  2232,  2234,  2238,  2243,  2246,
    2250,  2252,  2255,  2255,  2261,  2266,  2269,  2274,  2277,  2284,
    2286,  2288,  2290,  2306,  2313,  2316,  2320,  2323,  2329,  2335,
    2340,  2343,  2346,  2352,  2355,  2368,  2370,  2373,  2375,  2379,
    2384,  2391,  2394,  2399,  2411,  2415,  2425,  2425,  2434,  2436,
    2436,  2436,  2443,  2453,  2459,  2468,  2470,  2474,  2477,  2483,
    2488,  2492,  2495,  2500,  2507,  2512,  2516,  2519,  2524,  2529,
    2538,  2538,  2547,  2549,  2563,  2566,  2571,  2574,  2578,  2589,
    2591,  2592,  2593,  2594,  2595,  2602,  2605,  2609,  2616,  2623,
    2625,  2628,  2630,  2633,  2633,  2633,  2647,  2647,  2656,  2656,
    2665,  2671,  2671,  2685,  2691,  2696,  2699,  2709,  2711,  2714,
    2716,  2717,  2718,  2721,  2723,  2724,  2731,  2743,  2745,  2752,
    2754,  2757,  2757,  2757,  2778,  2780,  2781,  2781,  2784,  2786,
    2789,  2789,  2789,  2805,  2811,  2816,  2821,  2830,  2837,  2842,
    2849,  2854,  2860,  2864,  2867,  2873,  2875,  2876,  2877,  2880,
    2881,  2881,  2881,  2881,  2881,  2881,  2881,  2882,  2882,  2882,
    2882,  2882,  2882,  2883,  2883,  2883,  2883,  2883,  2884,  2884,
    2884,  2887,  2891,  2896,  2902,  2907,  2913,  2919,  2924,  2929,
    2935,  2937,  2940,  2942,  2949,  2961,  2966,  2972,  2975,  2979,
    2985,  2990,  2992,  2995,  2997,  3003,  3008,  3014,  3021,  3030
};
#endif


#if (YYDEBUG) || defined YYERROR_VERBOSE

/* YYTNAME[TOKEN_NUM] -- String name of the token TOKEN_NUM. */
static const char *const yytname[] =
{
  "$", "error", "$undefined.", "IDENTIFIER", "TYPENAME", "SCSPEC", "STATIC", 
  "TYPESPEC", "TYPE_QUAL", "OBJC_TYPE_QUAL", "CONSTANT", "STRING", 
  "ELLIPSIS", "SIZEOF", "ENUM", "STRUCT", "UNION", "IF", "ELSE", "WHILE", 
  "DO", "FOR", "SWITCH", "CASE", "DEFAULT", "BREAK", "CONTINUE", "RETURN", 
  "GOTO", "ASM_KEYWORD", "TYPEOF", "ALIGNOF", "ATTRIBUTE", "EXTENSION", 
  "LABEL", "REALPART", "IMAGPART", "VA_ARG", "CHOOSE_EXPR", 
  "TYPES_COMPATIBLE_P", "FUNC_NAME", "OFFSETOF", "ASSIGN", "'='", "'?'", 
  "':'", "OROR", "ANDAND", "'|'", "'^'", "'&'", "EQCOMPARE", 
  "ARITHCOMPARE", "LSHIFT", "RSHIFT", "'+'", "'-'", "'*'", "'/'", "'%'", 
  "UNARY", "PLUSPLUS", "MINUSMINUS", "HYPERUNARY", "POINTSAT", "'.'", 
  "'('", "'['", "AT_INTERFACE", "AT_IMPLEMENTATION", "AT_END", 
  "AT_SELECTOR", "AT_DEFS", "AT_ENCODE", "CLASSNAME", "AT_PUBLIC", 
  "AT_PRIVATE", "AT_PROTECTED", "AT_PROTOCOL", "AT_CLASS", "AT_ALIAS", 
  "AT_THROW", "AT_TRY", "AT_CATCH", "AT_FINALLY", "AT_SYNCHRONIZED", 
  "OBJC_STRING", "';'", "'}'", "'~'", "'!'", "','", "')'", "'{'", "']'", 
  "program", "extdefs", "@1", "@2", "extdef", "save_obstack_position", 
  "datadef", "fndef", "@3", "@4", "@5", "@6", "@7", "@8", "identifier", 
  "unop", "expr", "exprlist", "nonnull_exprlist", "unary_expr", "sizeof", 
  "alignof", "typeof", "cast_expr", "expr_no_commas", "@9", "@10", "@11", 
  "@12", "@13", "primary", "@14", "@15", "offsetof_member_designator", 
  "old_style_parm_decls", "lineno_datadecl", "datadecls", "datadecl", 
  "lineno_decl", "setspecs", "maybe_resetattrs", "decl", 
  "declspecs_nosc_nots_nosa_noea", "declspecs_nosc_nots_nosa_ea", 
  "declspecs_nosc_nots_sa_noea", "declspecs_nosc_nots_sa_ea", 
  "declspecs_nosc_ts_nosa_noea", "declspecs_nosc_ts_nosa_ea", 
  "declspecs_nosc_ts_sa_noea", "declspecs_nosc_ts_sa_ea", 
  "declspecs_sc_nots_nosa_noea", "declspecs_sc_nots_nosa_ea", 
  "declspecs_sc_nots_sa_noea", "declspecs_sc_nots_sa_ea", 
  "declspecs_sc_ts_nosa_noea", "declspecs_sc_ts_nosa_ea", 
  "declspecs_sc_ts_sa_noea", "declspecs_sc_ts_sa_ea", "declspecs_ts", 
  "declspecs_nots", "declspecs_ts_nosa", "declspecs_nots_nosa", 
  "declspecs_nosc_ts", "declspecs_nosc_nots", "declspecs_nosc", 
  "declspecs", "maybe_type_quals_attrs", "typespec_nonattr", 
  "typespec_attr", "typespec_reserved_nonattr", "typespec_reserved_attr", 
  "typespec_nonreserved_nonattr", "initdecls", "notype_initdecls", 
  "initdcl", "@16", "notype_initdcl", "@17", "maybe_attribute", 
  "attributes", "attribute", "attribute_list", "attrib", "any_word", 
  "scspec", "init", "@18", "initlist_maybe_comma", "initlist1", "initelt", 
  "@19", "initval", "@20", "designator_list", "designator", 
  "array_designator", "nested_function", "@21", "@22", 
  "notype_nested_function", "@23", "@24", "declarator", 
  "after_type_declarator", "parm_declarator", 
  "parm_declarator_starttypename", "parm_declarator_nostarttypename", 
  "notype_declarator", "struct_head", "union_head", "enum_head", 
  "structsp_attr", "@25", "@26", "@27", "@28", "structsp_nonattr", 
  "maybecomma", "maybecomma_warn", "component_decl_list", 
  "component_decl_list2", "component_decl", "components", 
  "components_notype", "component_declarator", 
  "component_notype_declarator", "enumlist", "enumerator", "typename", 
  "@29", "absdcl", "absdcl_maybe_attribute", "absdcl1", "absdcl1_noea", 
  "absdcl1_ea", "direct_absdcl1", "array_declarator", "stmts_and_decls", 
  "lineno_stmt_decl_or_labels_ending_stmt", 
  "lineno_stmt_decl_or_labels_ending_decl", 
  "lineno_stmt_decl_or_labels_ending_label", 
  "lineno_stmt_decl_or_labels_ending_error", "lineno_stmt_decl_or_labels", 
  "errstmt", "c99_block_start", "maybe_label_decls", "label_decls", 
  "label_decl", "compstmt_or_error", "compstmt_start", "compstmt_nostart", 
  "compstmt_contents_nonempty", "compstmt_primary_start", "compstmt", 
  "save_location", "lineno_labels", "c99_block_lineno_labeled_stmt", 
  "lineno_stmt", "lineno_label", "condition", "if_statement_1", 
  "if_statement_2", "if_statement", "start_break", "start_continue", 
  "while_statement", "do_statement", "@30", "@31", "xexpr", 
  "for_init_stmt", "for_cond_expr", "for_incr_expr", "for_statement", 
  "switch_statement", "@32", "stmt_nocomp", "objc_catch_prefix", 
  "objc_catch_clause", "objc_opt_catch_list", "objc_try_catch_clause", 
  "@33", "objc_finally_clause", "objc_try_catch_stmt", "stmt", "label", 
  "simple_asm_expr", "maybeasm", "asmdef", "asm_stmt", "asm_argument", 
  "maybe_volatile", "asm_operands", "nonnull_asm_operands", "asm_operand", 
  "asm_clobbers", "asm_string", "stop_string_translation", 
  "start_string_translation", "parmlist", "@34", "parmlist_1", "@35", 
  "@36", "parmlist_2", "parms", "parm", "firstparm", "setspecs_fp", 
  "parmlist_or_identifiers", "@37", "parmlist_or_identifiers_1", 
  "identifiers", "identifiers_or_typenames", "extension", "objcdef", 
  "identifier_list", "classdecl", "aliasdecl", "superclass", 
  "class_ivars", "classdef", "@38", "@39", "@40", "@41", "protocoldef", 
  "@42", "protocolrefs", "non_empty_protocolrefs", "ivar_decl_list", 
  "visibility_spec", "ivar_decls", "ivar_decl", "opt_semi", "methodtype", 
  "methoddef", "@43", "@44", "methodprotolist", "@45", "semi_or_error", 
  "methodproto", "@46", "@47", "methoddecl", "optparmlist", "optparms", 
  "optellipsis", "unaryselector", "keywordselector", "selector", 
  "reservedwords", "objc_qual", "objc_quals", "objc_typename", 
  "keyworddecl", "messageargs", "keywordarglist", "keywordexpr", 
  "keywordarg", "receiver", "objcmessageexpr", "selectorarg", 
  "keywordnamelist", "keywordname", "objcselectorexpr", 
  "objcprotocolexpr", "objcencodeexpr", 0
};
#endif

/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */
static const short yyr1[] =
{
       0,    95,    95,    97,    96,    98,    96,    99,    99,    99,
      99,    99,   100,   101,   101,   101,   101,   101,   101,   101,
     103,   104,   102,   102,   105,   106,   102,   102,   107,   108,
     102,   102,   109,   109,   109,   110,   110,   110,   110,   110,
     110,   110,   111,   111,   112,   112,   113,   113,   114,   114,
     114,   114,   114,   114,   114,   114,   114,   114,   114,   115,
     116,   117,   118,   118,   119,   119,   119,   119,   119,   119,
     119,   119,   119,   119,   119,   119,   119,   120,   119,   121,
     119,   122,   123,   119,   124,   119,   119,   119,   125,   125,
     125,   125,   126,   125,   125,   125,   125,   125,   125,   125,
     127,   125,   125,   125,   125,   125,   125,   125,   125,   125,
     125,   125,   125,   125,   125,   125,   125,   128,   128,   128,
     129,   129,   130,   131,   131,   131,   131,   132,   132,   132,
     132,   133,   134,   135,   136,   136,   136,   136,   136,   136,
     137,   137,   137,   138,   139,   139,   140,   140,   141,   141,
     141,   141,   141,   141,   141,   142,   142,   142,   142,   142,
     142,   143,   143,   143,   143,   143,   143,   144,   144,   144,
     144,   144,   145,   145,   145,   145,   145,   145,   145,   146,
     147,   147,   147,   147,   147,   147,   148,   149,   149,   149,
     149,   149,   149,   149,   149,   149,   149,   150,   150,   150,
     150,   150,   151,   151,   151,   151,   151,   151,   151,   151,
     151,   151,   152,   152,   152,   152,   152,   153,   153,   153,
     153,   153,   153,   153,   153,   154,   154,   154,   154,   154,
     154,   154,   154,   155,   155,   155,   155,   156,   156,   156,
     156,   157,   157,   157,   157,   158,   158,   158,   158,   159,
     159,   159,   159,   159,   159,   159,   159,   160,   160,   160,
     160,   160,   160,   160,   160,   160,   160,   160,   160,   160,
     160,   160,   160,   161,   161,   162,   162,   163,   164,   164,
     165,   166,   166,   166,   166,   166,   166,   167,   167,   168,
     168,   170,   169,   169,   172,   171,   171,   173,   173,   174,
     174,   175,   175,   176,   176,   177,   177,   177,   177,   177,
     178,   178,   178,   178,   179,   179,   180,   181,   180,   180,
     182,   182,   183,   183,   184,   184,   185,   184,   184,   187,
     186,   186,   186,   188,   188,   189,   189,   190,   190,   192,
     193,   191,   195,   196,   194,   197,   197,   198,   198,   198,
     198,   198,   199,   199,   200,   200,   200,   201,   201,   201,
     201,   201,   202,   202,   202,   202,   202,   203,   203,   204,
     204,   205,   205,   207,   206,   206,   208,   206,   206,   209,
     206,   210,   206,   211,   211,   211,   212,   212,   213,   213,
     214,   214,   215,   215,   215,   215,   216,   216,   216,   216,
     216,   216,   217,   217,   218,   218,   219,   219,   219,   220,
     220,   220,   221,   221,   221,   222,   222,   224,   223,   225,
     225,   226,   226,   226,   227,   227,   228,   228,   229,   229,
     230,   230,   230,   230,   230,   231,   231,   231,   231,   231,
     232,   232,   232,   232,   233,   233,   233,   233,   233,   234,
     234,   234,   234,   235,   235,   235,   235,   235,   236,   236,
     237,   237,   237,   237,   238,   239,   240,   240,   241,   241,
     242,   243,   243,   244,   245,   245,   246,   246,   247,   248,
     249,   250,   250,   251,   252,   253,   254,   255,   256,   256,
     257,   257,   257,   257,   258,   259,   260,   262,   263,   261,
     264,   264,   265,   265,   266,   267,   268,   270,   269,   271,
     271,   271,   271,   271,   271,   271,   271,   271,   271,   271,
     271,   271,   271,   271,   271,   271,   271,   272,   273,   273,
     274,   274,   276,   275,   277,   278,   278,   279,   279,   280,
     280,   280,   280,   281,   282,   282,   283,   283,   284,   285,
     285,   285,   285,   286,   286,   287,   287,   288,   288,   289,
     289,   290,   290,   291,   292,   293,   295,   294,   296,   297,
     298,   296,   296,   299,   299,   299,   299,   300,   300,   301,
     301,   301,   301,   301,   302,   302,   302,   302,   302,   303,
     305,   304,   306,   306,   307,   307,   308,   308,   309,   310,
     310,   310,   310,   310,   310,   311,   311,   312,   313,   314,
     314,   315,   315,   317,   318,   316,   319,   316,   320,   316,
     316,   322,   321,   321,   323,   323,   324,   325,   325,   326,
     326,   326,   326,   327,   327,   327,   328,   329,   329,   330,
     330,   332,   333,   331,   334,   334,   335,   334,   336,   336,
     338,   339,   337,   340,   340,   340,   340,   341,   342,   342,
     343,   343,   344,   345,   345,   346,   346,   346,   346,   347,
     347,   347,   347,   347,   347,   347,   347,   347,   347,   347,
     347,   347,   347,   347,   347,   347,   347,   347,   347,   347,
     347,   348,   349,   349,   350,   350,   351,   351,   351,   351,
     352,   352,   353,   353,   354,   355,   355,   356,   356,   356,
     357,   358,   358,   359,   359,   360,   360,   361,   362,   363
};

/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */
static const short yyr2[] =
{
       0,     0,     1,     0,     3,     0,     4,     1,     1,     1,
       2,     1,     0,     3,     4,     4,     2,     2,     2,     1,
       0,     0,     8,     4,     0,     0,     8,     4,     0,     0,
       7,     3,     1,     1,     1,     1,     1,     1,     1,     1,
       1,     1,     1,     3,     0,     1,     1,     3,     1,     2,
       2,     2,     2,     2,     4,     2,     4,     2,     2,     1,
       1,     1,     1,     4,     1,     3,     3,     3,     3,     3,
       3,     3,     3,     3,     3,     3,     3,     0,     4,     0,
       4,     0,     0,     7,     0,     5,     3,     3,     1,     1,
       1,     1,     0,     7,     3,     3,     3,     3,     4,     6,
       0,     7,     4,     8,     4,     6,     4,     4,     3,     3,
       2,     2,     1,     1,     1,     1,     1,     1,     3,     4,
       0,     1,     2,     1,     1,     2,     2,     4,     4,     2,
       2,     2,     0,     1,     4,     4,     3,     3,     2,     2,
       1,     2,     2,     2,     2,     2,     1,     2,     1,     2,
       2,     2,     2,     2,     2,     1,     2,     2,     2,     2,
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
       2,     2,     1,     2,     2,     2,     2,     2,     2,     2,
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
       2,     2,     2,     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,     1,     1,
       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
       1,     1,     1,     0,     1,     1,     1,     1,     1,     1,
       1,     1,     2,     2,     1,     4,     4,     1,     4,     1,
       4,     0,     6,     3,     0,     6,     3,     0,     1,     1,
       2,     8,     3,     1,     3,     0,     1,     4,     6,     4,
       1,     1,     1,     1,     1,     1,     1,     0,     4,     1,
       0,     2,     1,     3,     3,     2,     0,     4,     1,     0,
       4,     1,     1,     1,     2,     2,     1,     5,     3,     0,
       0,     6,     0,     0,     6,     1,     1,     4,     3,     2,
       3,     1,     1,     1,     3,     2,     1,     3,     2,     3,
       3,     4,     3,     4,     3,     2,     1,     1,     2,     1,
       2,     1,     2,     0,     7,     5,     0,     7,     5,     0,
       8,     0,     7,     2,     2,     2,     0,     1,     0,     1,
       1,     2,     0,     3,     2,     4,     3,     2,     3,     1,
       1,     2,     1,     4,     1,     4,     2,     4,     3,     2,
       4,     3,     1,     3,     1,     1,     3,     0,     3,     0,
       1,     0,     1,     2,     1,     1,     1,     3,     2,     3,
       4,     3,     2,     2,     1,     4,     3,     4,     5,     5,
       1,     1,     1,     1,     1,     2,     2,     2,     2,     1,
       2,     2,     2,     1,     2,     2,     2,     2,     1,     2,
       1,     1,     1,     1,     2,     0,     0,     1,     1,     2,
       3,     1,     2,     1,     1,     3,     1,     1,     2,     2,
       0,     0,     2,     3,     2,     2,     2,     3,     3,     1,
       9,     9,     7,     7,     0,     0,     9,     0,     0,    13,
       0,     1,     2,     1,     2,     1,    12,     0,     8,     2,
       1,     1,     1,     1,     1,     2,     2,     2,     3,     1,
       3,     4,     1,     3,     2,     1,     6,     4,     3,     4,
       0,     2,     0,     5,     3,     1,     2,     1,     1,     3,
       5,     2,     4,     6,     0,     1,     2,     4,     8,     1,
       3,     5,     7,     0,     1,     0,     1,     1,     3,     6,
       9,     1,     3,     1,     0,     0,     0,     3,     2,     0,
       0,     6,     2,     0,     1,     1,     3,     1,     3,     4,
       4,     3,     4,     3,     4,     4,     3,     4,     3,     1,
       0,     3,     1,     2,     1,     3,     1,     3,     1,     1,
       1,     1,     1,     1,     1,     1,     3,     3,     4,     2,
       0,     3,     0,     0,     0,     9,     0,     5,     0,     9,
       5,     0,     6,     3,     0,     1,     3,     0,     3,     0,
       1,     1,     1,     0,     3,     2,     1,     0,     1,     1,
       1,     0,     0,     6,     0,     2,     0,     3,     1,     1,
       0,     0,     5,     4,     1,     5,     2,     2,     0,     3,
       0,     2,     1,     1,     2,     1,     1,     1,     1,     1,
       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
       1,     1,     2,     0,     2,     1,     6,     3,     5,     2,
       1,     1,     1,     2,     1,     3,     2,     1,     1,     1,
       4,     1,     1,     1,     2,     2,     1,     4,     4,     4
};

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

static const short yydefgoto[] =
{
    1166,     1,     4,     5,    30,     2,    31,    32,   421,   856,
     427,   858,   274,   724,   896,   236,   351,   522,   523,   238,
     239,   240,    33,   241,   242,   507,   506,   504,   905,   505,
     243,   798,   797,   891,   410,   411,   412,   565,   538,    34,
     402,   691,   244,   245,   246,   247,   248,   249,   250,   251,
      43,    44,    45,    46,    47,    48,    49,    50,    51,    52,
     712,   713,   440,   264,   252,    53,   265,    54,    55,    56,
      57,    58,   281,   106,   282,   857,   107,   729,   403,   267,
      60,   467,   468,   469,    61,   855,   950,   898,   899,   900,
    1042,   901,   980,   902,   903,   904,   924,  1006,  1108,   927,
    1008,  1109,   732,   284,   933,   934,   935,   285,    62,    63,
      64,    65,   444,   446,   451,   294,    66,   984,   595,   289,
     290,   442,   739,   743,   740,   744,   449,   450,   253,   390,
     528,   937,   938,   530,   531,   532,   275,   539,   540,   541,
     542,   543,   544,   413,  1074,   395,   396,   397,   755,   695,
     398,   546,   254,   756,   414,  1095,  1091,  1114,  1115,  1047,
    1092,  1093,   697,   993,  1049,   698,   699,  1116,  1136,   996,
     997,  1077,  1118,   700,   701,  1078,   702,  1082,  1083,  1056,
     703,  1002,   836,   704,   705,   706,   276,   277,    68,   707,
    1054,   824,  1102,  1103,  1104,  1153,  1105,    86,   194,   650,
     806,   714,   944,  1065,   715,   716,   776,   717,   840,   405,
     555,   718,   719,   536,   255,    70,    93,    71,    72,   202,
     475,    73,   472,   783,   338,   782,    74,   339,    96,    75,
     613,   788,   883,   972,   457,    76,    77,   193,   602,   476,
     616,  1035,   617,   789,   973,   323,   458,   459,   604,   324,
     325,   326,   327,   600,   454,   455,   328,   489,   490,   628,
     491,   356,   256,   494,   495,   496,   257,   258,   259
};

static const short yypact[] =
{
     126,   194,-32768,-32768,  3887,  3887,   471,   165,-32768,-32768,
  -32768,-32768,   168,   168,   168,    88,-32768,   119,-32768,   129,
  -32768,-32768,   129,   129,-32768,   165,   129,   129,   129,-32768,
  -32768,-32768,-32768,   238,   391,  1663,  4046,  3304,  4065,   324,
     382,   706,   767,  3991,  4086,  4012,  4107,   810,   977,   909,
    1270,-32768,-32768,   173,-32768,-32768,-32768,-32768,-32768,   168,
  -32768,-32768,   115,   153,   187,-32768,-32768,   223,-32768,  3887,
  -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
  -32768,-32768,   168,   168,   168,-32768,   258,-32768,   284,-32768,
  -32768,-32768,-32768,   183,   312,   393,-32768,-32768,   204,   396,
     414,   129,  3291,-32768,   234,   168,   427,-32768,  2663,-32768,
  -32768,-32768,   168,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
  -32768,   168,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
     168,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,   168,
  -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,   168,-32768,
  -32768,-32768,-32768,-32768,-32768,-32768,-32768,   168,-32768,-32768,
  -32768,-32768,-32768,-32768,-32768,-32768,   168,-32768,-32768,-32768,
  -32768,-32768,-32768,-32768,-32768,   168,-32768,-32768,-32768,-32768,
  -32768,   297,   391,-32768,-32768,   301,   293,   301,   316,-32768,
     361,-32768,-32768,  4182,   376,   394,-32768,   399,-32768,   129,
     129,   129,   165,   129,-32768,-32768,-32768,-32768,   443,-32768,
  -32768,-32768,-32768,-32768,  3555,  3555,   476,   482,   485,-32768,
     520,   129,-32768,-32768,-32768,  3555,-32768,-32768,  1455,  3357,
     525,   536,   545,-32768,-32768,-32768,  3555,   586,-32768,  3621,
    3687,-32768,  4743,   685,  3919,  2198,  4499,  2324,   538,   729,
     566,   823,-32768,   444,  2009,  3555,-32768,-32768,-32768,-32768,
     333,   606,   412,   626,-32768,   391,   391,   168,-32768,   168,
  -32768,-32768,   168,   470,  1650,-32768,-32768,   168,-32768,   234,
     168,   442,-32768,  1557,   623,   640,   452,  2693,   581,   544,
    3837,-32768,   565,-32768,   145,-32768,-32768,-32768,-32768,-32768,
  -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
  -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
     203,-32768,-32768,   489,-32768,  4215,   613,-32768,-32768,-32768,
  -32768,   590,   490,-32768,-32768,   604,-32768,   607,   582,-32768,
  -32768,-32768,-32768,  3555,  3119,  2548,  3094,-32768,-32768,   609,
  -32768,   624,   617,-32768,-32768,   635,  4250,  4283,  4528,   129,
  -32768,  3555,-32768,  1455,-32768,  1455,-32768,  3555,  3555,   686,
  -32768,-32768,  3555,  3555,  3555,  3555,  3555,  3555,  3555,  3555,
    3555,  3555,  3555,  3555,-32768,-32768,   129,   129,  3555,  3555,
      68,-32768,   641,   129,-32768,  2263,   639,-32768,   643,-32768,
     640,   315,   391,-32768,-32768,-32768,   234,   747,  2738,   673,
  -32768,  1819,    71,-32768,  4414,   719,   297,   297,-32768,   168,
  -32768,  1650,   168,   168,-32768,-32768,-32768,  1650,   690,   168,
  -32768,-32768,  3919,  2198,  4499,  2324,   538,   729,   566,   823,
  -32768,   630,   681,  2223,   301,   168,   301,-32768,   727,   687,
  -32768,   145,-32768,-32768,  1929,   693,-32768,-32768,-32768,   696,
     613,-32768,   261,-32768,-32768,-32768,-32768,   649,-32768,   739,
  -32768,   165,   582,-32768,-32768,-32768,   455,  1936,   718,  4637,
     722,   741,   744,   752,-32768,-32768,  3050,  3555,   774,   751,
    4250,-32768,-32768,   804,   761,  4283,-32768,   763,   770,  4743,
     772,   789,  4743,  4743,  3555,   814,  3555,  3555,  1632,   820,
    1498,  1043,  1282,   891,   891,   628,   628,-32768,-32768,-32768,
  -32768,-32768,   801,   812,  4743,   281,   234,   168,-32768,-32768,
  -32768,-32768,   710,-32768,-32768,-32768,   498,   673,-32768,-32768,
      84,    85,    96,   107,   904,-32768,   821,  2896,-32768,-32768,
  -32768,-32768,-32768,-32768,   286,  1840,  3555,  3555,  2804,-32768,
    1737,-32768,-32768,-32768,-32768,-32768,  1423,  4443,  1004,  1396,
    4140,  4448,  1236,  1757,   825,   831,-32768,   623,   335,   297,
  -32768,   867,-32768,-32768,   827,-32768,   584,   227,-32768,-32768,
     833,-32768,   839,  3555,   129,   846,   687,   847,-32768,-32768,
  -32768,  4215,    72,  4311,-32768,-32768,-32768,-32768,   490,   851,
    3753,-32768,-32768,   568,-32768,-32768,  3972,-32768,  4528,-32768,
    3555,-32768,  4528,-32768,-32768,-32768,-32768,   812,-32768,  3555,
  -32768,   774,-32768,-32768,-32768,   804,-32768,-32768,-32768,   859,
     859,   226,  3555,  1334,  1846,-32768,  3555,-32768,    68,    68,
  -32768,   168,-32768,-32768,   129,-32768,-32768,-32768,-32768,-32768,
  -32768,  2984,-32768,-32768,-32768,-32768,-32768,-32768,-32768,   899,
     292,-32768,-32768,-32768,-32768,-32768,  3555,   908,   869,   871,
    3423,   106,   946,   408,  3489,-32768,-32768,-32768,-32768,-32768,
     510,-32768,-32768,-32768,   875,   121,-32768,-32768,-32768,-32768,
  -32768,-32768,-32768,   879,-32768,-32768,-32768,-32768,  3207,   877,
  -32768,-32768,-32768,-32768,-32768,   880,   521,-32768,-32768,   698,
    4539,  4557,-32768,-32768,    72,-32768,   297,-32768,   391,  1256,
  -32768,-32768,   942,-32768,-32768,-32768,-32768,  3555,    99,   882,
  -32768,  3555,   389,   883,-32768,   168,   168,  4743,-32768,   168,
     887,   129,-32768,  4215,   885,-32768,-32768,-32768,  1423,  4443,
    4360,  4475,  1004,  1396,  1621,  1960,  4140,  4448,  4365,  4504,
    1236,  1757,  2445,  2449,-32768,-32768,-32768,   884,-32768,-32768,
     700,   888,-32768,-32768,-32768,-32768,-32768,-32768,-32768,  4182,
  -32768,   391,-32768,-32768,   896,  4657,   898,   129,  2354,-32768,
  -32768,  4759,  4743,-32768,-32768,   902,  1861,-32768,-32768,-32768,
  -32768,-32768,-32768,   929,   931,  4707,-32768,-32768,-32768,-32768,
     530,  3555,   911,-32768,-32768,-32768,   555,   885,   933,   956,
  -32768,   297,   391,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
     304,   255,-32768,-32768,  4330,   999,-32768,-32768,-32768,-32768,
     561,   570,-32768,-32768,  4743,-32768,    72,  1256,    72,  4688,
    3555,-32768,   168,  4688,  3555,-32768,   168,-32768,-32768,-32768,
     168,-32768,-32768,-32768,   304,   255,   129,-32768,  3555,-32768,
  -32768,   457,   539,  3797,-32768,   297,   391,-32768,  3555,-32768,
  -32768,   318,-32768,   129,  3357,-32768,   958,  4743,   916,   915,
  -32768,-32768,   348,-32768,  2504,  3555,-32768,-32768,   941,   947,
  -32768,  3207,  3555,  3555,-32768,-32768,   577,-32768,   948,-32768,
  -32768,  3555,   168,   580,-32768,   488,   583,-32768,   637,   885,
  -32768,   234,   168,   168,   728,   731,   267,-32768,-32768,   168,
     234,   168,   267,-32768,   168,-32768,-32768,-32768,-32768,-32768,
    2354,-32768,-32768,-32768,-32768,  4688,   584,-32768,  4688,   227,
  -32768,   168,   267,-32768,   267,-32768,-32768,   709,-32768,-32768,
  -32768,-32768,   928,   110,  4606,   129,  3555,-32768,-32768,  1122,
    2354,-32768,-32768,  2435,-32768,  2573,  3555,-32768,-32768,-32768,
    4759,-32768,-32768,-32768,   635,-32768,   930,-32768,   712,  4725,
  -32768,   394,-32768,   721,-32768,-32768,  1650,-32768,  1650,-32768,
     304,   310,-32768,   168,-32768,   168,-32768,-32768,   168,   255,
     255,-32768,-32768,   934,-32768,-32768,-32768,-32768,-32768,-32768,
  -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,   409,  3555,
  -32768,   935,  2573,-32768,-32768,  1122,  3555,   924,   937,-32768,
  -32768,-32768,-32768,-32768,   940,   980,   950,   885,-32768,-32768,
     728,   731,   383,-32768,-32768,  1861,-32768,-32768,  4588,-32768,
  -32768,   635,-32768,-32768,-32768,  1015,  3555,   951,-32768,-32768,
     116,   969,   944,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
  -32768,-32768,  1030,  1031,-32768,-32768,-32768,-32768,  3555,-32768,
     963,   129,  1011,   967,-32768,-32768,  4394,  2111,   885,   885,
     196,-32768,-32768,-32768,-32768,-32768,-32768,-32768,   968,-32768,
  -32768,   965,   116,   116,   995,   971,   978,-32768,-32768,-32768,
  -32768,-32768,-32768,-32768,-32768,-32768,  1003,-32768,   394,  1025,
  -32768,  3555,-32768,-32768,   984,-32768,-32768,-32768,   394,   730,
     982,-32768,  1006,   987,-32768,-32768,   988,-32768,  3555,   394,
  -32768,-32768,   736,-32768,-32768,-32768,  1104,  1105,-32768
};

static const short yypgoto[] =
{
  -32768,-32768,-32768,-32768,    73,  1106,   493,-32768,-32768,-32768,
  -32768,-32768,-32768,-32768,   148,-32768,   -25,   502,  -431,   608,
  -32768,-32768,-32768,  -112,  1331,-32768,-32768,-32768,-32768,-32768,
  -32768,-32768,-32768,-32768,  -378,   701,-32768,-32768,   -59,   587,
    -392,  -656,     0,     2,    24,    46,    76,    78,    19,    21,
    -367,  -340,  -600,  -566,  -335,  -307,  -550,  -546,  -516,  -486,
     703,   704,-32768,  -257,-32768,  -485,  -238,  1009,  1150,  1158,
    1184,-32768,  -650,  -167,   540,-32768,   713,-32768,   411,    -3,
      39,-32768,   512,-32768,  1044,   264,-32768,  -798,-32768,   139,
  -32768,  -808,-32768,-32768,   222,   224,-32768,-32768,-32768,-32768,
  -32768,-32768,  -168,   441,   254,   122,  -144,    20,-32768,-32768,
  -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,   533,  -128,
  -32768,  -395,-32768,-32768,   175,   176,   688,   546,    54,-32768,
  -32768,  -482,  -360,  -495,  -578,-32768,   202,-32768,-32768,-32768,
  -32768,-32768,-32768,  -320,  -534,-32768,-32768,   746,  -657,-32768,
    -635,-32768,-32768,  -525,   425,  -974,  -920,  -303,  -290,  -927,
  -32768,  -223,    34,  -811,  -980,-32768,-32768,-32768,-32768,  -844,
  -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
  -32768,-32768,-32768,-32768,-32768,-32768,   157,  -271,-32768,-32768,
  -32768,-32768,    23,-32768,    25,-32768,  -178,   -17,   -79,   495,
  -32768,  -742,-32768,-32768,-32768,-32768,  -786,-32768,   437,  -409,
  -32768,-32768,-32768,-32768,    15,-32768,   865,-32768,-32768,  1056,
     682,-32768,-32768,-32768,-32768,-32768,-32768,-32768,   -43,    14,
  -32768,-32768,-32768,-32768,-32768,  -458,-32768,-32768,-32768,   118,
  -32768,-32768,-32768,-32768,-32768,   366,   405,-32768,-32768,   558,
     562,  -262,-32768,-32768,-32768,  -384,  -280,-32768,-32768,   554,
     677,-32768,-32768,-32768,-32768,   694,-32768,-32768,-32768
};


#define	YYLAST		4818


static const short yytable[] =
{
      88,    59,    59,   768,    35,    35,    36,    36,   196,    82,
      83,    84,   422,   283,   582,   286,   407,   331,   615,    69,
      69,    81,   696,    41,    41,    42,    42,   579,    37,    37,
     529,   692,   112,   441,   121,   408,   130,   769,   139,    97,
     148,   416,   157,   580,   166,   461,   175,   570,   589,   583,
      38,    38,   837,   772,   108,   205,   627,   773,   946,   292,
     834,   693,   694,   460,   907,  1048,    59,   849,   597,    35,
     804,    36,  -121,   754,   571,   545,   850,   237,    78,   572,
      39,    39,    40,    40,    69,  -460,  -461,   774,    41,    85,
      42,   563,   548,    37,   488,   493,   989,  -462,   184,    59,
     792,    59,   341,   342,   260,   549,   261,   573,  -463,    89,
      90,  1033,    97,   348,  1113,    38,  1110,   775,    89,    90,
      87,   184,   184,   184,   360,   526,    -1,   330,   262,  1075,
     793,    17,    89,    90,   527,   273,   696,   810,   811,   812,
     813,   814,   192,   399,   860,    39,   447,    40,    89,    90,
     263,   184,  1023,   803,  -564,   393,    89,    90,  1144,   336,
     184,    67,    67,   821,  -121,   688,  1151,    92,   556,   184,
      94,    95,  -440,  -441,    98,    92,   101,  1044,   184,  1119,
      91,   923,  1041,  1101,  -442,  -564,   441,   184,   570,    91,
      89,    90,   692,  1135,    -2,  -443,   184,  1034,   627,   951,
      17,   953,   287,    91,   355,   184,    89,    90,   185,   394,
     186,   188,   190,   671,   184,   571,    97,    19,  1150,    91,
     572,   777,   693,   694,   667,    59,    67,    91,   631,   873,
     103,  1157,  1097,   635,  1070,   198,   766,   656,   659,   662,
     665,   112,    11,   121,   768,   130,   187,   139,   573,   208,
     657,   660,   663,   666,  1117,   995,    19,   112,   103,   121,
     183,    91,  1094,   767,    89,    90,    17,  1099,   770,   452,
      59,   800,   741,   260,   199,   261,    59,    91,   769,   260,
     189,   261,   352,  1130,   104,   400,   401,    59,   648,   805,
     432,  -605,   433,   105,   772,  -605,   771,   262,   773,    17,
     103,   278,   920,   262,   102,   443,   184,   103,   930,   438,
     191,   439,   940,   103,   434,   271,   590,   361,   592,   263,
    1125,   941,   273,  1088,   195,   263,  1146,   605,   774,     8,
       9,    10,   127,   272,   273,    91,   435,   -33,    12,    13,
      14,   109,    59,    59,    19,   939,   939,   333,   334,   335,
     197,   337,   272,   273,   279,    59,    17,   200,   775,   943,
      59,   931,    59,   280,   525,    17,   436,   931,   437,   347,
     932,   273,   361,   288,   626,   647,   932,   273,   201,   939,
     939,   272,   273,   975,   607,   976,   291,     8,     9,    10,
     132,   985,   963,   965,   103,   692,    12,    13,    14,   481,
     483,   423,   273,    59,  1009,   330,   260,   552,   261,   293,
     977,  -261,   497,   893,   566,   986,   567,   500,   738,   501,
     118,    17,   554,   615,   615,   693,   694,   730,   611,   112,
     262,   121,   804,   130,   864,   139,   400,   401,   200,   570,
      59,   804,   448,   432,    17,   433,   348,   967,   104,  1015,
     273,    59,   263,   -34,   295,   272,   273,   105,   443,   203,
      19,   422,   438,   329,   439,   332,   571,   434,   453,  -262,
     956,   572,  1127,   461,   959,  1087,   406,   766,    11,   641,
     466,   655,   658,   206,   664,    97,   424,   199,   971,   435,
     568,   460,   569,    89,    90,     8,     9,   464,   465,   573,
     361,   207,    17,  1067,   767,   199,   768,   498,   599,   770,
      20,    21,    20,    21,   268,   803,   266,   271,   269,   436,
    -544,   437,   690,    59,   803,   614,   260,   968,   261,   418,
     340,  -544,  1084,   419,   520,   521,   391,   771,  1090,   425,
     769,   535,   343,   269,    59,    10,   127,    35,   344,    36,
     262,   345,    12,    13,    14,   566,   772,   567,    79,    80,
     773,   851,   708,   112,    91,   130,    41,   148,    42,   166,
      17,    37,   263,    10,   136,  -544,   456,  1132,  1132,  -544,
      12,    13,    14,  1128,  1129,   653,   346,   103,   278,   654,
     774,   357,   533,    38,    20,    21,   399,   830,    17,   448,
      59,   361,   358,   758,  1063,   759,  1064,   742,   843,   969,
     606,   359,   844,    59,   114,    59,    35,   915,    36,    59,
     775,   361,   764,    39,   765,    40,   441,   760,  1058,   737,
    1059,   568,   429,   569,   123,    41,   690,    42,   181,   182,
      37,   279,   919,   784,   785,   786,   361,   428,   948,   761,
     280,   805,   419,   445,   422,   820,   787,   949,   462,   826,
     805,   269,    38,   925,  1000,   926,   271,  1005,   361,  -544,
    1007,   419,   794,   393,   269,   474,   796,   361,   362,   762,
    -544,   763,   463,   404,    81,   381,   382,   383,   415,   423,
     273,   417,    39,  1010,    40,   689,   471,    97,   570,   473,
     877,   484,  1019,   272,   273,    59,   272,   273,    35,   486,
      36,     8,     9,    10,   136,   361,   485,  -399,  -399,   286,
      12,    13,    14,   708,  -544,   571,   361,    41,  -544,    42,
     572,   -84,    37,   534,   652,   551,    10,   132,    17,   766,
     608,   609,   448,    12,    13,    14,   384,   385,   554,   386,
     387,   388,   389,   557,    38,   112,   466,   121,   573,   130,
     561,   139,   576,   148,   584,   157,   767,   166,   588,   175,
     593,   770,     8,     9,    10,   141,   651,   273,   594,   424,
     424,    12,    13,    14,    39,   601,    40,   603,   738,   845,
     846,   878,   879,  -263,  1013,   273,   916,  1015,   273,   771,
     646,  1031,   809,   361,  1052,   610,   566,   918,   567,   689,
     619,   554,   361,  1057,   621,     8,     9,    10,   163,   629,
     547,   361,  1155,  1055,    12,    13,    14,   361,  1164,   822,
      10,   141,   622,   581,   404,   562,   623,    12,    13,    14,
     585,    59,    17,   624,   758,   630,   759,   364,   366,   633,
     533,   533,   928,   634,  -264,   637,   591,   577,   578,   642,
     936,   942,   638,   764,   639,   765,  1061,  1062,   760,   355,
     374,   375,   376,   377,   378,   379,   380,   381,   382,   383,
      59,   640,   568,   432,   569,   433,   994,   998,  1133,  1134,
     761,    99,   100,   645,   962,   964,  1003,  -269,   443,   871,
     881,   882,   438,   646,   439,   409,   554,   434,    59,   668,
     734,    35,   725,    36,     8,     9,    10,   172,   727,   736,
     762,   745,   763,    12,    13,    14,   708,   746,    59,   435,
      41,   260,    42,   261,   749,    37,  1018,    59,   649,   751,
     260,    17,   261,   779,   -32,   890,   379,   380,   381,   382,
     383,  1038,   625,   816,   823,   262,   817,    38,   818,   436,
    1147,   437,   833,   835,   262,   547,   547,   661,   547,   838,
    1154,   271,   842,   862,   866,   870,   876,   263,   688,   742,
     880,  1163,     8,     9,    10,   168,   263,    39,   887,    40,
     889,    12,    13,    14,   906,   911,  -271,   912,   917,   921,
    1100,   922,   947,   981,   982,   733,   983,   991,   735,     8,
       9,    10,   127,   992,  1001,  1032,  1072,  1050,    12,    13,
      14,  1071,  1066,  1069,   966,  1080,  1124,   586,   587,  1073,
     400,   401,  1079,  1081,  1096,  1106,    17,  1107,  1098,   400,
     401,   978,   533,   533,   110,   115,   119,   124,  1111,  1112,
    1120,   994,   146,   151,   155,   160,  1122,   184,  1123,  1138,
    1137,  1141,   807,  1142,  -270,   566,  1143,   567,  1152,  1145,
    1148,  1130,  1158,   994,  1156,  1161,   533,   533,  1159,   113,
     117,   122,   126,   131,   135,   140,   144,   149,   153,   158,
     162,   167,   171,   176,   180,   376,   377,   378,   379,   380,
     381,   382,   383,    59,  1167,  1168,   758,     3,   759,   790,
     827,   828,   781,   564,   829,   553,  1149,   574,   575,   731,
     778,   952,  1043,  1037,   987,   764,   988,   765,   961,   750,
     760,  1025,  1060,  1162,  1039,  1027,  1014,  1016,  1160,   596,
     748,   568,   550,   569,  1131,  1139,   808,  1165,  1140,   861,
     841,   204,   761,   865,   612,   884,   867,   868,   872,   752,
     869,   726,   728,   753,   367,   368,   369,   632,   370,   371,
     372,   373,   374,   375,   376,   377,   378,   379,   380,   381,
     382,   383,   762,   799,   763,   111,   116,   120,   125,   636,
       0,     0,     0,   147,   152,   156,   161,   128,   133,   137,
     142,     0,     0,   791,     0,   164,   169,   173,   178,     0,
       0,     0,   533,   533,     0,     0,  1040,     0,     0,     0,
       0,   533,   533,   129,   134,   138,   143,     0,     0,     0,
       0,   165,   170,   174,   179,   908,   909,   910,     0,     0,
       0,     8,     9,    10,   163,     0,     0,     0,     0,  1121,
      12,    13,    14,   110,   115,   119,   124,   852,     0,   209,
     929,     0,  1014,  1016,  1016,     0,   210,   211,    17,   212,
     954,     0,     0,     0,   957,     8,     9,    10,   177,   831,
     832,   960,     0,     0,    12,    13,    14,   213,     0,    18,
       0,   214,   215,   216,   217,   218,   219,   220,     0,   839,
     839,     0,     0,   221,     0,     0,   222,     0,     0,     0,
       0,   223,   224,   225,     0,     0,     0,   226,   227,     0,
       0,     0,   228,   229,     0,     0,     0,   230,     0,   231,
       0,     0,     0,  1004,   232,   377,   378,   379,   380,   381,
     382,   383,   233,  1011,  1012,   234,   235,  1017,     0,   853,
       0,     0,  1020,  1021,     0,  1022,     0,  -272,     0,     0,
       0,   874,   875,     0,     0,     0,  1024,     0,     0,  1026,
       0,     0,  1028,  1029,     0,  1030,   470,     0,     0,   885,
     886,   371,   372,   373,   374,   375,   376,   377,   378,   379,
     380,   381,   382,   383,   111,   116,   120,   125,     0,     0,
       0,     8,     9,    10,   132,     0,   128,   133,   137,   142,
      12,    13,    14,     0,     0,     0,  1046,  1046,     0,     0,
       0,     0,  1051,     0,   404,     0,   404,     7,     8,     9,
      10,   109,   129,   134,   138,   143,     0,    12,    13,    14,
       0,   110,   115,   119,   124,     0,     0,     0,     0,     0,
       0,     0,     0,    16,     0,    17,   349,     0,   209,     7,
       0,     0,    10,    11,     0,   210,   211,     0,   212,    12,
      13,    14,     0,     0,     0,    19,  1076,     0,     0,     0,
       0,     0,     0,  1085,  1086,    16,   213,    17,    18,     0,
     214,   215,   216,   217,   218,   219,   220,    25,     0,     0,
       0,     0,   221,     0,     0,   222,     0,    19,     0,     0,
     223,   224,   225,     0,     0,     0,   226,   227,     0,     0,
     661,   228,   229,     0,     0,     0,   230,     0,   231,    25,
       0,     0,     0,   232,     0,   661,     0,     0,     0,     0,
       0,   233,     0,     0,   234,   235,     0,     0,   350,   375,
     376,   377,   378,   379,   380,   381,   382,   383,   420,     0,
       0,   -20,   -20,   -20,   -20,   -20,     0,     0,     0,   661,
    1046,   -20,   -20,   -20,     0,   110,   115,     0,     0,   146,
     151,     0,   111,   116,   120,   125,   271,   -20,     0,  -544,
       0,     0,     0,     0,   128,   133,   137,   142,     0,     0,
    -544,     0,     0,     0,     0,     0,     0,     0,     0,   -20,
     113,   117,   131,   135,   149,   153,   167,   171,     0,     0,
     129,   134,   138,   143,     0,     0,     8,     9,    10,   136,
       0,   -20,     0,     0,     0,    12,    13,    14,     0,     0,
       0,     0,     0,     0,  -544,     0,     0,     0,  -544,     0,
     -20,   409,   470,    17,  -480,  -480,  -480,  -480,  -480,     0,
       0,     0,     0,     0,  -480,  -480,  -480,     7,     8,     9,
      10,   109,     0,     0,   477,   479,     0,    12,    13,    14,
    -480,   373,   374,   375,   376,   377,   378,   379,   380,   381,
     382,   383,   499,    16,     0,    17,     0,     0,   502,   503,
       0,     0,  -480,   508,   509,   510,   511,   512,   513,   514,
     515,   516,   517,   518,   519,    19,   111,   116,     0,   524,
     147,   152,     0,     0,  -480,     0,   128,   133,     0,     0,
     164,   169,     0,     0,     0,     0,     0,    25,     0,   560,
       0,     0,     0,  -120,     0,     0,     0,     0,     0,     0,
    -257,     0,   129,   134,     0,     0,   165,   170,     0,     0,
       0,     0,     8,     9,    10,   168,     0,   110,   115,   119,
     124,    12,    13,    14,     0,   146,   151,   155,   160,   367,
     368,   369,     0,   370,   371,   372,   373,   374,   375,   376,
     377,   378,   379,   380,   381,   382,   383,     0,     0,     0,
       0,     0,   113,   117,   122,   126,   131,   135,   140,   144,
     149,   153,   158,   162,   167,   171,   176,   180,   524,     0,
     409,     0,     0,  -123,  -123,  -123,  -123,  -123,     0,     0,
       0,   723,     0,  -123,  -123,  -123,     0,   643,   644,     0,
       0,   709,     0,   710,     7,     8,     9,    10,    11,  -123,
       0,     0,   711,     0,    12,    13,    14,     0,     0,     0,
       0,     0,   709,     0,     0,     7,     8,     9,    10,    11,
      16,  -123,     0,   711,     0,    12,    13,    14,     0,     0,
       0,     0,     0,     0,     0,     0,     0,   720,   721,     0,
       0,    16,    19,  -123,   372,   373,   374,   375,   376,   377,
     378,   379,   380,   381,   382,   383,     0,     0,   111,   116,
     120,   125,  -123,    19,    25,     0,   147,   152,   156,   161,
     128,   133,   137,   142,   747,     0,     0,     0,   164,   169,
     173,   178,  -573,     7,     0,    25,    10,    11,   598,     0,
       0,   524,     0,    12,    13,    14,   129,   134,   138,   143,
       0,   795,     0,  -573,   165,   170,   174,   179,     0,    16,
     524,    17,     0,     0,     0,     8,     9,    10,   141,     0,
       0,     0,     0,   801,    12,    13,    14,   802,   367,   368,
     369,    19,   370,   371,   372,   373,   374,   375,   376,   377,
     378,   379,   380,   381,   382,   383,     0,     0,     0,     0,
       0,     0,     0,    25,     0,     0,     0,   815,     0,     0,
     392,     0,  -466,  -466,  -466,  -466,  -466,  -466,     0,  -466,
    -466,     0,  -466,  -466,  -466,  -466,  -466,   618,  -466,  -466,
    -466,  -466,  -466,  -466,  -466,  -466,  -466,  -466,  -466,  -466,
    -466,  -466,  -466,   393,  -466,  -466,  -466,  -466,  -466,  -466,
    -466,     0,     0,     0,     0,     0,  -466,     0,     0,  -466,
     854,  -466,     0,     0,  -466,  -466,  -466,     0,   859,     0,
    -466,  -466,   863,     0,     0,  -466,  -466,     0,     0,     0,
    -466,     0,  -466,  -466,     0,     0,     0,  -466,     0,     0,
    -466,  -466,     0,     0,  -466,  -466,  -466,   394,  -466,  -466,
       0,     0,  -466,     0,     0,     0,     0,     0,     0,     0,
       0,     0,  1126,     0,  -466,  -466,  -466,  -466,  -466,  -466,
       0,  -466,  -466,     0,  -466,  -466,  -466,  -466,  -466,   897,
    -466,  -466,  -466,  -466,  -466,  -466,  -466,  -466,  -466,  -466,
    -466,  -466,  -466,  -466,  -466,   393,  -466,  -466,  -466,  -466,
    -466,  -466,  -466,     0,     0,     0,     0,     0,  -466,     0,
       0,  -466,     0,  -466,     0,     0,  -466,  -466,  -466,     0,
       0,     0,  -466,  -466,     0,     0,     0,  -466,  -466,     0,
       0,     0,  -466,     0,  -466,  -466,     0,     0,   854,  -466,
       0,   955,  -466,  -466,     0,   958,  -466,  -466,  -466,   394,
    -466,  -466,     7,     0,  -466,    10,   114,     0,     0,   524,
       0,     0,    12,    13,    14,     0,     0,     0,     0,   974,
       0,     0,     0,     0,   430,   979,     0,     7,    16,     0,
      10,    11,     0,     0,     0,   897,   990,    12,    13,    14,
       0,     0,     0,     0,   999,     0,     0,     0,     0,     0,
      19,     0,     0,    16,     0,    17,    18,     0,     0,     0,
       0,     0,     0,     0,   537,     0,  -480,  -480,  -480,  -480,
    -480,  -480,    25,  -480,  -480,    19,  -480,  -480,  -480,  -480,
    -480,   897,  -480,  -480,  -480,  -480,  -480,  -480,  -480,  -480,
    -480,  -480,  -480,  -480,  -480,  -480,  -480,    25,  -480,  -480,
    -480,  -480,  -480,  -480,  -480,     0,     0,     0,     0,     0,
    -480,   897,     0,  -480,   897,  -480,   897,  1045,  -480,  -480,
    -480,     0,     0,     0,  -480,  -480,     0,     0,     7,  -480,
    -480,    10,   123,     0,  -480,     0,  -480,  -480,    12,    13,
      14,  -480,     0,     0,  -480,  -480,     0,     0,  -480,  -480,
    -480,     0,  -480,  -480,    16,   892,  -480,   669,    90,     0,
       0,     0,     0,     0,   210,   211,     0,   212,     0,     0,
    1068,     0,     0,   897,     0,     0,    19,     0,     0,     0,
       0,     0,     0,     0,     0,   213,     0,    18,     0,   214,
     215,   216,   217,   218,   219,   220,     0,     0,    25,     0,
       0,   221,     0,     0,   222,     0,     0,     0,     0,   223,
     224,   225,     0,     0,     0,   226,   227,     0,     0,   893,
     228,   894,     0,     0,     0,   230,     0,   231,    91,     0,
       0,     0,   232,     0,     0,     0,   892,     0,   669,    90,
     233,     0,  -320,   234,   235,   210,   211,   895,   212,     0,
       8,     9,    10,   172,     8,     9,    10,   177,     0,    12,
      13,    14,     0,    12,    13,    14,   213,     0,    18,     0,
     214,   215,   216,   217,   218,   219,   220,    17,     0,     0,
       0,     0,   221,     0,     0,   222,     0,     0,     0,     0,
     223,   224,   225,     0,     0,     0,   226,   227,     0,     0,
     893,   228,   894,     0,     0,   892,   230,   209,   231,    91,
       0,     0,     0,   232,   210,   211,     0,   212,     0,     0,
       0,   233,     0,  -387,   234,   235,     0,     0,   895,     0,
       0,     0,     0,     0,     0,   213,     0,    18,     0,   214,
     215,   216,   217,   218,   219,   220,     0,  -336,     0,   480,
       0,   221,     7,     0,   222,    10,    11,     0,     0,   223,
     224,   225,    12,    13,    14,   226,   227,     0,     0,  -336,
     228,   229,     0,     0,   892,   230,   209,   231,    16,     0,
      17,     0,   232,   210,   211,     0,   212,     0,     0,     0,
     233,     0,     0,   234,   235,     0,     0,   895,     0,     0,
      19,     0,     0,     0,   213,     0,    18,     0,   214,   215,
     216,   217,   218,   219,   220,     0,     0,     0,     0,     0,
     221,     0,    25,   222,     0,     0,     0,     0,   223,   224,
     225,     0,     0,     0,   226,   227,     0,     0,     0,   228,
     229,     0,     0,     0,   230,     0,   231,     0,     0,     0,
       0,   232,     0,     0,     0,     0,     0,     0,     0,   233,
       0,     0,   234,   235,   270,     0,   895,   -28,   -28,   -28,
     -28,   -28,     0,     0,     0,     0,     0,   -28,   -28,   -28,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,   271,   -28,   426,  -544,     0,   -24,   -24,   -24,
     -24,   -24,     0,     0,     0,     0,  -544,   -24,   -24,   -24,
       0,     0,     0,     0,     0,   -28,     0,     0,     0,     0,
       0,     0,   271,   -24,     0,  -544,     0,     0,     0,   272,
     273,     0,     0,     0,     0,     0,  -544,   -28,     0,     0,
       0,   209,     0,     0,     0,   -24,     0,     0,   210,   211,
    -544,   212,     0,     0,  -544,     0,   -28,     0,     0,   272,
     273,     0,     0,     0,     0,     0,     0,   -24,     0,   213,
       0,    18,     0,   214,   215,   216,   217,   218,   219,   220,
    -544,     0,     0,     0,  -544,   221,   -24,     0,   222,     0,
       0,     0,     0,   223,   224,   558,     0,     0,     0,   226,
     227,     0,     0,     0,   228,   229,     0,   209,     0,   230,
       0,   231,     0,     0,   210,   211,   232,   212,     0,     0,
       0,     0,     0,     0,   233,     0,     0,   234,   235,     0,
       0,     0,   559,     0,     0,   213,     0,    18,     0,   214,
     215,   216,   217,   218,   219,   220,     0,     0,     0,     0,
       0,   221,     0,     0,   222,     0,     0,     0,     0,   223,
     224,   225,     0,     0,     0,   226,   227,     0,     0,     0,
     228,   229,     0,     0,     0,   230,     0,   231,     0,     0,
       0,     0,   232,     0,     0,     0,     0,     0,     0,     0,
     233,     0,     0,   234,   235,     0,     0,     0,   722,   669,
     670,     8,     9,    10,    11,     0,   210,   211,     0,   212,
      12,    13,    14,   671,     0,   672,   673,   674,   675,   676,
     677,   678,   679,   680,   681,   682,    16,   213,    17,    18,
       0,   214,   215,   216,   217,   218,   219,   220,     0,     0,
       0,     0,     0,   221,     0,     0,   222,     0,    19,     0,
       0,   223,   224,   225,     0,     0,     0,   226,   227,     0,
       0,     0,   228,   229,     0,     0,     0,   230,     0,   231,
     683,     0,     0,     0,   232,     0,     0,   684,   685,     0,
       0,   686,   233,   687,     0,   234,   235,   669,    90,   688,
       0,     0,     0,     0,   210,   211,     0,   212,     0,     0,
       0,   671,     0,   672,   673,   674,   675,   676,   677,   678,
     679,   680,   681,   682,     0,   213,     0,    18,     0,   214,
     215,   216,   217,   218,   219,   220,     0,     0,     0,     0,
       0,   221,     0,     0,   222,     0,     0,     0,     0,   223,
     224,   225,     0,     0,     0,   226,   227,     0,     0,     0,
     228,   229,     0,   209,     0,   230,     0,   231,    91,     0,
     210,   211,   232,   212,     0,   684,   685,     0,     0,   686,
     233,   687,     0,   234,   235,     0,     0,   688,     0,     0,
       0,   213,     0,    18,     0,   214,   215,   216,   217,   218,
     219,   220,     0,     0,     0,   482,     0,   221,     7,     0,
     222,    10,    11,     0,     0,   223,   224,   225,    12,    13,
      14,   226,   227,     0,     0,     0,   228,   229,     0,     0,
     478,   230,   209,   231,    16,     0,    17,     0,   232,   210,
     211,     0,   212,     0,     0,     0,   233,     0,     0,   234,
     235,     0,     0,   625,     0,     0,    19,     0,     0,     0,
     213,     0,    18,     0,   214,   215,   216,   217,   218,   219,
     220,     0,     0,     0,     0,     0,   221,     0,    25,   222,
       0,     0,     0,     0,   223,   224,   225,     0,     0,     0,
     226,   227,     0,     0,     0,   228,   229,     0,     0,     0,
     230,     0,   231,     0,     0,     0,     0,   232,     0,     0,
       0,     0,     0,     0,     0,   233,     0,     0,   234,   235,
     209,     7,     8,     9,    10,    11,     0,   210,   211,     0,
     212,    12,    13,    14,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,    16,   213,    17,
      18,     0,   214,   215,   216,   217,   218,   219,   220,     0,
       0,     0,     0,     0,   221,     0,     0,   222,     0,    19,
       0,     0,   223,   224,   225,     0,     0,     0,   226,   227,
       0,     0,     0,   228,   229,     0,     0,     0,   230,     0,
     231,    25,     0,     0,     0,   232,     0,     0,     0,     0,
       0,     0,     0,   233,   209,     7,   234,   235,    10,    11,
       0,   210,   211,     0,   212,    12,    13,    14,     7,     8,
       9,    10,   118,     0,     0,     0,     0,     0,    12,    13,
      14,    16,   213,    17,    18,     0,   214,   215,   216,   217,
     218,   219,   220,     0,    16,     0,    17,     0,   221,     0,
       0,   222,     0,    19,     0,     0,   223,   224,   225,     0,
       0,     0,   226,   227,     0,     0,    19,   228,   229,     0,
     209,   353,   230,     0,   231,    25,     0,   210,   211,   232,
     212,     0,     0,     0,     0,     0,     0,   233,    25,     0,
     234,   235,     0,     0,     0,     0,     0,     0,   213,     0,
      18,  -259,   214,   215,   216,   217,   218,   219,   220,     0,
       0,     0,     0,     0,   221,     0,     0,   222,     0,     0,
       0,     0,   223,   224,   225,     0,     0,     0,   226,   227,
       0,     0,     0,   228,   229,     0,   209,     0,   230,     0,
     231,   354,     0,   210,   211,   232,   212,     0,     0,     0,
       0,     0,     0,   233,     0,     0,   234,   235,     0,     0,
       0,     0,     0,     0,   213,     0,    18,     0,   214,   215,
     216,   217,   218,   219,   220,     0,     0,     0,     0,     0,
     221,     0,     0,   222,     0,     0,     0,     0,   223,   224,
     225,     0,     0,     0,   226,   227,     0,     0,     0,   228,
     229,     0,   209,     0,   230,     0,   231,     0,     0,   210,
     211,   232,   212,     0,     0,     0,     0,     0,     0,   233,
     819,     0,   234,   235,     0,     0,     0,     0,     0,     0,
     213,     0,    18,     0,   214,   215,   216,   217,   218,   219,
     220,     0,     0,     0,     0,     0,   221,     0,     0,   222,
       0,     0,     0,     0,   223,   224,   225,     0,     0,     0,
     226,   227,     0,     0,     0,   228,   229,     0,   209,     0,
     230,     0,   231,     0,     0,   210,   211,   232,   212,     0,
       0,     0,     0,     0,     0,   233,   825,     0,   234,   235,
       0,     0,     0,     0,     0,     0,   213,     0,    18,     0,
     214,   215,   216,   217,   218,   219,   220,     0,     0,     0,
       0,     0,   221,     0,     0,   222,     0,     0,     0,     0,
     223,   224,   225,     0,     0,     0,   226,   227,     0,     0,
       0,   228,   229,     0,   209,     0,   230,     0,   231,     0,
       0,   210,   211,   232,   212,     0,     0,     0,     0,     0,
       0,   233,     0,     0,   234,   235,     0,     0,     0,     0,
       0,     0,   213,     0,    18,     0,   214,   215,   216,   217,
     218,   219,   220,     0,     0,     0,     0,     0,   221,     0,
       0,   222,     0,     0,     0,     0,   223,   224,   225,     0,
       0,     0,   226,   227,     0,     0,     0,   363,   229,     0,
     209,     0,   230,     0,   231,     0,     0,   210,   211,   232,
     212,     0,     0,     0,     0,     0,     0,   233,     0,     0,
     234,   235,     0,     0,     0,     0,     0,     0,   213,     0,
      18,     0,   214,   215,   216,   217,   218,   219,   220,     0,
       0,     0,     0,     0,   221,     0,     0,   222,     0,     0,
       0,     0,   223,   224,   225,     0,     0,     0,   226,   227,
       0,     0,     0,   365,   229,     0,   780,     0,   230,     0,
     231,     0,     0,   210,   211,   232,   212,     0,     0,     0,
       0,     0,     0,   233,     0,     0,   234,   235,     0,     0,
       0,     0,     0,     0,   213,     0,    18,     0,   214,   215,
     216,   217,   218,   219,   220,     0,     0,     0,   430,     0,
     221,     7,     0,   222,    10,    11,     0,     0,   223,   224,
     225,    12,    13,    14,   226,   227,     0,     0,     0,   228,
     229,     0,     0,     0,   230,     0,   231,    16,     0,    17,
      18,   232,     0,     0,     0,     0,     0,     0,   430,   233,
       0,     7,   234,   235,    10,    11,     0,     0,     0,    19,
       0,    12,    13,    14,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,    16,     0,    17,
      18,    25,  -628,  -628,  -628,     0,     0,     0,     0,     0,
       0,     0,     0,     0,   970,  -628,     0,     0,     6,    19,
    -132,     7,     8,     9,    10,    11,     0,     0,     0,     0,
       0,    12,    13,    14,     0,     0,     0,     0,     0,     0,
       0,    25,     0,     0,     0,     0,    15,    16,     0,    17,
      18,     0,     0,     7,   431,  -390,    10,   109,     0,     0,
       0,     0,     0,    12,    13,    14,     0,     0,     0,    19,
       0,     0,    20,    21,  -132,     0,     0,     0,     0,    16,
       0,    17,     0,  -132,     0,    22,    23,    24,     0,     0,
       0,    25,     0,     0,     0,    26,    27,    28,     0,     0,
       0,    19,     0,     6,    29,  -132,     7,     8,     9,    10,
      11,     0,     0,     0,     0,     0,    12,    13,    14,     0,
       0,     0,     0,    25,     0,     7,     8,     9,    10,   145,
       0,     0,    16,     0,    17,    12,    13,    14,     0,     0,
       0,     0,     0,     0,     0,     0,     7,     8,     9,    10,
     154,    16,     0,    17,    19,     0,    12,    13,    14,  -132,
       0,     0,     0,     0,     0,     0,     0,     0,  -132,     0,
       0,     0,    16,    19,    17,     0,    25,     0,     0,     0,
       7,     8,     9,    10,   114,     0,     0,     0,     0,    29,
      12,    13,    14,     0,    19,    25,     0,     0,     0,     7,
       8,     9,    10,   123,     0,     0,    16,     0,  -265,    12,
      13,    14,     0,     0,     0,     0,    25,     0,     0,     0,
       7,     8,     9,    10,   150,    16,     0,     0,    19,  -267,
      12,    13,    14,     0,     0,     0,     0,     0,     0,     0,
       0,     7,     8,     9,    10,   159,    16,    19,     0,     0,
      25,    12,    13,    14,     0,     0,     0,     0,     0,     0,
       0,     0,     0,  -258,     0,     0,     0,    16,    19,    25,
       0,     0,     0,     0,     7,     8,     9,    10,   145,     0,
       0,     0,  -260,     0,    12,    13,    14,     0,     0,    19,
      25,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      16,     0,    17,  -266,     0,     0,     0,     0,     0,     0,
       0,    25,     0,     0,     0,   296,   297,     0,     0,   298,
     299,   300,    19,     0,  -268,   301,   302,   303,   304,   305,
     306,   307,   308,   309,   310,   311,   312,   313,   314,   315,
     316,   317,   318,   319,    25,     0,     0,     0,   296,   297,
       0,     0,   298,   299,   300,     0,     0,   320,   301,   302,
     303,   304,   305,   306,   307,   308,   309,   310,   311,   312,
     313,   314,   315,   316,   317,   318,   319,     0,   321,     0,
       0,     0,     0,   296,   297,     0,   322,   298,   299,   300,
     320,     0,     0,   301,   302,   303,   304,   305,   306,   307,
     308,   309,   310,   311,   312,   313,   314,   315,   316,   317,
     318,   319,     0,     0,     0,     0,   296,   297,     0,   322,
     298,   299,   300,     0,     0,   487,   301,   302,   303,   304,
     305,   306,   307,   308,   309,   310,   311,   312,   313,   314,
     315,   316,   317,   318,   319,     7,     8,     9,    10,    11,
       0,     0,     0,   757,   322,    12,    13,    14,   492,     0,
       0,     0,     0,     0,     7,     8,     9,    10,    11,     0,
       0,    16,   945,    17,    12,    13,    14,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,   322,     0,     0,
      16,     0,    17,    19,     7,     8,     9,    10,   118,     7,
       8,     9,    10,   154,    12,    13,    14,     0,     0,    12,
      13,    14,    19,     0,     0,    25,     0,     0,     0,     0,
      16,     0,    17,     0,     0,    16,     0,    17,     7,     8,
       9,    10,    11,     0,    25,     0,     0,     0,    12,    13,
      14,     0,    19,     0,     0,     0,     0,    19,     7,     8,
       9,    10,    11,     0,    16,     0,    17,     0,    12,    13,
      14,     0,     0,     0,    25,     0,     0,     0,     0,    25,
       0,     0,     0,     0,    16,     0,    19,     7,     8,     9,
      10,   114,     7,     8,     9,    10,   150,    12,    13,    14,
       0,     0,    12,    13,    14,     0,    19,     0,    25,     0,
       0,     0,     0,    16,     0,     0,     0,     0,    16,     7,
       8,     9,    10,   123,     0,     0,     0,     0,    25,    12,
      13,    14,     0,     0,     0,    19,     0,     0,     0,     0,
      19,     0,     0,     7,     0,    16,    10,   118,     7,     8,
       9,    10,   159,    12,    13,    14,     0,    25,    12,    13,
      14,     0,    25,     0,     0,     0,     0,    19,     0,    16,
       0,    17,     7,     0,    16,    10,    11,     0,     0,     0,
       0,     0,    12,    13,    14,     0,     0,     0,     0,    25,
       0,    19,     0,     0,     0,     0,    19,     0,    16,     0,
      17,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,    25,     0,     0,     0,     0,    25,     0,
      19,   367,   368,   369,     0,   370,   371,   372,   373,   374,
     375,   376,   377,   378,   379,   380,   381,   382,   383,   367,
     368,   369,    25,   370,   371,   372,   373,   374,   375,   376,
     377,   378,   379,   380,   381,   382,   383,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     367,   368,   369,   847,   370,   371,   372,   373,   374,   375,
     376,   377,   378,   379,   380,   381,   382,   383,   367,   368,
     369,   848,   370,   371,   372,   373,   374,   375,   376,   377,
     378,   379,   380,   381,   382,   383,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,   367,
     368,   369,  1089,   370,   371,   372,   373,   374,   375,   376,
     377,   378,   379,   380,   381,   382,   383,     0,  1036,   367,
     368,   369,     0,   370,   371,   372,   373,   374,   375,   376,
     377,   378,   379,   380,   381,   382,   383,     0,     0,   913,
      17,     0,     0,     0,     0,     0,     0,     0,   620,     0,
     367,   368,   369,     0,   370,   371,   372,   373,   374,   375,
     376,   377,   378,   379,   380,   381,   382,   383,   888,   367,
     368,   369,   914,   370,   371,   372,   373,   374,   375,   376,
     377,   378,   379,   380,   381,   382,   383,   367,   368,   369,
    1053,   370,   371,   372,   373,   374,   375,   376,   377,   378,
     379,   380,   381,   382,   383,   367,   368,   369,     0,   370,
     371,   372,   373,   374,   375,   376,   377,   378,   379,   380,
     381,   382,   383,   369,     0,   370,   371,   372,   373,   374,
     375,   376,   377,   378,   379,   380,   381,   382,   383
};

static const short yycheck[] =
{
      17,     4,     5,   603,     4,     5,     4,     5,    87,    12,
      13,    14,   283,   181,   423,   182,   273,   195,   476,     4,
       5,     7,   547,     4,     5,     4,     5,   419,     4,     5,
     390,   547,    35,   290,    37,   273,    39,   603,    41,    25,
      43,   279,    45,   421,    47,   325,    49,   414,   443,   427,
       4,     5,   708,   603,    34,    98,   487,   603,   844,   187,
     695,   547,   547,   325,   806,   992,    69,   724,   452,    69,
     648,    69,     1,     1,   414,   395,   726,   102,     5,   414,
       4,     5,     4,     5,    69,     1,     1,   603,    69,     1,
      69,   411,   395,    69,   356,   357,   904,     1,    59,   102,
     616,   104,   214,   215,   104,   395,   104,   414,     1,     3,
       4,     1,    98,   225,  1094,    69,  1090,   603,     3,     4,
       1,    82,    83,    84,   236,    57,     0,    11,   104,  1049,
     616,    32,     3,     4,    66,    67,   661,   671,   672,   673,
     674,   675,    69,   255,    45,    69,     1,    69,     3,     4,
     104,   112,   950,   648,    66,    34,     3,     4,  1132,   202,
     121,     4,     5,    57,    93,    93,  1146,    19,   406,   130,
      22,    23,    88,    88,    26,    27,    28,   985,   139,  1099,
      74,   831,   980,    67,    88,    66,   443,   148,   555,    74,
       3,     4,   708,  1113,     0,    88,   157,    87,   629,   856,
      32,   858,   182,    74,   229,   166,     3,     4,    93,    88,
      62,    63,    64,    17,   175,   555,   202,    52,  1145,    74,
     555,   605,   708,   708,   544,   228,    69,    74,   490,   754,
       3,  1151,  1076,   495,  1042,    52,   603,   540,   541,   542,
     543,   244,     8,   246,   844,   248,    93,   250,   555,   101,
     540,   541,   542,   543,  1098,   911,    52,   260,     3,   262,
      87,    74,  1073,   603,     3,     4,    32,  1078,   603,    66,
     273,    45,    45,   273,    91,   273,   279,    74,   844,   279,
      93,   279,   228,    87,    57,   265,   266,   290,   526,   649,
     290,    87,   290,    66,   844,    91,   603,   273,   844,    32,
       3,     4,   827,   279,    66,   290,   267,     3,     4,   290,
      87,   290,    57,     3,   290,    29,   444,    91,   446,   273,
    1106,    66,    67,  1065,    66,   279,  1137,    66,   844,     5,
       6,     7,     8,    66,    67,    74,   290,    45,    14,    15,
      16,     8,   345,   346,    52,   840,   841,   199,   200,   201,
      66,   203,    66,    67,    57,   358,    32,    45,   844,   841,
     363,    57,   365,    66,   389,    32,   290,    57,   290,   221,
      66,    67,    91,    72,   486,    94,    66,    67,    66,   874,
     875,    66,    67,    65,   463,    67,    93,     5,     6,     7,
       8,    43,   874,   875,     3,   911,    14,    15,    16,   345,
     346,    66,    67,   406,   929,    11,   406,    92,   406,    93,
      92,    87,   358,    65,   414,    67,   414,   363,   586,   365,
       8,    32,   402,   881,   882,   911,   911,    92,   471,   432,
     406,   434,  1010,   436,    45,   438,   416,   417,    45,   806,
     443,  1019,   294,   443,    32,   443,   558,   878,    57,    66,
      67,   454,   406,    45,    93,    66,    67,    66,   443,    66,
      52,   732,   443,    87,   443,    66,   806,   443,   320,    87,
     862,   806,  1107,   753,   866,    92,     6,   844,     8,   504,
     332,   540,   541,    87,   543,   471,   284,    91,   883,   443,
     414,   753,   414,     3,     4,     5,     6,     7,     8,   806,
      91,    87,    32,    94,   844,    91,  1106,   359,   454,   844,
      55,    56,    55,    56,    87,  1010,   105,    29,    91,   443,
      32,   443,   547,   526,  1019,    70,   526,    70,   526,    87,
      87,    43,  1057,    91,   386,   387,    92,   844,  1072,    87,
    1106,   393,    66,    91,   547,     7,     8,   547,    66,   547,
     526,    66,    14,    15,    16,   555,  1106,   555,    87,    88,
    1106,   728,   547,   566,    74,   568,   547,   570,   547,   572,
      32,   547,   526,     7,     8,    87,    87,  1111,  1112,    91,
      14,    15,    16,  1108,  1109,    87,    66,     3,     4,    91,
    1106,    66,   390,   547,    55,    56,   708,    87,    32,   451,
     603,    91,    66,   603,  1013,   603,  1015,   587,    87,    70,
     462,    66,    91,   616,     8,   618,   616,    87,   616,   622,
    1106,    91,   603,   547,   603,   547,   883,   603,  1006,    45,
    1008,   555,    88,   555,     8,   616,   661,   616,    51,    52,
     616,    57,    87,    75,    76,    77,    91,    66,    87,   603,
      66,  1011,    91,    88,   925,   680,    88,    87,    45,   684,
    1020,    91,   616,   831,    87,   832,    29,    87,    91,    32,
      87,    91,   618,    34,    91,    93,   622,    91,    92,   603,
      43,   603,    92,   272,   670,    57,    58,    59,   277,    66,
      67,   280,   616,   931,   616,   547,    92,   683,  1065,    92,
     779,    92,   940,    66,    67,   708,    66,    67,   708,    92,
     708,     5,     6,     7,     8,    91,    92,    87,    88,   886,
      14,    15,    16,   708,    87,  1065,    91,   708,    91,   708,
    1065,    45,   708,    92,   532,    92,     7,     8,    32,  1106,
      91,    92,   594,    14,    15,    16,    61,    62,   728,    64,
      65,    66,    67,     6,   708,   758,   608,   760,  1065,   762,
      87,   764,    43,   766,    74,   768,  1106,   770,    87,   772,
      43,  1106,     5,     6,     7,     8,    66,    67,    91,   577,
     578,    14,    15,    16,   708,    92,   708,    91,   956,    91,
      92,    91,    92,    87,    66,    67,   821,    66,    67,  1106,
      91,    92,   654,    91,    92,    66,   806,   824,   806,   661,
      92,   791,    91,    92,    92,     5,     6,     7,     8,    45,
     395,    91,    92,  1001,    14,    15,    16,    91,    92,   681,
       7,     8,    91,   422,   423,   410,    92,    14,    15,    16,
     429,   844,    32,    91,   844,    94,   844,   239,   240,    45,
     648,   649,   832,    92,    87,    92,   445,   416,   417,    45,
     840,   841,    92,   844,    92,   844,  1010,  1011,   844,   894,
      50,    51,    52,    53,    54,    55,    56,    57,    58,    59,
     883,    92,   806,   883,   806,   883,   911,   912,  1111,  1112,
     844,    26,    27,    92,   874,   875,   921,    87,   883,   751,
     782,   783,   883,    91,   883,     1,   886,   883,   911,    88,
      43,   911,    87,   911,     5,     6,     7,     8,    87,    92,
     844,    88,   844,    14,    15,    16,   911,    88,   931,   883,
     911,   931,   911,   931,    88,   911,   939,   940,   527,    92,
     940,    32,   940,    92,    45,   797,    55,    56,    57,    58,
      59,   976,    93,    45,     8,   931,    87,   911,    87,   883,
    1138,   883,    87,    84,   940,   540,   541,   542,   543,    92,
    1148,    29,    92,    91,    91,    88,    92,   931,    93,   959,
      92,  1159,     5,     6,     7,     8,   940,   911,    92,   911,
      92,    14,    15,    16,    92,    66,    87,    66,    87,    66,
    1079,    45,     3,    45,    88,   580,    91,    66,   583,     5,
       6,     7,     8,    66,    66,    87,    92,    87,    14,    15,
      16,  1046,    88,    88,   876,    45,  1105,   440,   441,    92,
    1010,  1011,    92,    83,    19,    66,    32,    93,    87,  1019,
    1020,   893,   840,   841,    35,    36,    37,    38,    18,    18,
      87,  1076,    43,    44,    45,    46,    45,  1018,    91,    94,
      92,    66,   651,    92,    87,  1065,    88,  1065,  1147,    66,
      45,    87,    66,  1098,    92,    87,   874,   875,    91,    35,
      36,    37,    38,    39,    40,    41,    42,    43,    44,    45,
      46,    47,    48,    49,    50,    52,    53,    54,    55,    56,
      57,    58,    59,  1106,     0,     0,  1106,     1,  1106,   616,
     685,   686,   610,   412,   689,   402,  1141,   414,   414,   579,
     608,   857,   983,   975,   902,  1106,   902,  1106,   874,   596,
    1106,   956,  1010,  1158,    12,   959,   934,   935,  1155,   451,
     594,  1065,   396,  1065,  1110,  1122,   651,  1164,  1123,   738,
     713,    95,  1106,   742,   472,   789,   745,   746,   753,   601,
     749,   574,   575,   601,    42,    43,    44,   490,    46,    47,
      48,    49,    50,    51,    52,    53,    54,    55,    56,    57,
      58,    59,  1106,   629,  1106,    35,    36,    37,    38,   495,
      -1,    -1,    -1,    43,    44,    45,    46,    39,    40,    41,
      42,    -1,    -1,   616,    -1,    47,    48,    49,    50,    -1,
      -1,    -1,  1010,  1011,    -1,    -1,    94,    -1,    -1,    -1,
      -1,  1019,  1020,    39,    40,    41,    42,    -1,    -1,    -1,
      -1,    47,    48,    49,    50,   810,   811,   812,    -1,    -1,
      -1,     5,     6,     7,     8,    -1,    -1,    -1,    -1,  1101,
      14,    15,    16,   244,   245,   246,   247,     1,    -1,     3,
     835,    -1,  1060,  1061,  1062,    -1,    10,    11,    32,    13,
     859,    -1,    -1,    -1,   863,     5,     6,     7,     8,   692,
     693,   870,    -1,    -1,    14,    15,    16,    31,    -1,    33,
      -1,    35,    36,    37,    38,    39,    40,    41,    -1,   712,
     713,    -1,    -1,    47,    -1,    -1,    50,    -1,    -1,    -1,
      -1,    55,    56,    57,    -1,    -1,    -1,    61,    62,    -1,
      -1,    -1,    66,    67,    -1,    -1,    -1,    71,    -1,    73,
      -1,    -1,    -1,   922,    78,    53,    54,    55,    56,    57,
      58,    59,    86,   932,   933,    89,    90,   936,    -1,    93,
      -1,    -1,   941,   942,    -1,   944,    -1,    87,    -1,    -1,
      -1,   774,   775,    -1,    -1,    -1,   955,    -1,    -1,   958,
      -1,    -1,   961,   962,    -1,   964,   332,    -1,    -1,   792,
     793,    47,    48,    49,    50,    51,    52,    53,    54,    55,
      56,    57,    58,    59,   244,   245,   246,   247,    -1,    -1,
      -1,     5,     6,     7,     8,    -1,   248,   249,   250,   251,
      14,    15,    16,    -1,    -1,    -1,   991,   992,    -1,    -1,
      -1,    -1,   997,    -1,  1013,    -1,  1015,     4,     5,     6,
       7,     8,   248,   249,   250,   251,    -1,    14,    15,    16,
      -1,   432,   433,   434,   435,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    30,    -1,    32,     1,    -1,     3,     4,
      -1,    -1,     7,     8,    -1,    10,    11,    -1,    13,    14,
      15,    16,    -1,    -1,    -1,    52,  1051,    -1,    -1,    -1,
      -1,    -1,    -1,  1058,  1059,    30,    31,    32,    33,    -1,
      35,    36,    37,    38,    39,    40,    41,    74,    -1,    -1,
      -1,    -1,    47,    -1,    -1,    50,    -1,    52,    -1,    -1,
      55,    56,    57,    -1,    -1,    -1,    61,    62,    -1,    -1,
    1095,    66,    67,    -1,    -1,    -1,    71,    -1,    73,    74,
      -1,    -1,    -1,    78,    -1,  1110,    -1,    -1,    -1,    -1,
      -1,    86,    -1,    -1,    89,    90,    -1,    -1,    93,    51,
      52,    53,    54,    55,    56,    57,    58,    59,     1,    -1,
      -1,     4,     5,     6,     7,     8,    -1,    -1,    -1,  1144,
    1145,    14,    15,    16,    -1,   566,   567,    -1,    -1,   570,
     571,    -1,   432,   433,   434,   435,    29,    30,    -1,    32,
      -1,    -1,    -1,    -1,   436,   437,   438,   439,    -1,    -1,
      43,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    52,
     566,   567,   568,   569,   570,   571,   572,   573,    -1,    -1,
     436,   437,   438,   439,    -1,    -1,     5,     6,     7,     8,
      -1,    74,    -1,    -1,    -1,    14,    15,    16,    -1,    -1,
      -1,    -1,    -1,    -1,    87,    -1,    -1,    -1,    91,    -1,
      93,     1,   608,    32,     4,     5,     6,     7,     8,    -1,
      -1,    -1,    -1,    -1,    14,    15,    16,     4,     5,     6,
       7,     8,    -1,    -1,   343,   344,    -1,    14,    15,    16,
      30,    49,    50,    51,    52,    53,    54,    55,    56,    57,
      58,    59,   361,    30,    -1,    32,    -1,    -1,   367,   368,
      -1,    -1,    52,   372,   373,   374,   375,   376,   377,   378,
     379,   380,   381,   382,   383,    52,   566,   567,    -1,   388,
     570,   571,    -1,    -1,    74,    -1,   568,   569,    -1,    -1,
     572,   573,    -1,    -1,    -1,    -1,    -1,    74,    -1,   408,
      -1,    -1,    -1,    93,    -1,    -1,    -1,    -1,    -1,    -1,
      87,    -1,   568,   569,    -1,    -1,   572,   573,    -1,    -1,
      -1,    -1,     5,     6,     7,     8,    -1,   758,   759,   760,
     761,    14,    15,    16,    -1,   766,   767,   768,   769,    42,
      43,    44,    -1,    46,    47,    48,    49,    50,    51,    52,
      53,    54,    55,    56,    57,    58,    59,    -1,    -1,    -1,
      -1,    -1,   758,   759,   760,   761,   762,   763,   764,   765,
     766,   767,   768,   769,   770,   771,   772,   773,   487,    -1,
       1,    -1,    -1,     4,     5,     6,     7,     8,    -1,    -1,
      -1,    94,    -1,    14,    15,    16,    -1,   506,   507,    -1,
      -1,     1,    -1,     3,     4,     5,     6,     7,     8,    30,
      -1,    -1,    12,    -1,    14,    15,    16,    -1,    -1,    -1,
      -1,    -1,     1,    -1,    -1,     4,     5,     6,     7,     8,
      30,    52,    -1,    12,    -1,    14,    15,    16,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,   556,   557,    -1,
      -1,    30,    52,    74,    48,    49,    50,    51,    52,    53,
      54,    55,    56,    57,    58,    59,    -1,    -1,   758,   759,
     760,   761,    93,    52,    74,    -1,   766,   767,   768,   769,
     762,   763,   764,   765,   593,    -1,    -1,    -1,   770,   771,
     772,   773,    92,     4,    -1,    74,     7,     8,     9,    -1,
      -1,   610,    -1,    14,    15,    16,   762,   763,   764,   765,
      -1,   620,    -1,    92,   770,   771,   772,   773,    -1,    30,
     629,    32,    -1,    -1,    -1,     5,     6,     7,     8,    -1,
      -1,    -1,    -1,   642,    14,    15,    16,   646,    42,    43,
      44,    52,    46,    47,    48,    49,    50,    51,    52,    53,
      54,    55,    56,    57,    58,    59,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    74,    -1,    -1,    -1,   676,    -1,    -1,
       1,    -1,     3,     4,     5,     6,     7,     8,    -1,    10,
      11,    -1,    13,    14,    15,    16,    17,    91,    19,    20,
      21,    22,    23,    24,    25,    26,    27,    28,    29,    30,
      31,    32,    33,    34,    35,    36,    37,    38,    39,    40,
      41,    -1,    -1,    -1,    -1,    -1,    47,    -1,    -1,    50,
     729,    52,    -1,    -1,    55,    56,    57,    -1,   737,    -1,
      61,    62,   741,    -1,    -1,    66,    67,    -1,    -1,    -1,
      71,    -1,    73,    74,    -1,    -1,    -1,    78,    -1,    -1,
      81,    82,    -1,    -1,    85,    86,    87,    88,    89,    90,
      -1,    -1,    93,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,     1,    -1,     3,     4,     5,     6,     7,     8,
      -1,    10,    11,    -1,    13,    14,    15,    16,    17,   798,
      19,    20,    21,    22,    23,    24,    25,    26,    27,    28,
      29,    30,    31,    32,    33,    34,    35,    36,    37,    38,
      39,    40,    41,    -1,    -1,    -1,    -1,    -1,    47,    -1,
      -1,    50,    -1,    52,    -1,    -1,    55,    56,    57,    -1,
      -1,    -1,    61,    62,    -1,    -1,    -1,    66,    67,    -1,
      -1,    -1,    71,    -1,    73,    74,    -1,    -1,   857,    78,
      -1,   860,    81,    82,    -1,   864,    85,    86,    87,    88,
      89,    90,     4,    -1,    93,     7,     8,    -1,    -1,   878,
      -1,    -1,    14,    15,    16,    -1,    -1,    -1,    -1,   888,
      -1,    -1,    -1,    -1,     1,   894,    -1,     4,    30,    -1,
       7,     8,    -1,    -1,    -1,   904,   905,    14,    15,    16,
      -1,    -1,    -1,    -1,   913,    -1,    -1,    -1,    -1,    -1,
      52,    -1,    -1,    30,    -1,    32,    33,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,     1,    -1,     3,     4,     5,     6,
       7,     8,    74,    10,    11,    52,    13,    14,    15,    16,
      17,   950,    19,    20,    21,    22,    23,    24,    25,    26,
      27,    28,    29,    30,    31,    32,    33,    74,    35,    36,
      37,    38,    39,    40,    41,    -1,    -1,    -1,    -1,    -1,
      47,   980,    -1,    50,   983,    52,   985,   986,    55,    56,
      57,    -1,    -1,    -1,    61,    62,    -1,    -1,     4,    66,
      67,     7,     8,    -1,    71,    -1,    73,    74,    14,    15,
      16,    78,    -1,    -1,    81,    82,    -1,    -1,    85,    86,
      87,    -1,    89,    90,    30,     1,    93,     3,     4,    -1,
      -1,    -1,    -1,    -1,    10,    11,    -1,    13,    -1,    -1,
    1039,    -1,    -1,  1042,    -1,    -1,    52,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    31,    -1,    33,    -1,    35,
      36,    37,    38,    39,    40,    41,    -1,    -1,    74,    -1,
      -1,    47,    -1,    -1,    50,    -1,    -1,    -1,    -1,    55,
      56,    57,    -1,    -1,    -1,    61,    62,    -1,    -1,    65,
      66,    67,    -1,    -1,    -1,    71,    -1,    73,    74,    -1,
      -1,    -1,    78,    -1,    -1,    -1,     1,    -1,     3,     4,
      86,    -1,    88,    89,    90,    10,    11,    93,    13,    -1,
       5,     6,     7,     8,     5,     6,     7,     8,    -1,    14,
      15,    16,    -1,    14,    15,    16,    31,    -1,    33,    -1,
      35,    36,    37,    38,    39,    40,    41,    32,    -1,    -1,
      -1,    -1,    47,    -1,    -1,    50,    -1,    -1,    -1,    -1,
      55,    56,    57,    -1,    -1,    -1,    61,    62,    -1,    -1,
      65,    66,    67,    -1,    -1,     1,    71,     3,    73,    74,
      -1,    -1,    -1,    78,    10,    11,    -1,    13,    -1,    -1,
      -1,    86,    -1,    88,    89,    90,    -1,    -1,    93,    -1,
      -1,    -1,    -1,    -1,    -1,    31,    -1,    33,    -1,    35,
      36,    37,    38,    39,    40,    41,    -1,    43,    -1,     1,
      -1,    47,     4,    -1,    50,     7,     8,    -1,    -1,    55,
      56,    57,    14,    15,    16,    61,    62,    -1,    -1,    65,
      66,    67,    -1,    -1,     1,    71,     3,    73,    30,    -1,
      32,    -1,    78,    10,    11,    -1,    13,    -1,    -1,    -1,
      86,    -1,    -1,    89,    90,    -1,    -1,    93,    -1,    -1,
      52,    -1,    -1,    -1,    31,    -1,    33,    -1,    35,    36,
      37,    38,    39,    40,    41,    -1,    -1,    -1,    -1,    -1,
      47,    -1,    74,    50,    -1,    -1,    -1,    -1,    55,    56,
      57,    -1,    -1,    -1,    61,    62,    -1,    -1,    -1,    66,
      67,    -1,    -1,    -1,    71,    -1,    73,    -1,    -1,    -1,
      -1,    78,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    86,
      -1,    -1,    89,    90,     1,    -1,    93,     4,     5,     6,
       7,     8,    -1,    -1,    -1,    -1,    -1,    14,    15,    16,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    29,    30,     1,    32,    -1,     4,     5,     6,
       7,     8,    -1,    -1,    -1,    -1,    43,    14,    15,    16,
      -1,    -1,    -1,    -1,    -1,    52,    -1,    -1,    -1,    -1,
      -1,    -1,    29,    30,    -1,    32,    -1,    -1,    -1,    66,
      67,    -1,    -1,    -1,    -1,    -1,    43,    74,    -1,    -1,
      -1,     3,    -1,    -1,    -1,    52,    -1,    -1,    10,    11,
      87,    13,    -1,    -1,    91,    -1,    93,    -1,    -1,    66,
      67,    -1,    -1,    -1,    -1,    -1,    -1,    74,    -1,    31,
      -1,    33,    -1,    35,    36,    37,    38,    39,    40,    41,
      87,    -1,    -1,    -1,    91,    47,    93,    -1,    50,    -1,
      -1,    -1,    -1,    55,    56,    57,    -1,    -1,    -1,    61,
      62,    -1,    -1,    -1,    66,    67,    -1,     3,    -1,    71,
      -1,    73,    -1,    -1,    10,    11,    78,    13,    -1,    -1,
      -1,    -1,    -1,    -1,    86,    -1,    -1,    89,    90,    -1,
      -1,    -1,    94,    -1,    -1,    31,    -1,    33,    -1,    35,
      36,    37,    38,    39,    40,    41,    -1,    -1,    -1,    -1,
      -1,    47,    -1,    -1,    50,    -1,    -1,    -1,    -1,    55,
      56,    57,    -1,    -1,    -1,    61,    62,    -1,    -1,    -1,
      66,    67,    -1,    -1,    -1,    71,    -1,    73,    -1,    -1,
      -1,    -1,    78,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      86,    -1,    -1,    89,    90,    -1,    -1,    -1,    94,     3,
       4,     5,     6,     7,     8,    -1,    10,    11,    -1,    13,
      14,    15,    16,    17,    -1,    19,    20,    21,    22,    23,
      24,    25,    26,    27,    28,    29,    30,    31,    32,    33,
      -1,    35,    36,    37,    38,    39,    40,    41,    -1,    -1,
      -1,    -1,    -1,    47,    -1,    -1,    50,    -1,    52,    -1,
      -1,    55,    56,    57,    -1,    -1,    -1,    61,    62,    -1,
      -1,    -1,    66,    67,    -1,    -1,    -1,    71,    -1,    73,
      74,    -1,    -1,    -1,    78,    -1,    -1,    81,    82,    -1,
      -1,    85,    86,    87,    -1,    89,    90,     3,     4,    93,
      -1,    -1,    -1,    -1,    10,    11,    -1,    13,    -1,    -1,
      -1,    17,    -1,    19,    20,    21,    22,    23,    24,    25,
      26,    27,    28,    29,    -1,    31,    -1,    33,    -1,    35,
      36,    37,    38,    39,    40,    41,    -1,    -1,    -1,    -1,
      -1,    47,    -1,    -1,    50,    -1,    -1,    -1,    -1,    55,
      56,    57,    -1,    -1,    -1,    61,    62,    -1,    -1,    -1,
      66,    67,    -1,     3,    -1,    71,    -1,    73,    74,    -1,
      10,    11,    78,    13,    -1,    81,    82,    -1,    -1,    85,
      86,    87,    -1,    89,    90,    -1,    -1,    93,    -1,    -1,
      -1,    31,    -1,    33,    -1,    35,    36,    37,    38,    39,
      40,    41,    -1,    -1,    -1,     1,    -1,    47,     4,    -1,
      50,     7,     8,    -1,    -1,    55,    56,    57,    14,    15,
      16,    61,    62,    -1,    -1,    -1,    66,    67,    -1,    -1,
       1,    71,     3,    73,    30,    -1,    32,    -1,    78,    10,
      11,    -1,    13,    -1,    -1,    -1,    86,    -1,    -1,    89,
      90,    -1,    -1,    93,    -1,    -1,    52,    -1,    -1,    -1,
      31,    -1,    33,    -1,    35,    36,    37,    38,    39,    40,
      41,    -1,    -1,    -1,    -1,    -1,    47,    -1,    74,    50,
      -1,    -1,    -1,    -1,    55,    56,    57,    -1,    -1,    -1,
      61,    62,    -1,    -1,    -1,    66,    67,    -1,    -1,    -1,
      71,    -1,    73,    -1,    -1,    -1,    -1,    78,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    86,    -1,    -1,    89,    90,
       3,     4,     5,     6,     7,     8,    -1,    10,    11,    -1,
      13,    14,    15,    16,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    30,    31,    32,
      33,    -1,    35,    36,    37,    38,    39,    40,    41,    -1,
      -1,    -1,    -1,    -1,    47,    -1,    -1,    50,    -1,    52,
      -1,    -1,    55,    56,    57,    -1,    -1,    -1,    61,    62,
      -1,    -1,    -1,    66,    67,    -1,    -1,    -1,    71,    -1,
      73,    74,    -1,    -1,    -1,    78,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    86,     3,     4,    89,    90,     7,     8,
      -1,    10,    11,    -1,    13,    14,    15,    16,     4,     5,
       6,     7,     8,    -1,    -1,    -1,    -1,    -1,    14,    15,
      16,    30,    31,    32,    33,    -1,    35,    36,    37,    38,
      39,    40,    41,    -1,    30,    -1,    32,    -1,    47,    -1,
      -1,    50,    -1,    52,    -1,    -1,    55,    56,    57,    -1,
      -1,    -1,    61,    62,    -1,    -1,    52,    66,    67,    -1,
       3,     4,    71,    -1,    73,    74,    -1,    10,    11,    78,
      13,    -1,    -1,    -1,    -1,    -1,    -1,    86,    74,    -1,
      89,    90,    -1,    -1,    -1,    -1,    -1,    -1,    31,    -1,
      33,    87,    35,    36,    37,    38,    39,    40,    41,    -1,
      -1,    -1,    -1,    -1,    47,    -1,    -1,    50,    -1,    -1,
      -1,    -1,    55,    56,    57,    -1,    -1,    -1,    61,    62,
      -1,    -1,    -1,    66,    67,    -1,     3,    -1,    71,    -1,
      73,    74,    -1,    10,    11,    78,    13,    -1,    -1,    -1,
      -1,    -1,    -1,    86,    -1,    -1,    89,    90,    -1,    -1,
      -1,    -1,    -1,    -1,    31,    -1,    33,    -1,    35,    36,
      37,    38,    39,    40,    41,    -1,    -1,    -1,    -1,    -1,
      47,    -1,    -1,    50,    -1,    -1,    -1,    -1,    55,    56,
      57,    -1,    -1,    -1,    61,    62,    -1,    -1,    -1,    66,
      67,    -1,     3,    -1,    71,    -1,    73,    -1,    -1,    10,
      11,    78,    13,    -1,    -1,    -1,    -1,    -1,    -1,    86,
      87,    -1,    89,    90,    -1,    -1,    -1,    -1,    -1,    -1,
      31,    -1,    33,    -1,    35,    36,    37,    38,    39,    40,
      41,    -1,    -1,    -1,    -1,    -1,    47,    -1,    -1,    50,
      -1,    -1,    -1,    -1,    55,    56,    57,    -1,    -1,    -1,
      61,    62,    -1,    -1,    -1,    66,    67,    -1,     3,    -1,
      71,    -1,    73,    -1,    -1,    10,    11,    78,    13,    -1,
      -1,    -1,    -1,    -1,    -1,    86,    87,    -1,    89,    90,
      -1,    -1,    -1,    -1,    -1,    -1,    31,    -1,    33,    -1,
      35,    36,    37,    38,    39,    40,    41,    -1,    -1,    -1,
      -1,    -1,    47,    -1,    -1,    50,    -1,    -1,    -1,    -1,
      55,    56,    57,    -1,    -1,    -1,    61,    62,    -1,    -1,
      -1,    66,    67,    -1,     3,    -1,    71,    -1,    73,    -1,
      -1,    10,    11,    78,    13,    -1,    -1,    -1,    -1,    -1,
      -1,    86,    -1,    -1,    89,    90,    -1,    -1,    -1,    -1,
      -1,    -1,    31,    -1,    33,    -1,    35,    36,    37,    38,
      39,    40,    41,    -1,    -1,    -1,    -1,    -1,    47,    -1,
      -1,    50,    -1,    -1,    -1,    -1,    55,    56,    57,    -1,
      -1,    -1,    61,    62,    -1,    -1,    -1,    66,    67,    -1,
       3,    -1,    71,    -1,    73,    -1,    -1,    10,    11,    78,
      13,    -1,    -1,    -1,    -1,    -1,    -1,    86,    -1,    -1,
      89,    90,    -1,    -1,    -1,    -1,    -1,    -1,    31,    -1,
      33,    -1,    35,    36,    37,    38,    39,    40,    41,    -1,
      -1,    -1,    -1,    -1,    47,    -1,    -1,    50,    -1,    -1,
      -1,    -1,    55,    56,    57,    -1,    -1,    -1,    61,    62,
      -1,    -1,    -1,    66,    67,    -1,     3,    -1,    71,    -1,
      73,    -1,    -1,    10,    11,    78,    13,    -1,    -1,    -1,
      -1,    -1,    -1,    86,    -1,    -1,    89,    90,    -1,    -1,
      -1,    -1,    -1,    -1,    31,    -1,    33,    -1,    35,    36,
      37,    38,    39,    40,    41,    -1,    -1,    -1,     1,    -1,
      47,     4,    -1,    50,     7,     8,    -1,    -1,    55,    56,
      57,    14,    15,    16,    61,    62,    -1,    -1,    -1,    66,
      67,    -1,    -1,    -1,    71,    -1,    73,    30,    -1,    32,
      33,    78,    -1,    -1,    -1,    -1,    -1,    -1,     1,    86,
      -1,     4,    89,    90,     7,     8,    -1,    -1,    -1,    52,
      -1,    14,    15,    16,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    30,    -1,    32,
      33,    74,    75,    76,    77,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    87,    88,    -1,    -1,     1,    52,
       3,     4,     5,     6,     7,     8,    -1,    -1,    -1,    -1,
      -1,    14,    15,    16,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    74,    -1,    -1,    -1,    -1,    29,    30,    -1,    32,
      33,    -1,    -1,     4,    87,    88,     7,     8,    -1,    -1,
      -1,    -1,    -1,    14,    15,    16,    -1,    -1,    -1,    52,
      -1,    -1,    55,    56,    57,    -1,    -1,    -1,    -1,    30,
      -1,    32,    -1,    66,    -1,    68,    69,    70,    -1,    -1,
      -1,    74,    -1,    -1,    -1,    78,    79,    80,    -1,    -1,
      -1,    52,    -1,     1,    87,     3,     4,     5,     6,     7,
       8,    -1,    -1,    -1,    -1,    -1,    14,    15,    16,    -1,
      -1,    -1,    -1,    74,    -1,     4,     5,     6,     7,     8,
      -1,    -1,    30,    -1,    32,    14,    15,    16,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,     4,     5,     6,     7,
       8,    30,    -1,    32,    52,    -1,    14,    15,    16,    57,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    66,    -1,
      -1,    -1,    30,    52,    32,    -1,    74,    -1,    -1,    -1,
       4,     5,     6,     7,     8,    -1,    -1,    -1,    -1,    87,
      14,    15,    16,    -1,    52,    74,    -1,    -1,    -1,     4,
       5,     6,     7,     8,    -1,    -1,    30,    -1,    87,    14,
      15,    16,    -1,    -1,    -1,    -1,    74,    -1,    -1,    -1,
       4,     5,     6,     7,     8,    30,    -1,    -1,    52,    87,
      14,    15,    16,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,     4,     5,     6,     7,     8,    30,    52,    -1,    -1,
      74,    14,    15,    16,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    87,    -1,    -1,    -1,    30,    52,    74,
      -1,    -1,    -1,    -1,     4,     5,     6,     7,     8,    -1,
      -1,    -1,    87,    -1,    14,    15,    16,    -1,    -1,    52,
      74,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      30,    -1,    32,    87,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    74,    -1,    -1,    -1,     3,     4,    -1,    -1,     7,
       8,     9,    52,    -1,    87,    13,    14,    15,    16,    17,
      18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
      28,    29,    30,    31,    74,    -1,    -1,    -1,     3,     4,
      -1,    -1,     7,     8,     9,    -1,    -1,    45,    13,    14,
      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
      25,    26,    27,    28,    29,    30,    31,    -1,    66,    -1,
      -1,    -1,    -1,     3,     4,    -1,    74,     7,     8,     9,
      45,    -1,    -1,    13,    14,    15,    16,    17,    18,    19,
      20,    21,    22,    23,    24,    25,    26,    27,    28,    29,
      30,    31,    -1,    -1,    -1,    -1,     3,     4,    -1,    74,
       7,     8,     9,    -1,    -1,    45,    13,    14,    15,    16,
      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
      27,    28,    29,    30,    31,     4,     5,     6,     7,     8,
      -1,    -1,    -1,    12,    74,    14,    15,    16,    45,    -1,
      -1,    -1,    -1,    -1,     4,     5,     6,     7,     8,    -1,
      -1,    30,    12,    32,    14,    15,    16,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    74,    -1,    -1,
      30,    -1,    32,    52,     4,     5,     6,     7,     8,     4,
       5,     6,     7,     8,    14,    15,    16,    -1,    -1,    14,
      15,    16,    52,    -1,    -1,    74,    -1,    -1,    -1,    -1,
      30,    -1,    32,    -1,    -1,    30,    -1,    32,     4,     5,
       6,     7,     8,    -1,    74,    -1,    -1,    -1,    14,    15,
      16,    -1,    52,    -1,    -1,    -1,    -1,    52,     4,     5,
       6,     7,     8,    -1,    30,    -1,    32,    -1,    14,    15,
      16,    -1,    -1,    -1,    74,    -1,    -1,    -1,    -1,    74,
      -1,    -1,    -1,    -1,    30,    -1,    52,     4,     5,     6,
       7,     8,     4,     5,     6,     7,     8,    14,    15,    16,
      -1,    -1,    14,    15,    16,    -1,    52,    -1,    74,    -1,
      -1,    -1,    -1,    30,    -1,    -1,    -1,    -1,    30,     4,
       5,     6,     7,     8,    -1,    -1,    -1,    -1,    74,    14,
      15,    16,    -1,    -1,    -1,    52,    -1,    -1,    -1,    -1,
      52,    -1,    -1,     4,    -1,    30,     7,     8,     4,     5,
       6,     7,     8,    14,    15,    16,    -1,    74,    14,    15,
      16,    -1,    74,    -1,    -1,    -1,    -1,    52,    -1,    30,
      -1,    32,     4,    -1,    30,     7,     8,    -1,    -1,    -1,
      -1,    -1,    14,    15,    16,    -1,    -1,    -1,    -1,    74,
      -1,    52,    -1,    -1,    -1,    -1,    52,    -1,    30,    -1,
      32,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    74,    -1,    -1,    -1,    -1,    74,    -1,
      52,    42,    43,    44,    -1,    46,    47,    48,    49,    50,
      51,    52,    53,    54,    55,    56,    57,    58,    59,    42,
      43,    44,    74,    46,    47,    48,    49,    50,    51,    52,
      53,    54,    55,    56,    57,    58,    59,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      42,    43,    44,    94,    46,    47,    48,    49,    50,    51,
      52,    53,    54,    55,    56,    57,    58,    59,    42,    43,
      44,    94,    46,    47,    48,    49,    50,    51,    52,    53,
      54,    55,    56,    57,    58,    59,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    42,
      43,    44,    94,    46,    47,    48,    49,    50,    51,    52,
      53,    54,    55,    56,    57,    58,    59,    -1,    92,    42,
      43,    44,    -1,    46,    47,    48,    49,    50,    51,    52,
      53,    54,    55,    56,    57,    58,    59,    -1,    -1,    12,
      32,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    91,    -1,
      42,    43,    44,    -1,    46,    47,    48,    49,    50,    51,
      52,    53,    54,    55,    56,    57,    58,    59,    91,    42,
      43,    44,    45,    46,    47,    48,    49,    50,    51,    52,
      53,    54,    55,    56,    57,    58,    59,    42,    43,    44,
      45,    46,    47,    48,    49,    50,    51,    52,    53,    54,
      55,    56,    57,    58,    59,    42,    43,    44,    -1,    46,
      47,    48,    49,    50,    51,    52,    53,    54,    55,    56,
      57,    58,    59,    44,    -1,    46,    47,    48,    49,    50,
      51,    52,    53,    54,    55,    56,    57,    58,    59
};
/* -*-C-*-  Note some compilers choke on comments on `#line' lines.  */
#line 3 "/usr/share/bison/bison.simple"

/* Skeleton output parser for bison,

   Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002 Free Software
   Foundation, Inc.

   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 2, 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., 59 Temple Place - Suite 330,
   Boston, MA 02111-1307, USA.  */

/* As a special exception, when this file is copied by Bison into a
   Bison output file, you may use that output file without restriction.
   This special exception was added by the Free Software Foundation
   in version 1.24 of Bison.  */

/* 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.  */

/* All symbols defined below should begin with yy or YY, to avoid
   infringing on user name space.  This should be done even for local
   variables, as they might otherwise be expanded by user macros.
   There are some unavoidable exceptions within include files to
   define necessary library symbols; they are noted "INFRINGES ON
   USER NAME SPACE" below.  */

#if ! defined (yyoverflow) || defined (YYERROR_VERBOSE)

/* The parser invokes alloca or malloc; define the necessary symbols.  */

# if YYSTACK_USE_ALLOCA
#  define YYSTACK_ALLOC alloca
# else
#  ifndef YYSTACK_USE_ALLOCA
#   if defined (alloca) || defined (_ALLOCA_H)
#    define YYSTACK_ALLOC alloca
#   else
#    ifdef __GNUC__
#     define YYSTACK_ALLOC __builtin_alloca
#    endif
#   endif
#  endif
# endif

# ifdef YYSTACK_ALLOC
   /* Pacify GCC's `empty if-body' warning. */
#  define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
# else
#  if defined (__STDC__) || defined (__cplusplus)
#   include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
#   define YYSIZE_T size_t
#  endif
#  define YYSTACK_ALLOC malloc
#  define YYSTACK_FREE free
# endif
#endif /* ! defined (yyoverflow) || defined (YYERROR_VERBOSE) */


#if (! defined (yyoverflow) \
     && (! defined (__cplusplus) \
	 || (YYLTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))

/* A type that is properly aligned for any stack member.  */
union yyalloc
{
  short yyss;
  YYSTYPE yyvs;
# if YYLSP_NEEDED
  YYLTYPE yyls;
# endif
};

/* The size of the maximum gap between one aligned stack and the next.  */
# define YYSTACK_GAP_MAX (sizeof (union yyalloc) - 1)

/* The size of an array large to enough to hold all stacks, each with
   N elements.  */
# if YYLSP_NEEDED
#  define YYSTACK_BYTES(N) \
     ((N) * (sizeof (short) + sizeof (YYSTYPE) + sizeof (YYLTYPE))	\
      + 2 * YYSTACK_GAP_MAX)
# else
#  define YYSTACK_BYTES(N) \
     ((N) * (sizeof (short) + sizeof (YYSTYPE))				\
      + YYSTACK_GAP_MAX)
# endif

/* Copy COUNT objects from FROM to TO.  The source and destination do
   not overlap.  */
# ifndef YYCOPY
#  if 1 < __GNUC__
#   define YYCOPY(To, From, Count) \
      __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
#  else
#   define YYCOPY(To, From, Count)		\
      do					\
	{					\
	  register YYSIZE_T yyi;		\
	  for (yyi = 0; yyi < (Count); yyi++)	\
	    (To)[yyi] = (From)[yyi];		\
	}					\
      while (0)
#  endif
# endif

/* Relocate STACK from its old location to the new one.  The
   local variables YYSIZE and YYSTACKSIZE give the old and new number of
   elements in the stack, and YYPTR gives the new location of the
   stack.  Advance YYPTR to a properly aligned location for the next
   stack.  */
# define YYSTACK_RELOCATE(Stack)					\
    do									\
      {									\
	YYSIZE_T yynewbytes;						\
	YYCOPY (&yyptr->Stack, Stack, yysize);				\
	Stack = &yyptr->Stack;						\
	yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAX;	\
	yyptr += yynewbytes / sizeof (*yyptr);				\
      }									\
    while (0)

#endif


#if ! defined (YYSIZE_T) && defined (__SIZE_TYPE__)
# define YYSIZE_T __SIZE_TYPE__
#endif
#if ! defined (YYSIZE_T) && defined (size_t)
# define YYSIZE_T size_t
#endif
#if ! defined (YYSIZE_T)
# if defined (__STDC__) || defined (__cplusplus)
#  include <stddef.h> /* INFRINGES ON USER NAME SPACE */
#  define YYSIZE_T size_t
# endif
#endif
#if ! defined (YYSIZE_T)
# define YYSIZE_T unsigned int
#endif

#define yyerrok		(yyerrstatus = 0)
#define yyclearin	(yychar = YYEMPTY)
#define YYEMPTY		-2
#define YYEOF		0
#define YYACCEPT	goto yyacceptlab
#define YYABORT 	goto yyabortlab
#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


/* YYLLOC_DEFAULT -- Compute the default location (before the actions
   are run).

   When YYLLOC_DEFAULT is run, CURRENT is set the location of the
   first token.  By default, to implement support for ranges, extend
   its range to the last symbol.  */

#ifndef YYLLOC_DEFAULT
# define YYLLOC_DEFAULT(Current, Rhs, N)       	\
   Current.last_line   = Rhs[N].last_line;	\
   Current.last_column = Rhs[N].last_column;
#endif


/* YYLEX -- calling `yylex' with the right arguments.  */

#if YYPURE
# if YYLSP_NEEDED
#  ifdef YYLEX_PARAM
#   define YYLEX		yylex (&yylval, &yylloc, YYLEX_PARAM)
#  else
#   define YYLEX		yylex (&yylval, &yylloc)
#  endif
# else /* !YYLSP_NEEDED */
#  ifdef YYLEX_PARAM
#   define YYLEX		yylex (&yylval, YYLEX_PARAM)
#  else
#   define YYLEX		yylex (&yylval)
#  endif
# endif /* !YYLSP_NEEDED */
#else /* !YYPURE */
# define YYLEX			yylex ()
#endif /* !YYPURE */


/* Enable debugging if requested.  */
#if YYDEBUG

# ifndef YYFPRINTF
#  include <stdio.h> /* INFRINGES ON USER NAME SPACE */
#  define YYFPRINTF fprintf
# endif

# define YYDPRINTF(Args)			\
do {						\
  if (yydebug)					\
    YYFPRINTF Args;				\
} while (0)
/* Nonzero means print parse trace.  It is left uninitialized so that
   multiple parsers can coexist.  */
int yydebug;
#else /* !YYDEBUG */
# define YYDPRINTF(Args)
#endif /* !YYDEBUG */

/* YYINITDEPTH -- initial size of the parser's stacks.  */
#ifndef	YYINITDEPTH
# define YYINITDEPTH 200
#endif

/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
   if the built-in stack extension method is used).

   Do not make this value too large; the results are undefined if
   SIZE_MAX < YYSTACK_BYTES (YYMAXDEPTH)
   evaluated with infinite-precision integer arithmetic.  */

#if YYMAXDEPTH == 0
# undef YYMAXDEPTH
#endif

#ifndef YYMAXDEPTH
# define YYMAXDEPTH 10000
#endif

#ifdef YYERROR_VERBOSE

# ifndef yystrlen
#  if defined (__GLIBC__) && defined (_STRING_H)
#   define yystrlen strlen
#  else
/* Return the length of YYSTR.  */
static YYSIZE_T
#   if defined (__STDC__) || defined (__cplusplus)
yystrlen (const char *yystr)
#   else
yystrlen (yystr)
     const char *yystr;
#   endif
{
  register const char *yys = yystr;

  while (*yys++ != '\0')
    continue;

  return yys - yystr - 1;
}
#  endif
# endif

# ifndef yystpcpy
#  if defined (__GLIBC__) && defined (_STRING_H) && defined (_GNU_SOURCE)
#   define yystpcpy stpcpy
#  else
/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
   YYDEST.  */
static char *
#   if defined (__STDC__) || defined (__cplusplus)
yystpcpy (char *yydest, const char *yysrc)
#   else
yystpcpy (yydest, yysrc)
     char *yydest;
     const char *yysrc;
#   endif
{
  register char *yyd = yydest;
  register const char *yys = yysrc;

  while ((*yyd++ = *yys++) != '\0')
    continue;

  return yyd - 1;
}
#  endif
# endif
#endif

#line 315 "/usr/share/bison/bison.simple"


/* The user can define YYPARSE_PARAM as the name of an argument to be passed
   into yyparse.  The argument should have type void *.
   It should actually point to an object.
   Grammar actions can access the variable by casting it
   to the proper pointer type.  */

#ifdef YYPARSE_PARAM
# if defined (__STDC__) || defined (__cplusplus)
#  define YYPARSE_PARAM_ARG void *YYPARSE_PARAM
#  define YYPARSE_PARAM_DECL
# else
#  define YYPARSE_PARAM_ARG YYPARSE_PARAM
#  define YYPARSE_PARAM_DECL void *YYPARSE_PARAM;
# endif
#else /* !YYPARSE_PARAM */
# define YYPARSE_PARAM_ARG
# define YYPARSE_PARAM_DECL
#endif /* !YYPARSE_PARAM */

/* Prevent warning if -Wstrict-prototypes.  */
#ifdef __GNUC__
# ifdef YYPARSE_PARAM
int yyparse (void *);
# else
int yyparse (void);
# endif
#endif

/* YY_DECL_VARIABLES -- depending whether we use a pure parser,
   variables are global, or local to YYPARSE.  */

#define YY_DECL_NON_LSP_VARIABLES			\
/* The lookahead symbol.  */				\
int yychar;						\
							\
/* The semantic value of the lookahead symbol. */	\
YYSTYPE yylval;						\
							\
/* Number of parse errors so far.  */			\
int yynerrs;

#if YYLSP_NEEDED
# define YY_DECL_VARIABLES			\
YY_DECL_NON_LSP_VARIABLES			\
						\
/* Location data for the lookahead symbol.  */	\
YYLTYPE yylloc;
#else
# define YY_DECL_VARIABLES			\
YY_DECL_NON_LSP_VARIABLES
#endif


/* If nonreentrant, generate the variables here. */

#if !YYPURE
YY_DECL_VARIABLES
#endif  /* !YYPURE */

int
yyparse (YYPARSE_PARAM_ARG)
     YYPARSE_PARAM_DECL
{
  /* If reentrant, generate the variables here. */
#if YYPURE
  YY_DECL_VARIABLES
#endif  /* !YYPURE */

  register int yystate;
  register int yyn;
  int yyresult;
  /* Number of tokens to shift before error messages enabled.  */
  int yyerrstatus;
  /* Lookahead token as an internal (translated) token number.  */
  int yychar1 = 0;

  /* Three stacks and their tools:
     `yyss': related to states,
     `yyvs': related to semantic values,
     `yyls': related to locations.

     Refer to the stacks thru separate pointers, to allow yyoverflow
     to reallocate them elsewhere.  */

  /* The state stack. */
  short	yyssa[YYINITDEPTH];
  short *yyss = yyssa;
  register short *yyssp;

  /* The semantic value stack.  */
  YYSTYPE yyvsa[YYINITDEPTH];
  YYSTYPE *yyvs = yyvsa;
  register YYSTYPE *yyvsp;

#if YYLSP_NEEDED
  /* The location stack.  */
  YYLTYPE yylsa[YYINITDEPTH];
  YYLTYPE *yyls = yylsa;
  YYLTYPE *yylsp;
#endif

#if YYLSP_NEEDED
# define YYPOPSTACK   (yyvsp--, yyssp--, yylsp--)
#else
# define YYPOPSTACK   (yyvsp--, yyssp--)
#endif

  YYSIZE_T yystacksize = YYINITDEPTH;


  /* The variables used to return semantic value and location from the
     action routines.  */
  YYSTYPE yyval;
#if YYLSP_NEEDED
  YYLTYPE yyloc;
#endif

  /* When reducing, the number of symbols on the RHS of the reduced
     rule. */
  int yylen;

  YYDPRINTF ((stderr, "Starting parse\n"));

  yystate = 0;
  yyerrstatus = 0;
  yynerrs = 0;
  yychar = YYEMPTY;		/* Cause a token to be read.  */

  /* Initialize stack pointers.
     Waste one element of value and location stack
     so that they stay on the same level as the state stack.
     The wasted elements are never initialized.  */

  yyssp = yyss;
  yyvsp = yyvs;
#if YYLSP_NEEDED
  yylsp = yyls;
#endif
  goto yysetstate;

/*------------------------------------------------------------.
| yynewstate -- Push a new state, which is found in yystate.  |
`------------------------------------------------------------*/
 yynewstate:
  /* In all cases, when you get here, the value and location stacks
     have just been pushed. so pushing a state here evens the stacks.
     */
  yyssp++;

 yysetstate:
  *yyssp = yystate;

  if (yyssp >= yyss + yystacksize - 1)
    {
      /* Get the current used size of the three stacks, in elements.  */
      YYSIZE_T yysize = yyssp - yyss + 1;

#ifdef yyoverflow
      {
	/* 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;

	/* Each stack pointer address is followed by the size of the
	   data in use in that stack, in bytes.  */
# if YYLSP_NEEDED
	YYLTYPE *yyls1 = yyls;
	/* This used to be a conditional around just the two extra args,
	   but that might be undefined if yyoverflow is a macro.  */
	yyoverflow ("parser stack overflow",
		    &yyss1, yysize * sizeof (*yyssp),
		    &yyvs1, yysize * sizeof (*yyvsp),
		    &yyls1, yysize * sizeof (*yylsp),
		    &yystacksize);
	yyls = yyls1;
# else
	yyoverflow ("parser stack overflow",
		    &yyss1, yysize * sizeof (*yyssp),
		    &yyvs1, yysize * sizeof (*yyvsp),
		    &yystacksize);
# endif
	yyss = yyss1;
	yyvs = yyvs1;
      }
#else /* no yyoverflow */
# ifndef YYSTACK_RELOCATE
      goto yyoverflowlab;
# else
      /* Extend the stack our own way.  */
      if (yystacksize >= YYMAXDEPTH)
	goto yyoverflowlab;
      yystacksize *= 2;
      if (yystacksize > YYMAXDEPTH)
	yystacksize = YYMAXDEPTH;

      {
	short *yyss1 = yyss;
	union yyalloc *yyptr =
	  (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
	if (! yyptr)
	  goto yyoverflowlab;
	YYSTACK_RELOCATE (yyss);
	YYSTACK_RELOCATE (yyvs);
# if YYLSP_NEEDED
	YYSTACK_RELOCATE (yyls);
# endif
# undef YYSTACK_RELOCATE
	if (yyss1 != yyssa)
	  YYSTACK_FREE (yyss1);
      }
# endif
#endif /* no yyoverflow */

      yyssp = yyss + yysize - 1;
      yyvsp = yyvs + yysize - 1;
#if YYLSP_NEEDED
      yylsp = yyls + yysize - 1;
#endif

      YYDPRINTF ((stderr, "Stack size increased to %lu\n",
		  (unsigned long int) yystacksize));

      if (yyssp >= yyss + yystacksize - 1)
	YYABORT;
    }

  YYDPRINTF ((stderr, "Entering state %d\n", yystate));

  goto yybackup;


/*-----------.
| yybackup.  |
`-----------*/
yybackup:

/* Do appropriate processing given the current state.  */
/* Read a lookahead token if we need one and don't already have one.  */
/* yyresume: */

  /* First try to decide what to do without reference to lookahead token.  */

  yyn = yypact[yystate];
  if (yyn == YYFLAG)
    goto yydefault;

  /* Not known => get a lookahead token if don't already have one.  */

  /* yychar is either YYEMPTY or YYEOF
     or a valid token in external form.  */

  if (yychar == YYEMPTY)
    {
      YYDPRINTF ((stderr, "Reading a token: "));
      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 */

      YYDPRINTF ((stderr, "Now at end of input.\n"));
    }
  else
    {
      yychar1 = YYTRANSLATE (yychar);

#if YYDEBUG
     /* We have to keep this `#if YYDEBUG', since we use variables
	which are defined only if `YYDEBUG' is set.  */
      if (yydebug)
	{
	  YYFPRINTF (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
	  YYFPRINTF (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.  */
  YYDPRINTF ((stderr, "Shifting token %d (%s), ",
	      yychar, yytname[yychar1]));

  /* Discard the token being shifted unless it is eof.  */
  if (yychar != YYEOF)
    yychar = YYEMPTY;

  *++yyvsp = yylval;
#if YYLSP_NEEDED
  *++yylsp = yylloc;
#endif

  /* Count tokens shifted since error; after three, turn off error
     status.  */
  if (yyerrstatus)
    yyerrstatus--;

  yystate = yyn;
  goto yynewstate;


/*-----------------------------------------------------------.
| yydefault -- do the default action for the current state.  |
`-----------------------------------------------------------*/
yydefault:
  yyn = yydefact[yystate];
  if (yyn == 0)
    goto yyerrlab;
  goto yyreduce;


/*-----------------------------.
| yyreduce -- Do a reduction.  |
`-----------------------------*/
yyreduce:
  /* yyn is the number of a rule to reduce with.  */
  yylen = yyr2[yyn];

  /* If YYLEN is nonzero, implement the default value of the action:
     `$$ = $1'.

     Otherwise, the following line sets YYVAL to the semantic value of
     the lookahead token.  This behavior is undocumented and Bison
     users should not rely upon it.  Assigning to YYVAL
     unconditionally makes the parser a bit smaller, and it avoids a
     GCC warning that YYVAL may be used uninitialized.  */
  yyval = yyvsp[1-yylen];

#if YYLSP_NEEDED
  /* Similarly for the default location.  Let the user run additional
     commands if for instance locations are ranges.  */
  yyloc = yylsp[1-yylen];
  YYLLOC_DEFAULT (yyloc, (yylsp - yylen), yylen);
#endif

#if YYDEBUG
  /* We have to keep this `#if YYDEBUG', since we use variables which
     are defined only if `YYDEBUG' is set.  */
  if (yydebug)
    {
      int yyi;

      YYFPRINTF (stderr, "Reducing via rule %d (line %d), ",
		 yyn, yyrline[yyn]);

      /* Print the symbols being reduced, and their result.  */
      for (yyi = yyprhs[yyn]; yyrhs[yyi] > 0; yyi++)
	YYFPRINTF (stderr, "%s ", yytname[yyrhs[yyi]]);
      YYFPRINTF (stderr, " -> %s\n", yytname[yyr1[yyn]]);
    }
#endif

  switch (yyn) {

case 1:
#line 364 "objc/objc-parse.y"
{ if (pedantic)
		    pedwarn ("ISO C forbids an empty source file");
		;
    break;}
case 3:
#line 375 "objc/objc-parse.y"
{ yyval.dsptype = NULL; ;
    break;}
case 4:
#line 376 "objc/objc-parse.y"
{ obstack_free (&parser_obstack, yyvsp[-2].otype); ;
    break;}
case 5:
#line 378 "objc/objc-parse.y"
{ yyval.dsptype = NULL; ggc_collect (); ;
    break;}
case 6:
#line 379 "objc/objc-parse.y"
{ obstack_free (&parser_obstack, yyvsp[-2].otype); ;
    break;}
case 10:
#line 387 "objc/objc-parse.y"
{ RESTORE_EXT_FLAGS (yyvsp[-1].itype); ;
    break;}
case 12:
#line 394 "objc/objc-parse.y"
{ yyval.otype = obstack_alloc (&parser_obstack, 0); ;
    break;}
case 13:
#line 399 "objc/objc-parse.y"
{ pedwarn ("data definition has no type or storage class");
		  POP_DECLSPEC_STACK; ;
    break;}
case 14:
#line 402 "objc/objc-parse.y"
{ POP_DECLSPEC_STACK; ;
    break;}
case 15:
#line 404 "objc/objc-parse.y"
{ POP_DECLSPEC_STACK; ;
    break;}
case 16:
#line 406 "objc/objc-parse.y"
{ shadow_tag (finish_declspecs (yyvsp[-1].dsptype)); ;
    break;}
case 19:
#line 410 "objc/objc-parse.y"
{ if (pedantic)
		    pedwarn ("ISO C does not allow extra %<;%> outside of a function"); ;
    break;}
case 20:
#line 416 "objc/objc-parse.y"
{ if (!start_function (current_declspecs, yyvsp[0].dtrtype,
				       all_prefix_attributes))
		    YYERROR1;
		;
    break;}
case 21:
#line 421 "objc/objc-parse.y"
{ DECL_SOURCE_LOCATION (current_function_decl) = yyvsp[0].location;
		  store_parm_decls (); ;
    break;}
case 22:
#line 424 "objc/objc-parse.y"
{ finish_function ();
		  POP_DECLSPEC_STACK; ;
    break;}
case 23:
#line 427 "objc/objc-parse.y"
{ POP_DECLSPEC_STACK; ;
    break;}
case 24:
#line 429 "objc/objc-parse.y"
{ if (!start_function (current_declspecs, yyvsp[0].dtrtype,
				       all_prefix_attributes))
		    YYERROR1;
		;
    break;}
case 25:
#line 434 "objc/objc-parse.y"
{ DECL_SOURCE_LOCATION (current_function_decl) = yyvsp[0].location;
		  store_parm_decls (); ;
    break;}
case 26:
#line 437 "objc/objc-parse.y"
{ finish_function ();
		  POP_DECLSPEC_STACK; ;
    break;}
case 27:
#line 440 "objc/objc-parse.y"
{ POP_DECLSPEC_STACK; ;
    break;}
case 28:
#line 442 "objc/objc-parse.y"
{ if (!start_function (current_declspecs, yyvsp[0].dtrtype,
				       all_prefix_attributes))
		    YYERROR1;
		;
    break;}
case 29:
#line 447 "objc/objc-parse.y"
{ DECL_SOURCE_LOCATION (current_function_decl) = yyvsp[0].location;
		  store_parm_decls (); ;
    break;}
case 30:
#line 450 "objc/objc-parse.y"
{ finish_function ();
		  POP_DECLSPEC_STACK; ;
    break;}
case 31:
#line 453 "objc/objc-parse.y"
{ POP_DECLSPEC_STACK; ;
    break;}
case 35:
#line 463 "objc/objc-parse.y"
{ yyval.code = ADDR_EXPR; ;
    break;}
case 36:
#line 465 "objc/objc-parse.y"
{ yyval.code = NEGATE_EXPR; ;
    break;}
case 37:
#line 467 "objc/objc-parse.y"
{ yyval.code = CONVERT_EXPR;
		;
    break;}
case 38:
#line 470 "objc/objc-parse.y"
{ yyval.code = PREINCREMENT_EXPR; ;
    break;}
case 39:
#line 472 "objc/objc-parse.y"
{ yyval.code = PREDECREMENT_EXPR; ;
    break;}
case 40:
#line 474 "objc/objc-parse.y"
{ yyval.code = BIT_NOT_EXPR; ;
    break;}
case 41:
#line 476 "objc/objc-parse.y"
{ yyval.code = TRUTH_NOT_EXPR; ;
    break;}
case 43:
#line 481 "objc/objc-parse.y"
{ yyval.exprtype.value = build_compound_expr (yyvsp[-2].exprtype.value, yyvsp[0].exprtype.value);
		  yyval.exprtype.original_code = COMPOUND_EXPR; ;
    break;}
case 44:
#line 487 "objc/objc-parse.y"
{ yyval.ttype = NULL_TREE; ;
    break;}
case 46:
#line 493 "objc/objc-parse.y"
{ yyval.ttype = build_tree_list (NULL_TREE, yyvsp[0].exprtype.value); ;
    break;}
case 47:
#line 495 "objc/objc-parse.y"
{ chainon (yyvsp[-2].ttype, build_tree_list (NULL_TREE, yyvsp[0].exprtype.value)); ;
    break;}
case 49:
#line 501 "objc/objc-parse.y"
{ yyval.exprtype.value = build_indirect_ref (yyvsp[0].exprtype.value, "unary *");
		  yyval.exprtype.original_code = ERROR_MARK; ;
    break;}
case 50:
#line 505 "objc/objc-parse.y"
{ yyval.exprtype = yyvsp[0].exprtype;
		  RESTORE_EXT_FLAGS (yyvsp[-1].itype); ;
    break;}
case 51:
#line 508 "objc/objc-parse.y"
{ yyval.exprtype.value = build_unary_op (yyvsp[-1].code, yyvsp[0].exprtype.value, 0);
		  overflow_warning (yyval.exprtype.value);
		  yyval.exprtype.original_code = ERROR_MARK; ;
    break;}
case 52:
#line 513 "objc/objc-parse.y"
{ yyval.exprtype.value = finish_label_address_expr (yyvsp[0].ttype);
		  yyval.exprtype.original_code = ERROR_MARK; ;
    break;}
case 53:
#line 516 "objc/objc-parse.y"
{ skip_evaluation--;
		  in_sizeof--;
		  if (TREE_CODE (yyvsp[0].exprtype.value) == COMPONENT_REF
		      && DECL_C_BIT_FIELD (TREE_OPERAND (yyvsp[0].exprtype.value, 1)))
		    error ("%<sizeof%> applied to a bit-field");
		  yyval.exprtype = c_expr_sizeof_expr (yyvsp[0].exprtype); ;
    break;}
case 54:
#line 523 "objc/objc-parse.y"
{ skip_evaluation--;
		  in_sizeof--;
		  yyval.exprtype = c_expr_sizeof_type (yyvsp[-1].typenametype); ;
    break;}
case 55:
#line 527 "objc/objc-parse.y"
{ skip_evaluation--;
		  in_alignof--;
		  yyval.exprtype.value = c_alignof_expr (yyvsp[0].exprtype.value);
		  yyval.exprtype.original_code = ERROR_MARK; ;
    break;}
case 56:
#line 532 "objc/objc-parse.y"
{ skip_evaluation--;
		  in_alignof--;
		  yyval.exprtype.value = c_alignof (groktypename (yyvsp[-1].typenametype));
		  yyval.exprtype.original_code = ERROR_MARK; ;
    break;}
case 57:
#line 537 "objc/objc-parse.y"
{ yyval.exprtype.value = build_unary_op (REALPART_EXPR, yyvsp[0].exprtype.value, 0);
		  yyval.exprtype.original_code = ERROR_MARK; ;
    break;}
case 58:
#line 540 "objc/objc-parse.y"
{ yyval.exprtype.value = build_unary_op (IMAGPART_EXPR, yyvsp[0].exprtype.value, 0);
		  yyval.exprtype.original_code = ERROR_MARK; ;
    break;}
case 59:
#line 545 "objc/objc-parse.y"
{ skip_evaluation++; in_sizeof++; ;
    break;}
case 60:
#line 549 "objc/objc-parse.y"
{ skip_evaluation++; in_alignof++; ;
    break;}
case 61:
#line 553 "objc/objc-parse.y"
{ skip_evaluation++; in_typeof++; ;
    break;}
case 63:
#line 559 "objc/objc-parse.y"
{ yyval.exprtype.value = c_cast_expr (yyvsp[-2].typenametype, yyvsp[0].exprtype.value);
		  yyval.exprtype.original_code = ERROR_MARK; ;
    break;}
case 65:
#line 566 "objc/objc-parse.y"
{ yyval.exprtype = parser_build_binary_op (yyvsp[-1].code, yyvsp[-2].exprtype, yyvsp[0].exprtype); ;
    break;}
case 66:
#line 568 "objc/objc-parse.y"
{ yyval.exprtype = parser_build_binary_op (yyvsp[-1].code, yyvsp[-2].exprtype, yyvsp[0].exprtype); ;
    break;}
case 67:
#line 570 "objc/objc-parse.y"
{ yyval.exprtype = parser_build_binary_op (yyvsp[-1].code, yyvsp[-2].exprtype, yyvsp[0].exprtype); ;
    break;}
case 68:
#line 572 "objc/objc-parse.y"
{ yyval.exprtype = parser_build_binary_op (yyvsp[-1].code, yyvsp[-2].exprtype, yyvsp[0].exprtype); ;
    break;}
case 69:
#line 574 "objc/objc-parse.y"
{ yyval.exprtype = parser_build_binary_op (yyvsp[-1].code, yyvsp[-2].exprtype, yyvsp[0].exprtype); ;
    break;}
case 70:
#line 576 "objc/objc-parse.y"
{ yyval.exprtype = parser_build_binary_op (yyvsp[-1].code, yyvsp[-2].exprtype, yyvsp[0].exprtype); ;
    break;}
case 71:
#line 578 "objc/objc-parse.y"
{ yyval.exprtype = parser_build_binary_op (yyvsp[-1].code, yyvsp[-2].exprtype, yyvsp[0].exprtype); ;
    break;}
case 72:
#line 580 "objc/objc-parse.y"
{ yyval.exprtype = parser_build_binary_op (yyvsp[-1].code, yyvsp[-2].exprtype, yyvsp[0].exprtype); ;
    break;}
case 73:
#line 582 "objc/objc-parse.y"
{ yyval.exprtype = parser_build_binary_op (yyvsp[-1].code, yyvsp[-2].exprtype, yyvsp[0].exprtype); ;
    break;}
case 74:
#line 584 "objc/objc-parse.y"
{ yyval.exprtype = parser_build_binary_op (yyvsp[-1].code, yyvsp[-2].exprtype, yyvsp[0].exprtype); ;
    break;}
case 75:
#line 586 "objc/objc-parse.y"
{ yyval.exprtype = parser_build_binary_op (yyvsp[-1].code, yyvsp[-2].exprtype, yyvsp[0].exprtype); ;
    break;}
case 76:
#line 588 "objc/objc-parse.y"
{ yyval.exprtype = parser_build_binary_op (yyvsp[-1].code, yyvsp[-2].exprtype, yyvsp[0].exprtype); ;
    break;}
case 77:
#line 590 "objc/objc-parse.y"
{ yyvsp[-1].exprtype.value = lang_hooks.truthvalue_conversion
		    (default_conversion (yyvsp[-1].exprtype.value));
		  skip_evaluation += yyvsp[-1].exprtype.value == truthvalue_false_node; ;
    break;}
case 78:
#line 594 "objc/objc-parse.y"
{ skip_evaluation -= yyvsp[-3].exprtype.value == truthvalue_false_node;
		  yyval.exprtype = parser_build_binary_op (TRUTH_ANDIF_EXPR, yyvsp[-3].exprtype, yyvsp[0].exprtype); ;
    break;}
case 79:
#line 597 "objc/objc-parse.y"
{ yyvsp[-1].exprtype.value = lang_hooks.truthvalue_conversion
		    (default_conversion (yyvsp[-1].exprtype.value));
		  skip_evaluation += yyvsp[-1].exprtype.value == truthvalue_true_node; ;
    break;}
case 80:
#line 601 "objc/objc-parse.y"
{ skip_evaluation -= yyvsp[-3].exprtype.value == truthvalue_true_node;
		  yyval.exprtype = parser_build_binary_op (TRUTH_ORIF_EXPR, yyvsp[-3].exprtype, yyvsp[0].exprtype); ;
    break;}
case 81:
#line 604 "objc/objc-parse.y"
{ yyvsp[-1].exprtype.value = lang_hooks.truthvalue_conversion
		    (default_conversion (yyvsp[-1].exprtype.value));
		  skip_evaluation += yyvsp[-1].exprtype.value == truthvalue_false_node; ;
    break;}
case 82:
#line 608 "objc/objc-parse.y"
{ skip_evaluation += ((yyvsp[-4].exprtype.value == truthvalue_true_node)
				      - (yyvsp[-4].exprtype.value == truthvalue_false_node)); ;
    break;}
case 83:
#line 611 "objc/objc-parse.y"
{ skip_evaluation -= yyvsp[-6].exprtype.value == truthvalue_true_node;
		  yyval.exprtype.value = build_conditional_expr (yyvsp[-6].exprtype.value, yyvsp[-3].exprtype.value,
						     yyvsp[0].exprtype.value);
		  yyval.exprtype.original_code = ERROR_MARK; ;
    break;}
case 84:
#line 616 "objc/objc-parse.y"
{ if (pedantic)
		    pedwarn ("ISO C forbids omitting the middle term of a ?: expression");
		  /* Make sure first operand is calculated only once.  */
		  yyvsp[0].ttype = save_expr (default_conversion (yyvsp[-1].exprtype.value));
		  yyvsp[-1].exprtype.value = lang_hooks.truthvalue_conversion (yyvsp[0].ttype);
		  skip_evaluation += yyvsp[-1].exprtype.value == truthvalue_true_node; ;
    break;}
case 85:
#line 623 "objc/objc-parse.y"
{ skip_evaluation -= yyvsp[-4].exprtype.value == truthvalue_true_node;
		  yyval.exprtype.value = build_conditional_expr (yyvsp[-4].exprtype.value, yyvsp[-3].ttype,
						     yyvsp[0].exprtype.value);
		  yyval.exprtype.original_code = ERROR_MARK; ;
    break;}
case 86:
#line 628 "objc/objc-parse.y"
{ yyval.exprtype.value = build_modify_expr (yyvsp[-2].exprtype.value, NOP_EXPR, yyvsp[0].exprtype.value);
		  yyval.exprtype.original_code = MODIFY_EXPR;
		;
    break;}
case 87:
#line 632 "objc/objc-parse.y"
{ yyval.exprtype.value = build_modify_expr (yyvsp[-2].exprtype.value, yyvsp[-1].code, yyvsp[0].exprtype.value);
		  TREE_NO_WARNING (yyval.exprtype.value) = 1;
		  yyval.exprtype.original_code = ERROR_MARK;
		;
    break;}
case 88:
#line 640 "objc/objc-parse.y"
{
		  if (yychar == YYEMPTY)
		    yychar = YYLEX;
		  yyval.exprtype.value = build_external_ref (yyvsp[0].ttype, yychar == '(');
		  yyval.exprtype.original_code = ERROR_MARK;
		;
    break;}
case 89:
#line 647 "objc/objc-parse.y"
{ yyval.exprtype.value = yyvsp[0].ttype; yyval.exprtype.original_code = ERROR_MARK; ;
    break;}
case 90:
#line 649 "objc/objc-parse.y"
{ yyval.exprtype.value = yyvsp[0].ttype; yyval.exprtype.original_code = STRING_CST; ;
    break;}
case 91:
#line 651 "objc/objc-parse.y"
{ yyval.exprtype.value = fname_decl (C_RID_CODE (yyvsp[0].ttype), yyvsp[0].ttype);
		  yyval.exprtype.original_code = ERROR_MARK; ;
    break;}
case 92:
#line 654 "objc/objc-parse.y"
{ start_init (NULL_TREE, NULL, 0);
		  yyval.ttype = groktypename (yyvsp[-2].typenametype);
		  if (C_TYPE_VARIABLE_SIZE (yyval.ttype))
		    {
		      error ("compound literal has variable size");
		      yyval.ttype = error_mark_node;
		    }
		  really_start_incremental_init (yyval.ttype); ;
    break;}
case 93:
#line 663 "objc/objc-parse.y"
{ struct c_expr init = pop_init_level (0);
		  tree constructor = init.value;
		  tree type = yyvsp[-2].ttype;
		  finish_init ();
		  maybe_warn_string_init (type, init);

		  if (pedantic && !flag_isoc99)
		    pedwarn ("ISO C90 forbids compound literals");
		  yyval.exprtype.value = build_compound_literal (type, constructor);
		  yyval.exprtype.original_code = ERROR_MARK;
		;
    break;}
case 94:
#line 675 "objc/objc-parse.y"
{ yyval.exprtype.value = yyvsp[-1].exprtype.value;
		  if (TREE_CODE (yyval.exprtype.value) == MODIFY_EXPR)
		    TREE_NO_WARNING (yyval.exprtype.value) = 1;
		  yyval.exprtype.original_code = ERROR_MARK; ;
    break;}
case 95:
#line 680 "objc/objc-parse.y"
{ yyval.exprtype.value = error_mark_node; yyval.exprtype.original_code = ERROR_MARK; ;
    break;}
case 96:
#line 682 "objc/objc-parse.y"
{ if (pedantic)
		    pedwarn ("ISO C forbids braced-groups within expressions");
		  yyval.exprtype.value = c_finish_stmt_expr (yyvsp[-2].ttype);
		  yyval.exprtype.original_code = ERROR_MARK;
		;
    break;}
case 97:
#line 688 "objc/objc-parse.y"
{ c_finish_stmt_expr (yyvsp[-2].ttype);
		  yyval.exprtype.value = error_mark_node;
		  yyval.exprtype.original_code = ERROR_MARK;
		;
    break;}
case 98:
#line 693 "objc/objc-parse.y"
{ yyval.exprtype.value = build_function_call (yyvsp[-3].exprtype.value, yyvsp[-1].ttype);
		  yyval.exprtype.original_code = ERROR_MARK; ;
    break;}
case 99:
#line 696 "objc/objc-parse.y"
{ yyval.exprtype.value = build_va_arg (yyvsp[-3].exprtype.value, groktypename (yyvsp[-1].typenametype));
		  yyval.exprtype.original_code = ERROR_MARK; ;
    break;}
case 100:
#line 700 "objc/objc-parse.y"
{ tree type = groktypename (yyvsp[-1].typenametype);
		  if (type == error_mark_node)
		    offsetof_base = error_mark_node;
		  else
		    offsetof_base = build1 (INDIRECT_REF, type, NULL);
		;
    break;}
case 101:
#line 707 "objc/objc-parse.y"
{ yyval.exprtype.value = fold_offsetof (yyvsp[-1].ttype);
		  yyval.exprtype.original_code = ERROR_MARK; ;
    break;}
case 102:
#line 710 "objc/objc-parse.y"
{ yyval.exprtype.value = error_mark_node; yyval.exprtype.original_code = ERROR_MARK; ;
    break;}
case 103:
#line 713 "objc/objc-parse.y"
{
                  tree c;

                  c = fold (yyvsp[-5].exprtype.value);
                  STRIP_NOPS (c);
                  if (TREE_CODE (c) != INTEGER_CST)
                    error ("first argument to %<__builtin_choose_expr%> not"
			   " a constant");
                  yyval.exprtype = integer_zerop (c) ? yyvsp[-1].exprtype : yyvsp[-3].exprtype;
		;
    break;}
case 104:
#line 724 "objc/objc-parse.y"
{ yyval.exprtype.value = error_mark_node; yyval.exprtype.original_code = ERROR_MARK; ;
    break;}
case 105:
#line 726 "objc/objc-parse.y"
{
		  tree e1, e2;

		  e1 = TYPE_MAIN_VARIANT (groktypename (yyvsp[-3].typenametype));
		  e2 = TYPE_MAIN_VARIANT (groktypename (yyvsp[-1].typenametype));

		  yyval.exprtype.value = comptypes (e1, e2)
		    ? build_int_cst (NULL_TREE, 1)
		    : build_int_cst (NULL_TREE, 0);
		  yyval.exprtype.original_code = ERROR_MARK;
		;
    break;}
case 106:
#line 738 "objc/objc-parse.y"
{ yyval.exprtype.value = error_mark_node; yyval.exprtype.original_code = ERROR_MARK; ;
    break;}
case 107:
#line 740 "objc/objc-parse.y"
{ yyval.exprtype.value = build_array_ref (yyvsp[-3].exprtype.value, yyvsp[-1].exprtype.value);
		  yyval.exprtype.original_code = ERROR_MARK; ;
    break;}
case 108:
#line 743 "objc/objc-parse.y"
{ yyval.exprtype.value = build_component_ref (yyvsp[-2].exprtype.value, yyvsp[0].ttype);
		  yyval.exprtype.original_code = ERROR_MARK; ;
    break;}
case 109:
#line 746 "objc/objc-parse.y"
{
                  tree expr = build_indirect_ref (yyvsp[-2].exprtype.value, "->");
		  yyval.exprtype.value = build_component_ref (expr, yyvsp[0].ttype);
		  yyval.exprtype.original_code = ERROR_MARK;
		;
    break;}
case 110:
#line 752 "objc/objc-parse.y"
{ yyval.exprtype.value = build_unary_op (POSTINCREMENT_EXPR, yyvsp[-1].exprtype.value, 0);
		  yyval.exprtype.original_code = ERROR_MARK; ;
    break;}
case 111:
#line 755 "objc/objc-parse.y"
{ yyval.exprtype.value = build_unary_op (POSTDECREMENT_EXPR, yyvsp[-1].exprtype.value, 0);
		  yyval.exprtype.original_code = ERROR_MARK; ;
    break;}
case 112:
#line 758 "objc/objc-parse.y"
{ yyval.exprtype.value = objc_build_message_expr (yyvsp[0].ttype);
		  yyval.exprtype.original_code = ERROR_MARK; ;
    break;}
case 113:
#line 761 "objc/objc-parse.y"
{ yyval.exprtype.value = objc_build_selector_expr (yyvsp[0].ttype);
		  yyval.exprtype.original_code = ERROR_MARK; ;
    break;}
case 114:
#line 764 "objc/objc-parse.y"
{ yyval.exprtype.value = objc_build_protocol_expr (yyvsp[0].ttype);
		  yyval.exprtype.original_code = ERROR_MARK; ;
    break;}
case 115:
#line 767 "objc/objc-parse.y"
{ yyval.exprtype.value = objc_build_encode_expr (yyvsp[0].ttype);
		  yyval.exprtype.original_code = ERROR_MARK; ;
    break;}
case 116:
#line 770 "objc/objc-parse.y"
{ yyval.exprtype.value = objc_build_string_object (yyvsp[0].ttype);
		  yyval.exprtype.original_code = ERROR_MARK; ;
    break;}
case 117:
#line 780 "objc/objc-parse.y"
{ yyval.ttype = build_component_ref (offsetof_base, yyvsp[0].ttype); ;
    break;}
case 118:
#line 782 "objc/objc-parse.y"
{ yyval.ttype = build_component_ref (yyvsp[-2].ttype, yyvsp[0].ttype); ;
    break;}
case 119:
#line 784 "objc/objc-parse.y"
{ yyval.ttype = build_array_ref (yyvsp[-3].ttype, yyvsp[-1].exprtype.value); ;
    break;}
case 122:
#line 797 "objc/objc-parse.y"
{ ;
    break;}
case 127:
#line 813 "objc/objc-parse.y"
{ POP_DECLSPEC_STACK; ;
    break;}
case 128:
#line 815 "objc/objc-parse.y"
{ POP_DECLSPEC_STACK; ;
    break;}
case 129:
#line 817 "objc/objc-parse.y"
{ shadow_tag_warned (finish_declspecs (yyvsp[-1].dsptype), 1);
		  pedwarn ("empty declaration"); ;
    break;}
case 130:
#line 820 "objc/objc-parse.y"
{ pedwarn ("empty declaration"); ;
    break;}
case 131:
#line 829 "objc/objc-parse.y"
{ ;
    break;}
case 132:
#line 837 "objc/objc-parse.y"
{ pending_xref_error ();
		  PUSH_DECLSPEC_STACK;
		  if (yyvsp[0].dsptype)
		    {
		      prefix_attributes = yyvsp[0].dsptype->attrs;
		      yyvsp[0].dsptype->attrs = NULL_TREE;
		      current_declspecs = yyvsp[0].dsptype;
		    }
		  else
		    {
		      prefix_attributes = NULL_TREE;
		      current_declspecs = build_null_declspecs ();
		    }
		  current_declspecs = finish_declspecs (current_declspecs);
		  all_prefix_attributes = prefix_attributes; ;
    break;}
case 133:
#line 858 "objc/objc-parse.y"
{ all_prefix_attributes = chainon (yyvsp[0].ttype, prefix_attributes); ;
    break;}
case 134:
#line 863 "objc/objc-parse.y"
{ POP_DECLSPEC_STACK; ;
    break;}
case 135:
#line 865 "objc/objc-parse.y"
{ POP_DECLSPEC_STACK; ;
    break;}
case 136:
#line 867 "objc/objc-parse.y"
{ POP_DECLSPEC_STACK; ;
    break;}
case 137:
#line 869 "objc/objc-parse.y"
{ POP_DECLSPEC_STACK; ;
    break;}
case 138:
#line 871 "objc/objc-parse.y"
{ shadow_tag (finish_declspecs (yyvsp[-1].dsptype)); ;
    break;}
case 139:
#line 873 "objc/objc-parse.y"
{ RESTORE_EXT_FLAGS (yyvsp[-1].itype); ;
    break;}
case 140:
#line 919 "objc/objc-parse.y"
{ yyval.dsptype = declspecs_add_qual (build_null_declspecs (), yyvsp[0].ttype); ;
    break;}
case 141:
#line 921 "objc/objc-parse.y"
{ yyval.dsptype = declspecs_add_qual (yyvsp[-1].dsptype, yyvsp[0].ttype); ;
    break;}
case 142:
#line 923 "objc/objc-parse.y"
{ yyval.dsptype = declspecs_add_qual (yyvsp[-1].dsptype, yyvsp[0].ttype); ;
    break;}
case 143:
#line 928 "objc/objc-parse.y"
{ yyval.dsptype = declspecs_add_attrs (yyvsp[-1].dsptype, yyvsp[0].ttype); ;
    break;}
case 144:
#line 933 "objc/objc-parse.y"
{ yyval.dsptype = declspecs_add_qual (yyvsp[-1].dsptype, yyvsp[0].ttype); ;
    break;}
case 145:
#line 935 "objc/objc-parse.y"
{ yyval.dsptype = declspecs_add_qual (yyvsp[-1].dsptype, yyvsp[0].ttype); ;
    break;}
case 146:
#line 940 "objc/objc-parse.y"
{ yyval.dsptype = declspecs_add_attrs (build_null_declspecs (), yyvsp[0].ttype); ;
    break;}
case 147:
#line 942 "objc/objc-parse.y"
{ yyval.dsptype = declspecs_add_attrs (yyvsp[-1].dsptype, yyvsp[0].ttype); ;
    break;}
case 148:
#line 947 "objc/objc-parse.y"
{ yyval.dsptype = declspecs_add_type (build_null_declspecs (), yyvsp[0].tstype); ;
    break;}
case 149:
#line 949 "objc/objc-parse.y"
{ yyval.dsptype = declspecs_add_qual (yyvsp[-1].dsptype, yyvsp[0].ttype); ;
    break;}
case 150:
#line 951 "objc/objc-parse.y"
{ yyval.dsptype = declspecs_add_qual (yyvsp[-1].dsptype, yyvsp[0].ttype); ;
    break;}
case 151:
#line 953 "objc/objc-parse.y"
{ yyval.dsptype = declspecs_add_type (yyvsp[-1].dsptype, yyvsp[0].tstype); ;
    break;}
case 152:
#line 955 "objc/objc-parse.y"
{ yyval.dsptype = declspecs_add_type (yyvsp[-1].dsptype, yyvsp[0].tstype); ;
    break;}
case 153:
#line 957 "objc/objc-parse.y"
{ yyval.dsptype = declspecs_add_type (yyvsp[-1].dsptype, yyvsp[0].tstype); ;
    break;}
case 154:
#line 959 "objc/objc-parse.y"
{ yyval.dsptype = declspecs_add_type (yyvsp[-1].dsptype, yyvsp[0].tstype); ;
    break;}
case 155:
#line 964 "objc/objc-parse.y"
{ yyval.dsptype = declspecs_add_type (build_null_declspecs (), yyvsp[0].tstype); ;
    break;}
case 156:
#line 966 "objc/objc-parse.y"
{ yyval.dsptype = declspecs_add_attrs (yyvsp[-1].dsptype, yyvsp[0].ttype); ;
    break;}
case 157:
#line 968 "objc/objc-parse.y"
{ yyval.dsptype = declspecs_add_type (yyvsp[-1].dsptype, yyvsp[0].tstype); ;
    break;}
case 158:
#line 970 "objc/objc-parse.y"
{ yyval.dsptype = declspecs_add_type (yyvsp[-1].dsptype, yyvsp[0].tstype); ;
    break;}
case 159:
#line 972 "objc/objc-parse.y"
{ yyval.dsptype = declspecs_add_type (yyvsp[-1].dsptype, yyvsp[0].tstype); ;
    break;}
case 160:
#line 974 "objc/objc-parse.y"
{ yyval.dsptype = declspecs_add_type (yyvsp[-1].dsptype, yyvsp[0].tstype); ;
    break;}
case 161:
#line 979 "objc/objc-parse.y"
{ yyval.dsptype = declspecs_add_qual (yyvsp[-1].dsptype, yyvsp[0].ttype); ;
    break;}
case 162:
#line 981 "objc/objc-parse.y"
{ yyval.dsptype = declspecs_add_qual (yyvsp[-1].dsptype, yyvsp[0].ttype); ;
    break;}
case 163:
#line 983 "objc/objc-parse.y"
{ yyval.dsptype = declspecs_add_type (yyvsp[-1].dsptype, yyvsp[0].tstype); ;
    break;}
case 164:
#line 985 "objc/objc-parse.y"
{ yyval.dsptype = declspecs_add_type (yyvsp[-1].dsptype, yyvsp[0].tstype); ;
    break;}
case 165:
#line 987 "objc/objc-parse.y"
{ yyval.dsptype = declspecs_add_type (yyvsp[-1].dsptype, yyvsp[0].tstype); ;
    break;}
case 166:
#line 989 "objc/objc-parse.y"
{ yyval.dsptype = declspecs_add_type (yyvsp[-1].dsptype, yyvsp[0].tstype); ;
    break;}
case 167:
#line 994 "objc/objc-parse.y"
{ yyval.dsptype = declspecs_add_attrs (yyvsp[-1].dsptype, yyvsp[0].ttype); ;
    break;}
case 168:
#line 996 "objc/objc-parse.y"
{ yyval.dsptype = declspecs_add_type (yyvsp[-1].dsptype, yyvsp[0].tstype); ;
    break;}
case 169:
#line 998 "objc/objc-parse.y"
{ yyval.dsptype = declspecs_add_type (yyvsp[-1].dsptype, yyvsp[0].tstype); ;
    break;}
case 170:
#line 1000 "objc/objc-parse.y"
{ yyval.dsptype = declspecs_add_type (yyvsp[-1].dsptype, yyvsp[0].tstype); ;
    break;}
case 171:
#line 1002 "objc/objc-parse.y"
{ yyval.dsptype = declspecs_add_type (yyvsp[-1].dsptype, yyvsp[0].tstype); ;
    break;}
case 172:
#line 1007 "objc/objc-parse.y"
{ yyval.dsptype = declspecs_add_scspec (build_null_declspecs (), yyvsp[0].ttype); ;
    break;}
case 173:
#line 1009 "objc/objc-parse.y"
{ yyval.dsptype = declspecs_add_qual (yyvsp[-1].dsptype, yyvsp[0].ttype); ;
    break;}
case 174:
#line 1011 "objc/objc-parse.y"
{ yyval.dsptype = declspecs_add_qual (yyvsp[-1].dsptype, yyvsp[0].ttype); ;
    break;}
case 175:
#line 1013 "objc/objc-parse.y"
{ yyval.dsptype = declspecs_add_scspec (yyvsp[-1].dsptype, yyvsp[0].ttype); ;
    break;}
case 176:
#line 1015 "objc/objc-parse.y"
{ yyval.dsptype = declspecs_add_scspec (yyvsp[-1].dsptype, yyvsp[0].ttype); ;
    break;}
case 177:
#line 1017 "objc/objc-parse.y"
{ yyval.dsptype = declspecs_add_scspec (yyvsp[-1].dsptype, yyvsp[0].ttype); ;
    break;}
case 178:
#line 1019 "objc/objc-parse.y"
{ yyval.dsptype = declspecs_add_scspec (yyvsp[-1].dsptype, yyvsp[0].ttype); ;
    break;}
case 179:
#line 1024 "objc/objc-parse.y"
{ yyval.dsptype = declspecs_add_attrs (yyvsp[-1].dsptype, yyvsp[0].ttype); ;
    break;}
case 180:
#line 1029 "objc/objc-parse.y"
{ yyval.dsptype = declspecs_add_qual (yyvsp[-1].dsptype, yyvsp[0].ttype); ;
    break;}
case 181:
#line 1031 "objc/objc-parse.y"
{ yyval.dsptype = declspecs_add_qual (yyvsp[-1].dsptype, yyvsp[0].ttype); ;
    break;}
case 182:
#line 1033 "objc/objc-parse.y"
{ yyval.dsptype = declspecs_add_scspec (yyvsp[-1].dsptype, yyvsp[0].ttype); ;
    break;}
case 183:
#line 1035 "objc/objc-parse.y"
{ yyval.dsptype = declspecs_add_scspec (yyvsp[-1].dsptype, yyvsp[0].ttype); ;
    break;}
case 184:
#line 1037 "objc/objc-parse.y"
{ yyval.dsptype = declspecs_add_scspec (yyvsp[-1].dsptype, yyvsp[0].ttype); ;
    break;}
case 185:
#line 1039 "objc/objc-parse.y"
{ yyval.dsptype = declspecs_add_scspec (yyvsp[-1].dsptype, yyvsp[0].ttype); ;
    break;}
case 186:
#line 1044 "objc/objc-parse.y"
{ yyval.dsptype = declspecs_add_attrs (yyvsp[-1].dsptype, yyvsp[0].ttype); ;
    break;}
case 187:
#line 1049 "objc/objc-parse.y"
{ yyval.dsptype = declspecs_add_qual (yyvsp[-1].dsptype, yyvsp[0].ttype); ;
    break;}
case 188:
#line 1051 "objc/objc-parse.y"
{ yyval.dsptype = declspecs_add_qual (yyvsp[-1].dsptype, yyvsp[0].ttype); ;
    break;}
case 189:
#line 1053 "objc/objc-parse.y"
{ yyval.dsptype = declspecs_add_type (yyvsp[-1].dsptype, yyvsp[0].tstype); ;
    break;}
case 190:
#line 1055 "objc/objc-parse.y"
{ yyval.dsptype = declspecs_add_type (yyvsp[-1].dsptype, yyvsp[0].tstype); ;
    break;}
case 191:
#line 1057 "objc/objc-parse.y"
{ yyval.dsptype = declspecs_add_type (yyvsp[-1].dsptype, yyvsp[0].tstype); ;
    break;}
case 192:
#line 1059 "objc/objc-parse.y"
{ yyval.dsptype = declspecs_add_type (yyvsp[-1].dsptype, yyvsp[0].tstype); ;
    break;}
case 193:
#line 1061 "objc/objc-parse.y"
{ yyval.dsptype = declspecs_add_scspec (yyvsp[-1].dsptype, yyvsp[0].ttype); ;
    break;}
case 194:
#line 1063 "objc/objc-parse.y"
{ yyval.dsptype = declspecs_add_scspec (yyvsp[-1].dsptype, yyvsp[0].ttype); ;
    break;}
case 195:
#line 1065 "objc/objc-parse.y"
{ yyval.dsptype = declspecs_add_scspec (yyvsp[-1].dsptype, yyvsp[0].ttype); ;
    break;}
case 196:
#line 1067 "objc/objc-parse.y"
{ yyval.dsptype = declspecs_add_scspec (yyvsp[-1].dsptype, yyvsp[0].ttype); ;
    break;}
case 197:
#line 1072 "objc/objc-parse.y"
{ yyval.dsptype = declspecs_add_attrs (yyvsp[-1].dsptype, yyvsp[0].ttype); ;
    break;}
case 198:
#line 1074 "objc/objc-parse.y"
{ yyval.dsptype = declspecs_add_type (yyvsp[-1].dsptype, yyvsp[0].tstype); ;
    break;}
case 199:
#line 1076 "objc/objc-parse.y"
{ yyval.dsptype = declspecs_add_type (yyvsp[-1].dsptype, yyvsp[0].tstype); ;
    break;}
case 200:
#line 1078 "objc/objc-parse.y"
{ yyval.dsptype = declspecs_add_type (yyvsp[-1].dsptype, yyvsp[0].tstype); ;
    break;}
case 201:
#line 1080 "objc/objc-parse.y"
{ yyval.dsptype = declspecs_add_type (yyvsp[-1].dsptype, yyvsp[0].tstype); ;
    break;}
case 202:
#line 1085 "objc/objc-parse.y"
{ yyval.dsptype = declspecs_add_qual (yyvsp[-1].dsptype, yyvsp[0].ttype); ;
    break;}
case 203:
#line 1087 "objc/objc-parse.y"
{ yyval.dsptype = declspecs_add_qual (yyvsp[-1].dsptype, yyvsp[0].ttype); ;
    break;}
case 204:
#line 1089 "objc/objc-parse.y"
{ yyval.dsptype = declspecs_add_type (yyvsp[-1].dsptype, yyvsp[0].tstype); ;
    break;}
case 205:
#line 1091 "objc/objc-parse.y"
{ yyval.dsptype = declspecs_add_type (yyvsp[-1].dsptype, yyvsp[0].tstype); ;
    break;}
case 206:
#line 1093 "objc/objc-parse.y"
{ yyval.dsptype = declspecs_add_type (yyvsp[-1].dsptype, yyvsp[0].tstype); ;
    break;}
case 207:
#line 1095 "objc/objc-parse.y"
{ yyval.dsptype = declspecs_add_type (yyvsp[-1].dsptype, yyvsp[0].tstype); ;
    break;}
case 208:
#line 1097 "objc/objc-parse.y"
{ yyval.dsptype = declspecs_add_scspec (yyvsp[-1].dsptype, yyvsp[0].ttype); ;
    break;}
case 209:
#line 1099 "objc/objc-parse.y"
{ yyval.dsptype = declspecs_add_scspec (yyvsp[-1].dsptype, yyvsp[0].ttype); ;
    break;}
case 210:
#line 1101 "objc/objc-parse.y"
{ yyval.dsptype = declspecs_add_scspec (yyvsp[-1].dsptype, yyvsp[0].ttype); ;
    break;}
case 211:
#line 1103 "objc/objc-parse.y"
{ yyval.dsptype = declspecs_add_scspec (yyvsp[-1].dsptype, yyvsp[0].ttype); ;
    break;}
case 212:
#line 1108 "objc/objc-parse.y"
{ yyval.dsptype = declspecs_add_attrs (yyvsp[-1].dsptype, yyvsp[0].ttype); ;
    break;}
case 213:
#line 1110 "objc/objc-parse.y"
{ yyval.dsptype = declspecs_add_type (yyvsp[-1].dsptype, yyvsp[0].tstype); ;
    break;}
case 214:
#line 1112 "objc/objc-parse.y"
{ yyval.dsptype = declspecs_add_type (yyvsp[-1].dsptype, yyvsp[0].tstype); ;
    break;}
case 215:
#line 1114 "objc/objc-parse.y"
{ yyval.dsptype = declspecs_add_type (yyvsp[-1].dsptype, yyvsp[0].tstype); ;
    break;}
case 216:
#line 1116 "objc/objc-parse.y"
{ yyval.dsptype = declspecs_add_type (yyvsp[-1].dsptype, yyvsp[0].tstype); ;
    break;}
case 273:
#line 1203 "objc/objc-parse.y"
{ yyval.dsptype = NULL; ;
    break;}
case 274:
#line 1205 "objc/objc-parse.y"
{ yyval.dsptype = yyvsp[0].dsptype; ;
    break;}
case 278:
#line 1240 "objc/objc-parse.y"
{ OBJC_NEED_RAW_IDENTIFIER (1);
		  yyval.tstype.kind = ctsk_resword;
		  yyval.tstype.spec = yyvsp[0].ttype; ;
    break;}
case 281:
#line 1252 "objc/objc-parse.y"
{ /* For a typedef name, record the meaning, not the name.
		     In case of `foo foo, bar;'.  */
		  yyval.tstype.kind = ctsk_typedef;
		  yyval.tstype.spec = lookup_name (yyvsp[0].ttype); ;
    break;}
case 282:
#line 1257 "objc/objc-parse.y"
{ yyval.tstype.kind = ctsk_objc;
		  yyval.tstype.spec = objc_get_protocol_qualified_type (yyvsp[-1].ttype, yyvsp[0].ttype); ;
    break;}
case 283:
#line 1260 "objc/objc-parse.y"
{ yyval.tstype.kind = ctsk_objc;
		  yyval.tstype.spec = objc_get_protocol_qualified_type (yyvsp[-1].ttype, yyvsp[0].ttype); ;
    break;}
case 284:
#line 1266 "objc/objc-parse.y"
{ yyval.tstype.kind = ctsk_objc;
		  yyval.tstype.spec = objc_get_protocol_qualified_type (NULL_TREE, yyvsp[0].ttype); ;
    break;}
case 285:
#line 1269 "objc/objc-parse.y"
{ skip_evaluation--;
		  in_typeof--;
		  if (TREE_CODE (yyvsp[-1].exprtype.value) == COMPONENT_REF
		      && DECL_C_BIT_FIELD (TREE_OPERAND (yyvsp[-1].exprtype.value, 1)))
		    error ("%<typeof%> applied to a bit-field");
		  yyval.tstype.kind = ctsk_typeof;
		  yyval.tstype.spec = TREE_TYPE (yyvsp[-1].exprtype.value);
		  pop_maybe_used (variably_modified_type_p (yyval.tstype.spec,
							    NULL_TREE)); ;
    break;}
case 286:
#line 1279 "objc/objc-parse.y"
{ skip_evaluation--;
		  in_typeof--;
		  yyval.tstype.kind = ctsk_typeof;
		  yyval.tstype.spec = groktypename (yyvsp[-1].typenametype);
		  pop_maybe_used (variably_modified_type_p (yyval.tstype.spec,
							    NULL_TREE)); ;
    break;}
case 291:
#line 1301 "objc/objc-parse.y"
{ yyval.ttype = start_decl (yyvsp[-3].dtrtype, current_declspecs, true,
					  chainon (yyvsp[-1].ttype, all_prefix_attributes));
		  if (!yyval.ttype)
		    yyval.ttype = error_mark_node;
		  start_init (yyval.ttype, yyvsp[-2].ttype, global_bindings_p ()); ;
    break;}
case 292:
#line 1308 "objc/objc-parse.y"
{ finish_init ();
		  if (yyvsp[-1].ttype != error_mark_node)
		    {
		      maybe_warn_string_init (TREE_TYPE (yyvsp[-1].ttype), yyvsp[0].exprtype);
		      finish_decl (yyvsp[-1].ttype, yyvsp[0].exprtype.value, yyvsp[-4].ttype);
		    }
		;
    break;}
case 293:
#line 1316 "objc/objc-parse.y"
{ tree d = start_decl (yyvsp[-2].dtrtype, current_declspecs, false,
				       chainon (yyvsp[0].ttype, all_prefix_attributes));
		  if (d)
		    finish_decl (d, NULL_TREE, yyvsp[-1].ttype);
                ;
    break;}
case 294:
#line 1325 "objc/objc-parse.y"
{ yyval.ttype = start_decl (yyvsp[-3].dtrtype, current_declspecs, true,
					  chainon (yyvsp[-1].ttype, all_prefix_attributes));
		  if (!yyval.ttype)
		    yyval.ttype = error_mark_node;
		  start_init (yyval.ttype, yyvsp[-2].ttype, global_bindings_p ()); ;
    break;}
case 295:
#line 1332 "objc/objc-parse.y"
{ finish_init ();
		  if (yyvsp[-1].ttype != error_mark_node)
		    {
		      maybe_warn_string_init (TREE_TYPE (yyvsp[-1].ttype), yyvsp[0].exprtype);
		      finish_decl (yyvsp[-1].ttype, yyvsp[0].exprtype.value, yyvsp[-4].ttype);
		    }
		;
    break;}
case 296:
#line 1340 "objc/objc-parse.y"
{ tree d = start_decl (yyvsp[-2].dtrtype, current_declspecs, false,
				       chainon (yyvsp[0].ttype, all_prefix_attributes));
		  if (d)
                    finish_decl (d, NULL_TREE, yyvsp[-1].ttype); ;
    break;}
case 297:
#line 1349 "objc/objc-parse.y"
{ yyval.ttype = NULL_TREE; ;
    break;}
case 298:
#line 1351 "objc/objc-parse.y"
{ yyval.ttype = yyvsp[0].ttype; ;
    break;}
case 299:
#line 1356 "objc/objc-parse.y"
{ yyval.ttype = yyvsp[0].ttype; ;
    break;}
case 300:
#line 1358 "objc/objc-parse.y"
{ yyval.ttype = chainon (yyvsp[-1].ttype, yyvsp[0].ttype); ;
    break;}
case 301:
#line 1364 "objc/objc-parse.y"
{ yyval.ttype = yyvsp[-3].ttype; ;
    break;}
case 302:
#line 1366 "objc/objc-parse.y"
{ yyval.ttype = NULL_TREE; ;
    break;}
case 303:
#line 1371 "objc/objc-parse.y"
{ yyval.ttype = yyvsp[0].ttype; ;
    break;}
case 304:
#line 1373 "objc/objc-parse.y"
{ yyval.ttype = chainon (yyvsp[-2].ttype, yyvsp[0].ttype); ;
    break;}
case 305:
#line 1378 "objc/objc-parse.y"
{ yyval.ttype = NULL_TREE; ;
    break;}
case 306:
#line 1380 "objc/objc-parse.y"
{ yyval.ttype = build_tree_list (yyvsp[0].ttype, NULL_TREE); ;
    break;}
case 307:
#line 1382 "objc/objc-parse.y"
{ yyval.ttype = build_tree_list (yyvsp[-3].ttype, build_tree_list (NULL_TREE, yyvsp[-1].ttype)); ;
    break;}
case 308:
#line 1384 "objc/objc-parse.y"
{ yyval.ttype = build_tree_list (yyvsp[-5].ttype, tree_cons (NULL_TREE, yyvsp[-3].ttype, yyvsp[-1].ttype)); ;
    break;}
case 309:
#line 1386 "objc/objc-parse.y"
{ yyval.ttype = build_tree_list (yyvsp[-3].ttype, yyvsp[-1].ttype); ;
    break;}
case 316:
#line 1408 "objc/objc-parse.y"
{ yyval.exprtype = yyvsp[0].exprtype; ;
    break;}
case 317:
#line 1410 "objc/objc-parse.y"
{ really_start_incremental_init (NULL_TREE); ;
    break;}
case 318:
#line 1412 "objc/objc-parse.y"
{ yyval.exprtype = pop_init_level (0); ;
    break;}
case 319:
#line 1414 "objc/objc-parse.y"
{ yyval.exprtype.value = error_mark_node; yyval.exprtype.original_code = ERROR_MARK; ;
    break;}
case 320:
#line 1420 "objc/objc-parse.y"
{ if (pedantic)
		    pedwarn ("ISO C forbids empty initializer braces"); ;
    break;}
case 324:
#line 1434 "objc/objc-parse.y"
{ if (pedantic && !flag_isoc99)
		    pedwarn ("ISO C90 forbids specifying subobject to initialize"); ;
    break;}
case 325:
#line 1437 "objc/objc-parse.y"
{ if (pedantic)
		    pedwarn ("obsolete use of designated initializer without %<=%>"); ;
    break;}
case 326:
#line 1440 "objc/objc-parse.y"
{ set_init_label (yyvsp[-1].ttype);
		  if (pedantic)
		    pedwarn ("obsolete use of designated initializer with %<:%>"); ;
    break;}
case 327:
#line 1444 "objc/objc-parse.y"
{;
    break;}
case 329:
#line 1450 "objc/objc-parse.y"
{ push_init_level (0); ;
    break;}
case 330:
#line 1452 "objc/objc-parse.y"
{ process_init_element (pop_init_level (0)); ;
    break;}
case 331:
#line 1454 "objc/objc-parse.y"
{ process_init_element (yyvsp[0].exprtype); ;
    break;}
case 335:
#line 1465 "objc/objc-parse.y"
{ set_init_label (yyvsp[0].ttype); ;
    break;}
case 337:
#line 1471 "objc/objc-parse.y"
{ set_init_index (yyvsp[-3].exprtype.value, yyvsp[-1].exprtype.value);
		  if (pedantic)
		    pedwarn ("ISO C forbids specifying range of elements to initialize"); ;
    break;}
case 338:
#line 1475 "objc/objc-parse.y"
{ set_init_index (yyvsp[-1].exprtype.value, NULL_TREE); ;
    break;}
case 339:
#line 1480 "objc/objc-parse.y"
{ if (pedantic)
		    pedwarn ("ISO C forbids nested functions");

		  push_function_context ();
		  if (!start_function (current_declspecs, yyvsp[0].dtrtype,
				       all_prefix_attributes))
		    {
		      pop_function_context ();
		      YYERROR1;
		    }
		;
    break;}
case 340:
#line 1492 "objc/objc-parse.y"
{ tree decl = current_function_decl;
		  DECL_SOURCE_LOCATION (decl) = yyvsp[0].location;
		  store_parm_decls (); ;
    break;}
case 341:
#line 1501 "objc/objc-parse.y"
{ tree decl = current_function_decl;
		  add_stmt (yyvsp[0].ttype);
		  finish_function ();
		  pop_function_context ();
		  add_stmt (build_stmt (DECL_EXPR, decl)); ;
    break;}
case 342:
#line 1510 "objc/objc-parse.y"
{ if (pedantic)
		    pedwarn ("ISO C forbids nested functions");

		  push_function_context ();
		  if (!start_function (current_declspecs, yyvsp[0].dtrtype,
				       all_prefix_attributes))
		    {
		      pop_function_context ();
		      YYERROR1;
		    }
		;
    break;}
case 343:
#line 1522 "objc/objc-parse.y"
{ tree decl = current_function_decl;
		  DECL_SOURCE_LOCATION (decl) = yyvsp[0].location;
		  store_parm_decls (); ;
    break;}
case 344:
#line 1531 "objc/objc-parse.y"
{ tree decl = current_function_decl;
		  add_stmt (yyvsp[0].ttype);
		  finish_function ();
		  pop_function_context ();
		  add_stmt (build_stmt (DECL_EXPR, decl)); ;
    break;}
case 347:
#line 1550 "objc/objc-parse.y"
{ yyval.dtrtype = yyvsp[-2].ttype ? build_attrs_declarator (yyvsp[-2].ttype, yyvsp[-1].dtrtype) : yyvsp[-1].dtrtype; ;
    break;}
case 348:
#line 1552 "objc/objc-parse.y"
{ yyval.dtrtype = build_function_declarator (yyvsp[0].arginfotype, yyvsp[-2].dtrtype); ;
    break;}
case 349:
#line 1554 "objc/objc-parse.y"
{ yyval.dtrtype = set_array_declarator_inner (yyvsp[0].dtrtype, yyvsp[-1].dtrtype, false); ;
    break;}
case 350:
#line 1556 "objc/objc-parse.y"
{ yyval.dtrtype = make_pointer_declarator (yyvsp[-1].dsptype, yyvsp[0].dtrtype); ;
    break;}
case 351:
#line 1558 "objc/objc-parse.y"
{ yyval.dtrtype = build_id_declarator (yyvsp[0].ttype); ;
    break;}
case 354:
#line 1572 "objc/objc-parse.y"
{ yyval.dtrtype = build_function_declarator (yyvsp[0].arginfotype, yyvsp[-2].dtrtype); ;
    break;}
case 355:
#line 1574 "objc/objc-parse.y"
{ yyval.dtrtype = set_array_declarator_inner (yyvsp[0].dtrtype, yyvsp[-1].dtrtype, false); ;
    break;}
case 356:
#line 1576 "objc/objc-parse.y"
{ yyval.dtrtype = build_id_declarator (yyvsp[0].ttype); ;
    break;}
case 357:
#line 1581 "objc/objc-parse.y"
{ yyval.dtrtype = build_function_declarator (yyvsp[0].arginfotype, yyvsp[-2].dtrtype); ;
    break;}
case 358:
#line 1583 "objc/objc-parse.y"
{ yyval.dtrtype = set_array_declarator_inner (yyvsp[0].dtrtype, yyvsp[-1].dtrtype, false); ;
    break;}
case 359:
#line 1585 "objc/objc-parse.y"
{ yyval.dtrtype = make_pointer_declarator (yyvsp[-1].dsptype, yyvsp[0].dtrtype); ;
    break;}
case 360:
#line 1587 "objc/objc-parse.y"
{ yyval.dtrtype = make_pointer_declarator (yyvsp[-1].dsptype, yyvsp[0].dtrtype); ;
    break;}
case 361:
#line 1589 "objc/objc-parse.y"
{ yyval.dtrtype = yyvsp[-2].ttype ? build_attrs_declarator (yyvsp[-2].ttype, yyvsp[-1].dtrtype) : yyvsp[-1].dtrtype; ;
    break;}
case 362:
#line 1597 "objc/objc-parse.y"
{ yyval.dtrtype = build_function_declarator (yyvsp[0].arginfotype, yyvsp[-2].dtrtype); ;
    break;}
case 363:
#line 1599 "objc/objc-parse.y"
{ yyval.dtrtype = yyvsp[-2].ttype ? build_attrs_declarator (yyvsp[-2].ttype, yyvsp[-1].dtrtype) : yyvsp[-1].dtrtype; ;
    break;}
case 364:
#line 1601 "objc/objc-parse.y"
{ yyval.dtrtype = make_pointer_declarator (yyvsp[-1].dsptype, yyvsp[0].dtrtype); ;
    break;}
case 365:
#line 1603 "objc/objc-parse.y"
{ yyval.dtrtype = set_array_declarator_inner (yyvsp[0].dtrtype, yyvsp[-1].dtrtype, false); ;
    break;}
case 366:
#line 1605 "objc/objc-parse.y"
{ yyval.dtrtype = build_id_declarator (yyvsp[0].ttype); ;
    break;}
case 367:
#line 1610 "objc/objc-parse.y"
{ yyval.ttype = NULL_TREE; ;
    break;}
case 368:
#line 1612 "objc/objc-parse.y"
{ yyval.ttype = yyvsp[0].ttype; ;
    break;}
case 369:
#line 1617 "objc/objc-parse.y"
{ yyval.ttype = NULL_TREE; ;
    break;}
case 370:
#line 1619 "objc/objc-parse.y"
{ yyval.ttype = yyvsp[0].ttype; ;
    break;}
case 371:
#line 1624 "objc/objc-parse.y"
{ yyval.ttype = NULL_TREE; ;
    break;}
case 372:
#line 1626 "objc/objc-parse.y"
{ yyval.ttype = yyvsp[0].ttype; ;
    break;}
case 373:
#line 1637 "objc/objc-parse.y"
{ yyval.ttype = start_struct (RECORD_TYPE, yyvsp[-1].ttype);
		  /* Start scope of tag before parsing components.  */
		;
    break;}
case 374:
#line 1641 "objc/objc-parse.y"
{ yyval.tstype.spec = finish_struct (yyvsp[-3].ttype, nreverse (yyvsp[-2].ttype),
					   chainon (yyvsp[-6].ttype, yyvsp[0].ttype));
		  yyval.tstype.kind = ctsk_tagdef; ;
    break;}
case 375:
#line 1645 "objc/objc-parse.y"
{ yyval.tstype.spec = finish_struct (start_struct (RECORD_TYPE,
							 NULL_TREE),
					   nreverse (yyvsp[-2].ttype), chainon (yyvsp[-4].ttype, yyvsp[0].ttype));
		  yyval.tstype.kind = ctsk_tagdef;
		;
    break;}
case 376:
#line 1651 "objc/objc-parse.y"
{ yyval.ttype = start_struct (UNION_TYPE, yyvsp[-1].ttype); ;
    break;}
case 377:
#line 1653 "objc/objc-parse.y"
{ yyval.tstype.spec = finish_struct (yyvsp[-3].ttype, nreverse (yyvsp[-2].ttype),
					   chainon (yyvsp[-6].ttype, yyvsp[0].ttype));
		  yyval.tstype.kind = ctsk_tagdef; ;
    break;}
case 378:
#line 1657 "objc/objc-parse.y"
{ yyval.tstype.spec = finish_struct (start_struct (UNION_TYPE,
							 NULL_TREE),
					   nreverse (yyvsp[-2].ttype), chainon (yyvsp[-4].ttype, yyvsp[0].ttype));
		  yyval.tstype.kind = ctsk_tagdef;
		;
    break;}
case 379:
#line 1663 "objc/objc-parse.y"
{ yyval.ttype = start_enum (yyvsp[-1].ttype); ;
    break;}
case 380:
#line 1665 "objc/objc-parse.y"
{ yyval.tstype.spec = finish_enum (yyvsp[-4].ttype, nreverse (yyvsp[-3].ttype),
					 chainon (yyvsp[-7].ttype, yyvsp[0].ttype));
		  yyval.tstype.kind = ctsk_tagdef; ;
    break;}
case 381:
#line 1669 "objc/objc-parse.y"
{ yyval.ttype = start_enum (NULL_TREE); ;
    break;}
case 382:
#line 1671 "objc/objc-parse.y"
{ yyval.tstype.spec = finish_enum (yyvsp[-4].ttype, nreverse (yyvsp[-3].ttype),
					 chainon (yyvsp[-6].ttype, yyvsp[0].ttype));
		  yyval.tstype.kind = ctsk_tagdef; ;
    break;}
case 383:
#line 1678 "objc/objc-parse.y"
{ yyval.tstype = parser_xref_tag (RECORD_TYPE, yyvsp[0].ttype); ;
    break;}
case 384:
#line 1680 "objc/objc-parse.y"
{ yyval.tstype = parser_xref_tag (UNION_TYPE, yyvsp[0].ttype); ;
    break;}
case 385:
#line 1682 "objc/objc-parse.y"
{ yyval.tstype = parser_xref_tag (ENUMERAL_TYPE, yyvsp[0].ttype);
		  /* In ISO C, enumerated types can be referred to
		     only if already defined.  */
		  if (pedantic && !COMPLETE_TYPE_P (yyval.tstype.spec))
		    pedwarn ("ISO C forbids forward references to %<enum%> types"); ;
    break;}
case 389:
#line 1697 "objc/objc-parse.y"
{ if (pedantic && !flag_isoc99)
		    pedwarn ("comma at end of enumerator list"); ;
    break;}
case 390:
#line 1715 "objc/objc-parse.y"
{ yyval.ttype = yyvsp[0].ttype; ;
    break;}
case 391:
#line 1717 "objc/objc-parse.y"
{ yyval.ttype = chainon (yyvsp[0].ttype, yyvsp[-1].ttype);
		  pedwarn ("no semicolon at end of struct or union"); ;
    break;}
case 392:
#line 1722 "objc/objc-parse.y"
{ yyval.ttype = NULL_TREE; ;
    break;}
case 393:
#line 1724 "objc/objc-parse.y"
{ yyval.ttype = chainon (yyvsp[-1].ttype, yyvsp[-2].ttype); ;
    break;}
case 394:
#line 1726 "objc/objc-parse.y"
{ if (pedantic)
		    pedwarn ("extra semicolon in struct or union specified"); ;
    break;}
case 395:
#line 1730 "objc/objc-parse.y"
{ yyval.ttype = nreverse (objc_get_class_ivars (yyvsp[-1].ttype)); ;
    break;}
case 396:
#line 1735 "objc/objc-parse.y"
{ yyval.ttype = yyvsp[0].ttype;
		  POP_DECLSPEC_STACK; ;
    break;}
case 397:
#line 1738 "objc/objc-parse.y"
{
		  /* Support for unnamed structs or unions as members of
		     structs or unions (which is [a] useful and [b] supports
		     MS P-SDK).  */
		  yyval.ttype = grokfield (build_id_declarator (NULL_TREE),
				  current_declspecs, NULL_TREE);
		  POP_DECLSPEC_STACK; ;
    break;}
case 398:
#line 1746 "objc/objc-parse.y"
{ yyval.ttype = yyvsp[0].ttype;
		  POP_DECLSPEC_STACK; ;
    break;}
case 399:
#line 1749 "objc/objc-parse.y"
{ if (pedantic)
		    pedwarn ("ISO C forbids member declarations with no members");
		  shadow_tag_warned (finish_declspecs (yyvsp[0].dsptype), pedantic);
		  yyval.ttype = NULL_TREE; ;
    break;}
case 400:
#line 1754 "objc/objc-parse.y"
{ yyval.ttype = NULL_TREE; ;
    break;}
case 401:
#line 1756 "objc/objc-parse.y"
{ yyval.ttype = yyvsp[0].ttype;
		  RESTORE_EXT_FLAGS (yyvsp[-1].itype); ;
    break;}
case 403:
#line 1763 "objc/objc-parse.y"
{ TREE_CHAIN (yyvsp[0].ttype) = yyvsp[-3].ttype; yyval.ttype = yyvsp[0].ttype; ;
    break;}
case 405:
#line 1769 "objc/objc-parse.y"
{ TREE_CHAIN (yyvsp[0].ttype) = yyvsp[-3].ttype; yyval.ttype = yyvsp[0].ttype; ;
    break;}
case 406:
#line 1774 "objc/objc-parse.y"
{ yyval.ttype = grokfield (yyvsp[-1].dtrtype, current_declspecs, NULL_TREE);
		  decl_attributes (&yyval.ttype,
				   chainon (yyvsp[0].ttype, all_prefix_attributes), 0); ;
    break;}
case 407:
#line 1778 "objc/objc-parse.y"
{ yyval.ttype = grokfield (yyvsp[-3].dtrtype, current_declspecs, yyvsp[-1].exprtype.value);
		  decl_attributes (&yyval.ttype,
				   chainon (yyvsp[0].ttype, all_prefix_attributes), 0); ;
    break;}
case 408:
#line 1782 "objc/objc-parse.y"
{ yyval.ttype = grokfield (build_id_declarator (NULL_TREE),
				  current_declspecs, yyvsp[-1].exprtype.value);
		  decl_attributes (&yyval.ttype,
				   chainon (yyvsp[0].ttype, all_prefix_attributes), 0); ;
    break;}
case 409:
#line 1790 "objc/objc-parse.y"
{ yyval.ttype = grokfield (yyvsp[-1].dtrtype, current_declspecs, NULL_TREE);
		  decl_attributes (&yyval.ttype,
				   chainon (yyvsp[0].ttype, all_prefix_attributes), 0); ;
    break;}
case 410:
#line 1794 "objc/objc-parse.y"
{ yyval.ttype = grokfield (yyvsp[-3].dtrtype, current_declspecs, yyvsp[-1].exprtype.value);
		  decl_attributes (&yyval.ttype,
				   chainon (yyvsp[0].ttype, all_prefix_attributes), 0); ;
    break;}
case 411:
#line 1798 "objc/objc-parse.y"
{ yyval.ttype = grokfield (build_id_declarator (NULL_TREE),
				  current_declspecs, yyvsp[-1].exprtype.value);
		  decl_attributes (&yyval.ttype,
				   chainon (yyvsp[0].ttype, all_prefix_attributes), 0); ;
    break;}
case 413:
#line 1810 "objc/objc-parse.y"
{ if (yyvsp[-2].ttype == error_mark_node)
		    yyval.ttype = yyvsp[-2].ttype;
		  else
		    TREE_CHAIN (yyvsp[0].ttype) = yyvsp[-2].ttype, yyval.ttype = yyvsp[0].ttype; ;
    break;}
case 414:
#line 1815 "objc/objc-parse.y"
{ yyval.ttype = error_mark_node; ;
    break;}
case 415:
#line 1821 "objc/objc-parse.y"
{ yyval.ttype = build_enumerator (yyvsp[0].ttype, NULL_TREE); ;
    break;}
case 416:
#line 1823 "objc/objc-parse.y"
{ yyval.ttype = build_enumerator (yyvsp[-2].ttype, yyvsp[0].exprtype.value); ;
    break;}
case 417:
#line 1828 "objc/objc-parse.y"
{ pending_xref_error ();
		  yyval.dsptype = finish_declspecs (yyvsp[0].dsptype); ;
    break;}
case 418:
#line 1831 "objc/objc-parse.y"
{ yyval.typenametype = XOBNEW (&parser_obstack, struct c_type_name);
		  yyval.typenametype->specs = yyvsp[-1].dsptype;
		  yyval.typenametype->declarator = yyvsp[0].dtrtype; ;
    break;}
case 419:
#line 1838 "objc/objc-parse.y"
{ yyval.dtrtype = build_id_declarator (NULL_TREE); ;
    break;}
case 421:
#line 1844 "objc/objc-parse.y"
{ yyval.parmtype = build_c_parm (current_declspecs, all_prefix_attributes,
				     build_id_declarator (NULL_TREE)); ;
    break;}
case 422:
#line 1847 "objc/objc-parse.y"
{ yyval.parmtype = build_c_parm (current_declspecs, all_prefix_attributes,
				     yyvsp[0].dtrtype); ;
    break;}
case 423:
#line 1850 "objc/objc-parse.y"
{ yyval.parmtype = build_c_parm (current_declspecs,
				     chainon (yyvsp[0].ttype, all_prefix_attributes),
				     yyvsp[-1].dtrtype); ;
    break;}
case 427:
#line 1863 "objc/objc-parse.y"
{ yyval.dtrtype = make_pointer_declarator (yyvsp[-1].dsptype, yyvsp[0].dtrtype); ;
    break;}
case 428:
#line 1868 "objc/objc-parse.y"
{ yyval.dtrtype = make_pointer_declarator
		    (yyvsp[0].dsptype, build_id_declarator (NULL_TREE)); ;
    break;}
case 429:
#line 1871 "objc/objc-parse.y"
{ yyval.dtrtype = make_pointer_declarator (yyvsp[-1].dsptype, yyvsp[0].dtrtype); ;
    break;}
case 430:
#line 1876 "objc/objc-parse.y"
{ yyval.dtrtype = yyvsp[-2].ttype ? build_attrs_declarator (yyvsp[-2].ttype, yyvsp[-1].dtrtype) : yyvsp[-1].dtrtype; ;
    break;}
case 431:
#line 1878 "objc/objc-parse.y"
{ yyval.dtrtype = build_function_declarator (yyvsp[0].arginfotype, yyvsp[-2].dtrtype); ;
    break;}
case 432:
#line 1880 "objc/objc-parse.y"
{ yyval.dtrtype = set_array_declarator_inner (yyvsp[0].dtrtype, yyvsp[-1].dtrtype, true); ;
    break;}
case 433:
#line 1882 "objc/objc-parse.y"
{ yyval.dtrtype = build_function_declarator
		    (yyvsp[0].arginfotype, build_id_declarator (NULL_TREE)); ;
    break;}
case 434:
#line 1885 "objc/objc-parse.y"
{ yyval.dtrtype = set_array_declarator_inner
		    (yyvsp[0].dtrtype, build_id_declarator (NULL_TREE), true); ;
    break;}
case 435:
#line 1893 "objc/objc-parse.y"
{ yyval.dtrtype = build_array_declarator (yyvsp[-1].exprtype.value, yyvsp[-2].dsptype, false, false); ;
    break;}
case 436:
#line 1895 "objc/objc-parse.y"
{ yyval.dtrtype = build_array_declarator (NULL_TREE, yyvsp[-1].dsptype, false, false); ;
    break;}
case 437:
#line 1897 "objc/objc-parse.y"
{ yyval.dtrtype = build_array_declarator (NULL_TREE, yyvsp[-2].dsptype, false, true); ;
    break;}
case 438:
#line 1899 "objc/objc-parse.y"
{ yyval.dtrtype = build_array_declarator (yyvsp[-1].exprtype.value, yyvsp[-2].dsptype, true, false); ;
    break;}
case 439:
#line 1902 "objc/objc-parse.y"
{ yyval.dtrtype = build_array_declarator (yyvsp[-1].exprtype.value, yyvsp[-3].dsptype, true, false); ;
    break;}
case 442:
#line 1915 "objc/objc-parse.y"
{
		  error ("label at end of compound statement");
		;
    break;}
case 450:
#line 1932 "objc/objc-parse.y"
{
		  if ((pedantic && !flag_isoc99)
		      || warn_declaration_after_statement)
		    pedwarn_c90 ("ISO C90 forbids mixed declarations and code");
		;
    break;}
case 465:
#line 1966 "objc/objc-parse.y"
{ yyval.ttype = c_begin_compound_stmt (flag_isoc99); ;
    break;}
case 467:
#line 1974 "objc/objc-parse.y"
{ if (pedantic)
		    pedwarn ("ISO C forbids label declarations"); ;
    break;}
case 470:
#line 1985 "objc/objc-parse.y"
{ tree link;
		  for (link = yyvsp[-1].ttype; link; link = TREE_CHAIN (link))
		    {
		      tree label = declare_label (TREE_VALUE (link));
		      C_DECLARED_LABEL_FLAG (label) = 1;
		      add_stmt (build_stmt (DECL_EXPR, label));
		    }
		;
    break;}
case 471:
#line 1999 "objc/objc-parse.y"
{ add_stmt (yyvsp[0].ttype); ;
    break;}
case 473:
#line 2003 "objc/objc-parse.y"
{ yyval.ttype = c_begin_compound_stmt (true); ;
    break;}
case 478:
#line 2017 "objc/objc-parse.y"
{ if (cur_stmt_list == NULL)
		    {
		      error ("braced-group within expression allowed "
			     "only inside a function");
		      YYERROR;
		    }
		  yyval.ttype = c_begin_stmt_expr ();
		;
    break;}
case 479:
#line 2028 "objc/objc-parse.y"
{ yyval.ttype = c_end_compound_stmt (yyvsp[-1].ttype, true); ;
    break;}
case 480:
#line 2036 "objc/objc-parse.y"
{ if (yychar == YYEMPTY)
		    yychar = YYLEX;
		  yyval.location = input_location; ;
    break;}
case 483:
#line 2049 "objc/objc-parse.y"
{ yyval.ttype = c_end_compound_stmt (yyvsp[-2].ttype, flag_isoc99); ;
    break;}
case 484:
#line 2054 "objc/objc-parse.y"
{
		  /* Two cases cannot and do not have line numbers associated:
		     If stmt is degenerate, such as "2;", then stmt is an
		     INTEGER_CST, which cannot hold line numbers.  But that's
		     ok because the statement will either be changed to a
		     MODIFY_EXPR during gimplification of the statement expr,
		     or discarded.  If stmt was compound, but without new
		     variables, we will have skipped the creation of a BIND
		     and will have a bare STATEMENT_LIST.  But that's ok
		     because (recursively) all of the component statments
		     should already have line numbers assigned.  */
		  if (yyvsp[0].ttype && EXPR_P (yyvsp[0].ttype))
		    SET_EXPR_LOCATION (yyvsp[0].ttype, yyvsp[-1].location);
		;
    break;}
case 485:
#line 2072 "objc/objc-parse.y"
{ if (yyvsp[0].ttype) SET_EXPR_LOCATION (yyvsp[0].ttype, yyvsp[-1].location); ;
    break;}
case 486:
#line 2076 "objc/objc-parse.y"
{ yyval.ttype = lang_hooks.truthvalue_conversion (yyvsp[0].exprtype.value);
		  if (EXPR_P (yyval.ttype))
		    SET_EXPR_LOCATION (yyval.ttype, yyvsp[-1].location); ;
    break;}
case 487:
#line 2089 "objc/objc-parse.y"
{ yyval.ttype = c_end_compound_stmt (yyvsp[-2].ttype, flag_isoc99); ;
    break;}
case 488:
#line 2094 "objc/objc-parse.y"
{ if (extra_warnings)
		    add_stmt (build (NOP_EXPR, NULL_TREE, NULL_TREE));
		  yyval.ttype = c_end_compound_stmt (yyvsp[-2].ttype, flag_isoc99); ;
    break;}
case 490:
#line 2103 "objc/objc-parse.y"
{ c_finish_if_stmt (yyvsp[-6].location, yyvsp[-4].ttype, yyvsp[-2].ttype, yyvsp[0].ttype, true);
		  add_stmt (c_end_compound_stmt (yyvsp[-7].ttype, flag_isoc99)); ;
    break;}
case 491:
#line 2107 "objc/objc-parse.y"
{ c_finish_if_stmt (yyvsp[-6].location, yyvsp[-4].ttype, yyvsp[-2].ttype, yyvsp[0].ttype, false);
		  add_stmt (c_end_compound_stmt (yyvsp[-7].ttype, flag_isoc99)); ;
    break;}
case 492:
#line 2111 "objc/objc-parse.y"
{ c_finish_if_stmt (yyvsp[-4].location, yyvsp[-2].ttype, yyvsp[0].ttype, NULL, true);
		  add_stmt (c_end_compound_stmt (yyvsp[-5].ttype, flag_isoc99)); ;
    break;}
case 493:
#line 2115 "objc/objc-parse.y"
{ c_finish_if_stmt (yyvsp[-4].location, yyvsp[-2].ttype, yyvsp[0].ttype, NULL, false);
		  add_stmt (c_end_compound_stmt (yyvsp[-5].ttype, flag_isoc99)); ;
    break;}
case 494:
#line 2120 "objc/objc-parse.y"
{ yyval.ttype = c_break_label; c_break_label = NULL; ;
    break;}
case 495:
#line 2124 "objc/objc-parse.y"
{ yyval.ttype = c_cont_label; c_cont_label = NULL; ;
    break;}
case 496:
#line 2130 "objc/objc-parse.y"
{ c_finish_loop (yyvsp[-6].location, yyvsp[-4].ttype, NULL, yyvsp[0].ttype, c_break_label,
				 c_cont_label, true);
		  add_stmt (c_end_compound_stmt (yyvsp[-7].ttype, flag_isoc99));
		  c_break_label = yyvsp[-2].ttype; c_cont_label = yyvsp[-1].ttype; ;
    break;}
case 497:
#line 2139 "objc/objc-parse.y"
{ yyval.ttype = c_break_label; c_break_label = yyvsp[-3].ttype; ;
    break;}
case 498:
#line 2140 "objc/objc-parse.y"
{ yyval.ttype = c_cont_label; c_cont_label = yyvsp[-3].ttype; ;
    break;}
case 499:
#line 2142 "objc/objc-parse.y"
{ c_finish_loop (yyvsp[-10].location, yyvsp[-2].ttype, NULL, yyvsp[-7].ttype, yyvsp[-5].ttype,
				 yyvsp[-4].ttype, false);
		  add_stmt (c_end_compound_stmt (yyvsp[-11].ttype, flag_isoc99)); ;
    break;}
case 500:
#line 2149 "objc/objc-parse.y"
{ yyval.ttype = NULL_TREE; ;
    break;}
case 501:
#line 2151 "objc/objc-parse.y"
{ yyval.ttype = yyvsp[0].exprtype.value; ;
    break;}
case 502:
#line 2156 "objc/objc-parse.y"
{ c_finish_expr_stmt (yyvsp[-1].ttype); ;
    break;}
case 503:
#line 2158 "objc/objc-parse.y"
{ check_for_loop_decls (); ;
    break;}
case 504:
#line 2162 "objc/objc-parse.y"
{ if (yyvsp[0].ttype)
		    {
		      yyval.ttype = lang_hooks.truthvalue_conversion (yyvsp[0].ttype);
		      if (EXPR_P (yyval.ttype))
			SET_EXPR_LOCATION (yyval.ttype, yyvsp[-1].location);
		    }
		  else
		    yyval.ttype = NULL;
		;
    break;}
case 505:
#line 2174 "objc/objc-parse.y"
{ yyval.ttype = c_process_expr_stmt (yyvsp[0].ttype); ;
    break;}
case 506:
#line 2181 "objc/objc-parse.y"
{ c_finish_loop (yyvsp[-7].location, yyvsp[-6].ttype, yyvsp[-4].ttype, yyvsp[0].ttype, c_break_label,
				 c_cont_label, true);
		  add_stmt (c_end_compound_stmt (yyvsp[-10].ttype, flag_isoc99));
		  c_break_label = yyvsp[-2].ttype; c_cont_label = yyvsp[-1].ttype; ;
    break;}
case 507:
#line 2189 "objc/objc-parse.y"
{ yyval.ttype = c_start_case (yyvsp[-1].exprtype.value); ;
    break;}
case 508:
#line 2191 "objc/objc-parse.y"
{ c_finish_case (yyvsp[0].ttype);
		  if (c_break_label)
		    add_stmt (build (LABEL_EXPR, void_type_node,
				     c_break_label));
		  c_break_label = yyvsp[-1].ttype;
		  add_stmt (c_end_compound_stmt (yyvsp[-6].ttype, flag_isoc99)); ;
    break;}
case 509:
#line 2202 "objc/objc-parse.y"
{ yyval.ttype = c_finish_expr_stmt (yyvsp[-1].exprtype.value); ;
    break;}
case 510:
#line 2204 "objc/objc-parse.y"
{ yyval.ttype = NULL_TREE; ;
    break;}
case 511:
#line 2206 "objc/objc-parse.y"
{ yyval.ttype = NULL_TREE; ;
    break;}
case 512:
#line 2208 "objc/objc-parse.y"
{ yyval.ttype = NULL_TREE; ;
    break;}
case 513:
#line 2210 "objc/objc-parse.y"
{ yyval.ttype = NULL_TREE; ;
    break;}
case 514:
#line 2212 "objc/objc-parse.y"
{ yyval.ttype = NULL_TREE; ;
    break;}
case 515:
#line 2214 "objc/objc-parse.y"
{ yyval.ttype = c_finish_bc_stmt (&c_break_label, true); ;
    break;}
case 516:
#line 2216 "objc/objc-parse.y"
{ yyval.ttype = c_finish_bc_stmt (&c_cont_label, false); ;
    break;}
case 517:
#line 2218 "objc/objc-parse.y"
{ yyval.ttype = c_finish_return (NULL_TREE); ;
    break;}
case 518:
#line 2220 "objc/objc-parse.y"
{ yyval.ttype = c_finish_return (yyvsp[-1].exprtype.value); ;
    break;}
case 520:
#line 2223 "objc/objc-parse.y"
{ yyval.ttype = c_finish_goto_label (yyvsp[-1].ttype); ;
    break;}
case 521:
#line 2225 "objc/objc-parse.y"
{ yyval.ttype = c_finish_goto_ptr (yyvsp[-1].exprtype.value); ;
    break;}
case 522:
#line 2227 "objc/objc-parse.y"
{ yyval.ttype = NULL_TREE; ;
    break;}
case 523:
#line 2229 "objc/objc-parse.y"
{ yyval.ttype = objc_build_throw_stmt (yyvsp[-1].exprtype.value); ;
    break;}
case 524:
#line 2231 "objc/objc-parse.y"
{ yyval.ttype = objc_build_throw_stmt (NULL_TREE); ;
    break;}
case 525:
#line 2233 "objc/objc-parse.y"
{ yyval.ttype = NULL_TREE; ;
    break;}
case 526:
#line 2235 "objc/objc-parse.y"
{ objc_build_synchronized (yyvsp[-4].location, yyvsp[-2].exprtype.value, yyvsp[0].ttype); yyval.ttype = NULL_TREE; ;
    break;}
case 527:
#line 2240 "objc/objc-parse.y"
{ objc_begin_catch_clause (grokparm (yyvsp[-1].parmtype)); ;
    break;}
case 528:
#line 2245 "objc/objc-parse.y"
{ objc_finish_catch_clause (); ;
    break;}
case 529:
#line 2247 "objc/objc-parse.y"
{ objc_finish_catch_clause (); ;
    break;}
case 532:
#line 2257 "objc/objc-parse.y"
{ objc_begin_try_stmt (yyvsp[-1].location, yyvsp[0].ttype); ;
    break;}
case 534:
#line 2263 "objc/objc-parse.y"
{ objc_build_finally_clause (yyvsp[-1].location, yyvsp[0].ttype); ;
    break;}
case 535:
#line 2268 "objc/objc-parse.y"
{ objc_finish_try_stmt (); ;
    break;}
case 536:
#line 2270 "objc/objc-parse.y"
{ objc_finish_try_stmt (); ;
    break;}
case 537:
#line 2276 "objc/objc-parse.y"
{ add_stmt (yyvsp[0].ttype); yyval.ttype = NULL_TREE; ;
    break;}
case 539:
#line 2285 "objc/objc-parse.y"
{ yyval.ttype = do_case (yyvsp[-1].exprtype.value, NULL_TREE); ;
    break;}
case 540:
#line 2287 "objc/objc-parse.y"
{ yyval.ttype = do_case (yyvsp[-3].exprtype.value, yyvsp[-1].exprtype.value); ;
    break;}
case 541:
#line 2289 "objc/objc-parse.y"
{ yyval.ttype = do_case (NULL_TREE, NULL_TREE); ;
    break;}
case 542:
#line 2291 "objc/objc-parse.y"
{ tree label = define_label (yyvsp[-2].location, yyvsp[-3].ttype);
		  if (label)
		    {
		      decl_attributes (&label, yyvsp[0].ttype, 0);
		      yyval.ttype = add_stmt (build_stmt (LABEL_EXPR, label));
		    }
		  else
		    yyval.ttype = NULL_TREE;
		;
    break;}
case 543:
#line 2309 "objc/objc-parse.y"
{ yyval.ttype = yyvsp[-2].ttype; ;
    break;}
case 544:
#line 2315 "objc/objc-parse.y"
{ yyval.ttype = NULL_TREE; ;
    break;}
case 546:
#line 2322 "objc/objc-parse.y"
{ assemble_asm (yyvsp[-1].ttype); ;
    break;}
case 547:
#line 2324 "objc/objc-parse.y"
{;
    break;}
case 548:
#line 2332 "objc/objc-parse.y"
{ yyval.ttype = build_asm_stmt (yyvsp[-6].ttype, yyvsp[-3].ttype); ;
    break;}
case 549:
#line 2338 "objc/objc-parse.y"
{ yyval.ttype = build_asm_expr (yyvsp[0].ttype, 0, 0, 0, true); ;
    break;}
case 550:
#line 2341 "objc/objc-parse.y"
{ yyval.ttype = build_asm_expr (yyvsp[-2].ttype, yyvsp[0].ttype, 0, 0, false); ;
    break;}
case 551:
#line 2344 "objc/objc-parse.y"
{ yyval.ttype = build_asm_expr (yyvsp[-4].ttype, yyvsp[-2].ttype, yyvsp[0].ttype, 0, false); ;
    break;}
case 552:
#line 2347 "objc/objc-parse.y"
{ yyval.ttype = build_asm_expr (yyvsp[-6].ttype, yyvsp[-4].ttype, yyvsp[-2].ttype, yyvsp[0].ttype, false); ;
    break;}
case 553:
#line 2354 "objc/objc-parse.y"
{ yyval.ttype = 0; ;
    break;}
case 554:
#line 2356 "objc/objc-parse.y"
{ if (yyvsp[0].ttype != ridpointers[RID_VOLATILE])
		    {
		      warning ("%E qualifier ignored on asm", yyvsp[0].ttype);
		      yyval.ttype = 0;
		    }
		  else
		    yyval.ttype = yyvsp[0].ttype;
		;
    break;}
case 555:
#line 2369 "objc/objc-parse.y"
{ yyval.ttype = NULL_TREE; ;
    break;}
case 558:
#line 2376 "objc/objc-parse.y"
{ yyval.ttype = chainon (yyvsp[-2].ttype, yyvsp[0].ttype); ;
    break;}
case 559:
#line 2382 "objc/objc-parse.y"
{ yyval.ttype = build_tree_list (build_tree_list (NULL_TREE, yyvsp[-5].ttype),
					yyvsp[-2].exprtype.value); ;
    break;}
case 560:
#line 2386 "objc/objc-parse.y"
{ yyvsp[-7].ttype = build_string (IDENTIFIER_LENGTH (yyvsp[-7].ttype),
				     IDENTIFIER_POINTER (yyvsp[-7].ttype));
		  yyval.ttype = build_tree_list (build_tree_list (yyvsp[-7].ttype, yyvsp[-5].ttype), yyvsp[-2].exprtype.value); ;
    break;}
case 561:
#line 2393 "objc/objc-parse.y"
{ yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, NULL_TREE); ;
    break;}
case 562:
#line 2395 "objc/objc-parse.y"
{ yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-2].ttype); ;
    break;}
case 563:
#line 2401 "objc/objc-parse.y"
{ if (TYPE_MAIN_VARIANT (TREE_TYPE (TREE_TYPE (yyvsp[0].ttype)))
		      != char_type_node)
		    {
		      error ("wide string literal in %<asm%>");
		      yyval.ttype = build_string (1, "");
		    }
		  else
		    yyval.ttype = yyvsp[0].ttype; ;
    break;}
case 564:
#line 2412 "objc/objc-parse.y"
{ c_lex_string_translate = 0; ;
    break;}
case 565:
#line 2416 "objc/objc-parse.y"
{ c_lex_string_translate = 1; ;
    break;}
case 566:
#line 2427 "objc/objc-parse.y"
{ push_scope ();
		  declare_parm_level (); ;
    break;}
case 567:
#line 2430 "objc/objc-parse.y"
{ yyval.arginfotype = yyvsp[0].arginfotype;
		  pop_scope (); ;
    break;}
case 569:
#line 2437 "objc/objc-parse.y"
{ mark_forward_parm_decls (); ;
    break;}
case 570:
#line 2439 "objc/objc-parse.y"
{ /* Dummy action so attributes are in known place
		     on parser stack.  */ ;
    break;}
case 571:
#line 2442 "objc/objc-parse.y"
{ yyval.arginfotype = yyvsp[0].arginfotype; ;
    break;}
case 572:
#line 2444 "objc/objc-parse.y"
{ yyval.arginfotype = XOBNEW (&parser_obstack, struct c_arg_info);
		  yyval.arginfotype->parms = 0;
		  yyval.arginfotype->tags = 0;
		  yyval.arginfotype->types = 0;
		  yyval.arginfotype->others = 0; ;
    break;}
case 573:
#line 2454 "objc/objc-parse.y"
{ yyval.arginfotype = XOBNEW (&parser_obstack, struct c_arg_info);
		  yyval.arginfotype->parms = 0;
		  yyval.arginfotype->tags = 0;
		  yyval.arginfotype->types = 0;
		  yyval.arginfotype->others = 0; ;
    break;}
case 574:
#line 2460 "objc/objc-parse.y"
{ yyval.arginfotype = XOBNEW (&parser_obstack, struct c_arg_info);
		  yyval.arginfotype->parms = 0;
		  yyval.arginfotype->tags = 0;
		  yyval.arginfotype->others = 0;
		  /* Suppress -Wold-style-definition for this case.  */
		  yyval.arginfotype->types = error_mark_node;
		  error ("ISO C requires a named argument before %<...%>");
		;
    break;}
case 575:
#line 2469 "objc/objc-parse.y"
{ yyval.arginfotype = get_parm_info (/*ellipsis=*/false); ;
    break;}
case 576:
#line 2471 "objc/objc-parse.y"
{ yyval.arginfotype = get_parm_info (/*ellipsis=*/true); ;
    break;}
case 577:
#line 2476 "objc/objc-parse.y"
{ push_parm_decl (yyvsp[0].parmtype); ;
    break;}
case 578:
#line 2478 "objc/objc-parse.y"
{ push_parm_decl (yyvsp[0].parmtype); ;
    break;}
case 579:
#line 2485 "objc/objc-parse.y"
{ yyval.parmtype = build_c_parm (current_declspecs,
				     chainon (yyvsp[0].ttype, all_prefix_attributes), yyvsp[-1].dtrtype);
		  POP_DECLSPEC_STACK; ;
    break;}
case 580:
#line 2489 "objc/objc-parse.y"
{ yyval.parmtype = build_c_parm (current_declspecs,
				     chainon (yyvsp[0].ttype, all_prefix_attributes), yyvsp[-1].dtrtype);
		  POP_DECLSPEC_STACK; ;
    break;}
case 581:
#line 2493 "objc/objc-parse.y"
{ yyval.parmtype = yyvsp[0].parmtype;
		  POP_DECLSPEC_STACK; ;
    break;}
case 582:
#line 2496 "objc/objc-parse.y"
{ yyval.parmtype = build_c_parm (current_declspecs,
				     chainon (yyvsp[0].ttype, all_prefix_attributes), yyvsp[-1].dtrtype);
		  POP_DECLSPEC_STACK; ;
    break;}
case 583:
#line 2501 "objc/objc-parse.y"
{ yyval.parmtype = yyvsp[0].parmtype;
		  POP_DECLSPEC_STACK; ;
    break;}
case 584:
#line 2509 "objc/objc-parse.y"
{ yyval.parmtype = build_c_parm (current_declspecs,
				     chainon (yyvsp[0].ttype, all_prefix_attributes), yyvsp[-1].dtrtype);
		  POP_DECLSPEC_STACK; ;
    break;}
case 585:
#line 2513 "objc/objc-parse.y"
{ yyval.parmtype = build_c_parm (current_declspecs,
				     chainon (yyvsp[0].ttype, all_prefix_attributes), yyvsp[-1].dtrtype);
		  POP_DECLSPEC_STACK; ;
    break;}
case 586:
#line 2517 "objc/objc-parse.y"
{ yyval.parmtype = yyvsp[0].parmtype;
		  POP_DECLSPEC_STACK; ;
    break;}
case 587:
#line 2520 "objc/objc-parse.y"
{ yyval.parmtype = build_c_parm (current_declspecs,
				     chainon (yyvsp[0].ttype, all_prefix_attributes), yyvsp[-1].dtrtype);
		  POP_DECLSPEC_STACK; ;
    break;}
case 588:
#line 2525 "objc/objc-parse.y"
{ yyval.parmtype = yyvsp[0].parmtype;
		  POP_DECLSPEC_STACK; ;
    break;}
case 589:
#line 2531 "objc/objc-parse.y"
{ prefix_attributes = chainon (prefix_attributes, yyvsp[-3].ttype);
		  all_prefix_attributes = prefix_attributes; ;
    break;}
case 590:
#line 2540 "objc/objc-parse.y"
{ push_scope ();
		  declare_parm_level (); ;
    break;}
case 591:
#line 2543 "objc/objc-parse.y"
{ yyval.arginfotype = yyvsp[0].arginfotype;
		  pop_scope (); ;
    break;}
case 593:
#line 2550 "objc/objc-parse.y"
{ yyval.arginfotype = XOBNEW (&parser_obstack, struct c_arg_info);
		  yyval.arginfotype->parms = 0;
		  yyval.arginfotype->tags = 0;
		  yyval.arginfotype->types = yyvsp[-1].ttype;
		  yyval.arginfotype->others = 0;

		  /* Make sure we have a parmlist after attributes.  */
		  if (yyvsp[-3].ttype != 0)
		    YYERROR1;
		;
    break;}
case 594:
#line 2565 "objc/objc-parse.y"
{ yyval.ttype = build_tree_list (NULL_TREE, yyvsp[0].ttype); ;
    break;}
case 595:
#line 2567 "objc/objc-parse.y"
{ yyval.ttype = chainon (yyvsp[-2].ttype, build_tree_list (NULL_TREE, yyvsp[0].ttype)); ;
    break;}
case 596:
#line 2573 "objc/objc-parse.y"
{ yyval.ttype = build_tree_list (NULL_TREE, yyvsp[0].ttype); ;
    break;}
case 597:
#line 2575 "objc/objc-parse.y"
{ yyval.ttype = chainon (yyvsp[-2].ttype, build_tree_list (NULL_TREE, yyvsp[0].ttype)); ;
    break;}
case 598:
#line 2580 "objc/objc-parse.y"
{ yyval.itype = SAVE_EXT_FLAGS ();
		  pedantic = 0;
		  warn_pointer_arith = 0;
		  warn_traditional = 0;
		  flag_iso = 0; ;
    break;}
case 604:
#line 2596 "objc/objc-parse.y"
{
		  objc_finish_implementation ();
		;
    break;}
case 605:
#line 2604 "objc/objc-parse.y"
{ yyval.ttype = build_tree_list (NULL_TREE, yyvsp[0].ttype); ;
    break;}
case 606:
#line 2606 "objc/objc-parse.y"
{ yyval.ttype = chainon (yyvsp[-2].ttype, build_tree_list (NULL_TREE, yyvsp[0].ttype)); ;
    break;}
case 607:
#line 2611 "objc/objc-parse.y"
{
		  objc_declare_class (yyvsp[-1].ttype);
		;
    break;}
case 608:
#line 2618 "objc/objc-parse.y"
{
		  objc_declare_alias (yyvsp[-2].ttype, yyvsp[-1].ttype);
		;
    break;}
case 609:
#line 2624 "objc/objc-parse.y"
{ yyval.ttype = yyvsp[0].ttype; ;
    break;}
case 610:
#line 2625 "objc/objc-parse.y"
{ yyval.ttype = NULL_TREE; ;
    break;}
case 613:
#line 2635 "objc/objc-parse.y"
{
		  objc_start_class_interface (yyvsp[-2].ttype, yyvsp[-1].ttype, yyvsp[0].ttype);
		;
    break;}
case 614:
#line 2639 "objc/objc-parse.y"
{
		  objc_continue_interface ();
		;
    break;}
case 615:
#line 2643 "objc/objc-parse.y"
{
		  objc_finish_interface ();
		;
    break;}
case 616:
#line 2648 "objc/objc-parse.y"
{
		  objc_start_class_implementation (yyvsp[-1].ttype, yyvsp[0].ttype);
		;
    break;}
case 617:
#line 2652 "objc/objc-parse.y"
{
		  objc_continue_implementation ();
		;
    break;}
case 618:
#line 2657 "objc/objc-parse.y"
{
		  objc_start_category_interface (yyvsp[-4].ttype, yyvsp[-2].ttype, yyvsp[0].ttype);
		;
    break;}
case 619:
#line 2661 "objc/objc-parse.y"
{
		  objc_finish_interface ();
		;
    break;}
case 620:
#line 2666 "objc/objc-parse.y"
{
		  objc_start_category_implementation (yyvsp[-3].ttype, yyvsp[-1].ttype);
		;
    break;}
case 621:
#line 2673 "objc/objc-parse.y"
{
		  objc_pq_context = 1;
		  objc_start_protocol (yyvsp[-1].ttype, yyvsp[0].ttype);
		;
    break;}
case 622:
#line 2678 "objc/objc-parse.y"
{
		  objc_pq_context = 0;
		  objc_finish_interface ();
		;
    break;}
case 623:
#line 2686 "objc/objc-parse.y"
{
		  objc_declare_protocols (yyvsp[-1].ttype);
		;
    break;}
case 624:
#line 2693 "objc/objc-parse.y"
{
		  yyval.ttype = NULL_TREE;
		;
    break;}
case 626:
#line 2701 "objc/objc-parse.y"
{
		  if (yyvsp[-2].code == LT_EXPR && yyvsp[0].code == GT_EXPR)
		    yyval.ttype = yyvsp[-1].ttype;
		  else
		    YYERROR1;
		;
    break;}
case 630:
#line 2716 "objc/objc-parse.y"
{ objc_set_visibility (2); ;
    break;}
case 631:
#line 2717 "objc/objc-parse.y"
{ objc_set_visibility (0); ;
    break;}
case 632:
#line 2718 "objc/objc-parse.y"
{ objc_set_visibility (1); ;
    break;}
case 635:
#line 2725 "objc/objc-parse.y"
{
		  if (pedantic)
		    pedwarn ("extra semicolon in struct or union specified");
		;
    break;}
case 636:
#line 2733 "objc/objc-parse.y"
{
		  /* Comma-separated ivars are chained together in
		     reverse order; add them one by one.  */
		  tree ivar = nreverse (yyvsp[0].ttype);

		  for (; ivar; ivar = TREE_CHAIN (ivar))
		    objc_add_instance_variable (copy_node (ivar));
		;
    break;}
case 638:
#line 2746 "objc/objc-parse.y"
{
		  if (pedantic)
		    pedwarn ("extra semicolon in method definition specified");
		;
    break;}
case 641:
#line 2759 "objc/objc-parse.y"
{
		  objc_set_method_type (yyvsp[0].code);
		  objc_pq_context = 1;
		;
    break;}
case 642:
#line 2764 "objc/objc-parse.y"
{
		  objc_pq_context = 0;
		  objc_start_method_definition (yyvsp[-1].ttype);
		;
    break;}
case 643:
#line 2769 "objc/objc-parse.y"
{
		  objc_finish_method_definition (current_function_decl);
		;
    break;}
case 646:
#line 2781 "objc/objc-parse.y"
{ yyval.ttype = NULL_TREE; ;
    break;}
case 650:
#line 2791 "objc/objc-parse.y"
{
		  objc_set_method_type (yyvsp[0].code);
		  /* Remember protocol qualifiers in prototypes.  */
		  objc_pq_context = 1;
		;
    break;}
case 651:
#line 2797 "objc/objc-parse.y"
{
		  /* Forget protocol qualifiers here.  */
		  objc_pq_context = 0;
		  objc_add_method_declaration (yyvsp[0].ttype);
		;
    break;}
case 653:
#line 2807 "objc/objc-parse.y"
{
		  yyval.ttype = objc_build_method_signature (yyvsp[-2].ttype, yyvsp[0].ttype, NULL_TREE);
		;
    break;}
case 654:
#line 2812 "objc/objc-parse.y"
{
		  yyval.ttype = objc_build_method_signature (NULL_TREE, yyvsp[0].ttype, NULL_TREE);
		;
    break;}
case 655:
#line 2817 "objc/objc-parse.y"
{
		  yyval.ttype = objc_build_method_signature (yyvsp[-3].ttype, yyvsp[-1].ttype, yyvsp[0].ttype);
		;
    break;}
case 656:
#line 2822 "objc/objc-parse.y"
{
		  yyval.ttype = objc_build_method_signature (NULL_TREE, yyvsp[-1].ttype, yyvsp[0].ttype);
		;
    break;}
case 657:
#line 2832 "objc/objc-parse.y"
{
		  TREE_OVERFLOW (yyval.ttype) = yyvsp[0].itype;
		;
    break;}
case 658:
#line 2839 "objc/objc-parse.y"
{
		  yyval.ttype = make_node (TREE_LIST);
		;
    break;}
case 659:
#line 2843 "objc/objc-parse.y"
{
		  yyval.ttype = chainon (yyvsp[-2].ttype, build_tree_list (NULL_TREE,
						     grokparm (yyvsp[0].parmtype)));
		;
    break;}
case 660:
#line 2851 "objc/objc-parse.y"
{
		  yyval.itype = 0;
		;
    break;}
case 661:
#line 2855 "objc/objc-parse.y"
{
		  yyval.itype = 1;
		;
    break;}
case 664:
#line 2868 "objc/objc-parse.y"
{
		  yyval.ttype = chainon (yyvsp[-1].ttype, yyvsp[0].ttype);
		;
    break;}
case 692:
#line 2893 "objc/objc-parse.y"
{
		  yyval.ttype = chainon (yyvsp[-1].ttype, build_tree_list (NULL_TREE, yyvsp[0].ttype));
		;
    break;}
case 693:
#line 2897 "objc/objc-parse.y"
{
		  yyval.ttype = NULL_TREE;
		;
    break;}
case 694:
#line 2904 "objc/objc-parse.y"
{
		  yyval.ttype = build_tree_list (yyvsp[-1].ttype, groktypename (yyvsp[0].typenametype));
		;
    break;}
case 695:
#line 2908 "objc/objc-parse.y"
{
		  yyval.ttype = build_tree_list (yyvsp[0].ttype, NULL_TREE);
		;
    break;}
case 696:
#line 2915 "objc/objc-parse.y"
{
		  yyval.ttype = objc_build_keyword_decl (yyvsp[-5].ttype, yyvsp[-2].ttype, yyvsp[0].ttype);
		;
    break;}
case 697:
#line 2920 "objc/objc-parse.y"
{
		  yyval.ttype = objc_build_keyword_decl (yyvsp[-2].ttype, NULL_TREE, yyvsp[0].ttype);
		;
    break;}
case 698:
#line 2925 "objc/objc-parse.y"
{
		  yyval.ttype = objc_build_keyword_decl (NULL_TREE, yyvsp[-2].ttype, yyvsp[0].ttype);
		;
    break;}
case 699:
#line 2930 "objc/objc-parse.y"
{
		  yyval.ttype = objc_build_keyword_decl (NULL_TREE, NULL_TREE, yyvsp[0].ttype);
		;
    break;}
case 703:
#line 2943 "objc/objc-parse.y"
{
		  yyval.ttype = chainon (yyvsp[-1].ttype, yyvsp[0].ttype);
		;
    break;}
case 704:
#line 2951 "objc/objc-parse.y"
{
		  if (TREE_CHAIN (yyvsp[0].ttype) == NULL_TREE)
		    /* just return the expr., remove a level of indirection */
		    yyval.ttype = TREE_VALUE (yyvsp[0].ttype);
                  else
		    /* we have a comma expr., we will collapse later */
		    yyval.ttype = yyvsp[0].ttype;
		;
    break;}
case 705:
#line 2963 "objc/objc-parse.y"
{
		  yyval.ttype = build_tree_list (yyvsp[-2].ttype, yyvsp[0].ttype);
		;
    break;}
case 706:
#line 2967 "objc/objc-parse.y"
{
		  yyval.ttype = build_tree_list (NULL_TREE, yyvsp[0].ttype);
		;
    break;}
case 707:
#line 2974 "objc/objc-parse.y"
{ yyval.ttype = yyvsp[0].exprtype.value; ;
    break;}
case 708:
#line 2976 "objc/objc-parse.y"
{
		  yyval.ttype = objc_get_class_reference (yyvsp[0].ttype);
		;
    break;}
case 709:
#line 2980 "objc/objc-parse.y"
{
		  yyval.ttype = objc_get_class_reference (yyvsp[0].ttype);
		;
    break;}
case 710:
#line 2987 "objc/objc-parse.y"
{ yyval.ttype = build_tree_list (yyvsp[-2].ttype, yyvsp[-1].ttype); ;
    break;}
case 714:
#line 2998 "objc/objc-parse.y"
{
		  yyval.ttype = chainon (yyvsp[-1].ttype, yyvsp[0].ttype);
		;
    break;}
case 715:
#line 3005 "objc/objc-parse.y"
{
		  yyval.ttype = build_tree_list (yyvsp[-1].ttype, NULL_TREE);
		;
    break;}
case 716:
#line 3009 "objc/objc-parse.y"
{
		  yyval.ttype = build_tree_list (NULL_TREE, NULL_TREE);
		;
    break;}
case 717:
#line 3016 "objc/objc-parse.y"
{
		  yyval.ttype = yyvsp[-1].ttype;
		;
    break;}
case 718:
#line 3023 "objc/objc-parse.y"
{
		  yyval.ttype = yyvsp[-1].ttype;
		;
    break;}
case 719:
#line 3032 "objc/objc-parse.y"
{
		  yyval.ttype = groktypename (yyvsp[-1].typenametype);
		;
    break;}
}

#line 705 "/usr/share/bison/bison.simple"


  yyvsp -= yylen;
  yyssp -= yylen;
#if YYLSP_NEEDED
  yylsp -= yylen;
#endif

#if YYDEBUG
  if (yydebug)
    {
      short *yyssp1 = yyss - 1;
      YYFPRINTF (stderr, "state stack now");
      while (yyssp1 != yyssp)
	YYFPRINTF (stderr, " %d", *++yyssp1);
      YYFPRINTF (stderr, "\n");
    }
#endif

  *++yyvsp = yyval;
#if YYLSP_NEEDED
  *++yylsp = yyloc;
#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 |
`------------------------------------*/
yyerrlab:
  /* If not already recovering from an error, report this error.  */
  if (!yyerrstatus)
    {
      ++yynerrs;

#ifdef YYERROR_VERBOSE
      yyn = yypact[yystate];

      if (yyn > YYFLAG && yyn < YYLAST)
	{
	  YYSIZE_T yysize = 0;
	  char *yymsg;
	  int yyx, yycount;

	  yycount = 0;
	  /* Start YYX at -YYN if negative to avoid negative indexes in
	     YYCHECK.  */
	  for (yyx = yyn < 0 ? -yyn : 0;
	       yyx < (int) (sizeof (yytname) / sizeof (char *)); yyx++)
	    if (yycheck[yyx + yyn] == yyx)
	      yysize += yystrlen (yytname[yyx]) + 15, yycount++;
	  yysize += yystrlen ("parse error, unexpected ") + 1;
	  yysize += yystrlen (yytname[YYTRANSLATE (yychar)]);
	  yymsg = (char *) YYSTACK_ALLOC (yysize);
	  if (yymsg != 0)
	    {
	      char *yyp = yystpcpy (yymsg, "parse error, unexpected ");
	      yyp = yystpcpy (yyp, yytname[YYTRANSLATE (yychar)]);

	      if (yycount < 5)
		{
		  yycount = 0;
		  for (yyx = yyn < 0 ? -yyn : 0;
		       yyx < (int) (sizeof (yytname) / sizeof (char *));
		       yyx++)
		    if (yycheck[yyx + yyn] == yyx)
		      {
			const char *yyq = ! yycount ? ", expecting " : " or ";
			yyp = yystpcpy (yyp, yyq);
			yyp = yystpcpy (yyp, yytname[yyx]);
			yycount++;
		      }
		}
	      yyerror (yymsg);
	      YYSTACK_FREE (yymsg);
	    }
	  else
	    yyerror ("parse error; also virtual memory exhausted");
	}
      else
#endif /* defined (YYERROR_VERBOSE) */
	yyerror ("parse error");
    }
  goto yyerrlab1;


/*--------------------------------------------------.
| yyerrlab1 -- error raised explicitly by an action |
`--------------------------------------------------*/
yyerrlab1:
  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;
      YYDPRINTF ((stderr, "Discarding token %d (%s).\n",
		  yychar, yytname[yychar1]));
      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.                                                       |
`-------------------------------------------------------------------*/
yyerrdefault:
#if 0
  /* This is wrong; only states that explicitly want error tokens
     should shift them.  */

  /* If its default is to accept any token, ok.  Otherwise pop it.  */
  yyn = yydefact[yystate];
  if (yyn)
    goto yydefault;
#endif


/*---------------------------------------------------------------.
| yyerrpop -- pop the current state because it cannot handle the |
| error token                                                    |
`---------------------------------------------------------------*/
yyerrpop:
  if (yyssp == yyss)
    YYABORT;
  yyvsp--;
  yystate = *--yyssp;
#if YYLSP_NEEDED
  yylsp--;
#endif

#if YYDEBUG
  if (yydebug)
    {
      short *yyssp1 = yyss - 1;
      YYFPRINTF (stderr, "Error: state stack now");
      while (yyssp1 != yyssp)
	YYFPRINTF (stderr, " %d", *++yyssp1);
      YYFPRINTF (stderr, "\n");
    }
#endif

/*--------------.
| yyerrhandle.  |
`--------------*/
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;

  YYDPRINTF ((stderr, "Shifting error token, "));

  *++yyvsp = yylval;
#if YYLSP_NEEDED
  *++yylsp = yylloc;
#endif

  yystate = yyn;
  goto yynewstate;


/*-------------------------------------.
| yyacceptlab -- YYACCEPT comes here.  |
`-------------------------------------*/
yyacceptlab:
  yyresult = 0;
  goto yyreturn;

/*-----------------------------------.
| yyabortlab -- YYABORT comes here.  |
`-----------------------------------*/
yyabortlab:
  yyresult = 1;
  goto yyreturn;

/*---------------------------------------------.
| yyoverflowab -- parser overflow comes here.  |
`---------------------------------------------*/
yyoverflowlab:
  yyerror ("parser stack overflow");
  yyresult = 2;
  /* Fall through.  */

yyreturn:
#ifndef yyoverflow
  if (yyss != yyssa)
    YYSTACK_FREE (yyss);
#endif
  return yyresult;
}
#line 3037 "objc/objc-parse.y"


/* yylex() is a thin wrapper around c_lex(), all it does is translate
   cpplib.h's token codes into yacc's token codes.  */

static enum cpp_ttype last_token;

/* The reserved keyword table.  */
struct resword
{
  const char *word;
  ENUM_BITFIELD(rid) rid : 16;
  unsigned int disable   : 16;
};

/* Disable mask.  Keywords are disabled if (reswords[i].disable & mask) is
   _true_.  */
#define D_C89	0x01	/* not in C89 */
#define D_EXT	0x02	/* GCC extension */
#define D_EXT89	0x04	/* GCC extension incorporated in C99 */
#define D_OBJC	0x08	/* Objective C only */

static const struct resword reswords[] =
{
  { "_Bool",		RID_BOOL,	0 },
  { "_Complex",		RID_COMPLEX,	0 },
  { "__FUNCTION__",	RID_FUNCTION_NAME, 0 },
  { "__PRETTY_FUNCTION__", RID_PRETTY_FUNCTION_NAME, 0 },
  { "__alignof",	RID_ALIGNOF,	0 },
  { "__alignof__",	RID_ALIGNOF,	0 },
  { "__asm",		RID_ASM,	0 },
  { "__asm__",		RID_ASM,	0 },
  { "__attribute",	RID_ATTRIBUTE,	0 },
  { "__attribute__",	RID_ATTRIBUTE,	0 },
  { "__builtin_choose_expr", RID_CHOOSE_EXPR, 0 },
  { "__builtin_offsetof", RID_OFFSETOF, 0 },
  { "__builtin_types_compatible_p", RID_TYPES_COMPATIBLE_P, 0 },
  { "__builtin_va_arg",	RID_VA_ARG,	0 },
  { "__complex",	RID_COMPLEX,	0 },
  { "__complex__",	RID_COMPLEX,	0 },
  { "__const",		RID_CONST,	0 },
  { "__const__",	RID_CONST,	0 },
  { "__extension__",	RID_EXTENSION,	0 },
  { "__func__",		RID_C99_FUNCTION_NAME, 0 },
  { "__imag",		RID_IMAGPART,	0 },
  { "__imag__",		RID_IMAGPART,	0 },
  { "__inline",		RID_INLINE,	0 },
  { "__inline__",	RID_INLINE,	0 },
  { "__label__",	RID_LABEL,	0 },
  { "__real",		RID_REALPART,	0 },
  { "__real__",		RID_REALPART,	0 },
  { "__restrict",	RID_RESTRICT,	0 },
  { "__restrict__",	RID_RESTRICT,	0 },
  { "__signed",		RID_SIGNED,	0 },
  { "__signed__",	RID_SIGNED,	0 },
  { "__thread",		RID_THREAD,	0 },
  { "__typeof",		RID_TYPEOF,	0 },
  { "__typeof__",	RID_TYPEOF,	0 },
  { "__volatile",	RID_VOLATILE,	0 },
  { "__volatile__",	RID_VOLATILE,	0 },
  { "asm",		RID_ASM,	D_EXT },
  { "auto",		RID_AUTO,	0 },
  { "break",		RID_BREAK,	0 },
  { "case",		RID_CASE,	0 },
  { "char",		RID_CHAR,	0 },
  { "const",		RID_CONST,	0 },
  { "continue",		RID_CONTINUE,	0 },
  { "default",		RID_DEFAULT,	0 },
  { "do",		RID_DO,		0 },
  { "double",		RID_DOUBLE,	0 },
  { "else",		RID_ELSE,	0 },
  { "enum",		RID_ENUM,	0 },
  { "extern",		RID_EXTERN,	0 },
  { "float",		RID_FLOAT,	0 },
  { "for",		RID_FOR,	0 },
  { "goto",		RID_GOTO,	0 },
  { "if",		RID_IF,		0 },
  { "inline",		RID_INLINE,	D_EXT89 },
  { "int",		RID_INT,	0 },
  { "long",		RID_LONG,	0 },
  { "register",		RID_REGISTER,	0 },
  { "restrict",		RID_RESTRICT,	D_C89 },
  { "return",		RID_RETURN,	0 },
  { "short",		RID_SHORT,	0 },
  { "signed",		RID_SIGNED,	0 },
  { "sizeof",		RID_SIZEOF,	0 },
  { "static",		RID_STATIC,	0 },
  { "struct",		RID_STRUCT,	0 },
  { "switch",		RID_SWITCH,	0 },
  { "typedef",		RID_TYPEDEF,	0 },
  { "typeof",		RID_TYPEOF,	D_EXT },
  { "union",		RID_UNION,	0 },
  { "unsigned",		RID_UNSIGNED,	0 },
  { "void",		RID_VOID,	0 },
  { "volatile",		RID_VOLATILE,	0 },
  { "while",		RID_WHILE,	0 },


  /* These objc keywords are recognized only immediately after
     an '@'.  */
  { "class",		RID_AT_CLASS,		D_OBJC },
  { "compatibility_alias", RID_AT_ALIAS,	D_OBJC },
  { "defs",		RID_AT_DEFS,		D_OBJC },
  { "encode",		RID_AT_ENCODE,		D_OBJC },
  { "end",		RID_AT_END,		D_OBJC },
  { "implementation",	RID_AT_IMPLEMENTATION,	D_OBJC },
  { "interface",	RID_AT_INTERFACE,	D_OBJC },
  { "private",		RID_AT_PRIVATE,		D_OBJC },
  { "protected",	RID_AT_PROTECTED,	D_OBJC },
  { "protocol",		RID_AT_PROTOCOL,	D_OBJC },
  { "public",		RID_AT_PUBLIC,		D_OBJC },
  { "selector",		RID_AT_SELECTOR,	D_OBJC },
  { "throw",		RID_AT_THROW,		D_OBJC },
  { "try",		RID_AT_TRY,		D_OBJC },
  { "catch",		RID_AT_CATCH,		D_OBJC },
  { "finally",		RID_AT_FINALLY,		D_OBJC },
  { "synchronized",	RID_AT_SYNCHRONIZED,	D_OBJC },
  /* These are recognized only in protocol-qualifier context
     (see above) */
  { "bycopy",		RID_BYCOPY,		D_OBJC },
  { "byref",		RID_BYREF,		D_OBJC },
  { "in",		RID_IN,			D_OBJC },
  { "inout",		RID_INOUT,		D_OBJC },
  { "oneway",		RID_ONEWAY,		D_OBJC },
  { "out",		RID_OUT,		D_OBJC },
};
#define N_reswords (sizeof reswords / sizeof (struct resword))

/* Table mapping from RID_* constants to yacc token numbers.
   Unfortunately we have to have entries for all the keywords in all
   three languages.  */
static const short rid_to_yy[RID_MAX] =
{
  /* RID_STATIC */	STATIC,
  /* RID_UNSIGNED */	TYPESPEC,
  /* RID_LONG */	TYPESPEC,
  /* RID_CONST */	TYPE_QUAL,
  /* RID_EXTERN */	SCSPEC,
  /* RID_REGISTER */	SCSPEC,
  /* RID_TYPEDEF */	SCSPEC,
  /* RID_SHORT */	TYPESPEC,
  /* RID_INLINE */	SCSPEC,
  /* RID_VOLATILE */	TYPE_QUAL,
  /* RID_SIGNED */	TYPESPEC,
  /* RID_AUTO */	SCSPEC,
  /* RID_RESTRICT */	TYPE_QUAL,

  /* C extensions */
  /* RID_COMPLEX */	TYPESPEC,
  /* RID_THREAD */	SCSPEC,

  /* C++ */
  /* RID_FRIEND */	0,
  /* RID_VIRTUAL */	0,
  /* RID_EXPLICIT */	0,
  /* RID_EXPORT */	0,
  /* RID_MUTABLE */	0,

  /* ObjC */
  /* RID_IN */		OBJC_TYPE_QUAL,
  /* RID_OUT */		OBJC_TYPE_QUAL,
  /* RID_INOUT */	OBJC_TYPE_QUAL,
  /* RID_BYCOPY */	OBJC_TYPE_QUAL,
  /* RID_BYREF */	OBJC_TYPE_QUAL,
  /* RID_ONEWAY */	OBJC_TYPE_QUAL,

  /* C */
  /* RID_INT */		TYPESPEC,
  /* RID_CHAR */	TYPESPEC,
  /* RID_FLOAT */	TYPESPEC,
  /* RID_DOUBLE */	TYPESPEC,
  /* RID_VOID */	TYPESPEC,
  /* RID_ENUM */	ENUM,
  /* RID_STRUCT */	STRUCT,
  /* RID_UNION */	UNION,
  /* RID_IF */		IF,
  /* RID_ELSE */	ELSE,
  /* RID_WHILE */	WHILE,
  /* RID_DO */		DO,
  /* RID_FOR */		FOR,
  /* RID_SWITCH */	SWITCH,
  /* RID_CASE */	CASE,
  /* RID_DEFAULT */	DEFAULT,
  /* RID_BREAK */	BREAK,
  /* RID_CONTINUE */	CONTINUE,
  /* RID_RETURN */	RETURN,
  /* RID_GOTO */	GOTO,
  /* RID_SIZEOF */	SIZEOF,

  /* C extensions */
  /* RID_ASM */		ASM_KEYWORD,
  /* RID_TYPEOF */	TYPEOF,
  /* RID_ALIGNOF */	ALIGNOF,
  /* RID_ATTRIBUTE */	ATTRIBUTE,
  /* RID_VA_ARG */	VA_ARG,
  /* RID_EXTENSION */	EXTENSION,
  /* RID_IMAGPART */	IMAGPART,
  /* RID_REALPART */	REALPART,
  /* RID_LABEL */	LABEL,

  /* RID_CHOOSE_EXPR */			CHOOSE_EXPR,
  /* RID_TYPES_COMPATIBLE_P */		TYPES_COMPATIBLE_P,

  /* RID_FUNCTION_NAME */		FUNC_NAME,
  /* RID_PRETTY_FUNCTION_NAME */	FUNC_NAME,
  /* RID_C99_FUNCTION_NAME */		FUNC_NAME,

  /* C++ */
  /* RID_BOOL */	TYPESPEC,
  /* RID_WCHAR */	0,
  /* RID_CLASS */	0,
  /* RID_PUBLIC */	0,
  /* RID_PRIVATE */	0,
  /* RID_PROTECTED */	0,
  /* RID_TEMPLATE */	0,
  /* RID_NULL */	0,
  /* RID_CATCH */	0,
  /* RID_DELETE */	0,
  /* RID_FALSE */	0,
  /* RID_NAMESPACE */	0,
  /* RID_NEW */		0,
  /* RID_OFFSETOF */    OFFSETOF,
  /* RID_OPERATOR */	0,
  /* RID_THIS */	0,
  /* RID_THROW */	0,
  /* RID_TRUE */	0,
  /* RID_TRY */		0,
  /* RID_TYPENAME */	0,
  /* RID_TYPEID */	0,
  /* RID_USING */	0,

  /* casts */
  /* RID_CONSTCAST */	0,
  /* RID_DYNCAST */	0,
  /* RID_REINTCAST */	0,
  /* RID_STATCAST */	0,

  /* Objective C */
  /* RID_AT_ENCODE */		AT_ENCODE,
  /* RID_AT_END */		AT_END,
  /* RID_AT_CLASS */		AT_CLASS,
  /* RID_AT_ALIAS */		AT_ALIAS,
  /* RID_AT_DEFS */		AT_DEFS,
  /* RID_AT_PRIVATE */		AT_PRIVATE,
  /* RID_AT_PROTECTED */	AT_PROTECTED,
  /* RID_AT_PUBLIC */		AT_PUBLIC,
  /* RID_AT_PROTOCOL */		AT_PROTOCOL,
  /* RID_AT_SELECTOR */		AT_SELECTOR,
  /* RID_AT_THROW */		AT_THROW,
  /* RID_AT_TRY */		AT_TRY,
  /* RID_AT_CATCH */		AT_CATCH,
  /* RID_AT_FINALLY */		AT_FINALLY,
  /* RID_AT_SYNCHRONIZED */	AT_SYNCHRONIZED,
  /* RID_AT_INTERFACE */	AT_INTERFACE,
  /* RID_AT_IMPLEMENTATION */	AT_IMPLEMENTATION
};

static void
init_reswords (void)
{
  unsigned int i;
  tree id;
  int mask = (flag_isoc99 ? 0 : D_C89)
	      | (flag_no_asm ? (flag_isoc99 ? D_EXT : D_EXT|D_EXT89) : 0);

  if (!c_dialect_objc ())
     mask |= D_OBJC;

  ridpointers = GGC_CNEWVEC (tree, (int) RID_MAX);
  for (i = 0; i < N_reswords; i++)
    {
      /* If a keyword is disabled, do not enter it into the table
	 and so create a canonical spelling that isn't a keyword.  */
      if (reswords[i].disable & mask)
	continue;

      id = get_identifier (reswords[i].word);
      C_RID_CODE (id) = reswords[i].rid;
      C_IS_RESERVED_WORD (id) = 1;
      ridpointers [(int) reswords[i].rid] = id;
    }
}

#define NAME(type) cpp_type2name (type)

static void
yyerror (const char *msgid)
{
  c_parse_error (msgid, last_token, yylval.ttype);
}

static int
yylexname (void)
{
  tree decl;

  int objc_force_identifier = objc_need_raw_identifier;
  OBJC_NEED_RAW_IDENTIFIER (0);

  if (C_IS_RESERVED_WORD (yylval.ttype))
    {
      enum rid rid_code = C_RID_CODE (yylval.ttype);

      if (!OBJC_IS_AT_KEYWORD (rid_code)
	  && (!OBJC_IS_PQ_KEYWORD (rid_code) || objc_pq_context))
      {
	/* Return the canonical spelling for this keyword.  */
	yylval.ttype = ridpointers[(int) rid_code];
	return rid_to_yy[(int) rid_code];
      }
    }

  decl = lookup_name (yylval.ttype);
  if (decl)
    {
      if (TREE_CODE (decl) == TYPE_DECL)
	return TYPENAME;
    }
  else
    {
      tree objc_interface_decl = objc_is_class_name (yylval.ttype);
      /* ObjC class names are in the same namespace as variables and
	 typedefs, and hence are shadowed by local declarations.  */
      if (objc_interface_decl
	  && (global_bindings_p ()
	      || (!objc_force_identifier && !decl)))
	{
	  yylval.ttype = objc_interface_decl;
	  return CLASSNAME;
	}
    }

  return IDENTIFIER;
}

static inline int
_yylex (void)
{
 get_next:
  last_token = c_lex (&yylval.ttype);
  switch (last_token)
    {
    case CPP_EQ:					return '=';
    case CPP_NOT:					return '!';
    case CPP_GREATER:	yylval.code = GT_EXPR;		return ARITHCOMPARE;
    case CPP_LESS:	yylval.code = LT_EXPR;		return ARITHCOMPARE;
    case CPP_PLUS:	yylval.code = PLUS_EXPR;	return '+';
    case CPP_MINUS:	yylval.code = MINUS_EXPR;	return '-';
    case CPP_MULT:	yylval.code = MULT_EXPR;	return '*';
    case CPP_DIV:	yylval.code = TRUNC_DIV_EXPR;	return '/';
    case CPP_MOD:	yylval.code = TRUNC_MOD_EXPR;	return '%';
    case CPP_AND:	yylval.code = BIT_AND_EXPR;	return '&';
    case CPP_OR:	yylval.code = BIT_IOR_EXPR;	return '|';
    case CPP_XOR:	yylval.code = BIT_XOR_EXPR;	return '^';
    case CPP_RSHIFT:	yylval.code = RSHIFT_EXPR;	return RSHIFT;
    case CPP_LSHIFT:	yylval.code = LSHIFT_EXPR;	return LSHIFT;

    case CPP_COMPL:					return '~';
    case CPP_AND_AND:					return ANDAND;
    case CPP_OR_OR:					return OROR;
    case CPP_QUERY:					return '?';
    case CPP_OPEN_PAREN:				return '(';
    case CPP_EQ_EQ:	yylval.code = EQ_EXPR;		return EQCOMPARE;
    case CPP_NOT_EQ:	yylval.code = NE_EXPR;		return EQCOMPARE;
    case CPP_GREATER_EQ:yylval.code = GE_EXPR;		return ARITHCOMPARE;
    case CPP_LESS_EQ:	yylval.code = LE_EXPR;		return ARITHCOMPARE;

    case CPP_PLUS_EQ:	yylval.code = PLUS_EXPR;	return ASSIGN;
    case CPP_MINUS_EQ:	yylval.code = MINUS_EXPR;	return ASSIGN;
    case CPP_MULT_EQ:	yylval.code = MULT_EXPR;	return ASSIGN;
    case CPP_DIV_EQ:	yylval.code = TRUNC_DIV_EXPR;	return ASSIGN;
    case CPP_MOD_EQ:	yylval.code = TRUNC_MOD_EXPR;	return ASSIGN;
    case CPP_AND_EQ:	yylval.code = BIT_AND_EXPR;	return ASSIGN;
    case CPP_OR_EQ:	yylval.code = BIT_IOR_EXPR;	return ASSIGN;
    case CPP_XOR_EQ:	yylval.code = BIT_XOR_EXPR;	return ASSIGN;
    case CPP_RSHIFT_EQ:	yylval.code = RSHIFT_EXPR;	return ASSIGN;
    case CPP_LSHIFT_EQ:	yylval.code = LSHIFT_EXPR;	return ASSIGN;

    case CPP_OPEN_SQUARE:				return '[';
    case CPP_CLOSE_SQUARE:				return ']';
    case CPP_OPEN_BRACE:				return '{';
    case CPP_CLOSE_BRACE:				return '}';
    case CPP_ELLIPSIS:					return ELLIPSIS;

    case CPP_PLUS_PLUS:					return PLUSPLUS;
    case CPP_MINUS_MINUS:				return MINUSMINUS;
    case CPP_DEREF:					return POINTSAT;
    case CPP_DOT:					return '.';

      /* The following tokens may affect the interpretation of any
	 identifiers following, if doing Objective-C.  */
    case CPP_COLON:		OBJC_NEED_RAW_IDENTIFIER (0);	return ':';
    case CPP_COMMA:		OBJC_NEED_RAW_IDENTIFIER (0);	return ',';
    case CPP_CLOSE_PAREN:	OBJC_NEED_RAW_IDENTIFIER (0);	return ')';
    case CPP_SEMICOLON:		OBJC_NEED_RAW_IDENTIFIER (0);	return ';';

    case CPP_EOF:
      return 0;

    case CPP_NAME:
      return yylexname ();

    case CPP_AT_NAME:
      /* This only happens in Objective-C; it must be a keyword.  */
      return rid_to_yy [(int) C_RID_CODE (yylval.ttype)];

    case CPP_NUMBER:
    case CPP_CHAR:
    case CPP_WCHAR:
      return CONSTANT;

    case CPP_STRING:
    case CPP_WSTRING:
      return STRING;

    case CPP_OBJC_STRING:
      return OBJC_STRING;

      /* These tokens are C++ specific (and will not be generated
         in C mode, but let's be cautious).  */
    case CPP_SCOPE:
    case CPP_DEREF_STAR:
    case CPP_DOT_STAR:
    case CPP_MIN_EQ:
    case CPP_MAX_EQ:
    case CPP_MIN:
    case CPP_MAX:
      /* These tokens should not survive translation phase 4.  */
    case CPP_HASH:
    case CPP_PASTE:
      error ("syntax error at %qs token", NAME(last_token));
      goto get_next;

    default:
      abort ();
    }
  /* NOTREACHED */
}

static int
yylex (void)
{
  int r;
  timevar_push (TV_LEX);
  r = _yylex();
  timevar_pop (TV_LEX);
  return r;
}

/* Function used when yydebug is set, to print a token in more detail.  */

static void
yyprint (FILE *file, int yychar, YYSTYPE yyl)
{
  tree t = yyl.ttype;

  fprintf (file, " [%s]", NAME(last_token));

  switch (yychar)
    {
    case IDENTIFIER:
    case TYPENAME:
    case TYPESPEC:
    case TYPE_QUAL:
    case SCSPEC:
    case STATIC:
      if (IDENTIFIER_POINTER (t))
	fprintf (file, " '%s'", IDENTIFIER_POINTER (t));
      break;

    case CONSTANT:
      fprintf (file, " %s", GET_MODE_NAME (TYPE_MODE (TREE_TYPE (t))));
      if (TREE_CODE (t) == INTEGER_CST)
	{
	  fputs (" ", file);
	  fprintf (file, HOST_WIDE_INT_PRINT_DOUBLE_HEX,
		   TREE_INT_CST_HIGH (t), TREE_INT_CST_LOW (t));
	}
      break;
    }
}

/* This is not the ideal place to put this, but we have to get it out
   of c-lex.c because cp/lex.c has its own version.  */

/* Parse the file.  */
void
c_parse_file (void)
{
  yyparse ();

  if (malloced_yyss)
    {
      free (malloced_yyss);
      free (malloced_yyvs);
      malloced_yyss = 0;
    }
}

#ifdef __XGETTEXT__
/* Depending on the version of Bison used to compile this grammar,
   it may issue generic diagnostics spelled "syntax error" or
   "parse error".  To prevent this from changing the translation
   template randomly, we list all the variants of this particular
   diagnostic here.  Translators: there is no fine distinction
   between diagnostics with "syntax error" in them, and diagnostics
   with "parse error" in them.  It's okay to give them both the same
   translation.  */
const char d1[] = N_("syntax error");
const char d2[] = N_("parse error");
const char d3[] = N_("syntax error; also virtual memory exhausted");
const char d4[] = N_("parse error; also virtual memory exhausted");
const char d5[] = N_("syntax error: cannot back up");
const char d6[] = N_("parse error: cannot back up");
#endif

#include "gt-c-parse.h"