
/*  A Bison parser, made from ldgram.y
    by GNU Bison version 1.28  */

#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	SIZEOF_HEADERS	289
#define	OUTPUT_FORMAT	290
#define	FORCE_COMMON_ALLOCATION	291
#define	OUTPUT_ARCH	292
#define	INCLUDE	293
#define	MEMORY	294
#define	DEFSYMEND	295
#define	NOLOAD	296
#define	DSECT	297
#define	COPY	298
#define	INFO	299
#define	OVERLAY	300
#define	DEFINED	301
#define	TARGET_K	302
#define	SEARCH_DIR	303
#define	MAP	304
#define	ENTRY	305
#define	NEXT	306
#define	SIZEOF	307
#define	ADDR	308
#define	LOADADDR	309
#define	MAX_K	310
#define	MIN_K	311
#define	STARTUP	312
#define	HLL	313
#define	SYSLIB	314
#define	FLOAT	315
#define	NOFLOAT	316
#define	NOCROSSREFS	317
#define	ORIGIN	318
#define	FILL	319
#define	LENGTH	320
#define	CREATE_OBJECT_SYMBOLS	321
#define	INPUT	322
#define	GROUP	323
#define	OUTPUT	324
#define	CONSTRUCTORS	325
#define	ALIGNMOD	326
#define	AT	327
#define	PROVIDE	328
#define	CHIP	329
#define	LIST	330
#define	SECT	331
#define	ABSOLUTE	332
#define	LOAD	333
#define	NEWLINE	334
#define	ENDWORD	335
#define	ORDER	336
#define	NAMEWORD	337
#define	ASSERT_K	338
#define	FORMAT	339
#define	PUBLIC	340
#define	BASE	341
#define	ALIAS	342
#define	TRUNCATE	343
#define	REL	344
#define	INPUT_SCRIPT	345
#define	INPUT_MRI_SCRIPT	346
#define	INPUT_DEFSYM	347
#define	CASE	348
#define	EXTERN	349
#define	START	350
#define	VERS_TAG	351
#define	VERS_IDENTIFIER	352
#define	GLOBAL	353
#define	LOCAL	354
#define	VERSIONK	355
#define	INPUT_VERSION_SCRIPT	356
#define	KEEP	357
#define	EXCLUDE_FILE	358

#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 "ldemul.h"
#include "ldfile.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;

struct wildcard_spec current_file;
boolean ldgram_want_filename = true;
boolean had_script = false;
boolean force_make_executable = false;

boolean ldgram_in_script = false;
boolean ldgram_had_equals = false;
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 68 "ldgram.y"
typedef union {
  bfd_vma integer;
  char *name;
  const char *cname;
  struct wildcard_spec wildcard;
  struct name_list *name_list;
  int token;
  union etree_union *etree;
  struct phdr_info
    {
      boolean filehdr;
      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;
#include <stdio.h>

#ifndef __cplusplus
#ifndef __STDC__
#define const
#endif
#endif



#define	YYFINAL		589
#define	YYFLAG		-32768
#define	YYNTBASE	128

#define YYTRANSLATE(x) ((unsigned)(x) <= 358 ? yytranslate[x] : 233)

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,   126,     2,     2,     2,    34,    21,     2,    37,
   123,    32,    30,   121,    31,     2,    33,     2,     2,     2,
     2,     2,     2,     2,     2,     2,     2,    16,   122,    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,
   124,     2,   125,    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,    49,    19,    50,   127,     2,     2,     2,     2,
     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     2,     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,    51,    52,
    53,    54,    55,    56,    57,    58,    59,    60,    61,    62,
    63,    64,    65,    66,    67,    68,    69,    70,    71,    72,
    73,    74,    75,    76,    77,    78,    79,    80,    81,    82,
    83,    84,    85,    86,    87,    88,    89,    90,    91,    92,
    93,    94,    95,    96,    97,    98,    99,   100,   101,   102,
   103,   104,   105,   106,   107,   108,   109,   110,   111,   112,
   113,   114,   115,   116,   117,   118,   119,   120
};

#if YYDEBUG != 0
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,   244,   245,   251,   256,
   257,   263,   268,   273,   275,   279,   282,   284,   288,   291,
   296,   299,   302,   303,   308,   311,   313,   315,   317,   319,
   325,   330,   339,   342,   344,   346,   350,   352,   353,   358,
   359,   365,   367,   368,   374,   377,   379,   381,   383,   388,
   390,   395,   400,   403,   405,   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,   690,   692,   699,   706,   713,   717,   718,   723,   724,
   725,   726,   727,   728,   729,   746,   747,   748,   749,   750,
   751,   769,   770,   771,   779,   781,   783,   785,   787,   789,
   793,   794,   797,   801,   804,   811,   822,   825,   827,   828,
   830,   833,   834,   835,   839,   840,   841,   842,   843,   855,
   860,   861,   864,   865,   866,   873,   875,   876,   880,   886,
   887,   891,   892,   895,   896,   902,   904,   907,   913,   920,
   922,   925,   926,   929,   934,   939,   948,   950,   954,   955
};

static const short yyrhs[] = {   107,
   142,     0,   108,   132,     0,   118,   223,     0,   109,   130,
     0,     4,     0,     0,   131,     4,    10,   188,     0,     0,
   133,   134,     0,   134,   135,    96,     0,     0,    91,   188,
     0,    91,   188,   121,   188,     0,     4,     0,    92,     0,
    98,   137,     0,    97,     0,   102,     4,    10,   188,     0,
   102,     4,   121,   188,     0,   102,     4,   188,     0,   101,
     4,     0,    93,     4,   121,   188,     0,    93,     4,   188,
     0,    93,     4,    10,   188,     0,    38,     4,    10,   188,
     0,    38,     4,   121,   188,     0,    88,     4,    10,   188,
     0,    88,     4,   121,   188,     0,    94,   139,     0,    95,
   138,     0,    99,     4,     0,   104,     4,   121,     4,     0,
   104,     4,   121,     3,     0,   103,   188,     0,   105,     3,
     0,   110,   140,     0,   111,   141,     0,     0,    55,   129,
   136,   134,    36,     0,   112,     4,     0,     0,   137,   121,
     4,     0,   137,     4,     0,     0,     4,     0,   138,   121,
     4,     0,     4,     0,   139,   121,     4,     0,     0,     4,
     0,   140,   121,     4,     0,     4,     0,   141,     4,     0,
   141,   121,     4,     0,     0,   143,   144,     0,   144,   145,
     0,     0,   170,     0,   149,     0,   215,     0,   179,     0,
   180,     0,   182,     0,   184,     0,   151,     0,   225,     0,
   122,     0,    64,    37,     4,   123,     0,    65,    37,   129,
   123,     0,    86,    37,   129,   123,     0,    52,    37,     4,
   123,     0,    52,    37,     4,   121,     4,   121,     4,   123,
     0,    54,    37,     4,   123,     0,    53,     0,    84,    37,
   148,   123,     0,     0,    85,   146,    37,   148,   123,     0,
    66,    37,   129,   123,     0,     0,    55,   129,   147,   144,
    36,     0,    79,    37,   185,   123,     0,   111,    37,   141,
   123,     0,     4,     0,   148,   121,     4,     0,   148,     4,
     0,     5,     0,   148,   121,     5,     0,   148,     5,     0,
    46,    49,   150,    50,     0,   150,   191,     0,   150,   151,
     0,     0,    67,    37,     4,   123,     0,   168,   167,     0,
     4,     0,    32,     0,    15,     0,   152,     0,   120,    37,
   154,   123,   152,     0,    48,    37,   152,   123,     0,    48,
    37,   120,    37,   154,   123,   152,   123,     0,   154,   152,
     0,   152,     0,   153,     0,   155,   169,   153,     0,     4,
     0,     0,   124,   157,   155,   125,     0,     0,   153,   158,
    37,   155,   123,     0,   156,     0,     0,   119,    37,   160,
   156,   123,     0,   168,   167,     0,    83,     0,   122,     0,
    87,     0,    48,    37,    87,   123,     0,   159,     0,   164,
    37,   186,   123,     0,    81,    37,   186,   123,     0,   162,
   161,     0,   161,     0,     0,   162,     0,    41,     0,    42,
     0,    43,     0,    44,     0,    45,     0,    10,   186,     0,
     0,     6,     0,     7,     0,     8,     0,     9,     0,    11,
     0,    12,     0,    13,     0,    14,     0,   122,     0,   121,
     0,     4,    10,   186,     0,     4,   166,   186,     0,    90,
    37,     4,    10,   186,   123,     0,   121,     0,     0,    56,
    49,   172,   171,    50,     0,   171,   172,     0,   171,   121,
   172,     0,     0,     0,     4,   173,   176,    16,   174,   169,
   175,     0,    80,    10,   186,     0,    82,    10,   186,     0,
     0,    37,   177,   123,     0,   178,     0,   177,   178,     0,
     4,     0,   126,     4,     0,    74,    37,   129,   123,     0,
    75,    37,   181,   123,     0,    75,    37,   123,     0,   181,
   169,   129,     0,   129,     0,    76,    37,   183,   123,     0,
   183,   169,   129,     0,     0,    77,     0,    78,     0,     0,
     4,   185,     0,     4,   121,   185,     0,     0,   187,   188,
     0,    31,   188,     0,    37,   188,   123,     0,    68,    37,
   188,   123,     0,   126,   188,     0,    30,   188,     0,   127,
   188,     0,   188,    32,   188,     0,   188,    33,   188,     0,
   188,    34,   188,     0,   188,    30,   188,     0,   188,    31,
   188,     0,   188,    28,   188,     0,   188,    29,   188,     0,
   188,    22,   188,     0,   188,    23,   188,     0,   188,    26,
   188,     0,   188,    27,   188,     0,   188,    24,   188,     0,
   188,    25,   188,     0,   188,    21,   188,     0,   188,    20,
   188,     0,   188,    19,   188,     0,   188,    15,   188,    16,
   188,     0,   188,    18,   188,     0,   188,    17,   188,     0,
    63,    37,     4,   123,     0,     3,     0,    51,     0,    69,
    37,     4,   123,     0,    70,    37,     4,   123,     0,    71,
    37,     4,   123,     0,    94,    37,   188,   123,     0,    38,
    37,   188,   123,     0,    39,    37,   188,   123,     0,     4,
     0,    72,    37,   188,   121,   188,   123,     0,    73,    37,
   188,   121,   188,   123,     0,   100,    37,   188,   121,     4,
   123,     0,    89,    25,     4,     0,     0,    89,    37,   188,
   123,     0,     0,     0,     0,     0,     0,     0,     4,   192,
   206,   190,   193,    49,   194,   163,    50,   195,   209,   189,
   210,   165,   196,   169,     0,     0,     0,     0,     0,     0,
    62,   197,   207,   208,   190,   198,    49,   199,   211,    50,
   200,   209,   189,   210,   165,   201,   169,     0,     0,     0,
    85,   202,   206,   203,    49,   150,    50,     0,    58,     0,
    59,     0,    60,     0,    61,     0,    62,     0,    37,   204,
   123,     0,     0,    37,   123,     0,   188,   205,    16,     0,
   205,    16,     0,    40,    37,   188,   123,   205,    16,     0,
    40,    37,   188,   123,    39,    37,   188,   123,   205,    16,
     0,   188,    16,     0,    16,     0,     0,    79,     0,    25,
     4,     0,     0,     0,   210,    16,     4,     0,     0,     0,
     0,     0,   211,     4,   212,    49,   163,    50,   213,   210,
   165,   214,   169,     0,    47,    49,   216,    50,     0,     0,
   216,   217,     0,     0,     0,     4,   218,   220,   221,   219,
   122,     0,   188,     0,     0,     4,   222,   221,     0,    89,
    37,   188,   123,   221,     0,     0,    37,   188,   123,     0,
     0,   224,   227,     0,     0,   226,   117,    49,   227,    50,
     0,   228,     0,   227,   228,     0,   113,    49,   230,    50,
   122,     0,   113,    49,   230,    50,   229,   122,     0,   113,
     0,   229,   113,     0,     0,   231,   122,     0,   115,    16,
   231,   122,     0,   116,    16,   231,   122,     0,   115,    16,
   231,   122,   116,    16,   231,   122,     0,   114,     0,   231,
   122,   114,     0,     0,   111,     4,    49,   232,   231,    50,
     0
};

