/* A Bison parser, made from ldgram.y
   by GNU bison 1.35.  */

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

# define	INT	257
# define	NAME	258
# define	LNAME	259
# define	PLUSEQ	260
# define	MINUSEQ	261
# define	MULTEQ	262
# define	DIVEQ	263
# define	LSHIFTEQ	264
# define	RSHIFTEQ	265
# define	ANDEQ	266
# define	OREQ	267
# define	OROR	268
# define	ANDAND	269
# define	EQ	270
# define	NE	271
# define	LE	272
# define	GE	273
# define	LSHIFT	274
# define	RSHIFT	275
# define	UNARY	276
# define	END	277
# define	ALIGN_K	278
# define	BLOCK	279
# define	BIND	280
# define	QUAD	281
# define	SQUAD	282
# define	LONG	283
# define	SHORT	284
# define	BYTE	285
# define	SECTIONS	286
# define	PHDRS	287
# define	SORT	288
# define	DATA_SEGMENT_ALIGN	289
# define	DATA_SEGMENT_END	290
# define	SIZEOF_HEADERS	291
# define	OUTPUT_FORMAT	292
# define	FORCE_COMMON_ALLOCATION	293
# define	OUTPUT_ARCH	294
# define	INHIBIT_COMMON_ALLOCATION	295
# define	INCLUDE	296
# define	MEMORY	297
# define	DEFSYMEND	298
# define	NOLOAD	299
# define	DSECT	300
# define	COPY	301
# define	INFO	302
# define	OVERLAY	303
# define	DEFINED	304
# define	TARGET_K	305
# define	SEARCH_DIR	306
# define	MAP	307
# define	ENTRY	308
# define	NEXT	309
# define	SIZEOF	310
# define	ADDR	311
# define	LOADADDR	312
# define	MAX_K	313
# define	MIN_K	314
# define	STARTUP	315
# define	HLL	316
# define	SYSLIB	317
# define	FLOAT	318
# define	NOFLOAT	319
# define	NOCROSSREFS	320
# define	ORIGIN	321
# define	FILL	322
# define	LENGTH	323
# define	CREATE_OBJECT_SYMBOLS	324
# define	INPUT	325
# define	GROUP	326
# define	OUTPUT	327
# define	CONSTRUCTORS	328
# define	ALIGNMOD	329
# define	AT	330
# define	PROVIDE	331
# define	CHIP	332
# define	LIST	333
# define	SECT	334
# define	ABSOLUTE	335
# define	LOAD	336
# define	NEWLINE	337
# define	ENDWORD	338
# define	ORDER	339
# define	NAMEWORD	340
# define	ASSERT_K	341
# define	FORMAT	342
# define	PUBLIC	343
# define	BASE	344
# define	ALIAS	345
# define	TRUNCATE	346
# define	REL	347
# define	INPUT_SCRIPT	348
# define	INPUT_MRI_SCRIPT	349
# define	INPUT_DEFSYM	350
# define	CASE	351
# define	EXTERN	352
# define	START	353
# define	VERS_TAG	354
# define	VERS_IDENTIFIER	355
# define	GLOBAL	356
# define	LOCAL	357
# define	VERSIONK	358
# define	INPUT_VERSION_SCRIPT	359
# define	KEEP	360
# define	EXCLUDE_FILE	361

#line 22 "ldgram.y"

/*

 */

#define DONTDECLARE_MALLOC

#include "bfd.h"
#include "sysdep.h"
#include "bfdlink.h"
#include "ld.h"
#include "ldexp.h"
#include "ldver.h"
#include "ldlang.h"
#include "ldfile.h"
#include "ldemul.h"
#include "ldmisc.h"
#include "ldmain.h"
#include "mri.h"
#include "ldctor.h"
#include "ldlex.h"

#ifndef YYDEBUG
#define YYDEBUG 1
#endif

static enum section_type sectype;

lang_memory_region_type *region;

bfd_boolean ldgram_want_filename = TRUE;
FILE *saved_script_handle = NULL;
bfd_boolean force_make_executable = FALSE;

bfd_boolean ldgram_in_script = FALSE;
bfd_boolean ldgram_had_equals = FALSE;
bfd_boolean ldgram_had_keep = FALSE;
char *ldgram_vers_current_lang = NULL;

#define ERROR_NAME_MAX 20
static char *error_names[ERROR_NAME_MAX];
static int error_index;
#define PUSH_ERROR(x) if (error_index < ERROR_NAME_MAX) error_names[error_index] = x; error_index++;
#define POP_ERROR()   error_index--;

#line 67 "ldgram.y"
#ifndef YYSTYPE
typedef union {
  bfd_vma integer;
  struct big_int
    {
      bfd_vma integer;
      char *str;
    } bigint;
  fill_type *fill;
  char *name;
  const char *cname;
  struct wildcard_spec wildcard;
  struct wildcard_list *wildcard_list;
  struct name_list *name_list;
  int token;
  union etree_union *etree;
  struct phdr_info
    {
      bfd_boolean filehdr;
      bfd_boolean phdrs;
      union etree_union *at;
      union etree_union *flags;
    } phdr;
  struct lang_nocrossref *nocrossref;
  struct lang_output_section_phdr_list *section_phdr;
  struct bfd_elf_version_deps *deflist;
  struct bfd_elf_version_expr *versyms;
  struct bfd_elf_version_tree *versnode;
} yystype;
# define YYSTYPE yystype
# define YYSTYPE_IS_TRIVIAL 1
#endif
#ifndef YYDEBUG
# define YYDEBUG 0
#endif



#define	YYFINAL		611
#define	YYFLAG		-32768
#define	YYNTBASE	131

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

/* YYTRANSLATE[YYLEX] -- Bison token number corresponding to YYLEX. */
static const short 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,   129,     2,     2,     2,    34,    21,     2,
      37,   126,    32,    30,   124,    31,     2,    33,     2,     2,
       2,     2,     2,     2,     2,     2,     2,     2,    16,   125,
      24,    10,    25,    15,     2,     2,     2,     2,     2,     2,
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
       2,   127,     2,   128,    20,     2,     2,     2,     2,     2,
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
       2,     2,     2,    51,    19,    52,   130,     2,     2,     2,
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
       2,     2,     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,    11,    12,    13,    14,    17,    18,
      22,    23,    26,    27,    28,    29,    35,    36,    38,    39,
      40,    41,    42,    43,    44,    45,    46,    47,    48,    49,
      50,    53,    54,    55,    56,    57,    58,    59,    60,    61,
      62,    63,    64,    65,    66,    67,    68,    69,    70,    71,
      72,    73,    74,    75,    76,    77,    78,    79,    80,    81,
      82,    83,    84,    85,    86,    87,    88,    89,    90,    91,
      92,    93,    94,    95,    96,    97,    98,    99,   100,   101,
     102,   103,   104,   105,   106,   107,   108,   109,   110,   111,
     112,   113,   114,   115,   116,   117,   118,   119,   120,   121,
     122,   123
};

