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"
146extern int verbose;
147extern int yylex (void);
148static 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
170typedef union YYSTYPE
171#line 38 "arparse.y"
172{
173  char *name;
174struct 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
198typedef YYTYPE_UINT8 yytype_uint8;
199#else
200typedef unsigned char yytype_uint8;
201#endif
202
203#ifdef YYTYPE_INT8
204typedef YYTYPE_INT8 yytype_int8;
205#elif (defined __STDC__ || defined __C99__FUNC__ \
206     || defined __cplusplus || defined _MSC_VER)
207typedef signed char yytype_int8;
208#else
209typedef short int yytype_int8;
210#endif
211
212#ifdef YYTYPE_UINT16
213typedef YYTYPE_UINT16 yytype_uint16;
214#else
215typedef unsigned short int yytype_uint16;
216#endif
217
218#ifdef YYTYPE_INT16
219typedef YYTYPE_INT16 yytype_int16;
220#else
221typedef 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)
265static int
266YYID (int i)
267#else
268static int
269YYID (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)
333void *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)
340void 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.  */
352union 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.  */
425static 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.  */
460static 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.  */
470static 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.  */
485static 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.  */
498static 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.  */
515static 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.  */
524static 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.  */
534static 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.  */
546static 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].  */
557static 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
567static 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].  */
578static 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
590static 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
598static 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.  */
608static 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)					\
637do								\
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    }								\
651while (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)			\
717do {						\
718  if (yydebug)					\
719    YYFPRINTF Args;				\
720} while (YYID (0))
721
722# define YY_SYMBOL_PRINT(Title, Type, Value, Location)			  \
723do {									  \
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)
741static void
742yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
743#else
744static void
745yy_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)
773static void
774yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
775#else
776static void
777yy_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)
799static void
800yy_stack_print (yytype_int16 *bottom, yytype_int16 *top)
801#else
802static void
803yy_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)				\
815do {								\
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)
827static void
828yy_reduce_print (YYSTYPE *yyvsp, int yyrule)
829#else
830static void
831yy_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)		\
853do {					\
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.  */
860int 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)
896static YYSIZE_T
897yystrlen (const char *yystr)
898#else
899static YYSIZE_T
900yystrlen (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)
920static char *
921yystpcpy (char *yydest, const char *yysrc)
922#else
923static char *
924yystpcpy (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.  */
948static YYSIZE_T
949yytnamerr (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.  */
995static YYSIZE_T
996yysyntax_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)
1105static void
1106yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep)
1107#else
1108static void
1109yydestruct (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
1134int yyparse (void *YYPARSE_PARAM);
1135#else
1136int yyparse ();
1137#endif
1138#else /* ! YYPARSE_PARAM */
1139#if defined __STDC__ || defined __cplusplus
1140int yyparse (void);
1141#else
1142int yyparse ();
1143#endif
1144#endif /* ! YYPARSE_PARAM */
1145
1146
1147
1148/* The look-ahead symbol.  */
1149int yychar;
1150
1151/* The semantic value of the look-ahead symbol.  */
1152YYSTYPE yylval;
1153
1154/* Number of syntax errors so far.  */
1155int 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)
1166int
1167yyparse (void *YYPARSE_PARAM)
1168#else
1169int
1170yyparse (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)
1176int
1177yyparse (void)
1178#else
1179int
1180yyparse ()
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`-----------*/
1333yybackup:
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`-----------------------------------------------------------*/
1401yydefault:
1402  yyn = yydefact[yystate];
1403  if (yyn == 0)
1404    goto yyerrlab;
1405  goto yyreduce;
1406
1407
1408/*-----------------------------.
1409| yyreduce -- Do a reduction.  |
1410`-----------------------------*/
1411yyreduce:
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`------------------------------------*/
1575yyerrlab:
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`---------------------------------------------------*/
1646yyerrorlab:
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`-------------------------------------------------------------*/
1666yyerrlab1:
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`-------------------------------------*/
1711yyacceptlab:
1712  yyresult = 0;
1713  goto yyreturn;
1714
1715/*-----------------------------------.
1716| yyabortlab -- YYABORT comes here.  |
1717`-----------------------------------*/
1718yyabortlab:
1719  yyresult = 1;
1720  goto yyreturn;
1721
1722#ifndef yyoverflow
1723/*-------------------------------------------------.
1724| yyexhaustedlab -- memory exhaustion comes here.  |
1725`-------------------------------------------------*/
1726yyexhaustedlab:
1727  yyerror (YY_("memory exhausted"));
1728  yyresult = 2;
1729  /* Fall through.  */
1730#endif
1731
1732yyreturn:
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
1762static int
1763yyerror (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