#endif

#if YYDEBUG != 0
static const short yyrline[] = { 0,
   153,   155,   156,   157,   161,   164,   166,   173,   179,   186,
   188,   191,   193,   194,   197,   200,   201,   202,   204,   206,
   208,   210,   212,   214,   216,   218,   220,   222,   224,   225,
   226,   228,   230,   232,   234,   236,   237,   238,   239,   240,
   242,   245,   247,   248,   251,   254,   257,   260,   264,   266,
   267,   270,   273,   275,   279,   284,   290,   292,   297,   299,
   300,   301,   302,   303,   304,   305,   306,   307,   308,   310,
   312,   314,   317,   319,   321,   323,   324,   326,   328,   330,
   331,   332,   336,   339,   343,   346,   349,   352,   355,   360,
   364,   366,   367,   370,   373,   378,   383,   387,   393,   400,
   406,   412,   422,   431,   442,   450,   459,   465,   470,   471,
   478,   481,   483,   485,   489,   491,   495,   496,   501,   506,
   507,   512,   522,   524,   527,   529,   532,   535,   537,   539,
   541,   545,   553,   558,   561,   563,   565,   567,   569,   571,
   573,   578,   578,   582,   587,   595,   602,   603,   606,   610,
   612,   613,   617,   619,   622,   630,   639,   642,   645,   647,
   650,   653,   657,   662,   664,   668,   671,   676,   678,   681,
   684,   687,   691,   696,   705,   716,   718,   721,   724,   726,
   728,   730,   732,   735,   737,   739,   741,   743,   745,   747,
   749,   751,   753,   755,   757,   759,   761,   763,   765,   767,
   769,   771,   773,   775,   777,   780,   782,   784,   786,   788,
   790,   792,   794,   796,   798,   803,   805,   808,   810,   813,
   815,   817,   823,   824,   830,   830,   832,   835,   839,   841,
   847,   847,   853,   857,   860,   862,   863,   864,   865,   868,
   870,   871,   874,   876,   877,   882,   886,   888,   891,   894,
   898,   901,   904,   909,   922,   924,   930,   932,   938,   940,
   944,   946,   949,   951,   953,   959,   989,   994,  1006,  1013,
  1018,  1026,  1032,  1040,  1044,  1050,  1052,  1055,  1060,  1066,
  1071,  1077,  1082,  1086,  1090,  1094,  1100,  1105,  1109,  1114
};
#endif


#if YYDEBUG != 0 || defined (YYERROR_VERBOSE)

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",
"'{'","'}'","SIZEOF_HEADERS","OUTPUT_FORMAT","FORCE_COMMON_ALLOCATION","OUTPUT_ARCH",
"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",
"@7","@8","input_section_spec","@9","statement","statement_list","statement_list_opt",
"length","fill_opt","assign_op","end","assignment","opt_comma","memory","memory_spec_list",
"memory_spec","@10","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","@11","exp","memspec_at_opt","opt_at","section","@12","@13","@14",
"@15","@16","@17","@18","@19","@20","@21","@22","@23","type","atype","opt_exp_with_type",
"opt_exp_without_type","opt_nocrossrefs","memspec_opt","phdr_opt","overlay_section",
"@24","@25","@26","phdrs","phdr_list","phdr","@27","@28","phdr_type","phdr_qualifiers",
"phdr_val","version_script_file","@29","version","@30","vers_nodes","vers_node",
"verdep","vers_tag","vers_defns","@31", NULL
};
#endif

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

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,     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,     1,     3,     1,     0,     4,     0,
     5,     1,     0,     5,     2,     1,     1,     1,     4,     1,
     4,     4,     2,     1,     0,     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,
     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,     5,     6,     1,
     2,     0,     2,     4,     4,     8,     1,     3,     0,     6
};

static const short yydefact[] = {     0,
    55,     8,     6,   272,     1,    58,     2,    11,     4,     0,
     3,     0,    56,     9,     0,     0,   273,   276,     0,     0,
     0,     0,    75,     0,     0,     0,     0,     0,     0,     0,
     0,     0,     0,   171,   172,     0,     0,    77,     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,   282,   277,   134,   135,
   136,   137,   176,   138,   139,   140,   141,   176,    93,   261,
     0,     0,     5,    80,     0,     0,     0,     0,     0,     0,
     0,   170,   173,     0,     0,     0,     0,     0,   143,   142,
    95,     0,     0,    38,     0,   204,   212,     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,   287,     0,     0,     0,     0,
   144,     0,   145,     0,     0,     0,     0,    58,   153,   152,
     0,     0,     0,     0,     0,   165,   167,   148,   148,   173,
     0,    84,    87,     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,   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,     0,     0,     0,     0,   283,   177,
   220,    90,   226,   232,    92,    91,   263,   260,   262,     0,
    72,    74,   274,   157,     0,    69,    70,    79,    94,   163,
   147,   164,     0,   168,     0,   173,   174,    82,    86,    89,
     0,    76,     0,    71,   176,    83,     0,    25,    26,    41,
    27,    28,   179,     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,   289,     0,     0,   280,   278,
     0,   288,   241,     0,   241,     0,     0,    81,     0,     0,
   149,     0,   150,   166,   169,   175,    85,    88,    78,     0,
   275,    39,   210,   211,   203,   180,   206,   207,   208,     0,
     0,   209,     0,     0,     0,   284,   285,   281,   279,     0,
     0,   241,     0,   219,   248,     0,   249,   233,   266,   267,
     0,   161,     0,     0,   159,     0,   151,   146,     0,     0,
     0,   200,     0,     0,   235,   236,   237,   238,   239,   242,
     0,     0,     0,     0,   244,     0,   221,   247,   250,   219,
     0,   270,     0,   264,     0,   162,   158,   160,     0,   148,
   213,   214,   215,   290,     0,     0,   240,     0,   243,     0,
     0,   227,    93,     0,   267,     0,     0,    73,   176,     0,
     0,   241,     0,   222,     0,     0,     0,   268,     0,   265,
   155,     0,   154,   286,     0,     0,   218,   125,   228,   234,
   271,   267,   176,     0,   245,   107,    98,    97,   127,   128,
   129,   130,   131,     0,     0,   116,   118,     0,     0,   117,
   108,    99,   110,   112,   120,   124,   126,     0,     0,     0,
   255,   269,   156,     0,     0,   176,   113,     0,     0,     0,
   123,   223,   176,   115,     0,   241,    96,     0,     0,     0,
     0,     0,   104,     0,     0,   105,   148,     0,   252,     0,
   256,   229,     0,   119,     0,   101,   122,    96,     0,     0,
   103,     0,   109,     0,   148,     0,   217,   121,     0,   252,
   246,     0,   114,   100,   106,   111,   251,     0,   253,   125,
   217,     0,     0,   133,     0,   253,     0,   216,   176,     0,
   224,   257,   133,   102,   132,   254,   148,   253,   230,   225,
   133,   148,   258,   231,   148,   259,     0,     0,     0
};

static const short yydefgoto[] = {   587,
    94,     9,    10,     7,     8,    14,    75,   192,   141,   140,
   138,   149,   151,     5,     6,    13,    43,   105,   168,   184,
    44,   164,    45,   492,   493,   524,   527,   494,   509,   510,
   495,   522,   496,   497,   498,   499,   571,    88,   111,    46,
   544,    47,   265,   170,   264,   430,   463,   350,   394,   395,
    48,    49,   178,    50,   179,    51,   181,   161,   162,   197,
   559,   417,   256,   343,   441,   468,   529,   577,   344,   455,
   501,   550,   582,   345,   421,   411,   383,   384,   387,   420,
   547,   564,   515,   549,   578,   585,    52,   165,   259,   346,
   447,   390,   424,   445,    11,    12,    53,    54,    17,    18,
   341,   159,   160,   375
};

static const short yypact[] = {   -66,
-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,    23,
-32768,   -73,   585,   695,    53,    -4,   -73,-32768,  1276,    40,
    63,   115,-32768,   140,   179,   143,   158,   184,   191,   215,
   224,   226,   227,-32768,-32768,   228,   230,-32768,   231,   233,
   234,-32768,-32768,-32768,-32768,    -3,-32768,-32768,-32768,-32768,
-32768,-32768,-32768,   156,-32768,   270,   179,   272,   491,-32768,
   273,   274,   275,-32768,-32768,   276,   277,   280,   491,   288,
   290,   293,   296,   297,   198,   491,    85,-32768,-32768,-32768,
-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
   298,   300,-32768,-32768,   301,   302,   179,   179,   303,   179,
    15,-32768,   304,   118,   281,   179,   305,   296,-32768,-32768,
-32768,   261,     6,-32768,     7,-32768,-32768,   491,   491,   491,
   282,   289,-32768,   291,   294,   295,   310,   311,   312,   313,
   314,   316,   491,   491,  1032,   252,-32768,   190,-32768,   196,
    10,-32768,-32768,   326,  1137,   206,-32768,-32768,   212,-32768,
    24,-32768,-32768,  1137,   330,-32768,   319,   339,   264,   236,
-32768,   491,-32768,    31,    29,   -20,   237,-32768,-32768,-32768,
   239,   243,   244,   246,   247,-32768,-32768,    -6,    65,    30,
   248,-32768,-32768,    61,   118,   249,   349,    68,   -73,   491,
   491,-32768,   491,   491,-32768,-32768,   581,   491,   491,   370,
   491,   371,   372,   376,   491,   491,   491,   491,-32768,-32768,
   491,   491,   491,   491,   491,   491,   491,   491,   491,   491,
   491,   491,   491,   491,   491,   491,   491,   491,   491,   491,
   491,   491,  1137,   377,   379,-32768,   380,   491,   491,  1137,
   254,   383,-32768,   386,   342,    -1,    -1,   -55,   278,  1137,
  1276,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,   389,
-32768,-32768,   662,   363,     9,-32768,-32768,-32768,-32768,-32768,
-32768,-32768,   179,-32768,   179,   304,-32768,-32768,-32768,-32768,
   255,-32768,    64,-32768,-32768,-32768,   -21,  1137,  1137,   720,
  1137,  1137,-32768,   659,   818,   284,   838,   285,   287,   292,
  1052,  1072,   858,  1092,  1199,  1156,  1175,  1234,   738,  1247,
   549,   549,   186,   186,   186,   186,   216,   216,   193,   193,
-32768,-32768,-32768,  1137,  1137,  1137,-32768,-32768,-32768,  1137,
  1137,-32768,-32768,-32768,-32768,-32768,   283,   299,-32768,-32768,
   -39,-32768,   399,   445,   399,   491,   306,-32768,     8,   388,
-32768,   301,-32768,-32768,-32768,-32768,-32768,-32768,-32768,   308,
-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,   491,
   491,-32768,   407,   491,    -1,   122,   278,-32768,-32768,   172,
   375,  1112,   397,   325,-32768,  1219,   338,-32768,  1137,    20,
   415,-32768,   418,     3,-32768,   343,-32768,-32768,   878,   898,
   309,  1137,   -27,   408,-32768,-32768,-32768,-32768,-32768,-32768,
   317,   491,   146,   412,-32768,   396,-32768,-32768,-32768,   325,
   385,   398,   404,-32768,   320,-32768,-32768,-32768,   432,   323,
-32768,-32768,-32768,-32768,   278,    -1,-32768,   925,-32768,   491,
   402,-32768,-32768,   491,    20,   491,   324,-32768,-32768,   374,
   332,   200,   945,-32768,   410,    35,   965,-32768,   985,-32768,
-32768,   435,-32768,   278,   420,   444,-32768,   505,-32768,-32768,
-32768,    20,-32768,   491,-32768,   331,-32768,-32768,-32768,-32768,
-32768,-32768,-32768,   426,   427,-32768,-32768,   428,   429,-32768,
-32768,-32768,-32768,-32768,-32768,-32768,   505,   423,   440,    -3,
-32768,-32768,-32768,  1005,    92,-32768,-32768,    21,    58,   441,
-32768,-32768,-32768,-32768,    34,   442,-32768,   357,   449,   364,
   365,    22,-32768,    16,   452,-32768,   -34,    58,   466,   378,
-32768,-32768,   481,-32768,    21,-32768,-32768,   381,   382,    21,
-32768,    73,-32768,    58,   130,   494,   411,-32768,   454,   466,
-32768,    67,-32768,-32768,-32768,-32768,-32768,   482,-32768,   505,
   411,    21,   502,    84,   460,-32768,   400,-32768,-32768,   507,
-32768,-32768,    84,-32768,-32768,-32768,   323,-32768,-32768,-32768,
    84,   323,-32768,-32768,   323,-32768,   519,   524,-32768
};