#if YYDEBUG
static const short yyprhs[] =
{
       0,     0,     3,     6,     9,    12,    14,    15,    20,    21,
      24,    28,    29,    32,    37,    39,    41,    44,    46,    51,
      56,    60,    63,    68,    72,    77,    82,    87,    92,    97,
     100,   103,   106,   111,   116,   119,   122,   125,   128,   129,
     135,   138,   139,   143,   146,   147,   149,   153,   155,   159,
     160,   162,   166,   168,   171,   175,   176,   179,   182,   183,
     185,   187,   189,   191,   193,   195,   197,   199,   201,   203,
     208,   213,   218,   223,   232,   237,   239,   241,   246,   247,
     253,   258,   259,   265,   270,   275,   277,   281,   284,   286,
     290,   293,   298,   301,   304,   305,   310,   313,   315,   317,
     319,   321,   327,   332,   341,   344,   346,   350,   352,   354,
     358,   363,   365,   366,   372,   375,   377,   379,   381,   386,
     388,   393,   398,   401,   403,   404,   406,   408,   410,   412,
     414,   416,   418,   421,   422,   424,   426,   428,   430,   432,
     434,   436,   438,   440,   442,   446,   450,   457,   459,   460,
     466,   469,   473,   474,   475,   483,   487,   491,   492,   496,
     498,   501,   503,   506,   511,   516,   520,   524,   526,   531,
     535,   536,   538,   540,   541,   544,   548,   549,   552,   555,
     559,   564,   567,   570,   573,   577,   581,   585,   589,   593,
     597,   601,   605,   609,   613,   617,   621,   625,   629,   633,
     637,   643,   647,   651,   656,   658,   660,   665,   670,   675,
     680,   685,   692,   697,   702,   704,   711,   718,   725,   729,
     730,   735,   736,   737,   738,   739,   740,   741,   758,   759,
     760,   761,   762,   763,   781,   782,   783,   791,   793,   795,
     797,   799,   801,   805,   806,   809,   813,   816,   823,   834,
     837,   839,   840,   842,   845,   846,   847,   851,   852,   853,
     854,   855,   867,   872,   873,   876,   877,   878,   885,   887,
     888,   892,   898,   899,   903,   904,   907,   908,   914,   916,
     919,   924,   930,   937,   939,   942,   943,   946,   951,   956,
     965,   967,   971,   972,   982,   983,   991,   992
};
static const short yyrhs[] =
{
     110,   145,     0,   111,   135,     0,   121,   225,     0,   112,
     133,     0,     4,     0,     0,   134,     4,    10,   190,     0,
       0,   136,   137,     0,   137,   138,    99,     0,     0,    94,
     190,     0,    94,   190,   124,   190,     0,     4,     0,    95,
       0,   101,   140,     0,   100,     0,   105,     4,    10,   190,
       0,   105,     4,   124,   190,     0,   105,     4,   190,     0,
     104,     4,     0,    96,     4,   124,   190,     0,    96,     4,
     190,     0,    96,     4,    10,   190,     0,    38,     4,    10,
     190,     0,    38,     4,   124,   190,     0,    91,     4,    10,
     190,     0,    91,     4,   124,   190,     0,    97,   142,     0,
      98,   141,     0,   102,     4,     0,   107,     4,   124,     4,
       0,   107,     4,   124,     3,     0,   106,   190,     0,   108,
       3,     0,   113,   143,     0,   114,   144,     0,     0,    58,
     132,   139,   137,    36,     0,   115,     4,     0,     0,   140,
     124,     4,     0,   140,     4,     0,     0,     4,     0,   141,
     124,     4,     0,     4,     0,   142,   124,     4,     0,     0,
       4,     0,   143,   124,     4,     0,     4,     0,   144,     4,
       0,   144,   124,     4,     0,     0,   146,   147,     0,   147,
     148,     0,     0,   172,     0,   152,     0,   217,     0,   181,
       0,   182,     0,   184,     0,   186,     0,   154,     0,   227,
       0,   125,     0,    67,    37,     4,   126,     0,    68,    37,
     132,   126,     0,    89,    37,   132,   126,     0,    54,    37,
       4,   126,     0,    54,    37,     4,   124,     4,   124,     4,
     126,     0,    56,    37,     4,   126,     0,    55,     0,    57,
       0,    87,    37,   151,   126,     0,     0,    88,   149,    37,
     151,   126,     0,    69,    37,   132,   126,     0,     0,    58,
     132,   150,   147,    36,     0,    82,    37,   187,   126,     0,
     114,    37,   144,   126,     0,     4,     0,   151,   124,     4,
       0,   151,     4,     0,     5,     0,   151,   124,     5,     0,
     151,     5,     0,    46,    51,   153,    52,     0,   153,   193,
       0,   153,   154,     0,     0,    70,    37,     4,   126,     0,
     170,   169,     0,     4,     0,    32,     0,    15,     0,   155,
       0,   123,    37,   157,   126,   155,     0,    48,    37,   155,
     126,     0,    48,    37,   123,    37,   157,   126,   155,   126,
       0,   157,   155,     0,   155,     0,   158,   171,   156,     0,
     156,     0,     4,     0,   127,   158,   128,     0,   156,    37,
     158,   126,     0,   159,     0,     0,   122,    37,   161,   159,
     126,     0,   170,   169,     0,    86,     0,   125,     0,    90,
       0,    48,    37,    90,   126,     0,   160,     0,   165,    37,
     188,   126,     0,    84,    37,   166,   126,     0,   163,   162,
       0,   162,     0,     0,   163,     0,    41,     0,    42,     0,
      43,     0,    44,     0,    45,     0,   188,     0,    10,   166,
       0,     0,     6,     0,     7,     0,     8,     0,     9,     0,
      11,     0,    12,     0,    13,     0,    14,     0,   125,     0,
     124,     0,     4,    10,   188,     0,     4,   168,   188,     0,
      93,    37,     4,    10,   188,   126,     0,   124,     0,     0,
      59,    51,   174,   173,    52,     0,   173,   174,     0,   173,
     124,   174,     0,     0,     0,     4,   175,   178,    16,   176,
     171,   177,     0,    83,    10,   188,     0,    85,    10,   188,
       0,     0,    37,   179,   126,     0,   180,     0,   179,   180,
       0,     4,     0,   129,     4,     0,    77,    37,   132,   126,
       0,    78,    37,   183,   126,     0,    78,    37,   126,     0,
     183,   171,   132,     0,   132,     0,    79,    37,   185,   126,
       0,   185,   171,   132,     0,     0,    80,     0,    81,     0,
       0,     4,   187,     0,     4,   124,   187,     0,     0,   189,
     190,     0,    31,   190,     0,    37,   190,   126,     0,    71,
      37,   190,   126,     0,   129,   190,     0,    30,   190,     0,
     130,   190,     0,   190,    32,   190,     0,   190,    33,   190,
       0,   190,    34,   190,     0,   190,    30,   190,     0,   190,
      31,   190,     0,   190,    28,   190,     0,   190,    29,   190,
       0,   190,    22,   190,     0,   190,    23,   190,     0,   190,
      26,   190,     0,   190,    27,   190,     0,   190,    24,   190,
       0,   190,    25,   190,     0,   190,    21,   190,     0,   190,
      20,   190,     0,   190,    19,   190,     0,   190,    15,   190,
      16,   190,     0,   190,    18,   190,     0,   190,    17,   190,
       0,    66,    37,     4,   126,     0,     3,     0,    53,     0,
      72,    37,     4,   126,     0,    73,    37,     4,   126,     0,
      74,    37,     4,   126,     0,    97,    37,   190,   126,     0,
      38,    37,   190,   126,     0,    49,    37,   190,   124,   190,
     126,     0,    50,    37,   190,   126,     0,    39,    37,   190,
     126,     0,     4,     0,    75,    37,   190,   124,   190,   126,
       0,    76,    37,   190,   124,   190,   126,     0,   103,    37,
     190,   124,     4,   126,     0,    92,    25,     4,     0,     0,
      92,    37,   190,   126,     0,     0,     0,     0,     0,     0,
       0,     4,   194,   208,   192,   195,    51,   196,   164,    52,
     197,   211,   191,   212,   167,   198,   171,     0,     0,     0,
       0,     0,     0,    65,   199,   209,   210,   192,   200,    51,
     201,   213,    52,   202,   211,   191,   212,   167,   203,   171,
       0,     0,     0,    88,   204,   208,   205,    51,   153,    52,
       0,    61,     0,    62,     0,    63,     0,    64,     0,    65,
       0,    37,   206,   126,     0,     0,    37,   126,     0,   190,
     207,    16,     0,   207,    16,     0,    40,    37,   190,   126,
     207,    16,     0,    40,    37,   190,   126,    39,    37,   190,
     126,   207,    16,     0,   190,    16,     0,    16,     0,     0,
      82,     0,    25,     4,     0,     0,     0,   212,    16,     4,
       0,     0,     0,     0,     0,   213,     4,   214,    51,   164,
      52,   215,   212,   167,   216,   171,     0,    47,    51,   218,
      52,     0,     0,   218,   219,     0,     0,     0,     4,   220,
     222,   223,   221,   125,     0,   190,     0,     0,     4,   224,
     223,     0,    92,    37,   190,   126,   223,     0,     0,    37,
     190,   126,     0,     0,   226,   229,     0,     0,   228,   120,
      51,   229,    52,     0,   230,     0,   229,   230,     0,    51,
     232,    52,   125,     0,   116,    51,   232,    52,   125,     0,
     116,    51,   232,    52,   231,   125,     0,   116,     0,   231,
     116,     0,     0,   233,   125,     0,   118,    16,   233,   125,
       0,   119,    16,   233,   125,     0,   118,    16,   233,   125,
     119,    16,   233,   125,     0,   117,     0,   233,   125,   117,
       0,     0,   233,   125,   114,     4,    51,   234,   233,   236,
      52,     0,     0,   114,     4,    51,   235,   233,   236,    52,
       0,     0,   125,     0
};

#endif

#if YYDEBUG
/* YYRLINE[YYN] -- source line where rule number YYN was defined. */
static const short yyrline[] =
{
       0,   161,   163,   164,   165,   169,   172,   172,   182,   182,
     195,   197,   200,   202,   203,   206,   209,   210,   211,   213,
     215,   217,   219,   221,   223,   225,   227,   229,   231,   233,
     234,   235,   237,   239,   241,   243,   245,   246,   247,   247,
     251,   253,   256,   258,   259,   262,   265,   268,   271,   275,
     277,   278,   281,   284,   286,   290,   290,   301,   303,   308,
     310,   311,   312,   313,   314,   315,   316,   317,   318,   319,
     321,   323,   325,   328,   330,   332,   334,   336,   337,   337,
     341,   343,   343,   347,   351,   354,   358,   361,   364,   367,
     370,   375,   379,   381,   382,   385,   388,   393,   398,   402,
     408,   415,   421,   427,   435,   444,   455,   464,   475,   484,
     488,   494,   496,   496,   502,   504,   508,   509,   514,   519,
     520,   525,   531,   533,   536,   538,   541,   544,   546,   548,
     550,   554,   564,   567,   570,   573,   575,   577,   579,   581,
     583,   585,   590,   590,   594,   599,   607,   614,   615,   618,
     622,   624,   625,   629,   629,   636,   644,   653,   656,   659,
     661,   664,   667,   671,   676,   678,   682,   685,   690,   692,
     695,   698,   701,   705,   710,   719,   730,   730,   735,   738,
     740,   742,   744,   746,   749,   751,   753,   755,   757,   759,
     761,   763,   765,   767,   769,   771,   773,   775,   777,   779,
     781,   783,   785,   787,   789,   791,   794,   796,   798,   800,
     802,   804,   806,   808,   810,   812,   814,   816,   821,   823,
     826,   828,   831,   831,   831,   831,   831,   831,   849,   849,
     849,   849,   849,   849,   867,   867,   867,   880,   882,   883,
     884,   885,   888,   890,   891,   894,   896,   897,   902,   906,
     908,   911,   914,   918,   921,   924,   929,   942,   944,   944,
     944,   944,   960,   964,   966,   969,   969,   969,   979,  1021,
    1026,  1038,  1045,  1050,  1058,  1058,  1072,  1072,  1082,  1084,
    1087,  1092,  1096,  1102,  1107,  1113,  1118,  1122,  1126,  1130,
    1136,  1141,  1145,  1145,  1155,  1155,  1167,  1169
};
#endif


#if (YYDEBUG) || defined YYERROR_VERBOSE

/* YYTNAME[TOKEN_NUM] -- String name of the token TOKEN_NUM. */
static const char *const yytname[] =
{
  "$", "error", "$undefined.", "INT", "NAME", "LNAME", "PLUSEQ", "MINUSEQ", 
  "MULTEQ", "DIVEQ", "'='", "LSHIFTEQ", "RSHIFTEQ", "ANDEQ", "OREQ", 
  "'?'", "':'", "OROR", "ANDAND", "'|'", "'^'", "'&'", "EQ", "NE", "'<'", 
  "'>'", "LE", "GE", "LSHIFT", "RSHIFT", "'+'", "'-'", "'*'", "'/'", 
  "'%'", "UNARY", "END", "'('", "ALIGN_K", "BLOCK", "BIND", "QUAD", 
  "SQUAD", "LONG", "SHORT", "BYTE", "SECTIONS", "PHDRS", "SORT", 
  "DATA_SEGMENT_ALIGN", "DATA_SEGMENT_END", "'{'", "'}'", 
  "SIZEOF_HEADERS", "OUTPUT_FORMAT", "FORCE_COMMON_ALLOCATION", 
  "OUTPUT_ARCH", "INHIBIT_COMMON_ALLOCATION", "INCLUDE", "MEMORY", 
  "DEFSYMEND", "NOLOAD", "DSECT", "COPY", "INFO", "OVERLAY", "DEFINED", 
  "TARGET_K", "SEARCH_DIR", "MAP", "ENTRY", "NEXT", "SIZEOF", "ADDR", 
  "LOADADDR", "MAX_K", "MIN_K", "STARTUP", "HLL", "SYSLIB", "FLOAT", 
  "NOFLOAT", "NOCROSSREFS", "ORIGIN", "FILL", "LENGTH", 
  "CREATE_OBJECT_SYMBOLS", "INPUT", "GROUP", "OUTPUT", "CONSTRUCTORS", 
  "ALIGNMOD", "AT", "PROVIDE", "CHIP", "LIST", "SECT", "ABSOLUTE", "LOAD", 
  "NEWLINE", "ENDWORD", "ORDER", "NAMEWORD", "ASSERT_K", "FORMAT", 
  "PUBLIC", "BASE", "ALIAS", "TRUNCATE", "REL", "INPUT_SCRIPT", 
  "INPUT_MRI_SCRIPT", "INPUT_DEFSYM", "CASE", "EXTERN", "START", 
  "VERS_TAG", "VERS_IDENTIFIER", "GLOBAL", "LOCAL", "VERSIONK", 
  "INPUT_VERSION_SCRIPT", "KEEP", "EXCLUDE_FILE", "','", "';'", "')'", 
  "'['", "']'", "'!'", "'~'", "file", "filename", "defsym_expr", "@1", 
  "mri_script_file", "@2", "mri_script_lines", "mri_script_command", "@3", 
  "ordernamelist", "mri_load_name_list", "mri_abs_name_list", 
  "casesymlist", "extern_name_list", "script_file", "@4", "ifile_list", 
  "ifile_p1", "@5", "@6", "input_list", "sections", "sec_or_group_p1", 
  "statement_anywhere", "wildcard_name", "wildcard_spec", 
  "exclude_name_list", "file_NAME_list", "input_section_spec_no_keep", 
  "input_section_spec", "@7", "statement", "statement_list", 
  "statement_list_opt", "length", "fill_exp", "fill_opt", "assign_op", 
  "end", "assignment", "opt_comma", "memory", "memory_spec_list", 
  "memory_spec", "@8", "origin_spec", "length_spec", "attributes_opt", 
  "attributes_list", "attributes_string", "startup", "high_level_library", 
  "high_level_library_NAME_list", "low_level_library", 
  "low_level_library_NAME_list", "floating_point_support", 
  "nocrossref_list", "mustbe_exp", "@9", "exp", "memspec_at_opt", 
  "opt_at", "section", "@10", "@11", "@12", "@13", "@14", "@15", "@16", 
  "@17", "@18", "@19", "@20", "@21", "type", "atype", "opt_exp_with_type", 
  "opt_exp_without_type", "opt_nocrossrefs", "memspec_opt", "phdr_opt", 
  "overlay_section", "@22", "@23", "@24", "phdrs", "phdr_list", "phdr", 
  "@25", "@26", "phdr_type", "phdr_qualifiers", "phdr_val", 
  "version_script_file", "@27", "version", "@28", "vers_nodes", 
  "vers_node", "verdep", "vers_tag", "vers_defns", "@29", "@30", 
  "opt_semicolon", 0
};
#endif

