xref: /netbsd-src/external/gpl3/binutils.old/dist/binutils/arparse.c (revision d909946ca08dceb44d7d0f22ec9488679695d976)
1 /* A Bison parser, made by GNU Bison 2.3.  */
2 
3 /* Skeleton implementation for Bison's Yacc-like parsers in C
4 
5    Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006
6    Free Software Foundation, Inc.
7 
8    This program is free software; you can redistribute it and/or modify
9    it under the terms of the GNU General Public License as published by
10    the Free Software Foundation; either version 2, or (at your option)
11    any later version.
12 
13    This program is distributed in the hope that it will be useful,
14    but WITHOUT ANY WARRANTY; without even the implied warranty of
15    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16    GNU General Public License for more details.
17 
18    You should have received a copy of the GNU General Public License
19    along with this program; if not, write to the Free Software
20    Foundation, Inc., 51 Franklin Street, Fifth Floor,
21    Boston, MA 02110-1301, USA.  */
22 
23 /* As a special exception, you may create a larger work that contains
24    part or all of the Bison parser skeleton and distribute that work
25    under terms of your choice, so long as that work isn't itself a
26    parser generator using the skeleton or a modified version thereof
27    as a parser skeleton.  Alternatively, if you modify or redistribute
28    the parser skeleton itself, you may (at your option) remove this
29    special exception, which will cause the skeleton and the resulting
30    Bison output files to be licensed under the GNU General Public
31    License without this special exception.
32 
33    This special exception was added by the Free Software Foundation in
34    version 2.2 of Bison.  */
35 
36 /* C LALR(1) parser skeleton written by Richard Stallman, by
37    simplifying the original so-called "semantic" parser.  */
38 
39 /* All symbols defined below should begin with yy or YY, to avoid
40    infringing on user name space.  This should be done even for local
41    variables, as they might otherwise be expanded by user macros.
42    There are some unavoidable exceptions within include files to
43    define necessary library symbols; they are noted "INFRINGES ON
44    USER NAME SPACE" below.  */
45 
46 /* Identify Bison output.  */
47 #define YYBISON 1
48 
49 /* Bison version.  */
50 #define YYBISON_VERSION "2.3"
51 
52 /* Skeleton name.  */
53 #define YYSKELETON_NAME "yacc.c"
54 
55 /* Pure parsers.  */
56 #define YYPURE 0
57 
58 /* Using locations.  */
59 #define YYLSP_NEEDED 0
60 
61 
62 
63 /* Tokens.  */
64 #ifndef YYTOKENTYPE
65 # define YYTOKENTYPE
66    /* Put the tokens into the symbol table, so that GDB and other debuggers
67       know about them.  */
68    enum yytokentype {
69      NEWLINE = 258,
70      VERBOSE = 259,
71      FILENAME = 260,
72      ADDLIB = 261,
73      LIST = 262,
74      ADDMOD = 263,
75      CLEAR = 264,
76      CREATE = 265,
77      DELETE = 266,
78      DIRECTORY = 267,
79      END = 268,
80      EXTRACT = 269,
81      FULLDIR = 270,
82      HELP = 271,
83      QUIT = 272,
84      REPLACE = 273,
85      SAVE = 274,
86      OPEN = 275
87    };
88 #endif
89 /* Tokens.  */
90 #define NEWLINE 258
91 #define VERBOSE 259
92 #define FILENAME 260
93 #define ADDLIB 261
94 #define LIST 262
95 #define ADDMOD 263
96 #define CLEAR 264
97 #define CREATE 265
98 #define DELETE 266
99 #define DIRECTORY 267
100 #define END 268
101 #define EXTRACT 269
102 #define FULLDIR 270
103 #define HELP 271
104 #define QUIT 272
105 #define REPLACE 273
106 #define SAVE 274
107 #define OPEN 275
108 
109 
110 
111 
112 /* Copy the first part of user declarations.  */
113 #line 1 "arparse.y"
114 
115 /* arparse.y - Stange script language parser */
116 
117 /* Copyright 1992, 1993, 1995, 1997, 1999, 2002, 2003, 2005, 2007
118    Free Software Foundation, Inc.
119 
120    This file is part of GNU Binutils.
121 
122    This program is free software; you can redistribute it and/or modify
123    it under the terms of the GNU General Public License as published by
124    the Free Software Foundation; either version 3 of the License, or
125    (at your option) any later version.
126 
127    This program is distributed in the hope that it will be useful,
128    but WITHOUT ANY WARRANTY; without even the implied warranty of
129    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
130    GNU General Public License for more details.
131 
132    You should have received a copy of the GNU General Public License
133    along with this program; if not, write to the Free Software
134    Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
135    MA 02110-1301, USA.  */
136 
137 
138 /* Contributed by Steve Chamberlain
139    		  sac@cygnus.com
140 
141 */
142 #define DONTDECLARE_MALLOC
143 #include "sysdep.h"
144 #include "bfd.h"
145 #include "arsup.h"
146 extern int verbose;
147 extern int yylex (void);
148 static int yyerror (const char *);
149 
150 
151 /* Enabling traces.  */
152 #ifndef YYDEBUG
153 # define YYDEBUG 0
154 #endif
155 
156 /* Enabling verbose error messages.  */
157 #ifdef YYERROR_VERBOSE
158 # undef YYERROR_VERBOSE
159 # define YYERROR_VERBOSE 1
160 #else
161 # define YYERROR_VERBOSE 0
162 #endif
163 
164 /* Enabling the token table.  */
165 #ifndef YYTOKEN_TABLE
166 # define YYTOKEN_TABLE 0
167 #endif
168 
169 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
170 typedef union YYSTYPE
171 #line 38 "arparse.y"
172 {
173   char *name;
174 struct list *list ;
175 
176 }
177 /* Line 193 of yacc.c.  */
178 #line 179 "arparse.c"
179 	YYSTYPE;
180 # define yystype YYSTYPE /* obsolescent; will be withdrawn */
181 # define YYSTYPE_IS_DECLARED 1
182 # define YYSTYPE_IS_TRIVIAL 1
183 #endif
184 
185 
186 
187 /* Copy the second part of user declarations.  */
188 
189 
190 /* Line 216 of yacc.c.  */
191 #line 192 "arparse.c"
192 
193 #ifdef short
194 # undef short
195 #endif
196 
197 #ifdef YYTYPE_UINT8
198 typedef YYTYPE_UINT8 yytype_uint8;
199 #else
200 typedef unsigned char yytype_uint8;
201 #endif
202 
203 #ifdef YYTYPE_INT8
204 typedef YYTYPE_INT8 yytype_int8;
205 #elif (defined __STDC__ || defined __C99__FUNC__ \
206      || defined __cplusplus || defined _MSC_VER)
207 typedef signed char yytype_int8;
208 #else
209 typedef short int yytype_int8;
210 #endif
211 
212 #ifdef YYTYPE_UINT16
213 typedef YYTYPE_UINT16 yytype_uint16;
214 #else
215 typedef unsigned short int yytype_uint16;
216 #endif
217 
218 #ifdef YYTYPE_INT16
219 typedef YYTYPE_INT16 yytype_int16;
220 #else
221 typedef short int yytype_int16;
222 #endif
223 
224 #ifndef YYSIZE_T
225 # ifdef __SIZE_TYPE__
226 #  define YYSIZE_T __SIZE_TYPE__
227 # elif defined size_t
228 #  define YYSIZE_T size_t
229 # elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \
230      || defined __cplusplus || defined _MSC_VER)
231 #  include <stddef.h> /* INFRINGES ON USER NAME SPACE */
232 #  define YYSIZE_T size_t
233 # else
234 #  define YYSIZE_T unsigned int
235 # endif
236 #endif
237 
238 #define YYSIZE_MAXIMUM ((YYSIZE_T) -1)
239 
240 #ifndef YY_
241 # if defined YYENABLE_NLS && YYENABLE_NLS
242 #  if ENABLE_NLS
243 #   include <libintl.h> /* INFRINGES ON USER NAME SPACE */
244 #   define YY_(msgid) dgettext ("bison-runtime", msgid)
245 #  endif
246 # endif
247 # ifndef YY_
248 #  define YY_(msgid) msgid
249 # endif
250 #endif
251 
252 /* Suppress unused-variable warnings by "using" E.  */
253 #if ! defined lint || defined __GNUC__
254 # define YYUSE(e) ((void) (e))
255 #else
256 # define YYUSE(e) /* empty */
257 #endif
258 
259 /* Identity function, used to suppress warnings about constant conditions.  */
260 #ifndef lint
261 # define YYID(n) (n)
262 #else
263 #if (defined __STDC__ || defined __C99__FUNC__ \
264      || defined __cplusplus || defined _MSC_VER)
265 static int
266 YYID (int i)
267 #else
268 static int
269 YYID (i)
270     int i;
271 #endif
272 {
273   return i;
274 }
275 #endif
276 
277 #if ! defined yyoverflow || YYERROR_VERBOSE
278 
279 /* The parser invokes alloca or malloc; define the necessary symbols.  */
280 
281 # ifdef YYSTACK_USE_ALLOCA
282 #  if YYSTACK_USE_ALLOCA
283 #   ifdef __GNUC__
284 #    define YYSTACK_ALLOC __builtin_alloca
285 #   elif defined __BUILTIN_VA_ARG_INCR
286 #    include <alloca.h> /* INFRINGES ON USER NAME SPACE */
287 #   elif defined _AIX
288 #    define YYSTACK_ALLOC __alloca
289 #   elif defined _MSC_VER
290 #    include <malloc.h> /* INFRINGES ON USER NAME SPACE */
291 #    define alloca _alloca
292 #   else
293 #    define YYSTACK_ALLOC alloca
294 #    if ! defined _ALLOCA_H && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
295      || defined __cplusplus || defined _MSC_VER)
296 #     include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
297 #     ifndef _STDLIB_H
298 #      define _STDLIB_H 1
299 #     endif
300 #    endif
301 #   endif
302 #  endif
303 # endif
304 
305 # ifdef YYSTACK_ALLOC
306    /* Pacify GCC's `empty if-body' warning.  */
307 #  define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0))
308 #  ifndef YYSTACK_ALLOC_MAXIMUM
309     /* The OS might guarantee only one guard page at the bottom of the stack,
310        and a page size can be as small as 4096 bytes.  So we cannot safely
311        invoke alloca (N) if N exceeds 4096.  Use a slightly smaller number
312        to allow for a few compiler-allocated temporary stack slots.  */
313 #   define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */
314 #  endif
315 # else
316 #  define YYSTACK_ALLOC YYMALLOC
317 #  define YYSTACK_FREE YYFREE
318 #  ifndef YYSTACK_ALLOC_MAXIMUM
319 #   define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
320 #  endif
321 #  if (defined __cplusplus && ! defined _STDLIB_H \
322        && ! ((defined YYMALLOC || defined malloc) \
323 	     && (defined YYFREE || defined free)))
324 #   include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
325 #   ifndef _STDLIB_H
326 #    define _STDLIB_H 1
327 #   endif
328 #  endif
329 #  ifndef YYMALLOC
330 #   define YYMALLOC malloc
331 #   if ! defined malloc && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
332      || defined __cplusplus || defined _MSC_VER)
333 void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
334 #   endif
335 #  endif
336 #  ifndef YYFREE
337 #   define YYFREE free
338 #   if ! defined free && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
339      || defined __cplusplus || defined _MSC_VER)
340 void free (void *); /* INFRINGES ON USER NAME SPACE */
341 #   endif
342 #  endif
343 # endif
344 #endif /* ! defined yyoverflow || YYERROR_VERBOSE */
345 
346 
347 #if (! defined yyoverflow \
348      && (! defined __cplusplus \
349 	 || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
350 
351 /* A type that is properly aligned for any stack member.  */
352 union yyalloc
353 {
354   yytype_int16 yyss;
355   YYSTYPE yyvs;
356   };
357 
358 /* The size of the maximum gap between one aligned stack and the next.  */
359 # define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
360 
361 /* The size of an array large to enough to hold all stacks, each with
362    N elements.  */
363 # define YYSTACK_BYTES(N) \
364      ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \
365       + YYSTACK_GAP_MAXIMUM)
366 
367 /* Copy COUNT objects from FROM to TO.  The source and destination do
368    not overlap.  */
369 # ifndef YYCOPY
370 #  if defined __GNUC__ && 1 < __GNUC__
371 #   define YYCOPY(To, From, Count) \
372       __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
373 #  else
374 #   define YYCOPY(To, From, Count)		\
375       do					\
376 	{					\
377 	  YYSIZE_T yyi;				\
378 	  for (yyi = 0; yyi < (Count); yyi++)	\
379 	    (To)[yyi] = (From)[yyi];		\
380 	}					\
381       while (YYID (0))
382 #  endif
383 # endif
384 
385 /* Relocate STACK from its old location to the new one.  The
386    local variables YYSIZE and YYSTACKSIZE give the old and new number of
387    elements in the stack, and YYPTR gives the new location of the
388    stack.  Advance YYPTR to a properly aligned location for the next
389    stack.  */
390 # define YYSTACK_RELOCATE(Stack)					\
391     do									\
392       {									\
393 	YYSIZE_T yynewbytes;						\
394 	YYCOPY (&yyptr->Stack, Stack, yysize);				\
395 	Stack = &yyptr->Stack;						\
396 	yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
397 	yyptr += yynewbytes / sizeof (*yyptr);				\
398       }									\
399     while (YYID (0))
400 
401 #endif
402 
403 /* YYFINAL -- State number of the termination state.  */
404 #define YYFINAL  3
405 /* YYLAST -- Last index in YYTABLE.  */
406 #define YYLAST   34
407 
408 /* YYNTOKENS -- Number of terminals.  */
409 #define YYNTOKENS  24
410 /* YYNNTS -- Number of nonterminals.  */
411 #define YYNNTS  22
412 /* YYNRULES -- Number of rules.  */
413 #define YYNRULES  42
414 /* YYNRULES -- Number of states.  */
415 #define YYNSTATES  53
416 
417 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
418 #define YYUNDEFTOK  2
419 #define YYMAXUTOK   275
420 
421 #define YYTRANSLATE(YYX)						\
422   ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
423 
424 /* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX.  */
425 static const yytype_uint8 yytranslate[] =
426 {
427        0,     2,     2,     2,     2,     2,     2,     2,     2,     2,
428        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
429        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
430        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
431       21,    22,     2,     2,    23,     2,     2,     2,     2,     2,
432        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
433        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
434        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
435        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
436        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
437        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
438        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
439        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
440        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
441        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
442        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
443        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
444        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
445        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
446        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
447        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
448        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
449        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
450        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
451        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
452        2,     2,     2,     2,     2,     2,     1,     2,     3,     4,
453        5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
454       15,    16,    17,    18,    19,    20
455 };
456 
457 #if YYDEBUG
458 /* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
459    YYRHS.  */
460 static const yytype_uint8 yyprhs[] =
461 {
462        0,     0,     3,     4,     7,    10,    11,    14,    16,    18,
463       20,    22,    24,    26,    28,    30,    32,    34,    36,    38,
464       40,    42,    44,    45,    48,    51,    53,    56,    59,    61,
465       63,    66,    69,    73,    78,    80,    81,    85,    86,    90,
466       91,    93,    94
467 };
468 
469 /* YYRHS -- A `-1'-separated list of the rules' RHS.  */
470 static const yytype_int8 yyrhs[] =
471 {
472       25,     0,    -1,    -1,    26,    27,    -1,    27,    28,    -1,
473       -1,    29,     3,    -1,    37,    -1,    38,    -1,    45,    -1,
474       40,    -1,    39,    -1,    32,    -1,    34,    -1,    36,    -1,
475       30,    -1,    31,    -1,    33,    -1,    35,    -1,    13,    -1,
476        1,    -1,     5,    -1,    -1,    14,    43,    -1,    18,    43,
477       -1,     9,    -1,    11,    43,    -1,     8,    43,    -1,     7,
478       -1,    19,    -1,    20,     5,    -1,    10,     5,    -1,     6,
479        5,    42,    -1,    12,     5,    42,    41,    -1,     5,    -1,
480       -1,    21,    43,    22,    -1,    -1,    43,    44,     5,    -1,
481       -1,    23,    -1,    -1,     4,    -1
482 };
483 
484 /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
485 static const yytype_uint8 yyrline[] =
486 {
487        0,    69,    69,    69,    73,    74,    78,    82,    83,    84,
488       85,    86,    87,    88,    89,    90,    91,    92,    93,    94,
489       95,    96,    97,   102,   107,   112,   117,   121,   126,   131,
490      138,   143,   149,   153,   160,   162,   166,   169,   173,   179,
491      184,   185,   190
492 };
493 #endif
494 
495 #if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE
496 /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
497    First, the terminals, then, starting at YYNTOKENS, nonterminals.  */
498 static const char *const yytname[] =
499 {
500   "$end", "error", "$undefined", "NEWLINE", "VERBOSE", "FILENAME",
501   "ADDLIB", "LIST", "ADDMOD", "CLEAR", "CREATE", "DELETE", "DIRECTORY",
502   "END", "EXTRACT", "FULLDIR", "HELP", "QUIT", "REPLACE", "SAVE", "OPEN",
503   "'('", "')'", "','", "$accept", "start", "@1", "session", "command_line",
504   "command", "extract_command", "replace_command", "clear_command",
505   "delete_command", "addmod_command", "list_command", "save_command",
506   "open_command", "create_command", "addlib_command", "directory_command",
507   "optional_filename", "modulelist", "modulename", "optcomma",
508   "verbose_command", 0
509 };
510 #endif
511 
512 # ifdef YYPRINT
513 /* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to
514    token YYLEX-NUM.  */
515 static const yytype_uint16 yytoknum[] =
516 {
517        0,   256,   257,   258,   259,   260,   261,   262,   263,   264,
518      265,   266,   267,   268,   269,   270,   271,   272,   273,   274,
519      275,    40,    41,    44
520 };
521 # endif
522 
523 /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
524 static const yytype_uint8 yyr1[] =
525 {
526        0,    24,    26,    25,    27,    27,    28,    29,    29,    29,
527       29,    29,    29,    29,    29,    29,    29,    29,    29,    29,
528       29,    29,    29,    30,    31,    32,    33,    34,    35,    36,
529       37,    38,    39,    40,    41,    41,    42,    42,    43,    43,
530       44,    44,    45
531 };
532 
533 /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
534 static const yytype_uint8 yyr2[] =
535 {
536        0,     2,     0,     2,     2,     0,     2,     1,     1,     1,
537        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
538        1,     1,     0,     2,     2,     1,     2,     2,     1,     1,
539        2,     2,     3,     4,     1,     0,     3,     0,     3,     0,
540        1,     0,     1
541 };
542 
543 /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
544    STATE-NUM when YYTABLE doesn't specify something else to do.  Zero
545    means the default is an error.  */
546 static const yytype_uint8 yydefact[] =
547 {
548        2,     0,     5,     1,     0,    20,    42,    21,     0,    28,
549       39,    25,     0,    39,     0,    19,    39,    39,    29,     0,
550        4,     0,    15,    16,    12,    17,    13,    18,    14,     7,
551        8,    11,    10,     9,    37,    27,    31,    26,    37,    23,
552       24,    30,     6,    39,    32,    40,     0,    35,    41,    38,
553       34,    33,    36
554 };
555 
556 /* YYDEFGOTO[NTERM-NUM].  */
557 static const yytype_int8 yydefgoto[] =
558 {
559       -1,     1,     2,     4,    20,    21,    22,    23,    24,    25,
560       26,    27,    28,    29,    30,    31,    32,    51,    44,    35,
561       46,    33
562 };
563 
564 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
565    STATE-NUM.  */
566 #define YYPACT_NINF -14
567 static const yytype_int8 yypact[] =
568 {
569      -14,     1,   -14,   -14,     5,   -14,   -14,   -14,     2,   -14,
570      -14,   -14,    21,   -14,    22,   -14,   -14,   -14,   -14,    23,
571      -14,    26,   -14,   -14,   -14,   -14,   -14,   -14,   -14,   -14,
572      -14,   -14,   -14,   -14,    10,    -3,   -14,    -3,    10,    -3,
573       -3,   -14,   -14,   -14,   -14,   -14,    27,    28,    -1,   -14,
574      -14,   -14,   -14
575 };
576 
577 /* YYPGOTO[NTERM-NUM].  */
578 static const yytype_int8 yypgoto[] =
579 {
580      -14,   -14,   -14,   -14,   -14,   -14,   -14,   -14,   -14,   -14,
581      -14,   -14,   -14,   -14,   -14,   -14,   -14,   -14,    -4,   -13,
582      -14,   -14
583 };
584 
585 /* YYTABLE[YYPACT[STATE-NUM]].  What to do in state STATE-NUM.  If
586    positive, shift that token.  If negative, reduce the rule which
587    number is the opposite.  If zero, do what YYDEFACT says.
588    If YYTABLE_NINF, syntax error.  */
589 #define YYTABLE_NINF -42
590 static const yytype_int8 yytable[] =
591 {
592       37,     3,   -41,    39,    40,    -3,     5,    34,   -22,     6,
593        7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
594       45,    52,    45,    17,    18,    19,    36,    38,    41,    42,
595       48,    43,    49,    50,    47
596 };
597 
598 static const yytype_uint8 yycheck[] =
599 {
600       13,     0,     5,    16,    17,     0,     1,     5,     3,     4,
601        5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
602       23,    22,    23,    18,    19,    20,     5,     5,     5,     3,
603       43,    21,     5,     5,    38
604 };
605 
606 /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
607    symbol of state STATE-NUM.  */
608 static const yytype_uint8 yystos[] =
609 {
610        0,    25,    26,     0,    27,     1,     4,     5,     6,     7,
611        8,     9,    10,    11,    12,    13,    14,    18,    19,    20,
612       28,    29,    30,    31,    32,    33,    34,    35,    36,    37,
613       38,    39,    40,    45,     5,    43,     5,    43,     5,    43,
614       43,     5,     3,    21,    42,    23,    44,    42,    43,     5,
615        5,    41,    22
616 };
617 
618 #define yyerrok		(yyerrstatus = 0)
619 #define yyclearin	(yychar = YYEMPTY)
620 #define YYEMPTY		(-2)
621 #define YYEOF		0
622 
623 #define YYACCEPT	goto yyacceptlab
624 #define YYABORT		goto yyabortlab
625 #define YYERROR		goto yyerrorlab
626 
627 
628 /* Like YYERROR except do call yyerror.  This remains here temporarily
629    to ease the transition to the new meaning of YYERROR, for GCC.
630    Once GCC version 2 has supplanted version 1, this can go.  */
631 
632 #define YYFAIL		goto yyerrlab
633 
634 #define YYRECOVERING()  (!!yyerrstatus)
635 
636 #define YYBACKUP(Token, Value)					\
637 do								\
638   if (yychar == YYEMPTY && yylen == 1)				\
639     {								\
640       yychar = (Token);						\
641       yylval = (Value);						\
642       yytoken = YYTRANSLATE (yychar);				\
643       YYPOPSTACK (1);						\
644       goto yybackup;						\
645     }								\
646   else								\
647     {								\
648       yyerror (YY_("syntax error: cannot back up")); \
649       YYERROR;							\
650     }								\
651 while (YYID (0))
652 
653 
654 #define YYTERROR	1
655 #define YYERRCODE	256
656 
657 
658 /* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
659    If N is 0, then set CURRENT to the empty location which ends
660    the previous symbol: RHS[0] (always defined).  */
661 
662 #define YYRHSLOC(Rhs, K) ((Rhs)[K])
663 #ifndef YYLLOC_DEFAULT
664 # define YYLLOC_DEFAULT(Current, Rhs, N)				\
665     do									\
666       if (YYID (N))                                                    \
667 	{								\
668 	  (Current).first_line   = YYRHSLOC (Rhs, 1).first_line;	\
669 	  (Current).first_column = YYRHSLOC (Rhs, 1).first_column;	\
670 	  (Current).last_line    = YYRHSLOC (Rhs, N).last_line;		\
671 	  (Current).last_column  = YYRHSLOC (Rhs, N).last_column;	\
672 	}								\
673       else								\
674 	{								\
675 	  (Current).first_line   = (Current).last_line   =		\
676 	    YYRHSLOC (Rhs, 0).last_line;				\
677 	  (Current).first_column = (Current).last_column =		\
678 	    YYRHSLOC (Rhs, 0).last_column;				\
679 	}								\
680     while (YYID (0))
681 #endif
682 
683 
684 /* YY_LOCATION_PRINT -- Print the location on the stream.
685    This macro was not mandated originally: define only if we know
686    we won't break user code: when these are the locations we know.  */
687 
688 #ifndef YY_LOCATION_PRINT
689 # if defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL
690 #  define YY_LOCATION_PRINT(File, Loc)			\
691      fprintf (File, "%d.%d-%d.%d",			\
692 	      (Loc).first_line, (Loc).first_column,	\
693 	      (Loc).last_line,  (Loc).last_column)
694 # else
695 #  define YY_LOCATION_PRINT(File, Loc) ((void) 0)
696 # endif
697 #endif
698 
699 
700 /* YYLEX -- calling `yylex' with the right arguments.  */
701 
702 #ifdef YYLEX_PARAM
703 # define YYLEX yylex (YYLEX_PARAM)
704 #else
705 # define YYLEX yylex ()
706 #endif
707 
708 /* Enable debugging if requested.  */
709 #if YYDEBUG
710 
711 # ifndef YYFPRINTF
712 #  include <stdio.h> /* INFRINGES ON USER NAME SPACE */
713 #  define YYFPRINTF fprintf
714 # endif
715 
716 # define YYDPRINTF(Args)			\
717 do {						\
718   if (yydebug)					\
719     YYFPRINTF Args;				\
720 } while (YYID (0))
721 
722 # define YY_SYMBOL_PRINT(Title, Type, Value, Location)			  \
723 do {									  \
724   if (yydebug)								  \
725     {									  \
726       YYFPRINTF (stderr, "%s ", Title);					  \
727       yy_symbol_print (stderr,						  \
728 		  Type, Value); \
729       YYFPRINTF (stderr, "\n");						  \
730     }									  \
731 } while (YYID (0))
732 
733 
734 /*--------------------------------.
735 | Print this symbol on YYOUTPUT.  |
736 `--------------------------------*/
737 
738 /*ARGSUSED*/
739 #if (defined __STDC__ || defined __C99__FUNC__ \
740      || defined __cplusplus || defined _MSC_VER)
741 static void
742 yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
743 #else
744 static void
745 yy_symbol_value_print (yyoutput, yytype, yyvaluep)
746     FILE *yyoutput;
747     int yytype;
748     YYSTYPE const * const yyvaluep;
749 #endif
750 {
751   if (!yyvaluep)
752     return;
753 # ifdef YYPRINT
754   if (yytype < YYNTOKENS)
755     YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
756 # else
757   YYUSE (yyoutput);
758 # endif
759   switch (yytype)
760     {
761       default:
762 	break;
763     }
764 }
765 
766 
767 /*--------------------------------.
768 | Print this symbol on YYOUTPUT.  |
769 `--------------------------------*/
770 
771 #if (defined __STDC__ || defined __C99__FUNC__ \
772      || defined __cplusplus || defined _MSC_VER)
773 static void
774 yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
775 #else
776 static void
777 yy_symbol_print (yyoutput, yytype, yyvaluep)
778     FILE *yyoutput;
779     int yytype;
780     YYSTYPE const * const yyvaluep;
781 #endif
782 {
783   if (yytype < YYNTOKENS)
784     YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
785   else
786     YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
787 
788   yy_symbol_value_print (yyoutput, yytype, yyvaluep);
789   YYFPRINTF (yyoutput, ")");
790 }
791 
792 /*------------------------------------------------------------------.
793 | yy_stack_print -- Print the state stack from its BOTTOM up to its |
794 | TOP (included).                                                   |
795 `------------------------------------------------------------------*/
796 
797 #if (defined __STDC__ || defined __C99__FUNC__ \
798      || defined __cplusplus || defined _MSC_VER)
799 static void
800 yy_stack_print (yytype_int16 *bottom, yytype_int16 *top)
801 #else
802 static void
803 yy_stack_print (bottom, top)
804     yytype_int16 *bottom;
805     yytype_int16 *top;
806 #endif
807 {
808   YYFPRINTF (stderr, "Stack now");
809   for (; bottom <= top; ++bottom)
810     YYFPRINTF (stderr, " %d", *bottom);
811   YYFPRINTF (stderr, "\n");
812 }
813 
814 # define YY_STACK_PRINT(Bottom, Top)				\
815 do {								\
816   if (yydebug)							\
817     yy_stack_print ((Bottom), (Top));				\
818 } while (YYID (0))
819 
820 
821 /*------------------------------------------------.
822 | Report that the YYRULE is going to be reduced.  |
823 `------------------------------------------------*/
824 
825 #if (defined __STDC__ || defined __C99__FUNC__ \
826      || defined __cplusplus || defined _MSC_VER)
827 static void
828 yy_reduce_print (YYSTYPE *yyvsp, int yyrule)
829 #else
830 static void
831 yy_reduce_print (yyvsp, yyrule)
832     YYSTYPE *yyvsp;
833     int yyrule;
834 #endif
835 {
836   int yynrhs = yyr2[yyrule];
837   int yyi;
838   unsigned long int yylno = yyrline[yyrule];
839   YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n",
840 	     yyrule - 1, yylno);
841   /* The symbols being reduced.  */
842   for (yyi = 0; yyi < yynrhs; yyi++)
843     {
844       fprintf (stderr, "   $%d = ", yyi + 1);
845       yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi],
846 		       &(yyvsp[(yyi + 1) - (yynrhs)])
847 		       		       );
848       fprintf (stderr, "\n");
849     }
850 }
851 
852 # define YY_REDUCE_PRINT(Rule)		\
853 do {					\
854   if (yydebug)				\
855     yy_reduce_print (yyvsp, Rule); \
856 } while (YYID (0))
857 
858 /* Nonzero means print parse trace.  It is left uninitialized so that
859    multiple parsers can coexist.  */
860 int yydebug;
861 #else /* !YYDEBUG */
862 # define YYDPRINTF(Args)
863 # define YY_SYMBOL_PRINT(Title, Type, Value, Location)
864 # define YY_STACK_PRINT(Bottom, Top)
865 # define YY_REDUCE_PRINT(Rule)
866 #endif /* !YYDEBUG */
867 
868 
869 /* YYINITDEPTH -- initial size of the parser's stacks.  */
870 #ifndef	YYINITDEPTH
871 # define YYINITDEPTH 200
872 #endif
873 
874 /* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
875    if the built-in stack extension method is used).
876 
877    Do not make this value too large; the results are undefined if
878    YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH)
879    evaluated with infinite-precision integer arithmetic.  */
880 
881 #ifndef YYMAXDEPTH
882 # define YYMAXDEPTH 10000
883 #endif
884 
885 
886 
887 #if YYERROR_VERBOSE
888 
889 # ifndef yystrlen
890 #  if defined __GLIBC__ && defined _STRING_H
891 #   define yystrlen strlen
892 #  else
893 /* Return the length of YYSTR.  */
894 #if (defined __STDC__ || defined __C99__FUNC__ \
895      || defined __cplusplus || defined _MSC_VER)
896 static YYSIZE_T
897 yystrlen (const char *yystr)
898 #else
899 static YYSIZE_T
900 yystrlen (yystr)
901     const char *yystr;
902 #endif
903 {
904   YYSIZE_T yylen;
905   for (yylen = 0; yystr[yylen]; yylen++)
906     continue;
907   return yylen;
908 }
909 #  endif
910 # endif
911 
912 # ifndef yystpcpy
913 #  if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
914 #   define yystpcpy stpcpy
915 #  else
916 /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
917    YYDEST.  */
918 #if (defined __STDC__ || defined __C99__FUNC__ \
919      || defined __cplusplus || defined _MSC_VER)
920 static char *
921 yystpcpy (char *yydest, const char *yysrc)
922 #else
923 static char *
924 yystpcpy (yydest, yysrc)
925     char *yydest;
926     const char *yysrc;
927 #endif
928 {
929   char *yyd = yydest;
930   const char *yys = yysrc;
931 
932   while ((*yyd++ = *yys++) != '\0')
933     continue;
934 
935   return yyd - 1;
936 }
937 #  endif
938 # endif
939 
940 # ifndef yytnamerr
941 /* Copy to YYRES the contents of YYSTR after stripping away unnecessary
942    quotes and backslashes, so that it's suitable for yyerror.  The
943    heuristic is that double-quoting is unnecessary unless the string
944    contains an apostrophe, a comma, or backslash (other than
945    backslash-backslash).  YYSTR is taken from yytname.  If YYRES is
946    null, do not copy; instead, return the length of what the result
947    would have been.  */
948 static YYSIZE_T
949 yytnamerr (char *yyres, const char *yystr)
950 {
951   if (*yystr == '"')
952     {
953       YYSIZE_T yyn = 0;
954       char const *yyp = yystr;
955 
956       for (;;)
957 	switch (*++yyp)
958 	  {
959 	  case '\'':
960 	  case ',':
961 	    goto do_not_strip_quotes;
962 
963 	  case '\\':
964 	    if (*++yyp != '\\')
965 	      goto do_not_strip_quotes;
966 	    /* Fall through.  */
967 	  default:
968 	    if (yyres)
969 	      yyres[yyn] = *yyp;
970 	    yyn++;
971 	    break;
972 
973 	  case '"':
974 	    if (yyres)
975 	      yyres[yyn] = '\0';
976 	    return yyn;
977 	  }
978     do_not_strip_quotes: ;
979     }
980 
981   if (! yyres)
982     return yystrlen (yystr);
983 
984   return yystpcpy (yyres, yystr) - yyres;
985 }
986 # endif
987 
988 /* Copy into YYRESULT an error message about the unexpected token
989    YYCHAR while in state YYSTATE.  Return the number of bytes copied,
990    including the terminating null byte.  If YYRESULT is null, do not
991    copy anything; just return the number of bytes that would be
992    copied.  As a special case, return 0 if an ordinary "syntax error"
993    message will do.  Return YYSIZE_MAXIMUM if overflow occurs during
994    size calculation.  */
995 static YYSIZE_T
996 yysyntax_error (char *yyresult, int yystate, int yychar)
997 {
998   int yyn = yypact[yystate];
999 
1000   if (! (YYPACT_NINF < yyn && yyn <= YYLAST))
1001     return 0;
1002   else
1003     {
1004       int yytype = YYTRANSLATE (yychar);
1005       YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]);
1006       YYSIZE_T yysize = yysize0;
1007       YYSIZE_T yysize1;
1008       int yysize_overflow = 0;
1009       enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
1010       char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
1011       int yyx;
1012 
1013 # if 0
1014       /* This is so xgettext sees the translatable formats that are
1015 	 constructed on the fly.  */
1016       YY_("syntax error, unexpected %s");
1017       YY_("syntax error, unexpected %s, expecting %s");
1018       YY_("syntax error, unexpected %s, expecting %s or %s");
1019       YY_("syntax error, unexpected %s, expecting %s or %s or %s");
1020       YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s");
1021 # endif
1022       char *yyfmt;
1023       char const *yyf;
1024       static char const yyunexpected[] = "syntax error, unexpected %s";
1025       static char const yyexpecting[] = ", expecting %s";
1026       static char const yyor[] = " or %s";
1027       char yyformat[sizeof yyunexpected
1028 		    + sizeof yyexpecting - 1
1029 		    + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2)
1030 		       * (sizeof yyor - 1))];
1031       char const *yyprefix = yyexpecting;
1032 
1033       /* Start YYX at -YYN if negative to avoid negative indexes in
1034 	 YYCHECK.  */
1035       int yyxbegin = yyn < 0 ? -yyn : 0;
1036 
1037       /* Stay within bounds of both yycheck and yytname.  */
1038       int yychecklim = YYLAST - yyn + 1;
1039       int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
1040       int yycount = 1;
1041 
1042       yyarg[0] = yytname[yytype];
1043       yyfmt = yystpcpy (yyformat, yyunexpected);
1044 
1045       for (yyx = yyxbegin; yyx < yyxend; ++yyx)
1046 	if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
1047 	  {
1048 	    if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
1049 	      {
1050 		yycount = 1;
1051 		yysize = yysize0;
1052 		yyformat[sizeof yyunexpected - 1] = '\0';
1053 		break;
1054 	      }
1055 	    yyarg[yycount++] = yytname[yyx];
1056 	    yysize1 = yysize + yytnamerr (0, yytname[yyx]);
1057 	    yysize_overflow |= (yysize1 < yysize);
1058 	    yysize = yysize1;
1059 	    yyfmt = yystpcpy (yyfmt, yyprefix);
1060 	    yyprefix = yyor;
1061 	  }
1062 
1063       yyf = YY_(yyformat);
1064       yysize1 = yysize + yystrlen (yyf);
1065       yysize_overflow |= (yysize1 < yysize);
1066       yysize = yysize1;
1067 
1068       if (yysize_overflow)
1069 	return YYSIZE_MAXIMUM;
1070 
1071       if (yyresult)
1072 	{
1073 	  /* Avoid sprintf, as that infringes on the user's name space.
1074 	     Don't have undefined behavior even if the translation
1075 	     produced a string with the wrong number of "%s"s.  */
1076 	  char *yyp = yyresult;
1077 	  int yyi = 0;
1078 	  while ((*yyp = *yyf) != '\0')
1079 	    {
1080 	      if (*yyp == '%' && yyf[1] == 's' && yyi < yycount)
1081 		{
1082 		  yyp += yytnamerr (yyp, yyarg[yyi++]);
1083 		  yyf += 2;
1084 		}
1085 	      else
1086 		{
1087 		  yyp++;
1088 		  yyf++;
1089 		}
1090 	    }
1091 	}
1092       return yysize;
1093     }
1094 }
1095 #endif /* YYERROR_VERBOSE */
1096 
1097 
1098 /*-----------------------------------------------.
1099 | Release the memory associated to this symbol.  |
1100 `-----------------------------------------------*/
1101 
1102 /*ARGSUSED*/
1103 #if (defined __STDC__ || defined __C99__FUNC__ \
1104      || defined __cplusplus || defined _MSC_VER)
1105 static void
1106 yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep)
1107 #else
1108 static void
1109 yydestruct (yymsg, yytype, yyvaluep)
1110     const char *yymsg;
1111     int yytype;
1112     YYSTYPE *yyvaluep;
1113 #endif
1114 {
1115   YYUSE (yyvaluep);
1116 
1117   if (!yymsg)
1118     yymsg = "Deleting";
1119   YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
1120 
1121   switch (yytype)
1122     {
1123 
1124       default:
1125 	break;
1126     }
1127 }
1128 
1129 
1130 /* Prevent warnings from -Wmissing-prototypes.  */
1131 
1132 #ifdef YYPARSE_PARAM
1133 #if defined __STDC__ || defined __cplusplus
1134 int yyparse (void *YYPARSE_PARAM);
1135 #else
1136 int yyparse ();
1137 #endif
1138 #else /* ! YYPARSE_PARAM */
1139 #if defined __STDC__ || defined __cplusplus
1140 int yyparse (void);
1141 #else
1142 int yyparse ();
1143 #endif
1144 #endif /* ! YYPARSE_PARAM */
1145 
1146 
1147 
1148 /* The look-ahead symbol.  */
1149 int yychar;
1150 
1151 /* The semantic value of the look-ahead symbol.  */
1152 YYSTYPE yylval;
1153 
1154 /* Number of syntax errors so far.  */
1155 int yynerrs;
1156 
1157 
1158 
1159 /*----------.
1160 | yyparse.  |
1161 `----------*/
1162 
1163 #ifdef YYPARSE_PARAM
1164 #if (defined __STDC__ || defined __C99__FUNC__ \
1165      || defined __cplusplus || defined _MSC_VER)
1166 int
1167 yyparse (void *YYPARSE_PARAM)
1168 #else
1169 int
1170 yyparse (YYPARSE_PARAM)
1171     void *YYPARSE_PARAM;
1172 #endif
1173 #else /* ! YYPARSE_PARAM */
1174 #if (defined __STDC__ || defined __C99__FUNC__ \
1175      || defined __cplusplus || defined _MSC_VER)
1176 int
1177 yyparse (void)
1178 #else
1179 int
1180 yyparse ()
1181 
1182 #endif
1183 #endif
1184 {
1185 
1186   int yystate;
1187   int yyn;
1188   int yyresult;
1189   /* Number of tokens to shift before error messages enabled.  */
1190   int yyerrstatus;
1191   /* Look-ahead token as an internal (translated) token number.  */
1192   int yytoken = 0;
1193 #if YYERROR_VERBOSE
1194   /* Buffer for error messages, and its allocated size.  */
1195   char yymsgbuf[128];
1196   char *yymsg = yymsgbuf;
1197   YYSIZE_T yymsg_alloc = sizeof yymsgbuf;
1198 #endif
1199 
1200   /* Three stacks and their tools:
1201      `yyss': related to states,
1202      `yyvs': related to semantic values,
1203      `yyls': related to locations.
1204 
1205      Refer to the stacks thru separate pointers, to allow yyoverflow
1206      to reallocate them elsewhere.  */
1207 
1208   /* The state stack.  */
1209   yytype_int16 yyssa[YYINITDEPTH];
1210   yytype_int16 *yyss = yyssa;
1211   yytype_int16 *yyssp;
1212 
1213   /* The semantic value stack.  */
1214   YYSTYPE yyvsa[YYINITDEPTH];
1215   YYSTYPE *yyvs = yyvsa;
1216   YYSTYPE *yyvsp;
1217 
1218 
1219 
1220 #define YYPOPSTACK(N)   (yyvsp -= (N), yyssp -= (N))
1221 
1222   YYSIZE_T yystacksize = YYINITDEPTH;
1223 
1224   /* The variables used to return semantic value and location from the
1225      action routines.  */
1226   YYSTYPE yyval;
1227 
1228 
1229   /* The number of symbols on the RHS of the reduced rule.
1230      Keep to zero when no symbol should be popped.  */
1231   int yylen = 0;
1232 
1233   YYDPRINTF ((stderr, "Starting parse\n"));
1234 
1235   yystate = 0;
1236   yyerrstatus = 0;
1237   yynerrs = 0;
1238   yychar = YYEMPTY;		/* Cause a token to be read.  */
1239 
1240   /* Initialize stack pointers.
1241      Waste one element of value and location stack
1242      so that they stay on the same level as the state stack.
1243      The wasted elements are never initialized.  */
1244 
1245   yyssp = yyss;
1246   yyvsp = yyvs;
1247 
1248   goto yysetstate;
1249 
1250 /*------------------------------------------------------------.
1251 | yynewstate -- Push a new state, which is found in yystate.  |
1252 `------------------------------------------------------------*/
1253  yynewstate:
1254   /* In all cases, when you get here, the value and location stacks
1255      have just been pushed.  So pushing a state here evens the stacks.  */
1256   yyssp++;
1257 
1258  yysetstate:
1259   *yyssp = yystate;
1260 
1261   if (yyss + yystacksize - 1 <= yyssp)
1262     {
1263       /* Get the current used size of the three stacks, in elements.  */
1264       YYSIZE_T yysize = yyssp - yyss + 1;
1265 
1266 #ifdef yyoverflow
1267       {
1268 	/* Give user a chance to reallocate the stack.  Use copies of
1269 	   these so that the &'s don't force the real ones into
1270 	   memory.  */
1271 	YYSTYPE *yyvs1 = yyvs;
1272 	yytype_int16 *yyss1 = yyss;
1273 
1274 
1275 	/* Each stack pointer address is followed by the size of the
1276 	   data in use in that stack, in bytes.  This used to be a
1277 	   conditional around just the two extra args, but that might
1278 	   be undefined if yyoverflow is a macro.  */
1279 	yyoverflow (YY_("memory exhausted"),
1280 		    &yyss1, yysize * sizeof (*yyssp),
1281 		    &yyvs1, yysize * sizeof (*yyvsp),
1282 
1283 		    &yystacksize);
1284 
1285 	yyss = yyss1;
1286 	yyvs = yyvs1;
1287       }
1288 #else /* no yyoverflow */
1289 # ifndef YYSTACK_RELOCATE
1290       goto yyexhaustedlab;
1291 # else
1292       /* Extend the stack our own way.  */
1293       if (YYMAXDEPTH <= yystacksize)
1294 	goto yyexhaustedlab;
1295       yystacksize *= 2;
1296       if (YYMAXDEPTH < yystacksize)
1297 	yystacksize = YYMAXDEPTH;
1298 
1299       {
1300 	yytype_int16 *yyss1 = yyss;
1301 	union yyalloc *yyptr =
1302 	  (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
1303 	if (! yyptr)
1304 	  goto yyexhaustedlab;
1305 	YYSTACK_RELOCATE (yyss);
1306 	YYSTACK_RELOCATE (yyvs);
1307 
1308 #  undef YYSTACK_RELOCATE
1309 	if (yyss1 != yyssa)
1310 	  YYSTACK_FREE (yyss1);
1311       }
1312 # endif
1313 #endif /* no yyoverflow */
1314 
1315       yyssp = yyss + yysize - 1;
1316       yyvsp = yyvs + yysize - 1;
1317 
1318 
1319       YYDPRINTF ((stderr, "Stack size increased to %lu\n",
1320 		  (unsigned long int) yystacksize));
1321 
1322       if (yyss + yystacksize - 1 <= yyssp)
1323 	YYABORT;
1324     }
1325 
1326   YYDPRINTF ((stderr, "Entering state %d\n", yystate));
1327 
1328   goto yybackup;
1329 
1330 /*-----------.
1331 | yybackup.  |
1332 `-----------*/
1333 yybackup:
1334 
1335   /* Do appropriate processing given the current state.  Read a
1336      look-ahead token if we need one and don't already have one.  */
1337 
1338   /* First try to decide what to do without reference to look-ahead token.  */
1339   yyn = yypact[yystate];
1340   if (yyn == YYPACT_NINF)
1341     goto yydefault;
1342 
1343   /* Not known => get a look-ahead token if don't already have one.  */
1344 
1345   /* YYCHAR is either YYEMPTY or YYEOF or a valid look-ahead symbol.  */
1346   if (yychar == YYEMPTY)
1347     {
1348       YYDPRINTF ((stderr, "Reading a token: "));
1349       yychar = YYLEX;
1350     }
1351 
1352   if (yychar <= YYEOF)
1353     {
1354       yychar = yytoken = YYEOF;
1355       YYDPRINTF ((stderr, "Now at end of input.\n"));
1356     }
1357   else
1358     {
1359       yytoken = YYTRANSLATE (yychar);
1360       YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
1361     }
1362 
1363   /* If the proper action on seeing token YYTOKEN is to reduce or to
1364      detect an error, take that action.  */
1365   yyn += yytoken;
1366   if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
1367     goto yydefault;
1368   yyn = yytable[yyn];
1369   if (yyn <= 0)
1370     {
1371       if (yyn == 0 || yyn == YYTABLE_NINF)
1372 	goto yyerrlab;
1373       yyn = -yyn;
1374       goto yyreduce;
1375     }
1376 
1377   if (yyn == YYFINAL)
1378     YYACCEPT;
1379 
1380   /* Count tokens shifted since error; after three, turn off error
1381      status.  */
1382   if (yyerrstatus)
1383     yyerrstatus--;
1384 
1385   /* Shift the look-ahead token.  */
1386   YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
1387 
1388   /* Discard the shifted token unless it is eof.  */
1389   if (yychar != YYEOF)
1390     yychar = YYEMPTY;
1391 
1392   yystate = yyn;
1393   *++yyvsp = yylval;
1394 
1395   goto yynewstate;
1396 
1397 
1398 /*-----------------------------------------------------------.
1399 | yydefault -- do the default action for the current state.  |
1400 `-----------------------------------------------------------*/
1401 yydefault:
1402   yyn = yydefact[yystate];
1403   if (yyn == 0)
1404     goto yyerrlab;
1405   goto yyreduce;
1406 
1407 
1408 /*-----------------------------.
1409 | yyreduce -- Do a reduction.  |
1410 `-----------------------------*/
1411 yyreduce:
1412   /* yyn is the number of a rule to reduce with.  */
1413   yylen = yyr2[yyn];
1414 
1415   /* If YYLEN is nonzero, implement the default value of the action:
1416      `$$ = $1'.
1417 
1418      Otherwise, the following line sets YYVAL to garbage.
1419      This behavior is undocumented and Bison
1420      users should not rely upon it.  Assigning to YYVAL
1421      unconditionally makes the parser a bit smaller, and it avoids a
1422      GCC warning that YYVAL may be used uninitialized.  */
1423   yyval = yyvsp[1-yylen];
1424 
1425 
1426   YY_REDUCE_PRINT (yyn);
1427   switch (yyn)
1428     {
1429         case 2:
1430 #line 69 "arparse.y"
1431     { prompt(); }
1432     break;
1433 
1434   case 6:
1435 #line 78 "arparse.y"
1436     { prompt(); }
1437     break;
1438 
1439   case 19:
1440 #line 94 "arparse.y"
1441     { ar_end(); return 0; }
1442     break;
1443 
1444   case 21:
1445 #line 96 "arparse.y"
1446     { yyerror("foo"); }
1447     break;
1448 
1449   case 23:
1450 #line 103 "arparse.y"
1451     { ar_extract((yyvsp[(2) - (2)].list)); }
1452     break;
1453 
1454   case 24:
1455 #line 108 "arparse.y"
1456     { ar_replace((yyvsp[(2) - (2)].list)); }
1457     break;
1458 
1459   case 25:
1460 #line 113 "arparse.y"
1461     { ar_clear(); }
1462     break;
1463 
1464   case 26:
1465 #line 118 "arparse.y"
1466     { ar_delete((yyvsp[(2) - (2)].list)); }
1467     break;
1468 
1469   case 27:
1470 #line 122 "arparse.y"
1471     { ar_addmod((yyvsp[(2) - (2)].list)); }
1472     break;
1473 
1474   case 28:
1475 #line 127 "arparse.y"
1476     { ar_list(); }
1477     break;
1478 
1479   case 29:
1480 #line 132 "arparse.y"
1481     { ar_save(); }
1482     break;
1483 
1484   case 30:
1485 #line 139 "arparse.y"
1486     { ar_open((yyvsp[(2) - (2)].name),0); }
1487     break;
1488 
1489   case 31:
1490 #line 144 "arparse.y"
1491     { ar_open((yyvsp[(2) - (2)].name),1); }
1492     break;
1493 
1494   case 32:
1495 #line 150 "arparse.y"
1496     { ar_addlib((yyvsp[(2) - (3)].name),(yyvsp[(3) - (3)].list)); }
1497     break;
1498 
1499   case 33:
1500 #line 154 "arparse.y"
1501     { ar_directory((yyvsp[(2) - (4)].name), (yyvsp[(3) - (4)].list), (yyvsp[(4) - (4)].name)); }
1502     break;
1503 
1504   case 34:
1505 #line 161 "arparse.y"
1506     { (yyval.name) = (yyvsp[(1) - (1)].name); }
1507     break;
1508 
1509   case 35:
1510 #line 162 "arparse.y"
1511     { (yyval.name) = 0; }
1512     break;
1513 
1514   case 36:
1515 #line 167 "arparse.y"
1516     { (yyval.list) = (yyvsp[(2) - (3)].list); }
1517     break;
1518 
1519   case 37:
1520 #line 169 "arparse.y"
1521     { (yyval.list) = 0; }
1522     break;
1523 
1524   case 38:
1525 #line 174 "arparse.y"
1526     { 	struct list *n  = (struct list *) malloc(sizeof(struct list));
1527 			n->next = (yyvsp[(1) - (3)].list);
1528 			n->name = (yyvsp[(3) - (3)].name);
1529 			(yyval.list) = n;
1530 		 }
1531     break;
1532 
1533   case 39:
1534 #line 179 "arparse.y"
1535     { (yyval.list) = 0; }
1536     break;
1537 
1538   case 42:
1539 #line 191 "arparse.y"
1540     { verbose = !verbose; }
1541     break;
1542 
1543 
1544 /* Line 1267 of yacc.c.  */
1545 #line 1546 "arparse.c"
1546       default: break;
1547     }
1548   YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
1549 
1550   YYPOPSTACK (yylen);
1551   yylen = 0;
1552   YY_STACK_PRINT (yyss, yyssp);
1553 
1554   *++yyvsp = yyval;
1555 
1556 
1557   /* Now `shift' the result of the reduction.  Determine what state
1558      that goes to, based on the state we popped back to and the rule
1559      number reduced by.  */
1560 
1561   yyn = yyr1[yyn];
1562 
1563   yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
1564   if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
1565     yystate = yytable[yystate];
1566   else
1567     yystate = yydefgoto[yyn - YYNTOKENS];
1568 
1569   goto yynewstate;
1570 
1571 
1572 /*------------------------------------.
1573 | yyerrlab -- here on detecting error |
1574 `------------------------------------*/
1575 yyerrlab:
1576   /* If not already recovering from an error, report this error.  */
1577   if (!yyerrstatus)
1578     {
1579       ++yynerrs;
1580 #if ! YYERROR_VERBOSE
1581       yyerror (YY_("syntax error"));
1582 #else
1583       {
1584 	YYSIZE_T yysize = yysyntax_error (0, yystate, yychar);
1585 	if (yymsg_alloc < yysize && yymsg_alloc < YYSTACK_ALLOC_MAXIMUM)
1586 	  {
1587 	    YYSIZE_T yyalloc = 2 * yysize;
1588 	    if (! (yysize <= yyalloc && yyalloc <= YYSTACK_ALLOC_MAXIMUM))
1589 	      yyalloc = YYSTACK_ALLOC_MAXIMUM;
1590 	    if (yymsg != yymsgbuf)
1591 	      YYSTACK_FREE (yymsg);
1592 	    yymsg = (char *) YYSTACK_ALLOC (yyalloc);
1593 	    if (yymsg)
1594 	      yymsg_alloc = yyalloc;
1595 	    else
1596 	      {
1597 		yymsg = yymsgbuf;
1598 		yymsg_alloc = sizeof yymsgbuf;
1599 	      }
1600 	  }
1601 
1602 	if (0 < yysize && yysize <= yymsg_alloc)
1603 	  {
1604 	    (void) yysyntax_error (yymsg, yystate, yychar);
1605 	    yyerror (yymsg);
1606 	  }
1607 	else
1608 	  {
1609 	    yyerror (YY_("syntax error"));
1610 	    if (yysize != 0)
1611 	      goto yyexhaustedlab;
1612 	  }
1613       }
1614 #endif
1615     }
1616 
1617 
1618 
1619   if (yyerrstatus == 3)
1620     {
1621       /* If just tried and failed to reuse look-ahead token after an
1622 	 error, discard it.  */
1623 
1624       if (yychar <= YYEOF)
1625 	{
1626 	  /* Return failure if at end of input.  */
1627 	  if (yychar == YYEOF)
1628 	    YYABORT;
1629 	}
1630       else
1631 	{
1632 	  yydestruct ("Error: discarding",
1633 		      yytoken, &yylval);
1634 	  yychar = YYEMPTY;
1635 	}
1636     }
1637 
1638   /* Else will try to reuse look-ahead token after shifting the error
1639      token.  */
1640   goto yyerrlab1;
1641 
1642 
1643 /*---------------------------------------------------.
1644 | yyerrorlab -- error raised explicitly by YYERROR.  |
1645 `---------------------------------------------------*/
1646 yyerrorlab:
1647 
1648   /* Pacify compilers like GCC when the user code never invokes
1649      YYERROR and the label yyerrorlab therefore never appears in user
1650      code.  */
1651   if (/*CONSTCOND*/ 0)
1652      goto yyerrorlab;
1653 
1654   /* Do not reclaim the symbols of the rule which action triggered
1655      this YYERROR.  */
1656   YYPOPSTACK (yylen);
1657   yylen = 0;
1658   YY_STACK_PRINT (yyss, yyssp);
1659   yystate = *yyssp;
1660   goto yyerrlab1;
1661 
1662 
1663 /*-------------------------------------------------------------.
1664 | yyerrlab1 -- common code for both syntax error and YYERROR.  |
1665 `-------------------------------------------------------------*/
1666 yyerrlab1:
1667   yyerrstatus = 3;	/* Each real token shifted decrements this.  */
1668 
1669   for (;;)
1670     {
1671       yyn = yypact[yystate];
1672       if (yyn != YYPACT_NINF)
1673 	{
1674 	  yyn += YYTERROR;
1675 	  if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
1676 	    {
1677 	      yyn = yytable[yyn];
1678 	      if (0 < yyn)
1679 		break;
1680 	    }
1681 	}
1682 
1683       /* Pop the current state because it cannot handle the error token.  */
1684       if (yyssp == yyss)
1685 	YYABORT;
1686 
1687 
1688       yydestruct ("Error: popping",
1689 		  yystos[yystate], yyvsp);
1690       YYPOPSTACK (1);
1691       yystate = *yyssp;
1692       YY_STACK_PRINT (yyss, yyssp);
1693     }
1694 
1695   if (yyn == YYFINAL)
1696     YYACCEPT;
1697 
1698   *++yyvsp = yylval;
1699 
1700 
1701   /* Shift the error token.  */
1702   YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp);
1703 
1704   yystate = yyn;
1705   goto yynewstate;
1706 
1707 
1708 /*-------------------------------------.
1709 | yyacceptlab -- YYACCEPT comes here.  |
1710 `-------------------------------------*/
1711 yyacceptlab:
1712   yyresult = 0;
1713   goto yyreturn;
1714 
1715 /*-----------------------------------.
1716 | yyabortlab -- YYABORT comes here.  |
1717 `-----------------------------------*/
1718 yyabortlab:
1719   yyresult = 1;
1720   goto yyreturn;
1721 
1722 #ifndef yyoverflow
1723 /*-------------------------------------------------.
1724 | yyexhaustedlab -- memory exhaustion comes here.  |
1725 `-------------------------------------------------*/
1726 yyexhaustedlab:
1727   yyerror (YY_("memory exhausted"));
1728   yyresult = 2;
1729   /* Fall through.  */
1730 #endif
1731 
1732 yyreturn:
1733   if (yychar != YYEOF && yychar != YYEMPTY)
1734      yydestruct ("Cleanup: discarding lookahead",
1735 		 yytoken, &yylval);
1736   /* Do not reclaim the symbols of the rule which action triggered
1737      this YYABORT or YYACCEPT.  */
1738   YYPOPSTACK (yylen);
1739   YY_STACK_PRINT (yyss, yyssp);
1740   while (yyssp != yyss)
1741     {
1742       yydestruct ("Cleanup: popping",
1743 		  yystos[*yyssp], yyvsp);
1744       YYPOPSTACK (1);
1745     }
1746 #ifndef yyoverflow
1747   if (yyss != yyssa)
1748     YYSTACK_FREE (yyss);
1749 #endif
1750 #if YYERROR_VERBOSE
1751   if (yymsg != yymsgbuf)
1752     YYSTACK_FREE (yymsg);
1753 #endif
1754   /* Make sure YYID is used.  */
1755   return YYID (yyresult);
1756 }
1757 
1758 
1759 #line 195 "arparse.y"
1760 
1761 
1762 static int
1763 yyerror (const char *x ATTRIBUTE_UNUSED)
1764 {
1765   extern int linenumber;
1766 
1767   printf (_("Syntax error in archive script, line %d\n"), linenumber + 1);
1768   return 0;
1769 }
1770 
1771