static const short yypgoto[] = {-32768,
   -51,-32768,-32768,-32768,-32768,   335,-32768,-32768,-32768,-32768,
-32768,-32768,   424,-32768,-32768,   366,-32768,-32768,-32768,   346,
-32768,    90,  -160,   -50,  -315,     0,    12,    14,-32768,-32768,
-32768,-32768,    41,-32768,   -19,-32768,  -517,-32768,    43,  -446,
  -176,-32768,-32768,  -244,-32768,-32768,-32768,-32768,-32768,   150,
-32768,-32768,-32768,-32768,-32768,-32768,  -165,   -88,-32768,   -58,
   -10,   132,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
-32768,-32768,-32768,-32768,-32768,-32768,  -372,   210,-32768,-32768,
    17,  -534,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
-32768,-32768,  -415,-32768,-32768,-32768,-32768,-32768,   367,   -12,
-32768,-32768,  -238,-32768
};


#define	YYLAST		1290


static const short yytable[] = {   163,
   135,   273,   275,   255,    78,   114,   392,   337,   338,   414,
   145,   392,   169,   236,   277,   190,   193,   154,    93,   517,
   353,   500,   434,   422,   517,   538,    15,   243,   361,   458,
   477,   573,   257,   180,   251,   477,   477,   531,   251,    16,
     1,     2,     3,   581,    77,   172,   173,   478,   175,   177,
   500,     4,   478,   478,   186,   579,   502,   339,   351,   195,
   196,   517,    76,   583,   279,   280,   340,   279,   280,   525,
   517,   243,   477,   378,   209,   210,   517,   233,   258,   466,
   252,   477,   379,   532,   470,   240,   271,   477,    89,   478,
   543,    16,   253,   569,   435,   517,   253,    30,   478,   570,
   260,    30,   261,   250,   478,   525,   477,   397,   423,   155,
   356,    90,   156,   500,   271,   254,   272,   109,   110,   254,
    40,   182,   183,   478,    40,   427,   191,   194,   393,   352,
   237,   288,   289,   393,   291,   292,   403,   176,   540,   294,
   295,   489,   297,   533,   244,   491,   301,   302,   303,   304,
   276,    91,   305,   306,   307,   308,   309,   310,   311,   312,
   313,   314,   315,   316,   317,   318,   319,   320,   321,   322,
   323,   324,   325,   326,   116,   117,    92,   489,   518,   330,
   331,   281,    93,   282,   281,   271,   359,   274,   244,   562,
   286,    95,   519,   526,    96,   155,   360,   451,   156,   157,
   158,   118,   119,   405,   406,   407,   408,   409,   120,   121,
   122,   519,   526,   223,   224,   225,   226,   227,   228,   229,
    97,   354,   123,   355,   227,   228,   229,    98,   555,   405,
   406,   407,   408,   409,   124,   342,   413,   404,   465,   125,
   126,   127,   128,   129,   130,   225,   226,   227,   228,   229,
   271,    99,   556,   450,   116,   117,   332,   333,   357,   358,
   100,   231,   101,   102,   103,   131,   104,   106,   410,   107,
   108,   132,   112,   113,    78,   115,   136,   137,   139,   142,
   143,   118,   119,   144,   382,   386,   382,   389,   120,   121,
   122,   146,   147,   153,   410,   255,   148,   133,   134,   150,
   152,   166,   123,   167,   169,   171,   174,   180,   187,   189,
   234,   399,   400,   248,   124,   402,   235,   185,   198,   125,
   126,   127,   128,   129,   130,   199,   241,   200,   116,   117,
   201,   202,   242,   245,   246,   238,    79,    80,    81,    82,
    83,    84,    85,    86,    87,   131,   203,   204,   205,   206,
   207,   132,   208,   438,   247,   118,   119,   249,   285,   262,
   461,   266,   120,   121,   122,   267,   268,   -96,   269,   270,
   278,   284,   232,   296,   298,   299,   123,   133,   134,   300,
   327,   453,   328,   329,   503,   457,   334,   459,   124,   335,
   336,   342,   347,   125,   126,   127,   128,   129,   130,   349,
   580,   116,   117,   396,   376,   584,   365,   367,   586,   368,
   401,   412,   415,   416,   369,   504,   419,   521,   425,   131,
   377,   426,   429,   436,   530,   132,   391,   439,   118,   119,
   398,   433,   440,   443,   444,   380,   121,   122,   381,   437,
   446,   449,   448,   271,   473,   460,   239,   116,   117,   123,
   454,   133,   134,   464,   520,   462,   474,   523,   469,   475,
   385,   124,   505,   506,   507,   508,   125,   126,   127,   128,
   129,   130,   512,   541,   118,   119,   513,   528,   413,   534,
   575,   120,   121,   122,   523,   535,   536,   537,   542,   554,
   546,   520,   131,   116,   117,   123,   551,   557,   132,   558,
   548,   541,   560,  -107,   553,   568,   563,   124,   476,   572,
   576,   567,   125,   126,   127,   128,   129,   130,   588,   477,
   118,   119,   574,   589,   133,   134,   290,   120,   121,   122,
   283,   188,   456,   263,   552,   539,   478,   511,   131,   545,
   565,   123,   514,   428,   132,   479,   480,   481,   482,   483,
   566,   442,   484,   124,   388,   287,     0,     0,   125,   126,
   127,   128,   129,   130,     0,     0,   561,     0,     0,     0,
   133,   134,   219,   220,   221,   222,   223,   224,   225,   226,
   227,   228,   229,     0,   131,   485,     0,   486,    19,     0,
   132,   487,     0,     0,    40,   211,     0,   212,   213,   214,
   215,   216,   217,   218,   219,   220,   221,   222,   223,   224,
   225,   226,   227,   228,   229,     0,   133,   134,     0,     0,
     0,     0,     0,   488,   489,     0,   490,     0,   491,     0,
    20,    21,     0,     0,     0,     0,    22,    23,    24,    25,
    26,     0,     0,     0,     0,     0,     0,     0,    27,    28,
    29,    30,     0,     0,     0,     0,     0,     0,    31,    32,
    33,    34,    35,    36,     0,    19,     0,     0,    37,    38,
    39,     0,     0,   211,    40,   212,   213,   214,   215,   216,
   217,   218,   219,   220,   221,   222,   223,   224,   225,   226,
   227,   228,   229,     0,     0,    41,     0,   348,    55,     0,
     0,  -274,     0,   293,     0,     0,    42,    20,    21,     0,
     0,     0,     0,    22,    23,    24,    25,    26,     0,     0,
     0,     0,     0,    55,     0,    27,    28,    29,    30,     0,
     0,     0,    56,     0,     0,    31,    32,    33,    34,    35,
    36,     0,     0,     0,     0,    37,    38,    39,     0,    57,
     0,    40,     0,     0,     0,   362,     0,    56,   216,   217,
   218,   219,   220,   221,   222,   223,   224,   225,   226,   227,
   228,   229,    41,     0,    57,     0,     0,     0,     0,     0,
     0,   363,    58,    42,     0,    59,    60,    61,    62,    63,
   -41,    64,    65,    66,     0,    67,    68,    69,    70,    71,
     0,     0,     0,     0,    72,    73,    74,    58,     0,     0,
    59,    60,    61,    62,    63,     0,    64,    65,    66,     0,
    67,    68,    69,    70,    71,     0,     0,     0,     0,    72,
    73,    74,   211,     0,   212,   213,   214,   215,   216,   217,
   218,   219,   220,   221,   222,   223,   224,   225,   226,   227,
   228,   229,   211,     0,   212,   213,   214,   215,   216,   217,
   218,   219,   220,   221,   222,   223,   224,   225,   226,   227,
   228,   229,   211,     0,   212,   213,   214,   215,   216,   217,
   218,   219,   220,   221,   222,   223,   224,   225,   226,   227,
   228,   229,   211,     0,   212,   213,   214,   215,   216,   217,
   218,   219,   220,   221,   222,   223,   224,   225,   226,   227,
   228,   229,   211,     0,   212,   213,   214,   215,   216,   217,
   218,   219,   220,   221,   222,   223,   224,   225,   226,   227,
   228,   229,     0,     0,     0,     0,     0,     0,     0,   211,
   364,   212,   213,   214,   215,   216,   217,   218,   219,   220,
   221,   222,   223,   224,   225,   226,   227,   228,   229,   211,
   366,   212,   213,   214,   215,   216,   217,   218,   219,   220,
   221,   222,   223,   224,   225,   226,   227,   228,   229,   211,
   372,   212,   213,   214,   215,   216,   217,   218,   219,   220,
   221,   222,   223,   224,   225,   226,   227,   228,   229,   211,
   431,   212,   213,   214,   215,   216,   217,   218,   219,   220,
   221,   222,   223,   224,   225,   226,   227,   228,   229,   211,
   432,   212,   213,   214,   215,   216,   217,   218,   219,   220,
   221,   222,   223,   224,   225,   226,   227,   228,   229,     0,
     0,     0,     0,     0,     0,     0,   211,   452,   212,   213,
   214,   215,   216,   217,   218,   219,   220,   221,   222,   223,
   224,   225,   226,   227,   228,   229,   211,   467,   212,   213,
   214,   215,   216,   217,   218,   219,   220,   221,   222,   223,
   224,   225,   226,   227,   228,   229,   211,   471,   212,   213,
   214,   215,   216,   217,   218,   219,   220,   221,   222,   223,
   224,   225,   226,   227,   228,   229,   211,   472,   212,   213,
   214,   215,   216,   217,   218,   219,   220,   221,   222,   223,
   224,   225,   226,   227,   228,   229,   211,   516,   212,   213,
   214,   215,   216,   217,   218,   219,   220,   221,   222,   223,
   224,   225,   226,   227,   228,   229,     0,     0,   413,     0,
     0,   211,   230,   212,   213,   214,   215,   216,   217,   218,
   219,   220,   221,   222,   223,   224,   225,   226,   227,   228,
   229,     0,   370,   213,   214,   215,   216,   217,   218,   219,
   220,   221,   222,   223,   224,   225,   226,   227,   228,   229,
     0,     0,   371,   214,   215,   216,   217,   218,   219,   220,
   221,   222,   223,   224,   225,   226,   227,   228,   229,     0,
     0,     0,   373,   211,   374,   212,   213,   214,   215,   216,
   217,   218,   219,   220,   221,   222,   223,   224,   225,   226,
   227,   228,   229,   211,   418,   212,   213,   214,   215,   216,
   217,   218,   219,   220,   221,   222,   223,   224,   225,   226,
   227,   228,   229,   215,   216,   217,   218,   219,   220,   221,
   222,   223,   224,   225,   226,   227,   228,   229,   217,   218,
   219,   220,   221,   222,   223,   224,   225,   226,   227,   228,
   229,    79,    80,    81,    82,    83,    84,    85,    86,    87
};