/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */
static const short yyr1[] =
{
       0,   131,   131,   131,   131,   132,   134,   133,   136,   135,
     137,   137,   138,   138,   138,   138,   138,   138,   138,   138,
     138,   138,   138,   138,   138,   138,   138,   138,   138,   138,
     138,   138,   138,   138,   138,   138,   138,   138,   139,   138,
     138,   138,   140,   140,   140,   141,   141,   142,   142,   143,
     143,   143,   144,   144,   144,   146,   145,   147,   147,   148,
     148,   148,   148,   148,   148,   148,   148,   148,   148,   148,
     148,   148,   148,   148,   148,   148,   148,   148,   149,   148,
     148,   150,   148,   148,   148,   151,   151,   151,   151,   151,
     151,   152,   153,   153,   153,   154,   154,   155,   155,   155,
     156,   156,   156,   156,   157,   157,   158,   158,   159,   159,
     159,   160,   161,   160,   162,   162,   162,   162,   162,   162,
     162,   162,   163,   163,   164,   164,   165,   165,   165,   165,
     165,   166,   167,   167,   168,   168,   168,   168,   168,   168,
     168,   168,   169,   169,   170,   170,   170,   171,   171,   172,
     173,   173,   173,   175,   174,   176,   177,   178,   178,   179,
     179,   180,   180,   181,   182,   182,   183,   183,   184,   185,
     185,   186,   186,   187,   187,   187,   189,   188,   190,   190,
     190,   190,   190,   190,   190,   190,   190,   190,   190,   190,
     190,   190,   190,   190,   190,   190,   190,   190,   190,   190,
     190,   190,   190,   190,   190,   190,   190,   190,   190,   190,
     190,   190,   190,   190,   190,   190,   190,   190,   191,   191,
     192,   192,   194,   195,   196,   197,   198,   193,   199,   200,
     201,   202,   203,   193,   204,   205,   193,   206,   206,   206,
     206,   206,   207,   207,   207,   208,   208,   208,   208,   209,
     209,   210,   210,   211,   211,   212,   212,   213,   214,   215,
     216,   213,   217,   218,   218,   220,   221,   219,   222,   223,
     223,   223,   224,   224,   226,   225,   228,   227,   229,   229,
     230,   230,   230,   231,   231,   232,   232,   232,   232,   232,
     233,   233,   234,   233,   235,   233,   236,   236
};

/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */
static const short yyr2[] =
{
       0,     2,     2,     2,     2,     1,     0,     4,     0,     2,
       3,     0,     2,     4,     1,     1,     2,     1,     4,     4,
       3,     2,     4,     3,     4,     4,     4,     4,     4,     2,
       2,     2,     4,     4,     2,     2,     2,     2,     0,     5,
       2,     0,     3,     2,     0,     1,     3,     1,     3,     0,
       1,     3,     1,     2,     3,     0,     2,     2,     0,     1,
       1,     1,     1,     1,     1,     1,     1,     1,     1,     4,
       4,     4,     4,     8,     4,     1,     1,     4,     0,     5,
       4,     0,     5,     4,     4,     1,     3,     2,     1,     3,
       2,     4,     2,     2,     0,     4,     2,     1,     1,     1,
       1,     5,     4,     8,     2,     1,     3,     1,     1,     3,
       4,     1,     0,     5,     2,     1,     1,     1,     4,     1,
       4,     4,     2,     1,     0,     1,     1,     1,     1,     1,
       1,     1,     2,     0,     1,     1,     1,     1,     1,     1,
       1,     1,     1,     1,     3,     3,     6,     1,     0,     5,
       2,     3,     0,     0,     7,     3,     3,     0,     3,     1,
       2,     1,     2,     4,     4,     3,     3,     1,     4,     3,
       0,     1,     1,     0,     2,     3,     0,     2,     2,     3,
       4,     2,     2,     2,     3,     3,     3,     3,     3,     3,
       3,     3,     3,     3,     3,     3,     3,     3,     3,     3,
       5,     3,     3,     4,     1,     1,     4,     4,     4,     4,
       4,     6,     4,     4,     1,     6,     6,     6,     3,     0,
       4,     0,     0,     0,     0,     0,     0,    16,     0,     0,
       0,     0,     0,    17,     0,     0,     7,     1,     1,     1,
       1,     1,     3,     0,     2,     3,     2,     6,    10,     2,
       1,     0,     1,     2,     0,     0,     3,     0,     0,     0,
       0,    11,     4,     0,     2,     0,     0,     6,     1,     0,
       3,     5,     0,     3,     0,     2,     0,     5,     1,     2,
       4,     5,     6,     1,     2,     0,     2,     4,     4,     8,
       1,     3,     0,     9,     0,     7,     0,     1
};

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

static const short yydefgoto[] =
{
     609,   102,     9,    10,     7,     8,    14,    77,   202,   151,
     150,   148,   159,   161,     5,     6,    13,    45,   113,   178,
     194,    46,   174,    47,   515,   516,   550,   535,   517,   518,
     548,   519,   520,   521,   522,   546,   593,    96,   119,    48,
     553,    49,   279,   180,   278,   451,   486,   366,   412,   413,
      50,    51,   188,    52,   189,    53,   191,   547,   172,   207,
     581,   438,   270,   359,   463,   491,   555,   599,   360,   478,
     524,   574,   604,   361,   442,   432,   401,   402,   405,   441,
     571,   586,   541,   573,   600,   607,    54,   175,   273,   362,
     469,   408,   445,   467,    11,    12,    55,    56,    18,    19,
     358,    83,    84,   425,   352,   423
};

static const short yypact[] =
{
      -4,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
      57,-32768,   -14,   658,   744,    64,    82,    54,   -14,-32768,
     346,    58,    95,    44,-32768,    78,-32768,   129,   154,   173,
     197,   211,   212,   216,   218,   219,-32768,-32768,   223,   225,
  -32768,   227,   238,   240,-32768,-32768,-32768,-32768,   -82,-32768,
  -32768,-32768,-32768,-32768,-32768,-32768,   156,-32768,   274,   129,
     281,   557,-32768,   283,   284,   286,-32768,-32768,   288,   289,
     290,   557,   291,   293,   294,   299,   300,   207,   557,   303,
  -32768,   292,   296,   245,   185,    82,-32768,-32768,-32768,-32768,
  -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,   309,
     310,-32768,-32768,   313,   314,   129,   129,   315,   129,    10,
  -32768,   316,    87,   287,   129,   319,   299,-32768,-32768,-32768,
     275,     5,-32768,     7,-32768,-32768,   557,   557,   557,   298,
     302,   304,   307,-32768,   308,   311,   326,   327,   329,   330,
     331,   332,   333,   557,   557,   646,   312,-32768,   201,-32768,
     206,    65,-32768,-32768,   394,  1308,   209,-32768,-32768,   222,
  -32768,    68,-32768,-32768,  1308,   276,   104,   104,   215,   106,
     279,-32768,   557,-32768,    25,    18,   -28,   210,-32768,-32768,
  -32768,   221,   246,   248,   249,   250,-32768,-32768,     6,    98,
      69,   251,-32768,-32768,    21,    87,   253,   361,    61,   -14,
     557,   557,-32768,   557,   557,-32768,-32768,   870,   557,   557,
     557,   557,   377,   557,   378,   385,   386,   557,   557,   557,
     557,-32768,-32768,   557,   557,   557,   557,   557,   557,   557,
     557,   557,   557,   557,   557,   557,   557,   557,   557,   557,
     557,   557,   557,   557,   557,  1308,   387,   388,-32768,   389,
     557,   557,  1308,   194,   390,-32768,   391,-32768,   271,   278,
  -32768,   395,-32768,   -67,  1308,   346,-32768,-32768,-32768,-32768,
  -32768,-32768,-32768,-32768,   396,-32768,-32768,   707,   364,    37,
  -32768,-32768,-32768,-32768,-32768,-32768,-32768,   129,-32768,   129,
     316,-32768,-32768,-32768,-32768,   239,-32768,    30,-32768,-32768,
  -32768,   -19,  1308,  1308,   769,  1308,  1308,-32768,   890,   910,
    1170,   930,   285,   950,   297,   301,   320,  1200,  1220,   980,
    1240,  1350,  1327,  1258,  1385,  1399,   786,  1410,  1410,   199,
     199,   199,   199,   183,   183,    88,    88,-32768,-32768,-32768,
    1308,  1308,  1308,-32768,-32768,-32768,  1308,  1308,-32768,-32768,
  -32768,-32768,   104,    90,   106,   356,-32768,-32768,   -37,   455,
     506,   455,   557,   295,-32768,     9,   398,-32768,   313,-32768,
  -32768,-32768,-32768,-32768,-32768,-32768,   335,-32768,-32768,-32768,
  -32768,   557,-32768,-32768,-32768,-32768,-32768,-32768,   557,   557,
  -32768,   406,   557,   305,   400,-32768,-32768,-32768,   208,   375,
    1278,   401,   328,-32768,  1370,   340,-32768,  1308,    24,   422,
  -32768,   424,     8,-32768,   351,-32768,-32768,  1000,  1020,  1040,
     336,  1308,   106,   383,   104,   104,-32768,-32768,-32768,-32768,
  -32768,-32768,   337,   557,    62,   413,-32768,   402,-32768,-32768,
  -32768,   328,   420,   403,   408,-32768,   338,-32768,-32768,-32768,
     428,   348,-32768,-32768,-32768,-32768,-32768,   349,   305,-32768,
    1060,-32768,   557,   425,-32768,-32768,   557,    24,   557,   350,
  -32768,-32768,   392,   106,   421,   203,  1090,-32768,   427,   198,
    1110,-32768,  1130,-32768,-32768,   469,-32768,-32768,   444,   466,
  -32768,   607,-32768,-32768,-32768,    24,-32768,   557,-32768,   443,
  -32768,-32768,-32768,-32768,-32768,-32768,-32768,   446,   447,-32768,
  -32768,   450,   451,-32768,    32,-32768,   452,-32768,-32768,-32768,
     607,   438,   459,   -82,-32768,-32768,-32768,  1150,    96,-32768,
  -32768,    67,-32768,   461,-32768,   -69,    32,-32768,-32768,-32768,
  -32768,    26,   462,   374,   464,   376,   380,-32768,    12,-32768,
      16,    72,-32768,    32,   128,   478,   381,-32768,-32768,   495,
  -32768,    67,-32768,-32768,   393,   399,    67,-32768,-32768,-32768,
     508,   423,-32768,   463,   478,-32768,    36,-32768,-32768,-32768,
     488,-32768,   607,   423,    67,   512,    29,   465,-32768,   407,
  -32768,-32768,   516,-32768,-32768,    29,-32768,-32768,-32768,   348,
  -32768,-32768,-32768,    29,   348,-32768,-32768,   348,-32768,   532,
     534,-32768
};