static const short yycheck[] = {    88,
    59,   178,   179,   164,    17,    57,     4,   246,   247,   382,
    69,     4,     4,     4,   180,    10,    10,    76,     4,     4,
   265,   468,    50,     4,     4,     4,     4,     4,    50,   445,
    15,   566,     4,     4,     4,    15,    15,     4,     4,   113,
   107,   108,   109,   578,    49,    97,    98,    32,   100,   101,
   497,   118,    32,    32,   106,   573,   472,   113,    50,   118,
   119,     4,    10,   581,     4,     5,   122,     4,     5,    48,
     4,     4,    15,   113,   133,   134,     4,   136,    50,   452,
    50,    15,   122,    50,    50,   144,   121,    15,    49,    32,
   125,   113,    62,    10,   122,     4,    62,    67,    32,    16,
   121,    67,   123,   162,    32,    48,    15,   352,    89,   111,
   276,    49,   114,   560,   121,    85,   123,   121,   122,    85,
    90,     4,     5,    32,    90,   123,   121,   121,   126,   121,
   121,   190,   191,   126,   193,   194,   375,   123,   123,   198,
   199,   120,   201,   516,   121,   124,   205,   206,   207,   208,
   121,    37,   211,   212,   213,   214,   215,   216,   217,   218,
   219,   220,   221,   222,   223,   224,   225,   226,   227,   228,
   229,   230,   231,   232,     3,     4,    37,   120,    87,   238,
   239,   121,     4,   123,   121,   121,   123,   123,   121,   123,
   123,    49,   120,   509,    37,   111,   285,   436,   114,   115,
   116,    30,    31,    58,    59,    60,    61,    62,    37,    38,
    39,   120,   528,    28,    29,    30,    31,    32,    33,    34,
    37,   273,    51,   275,    32,    33,    34,    37,   544,    58,
    59,    60,    61,    62,    63,   114,    37,   116,    39,    68,
    69,    70,    71,    72,    73,    30,    31,    32,    33,    34,
   121,    37,   123,   430,     3,     4,     3,     4,     4,     5,
    37,    10,    37,    37,    37,    94,    37,    37,   123,    37,
    37,   100,   117,     4,   287,     4,     4,     4,     4,     4,
     4,    30,    31,     4,   343,   344,   345,   346,    37,    38,
    39,     4,     3,    96,   123,   456,     4,   126,   127,     4,
     4,     4,    51,     4,     4,     4,     4,     4,     4,    49,
   121,   370,   371,    50,    63,   374,   121,    37,    37,    68,
    69,    70,    71,    72,    73,    37,   121,    37,     3,     4,
    37,    37,   121,     4,    16,    10,     6,     7,     8,     9,
    10,    11,    12,    13,    14,    94,    37,    37,    37,    37,
    37,   100,    37,   412,    16,    30,    31,   122,    10,   123,
   449,   123,    37,    38,    39,   123,   123,    37,   123,   123,
   123,   123,   121,     4,     4,     4,    51,   126,   127,     4,
     4,   440,     4,     4,   473,   444,     4,   446,    63,     4,
    49,   114,     4,    68,    69,    70,    71,    72,    73,    37,
   577,     3,     4,    16,   122,   582,   123,   123,   585,   123,
     4,    37,    16,    89,   123,   474,    79,   506,     4,    94,
   122,     4,    80,    16,   513,   100,   121,    16,    30,    31,
   123,   123,    37,    49,    37,    37,    38,    39,    40,   123,
    37,    10,   123,   121,    10,   122,   121,     3,     4,    51,
    49,   126,   127,   122,   505,    82,    37,   508,    49,    16,
    16,    63,    37,    37,    37,    37,    68,    69,    70,    71,
    72,    73,    50,   524,    30,    31,    37,    37,    37,   123,
   569,    37,    38,    39,   535,    37,   123,   123,    37,   540,
    25,   542,    94,     3,     4,    51,    16,     4,   100,    89,
   123,   552,    49,   123,   123,     4,    25,    63,     4,    50,
     4,   562,    68,    69,    70,    71,    72,    73,     0,    15,
    30,    31,   123,     0,   126,   127,   192,    37,    38,    39,
   185,   108,   443,   168,   535,   522,    32,   497,    94,   528,
   560,    51,   500,   394,   100,    41,    42,    43,    44,    45,
   561,   420,    48,    63,   345,   189,    -1,    -1,    68,    69,
    70,    71,    72,    73,    -1,    -1,   550,    -1,    -1,    -1,
   126,   127,    24,    25,    26,    27,    28,    29,    30,    31,
    32,    33,    34,    -1,    94,    81,    -1,    83,     4,    -1,
   100,    87,    -1,    -1,    90,    15,    -1,    17,    18,    19,
    20,    21,    22,    23,    24,    25,    26,    27,    28,    29,
    30,    31,    32,    33,    34,    -1,   126,   127,    -1,    -1,
    -1,    -1,    -1,   119,   120,    -1,   122,    -1,   124,    -1,
    46,    47,    -1,    -1,    -1,    -1,    52,    53,    54,    55,
    56,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    64,    65,
    66,    67,    -1,    -1,    -1,    -1,    -1,    -1,    74,    75,
    76,    77,    78,    79,    -1,     4,    -1,    -1,    84,    85,
    86,    -1,    -1,    15,    90,    17,    18,    19,    20,    21,
    22,    23,    24,    25,    26,    27,    28,    29,    30,    31,
    32,    33,    34,    -1,    -1,   111,    -1,    36,     4,    -1,
    -1,   117,    -1,   123,    -1,    -1,   122,    46,    47,    -1,
    -1,    -1,    -1,    52,    53,    54,    55,    56,    -1,    -1,
    -1,    -1,    -1,     4,    -1,    64,    65,    66,    67,    -1,
    -1,    -1,    38,    -1,    -1,    74,    75,    76,    77,    78,
    79,    -1,    -1,    -1,    -1,    84,    85,    86,    -1,    55,
    -1,    90,    -1,    -1,    -1,    36,    -1,    38,    21,    22,
    23,    24,    25,    26,    27,    28,    29,    30,    31,    32,
    33,    34,   111,    -1,    55,    -1,    -1,    -1,    -1,    -1,
    -1,   123,    88,   122,    -1,    91,    92,    93,    94,    95,
    96,    97,    98,    99,    -1,   101,   102,   103,   104,   105,
    -1,    -1,    -1,    -1,   110,   111,   112,    88,    -1,    -1,
    91,    92,    93,    94,    95,    -1,    97,    98,    99,    -1,
   101,   102,   103,   104,   105,    -1,    -1,    -1,    -1,   110,
   111,   112,    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,    15,
   123,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    26,    27,    28,    29,    30,    31,    32,    33,    34,    15,
   123,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    26,    27,    28,    29,    30,    31,    32,    33,    34,    15,
   123,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    26,    27,    28,    29,    30,    31,    32,    33,    34,    15,
   123,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    26,    27,    28,    29,    30,    31,    32,    33,    34,    15,
   123,    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,    15,   123,    17,    18,
    19,    20,    21,    22,    23,    24,    25,    26,    27,    28,
    29,    30,    31,    32,    33,    34,    15,   123,    17,    18,
    19,    20,    21,    22,    23,    24,    25,    26,    27,    28,
    29,    30,    31,    32,    33,    34,    15,   123,    17,    18,
    19,    20,    21,    22,    23,    24,    25,    26,    27,    28,
    29,    30,    31,    32,    33,    34,    15,   123,    17,    18,
    19,    20,    21,    22,    23,    24,    25,    26,    27,    28,
    29,    30,    31,    32,    33,    34,    15,   123,    17,    18,
    19,    20,    21,    22,    23,    24,    25,    26,    27,    28,
    29,    30,    31,    32,    33,    34,    -1,    -1,    37,    -1,
    -1,    15,   121,    17,    18,    19,    20,    21,    22,    23,
    24,    25,    26,    27,    28,    29,    30,    31,    32,    33,
    34,    -1,   121,    18,    19,    20,    21,    22,    23,    24,
    25,    26,    27,    28,    29,    30,    31,    32,    33,    34,
    -1,    -1,   121,    19,    20,    21,    22,    23,    24,    25,
    26,    27,    28,    29,    30,    31,    32,    33,    34,    -1,
    -1,    -1,   121,    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,    22,    23,
    24,    25,    26,    27,    28,    29,    30,    31,    32,    33,
    34,     6,     7,     8,     9,    10,    11,    12,    13,    14
};
/* -*-C-*-  Note some compilers choke on comments on `#line' lines.  */
#line 3 "/usr/share/misc/bison.simple"
/* This file comes from bison-1.28.  */

/* Skeleton output parser for bison,
   Copyright (C) 1984, 1989, 1990 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.  */

#ifndef YYSTACK_USE_ALLOCA
#ifdef alloca
#define YYSTACK_USE_ALLOCA
#else /* alloca not defined */
#ifdef __GNUC__
#define YYSTACK_USE_ALLOCA
#define alloca __builtin_alloca
#else /* not GNU C.  */
#if (!defined (__STDC__) && defined (sparc)) || defined (__sparc__) || defined (__sparc) || defined (__sgi) || (defined (__sun) && defined (__i386))
#define YYSTACK_USE_ALLOCA
#include <alloca.h>
#else /* not sparc */
/* We think this test detects Watcom and Microsoft C.  */
/* This used to test MSDOS, but that is a bad idea
   since that symbol is in the user namespace.  */
#if (defined (_MSDOS) || defined (_MSDOS_)) && !defined (__TURBOC__)
#if 0 /* No need for malloc.h, which pollutes the namespace;
	 instead, just don't use alloca.  */
#include <malloc.h>
#endif
#else /* not MSDOS, or __TURBOC__ */
#if defined(_AIX)
/* I don't know what this was needed for, but it pollutes the namespace.
   So I turned it off.   rms, 2 May 1997.  */
/* #include <malloc.h>  */
 #pragma alloca
#define YYSTACK_USE_ALLOCA
#else /* not MSDOS, or __TURBOC__, or _AIX */
#if 0
#ifdef __hpux /* haible@ilog.fr says this works for HPUX 9.05 and up,
		 and on HPUX 10.  Eventually we can turn this on.  */
#define YYSTACK_USE_ALLOCA
#define alloca __builtin_alloca
#endif /* __hpux */
#endif
#endif /* not _AIX */
#endif /* not MSDOS, or __TURBOC__ */
#endif /* not sparc */
#endif /* not GNU C */
#endif /* alloca not defined */
#endif /* YYSTACK_USE_ALLOCA not defined */

#ifdef YYSTACK_USE_ALLOCA
#define YYSTACK_ALLOC alloca
#else
#define YYSTACK_ALLOC malloc
#endif

/* Note: there must be only one dollar sign in this file.
   It is replaced by the list of actions, each action
   as one case of the switch.  */

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

#ifndef YYPURE
#define YYLEX		yylex()
#endif

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

/* If nonreentrant, generate the variables here */

#ifndef YYPURE

int	yychar;			/*  the lookahead symbol		*/
YYSTYPE	yylval;			/*  the semantic value of the		*/
				/*  lookahead symbol			*/

#ifdef YYLSP_NEEDED
YYLTYPE yylloc;			/*  location data for the lookahead	*/
				/*  symbol				*/
#endif

int yynerrs;			/*  number of parse errors so far       */
#endif  /* not YYPURE */

#if YYDEBUG != 0
int yydebug;			/*  nonzero means print parse trace	*/
/* Since this is uninitialized, it does not stop multiple parsers
   from coexisting.  */
#endif

/*  YYINITDEPTH indicates the initial size of the parser's stacks	*/

#ifndef	YYINITDEPTH
#define YYINITDEPTH 200
#endif

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

#if YYMAXDEPTH == 0
#undef YYMAXDEPTH
#endif

#ifndef YYMAXDEPTH
#define YYMAXDEPTH 10000
#endif

/* Define __yy_memcpy.  Note that the size argument
   should be passed with type unsigned int, because that is what the non-GCC
   definitions require.  With GCC, __builtin_memcpy takes an arg
   of type size_t, but it can handle unsigned int.  */

#if __GNUC__ > 1		/* GNU C and GNU C++ define this.  */
#define __yy_memcpy(TO,FROM,COUNT)	__builtin_memcpy(TO,FROM,COUNT)
#else				/* not GNU C or C++ */
#ifndef __cplusplus

/* This is the most reliable way to avoid incompatibilities
   in available built-in functions on various systems.  */
static void
__yy_memcpy (to, from, count)
     char *to;
     char *from;
     unsigned int count;
{
  register char *f = from;
  register char *t = to;
  register int i = count;

  while (i-- > 0)
    *t++ = *f++;
}

#else /* __cplusplus */

/* This is the most reliable way to avoid incompatibilities
   in available built-in functions on various systems.  */
static void
__yy_memcpy (char *to, char *from, unsigned int count)
{
  register char *t = to;
  register char *f = from;
  register int i = count;

  while (i-- > 0)
    *t++ = *f++;
}

#endif
#endif

#line 217 "/usr/share/misc/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
#ifdef __cplusplus
#define YYPARSE_PARAM_ARG void *YYPARSE_PARAM
#define YYPARSE_PARAM_DECL
#else /* not __cplusplus */
#define YYPARSE_PARAM_ARG YYPARSE_PARAM
#define YYPARSE_PARAM_DECL void *YYPARSE_PARAM;
#endif /* not __cplusplus */
#else /* not YYPARSE_PARAM */
#define YYPARSE_PARAM_ARG
#define YYPARSE_PARAM_DECL
#endif /* not YYPARSE_PARAM */

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