static const short yypgoto[] =
{
  -32768,   -52,-32768,-32768,-32768,-32768,   339,-32768,-32768,-32768,
  -32768,-32768,-32768,   419,-32768,-32768,   360,-32768,-32768,-32768,
     344,-32768,    75,  -170,  -325,  -490,   -15,    11,    -6,-32768,
  -32768,    28,-32768,   -33,-32768,   -41,  -502,-32768,    31,  -468,
    -186,-32768,-32768,  -258,-32768,-32768,-32768,-32768,-32768,   139,
  -32768,-32768,-32768,-32768,-32768,-32768,  -171,   -91,-32768,   -60,
     -30,   116,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
  -32768,-32768,-32768,-32768,-32768,-32768,  -390,   202,-32768,-32768,
     -10,  -550,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
  -32768,-32768,  -392,-32768,-32768,-32768,-32768,-32768,   363,   -12,
  -32768,   480,  -158,-32768,-32768,   108
};


#define	YYLAST		1444


static const short yytable[] =
{
     171,   145,   287,   289,   269,   173,    86,   122,   258,   259,
     435,   155,   410,   410,   101,   200,   564,   203,   164,   291,
     532,   369,   271,   523,   534,   293,   294,   500,   443,   265,
     557,   500,    16,   377,   293,   294,   532,    16,   595,   591,
     532,   179,   117,   118,   501,   592,   534,   500,   501,   356,
     603,   500,   523,   182,   183,   285,   185,   187,   357,   552,
     533,    15,   196,   568,   501,   255,   205,   206,   501,   248,
     272,   532,   255,   190,    78,   481,   532,   266,   558,   396,
     533,    99,   500,   221,   222,   489,   245,   500,   397,   367,
     267,   192,   193,   601,   252,    32,   274,    17,   275,   501,
     532,   605,    17,   525,   501,    85,     1,     2,     3,    97,
     415,   500,   264,   268,   523,   100,   444,     4,    42,   372,
     239,   240,   241,   426,   427,   428,   429,   430,   501,   201,
     285,   204,   286,   101,   448,   512,   186,   411,   411,   514,
     302,   303,   566,   305,   306,   295,    98,   296,   308,   309,
     310,   311,   559,   313,   295,   512,   375,   317,   318,   319,
     320,   368,   584,   321,   322,   323,   324,   325,   326,   327,
     328,   329,   330,   331,   332,   333,   334,   335,   336,   337,
     338,   339,   340,   341,   342,   256,   543,   300,   431,   249,
     346,   347,   256,   290,   393,   544,    79,   348,   349,    80,
      81,    82,   265,   545,   261,   103,   549,   262,   376,   394,
     104,   124,   125,   237,   238,   239,   240,   241,    79,   544,
     261,    80,   285,   262,   288,   567,   545,   235,   236,   237,
     238,   239,   240,   241,   105,   370,   549,   371,   126,   127,
     434,   578,   488,   373,   374,   128,   129,   130,   106,   107,
     493,   567,   285,   108,   569,   109,   110,   131,   132,   589,
     111,   133,   112,   267,   114,   472,   457,   458,    32,   426,
     427,   428,   429,   430,   134,   115,   120,   116,   121,   135,
     136,   137,   138,   139,   140,   123,   268,   146,   147,    86,
     149,    42,   152,   153,   154,   156,   157,   168,   158,   400,
     404,   400,   407,   160,   162,   141,   163,   165,   166,   269,
     169,   142,   167,   176,   177,   124,   125,   179,   181,   184,
     190,   417,   243,   197,   195,   246,   199,   257,   418,   419,
     247,   263,   421,   253,   431,   208,   276,   143,   144,   209,
     260,   210,   126,   127,   211,   212,   254,   280,   213,   128,
     129,   130,    87,    88,    89,    90,    91,    92,    93,    94,
      95,   131,   132,   214,   215,   133,   216,   217,   218,   219,
     220,   299,   281,   460,   282,   283,   284,   292,   134,   298,
     484,   312,   314,   135,   136,   137,   138,   139,   140,   315,
     316,   343,   344,   345,   350,   351,   353,   124,   125,   355,
     363,   365,   476,   354,   250,   526,   480,   395,   482,   141,
     420,   383,   433,   602,   414,   142,   424,   436,   606,   409,
     437,   608,   440,   385,   126,   127,   446,   386,   447,   461,
     422,   128,   129,   130,   450,   456,   244,   527,   471,   462,
     466,   143,   144,   131,   132,   468,   387,   133,   556,    87,
      88,    89,    90,    91,    92,    93,    94,    95,   124,   125,
     134,   416,   455,   459,   470,   135,   136,   137,   138,   139,
     140,   465,   285,   487,   473,   483,   477,   485,   492,   496,
     -97,   497,   498,   528,   529,   126,   127,   530,   531,   536,
     538,   141,   398,   129,   130,   399,   539,   142,   551,   434,
     560,   561,   562,   570,   131,   132,   563,   572,   133,   124,
     125,   575,   579,   585,   582,   580,   590,   594,   251,  -108,
     598,   134,   403,   143,   144,   577,   135,   136,   137,   138,
     139,   140,   610,   596,   611,   198,   126,   127,   277,   297,
     479,   304,   565,   128,   129,   130,   576,   554,   537,   587,
     597,   449,   141,   588,   540,   131,   132,   464,   142,   133,
     124,   125,   301,   406,   583,   170,   474,     0,     0,     0,
       0,     0,   134,     0,     0,     0,     0,   135,   136,   137,
     138,   139,   140,     0,   143,   144,     0,   126,   127,     0,
       0,     0,     0,     0,   128,   129,   130,     0,     0,     0,
       0,     0,     0,   141,     0,     0,   131,   132,     0,   142,
     133,   499,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,   500,   134,     0,     0,     0,     0,   135,   136,
     137,   138,   139,   140,     0,   143,   144,     0,     0,   501,
       0,     0,     0,     0,     0,     0,     0,     0,   502,   503,
     504,   505,   506,     0,   141,   507,     0,     0,     0,     0,
     142,   223,    20,   224,   225,   226,   227,   228,   229,   230,
     231,   232,   233,   234,   235,   236,   237,   238,   239,   240,
     241,     0,     0,     0,     0,     0,   143,   144,     0,     0,
       0,   508,     0,   509,     0,     0,     0,   510,     0,     0,
      42,     0,     0,     0,    21,    22,     0,     0,     0,     0,
       0,    20,    23,    24,    25,    26,    27,    28,     0,     0,
       0,     0,     0,     0,     0,    29,    30,    31,    32,   511,
     512,     0,   513,     0,   514,    33,    34,    35,    36,    37,
      38,     0,     0,   364,     0,    39,    40,    41,    57,     0,
       0,    42,     0,    21,    22,     0,     0,     0,     0,     0,
       0,    23,    24,    25,    26,    27,    28,     0,     0,     0,
     242,     0,    43,    57,    29,    30,    31,    32,  -276,     0,
       0,     0,    58,    44,    33,    34,    35,    36,    37,    38,
       0,     0,     0,     0,    39,    40,    41,     0,     0,     0,
      42,     0,    59,     0,     0,   378,     0,    58,   229,   230,
     231,   232,   233,   234,   235,   236,   237,   238,   239,   240,
     241,    43,     0,     0,     0,     0,     0,    59,     0,     0,
       0,     0,    44,     0,     0,    60,     0,     0,    61,    62,
      63,    64,    65,   -41,    66,    67,    68,     0,    69,    70,
      71,    72,    73,     0,     0,     0,     0,    74,    75,    76,
      60,     0,     0,    61,    62,    63,    64,    65,     0,    66,
      67,    68,     0,    69,    70,    71,    72,    73,     0,     0,
       0,     0,    74,    75,    76,   223,     0,   224,   225,   226,
     227,   228,   229,   230,   231,   232,   233,   234,   235,   236,
     237,   238,   239,   240,   241,   223,     0,   224,   225,   226,
     227,   228,   229,   230,   231,   232,   233,   234,   235,   236,
     237,   238,   239,   240,   241,   223,     0,   224,   225,   226,
     227,   228,   229,   230,   231,   232,   233,   234,   235,   236,
     237,   238,   239,   240,   241,   223,     0,   224,   225,   226,
     227,   228,   229,   230,   231,   232,   233,   234,   235,   236,
     237,   238,   239,   240,   241,   223,     0,   224,   225,   226,
     227,   228,   229,   230,   231,   232,   233,   234,   235,   236,
     237,   238,   239,   240,   241,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,   223,   307,   224,   225,   226,
     227,   228,   229,   230,   231,   232,   233,   234,   235,   236,
     237,   238,   239,   240,   241,   223,   379,   224,   225,   226,
     227,   228,   229,   230,   231,   232,   233,   234,   235,   236,
     237,   238,   239,   240,   241,   223,   380,   224,   225,   226,
     227,   228,   229,   230,   231,   232,   233,   234,   235,   236,
     237,   238,   239,   240,   241,   223,   382,   224,   225,   226,
     227,   228,   229,   230,   231,   232,   233,   234,   235,   236,
     237,   238,   239,   240,   241,   223,   384,   224,   225,   226,
     227,   228,   229,   230,   231,   232,   233,   234,   235,   236,
     237,   238,   239,   240,   241,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,   223,   390,   224,   225,   226,
     227,   228,   229,   230,   231,   232,   233,   234,   235,   236,
     237,   238,   239,   240,   241,   223,   452,   224,   225,   226,
     227,   228,   229,   230,   231,   232,   233,   234,   235,   236,
     237,   238,   239,   240,   241,   223,   453,   224,   225,   226,
     227,   228,   229,   230,   231,   232,   233,   234,   235,   236,
     237,   238,   239,   240,   241,   223,   454,   224,   225,   226,
     227,   228,   229,   230,   231,   232,   233,   234,   235,   236,
     237,   238,   239,   240,   241,   223,   475,   224,   225,   226,
     227,   228,   229,   230,   231,   232,   233,   234,   235,   236,
     237,   238,   239,   240,   241,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,   223,   490,   224,   225,   226,
     227,   228,   229,   230,   231,   232,   233,   234,   235,   236,
     237,   238,   239,   240,   241,   223,   494,   224,   225,   226,
     227,   228,   229,   230,   231,   232,   233,   234,   235,   236,
     237,   238,   239,   240,   241,   223,   495,   224,   225,   226,
     227,   228,   229,   230,   231,   232,   233,   234,   235,   236,
     237,   238,   239,   240,   241,     0,   542,   226,   227,   228,
     229,   230,   231,   232,   233,   234,   235,   236,   237,   238,
     239,   240,   241,   223,   381,   224,   225,   226,   227,   228,
     229,   230,   231,   232,   233,   234,   235,   236,   237,   238,
     239,   240,   241,     0,     0,   434,     0,     0,     0,     0,
       0,     0,     0,   223,   388,   224,   225,   226,   227,   228,
     229,   230,   231,   232,   233,   234,   235,   236,   237,   238,
     239,   240,   241,     0,   389,   225,   226,   227,   228,   229,
     230,   231,   232,   233,   234,   235,   236,   237,   238,   239,
     240,   241,     0,     0,   391,   223,   392,   224,   225,   226,
     227,   228,   229,   230,   231,   232,   233,   234,   235,   236,
     237,   238,   239,   240,   241,   223,   439,   224,   225,   226,
     227,   228,   229,   230,   231,   232,   233,   234,   235,   236,
     237,   238,   239,   240,   241,   227,   228,   229,   230,   231,
     232,   233,   234,   235,   236,   237,   238,   239,   240,   241,
     228,   229,   230,   231,   232,   233,   234,   235,   236,   237,
     238,   239,   240,   241,   231,   232,   233,   234,   235,   236,
     237,   238,   239,   240,   241
};