int
yyparse(YYPARSE_PARAM_ARG)
     YYPARSE_PARAM_DECL
{
  register int yystate;
  register int yyn;
  register short *yyssp;
  register YYSTYPE *yyvsp;
  int yyerrstatus;	/*  number of tokens to shift before error messages enabled */
  int yychar1 = 0;		/*  lookahead token as an internal (translated) token number */

  short	yyssa[YYINITDEPTH];	/*  the state stack			*/
  YYSTYPE yyvsa[YYINITDEPTH];	/*  the semantic value stack		*/

  short *yyss = yyssa;		/*  refer to the stacks thru separate pointers */
  YYSTYPE *yyvs = yyvsa;	/*  to allow yyoverflow to reallocate them elsewhere */

#ifdef YYLSP_NEEDED
  YYLTYPE yylsa[YYINITDEPTH];	/*  the location stack			*/
  YYLTYPE *yyls = yylsa;
  YYLTYPE *yylsp;

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

  int yystacksize = YYINITDEPTH;
  int yyfree_stacks = 0;

#ifdef YYPURE
  int yychar;
  YYSTYPE yylval;
  int yynerrs;
#ifdef YYLSP_NEEDED
  YYLTYPE yylloc;
#endif
#endif

  YYSTYPE yyval;		/*  the variable used to return		*/
				/*  semantic values from the action	*/
				/*  routines				*/

  int yylen;

#if YYDEBUG != 0
  if (yydebug)
    fprintf(stderr, "Starting parse\n");
#endif

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

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

  yyssp = yyss - 1;
  yyvsp = yyvs;
#ifdef YYLSP_NEEDED
  yylsp = yyls;
#endif

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

  *++yyssp = yystate;

  if (yyssp >= yyss + yystacksize - 1)
    {
      /* Give user a chance to reallocate the stack */
      /* Use copies of these so that the &'s don't force the real ones into memory. */
      YYSTYPE *yyvs1 = yyvs;
      short *yyss1 = yyss;
#ifdef YYLSP_NEEDED
      YYLTYPE *yyls1 = yyls;
#endif

      /* Get the current used size of the three stacks, in elements.  */
      int size = yyssp - yyss + 1;

#ifdef yyoverflow
      /* Each stack pointer address is followed by the size of
	 the data in use in that stack, in bytes.  */
#ifdef YYLSP_NEEDED
      /* 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, size * sizeof (*yyssp),
		 &yyvs1, size * sizeof (*yyvsp),
		 &yyls1, size * sizeof (*yylsp),
		 &yystacksize);
#else
      yyoverflow("parser stack overflow",
		 &yyss1, size * sizeof (*yyssp),
		 &yyvs1, size * sizeof (*yyvsp),
		 &yystacksize);
#endif

      yyss = yyss1; yyvs = yyvs1;
#ifdef YYLSP_NEEDED
      yyls = yyls1;
#endif
#else /* no yyoverflow */
      /* Extend the stack our own way.  */
      if (yystacksize >= YYMAXDEPTH)
	{
	  yyerror("parser stack overflow");
	  if (yyfree_stacks)
	    {
	      free (yyss);
	      free (yyvs);
#ifdef YYLSP_NEEDED
	      free (yyls);
#endif
	    }
	  return 2;
	}
      yystacksize *= 2;
      if (yystacksize > YYMAXDEPTH)
	yystacksize = YYMAXDEPTH;
#ifndef YYSTACK_USE_ALLOCA
      yyfree_stacks = 1;
#endif
      yyss = (short *) YYSTACK_ALLOC (yystacksize * sizeof (*yyssp));
      __yy_memcpy ((char *)yyss, (char *)yyss1,
		   size * (unsigned int) sizeof (*yyssp));
      yyvs = (YYSTYPE *) YYSTACK_ALLOC (yystacksize * sizeof (*yyvsp));
      __yy_memcpy ((char *)yyvs, (char *)yyvs1,
		   size * (unsigned int) sizeof (*yyvsp));
#ifdef YYLSP_NEEDED
      yyls = (YYLTYPE *) YYSTACK_ALLOC (yystacksize * sizeof (*yylsp));
      __yy_memcpy ((char *)yyls, (char *)yyls1,
		   size * (unsigned int) sizeof (*yylsp));
#endif
#endif /* no yyoverflow */

      yyssp = yyss + size - 1;
      yyvsp = yyvs + size - 1;
#ifdef YYLSP_NEEDED
      yylsp = yyls + size - 1;
#endif

#if YYDEBUG != 0
      if (yydebug)
	fprintf(stderr, "Stack size increased to %d\n", yystacksize);
#endif

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

#if YYDEBUG != 0
  if (yydebug)
    fprintf(stderr, "Entering state %d\n", yystate);
#endif

  goto yybackup;
 yybackup:

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

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

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

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

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

  if (yychar == YYEMPTY)
    {
#if YYDEBUG != 0
      if (yydebug)
	fprintf(stderr, "Reading a token: ");
#endif
      yychar = YYLEX;
    }

  /* Convert token to internal form (in yychar1) for indexing tables with */

  if (yychar <= 0)		/* This means end of input. */
    {
      yychar1 = 0;
      yychar = YYEOF;		/* Don't call YYLEX any more */

#if YYDEBUG != 0
      if (yydebug)
	fprintf(stderr, "Now at end of input.\n");
#endif
    }
  else
    {
      yychar1 = YYTRANSLATE(yychar);

#if YYDEBUG != 0
      if (yydebug)
	{
	  fprintf (stderr, "Next token is %d (%s", yychar, yytname[yychar1]);
	  /* Give the individual parser a way to print the precise meaning
	     of a token, for further debugging info.  */
#ifdef YYPRINT
	  YYPRINT (stderr, yychar, yylval);
#endif
	  fprintf (stderr, ")\n");
	}
#endif
    }

  yyn += yychar1;
  if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != yychar1)
    goto yydefault;

  yyn = yytable[yyn];

  /* yyn is what to do for this token type in this state.
     Negative => reduce, -yyn is rule number.
     Positive => shift, yyn is new state.
       New state is final state => don't bother to shift,
       just return success.
     0, or most negative number => error.  */

  if (yyn < 0)
    {
      if (yyn == YYFLAG)
	goto yyerrlab;
      yyn = -yyn;
      goto yyreduce;
    }
  else if (yyn == 0)
    goto yyerrlab;

  if (yyn == YYFINAL)
    YYACCEPT;

  /* Shift the lookahead token.  */

#if YYDEBUG != 0
  if (yydebug)
    fprintf(stderr, "Shifting token %d (%s), ", yychar, yytname[yychar1]);
#endif

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

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

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

  yystate = yyn;
  goto yynewstate;

/* Do the default action for the current state.  */
yydefault:

  yyn = yydefact[yystate];
  if (yyn == 0)
    goto yyerrlab;

/* Do a reduction.  yyn is the number of a rule to reduce with.  */
yyreduce:
  yylen = yyr2[yyn];
  if (yylen > 0)
    yyval = yyvsp[1-yylen]; /* implement default value of the action */

#if YYDEBUG != 0
  if (yydebug)
    {
      int i;

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

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


  switch (yyn) {

case 6:
#line 165 "ldgram.y"
{ ldlex_defsym(); ;
    break;}
case 7:
#line 167 "ldgram.y"
{
		  ldlex_popstate();
		  lang_add_assignment(exp_assop(yyvsp[-1].token,yyvsp[-2].name,yyvsp[0].etree));
		;
    break;}
case 8:
#line 174 "ldgram.y"
{
		  ldlex_mri_script ();
		  PUSH_ERROR (_("MRI style script"));
		;
    break;}
case 9:
#line 179 "ldgram.y"
{
		  ldlex_popstate ();
		  mri_draw_tree ();
		  POP_ERROR ();
		;
    break;}
case 14:
#line 194 "ldgram.y"
{
			einfo(_("%P%F: unrecognised keyword in MRI style script '%s'\n"),yyvsp[0].name);
			;
    break;}
case 15:
#line 197 "ldgram.y"
{
			config.map_filename = "-";
			;
    break;}
case 18:
#line 203 "ldgram.y"
{ mri_public(yyvsp[-2].name, yyvsp[0].etree); ;
    break;}
case 19:
#line 205 "ldgram.y"
{ mri_public(yyvsp[-2].name, yyvsp[0].etree); ;
    break;}
case 20:
#line 207 "ldgram.y"
{ mri_public(yyvsp[-1].name, yyvsp[0].etree); ;
    break;}
case 21:
#line 209 "ldgram.y"
{ mri_format(yyvsp[0].name); ;
    break;}
case 22:
#line 211 "ldgram.y"
{ mri_output_section(yyvsp[-2].name, yyvsp[0].etree);;
    break;}
case 23:
#line 213 "ldgram.y"
{ mri_output_section(yyvsp[-1].name, yyvsp[0].etree);;
    break;}
case 24:
#line 215 "ldgram.y"
{ mri_output_section(yyvsp[-2].name, yyvsp[0].etree);;
    break;}
case 25:
#line 217 "ldgram.y"
{ mri_align(yyvsp[-2].name,yyvsp[0].etree); ;
    break;}
case 26:
#line 219 "ldgram.y"
{ mri_align(yyvsp[-2].name,yyvsp[0].etree); ;
    break;}
case 27:
#line 221 "ldgram.y"
{ mri_alignmod(yyvsp[-2].name,yyvsp[0].etree); ;
    break;}
case 28:
#line 223 "ldgram.y"
{ mri_alignmod(yyvsp[-2].name,yyvsp[0].etree); ;
    break;}
case 31:
#line 227 "ldgram.y"
{ mri_name(yyvsp[0].name); ;
    break;}
case 32:
#line 229 "ldgram.y"
{ mri_alias(yyvsp[-2].name,yyvsp[0].name,0);;
    break;}
case 33:
#line 231 "ldgram.y"
{ mri_alias(yyvsp[-2].name,0,(int) yyvsp[0].integer);;
    break;}
case 34:
#line 233 "ldgram.y"
{ mri_base(yyvsp[0].etree); ;
    break;}
case 35:
#line 235 "ldgram.y"
{  mri_truncate((unsigned int) yyvsp[0].integer); ;
    break;}
case 38:
#line 239 "ldgram.y"
{ ldfile_open_command_file (yyvsp[0].name); ;
    break;}
case 40:
#line 241 "ldgram.y"
{ lang_add_entry (yyvsp[0].name, false); ;
    break;}
case 42:
#line 246 "ldgram.y"
{ mri_order(yyvsp[0].name); ;
    break;}
case 43:
#line 247 "ldgram.y"
{ mri_order(yyvsp[0].name); ;
    break;}
case 45:
#line 253 "ldgram.y"
{ mri_load(yyvsp[0].name); ;
    break;}
case 46:
#line 254 "ldgram.y"
{ mri_load(yyvsp[0].name); ;
    break;}
case 47:
#line 259 "ldgram.y"
{ mri_only_load(yyvsp[0].name); ;
    break;}
case 48:
#line 261 "ldgram.y"
{ mri_only_load(yyvsp[0].name); ;
    break;}
case 49:
#line 265 "ldgram.y"
{ yyval.name = NULL; ;
    break;}
case 52:
#line 272 "ldgram.y"
{ ldlang_add_undef (yyvsp[0].name); ;
    break;}
case 53:
#line 274 "ldgram.y"
{ ldlang_add_undef (yyvsp[0].name); ;
    break;}
case 54:
#line 276 "ldgram.y"
{ ldlang_add_undef (yyvsp[0].name); ;
    break;}
case 55:
#line 280 "ldgram.y"
{
	 ldlex_both();
	;
    break;}
case 56:
#line 284 "ldgram.y"
{
	ldlex_popstate();
	;
    break;}
case 69:
#line 309 "ldgram.y"
{ lang_add_target(yyvsp[-1].name); ;
    break;}
case 70:
#line 311 "ldgram.y"
{ ldfile_add_library_path (yyvsp[-1].name, false); ;
    break;}
case 71:
#line 313 "ldgram.y"
{ lang_add_output(yyvsp[-1].name, 1); ;
    break;}
case 72:
#line 315 "ldgram.y"
{ lang_add_output_format (yyvsp[-1].name, (char *) NULL,
					    (char *) NULL, 1); ;
    break;}
case 73:
#line 318 "ldgram.y"
{ lang_add_output_format (yyvsp[-5].name, yyvsp[-3].name, yyvsp[-1].name, 1); ;
    break;}
case 74:
#line 320 "ldgram.y"
{ ldfile_set_output_arch(yyvsp[-1].name); ;
    break;}
case 75:
#line 322 "ldgram.y"
{ command_line.force_common_definition = true ; ;
    break;}
case 77:
#line 325 "ldgram.y"
{ lang_enter_group (); ;
    break;}
case 78:
#line 327 "ldgram.y"
{ lang_leave_group (); ;
    break;}
case 79:
#line 329 "ldgram.y"
{ lang_add_map(yyvsp[-1].name); ;
    break;}
case 80:
#line 331 "ldgram.y"
{ ldfile_open_command_file(yyvsp[0].name); ;
    break;}
case 82:
#line 333 "ldgram.y"
{
		  lang_add_nocrossref (yyvsp[-1].nocrossref);
		;
    break;}
case 84:
#line 341 "ldgram.y"
{ lang_add_input_file(yyvsp[0].name,lang_input_file_is_search_file_enum,
				 (char *)NULL); ;
    break;}
case 85:
#line 344 "ldgram.y"
{ lang_add_input_file(yyvsp[0].name,lang_input_file_is_search_file_enum,
				 (char *)NULL); ;
    break;}
case 86:
#line 347 "ldgram.y"
{ lang_add_input_file(yyvsp[0].name,lang_input_file_is_search_file_enum,
				 (char *)NULL); ;
    break;}
case 87:
#line 350 "ldgram.y"
{ lang_add_input_file(yyvsp[0].name,lang_input_file_is_l_enum,
				 (char *)NULL); ;
    break;}
case 88:
#line 353 "ldgram.y"
{ lang_add_input_file(yyvsp[0].name,lang_input_file_is_l_enum,
				 (char *)NULL); ;
    break;}
case 89:
#line 356 "ldgram.y"
{ lang_add_input_file(yyvsp[0].name,lang_input_file_is_l_enum,
				 (char *)NULL); ;
    break;}
case 94:
#line 372 "ldgram.y"
{ lang_add_entry (yyvsp[-1].name, false); ;
    break;}
case 96:
#line 380 "ldgram.y"
{
			  yyval.cname = yyvsp[0].name;
			;
    break;}
case 97:
#line 384 "ldgram.y"
{
			  yyval.cname = "*";
			;
    break;}
case 98:
#line 388 "ldgram.y"
{
			  yyval.cname = "?";
			;
    break;}
case 99:
#line 395 "ldgram.y"
{
			  yyval.wildcard.name = yyvsp[0].cname;
			  yyval.wildcard.sorted = false;
			  yyval.wildcard.exclude_name_list = NULL;
			;
    break;}
case 100:
#line 401 "ldgram.y"
{
			  yyval.wildcard.name = yyvsp[0].cname;
			  yyval.wildcard.sorted = false;
			  yyval.wildcard.exclude_name_list = yyvsp[-2].name_list;
			;
    break;}
case 101:
#line 407 "ldgram.y"
{
			  yyval.wildcard.name = yyvsp[-1].cname;
			  yyval.wildcard.sorted = true;
			  yyval.wildcard.exclude_name_list = NULL;
			;
    break;}
case 102:
#line 413 "ldgram.y"
{
			  yyval.wildcard.name = yyvsp[-1].cname;
			  yyval.wildcard.sorted = true;
			  yyval.wildcard.exclude_name_list = yyvsp[-3].name_list;
			;
    break;}
case 103:
#line 424 "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 104:
#line 433 "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 105:
#line 444 "ldgram.y"
{
			  lang_add_wild (yyvsp[0].wildcard.name, yyvsp[0].wildcard.sorted,
					 current_file.name,
					 current_file.sorted,
					 ldgram_had_keep, yyvsp[0].wildcard.exclude_name_list);
			;
    break;}
case 106:
#line 451 "ldgram.y"
{
			  lang_add_wild (yyvsp[0].wildcard.name, yyvsp[0].wildcard.sorted,
					 current_file.name,
					 current_file.sorted,
					 ldgram_had_keep, yyvsp[0].wildcard.exclude_name_list);
			;
    break;}
case 107:
#line 461 "ldgram.y"
{
			  lang_add_wild (NULL, false, yyvsp[0].name, false,
					 ldgram_had_keep, NULL);
			;
    break;}
case 108:
#line 466 "ldgram.y"
{
			  current_file.name = NULL;
			  current_file.sorted = false;
			;
    break;}
case 110:
#line 472 "ldgram.y"
{
			  current_file = yyvsp[0].wildcard;
			  /* '*' matches any file name.  */
			  if (strcmp (current_file.name, "*") == 0)
			    current_file.name = NULL;
			;
    break;}
case 113:
#line 484 "ldgram.y"
{ ldgram_had_keep = true; ;
    break;}
case 114:
#line 486 "ldgram.y"
{ ldgram_had_keep = false; ;
    break;}
case 116:
#line 492 "ldgram.y"
{
 		lang_add_attribute(lang_object_symbols_statement_enum); 
	      	;
    break;}
case 118:
#line 497 "ldgram.y"
{
 		
		  lang_add_attribute(lang_constructors_statement_enum); 
		;
    break;}
case 119:
#line 502 "ldgram.y"
{
		  constructors_sorted = true;
		  lang_add_attribute (lang_constructors_statement_enum);
		;
    break;}
case 121:
#line 508 "ldgram.y"
{
			lang_add_data((int) yyvsp[-3].integer,yyvsp[-1].etree);
			;
    break;}
case 122:
#line 513 "ldgram.y"
{
			  lang_add_fill
			    (exp_get_value_int(yyvsp[-1].etree,
					       0,
					       "fill value",
					       lang_first_phase_enum));
			;
    break;}
case 127:
#line 534 "ldgram.y"
{ yyval.integer = yyvsp[0].token; ;
    break;}
case 128:
#line 536 "ldgram.y"
{ yyval.integer = yyvsp[0].token; ;
    break;}
case 129:
#line 538 "ldgram.y"
{ yyval.integer = yyvsp[0].token; ;
    break;}
case 130:
#line 540 "ldgram.y"
{ yyval.integer = yyvsp[0].token; ;
    break;}
case 131:
#line 542 "ldgram.y"
{ yyval.integer = yyvsp[0].token; ;
    break;}
case 132:
#line 547 "ldgram.y"
{
		  yyval.integer =	 exp_get_value_int(yyvsp[0].etree,
					   0,
					   "fill value",
					   lang_first_phase_enum);
		;
    break;}
case 133:
#line 553 "ldgram.y"
{ yyval.integer = 0; ;
    break;}
case 134:
#line 560 "ldgram.y"
{ yyval.token = '+'; ;
    break;}
case 135:
#line 562 "ldgram.y"
{ yyval.token = '-'; ;
    break;}
case 136:
#line 564 "ldgram.y"
{ yyval.token = '*'; ;
    break;}
case 137:
#line 566 "ldgram.y"
{ yyval.token = '/'; ;
    break;}
case 138:
#line 568 "ldgram.y"
{ yyval.token = LSHIFT; ;
    break;}
case 139:
#line 570 "ldgram.y"
{ yyval.token = RSHIFT; ;
    break;}
case 140:
#line 572 "ldgram.y"
{ yyval.token = '&'; ;
    break;}
case 141:
#line 574 "ldgram.y"
{ yyval.token = '|'; ;
    break;}
case 144:
#line 584 "ldgram.y"
{
		  lang_add_assignment (exp_assop (yyvsp[-1].token, yyvsp[-2].name, yyvsp[0].etree));
		;
    break;}
case 145:
#line 588 "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 596 "ldgram.y"
{
		  lang_add_assignment (exp_provide (yyvsp[-3].name, yyvsp[-1].etree));
		;
    break;}
case 153:
#line 618 "ldgram.y"
{ region = lang_memory_region_lookup(yyvsp[0].name); ;
    break;}
case 155:
#line 624 "ldgram.y"
{ region->current =
		 region->origin =
		 exp_get_vma(yyvsp[0].etree, 0L,"origin", lang_first_phase_enum);
;
    break;}
case 156:
#line 632 "ldgram.y"
{ region->length = exp_get_vma(yyvsp[0].etree,
					       ~((bfd_vma)0),
					       "length",
					       lang_first_phase_enum);
		;
    break;}
case 157:
#line 641 "ldgram.y"
{ /* dummy action to avoid bison 1.25 error message */ ;
    break;}
case 161:
#line 652 "ldgram.y"
{ lang_set_flags (region, yyvsp[0].name, 0); ;
    break;}
case 162:
#line 654 "ldgram.y"
{ lang_set_flags (region, yyvsp[0].name, 1); ;
    break;}
case 163:
#line 659 "ldgram.y"
{ lang_startup(yyvsp[-1].name); ;
    break;}
case 165:
#line 665 "ldgram.y"
{ ldemul_hll((char *)NULL); ;
    break;}
case 166:
#line 670 "ldgram.y"
{ ldemul_hll(yyvsp[0].name); ;
    break;}
case 167:
#line 672 "ldgram.y"
{ ldemul_hll(yyvsp[0].name); ;
    break;}
case 169:
#line 680 "ldgram.y"
{ ldemul_syslib(yyvsp[0].name); ;
    break;}
case 171:
#line 686 "ldgram.y"
{ lang_float(true); ;
    break;}
case 172:
#line 688 "ldgram.y"
{ lang_float(false); ;
    break;}
case 173:
#line 693 "ldgram.y"
{
		  yyval.nocrossref = NULL;
		;
    break;}
case 174:
#line 697 "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 706 "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 716 "ldgram.y"
{ ldlex_expression(); ;
    break;}
case 177:
#line 718 "ldgram.y"
{ ldlex_popstate(); yyval.etree=yyvsp[0].etree;;
    break;}
case 178:
#line 723 "ldgram.y"
{ yyval.etree = exp_unop('-', yyvsp[0].etree); ;
    break;}
case 179:
#line 725 "ldgram.y"
{ yyval.etree = yyvsp[-1].etree; ;
    break;}
case 180:
#line 727 "ldgram.y"
{ yyval.etree = exp_unop((int) yyvsp[-3].integer,yyvsp[-1].etree); ;
    break;}
case 181:
#line 729 "ldgram.y"
{ yyval.etree = exp_unop('!', yyvsp[0].etree); ;
    break;}
case 182:
#line 731 "ldgram.y"
{ yyval.etree = yyvsp[0].etree; ;
    break;}
case 183:
#line 733 "ldgram.y"
{ yyval.etree = exp_unop('~', yyvsp[0].etree);;
    break;}
case 184:
#line 736 "ldgram.y"
{ yyval.etree = exp_binop('*', yyvsp[-2].etree, yyvsp[0].etree); ;
    break;}
case 185:
#line 738 "ldgram.y"
{ yyval.etree = exp_binop('/', yyvsp[-2].etree, yyvsp[0].etree); ;
    break;}
case 186:
#line 740 "ldgram.y"
{ yyval.etree = exp_binop('%', yyvsp[-2].etree, yyvsp[0].etree); ;
    break;}
case 187:
#line 742 "ldgram.y"
{ yyval.etree = exp_binop('+', yyvsp[-2].etree, yyvsp[0].etree); ;
    break;}
case 188:
#line 744 "ldgram.y"
{ yyval.etree = exp_binop('-' , yyvsp[-2].etree, yyvsp[0].etree); ;
    break;}
case 189:
#line 746 "ldgram.y"
{ yyval.etree = exp_binop(LSHIFT , yyvsp[-2].etree, yyvsp[0].etree); ;
    break;}
case 190:
#line 748 "ldgram.y"
{ yyval.etree = exp_binop(RSHIFT , yyvsp[-2].etree, yyvsp[0].etree); ;
    break;}
case 191:
#line 750 "ldgram.y"
{ yyval.etree = exp_binop(EQ , yyvsp[-2].etree, yyvsp[0].etree); ;
    break;}
case 192:
#line 752 "ldgram.y"
{ yyval.etree = exp_binop(NE , yyvsp[-2].etree, yyvsp[0].etree); ;
    break;}
case 193:
#line 754 "ldgram.y"
{ yyval.etree = exp_binop(LE , yyvsp[-2].etree, yyvsp[0].etree); ;
    break;}
case 194:
#line 756 "ldgram.y"
{ yyval.etree = exp_binop(GE , yyvsp[-2].etree, yyvsp[0].etree); ;
    break;}
case 195:
#line 758 "ldgram.y"
{ yyval.etree = exp_binop('<' , yyvsp[-2].etree, yyvsp[0].etree); ;
    break;}
case 196:
#line 760 "ldgram.y"
{ yyval.etree = exp_binop('>' , yyvsp[-2].etree, yyvsp[0].etree); ;
    break;}
case 197:
#line 762 "ldgram.y"
{ yyval.etree = exp_binop('&' , yyvsp[-2].etree, yyvsp[0].etree); ;
    break;}
case 198:
#line 764 "ldgram.y"
{ yyval.etree = exp_binop('^' , yyvsp[-2].etree, yyvsp[0].etree); ;
    break;}
case 199:
#line 766 "ldgram.y"
{ yyval.etree = exp_binop('|' , yyvsp[-2].etree, yyvsp[0].etree); ;
    break;}
case 200:
#line 768 "ldgram.y"
{ yyval.etree = exp_trinop('?' , yyvsp[-4].etree, yyvsp[-2].etree, yyvsp[0].etree); ;
    break;}
case 201:
#line 770 "ldgram.y"
{ yyval.etree = exp_binop(ANDAND , yyvsp[-2].etree, yyvsp[0].etree); ;
    break;}
case 202:
#line 772 "ldgram.y"
{ yyval.etree = exp_binop(OROR , yyvsp[-2].etree, yyvsp[0].etree); ;
    break;}
case 203:
#line 774 "ldgram.y"
{ yyval.etree = exp_nameop(DEFINED, yyvsp[-1].name); ;
    break;}
case 204:
#line 776 "ldgram.y"
{ yyval.etree = exp_intop(yyvsp[0].integer); ;
    break;}
case 205:
#line 778 "ldgram.y"
{ yyval.etree = exp_nameop(SIZEOF_HEADERS,0); ;
    break;}
case 206:
#line 781 "ldgram.y"
{ yyval.etree = exp_nameop(SIZEOF,yyvsp[-1].name); ;
    break;}
case 207:
#line 783 "ldgram.y"
{ yyval.etree = exp_nameop(ADDR,yyvsp[-1].name); ;
    break;}
case 208:
#line 785 "ldgram.y"
{ yyval.etree = exp_nameop(LOADADDR,yyvsp[-1].name); ;
    break;}
case 209:
#line 787 "ldgram.y"
{ yyval.etree = exp_unop(ABSOLUTE, yyvsp[-1].etree); ;
    break;}
case 210:
#line 789 "ldgram.y"
{ yyval.etree = exp_unop(ALIGN_K,yyvsp[-1].etree); ;
    break;}
case 211:
#line 791 "ldgram.y"
{ yyval.etree = exp_unop(ALIGN_K,yyvsp[-1].etree); ;
    break;}
case 212:
#line 793 "ldgram.y"
{ yyval.etree = exp_nameop(NAME,yyvsp[0].name); ;
    break;}
case 213:
#line 795 "ldgram.y"
{ yyval.etree = exp_binop (MAX_K, yyvsp[-3].etree, yyvsp[-1].etree ); ;
    break;}
case 214:
#line 797 "ldgram.y"
{ yyval.etree = exp_binop (MIN_K, yyvsp[-3].etree, yyvsp[-1].etree ); ;
    break;}
case 215:
#line 799 "ldgram.y"
{ yyval.etree = exp_assert (yyvsp[-3].etree, yyvsp[-1].name); ;
    break;}
case 216:
#line 804 "ldgram.y"
{ yyval.name = yyvsp[0].name; ;
    break;}
case 217:
#line 805 "ldgram.y"
{ yyval.name = "*default*"; ;
    break;}
case 218:
#line 809 "ldgram.y"
{ yyval.etree = yyvsp[-1].etree; ;
    break;}
case 219:
#line 810 "ldgram.y"
{ yyval.etree = 0; ;
    break;}
case 220:
#line 813 "ldgram.y"
{ ldlex_expression(); ;
    break;}
case 221:
#line 815 "ldgram.y"
{ ldlex_popstate (); ldlex_script (); ;
    break;}
case 222:
#line 817 "ldgram.y"
{
			  lang_enter_output_section_statement(yyvsp[-5].name, yyvsp[-3].etree,
							      sectype,
							      0, 0, 0, yyvsp[-2].etree);
			;
    break;}
case 223:
#line 823 "ldgram.y"
{ ldlex_popstate (); ldlex_expression (); ;
    break;}
case 224:
#line 825 "ldgram.y"
{
		  ldlex_popstate ();
		  lang_leave_output_section_statement (yyvsp[0].integer, yyvsp[-3].name, yyvsp[-1].section_phdr, yyvsp[-2].name);
		;
    break;}
case 226:
#line 831 "ldgram.y"
{ ldlex_expression (); ;
    break;}
case 227:
#line 833 "ldgram.y"
{ ldlex_popstate (); ldlex_script (); ;
    break;}
case 228:
#line 835 "ldgram.y"
{
			  lang_enter_overlay (yyvsp[-4].etree, yyvsp[-2].etree, (int) yyvsp[-3].integer);
			;
    break;}
case 229:
#line 840 "ldgram.y"
{ ldlex_popstate (); ldlex_expression (); ;
    break;}
case 230:
#line 842 "ldgram.y"
{
			  ldlex_popstate ();
			  lang_leave_overlay (yyvsp[0].integer, yyvsp[-3].name, yyvsp[-1].section_phdr, yyvsp[-2].name);
			;
    break;}
case 232:
#line 851 "ldgram.y"
{ ldlex_expression (); ;
    break;}
case 233:
#line 853 "ldgram.y"
{
		  ldlex_popstate ();
		  lang_add_assignment (exp_assop ('=', ".", yyvsp[0].etree));
		;
    break;}
case 235:
#line 861 "ldgram.y"
{ sectype = noload_section; ;
    break;}
case 236:
#line 862 "ldgram.y"
{ sectype = dsect_section; ;
    break;}
case 237:
#line 863 "ldgram.y"
{ sectype = copy_section; ;
    break;}
case 238:
#line 864 "ldgram.y"
{ sectype = info_section; ;
    break;}
case 239:
#line 865 "ldgram.y"
{ sectype = overlay_section; ;
    break;}
case 241:
#line 870 "ldgram.y"
{ sectype = normal_section; ;
    break;}
case 242:
#line 871 "ldgram.y"
{ sectype = normal_section; ;
    break;}
case 243:
#line 875 "ldgram.y"
{ yyval.etree = yyvsp[-2].etree; ;
    break;}
case 244:
#line 876 "ldgram.y"
{ yyval.etree = (etree_type *)NULL;  ;
    break;}
case 245:
#line 881 "ldgram.y"
{ yyval.etree = yyvsp[-3].etree; ;
    break;}
case 246:
#line 883 "ldgram.y"
{ yyval.etree = yyvsp[-7].etree; ;
    break;}
case 247:
#line 887 "ldgram.y"
{ yyval.etree = yyvsp[-1].etree; ;
    break;}
case 248:
#line 888 "ldgram.y"
{ yyval.etree = (etree_type *) NULL;  ;
    break;}
case 249:
#line 893 "ldgram.y"
{ yyval.integer = 0; ;
    break;}
case 250:
#line 895 "ldgram.y"
{ yyval.integer = 1; ;
    break;}
case 251:
#line 900 "ldgram.y"
{ yyval.name = yyvsp[0].name; ;
    break;}
case 252:
#line 901 "ldgram.y"
{ yyval.name = "*default*"; ;
    break;}
case 253:
#line 906 "ldgram.y"
{
		  yyval.section_phdr = NULL;
		;
    break;}
case 254:
#line 910 "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 256:
#line 926 "ldgram.y"
{
			  ldlex_script ();
			  lang_enter_overlay_section (yyvsp[0].name);
			;
    break;}
case 257:
#line 931 "ldgram.y"
{ ldlex_popstate (); ldlex_expression (); ;
    break;}
case 258:
#line 933 "ldgram.y"
{
			  ldlex_popstate ();
			  lang_leave_overlay_section (yyvsp[0].integer, yyvsp[-1].section_phdr);
			;
    break;}
case 263:
#line 950 "ldgram.y"
{ ldlex_expression (); ;
    break;}
case 264:
#line 951 "ldgram.y"
{ ldlex_popstate (); ;
    break;}
case 265:
#line 953 "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 266:
#line 961 "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"
			};

		      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;
			  }
		    }
		;
    break;}