static const short yycheck[] =
{
      91,    61,   188,   189,   174,    96,    18,    59,   166,   167,
     400,    71,     4,     4,     4,    10,     4,    10,    78,   190,
       4,   279,     4,   491,   514,     4,     5,    15,     4,     4,
       4,    15,    51,    52,     4,     5,     4,    51,   588,    10,
       4,     4,   124,   125,    32,    16,   536,    15,    32,   116,
     600,    15,   520,   105,   106,   124,   108,   109,   125,   128,
      48,     4,   114,   553,    32,     4,   126,   127,    32,     4,
      52,     4,     4,     4,    10,   467,     4,    52,    52,   116,
      48,    37,    15,   143,   144,   475,   146,    15,   125,    52,
      65,     4,     5,   595,   154,    70,   124,   116,   126,    32,
       4,   603,   116,   495,    32,    51,   110,   111,   112,    51,
     368,    15,   172,    88,   582,    37,    92,   121,    93,   290,
      32,    33,    34,    61,    62,    63,    64,    65,    32,   124,
     124,   124,   126,     4,   126,   123,   126,   129,   129,   127,
     200,   201,   126,   203,   204,   124,    51,   126,   208,   209,
     210,   211,   542,   213,   124,   123,   126,   217,   218,   219,
     220,   124,   126,   223,   224,   225,   226,   227,   228,   229,
     230,   231,   232,   233,   234,   235,   236,   237,   238,   239,
     240,   241,   242,   243,   244,   124,    90,   126,   126,   124,
     250,   251,   124,   124,   352,   123,   114,     3,     4,   117,
     118,   119,     4,   528,   114,    51,   531,   117,   299,   119,
      37,     3,     4,    30,    31,    32,    33,    34,   114,   123,
     114,   117,   124,   117,   126,   550,   551,    28,    29,    30,
      31,    32,    33,    34,    37,   287,   561,   289,    30,    31,
      37,   566,    39,     4,     5,    37,    38,    39,    37,    37,
      52,   576,   124,    37,   126,    37,    37,    49,    50,   584,
      37,    53,    37,    65,    37,   451,   424,   425,    70,    61,
      62,    63,    64,    65,    66,    37,   120,    37,     4,    71,
      72,    73,    74,    75,    76,     4,    88,     4,     4,   301,
       4,    93,     4,     4,     4,     4,     3,    52,     4,   359,
     360,   361,   362,     4,     4,    97,    99,     4,    16,   479,
     125,   103,    16,     4,     4,     3,     4,     4,     4,     4,
       4,   381,    10,     4,    37,   124,    51,    51,   388,   389,
     124,    52,   392,   124,   126,    37,   126,   129,   130,    37,
     125,    37,    30,    31,    37,    37,   124,   126,    37,    37,
      38,    39,     6,     7,     8,     9,    10,    11,    12,    13,
      14,    49,    50,    37,    37,    53,    37,    37,    37,    37,
      37,    10,   126,   433,   126,   126,   126,   126,    66,   126,
     471,     4,     4,    71,    72,    73,    74,    75,    76,     4,
       4,     4,     4,     4,     4,     4,   125,     3,     4,     4,
       4,    37,   462,   125,    10,   496,   466,    51,   468,    97,
       4,   126,    37,   599,    16,   103,    16,    16,   604,   124,
      92,   607,    82,   126,    30,    31,     4,   126,     4,    16,
     125,    37,    38,    39,    83,    52,   124,   497,    10,    37,
      37,   129,   130,    49,    50,    37,   126,    53,   539,     6,
       7,     8,     9,    10,    11,    12,    13,    14,     3,     4,
      66,   126,   126,   126,   126,    71,    72,    73,    74,    75,
      76,    51,   124,    52,   125,   125,    51,    85,    51,    10,
      37,    37,    16,    37,    37,    30,    31,    37,    37,    37,
      52,    97,    37,    38,    39,    40,    37,   103,    37,    37,
     126,    37,   126,    25,    49,    50,   126,   126,    53,     3,
       4,    16,     4,    25,    51,    92,     4,    52,   124,   126,
       4,    66,    16,   129,   130,   126,    71,    72,    73,    74,
      75,    76,     0,   126,     0,   116,    30,    31,   178,   195,
     465,   202,   548,    37,    38,    39,   561,   536,   520,   582,
     591,   412,    97,   583,   523,    49,    50,   441,   103,    53,
       3,     4,   199,   361,   574,    85,   458,    -1,    -1,    -1,
      -1,    -1,    66,    -1,    -1,    -1,    -1,    71,    72,    73,
      74,    75,    76,    -1,   129,   130,    -1,    30,    31,    -1,
      -1,    -1,    -1,    -1,    37,    38,    39,    -1,    -1,    -1,
      -1,    -1,    -1,    97,    -1,    -1,    49,    50,    -1,   103,
      53,     4,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    15,    66,    -1,    -1,    -1,    -1,    71,    72,
      73,    74,    75,    76,    -1,   129,   130,    -1,    -1,    32,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    41,    42,
      43,    44,    45,    -1,    97,    48,    -1,    -1,    -1,    -1,
     103,    15,     4,    17,    18,    19,    20,    21,    22,    23,
      24,    25,    26,    27,    28,    29,    30,    31,    32,    33,
      34,    -1,    -1,    -1,    -1,    -1,   129,   130,    -1,    -1,
      -1,    84,    -1,    86,    -1,    -1,    -1,    90,    -1,    -1,
      93,    -1,    -1,    -1,    46,    47,    -1,    -1,    -1,    -1,
      -1,     4,    54,    55,    56,    57,    58,    59,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    67,    68,    69,    70,   122,
     123,    -1,   125,    -1,   127,    77,    78,    79,    80,    81,
      82,    -1,    -1,    36,    -1,    87,    88,    89,     4,    -1,
      -1,    93,    -1,    46,    47,    -1,    -1,    -1,    -1,    -1,
      -1,    54,    55,    56,    57,    58,    59,    -1,    -1,    -1,
     124,    -1,   114,     4,    67,    68,    69,    70,   120,    -1,
      -1,    -1,    38,   125,    77,    78,    79,    80,    81,    82,
      -1,    -1,    -1,    -1,    87,    88,    89,    -1,    -1,    -1,
      93,    -1,    58,    -1,    -1,    36,    -1,    38,    22,    23,
      24,    25,    26,    27,    28,    29,    30,    31,    32,    33,
      34,   114,    -1,    -1,    -1,    -1,    -1,    58,    -1,    -1,
      -1,    -1,   125,    -1,    -1,    91,    -1,    -1,    94,    95,
      96,    97,    98,    99,   100,   101,   102,    -1,   104,   105,
     106,   107,   108,    -1,    -1,    -1,    -1,   113,   114,   115,
      91,    -1,    -1,    94,    95,    96,    97,    98,    -1,   100,
     101,   102,    -1,   104,   105,   106,   107,   108,    -1,    -1,
      -1,    -1,   113,   114,   115,    15,    -1,    17,    18,    19,
      20,    21,    22,    23,    24,    25,    26,    27,    28,    29,
      30,    31,    32,    33,    34,    15,    -1,    17,    18,    19,
      20,    21,    22,    23,    24,    25,    26,    27,    28,    29,
      30,    31,    32,    33,    34,    15,    -1,    17,    18,    19,
      20,    21,    22,    23,    24,    25,    26,    27,    28,    29,
      30,    31,    32,    33,    34,    15,    -1,    17,    18,    19,
      20,    21,    22,    23,    24,    25,    26,    27,    28,    29,
      30,    31,    32,    33,    34,    15,    -1,    17,    18,    19,
      20,    21,    22,    23,    24,    25,    26,    27,    28,    29,
      30,    31,    32,    33,    34,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    15,   126,    17,    18,    19,
      20,    21,    22,    23,    24,    25,    26,    27,    28,    29,
      30,    31,    32,    33,    34,    15,   126,    17,    18,    19,
      20,    21,    22,    23,    24,    25,    26,    27,    28,    29,
      30,    31,    32,    33,    34,    15,   126,    17,    18,    19,
      20,    21,    22,    23,    24,    25,    26,    27,    28,    29,
      30,    31,    32,    33,    34,    15,   126,    17,    18,    19,
      20,    21,    22,    23,    24,    25,    26,    27,    28,    29,
      30,    31,    32,    33,    34,    15,   126,    17,    18,    19,
      20,    21,    22,    23,    24,    25,    26,    27,    28,    29,
      30,    31,    32,    33,    34,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    15,   126,    17,    18,    19,
      20,    21,    22,    23,    24,    25,    26,    27,    28,    29,
      30,    31,    32,    33,    34,    15,   126,    17,    18,    19,
      20,    21,    22,    23,    24,    25,    26,    27,    28,    29,
      30,    31,    32,    33,    34,    15,   126,    17,    18,    19,
      20,    21,    22,    23,    24,    25,    26,    27,    28,    29,
      30,    31,    32,    33,    34,    15,   126,    17,    18,    19,
      20,    21,    22,    23,    24,    25,    26,    27,    28,    29,
      30,    31,    32,    33,    34,    15,   126,    17,    18,    19,
      20,    21,    22,    23,    24,    25,    26,    27,    28,    29,
      30,    31,    32,    33,    34,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    15,   126,    17,    18,    19,
      20,    21,    22,    23,    24,    25,    26,    27,    28,    29,
      30,    31,    32,    33,    34,    15,   126,    17,    18,    19,
      20,    21,    22,    23,    24,    25,    26,    27,    28,    29,
      30,    31,    32,    33,    34,    15,   126,    17,    18,    19,
      20,    21,    22,    23,    24,    25,    26,    27,    28,    29,
      30,    31,    32,    33,    34,    -1,   126,    19,    20,    21,
      22,    23,    24,    25,    26,    27,    28,    29,    30,    31,
      32,    33,    34,    15,   124,    17,    18,    19,    20,    21,
      22,    23,    24,    25,    26,    27,    28,    29,    30,    31,
      32,    33,    34,    -1,    -1,    37,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    15,   124,    17,    18,    19,    20,    21,
      22,    23,    24,    25,    26,    27,    28,    29,    30,    31,
      32,    33,    34,    -1,   124,    18,    19,    20,    21,    22,
      23,    24,    25,    26,    27,    28,    29,    30,    31,    32,
      33,    34,    -1,    -1,   124,    15,    16,    17,    18,    19,
      20,    21,    22,    23,    24,    25,    26,    27,    28,    29,
      30,    31,    32,    33,    34,    15,    16,    17,    18,    19,
      20,    21,    22,    23,    24,    25,    26,    27,    28,    29,
      30,    31,    32,    33,    34,    20,    21,    22,    23,    24,
      25,    26,    27,    28,    29,    30,    31,    32,    33,    34,
      21,    22,    23,    24,    25,    26,    27,    28,    29,    30,
      31,    32,    33,    34,    24,    25,    26,    27,    28,    29,
      30,    31,    32,    33,    34
};
/* -*-C-*-  Note some compilers choke on comments on `#line' lines.  */
#line 3 "/usr/share/bison-1.35/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-1.35/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 6:
#line 173 "ldgram.y"
{ ldlex_defsym(); }
    break;
case 7:
#line 175 "ldgram.y"
{
		  ldlex_popstate();
		  lang_add_assignment(exp_assop(yyvsp[-1].token,yyvsp[-2].name,yyvsp[0].etree));
		}
    break;