case 267:
#line 991 "ldgram.y"
{
		  memset (&yyval.phdr, 0, sizeof (struct phdr_info));
		;
    break;}
case 268:
#line 995 "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 269:
#line 1007 "ldgram.y"
{
		  yyval.phdr = yyvsp[0].phdr;
		  yyval.phdr.at = yyvsp[-2].etree;
		;
    break;}
case 270:
#line 1015 "ldgram.y"
{
		  yyval.etree = NULL;
		;
    break;}
case 271:
#line 1019 "ldgram.y"
{
		  yyval.etree = yyvsp[-1].etree;
		;
    break;}
case 272:
#line 1027 "ldgram.y"
{
		  ldlex_version_file ();
		  PUSH_ERROR (_("VERSION script"));
		;
    break;}
case 273:
#line 1032 "ldgram.y"
{
		  ldlex_popstate ();
		  POP_ERROR ();
		;
    break;}
case 274:
#line 1041 "ldgram.y"
{
		  ldlex_version_script ();
		;
    break;}
case 275:
#line 1045 "ldgram.y"
{
		  ldlex_popstate ();
		;
    break;}
case 278:
#line 1057 "ldgram.y"
{
		  lang_register_vers_node (yyvsp[-4].name, yyvsp[-2].versnode, NULL);
		;
    break;}