case 8:
#line 183 "ldgram.y"
{
		  ldlex_mri_script ();
		  PUSH_ERROR (_("MRI style script"));
		}
    break;
case 9:
#line 188 "ldgram.y"
{
		  ldlex_popstate ();
		  mri_draw_tree ();
		  POP_ERROR ();
		}
    break;
case 14:
#line 203 "ldgram.y"
{
			einfo(_("%P%F: unrecognised keyword in MRI style script '%s'\n"),yyvsp[0].name);
			}
    break;
case 15:
#line 206 "ldgram.y"
{
			config.map_filename = "-";
			}
    break;
case 18:
#line 212 "ldgram.y"
{ mri_public(yyvsp[-2].name, yyvsp[0].etree); }
    break;
case 19:
#line 214 "ldgram.y"
{ mri_public(yyvsp[-2].name, yyvsp[0].etree); }
    break;
case 20:
#line 216 "ldgram.y"
{ mri_public(yyvsp[-1].name, yyvsp[0].etree); }
    break;
case 21:
#line 218 "ldgram.y"
{ mri_format(yyvsp[0].name); }
    break;
case 22:
#line 220 "ldgram.y"
{ mri_output_section(yyvsp[-2].name, yyvsp[0].etree);}
    break;
case 23:
#line 222 "ldgram.y"
{ mri_output_section(yyvsp[-1].name, yyvsp[0].etree);}
    break;
case 24:
#line 224 "ldgram.y"
{ mri_output_section(yyvsp[-2].name, yyvsp[0].etree);}
    break;
case 25:
#line 226 "ldgram.y"
{ mri_align(yyvsp[-2].name,yyvsp[0].etree); }
    break;
case 26:
#line 228 "ldgram.y"
{ mri_align(yyvsp[-2].name,yyvsp[0].etree); }
    break;
case 27:
#line 230 "ldgram.y"
{ mri_alignmod(yyvsp[-2].name,yyvsp[0].etree); }
    break;
case 28:
#line 232 "ldgram.y"
{ mri_alignmod(yyvsp[-2].name,yyvsp[0].etree); }
    break;
case 31:
#line 236 "ldgram.y"
{ mri_name(yyvsp[0].name); }
    break;
case 32:
#line 238 "ldgram.y"
{ mri_alias(yyvsp[-2].name,yyvsp[0].name,0);}
    break;
case 33:
#line 240 "ldgram.y"
{ mri_alias (yyvsp[-2].name, 0, (int) yyvsp[0].bigint.integer); }
    break;
case 34:
#line 242 "ldgram.y"
{ mri_base(yyvsp[0].etree); }
    break;
case 35:
#line 244 "ldgram.y"
{ mri_truncate ((unsigned int) yyvsp[0].bigint.integer); }
    break;
case 38:
#line 248 "ldgram.y"
{ ldlex_script (); ldfile_open_command_file(yyvsp[0].name); }
    break;
case 39:
#line 250 "ldgram.y"
{ ldlex_popstate (); }
    break;
case 40:
#line 252 "ldgram.y"
{ lang_add_entry (yyvsp[0].name, FALSE); }
    break;
case 42:
#line 257 "ldgram.y"
{ mri_order(yyvsp[0].name); }
    break;
case 43:
#line 258 "ldgram.y"
{ mri_order(yyvsp[0].name); }
    break;
case 45:
#line 264 "ldgram.y"
{ mri_load(yyvsp[0].name); }
    break;
case 46:
#line 265 "ldgram.y"
{ mri_load(yyvsp[0].name); }
    break;
case 47:
#line 270 "ldgram.y"
{ mri_only_load(yyvsp[0].name); }
    break;
case 48:
#line 272 "ldgram.y"
{ mri_only_load(yyvsp[0].name); }
    break;
case 49:
#line 276 "ldgram.y"
{ yyval.name = NULL; }
    break;
case 52:
#line 283 "ldgram.y"
{ ldlang_add_undef (yyvsp[0].name); }
    break;
case 53:
#line 285 "ldgram.y"
{ ldlang_add_undef (yyvsp[0].name); }
    break;
case 54:
#line 287 "ldgram.y"
{ ldlang_add_undef (yyvsp[0].name); }
    break;
case 55:
#line 291 "ldgram.y"
{
	 ldlex_both();
	}
    break;
case 56:
#line 295 "ldgram.y"
{
	ldlex_popstate();
	}
    break;
case 69:
#line 320 "ldgram.y"
{ lang_add_target(yyvsp[-1].name); }
    break;
case 70:
#line 322 "ldgram.y"
{ ldfile_add_library_path (yyvsp[-1].name, FALSE); }
    break;
case 71:
#line 324 "ldgram.y"
{ lang_add_output(yyvsp[-1].name, 1); }
    break;
case 72:
#line 326 "ldgram.y"
{ lang_add_output_format (yyvsp[-1].name, (char *) NULL,
					    (char *) NULL, 1); }
    break;
case 73:
#line 329 "ldgram.y"
{ lang_add_output_format (yyvsp[-5].name, yyvsp[-3].name, yyvsp[-1].name, 1); }
    break;
case 74:
#line 331 "ldgram.y"
{ ldfile_set_output_arch(yyvsp[-1].name); }
    break;
case 75:
#line 333 "ldgram.y"
{ command_line.force_common_definition = TRUE ; }
    break;
case 76:
#line 335 "ldgram.y"
{ command_line.inhibit_common_definition = TRUE ; }
    break;
case 78:
#line 338 "ldgram.y"
{ lang_enter_group (); }
    break;
case 79:
#line 340 "ldgram.y"
{ lang_leave_group (); }
    break;
case 80:
#line 342 "ldgram.y"
{ lang_add_map(yyvsp[-1].name); }
    break;
case 81:
#line 344 "ldgram.y"
{ ldlex_script (); ldfile_open_command_file(yyvsp[0].name); }
    break;
case 82:
#line 346 "ldgram.y"
{ ldlex_popstate (); }
    break;
case 83:
#line 348 "ldgram.y"
{
		  lang_add_nocrossref (yyvsp[-1].nocrossref);
		}
    break;
case 85:
#line 356 "ldgram.y"
{ lang_add_input_file(yyvsp[0].name,lang_input_file_is_search_file_enum,
				 (char *)NULL); }
    break;
case 86:
#line 359 "ldgram.y"
{ lang_add_input_file(yyvsp[0].name,lang_input_file_is_search_file_enum,
				 (char *)NULL); }
    break;
case 87:
#line 362 "ldgram.y"
{ lang_add_input_file(yyvsp[0].name,lang_input_file_is_search_file_enum,
				 (char *)NULL); }
    break;
case 88:
#line 365 "ldgram.y"
{ lang_add_input_file(yyvsp[0].name,lang_input_file_is_l_enum,
				 (char *)NULL); }
    break;
case 89:
#line 368 "ldgram.y"
{ lang_add_input_file(yyvsp[0].name,lang_input_file_is_l_enum,
				 (char *)NULL); }
    break;
case 90:
#line 371 "ldgram.y"
{ lang_add_input_file(yyvsp[0].name,lang_input_file_is_l_enum,
				 (char *)NULL); }
    break;
case 95:
#line 387 "ldgram.y"
{ lang_add_entry (yyvsp[-1].name, FALSE); }
    break;
case 97:
#line 395 "ldgram.y"
{
			  yyval.cname = yyvsp[0].name;
			}
    break;
case 98:
#line 399 "ldgram.y"
{
			  yyval.cname = "*";
			}
    break;
case 99:
#line 403 "ldgram.y"
{
			  yyval.cname = "?";
			}
    break;
case 100:
#line 410 "ldgram.y"
{
			  yyval.wildcard.name = yyvsp[0].cname;
			  yyval.wildcard.sorted = FALSE;
			  yyval.wildcard.exclude_name_list = NULL;
			}
    break;
case 101:
#line 416 "ldgram.y"
{
			  yyval.wildcard.name = yyvsp[0].cname;
			  yyval.wildcard.sorted = FALSE;
			  yyval.wildcard.exclude_name_list = yyvsp[-2].name_list;
			}
    break;
case 102:
#line 422 "ldgram.y"
{
			  yyval.wildcard.name = yyvsp[-1].cname;
			  yyval.wildcard.sorted = TRUE;
			  yyval.wildcard.exclude_name_list = NULL;
			}
    break;
case 103:
#line 428 "ldgram.y"
{
			  yyval.wildcard.name = yyvsp[-1].cname;
			  yyval.wildcard.sorted = TRUE;
			  yyval.wildcard.exclude_name_list = yyvsp[-3].name_list;
			}
    break;
case 104:
#line 437 "ldgram.y"
{
			  struct name_list *tmp;
			  tmp = (struct name_list *) xmalloc (sizeof *tmp);
			  tmp->name = yyvsp[0].cname;
			  tmp->next = yyvsp[-1].name_list;
			  yyval.name_list = tmp;
			}
    break;
case 105:
#line 446 "ldgram.y"
{
			  struct name_list *tmp;
			  tmp = (struct name_list *) xmalloc (sizeof *tmp);
			  tmp->name = yyvsp[0].cname;
			  tmp->next = NULL;
			  yyval.name_list = tmp;
			}
    break;
case 106:
#line 457 "ldgram.y"
{
			  struct wildcard_list *tmp;
			  tmp = (struct wildcard_list *) xmalloc (sizeof *tmp);
			  tmp->next = yyvsp[-2].wildcard_list;
			  tmp->spec = yyvsp[0].wildcard;
			  yyval.wildcard_list = tmp;
			}
    break;
case 107:
#line 466 "ldgram.y"
{
			  struct wildcard_list *tmp;
			  tmp = (struct wildcard_list *) xmalloc (sizeof *tmp);
			  tmp->next = NULL;
			  tmp->spec = yyvsp[0].wildcard;
			  yyval.wildcard_list = tmp;
			}
    break;
case 108:
#line 477 "ldgram.y"
{
			  struct wildcard_spec tmp;
			  tmp.name = yyvsp[0].name;
			  tmp.exclude_name_list = NULL;
			  tmp.sorted = FALSE;
			  lang_add_wild (&tmp, NULL, ldgram_had_keep);
			}
    break;
case 109:
#line 485 "ldgram.y"
{
			  lang_add_wild (NULL, yyvsp[-1].wildcard_list, ldgram_had_keep);
			}
    break;
case 110:
#line 489 "ldgram.y"
{
			  lang_add_wild (&yyvsp[-3].wildcard, yyvsp[-1].wildcard_list, ldgram_had_keep);
			}
    break;
case 112:
#line 497 "ldgram.y"
{ ldgram_had_keep = TRUE; }
    break;
case 113:
#line 499 "ldgram.y"
{ ldgram_had_keep = FALSE; }
    break;
case 115:
#line 505 "ldgram.y"
{
 		lang_add_attribute(lang_object_symbols_statement_enum);
	      	}
    break;
case 117:
#line 510 "ldgram.y"
{

		  lang_add_attribute(lang_constructors_statement_enum);
		}
    break;
case 118:
#line 515 "ldgram.y"
{
		  constructors_sorted = TRUE;
		  lang_add_attribute (lang_constructors_statement_enum);
		}
    break;
case 120:
#line 521 "ldgram.y"
{
			  lang_add_data ((int) yyvsp[-3].integer, yyvsp[-1].etree);
			}
    break;
case 121:
#line 526 "ldgram.y"
{
			  lang_add_fill (yyvsp[-1].fill);
			}
    break;
case 126:
#line 543 "ldgram.y"
{ yyval.integer = yyvsp[0].token; }
    break;
case 127:
#line 545 "ldgram.y"
{ yyval.integer = yyvsp[0].token; }
    break;
case 128:
#line 547 "ldgram.y"
{ yyval.integer = yyvsp[0].token; }
    break;
case 129:
#line 549 "ldgram.y"
{ yyval.integer = yyvsp[0].token; }
    break;
case 130:
#line 551 "ldgram.y"
{ yyval.integer = yyvsp[0].token; }
    break;
case 131:
#line 556 "ldgram.y"
{
		  yyval.fill = exp_get_fill (yyvsp[0].etree,
				     0,
				     "fill value",
				     lang_first_phase_enum);
		}
    break;
case 132:
#line 566 "ldgram.y"
{ yyval.fill = yyvsp[0].fill; }
    break;
case 133:
#line 567 "ldgram.y"
{ yyval.fill = (fill_type *) 0; }
    break;
case 134:
#line 572 "ldgram.y"
{ yyval.token = '+'; }
    break;
case 135:
#line 574 "ldgram.y"
{ yyval.token = '-'; }
    break;
case 136:
#line 576 "ldgram.y"
{ yyval.token = '*'; }
    break;
case 137:
#line 578 "ldgram.y"
{ yyval.token = '/'; }
    break;
case 138:
#line 580 "ldgram.y"
{ yyval.token = LSHIFT; }
    break;
case 139:
#line 582 "ldgram.y"
{ yyval.token = RSHIFT; }
    break;
case 140:
#line 584 "ldgram.y"
{ yyval.token = '&'; }
    break;
case 141:
#line 586 "ldgram.y"
{ yyval.token = '|'; }
    break;
case 144:
#line 596 "ldgram.y"
{
		  lang_add_assignment (exp_assop (yyvsp[-1].token, yyvsp[-2].name, yyvsp[0].etree));
		}
    break;
case 145:
#line 600 "ldgram.y"
{
		  lang_add_assignment (exp_assop ('=', yyvsp[-2].name,
						  exp_binop (yyvsp[-1].token,
							     exp_nameop (NAME,
									 yyvsp[-2].name),
							     yyvsp[0].etree)));
		}
    break;
case 146:
#line 608 "ldgram.y"
{
		  lang_add_assignment (exp_provide (yyvsp[-3].name, yyvsp[-1].etree));
		}
    break;
case 153:
#line 630 "ldgram.y"
{ region = lang_memory_region_lookup(yyvsp[0].name); }
    break;
case 154:
#line 633 "ldgram.y"
{}
    break;
case 155:
#line 638 "ldgram.y"
{ region->current =
		 region->origin =
		 exp_get_vma(yyvsp[0].etree, 0L,"origin", lang_first_phase_enum);
}
    break;
case 156:
#line 646 "ldgram.y"
{ region->length = exp_get_vma(yyvsp[0].etree,
					       ~((bfd_vma)0),
					       "length",
					       lang_first_phase_enum);
		}
    break;
case 157:
#line 655 "ldgram.y"
{ /* dummy action to avoid bison 1.25 error message */ }
    break;
case 161:
#line 666 "ldgram.y"
{ lang_set_flags (region, yyvsp[0].name, 0); }
    break;
case 162:
#line 668 "ldgram.y"
{ lang_set_flags (region, yyvsp[0].name, 1); }
    break;
case 163:
#line 673 "ldgram.y"
{ lang_startup(yyvsp[-1].name); }
    break;
case 165:
#line 679 "ldgram.y"
{ ldemul_hll((char *)NULL); }
    break;
case 166:
#line 684 "ldgram.y"
{ ldemul_hll(yyvsp[0].name); }
    break;
case 167:
#line 686 "ldgram.y"
{ ldemul_hll(yyvsp[0].name); }
    break;
case 169:
#line 694 "ldgram.y"
{ ldemul_syslib(yyvsp[0].name); }
    break;
case 171:
#line 700 "ldgram.y"
{ lang_float(TRUE); }
    break;
case 172:
#line 702 "ldgram.y"
{ lang_float(FALSE); }
    break;
case 173:
#line 707 "ldgram.y"
{
		  yyval.nocrossref = NULL;
		}
    break;
case 174:
#line 711 "ldgram.y"
{
		  struct lang_nocrossref *n;

		  n = (struct lang_nocrossref *) xmalloc (sizeof *n);
		  n->name = yyvsp[-1].name;
		  n->next = yyvsp[0].nocrossref;
		  yyval.nocrossref = n;
		}
    break;
case 175:
#line 720 "ldgram.y"
{
		  struct lang_nocrossref *n;

		  n = (struct lang_nocrossref *) xmalloc (sizeof *n);
		  n->name = yyvsp[-2].name;
		  n->next = yyvsp[0].nocrossref;
		  yyval.nocrossref = n;
		}
    break;
case 176:
#line 730 "ldgram.y"
{ ldlex_expression(); }
    break;
case 177:
#line 732 "ldgram.y"
{ ldlex_popstate(); yyval.etree=yyvsp[0].etree;}
    break;
case 178:
#line 737 "ldgram.y"
{ yyval.etree = exp_unop('-', yyvsp[0].etree); }
    break;
case 179:
#line 739 "ldgram.y"
{ yyval.etree = yyvsp[-1].etree; }
    break;
case 180:
#line 741 "ldgram.y"
{ yyval.etree = exp_unop((int) yyvsp[-3].integer,yyvsp[-1].etree); }
    break;
case 181:
#line 743 "ldgram.y"
{ yyval.etree = exp_unop('!', yyvsp[0].etree); }
    break;
case 182:
#line 745 "ldgram.y"
{ yyval.etree = yyvsp[0].etree; }
    break;
case 183:
#line 747 "ldgram.y"
{ yyval.etree = exp_unop('~', yyvsp[0].etree);}
    break;
case 184:
#line 750 "ldgram.y"
{ yyval.etree = exp_binop('*', yyvsp[-2].etree, yyvsp[0].etree); }
    break;
case 185:
#line 752 "ldgram.y"
{ yyval.etree = exp_binop('/', yyvsp[-2].etree, yyvsp[0].etree); }
    break;
case 186:
#line 754 "ldgram.y"
{ yyval.etree = exp_binop('%', yyvsp[-2].etree, yyvsp[0].etree); }
    break;
case 187:
#line 756 "ldgram.y"
{ yyval.etree = exp_binop('+', yyvsp[-2].etree, yyvsp[0].etree); }
    break;
case 188:
#line 758 "ldgram.y"
{ yyval.etree = exp_binop('-' , yyvsp[-2].etree, yyvsp[0].etree); }
    break;
case 189:
#line 760 "ldgram.y"
{ yyval.etree = exp_binop(LSHIFT , yyvsp[-2].etree, yyvsp[0].etree); }
    break;
case 190:
#line 762 "ldgram.y"
{ yyval.etree = exp_binop(RSHIFT , yyvsp[-2].etree, yyvsp[0].etree); }
    break;
case 191:
#line 764 "ldgram.y"
{ yyval.etree = exp_binop(EQ , yyvsp[-2].etree, yyvsp[0].etree); }
    break;
case 192:
#line 766 "ldgram.y"
{ yyval.etree = exp_binop(NE , yyvsp[-2].etree, yyvsp[0].etree); }
    break;
case 193:
#line 768 "ldgram.y"
{ yyval.etree = exp_binop(LE , yyvsp[-2].etree, yyvsp[0].etree); }
    break;
case 194:
#line 770 "ldgram.y"
{ yyval.etree = exp_binop(GE , yyvsp[-2].etree, yyvsp[0].etree); }
    break;
case 195:
#line 772 "ldgram.y"
{ yyval.etree = exp_binop('<' , yyvsp[-2].etree, yyvsp[0].etree); }
    break;
case 196:
#line 774 "ldgram.y"
{ yyval.etree = exp_binop('>' , yyvsp[-2].etree, yyvsp[0].etree); }
    break;
case 197:
#line 776 "ldgram.y"
{ yyval.etree = exp_binop('&' , yyvsp[-2].etree, yyvsp[0].etree); }
    break;
case 198:
#line 778 "ldgram.y"
{ yyval.etree = exp_binop('^' , yyvsp[-2].etree, yyvsp[0].etree); }
    break;
case 199:
#line 780 "ldgram.y"
{ yyval.etree = exp_binop('|' , yyvsp[-2].etree, yyvsp[0].etree); }
    break;
case 200:
#line 782 "ldgram.y"
{ yyval.etree = exp_trinop('?' , yyvsp[-4].etree, yyvsp[-2].etree, yyvsp[0].etree); }
    break;
case 201:
#line 784 "ldgram.y"
{ yyval.etree = exp_binop(ANDAND , yyvsp[-2].etree, yyvsp[0].etree); }
    break;
case 202:
#line 786 "ldgram.y"
{ yyval.etree = exp_binop(OROR , yyvsp[-2].etree, yyvsp[0].etree); }
    break;
case 203:
#line 788 "ldgram.y"
{ yyval.etree = exp_nameop(DEFINED, yyvsp[-1].name); }
    break;
case 204:
#line 790 "ldgram.y"
{ yyval.etree = exp_bigintop (yyvsp[0].bigint.integer, yyvsp[0].bigint.str); }
    break;
case 205:
#line 792 "ldgram.y"
{ yyval.etree = exp_nameop(SIZEOF_HEADERS,0); }
    break;
case 206:
#line 795 "ldgram.y"
{ yyval.etree = exp_nameop(SIZEOF,yyvsp[-1].name); }
    break;
case 207:
#line 797 "ldgram.y"
{ yyval.etree = exp_nameop(ADDR,yyvsp[-1].name); }
    break;
case 208:
#line 799 "ldgram.y"
{ yyval.etree = exp_nameop(LOADADDR,yyvsp[-1].name); }
    break;
case 209:
#line 801 "ldgram.y"
{ yyval.etree = exp_unop(ABSOLUTE, yyvsp[-1].etree); }
    break;
case 210:
#line 803 "ldgram.y"
{ yyval.etree = exp_unop(ALIGN_K,yyvsp[-1].etree); }
    break;
case 211:
#line 805 "ldgram.y"
{ yyval.etree = exp_binop (DATA_SEGMENT_ALIGN, yyvsp[-3].etree, yyvsp[-1].etree); }
    break;
case 212:
#line 807 "ldgram.y"
{ yyval.etree = exp_unop(DATA_SEGMENT_END, yyvsp[-1].etree); }
    break;
case 213:
#line 809 "ldgram.y"
{ yyval.etree = exp_unop(ALIGN_K,yyvsp[-1].etree); }
    break;
case 214:
#line 811 "ldgram.y"
{ yyval.etree = exp_nameop(NAME,yyvsp[0].name); }
    break;
case 215:
#line 813 "ldgram.y"
{ yyval.etree = exp_binop (MAX_K, yyvsp[-3].etree, yyvsp[-1].etree ); }
    break;
case 216:
#line 815 "ldgram.y"
{ yyval.etree = exp_binop (MIN_K, yyvsp[-3].etree, yyvsp[-1].etree ); }
    break;
case 217:
#line 817 "ldgram.y"
{ yyval.etree = exp_assert (yyvsp[-3].etree, yyvsp[-1].name); }
    break;
case 218:
#line 822 "ldgram.y"
{ yyval.name = yyvsp[0].name; }
    break;
case 219:
#line 823 "ldgram.y"
{ yyval.name = 0; }
    break;
case 220:
#line 827 "ldgram.y"
{ yyval.etree = yyvsp[-1].etree; }
    break;
case 221:
#line 828 "ldgram.y"
{ yyval.etree = 0; }
    break;