case 279:
#line 1061 "ldgram.y"
{
		  lang_register_vers_node (yyvsp[-5].name, yyvsp[-3].versnode, yyvsp[-1].deflist);
		;
    break;}
case 280:
#line 1068 "ldgram.y"
{
		  yyval.deflist = lang_add_vers_depend (NULL, yyvsp[0].name);
		;
    break;}
case 281:
#line 1072 "ldgram.y"
{
		  yyval.deflist = lang_add_vers_depend (yyvsp[-1].deflist, yyvsp[0].name);
		;
    break;}
case 282:
#line 1079 "ldgram.y"
{
		  yyval.versnode = lang_new_vers_node (NULL, NULL);
		;
    break;}
case 283:
#line 1083 "ldgram.y"
{
		  yyval.versnode = lang_new_vers_node (yyvsp[-1].versyms, NULL);
		;
    break;}
case 284:
#line 1087 "ldgram.y"
{
		  yyval.versnode = lang_new_vers_node (yyvsp[-1].versyms, NULL);
		;
    break;}
case 285:
#line 1091 "ldgram.y"
{
		  yyval.versnode = lang_new_vers_node (NULL, yyvsp[-1].versyms);
		;
    break;}
case 286:
#line 1095 "ldgram.y"
{
		  yyval.versnode = lang_new_vers_node (yyvsp[-5].versyms, yyvsp[-1].versyms);
		;
    break;}
case 287:
#line 1102 "ldgram.y"
{
		  yyval.versyms = lang_new_vers_regex (NULL, yyvsp[0].name, ldgram_vers_current_lang);
		;
    break;}
case 288:
#line 1106 "ldgram.y"
{
		  yyval.versyms = lang_new_vers_regex (yyvsp[-2].versyms, yyvsp[0].name, ldgram_vers_current_lang);
		;
    break;}
case 289:
#line 1110 "ldgram.y"
{
			  yyval.name = ldgram_vers_current_lang;
			  ldgram_vers_current_lang = yyvsp[-1].name;
			;
    break;}
case 290:
#line 1115 "ldgram.y"
{
			  ldgram_vers_current_lang = yyvsp[-2].name;
			;
    break;}
}
   /* the action file gets copied in in place of this dollarsign */
#line 543 "/usr/share/misc/bison.simple"

  yyvsp -= yylen;
  yyssp -= yylen;
#ifdef YYLSP_NEEDED
  yylsp -= yylen;
#endif

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

  *++yyvsp = yyval;

#ifdef YYLSP_NEEDED
  yylsp++;
  if (yylen == 0)
    {
      yylsp->first_line = yylloc.first_line;
      yylsp->first_column = yylloc.first_column;
      yylsp->last_line = (yylsp-1)->last_line;
      yylsp->last_column = (yylsp-1)->last_column;
      yylsp->text = 0;
    }
  else
    {
      yylsp->last_line = (yylsp+yylen-1)->last_line;
      yylsp->last_column = (yylsp+yylen-1)->last_column;
    }
#endif

  /* Now "shift" the result of the reduction.
     Determine what state that goes to,
     based on the state we popped back to
     and the rule number reduced by.  */

  yyn = yyr1[yyn];

  yystate = yypgoto[yyn - YYNTBASE] + *yyssp;
  if (yystate >= 0 && yystate <= YYLAST && yycheck[yystate] == *yyssp)
    yystate = yytable[yystate];
  else
    yystate = yydefgoto[yyn - YYNTBASE];

  goto yynewstate;

yyerrlab:   /* here on detecting error */

  if (! yyerrstatus)
    /* If not already recovering from an error, report this error.  */
    {
      ++yynerrs;

#ifdef YYERROR_VERBOSE
      yyn = yypact[yystate];

      if (yyn > YYFLAG && yyn < YYLAST)
	{
	  int size = 0;
	  char *msg;
	  int x, count;

	  count = 0;
	  /* Start X at -yyn if nec to avoid negative indexes in yycheck.  */
	  for (x = (yyn < 0 ? -yyn : 0);
	       x < (sizeof(yytname) / sizeof(char *)); x++)
	    if (yycheck[x + yyn] == x)
	      size += strlen(yytname[x]) + 15, count++;
	  msg = (char *) malloc(size + 15);
	  if (msg != 0)
	    {
	      strcpy(msg, "parse error");

	      if (count < 5)
		{
		  count = 0;
		  for (x = (yyn < 0 ? -yyn : 0);
		       x < (sizeof(yytname) / sizeof(char *)); x++)
		    if (yycheck[x + yyn] == x)
		      {
			strcat(msg, count == 0 ? ", expecting `" : " or `");
			strcat(msg, yytname[x]);
			strcat(msg, "'");
			count++;
		      }
		}
	      yyerror(msg);
	      free(msg);
	    }
	  else
	    yyerror ("parse error; also virtual memory exceeded");
	}
      else
#endif /* YYERROR_VERBOSE */
	yyerror("parse error");
    }

  goto yyerrlab1;
yyerrlab1:   /* here on error raised explicitly by an action */

  if (yyerrstatus == 3)
    {
      /* if just tried and failed to reuse lookahead token after an error, discard it.  */

      /* return failure if at end of input */
      if (yychar == YYEOF)
	YYABORT;

#if YYDEBUG != 0
      if (yydebug)
	fprintf(stderr, "Discarding token %d (%s).\n", yychar, yytname[yychar1]);
#endif

      yychar = YYEMPTY;
    }

  /* Else will try to reuse lookahead token
     after shifting the error token.  */

  yyerrstatus = 3;		/* Each real token shifted decrements this */

  goto yyerrhandle;

yyerrdefault:  /* current state does not do anything special for the error token. */

#if 0
  /* This is wrong; only states that explicitly want error tokens
     should shift them.  */
  yyn = yydefact[yystate];  /* If its default is to accept any token, ok.  Otherwise pop it.*/
  if (yyn) goto yydefault;
#endif

yyerrpop:   /* pop the current state because it cannot handle the error token */

  if (yyssp == yyss) YYABORT;
  yyvsp--;
  yystate = *--yyssp;
#ifdef YYLSP_NEEDED
  yylsp--;
#endif

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

yyerrhandle:

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

  yyn += YYTERROR;
  if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != YYTERROR)
    goto yyerrdefault;

  yyn = yytable[yyn];
  if (yyn < 0)
    {
      if (yyn == YYFLAG)
	goto yyerrpop;
      yyn = -yyn;
      goto yyreduce;
    }
  else if (yyn == 0)
    goto yyerrpop;

  if (yyn == YYFINAL)
    YYACCEPT;

#if YYDEBUG != 0
  if (yydebug)
    fprintf(stderr, "Shifting error token, ");
#endif

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

  yystate = yyn;
  goto yynewstate;

 yyacceptlab:
  /* YYACCEPT comes here.  */
  if (yyfree_stacks)
    {
      free (yyss);
      free (yyvs);
#ifdef YYLSP_NEEDED
      free (yyls);
#endif
    }
  return 0;

 yyabortlab:
  /* YYABORT comes here.  */
  if (yyfree_stacks)
    {
      free (yyss);
      free (yyvs);
#ifdef YYLSP_NEEDED
      free (yyls);
#endif
    }
  return 1;
}
#line 1120 "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);
}