case 222:
#line 831 "ldgram.y"
{ ldlex_expression(); }
    break;
case 223:
#line 833 "ldgram.y"
{ ldlex_popstate (); ldlex_script (); }
    break;
case 224:
#line 835 "ldgram.y"
{
			  lang_enter_output_section_statement(yyvsp[-5].name, yyvsp[-3].etree,
							      sectype,
							      0, 0, 0, yyvsp[-2].etree);
			}
    break;
case 225:
#line 841 "ldgram.y"
{ ldlex_popstate (); ldlex_expression (); }
    break;
case 226:
#line 843 "ldgram.y"
{
		  ldlex_popstate ();
		  lang_leave_output_section_statement (yyvsp[0].fill, yyvsp[-3].name, yyvsp[-1].section_phdr, yyvsp[-2].name);
		}
    break;
case 227:
#line 848 "ldgram.y"
{}
    break;
case 228:
#line 850 "ldgram.y"
{ ldlex_expression (); }
    break;
case 229:
#line 852 "ldgram.y"
{ ldlex_popstate (); ldlex_script (); }
    break;
case 230:
#line 854 "ldgram.y"
{
			  lang_enter_overlay (yyvsp[-4].etree);
			}
    break;
case 231:
#line 859 "ldgram.y"
{ ldlex_popstate (); ldlex_expression (); }
    break;
case 232:
#line 861 "ldgram.y"
{
			  ldlex_popstate ();
			  lang_leave_overlay (yyvsp[-10].etree, (int) yyvsp[-11].integer,
					      yyvsp[0].fill, yyvsp[-3].name, yyvsp[-1].section_phdr, yyvsp[-2].name);
			}
    break;
case 234:
#line 871 "ldgram.y"
{ ldlex_expression (); }
    break;
case 235:
#line 873 "ldgram.y"
{
		  ldlex_popstate ();
		  lang_add_assignment (exp_assop ('=', ".", yyvsp[0].etree));
		}
    break;
case 237:
#line 881 "ldgram.y"
{ sectype = noload_section; }
    break;
case 238:
#line 882 "ldgram.y"
{ sectype = dsect_section; }
    break;
case 239:
#line 883 "ldgram.y"
{ sectype = copy_section; }
    break;
case 240:
#line 884 "ldgram.y"
{ sectype = info_section; }
    break;
case 241:
#line 885 "ldgram.y"
{ sectype = overlay_section; }
    break;
case 243:
#line 890 "ldgram.y"
{ sectype = normal_section; }
    break;
case 244:
#line 891 "ldgram.y"
{ sectype = normal_section; }
    break;
case 245:
#line 895 "ldgram.y"
{ yyval.etree = yyvsp[-2].etree; }
    break;
case 246:
#line 896 "ldgram.y"
{ yyval.etree = (etree_type *)NULL;  }
    break;
case 247:
#line 901 "ldgram.y"
{ yyval.etree = yyvsp[-3].etree; }
    break;
case 248:
#line 903 "ldgram.y"
{ yyval.etree = yyvsp[-7].etree; }
    break;
case 249:
#line 907 "ldgram.y"
{ yyval.etree = yyvsp[-1].etree; }
    break;
case 250:
#line 908 "ldgram.y"
{ yyval.etree = (etree_type *) NULL;  }
    break;
case 251:
#line 913 "ldgram.y"
{ yyval.integer = 0; }
    break;
case 252:
#line 915 "ldgram.y"
{ yyval.integer = 1; }
    break;
case 253:
#line 920 "ldgram.y"
{ yyval.name = yyvsp[0].name; }
    break;
case 254:
#line 921 "ldgram.y"
{ yyval.name = "*default*"; }
    break;
case 255:
#line 926 "ldgram.y"
{
		  yyval.section_phdr = NULL;
		}
    break;
case 256:
#line 930 "ldgram.y"
{
		  struct lang_output_section_phdr_list *n;

		  n = ((struct lang_output_section_phdr_list *)
		       xmalloc (sizeof *n));
		  n->name = yyvsp[0].name;
		  n->used = FALSE;
		  n->next = yyvsp[-2].section_phdr;
		  yyval.section_phdr = n;
		}
    break;
case 258:
#line 946 "ldgram.y"
{
			  ldlex_script ();
			  lang_enter_overlay_section (yyvsp[0].name);
			}
    break;
case 259:
#line 951 "ldgram.y"
{ ldlex_popstate (); ldlex_expression (); }
    break;
case 260:
#line 953 "ldgram.y"
{
			  ldlex_popstate ();
			  lang_leave_overlay_section (yyvsp[0].fill, yyvsp[-1].section_phdr);
			}
    break;
case 265:
#line 970 "ldgram.y"
{ ldlex_expression (); }
    break;
case 266:
#line 971 "ldgram.y"
{ ldlex_popstate (); }
    break;
case 267:
#line 973 "ldgram.y"
{
		  lang_new_phdr (yyvsp[-5].name, yyvsp[-3].etree, yyvsp[-2].phdr.filehdr, yyvsp[-2].phdr.phdrs, yyvsp[-2].phdr.at,
				 yyvsp[-2].phdr.flags);
		}
    break;
case 268:
#line 981 "ldgram.y"
{
		  yyval.etree = yyvsp[0].etree;

		  if (yyvsp[0].etree->type.node_class == etree_name
		      && yyvsp[0].etree->type.node_code == NAME)
		    {
		      const char *s;
		      unsigned int i;
		      static const char * const phdr_types[] =
			{
			  "PT_NULL", "PT_LOAD", "PT_DYNAMIC",
			  "PT_INTERP", "PT_NOTE", "PT_SHLIB",
			  "PT_PHDR", "PT_TLS"
			};

		      s = yyvsp[0].etree->name.name;
		      for (i = 0;
			   i < sizeof phdr_types / sizeof phdr_types[0];
			   i++)
			if (strcmp (s, phdr_types[i]) == 0)
			  {
			    yyval.etree = exp_intop (i);
			    break;
			  }
		      if (i == sizeof phdr_types / sizeof phdr_types[0])
			{
			  if (strcmp (s, "PT_GNU_EH_FRAME") == 0)
			    yyval.etree = exp_intop (0x6474e550);
			  else
			    {
			      einfo (_("\
%X%P:%S: unknown phdr type `%s' (try integer literal)\n"),
				     s);
			      yyval.etree = exp_intop (0);
			    }
			}
		    }
		}
    break;
case 269:
#line 1023 "ldgram.y"
{
		  memset (&yyval.phdr, 0, sizeof (struct phdr_info));
		}
    break;
case 270:
#line 1027 "ldgram.y"
{
		  yyval.phdr = yyvsp[0].phdr;
		  if (strcmp (yyvsp[-2].name, "FILEHDR") == 0 && yyvsp[-1].etree == NULL)
		    yyval.phdr.filehdr = TRUE;
		  else if (strcmp (yyvsp[-2].name, "PHDRS") == 0 && yyvsp[-1].etree == NULL)
		    yyval.phdr.phdrs = TRUE;
		  else if (strcmp (yyvsp[-2].name, "FLAGS") == 0 && yyvsp[-1].etree != NULL)
		    yyval.phdr.flags = yyvsp[-1].etree;
		  else
		    einfo (_("%X%P:%S: PHDRS syntax error at `%s'\n"), yyvsp[-2].name);
		}
    break;
case 271:
#line 1039 "ldgram.y"
{
		  yyval.phdr = yyvsp[0].phdr;
		  yyval.phdr.at = yyvsp[-2].etree;
		}
    break;
case 272:
#line 1047 "ldgram.y"
{
		  yyval.etree = NULL;
		}
    break;
case 273:
#line 1051 "ldgram.y"
{
		  yyval.etree = yyvsp[-1].etree;
		}
    break;
case 274:
#line 1059 "ldgram.y"
{
		  ldlex_version_file ();
		  PUSH_ERROR (_("VERSION script"));
		}
    break;
case 275:
#line 1064 "ldgram.y"
{
		  ldlex_popstate ();
		  POP_ERROR ();
		}
    break;
case 276:
#line 1073 "ldgram.y"
{
		  ldlex_version_script ();
		}
    break;
case 277:
#line 1077 "ldgram.y"
{
		  ldlex_popstate ();
		}
    break;
case 280:
#line 1089 "ldgram.y"
{
		  lang_register_vers_node (NULL, yyvsp[-2].versnode, NULL);
		}
    break;
case 281:
#line 1093 "ldgram.y"
{
		  lang_register_vers_node (yyvsp[-4].name, yyvsp[-2].versnode, NULL);
		}
    break;
case 282:
#line 1097 "ldgram.y"
{
		  lang_register_vers_node (yyvsp[-5].name, yyvsp[-3].versnode, yyvsp[-1].deflist);
		}
    break;
case 283:
#line 1104 "ldgram.y"
{
		  yyval.deflist = lang_add_vers_depend (NULL, yyvsp[0].name);
		}
    break;
case 284:
#line 1108 "ldgram.y"
{
		  yyval.deflist = lang_add_vers_depend (yyvsp[-1].deflist, yyvsp[0].name);
		}
    break;
case 285:
#line 1115 "ldgram.y"
{
		  yyval.versnode = lang_new_vers_node (NULL, NULL);
		}
    break;
case 286:
#line 1119 "ldgram.y"
{
		  yyval.versnode = lang_new_vers_node (yyvsp[-1].versyms, NULL);
		}
    break;
case 287:
#line 1123 "ldgram.y"
{
		  yyval.versnode = lang_new_vers_node (yyvsp[-1].versyms, NULL);
		}
    break;
case 288:
#line 1127 "ldgram.y"
{
		  yyval.versnode = lang_new_vers_node (NULL, yyvsp[-1].versyms);
		}
    break;
case 289:
#line 1131 "ldgram.y"
{
		  yyval.versnode = lang_new_vers_node (yyvsp[-5].versyms, yyvsp[-1].versyms);
		}
    break;
case 290:
#line 1138 "ldgram.y"
{
		  yyval.versyms = lang_new_vers_pattern (NULL, yyvsp[0].name, ldgram_vers_current_lang);
		}
    break;
case 291:
#line 1142 "ldgram.y"
{
		  yyval.versyms = lang_new_vers_pattern (yyvsp[-2].versyms, yyvsp[0].name, ldgram_vers_current_lang);
		}
    break;
case 292:
#line 1146 "ldgram.y"
{
			  yyval.name = ldgram_vers_current_lang;
			  ldgram_vers_current_lang = yyvsp[-1].name;
			}
    break;
case 293:
#line 1151 "ldgram.y"
{
			  yyval.versyms = yyvsp[-2].versyms;
			  ldgram_vers_current_lang = yyvsp[-3].name;
			}
    break;
case 294:
#line 1156 "ldgram.y"
{
			  yyval.name = ldgram_vers_current_lang;
			  ldgram_vers_current_lang = yyvsp[-1].name;
			}
    break;
case 295:
#line 1161 "ldgram.y"
{
			  yyval.versyms = yyvsp[-2].versyms;
			  ldgram_vers_current_lang = yyvsp[-3].name;
			}
    break;
}

#line 705 "/usr/share/bison-1.35/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 1172 "ldgram.y"

void
yyerror(arg)
     const char *arg;
{
  if (ldfile_assumed_script)
    einfo (_("%P:%s: file format not recognized; treating as linker script\n"),
	   ldfile_input_filename);
  if (error_index > 0 && error_index < ERROR_NAME_MAX)
     einfo ("%P%F:%S: %s in %s\n", arg, error_names[error_index-1]);
  else
     einfo ("%P%F:%S: %s\n", arg);
}
