Imported Upstream version 3.1.0
[debian/amanda] / recover-src / uparse.c
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      LISTHOST = 258,
70      LISTDISK = 259,
71      LISTPROPERTY = 260,
72      SETHOST = 261,
73      SETDISK = 262,
74      SETDATE = 263,
75      SETTAPE = 264,
76      SETMODE = 265,
77      SETDEVICE = 266,
78      SETPROPERTY = 267,
79      CD = 268,
80      CDX = 269,
81      QUIT = 270,
82      DHIST = 271,
83      LS = 272,
84      ADD = 273,
85      ADDX = 274,
86      EXTRACT = 275,
87      DASH_H = 276,
88      LIST = 277,
89      DELETE = 278,
90      DELETEX = 279,
91      PWD = 280,
92      CLEAR = 281,
93      HELP = 282,
94      LCD = 283,
95      LPWD = 284,
96      MODE = 285,
97      SMB = 286,
98      TAR = 287,
99      APPEND = 288,
100      PRIORITY = 289,
101      NL = 290,
102      STRING = 291
103    };
104 #endif
105 /* Tokens.  */
106 #define LISTHOST 258
107 #define LISTDISK 259
108 #define LISTPROPERTY 260
109 #define SETHOST 261
110 #define SETDISK 262
111 #define SETDATE 263
112 #define SETTAPE 264
113 #define SETMODE 265
114 #define SETDEVICE 266
115 #define SETPROPERTY 267
116 #define CD 268
117 #define CDX 269
118 #define QUIT 270
119 #define DHIST 271
120 #define LS 272
121 #define ADD 273
122 #define ADDX 274
123 #define EXTRACT 275
124 #define DASH_H 276
125 #define LIST 277
126 #define DELETE 278
127 #define DELETEX 279
128 #define PWD 280
129 #define CLEAR 281
130 #define HELP 282
131 #define LCD 283
132 #define LPWD 284
133 #define MODE 285
134 #define SMB 286
135 #define TAR 287
136 #define APPEND 288
137 #define PRIORITY 289
138 #define NL 290
139 #define STRING 291
140
141
142
143
144 /* Copy the first part of user declarations.  */
145 #line 31 "uparse.y"
146
147 #include "amanda.h"
148 #include "amrecover.h"
149
150 #define DATE_ALLOC_SIZE sizeof("YYYY-MM-DD-HH-MM-SS")   /* includes null */
151
152 void            yyerror(char *s);
153 extern int      yylex(void);
154 extern char *   yytext;
155
156
157 /* Enabling traces.  */
158 #ifndef YYDEBUG
159 # define YYDEBUG 0
160 #endif
161
162 /* Enabling verbose error messages.  */
163 #ifdef YYERROR_VERBOSE
164 # undef YYERROR_VERBOSE
165 # define YYERROR_VERBOSE 1
166 #else
167 # define YYERROR_VERBOSE 0
168 #endif
169
170 /* Enabling the token table.  */
171 #ifndef YYTOKEN_TABLE
172 # define YYTOKEN_TABLE 0
173 #endif
174
175 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
176 typedef union YYSTYPE
177 #line 43 "uparse.y"
178 {
179         int     intval;
180         double  floatval;
181         char *  strval;
182         int     subtok;
183 }
184 /* Line 187 of yacc.c.  */
185 #line 186 "uparse.c"
186         YYSTYPE;
187 # define yystype YYSTYPE /* obsolescent; will be withdrawn */
188 # define YYSTYPE_IS_DECLARED 1
189 # define YYSTYPE_IS_TRIVIAL 1
190 #endif
191
192
193
194 /* Copy the second part of user declarations.  */
195
196
197 /* Line 216 of yacc.c.  */
198 #line 199 "uparse.c"
199
200 #ifdef short
201 # undef short
202 #endif
203
204 #ifdef YYTYPE_UINT8
205 typedef YYTYPE_UINT8 yytype_uint8;
206 #else
207 typedef unsigned char yytype_uint8;
208 #endif
209
210 #ifdef YYTYPE_INT8
211 typedef YYTYPE_INT8 yytype_int8;
212 #elif (defined __STDC__ || defined __C99__FUNC__ \
213      || defined __cplusplus || defined _MSC_VER)
214 typedef signed char yytype_int8;
215 #else
216 typedef short int yytype_int8;
217 #endif
218
219 #ifdef YYTYPE_UINT16
220 typedef YYTYPE_UINT16 yytype_uint16;
221 #else
222 typedef unsigned short int yytype_uint16;
223 #endif
224
225 #ifdef YYTYPE_INT16
226 typedef YYTYPE_INT16 yytype_int16;
227 #else
228 typedef short int yytype_int16;
229 #endif
230
231 #ifndef YYSIZE_T
232 # ifdef __SIZE_TYPE__
233 #  define YYSIZE_T __SIZE_TYPE__
234 # elif defined size_t
235 #  define YYSIZE_T size_t
236 # elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \
237      || defined __cplusplus || defined _MSC_VER)
238 #  include <stddef.h> /* INFRINGES ON USER NAME SPACE */
239 #  define YYSIZE_T size_t
240 # else
241 #  define YYSIZE_T unsigned int
242 # endif
243 #endif
244
245 #define YYSIZE_MAXIMUM ((YYSIZE_T) -1)
246
247 #ifndef YY_
248 # if YYENABLE_NLS
249 #  if ENABLE_NLS
250 #   include <libintl.h> /* INFRINGES ON USER NAME SPACE */
251 #   define YY_(msgid) dgettext ("bison-runtime", msgid)
252 #  endif
253 # endif
254 # ifndef YY_
255 #  define YY_(msgid) msgid
256 # endif
257 #endif
258
259 /* Suppress unused-variable warnings by "using" E.  */
260 #if ! defined lint || defined __GNUC__
261 # define YYUSE(e) ((void) (e))
262 #else
263 # define YYUSE(e) /* empty */
264 #endif
265
266 /* Identity function, used to suppress warnings about constant conditions.  */
267 #ifndef lint
268 # define YYID(n) (n)
269 #else
270 #if (defined __STDC__ || defined __C99__FUNC__ \
271      || defined __cplusplus || defined _MSC_VER)
272 static int
273 YYID (int i)
274 #else
275 static int
276 YYID (i)
277     int i;
278 #endif
279 {
280   return i;
281 }
282 #endif
283
284 #if ! defined yyoverflow || YYERROR_VERBOSE
285
286 /* The parser invokes alloca or malloc; define the necessary symbols.  */
287
288 # ifdef YYSTACK_USE_ALLOCA
289 #  if YYSTACK_USE_ALLOCA
290 #   ifdef __GNUC__
291 #    define YYSTACK_ALLOC __builtin_alloca
292 #   elif defined __BUILTIN_VA_ARG_INCR
293 #    include <alloca.h> /* INFRINGES ON USER NAME SPACE */
294 #   elif defined _AIX
295 #    define YYSTACK_ALLOC __alloca
296 #   elif defined _MSC_VER
297 #    include <malloc.h> /* INFRINGES ON USER NAME SPACE */
298 #    define alloca _alloca
299 #   else
300 #    define YYSTACK_ALLOC alloca
301 #    if ! defined _ALLOCA_H && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
302      || defined __cplusplus || defined _MSC_VER)
303 #     include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
304 #     ifndef _STDLIB_H
305 #      define _STDLIB_H 1
306 #     endif
307 #    endif
308 #   endif
309 #  endif
310 # endif
311
312 # ifdef YYSTACK_ALLOC
313    /* Pacify GCC's `empty if-body' warning.  */
314 #  define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0))
315 #  ifndef YYSTACK_ALLOC_MAXIMUM
316     /* The OS might guarantee only one guard page at the bottom of the stack,
317        and a page size can be as small as 4096 bytes.  So we cannot safely
318        invoke alloca (N) if N exceeds 4096.  Use a slightly smaller number
319        to allow for a few compiler-allocated temporary stack slots.  */
320 #   define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */
321 #  endif
322 # else
323 #  define YYSTACK_ALLOC YYMALLOC
324 #  define YYSTACK_FREE YYFREE
325 #  ifndef YYSTACK_ALLOC_MAXIMUM
326 #   define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
327 #  endif
328 #  if (defined __cplusplus && ! defined _STDLIB_H \
329        && ! ((defined YYMALLOC || defined malloc) \
330              && (defined YYFREE || defined free)))
331 #   include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
332 #   ifndef _STDLIB_H
333 #    define _STDLIB_H 1
334 #   endif
335 #  endif
336 #  ifndef YYMALLOC
337 #   define YYMALLOC malloc
338 #   if ! defined malloc && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
339      || defined __cplusplus || defined _MSC_VER)
340 void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
341 #   endif
342 #  endif
343 #  ifndef YYFREE
344 #   define YYFREE free
345 #   if ! defined free && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
346      || defined __cplusplus || defined _MSC_VER)
347 void free (void *); /* INFRINGES ON USER NAME SPACE */
348 #   endif
349 #  endif
350 # endif
351 #endif /* ! defined yyoverflow || YYERROR_VERBOSE */
352
353
354 #if (! defined yyoverflow \
355      && (! defined __cplusplus \
356          || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
357
358 /* A type that is properly aligned for any stack member.  */
359 union yyalloc
360 {
361   yytype_int16 yyss;
362   YYSTYPE yyvs;
363   };
364
365 /* The size of the maximum gap between one aligned stack and the next.  */
366 # define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
367
368 /* The size of an array large to enough to hold all stacks, each with
369    N elements.  */
370 # define YYSTACK_BYTES(N) \
371      ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \
372       + YYSTACK_GAP_MAXIMUM)
373
374 /* Copy COUNT objects from FROM to TO.  The source and destination do
375    not overlap.  */
376 # ifndef YYCOPY
377 #  if defined __GNUC__ && 1 < __GNUC__
378 #   define YYCOPY(To, From, Count) \
379       __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
380 #  else
381 #   define YYCOPY(To, From, Count)              \
382       do                                        \
383         {                                       \
384           YYSIZE_T yyi;                         \
385           for (yyi = 0; yyi < (Count); yyi++)   \
386             (To)[yyi] = (From)[yyi];            \
387         }                                       \
388       while (YYID (0))
389 #  endif
390 # endif
391
392 /* Relocate STACK from its old location to the new one.  The
393    local variables YYSIZE and YYSTACKSIZE give the old and new number of
394    elements in the stack, and YYPTR gives the new location of the
395    stack.  Advance YYPTR to a properly aligned location for the next
396    stack.  */
397 # define YYSTACK_RELOCATE(Stack)                                        \
398     do                                                                  \
399       {                                                                 \
400         YYSIZE_T yynewbytes;                                            \
401         YYCOPY (&yyptr->Stack, Stack, yysize);                          \
402         Stack = &yyptr->Stack;                                          \
403         yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
404         yyptr += yynewbytes / sizeof (*yyptr);                          \
405       }                                                                 \
406     while (YYID (0))
407
408 #endif
409
410 /* YYFINAL -- State number of the termination state.  */
411 #define YYFINAL  104
412 /* YYLAST -- Last index in YYTABLE.  */
413 #define YYLAST   166
414
415 /* YYNTOKENS -- Number of terminals.  */
416 #define YYNTOKENS  37
417 /* YYNNTS -- Number of nonterminals.  */
418 #define YYNNTS  21
419 /* YYNRULES -- Number of rules.  */
420 #define YYNRULES  101
421 /* YYNRULES -- Number of states.  */
422 #define YYNSTATES  160
423
424 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
425 #define YYUNDEFTOK  2
426 #define YYMAXUTOK   291
427
428 #define YYTRANSLATE(YYX)                                                \
429   ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
430
431 /* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX.  */
432 static const yytype_uint8 yytranslate[] =
433 {
434        0,     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,     2,     2,     2,     2,
453        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
454        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
455        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
456        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
457        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
458        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
459        2,     2,     2,     2,     2,     2,     1,     2,     3,     4,
460        5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
461       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
462       25,    26,    27,    28,    29,    30,    31,    32,    33,    34,
463       35,    36
464 };
465
466 #if YYDEBUG
467 /* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
468    YYRHS.  */
469 static const yytype_uint16 yyprhs[] =
470 {
471        0,     0,     3,     5,     7,     9,    11,    13,    15,    17,
472       19,    21,    23,    25,    27,    30,    33,    37,    40,    44,
473       47,    50,    54,    58,    61,    66,    70,    75,    77,    81,
474       84,    88,    92,    98,   101,   105,   110,   116,   120,   125,
475      130,   136,   139,   143,   147,   152,   156,   160,   163,   167,
476      171,   174,   178,   182,   186,   190,   193,   196,   200,   203,
477      207,   210,   213,   216,   219,   223,   226,   230,   233,   236,
478      239,   242,   245,   248,   251,   254,   258,   261,   263,   267,
479      270,   272,   276,   279,   281,   285,   288,   290,   293,   296,
480      300,   304,   307,   310,   313,   316,   319,   322,   325,   327,
481      330,   333
482 };
483
484 /* YYRHS -- A `-1'-separated list of the rules' RHS.  */
485 static const yytype_int8 yyrhs[] =
486 {
487       38,     0,    -1,    39,    -1,    40,    -1,    41,    -1,    42,
488       -1,    43,    -1,    45,    -1,    47,    -1,    49,    -1,    51,
489       -1,    52,    -1,    53,    -1,    54,    -1,     3,    35,    -1,
490        3,    56,    -1,     4,    36,    35,    -1,     4,    35,    -1,
491        4,    36,    56,    -1,     5,    35,    -1,     5,    56,    -1,
492        6,    36,    35,    -1,     6,    36,    56,    -1,     6,    35,
493       -1,     7,    36,    36,    35,    -1,     7,    36,    35,    -1,
494        7,    36,    36,    56,    -1,     7,    -1,     9,    36,    35,
495       -1,     9,    35,    -1,     9,    36,    56,    -1,    11,    36,
496       35,    -1,    11,    21,    36,    36,    35,    -1,    11,    35,
497       -1,    11,    36,    56,    -1,    11,    21,    36,    35,    -1,
498       11,    21,    36,    36,    56,    -1,    12,    36,    55,    -1,
499       12,    33,    36,    55,    -1,    12,    34,    36,    55,    -1,
500       12,    33,    34,    36,    55,    -1,    12,    35,    -1,    12,
501       33,    35,    -1,    12,    34,    35,    -1,    12,    33,    34,
502       35,    -1,    13,    36,    35,    -1,    13,    36,    56,    -1,
503       13,    35,    -1,    14,    36,    35,    -1,    14,    36,    56,
504       -1,    14,    35,    -1,    10,    31,    35,    -1,    10,    32,
505       35,    -1,    10,    31,    56,    -1,    10,    32,    56,    -1,
506       10,    56,    -1,    10,    35,    -1,     8,    36,    35,    -1,
507        8,    35,    -1,     8,    36,    56,    -1,    16,    35,    -1,
508       16,    56,    -1,    17,    35,    -1,    17,    56,    -1,    22,
509       36,    35,    -1,    22,    35,    -1,    22,    36,    56,    -1,
510       25,    35,    -1,    25,    56,    -1,    26,    35,    -1,    26,
511       56,    -1,    30,    35,    -1,    30,    56,    -1,    15,    35,
512       -1,    15,    56,    -1,    18,    44,    35,    -1,    44,    36,
513       -1,    36,    -1,    19,    46,    35,    -1,    46,    36,    -1,
514       36,    -1,    23,    48,    35,    -1,    48,    36,    -1,    36,
515       -1,    24,    50,    35,    -1,    50,    36,    -1,    36,    -1,
516       29,    35,    -1,    29,    56,    -1,    28,    36,    35,    -1,
517       28,    36,    56,    -1,    28,    35,    -1,    27,    35,    -1,
518       27,    56,    -1,    20,    35,    -1,    20,    56,    -1,    36,
519       57,    -1,    36,    55,    -1,    35,    -1,    36,    57,    -1,
520       36,    57,    -1,    35,    -1
521 };
522
523 /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
524 static const yytype_uint16 yyrline[] =
525 {
526        0,    68,    68,    69,    70,    71,    72,    73,    74,    75,
527       76,    77,    78,    79,    83,    84,    85,    86,    87,    88,
528       89,    90,    91,    92,    93,    94,    95,    96,    97,    98,
529       99,   100,   101,   102,   103,   104,   105,   106,   107,   108,
530      109,   110,   111,   112,   113,   114,   115,   116,   117,   118,
531      119,   120,   121,   122,   123,   124,   125,   129,   175,   176,
532      180,   181,   182,   183,   184,   185,   186,   187,   188,   189,
533      190,   191,   192,   196,   197,   201,   205,   206,   210,   214,
534      215,   219,   223,   224,   228,   232,   233,   237,   238,   239,
535      243,   244,   248,   249,   253,   254,   258,   267,   268,   272,
536      276,   277
537 };
538 #endif
539
540 #if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE
541 /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
542    First, the terminals, then, starting at YYNTOKENS, nonterminals.  */
543 static const char *const yytname[] =
544 {
545   "$end", "error", "$undefined", "LISTHOST", "LISTDISK", "LISTPROPERTY",
546   "SETHOST", "SETDISK", "SETDATE", "SETTAPE", "SETMODE", "SETDEVICE",
547   "SETPROPERTY", "CD", "CDX", "QUIT", "DHIST", "LS", "ADD", "ADDX",
548   "EXTRACT", "DASH_H", "LIST", "DELETE", "DELETEX", "PWD", "CLEAR", "HELP",
549   "LCD", "LPWD", "MODE", "SMB", "TAR", "APPEND", "PRIORITY", "NL",
550   "STRING", "$accept", "ucommand", "set_command", "setdate_command",
551   "display_command", "quit_command", "add_command", "add_path",
552   "addx_command", "addx_path", "delete_command", "delete_path",
553   "deletex_command", "deletex_path", "local_command", "help_command",
554   "extract_command", "invalid_command", "property_value", "invalid_string",
555   "bogus_string", 0
556 };
557 #endif
558
559 # ifdef YYPRINT
560 /* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to
561    token YYLEX-NUM.  */
562 static const yytype_uint16 yytoknum[] =
563 {
564        0,   256,   257,   258,   259,   260,   261,   262,   263,   264,
565      265,   266,   267,   268,   269,   270,   271,   272,   273,   274,
566      275,   276,   277,   278,   279,   280,   281,   282,   283,   284,
567      285,   286,   287,   288,   289,   290,   291
568 };
569 # endif
570
571 /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
572 static const yytype_uint8 yyr1[] =
573 {
574        0,    37,    38,    38,    38,    38,    38,    38,    38,    38,
575       38,    38,    38,    38,    39,    39,    39,    39,    39,    39,
576       39,    39,    39,    39,    39,    39,    39,    39,    39,    39,
577       39,    39,    39,    39,    39,    39,    39,    39,    39,    39,
578       39,    39,    39,    39,    39,    39,    39,    39,    39,    39,
579       39,    39,    39,    39,    39,    39,    39,    40,    40,    40,
580       41,    41,    41,    41,    41,    41,    41,    41,    41,    41,
581       41,    41,    41,    42,    42,    43,    44,    44,    45,    46,
582       46,    47,    48,    48,    49,    50,    50,    51,    51,    51,
583       51,    51,    52,    52,    53,    53,    54,    55,    55,    56,
584       57,    57
585 };
586
587 /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
588 static const yytype_uint8 yyr2[] =
589 {
590        0,     2,     1,     1,     1,     1,     1,     1,     1,     1,
591        1,     1,     1,     1,     2,     2,     3,     2,     3,     2,
592        2,     3,     3,     2,     4,     3,     4,     1,     3,     2,
593        3,     3,     5,     2,     3,     4,     5,     3,     4,     4,
594        5,     2,     3,     3,     4,     3,     3,     2,     3,     3,
595        2,     3,     3,     3,     3,     2,     2,     3,     2,     3,
596        2,     2,     2,     2,     3,     2,     3,     2,     2,     2,
597        2,     2,     2,     2,     2,     3,     2,     1,     3,     2,
598        1,     3,     2,     1,     3,     2,     1,     2,     2,     3,
599        3,     2,     2,     2,     2,     2,     2,     2,     1,     2,
600        2,     1
601 };
602
603 /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
604    STATE-NUM when YYTABLE doesn't specify something else to do.  Zero
605    means the default is an error.  */
606 static const yytype_uint8 yydefact[] =
607 {
608        0,     0,     0,     0,     0,    27,     0,     0,     0,     0,
609        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
610        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
611        2,     3,     4,     5,     6,     7,     8,     9,    10,    11,
612       12,    13,    14,     0,    15,    17,     0,    19,    20,    23,
613        0,     0,    58,     0,    29,     0,     0,     0,    56,    55,
614        0,    33,     0,     0,     0,    41,     0,    47,     0,    50,
615        0,    73,    74,    60,    61,    62,    63,    77,     0,    80,
616        0,    94,    95,    65,     0,    83,     0,    86,     0,    67,
617       68,    69,    70,    92,    93,    91,     0,    87,    88,    71,
618       72,   101,     0,    96,     1,    99,    16,    18,    21,    22,
619       25,     0,    57,    59,    28,    30,    51,    53,    52,    54,
620        0,    31,    34,     0,    42,     0,    43,     0,    98,     0,
621       37,    45,    46,    48,    49,    75,    76,    78,    79,    64,
622       66,    81,    82,    84,    85,    89,    90,   100,    24,    26,
623       35,     0,    44,     0,    38,    39,    97,    32,    36,    40
624 };
625
626 /* YYDEFGOTO[NTERM-NUM].  */
627 static const yytype_int16 yydefgoto[] =
628 {
629       -1,    29,    30,    31,    32,    33,    34,    78,    35,    80,
630       36,    86,    37,    88,    38,    39,    40,    41,   130,    44,
631      103
632 };
633
634 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
635    STATE-NUM.  */
636 #define YYPACT_NINF -124
637 static const yytype_int16 yypact[] =
638 {
639      106,   -22,   -10,     2,     4,   -20,     6,     9,    -4,   -18,
640        0,    13,    20,    22,    26,    28,   -14,    -7,    33,    35,
641       10,    15,    37,    39,    41,    43,    47,    49,    51,    66,
642     -124,  -124,  -124,  -124,  -124,  -124,  -124,  -124,  -124,  -124,
643     -124,  -124,  -124,    51,  -124,  -124,    53,  -124,  -124,  -124,
644       55,    59,  -124,    61,  -124,    63,    65,    67,  -124,  -124,
645       44,  -124,    69,   -27,    71,  -124,   102,  -124,   104,  -124,
646      108,  -124,  -124,  -124,  -124,  -124,  -124,  -124,   110,  -124,
647      114,  -124,  -124,  -124,   116,  -124,   118,  -124,   120,  -124,
648     -124,  -124,  -124,  -124,  -124,  -124,   122,  -124,  -124,  -124,
649     -124,  -124,    51,  -124,  -124,  -124,  -124,  -124,  -124,  -124,
650     -124,   124,  -124,  -124,  -124,  -124,  -124,  -124,  -124,  -124,
651      126,  -124,  -124,   128,  -124,   102,  -124,   102,  -124,   102,
652     -124,  -124,  -124,  -124,  -124,  -124,  -124,  -124,  -124,  -124,
653     -124,  -124,  -124,  -124,  -124,  -124,  -124,  -124,  -124,  -124,
654     -124,   130,  -124,   102,  -124,  -124,  -124,  -124,  -124,  -124
655 };
656
657 /* YYPGOTO[NTERM-NUM].  */
658 static const yytype_int8 yypgoto[] =
659 {
660     -124,  -124,  -124,  -124,  -124,  -124,  -124,  -124,  -124,  -124,
661     -124,  -124,  -124,  -124,  -124,  -124,  -124,  -124,  -123,    -3,
662      -42
663 };
664
665 /* YYTABLE[YYPACT[STATE-NUM]].  What to do in state STATE-NUM.  If
666    positive, shift that token.  If negative, reduce the rule which
667    number is the opposite.  If zero, do what YYDEFACT says.
668    If YYTABLE_NINF, syntax error.  */
669 #define YYTABLE_NINF -1
670 static const yytype_uint8 yytable[] =
671 {
672       48,   105,   154,    60,   155,    59,   156,   123,   124,   125,
673       72,    74,    76,    42,    43,    82,    51,    61,    62,    90,
674       92,    94,    77,    98,   100,    45,    46,    56,    57,    79,
675      159,    58,    43,    63,    64,    65,    66,    47,    43,    49,
676       50,    52,    53,   107,    54,    55,    85,   109,    67,    68,
677      113,    87,   115,   117,   119,    69,    70,    71,    43,   122,
678      147,    73,    43,    75,    43,   132,   104,   134,    81,    43,
679       83,    84,    89,    43,    91,    43,    93,    43,    95,    96,
680      120,   140,    97,    43,    99,    43,   101,   102,   106,    43,
681      108,    43,     0,   146,   110,   111,   112,    43,   114,    43,
682      116,    43,   118,    43,   121,    43,   126,   127,   149,     1,
683        2,     3,     4,     5,     6,     7,     8,     9,    10,    11,
684       12,    13,    14,    15,    16,    17,    18,     0,    19,    20,
685       21,    22,    23,    24,    25,    26,    27,   128,   129,   131,
686       43,     0,    28,   133,    43,   135,   136,     0,   158,   137,
687      138,   139,    43,   141,   142,   143,   144,   145,    43,   148,
688       43,   150,   151,   152,   153,   157,    43
689 };
690
691 static const yytype_int16 yycheck[] =
692 {
693        3,    43,   125,    21,   127,     8,   129,    34,    35,    36,
694       13,    14,    15,    35,    36,    18,    36,    35,    36,    22,
695       23,    24,    36,    26,    27,    35,    36,    31,    32,    36,
696      153,    35,    36,    33,    34,    35,    36,    35,    36,    35,
697       36,    35,    36,    46,    35,    36,    36,    50,    35,    36,
698       53,    36,    55,    56,    57,    35,    36,    35,    36,    62,
699      102,    35,    36,    35,    36,    68,     0,    70,    35,    36,
700       35,    36,    35,    36,    35,    36,    35,    36,    35,    36,
701       36,    84,    35,    36,    35,    36,    35,    36,    35,    36,
702       35,    36,    -1,    96,    35,    36,    35,    36,    35,    36,
703       35,    36,    35,    36,    35,    36,    35,    36,   111,     3,
704        4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
705       14,    15,    16,    17,    18,    19,    20,    -1,    22,    23,
706       24,    25,    26,    27,    28,    29,    30,    35,    36,    35,
707       36,    -1,    36,    35,    36,    35,    36,    -1,   151,    35,
708       36,    35,    36,    35,    36,    35,    36,    35,    36,    35,
709       36,    35,    36,    35,    36,    35,    36
710 };
711
712 /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
713    symbol of state STATE-NUM.  */
714 static const yytype_uint8 yystos[] =
715 {
716        0,     3,     4,     5,     6,     7,     8,     9,    10,    11,
717       12,    13,    14,    15,    16,    17,    18,    19,    20,    22,
718       23,    24,    25,    26,    27,    28,    29,    30,    36,    38,
719       39,    40,    41,    42,    43,    45,    47,    49,    51,    52,
720       53,    54,    35,    36,    56,    35,    36,    35,    56,    35,
721       36,    36,    35,    36,    35,    36,    31,    32,    35,    56,
722       21,    35,    36,    33,    34,    35,    36,    35,    36,    35,
723       36,    35,    56,    35,    56,    35,    56,    36,    44,    36,
724       46,    35,    56,    35,    36,    36,    48,    36,    50,    35,
725       56,    35,    56,    35,    56,    35,    36,    35,    56,    35,
726       56,    35,    36,    57,     0,    57,    35,    56,    35,    56,
727       35,    36,    35,    56,    35,    56,    35,    56,    35,    56,
728       36,    35,    56,    34,    35,    36,    35,    36,    35,    36,
729       55,    35,    56,    35,    56,    35,    36,    35,    36,    35,
730       56,    35,    36,    35,    36,    35,    56,    57,    35,    56,
731       35,    36,    35,    36,    55,    55,    55,    35,    56,    55
732 };
733
734 #define yyerrok         (yyerrstatus = 0)
735 #define yyclearin       (yychar = YYEMPTY)
736 #define YYEMPTY         (-2)
737 #define YYEOF           0
738
739 #define YYACCEPT        goto yyacceptlab
740 #define YYABORT         goto yyabortlab
741 #define YYERROR         goto yyerrorlab
742
743
744 /* Like YYERROR except do call yyerror.  This remains here temporarily
745    to ease the transition to the new meaning of YYERROR, for GCC.
746    Once GCC version 2 has supplanted version 1, this can go.  */
747
748 #define YYFAIL          goto yyerrlab
749
750 #define YYRECOVERING()  (!!yyerrstatus)
751
752 #define YYBACKUP(Token, Value)                                  \
753 do                                                              \
754   if (yychar == YYEMPTY && yylen == 1)                          \
755     {                                                           \
756       yychar = (Token);                                         \
757       yylval = (Value);                                         \
758       yytoken = YYTRANSLATE (yychar);                           \
759       YYPOPSTACK (1);                                           \
760       goto yybackup;                                            \
761     }                                                           \
762   else                                                          \
763     {                                                           \
764       yyerror (YY_("syntax error: cannot back up")); \
765       YYERROR;                                                  \
766     }                                                           \
767 while (YYID (0))
768
769
770 #define YYTERROR        1
771 #define YYERRCODE       256
772
773
774 /* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
775    If N is 0, then set CURRENT to the empty location which ends
776    the previous symbol: RHS[0] (always defined).  */
777
778 #define YYRHSLOC(Rhs, K) ((Rhs)[K])
779 #ifndef YYLLOC_DEFAULT
780 # define YYLLOC_DEFAULT(Current, Rhs, N)                                \
781     do                                                                  \
782       if (YYID (N))                                                    \
783         {                                                               \
784           (Current).first_line   = YYRHSLOC (Rhs, 1).first_line;        \
785           (Current).first_column = YYRHSLOC (Rhs, 1).first_column;      \
786           (Current).last_line    = YYRHSLOC (Rhs, N).last_line;         \
787           (Current).last_column  = YYRHSLOC (Rhs, N).last_column;       \
788         }                                                               \
789       else                                                              \
790         {                                                               \
791           (Current).first_line   = (Current).last_line   =              \
792             YYRHSLOC (Rhs, 0).last_line;                                \
793           (Current).first_column = (Current).last_column =              \
794             YYRHSLOC (Rhs, 0).last_column;                              \
795         }                                                               \
796     while (YYID (0))
797 #endif
798
799
800 /* YY_LOCATION_PRINT -- Print the location on the stream.
801    This macro was not mandated originally: define only if we know
802    we won't break user code: when these are the locations we know.  */
803
804 #ifndef YY_LOCATION_PRINT
805 # if YYLTYPE_IS_TRIVIAL
806 #  define YY_LOCATION_PRINT(File, Loc)                  \
807      fprintf (File, "%d.%d-%d.%d",                      \
808               (Loc).first_line, (Loc).first_column,     \
809               (Loc).last_line,  (Loc).last_column)
810 # else
811 #  define YY_LOCATION_PRINT(File, Loc) ((void) 0)
812 # endif
813 #endif
814
815
816 /* YYLEX -- calling `yylex' with the right arguments.  */
817
818 #ifdef YYLEX_PARAM
819 # define YYLEX yylex (YYLEX_PARAM)
820 #else
821 # define YYLEX yylex ()
822 #endif
823
824 /* Enable debugging if requested.  */
825 #if YYDEBUG
826
827 # ifndef YYFPRINTF
828 #  include <stdio.h> /* INFRINGES ON USER NAME SPACE */
829 #  define YYFPRINTF fprintf
830 # endif
831
832 # define YYDPRINTF(Args)                        \
833 do {                                            \
834   if (yydebug)                                  \
835     YYFPRINTF Args;                             \
836 } while (YYID (0))
837
838 # define YY_SYMBOL_PRINT(Title, Type, Value, Location)                    \
839 do {                                                                      \
840   if (yydebug)                                                            \
841     {                                                                     \
842       YYFPRINTF (stderr, "%s ", Title);                                   \
843       yy_symbol_print (stderr,                                            \
844                   Type, Value); \
845       YYFPRINTF (stderr, "\n");                                           \
846     }                                                                     \
847 } while (YYID (0))
848
849
850 /*--------------------------------.
851 | Print this symbol on YYOUTPUT.  |
852 `--------------------------------*/
853
854 /*ARGSUSED*/
855 #if (defined __STDC__ || defined __C99__FUNC__ \
856      || defined __cplusplus || defined _MSC_VER)
857 static void
858 yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
859 #else
860 static void
861 yy_symbol_value_print (yyoutput, yytype, yyvaluep)
862     FILE *yyoutput;
863     int yytype;
864     YYSTYPE const * const yyvaluep;
865 #endif
866 {
867   if (!yyvaluep)
868     return;
869 # ifdef YYPRINT
870   if (yytype < YYNTOKENS)
871     YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
872 # else
873   YYUSE (yyoutput);
874 # endif
875   switch (yytype)
876     {
877       default:
878         break;
879     }
880 }
881
882
883 /*--------------------------------.
884 | Print this symbol on YYOUTPUT.  |
885 `--------------------------------*/
886
887 #if (defined __STDC__ || defined __C99__FUNC__ \
888      || defined __cplusplus || defined _MSC_VER)
889 static void
890 yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
891 #else
892 static void
893 yy_symbol_print (yyoutput, yytype, yyvaluep)
894     FILE *yyoutput;
895     int yytype;
896     YYSTYPE const * const yyvaluep;
897 #endif
898 {
899   if (yytype < YYNTOKENS)
900     YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
901   else
902     YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
903
904   yy_symbol_value_print (yyoutput, yytype, yyvaluep);
905   YYFPRINTF (yyoutput, ")");
906 }
907
908 /*------------------------------------------------------------------.
909 | yy_stack_print -- Print the state stack from its BOTTOM up to its |
910 | TOP (included).                                                   |
911 `------------------------------------------------------------------*/
912
913 #if (defined __STDC__ || defined __C99__FUNC__ \
914      || defined __cplusplus || defined _MSC_VER)
915 static void
916 yy_stack_print (yytype_int16 *bottom, yytype_int16 *top)
917 #else
918 static void
919 yy_stack_print (bottom, top)
920     yytype_int16 *bottom;
921     yytype_int16 *top;
922 #endif
923 {
924   YYFPRINTF (stderr, "Stack now");
925   for (; bottom <= top; ++bottom)
926     YYFPRINTF (stderr, " %d", *bottom);
927   YYFPRINTF (stderr, "\n");
928 }
929
930 # define YY_STACK_PRINT(Bottom, Top)                            \
931 do {                                                            \
932   if (yydebug)                                                  \
933     yy_stack_print ((Bottom), (Top));                           \
934 } while (YYID (0))
935
936
937 /*------------------------------------------------.
938 | Report that the YYRULE is going to be reduced.  |
939 `------------------------------------------------*/
940
941 #if (defined __STDC__ || defined __C99__FUNC__ \
942      || defined __cplusplus || defined _MSC_VER)
943 static void
944 yy_reduce_print (YYSTYPE *yyvsp, int yyrule)
945 #else
946 static void
947 yy_reduce_print (yyvsp, yyrule)
948     YYSTYPE *yyvsp;
949     int yyrule;
950 #endif
951 {
952   int yynrhs = yyr2[yyrule];
953   int yyi;
954   unsigned long int yylno = yyrline[yyrule];
955   YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n",
956              yyrule - 1, yylno);
957   /* The symbols being reduced.  */
958   for (yyi = 0; yyi < yynrhs; yyi++)
959     {
960       fprintf (stderr, "   $%d = ", yyi + 1);
961       yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi],
962                        &(yyvsp[(yyi + 1) - (yynrhs)])
963                                        );
964       fprintf (stderr, "\n");
965     }
966 }
967
968 # define YY_REDUCE_PRINT(Rule)          \
969 do {                                    \
970   if (yydebug)                          \
971     yy_reduce_print (yyvsp, Rule); \
972 } while (YYID (0))
973
974 /* Nonzero means print parse trace.  It is left uninitialized so that
975    multiple parsers can coexist.  */
976 int yydebug;
977 #else /* !YYDEBUG */
978 # define YYDPRINTF(Args)
979 # define YY_SYMBOL_PRINT(Title, Type, Value, Location)
980 # define YY_STACK_PRINT(Bottom, Top)
981 # define YY_REDUCE_PRINT(Rule)
982 #endif /* !YYDEBUG */
983
984
985 /* YYINITDEPTH -- initial size of the parser's stacks.  */
986 #ifndef YYINITDEPTH
987 # define YYINITDEPTH 200
988 #endif
989
990 /* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
991    if the built-in stack extension method is used).
992
993    Do not make this value too large; the results are undefined if
994    YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH)
995    evaluated with infinite-precision integer arithmetic.  */
996
997 #ifndef YYMAXDEPTH
998 # define YYMAXDEPTH 10000
999 #endif
1000
1001 \f
1002
1003 #if YYERROR_VERBOSE
1004
1005 # ifndef yystrlen
1006 #  if defined __GLIBC__ && defined _STRING_H
1007 #   define yystrlen strlen
1008 #  else
1009 /* Return the length of YYSTR.  */
1010 #if (defined __STDC__ || defined __C99__FUNC__ \
1011      || defined __cplusplus || defined _MSC_VER)
1012 static YYSIZE_T
1013 yystrlen (const char *yystr)
1014 #else
1015 static YYSIZE_T
1016 yystrlen (yystr)
1017     const char *yystr;
1018 #endif
1019 {
1020   YYSIZE_T yylen;
1021   for (yylen = 0; yystr[yylen]; yylen++)
1022     continue;
1023   return yylen;
1024 }
1025 #  endif
1026 # endif
1027
1028 # ifndef yystpcpy
1029 #  if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
1030 #   define yystpcpy stpcpy
1031 #  else
1032 /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
1033    YYDEST.  */
1034 #if (defined __STDC__ || defined __C99__FUNC__ \
1035      || defined __cplusplus || defined _MSC_VER)
1036 static char *
1037 yystpcpy (char *yydest, const char *yysrc)
1038 #else
1039 static char *
1040 yystpcpy (yydest, yysrc)
1041     char *yydest;
1042     const char *yysrc;
1043 #endif
1044 {
1045   char *yyd = yydest;
1046   const char *yys = yysrc;
1047
1048   while ((*yyd++ = *yys++) != '\0')
1049     continue;
1050
1051   return yyd - 1;
1052 }
1053 #  endif
1054 # endif
1055
1056 # ifndef yytnamerr
1057 /* Copy to YYRES the contents of YYSTR after stripping away unnecessary
1058    quotes and backslashes, so that it's suitable for yyerror.  The
1059    heuristic is that double-quoting is unnecessary unless the string
1060    contains an apostrophe, a comma, or backslash (other than
1061    backslash-backslash).  YYSTR is taken from yytname.  If YYRES is
1062    null, do not copy; instead, return the length of what the result
1063    would have been.  */
1064 static YYSIZE_T
1065 yytnamerr (char *yyres, const char *yystr)
1066 {
1067   if (*yystr == '"')
1068     {
1069       YYSIZE_T yyn = 0;
1070       char const *yyp = yystr;
1071
1072       for (;;)
1073         switch (*++yyp)
1074           {
1075           case '\'':
1076           case ',':
1077             goto do_not_strip_quotes;
1078
1079           case '\\':
1080             if (*++yyp != '\\')
1081               goto do_not_strip_quotes;
1082             /* Fall through.  */
1083           default:
1084             if (yyres)
1085               yyres[yyn] = *yyp;
1086             yyn++;
1087             break;
1088
1089           case '"':
1090             if (yyres)
1091               yyres[yyn] = '\0';
1092             return yyn;
1093           }
1094     do_not_strip_quotes: ;
1095     }
1096
1097   if (! yyres)
1098     return yystrlen (yystr);
1099
1100   return yystpcpy (yyres, yystr) - yyres;
1101 }
1102 # endif
1103
1104 /* Copy into YYRESULT an error message about the unexpected token
1105    YYCHAR while in state YYSTATE.  Return the number of bytes copied,
1106    including the terminating null byte.  If YYRESULT is null, do not
1107    copy anything; just return the number of bytes that would be
1108    copied.  As a special case, return 0 if an ordinary "syntax error"
1109    message will do.  Return YYSIZE_MAXIMUM if overflow occurs during
1110    size calculation.  */
1111 static YYSIZE_T
1112 yysyntax_error (char *yyresult, int yystate, int yychar)
1113 {
1114   int yyn = yypact[yystate];
1115
1116   if (! (YYPACT_NINF < yyn && yyn <= YYLAST))
1117     return 0;
1118   else
1119     {
1120       int yytype = YYTRANSLATE (yychar);
1121       YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]);
1122       YYSIZE_T yysize = yysize0;
1123       YYSIZE_T yysize1;
1124       int yysize_overflow = 0;
1125       enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
1126       char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
1127       int yyx;
1128
1129 # if 0
1130       /* This is so xgettext sees the translatable formats that are
1131          constructed on the fly.  */
1132       YY_("syntax error, unexpected %s");
1133       YY_("syntax error, unexpected %s, expecting %s");
1134       YY_("syntax error, unexpected %s, expecting %s or %s");
1135       YY_("syntax error, unexpected %s, expecting %s or %s or %s");
1136       YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s");
1137 # endif
1138       char *yyfmt;
1139       char const *yyf;
1140       static char const yyunexpected[] = "syntax error, unexpected %s";
1141       static char const yyexpecting[] = ", expecting %s";
1142       static char const yyor[] = " or %s";
1143       char yyformat[sizeof yyunexpected
1144                     + sizeof yyexpecting - 1
1145                     + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2)
1146                        * (sizeof yyor - 1))];
1147       char const *yyprefix = yyexpecting;
1148
1149       /* Start YYX at -YYN if negative to avoid negative indexes in
1150          YYCHECK.  */
1151       int yyxbegin = yyn < 0 ? -yyn : 0;
1152
1153       /* Stay within bounds of both yycheck and yytname.  */
1154       int yychecklim = YYLAST - yyn + 1;
1155       int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
1156       int yycount = 1;
1157
1158       yyarg[0] = yytname[yytype];
1159       yyfmt = yystpcpy (yyformat, yyunexpected);
1160
1161       for (yyx = yyxbegin; yyx < yyxend; ++yyx)
1162         if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
1163           {
1164             if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
1165               {
1166                 yycount = 1;
1167                 yysize = yysize0;
1168                 yyformat[sizeof yyunexpected - 1] = '\0';
1169                 break;
1170               }
1171             yyarg[yycount++] = yytname[yyx];
1172             yysize1 = yysize + yytnamerr (0, yytname[yyx]);
1173             yysize_overflow |= (yysize1 < yysize);
1174             yysize = yysize1;
1175             yyfmt = yystpcpy (yyfmt, yyprefix);
1176             yyprefix = yyor;
1177           }
1178
1179       yyf = YY_(yyformat);
1180       yysize1 = yysize + yystrlen (yyf);
1181       yysize_overflow |= (yysize1 < yysize);
1182       yysize = yysize1;
1183
1184       if (yysize_overflow)
1185         return YYSIZE_MAXIMUM;
1186
1187       if (yyresult)
1188         {
1189           /* Avoid sprintf, as that infringes on the user's name space.
1190              Don't have undefined behavior even if the translation
1191              produced a string with the wrong number of "%s"s.  */
1192           char *yyp = yyresult;
1193           int yyi = 0;
1194           while ((*yyp = *yyf) != '\0')
1195             {
1196               if (*yyp == '%' && yyf[1] == 's' && yyi < yycount)
1197                 {
1198                   yyp += yytnamerr (yyp, yyarg[yyi++]);
1199                   yyf += 2;
1200                 }
1201               else
1202                 {
1203                   yyp++;
1204                   yyf++;
1205                 }
1206             }
1207         }
1208       return yysize;
1209     }
1210 }
1211 #endif /* YYERROR_VERBOSE */
1212 \f
1213
1214 /*-----------------------------------------------.
1215 | Release the memory associated to this symbol.  |
1216 `-----------------------------------------------*/
1217
1218 /*ARGSUSED*/
1219 #if (defined __STDC__ || defined __C99__FUNC__ \
1220      || defined __cplusplus || defined _MSC_VER)
1221 static void
1222 yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep)
1223 #else
1224 static void
1225 yydestruct (yymsg, yytype, yyvaluep)
1226     const char *yymsg;
1227     int yytype;
1228     YYSTYPE *yyvaluep;
1229 #endif
1230 {
1231   YYUSE (yyvaluep);
1232
1233   if (!yymsg)
1234     yymsg = "Deleting";
1235   YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
1236
1237   switch (yytype)
1238     {
1239
1240       default:
1241         break;
1242     }
1243 }
1244 \f
1245
1246 /* Prevent warnings from -Wmissing-prototypes.  */
1247
1248 #ifdef YYPARSE_PARAM
1249 #if defined __STDC__ || defined __cplusplus
1250 int yyparse (void *YYPARSE_PARAM);
1251 #else
1252 int yyparse ();
1253 #endif
1254 #else /* ! YYPARSE_PARAM */
1255 #if defined __STDC__ || defined __cplusplus
1256 int yyparse (void);
1257 #else
1258 int yyparse ();
1259 #endif
1260 #endif /* ! YYPARSE_PARAM */
1261
1262
1263
1264 /* The look-ahead symbol.  */
1265 int yychar;
1266
1267 /* The semantic value of the look-ahead symbol.  */
1268 YYSTYPE yylval;
1269
1270 /* Number of syntax errors so far.  */
1271 int yynerrs;
1272
1273
1274
1275 /*----------.
1276 | yyparse.  |
1277 `----------*/
1278
1279 #ifdef YYPARSE_PARAM
1280 #if (defined __STDC__ || defined __C99__FUNC__ \
1281      || defined __cplusplus || defined _MSC_VER)
1282 int
1283 yyparse (void *YYPARSE_PARAM)
1284 #else
1285 int
1286 yyparse (YYPARSE_PARAM)
1287     void *YYPARSE_PARAM;
1288 #endif
1289 #else /* ! YYPARSE_PARAM */
1290 #if (defined __STDC__ || defined __C99__FUNC__ \
1291      || defined __cplusplus || defined _MSC_VER)
1292 int
1293 yyparse (void)
1294 #else
1295 int
1296 yyparse ()
1297
1298 #endif
1299 #endif
1300 {
1301   
1302   int yystate;
1303   int yyn;
1304   int yyresult;
1305   /* Number of tokens to shift before error messages enabled.  */
1306   int yyerrstatus;
1307   /* Look-ahead token as an internal (translated) token number.  */
1308   int yytoken = 0;
1309 #if YYERROR_VERBOSE
1310   /* Buffer for error messages, and its allocated size.  */
1311   char yymsgbuf[128];
1312   char *yymsg = yymsgbuf;
1313   YYSIZE_T yymsg_alloc = sizeof yymsgbuf;
1314 #endif
1315
1316   /* Three stacks and their tools:
1317      `yyss': related to states,
1318      `yyvs': related to semantic values,
1319      `yyls': related to locations.
1320
1321      Refer to the stacks thru separate pointers, to allow yyoverflow
1322      to reallocate them elsewhere.  */
1323
1324   /* The state stack.  */
1325   yytype_int16 yyssa[YYINITDEPTH];
1326   yytype_int16 *yyss = yyssa;
1327   yytype_int16 *yyssp;
1328
1329   /* The semantic value stack.  */
1330   YYSTYPE yyvsa[YYINITDEPTH];
1331   YYSTYPE *yyvs = yyvsa;
1332   YYSTYPE *yyvsp;
1333
1334
1335
1336 #define YYPOPSTACK(N)   (yyvsp -= (N), yyssp -= (N))
1337
1338   YYSIZE_T yystacksize = YYINITDEPTH;
1339
1340   /* The variables used to return semantic value and location from the
1341      action routines.  */
1342   YYSTYPE yyval;
1343
1344
1345   /* The number of symbols on the RHS of the reduced rule.
1346      Keep to zero when no symbol should be popped.  */
1347   int yylen = 0;
1348
1349   YYDPRINTF ((stderr, "Starting parse\n"));
1350
1351   yystate = 0;
1352   yyerrstatus = 0;
1353   yynerrs = 0;
1354   yychar = YYEMPTY;             /* Cause a token to be read.  */
1355
1356   /* Initialize stack pointers.
1357      Waste one element of value and location stack
1358      so that they stay on the same level as the state stack.
1359      The wasted elements are never initialized.  */
1360
1361   yyssp = yyss;
1362   yyvsp = yyvs;
1363
1364   goto yysetstate;
1365
1366 /*------------------------------------------------------------.
1367 | yynewstate -- Push a new state, which is found in yystate.  |
1368 `------------------------------------------------------------*/
1369  yynewstate:
1370   /* In all cases, when you get here, the value and location stacks
1371      have just been pushed.  So pushing a state here evens the stacks.  */
1372   yyssp++;
1373
1374  yysetstate:
1375   *yyssp = yystate;
1376
1377   if (yyss + yystacksize - 1 <= yyssp)
1378     {
1379       /* Get the current used size of the three stacks, in elements.  */
1380       YYSIZE_T yysize = yyssp - yyss + 1;
1381
1382 #ifdef yyoverflow
1383       {
1384         /* Give user a chance to reallocate the stack.  Use copies of
1385            these so that the &'s don't force the real ones into
1386            memory.  */
1387         YYSTYPE *yyvs1 = yyvs;
1388         yytype_int16 *yyss1 = yyss;
1389
1390
1391         /* Each stack pointer address is followed by the size of the
1392            data in use in that stack, in bytes.  This used to be a
1393            conditional around just the two extra args, but that might
1394            be undefined if yyoverflow is a macro.  */
1395         yyoverflow (YY_("memory exhausted"),
1396                     &yyss1, yysize * sizeof (*yyssp),
1397                     &yyvs1, yysize * sizeof (*yyvsp),
1398
1399                     &yystacksize);
1400
1401         yyss = yyss1;
1402         yyvs = yyvs1;
1403       }
1404 #else /* no yyoverflow */
1405 # ifndef YYSTACK_RELOCATE
1406       goto yyexhaustedlab;
1407 # else
1408       /* Extend the stack our own way.  */
1409       if (YYMAXDEPTH <= yystacksize)
1410         goto yyexhaustedlab;
1411       yystacksize *= 2;
1412       if (YYMAXDEPTH < yystacksize)
1413         yystacksize = YYMAXDEPTH;
1414
1415       {
1416         yytype_int16 *yyss1 = yyss;
1417         union yyalloc *yyptr =
1418           (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
1419         if (! yyptr)
1420           goto yyexhaustedlab;
1421         YYSTACK_RELOCATE (yyss);
1422         YYSTACK_RELOCATE (yyvs);
1423
1424 #  undef YYSTACK_RELOCATE
1425         if (yyss1 != yyssa)
1426           YYSTACK_FREE (yyss1);
1427       }
1428 # endif
1429 #endif /* no yyoverflow */
1430
1431       yyssp = yyss + yysize - 1;
1432       yyvsp = yyvs + yysize - 1;
1433
1434
1435       YYDPRINTF ((stderr, "Stack size increased to %lu\n",
1436                   (unsigned long int) yystacksize));
1437
1438       if (yyss + yystacksize - 1 <= yyssp)
1439         YYABORT;
1440     }
1441
1442   YYDPRINTF ((stderr, "Entering state %d\n", yystate));
1443
1444   goto yybackup;
1445
1446 /*-----------.
1447 | yybackup.  |
1448 `-----------*/
1449 yybackup:
1450
1451   /* Do appropriate processing given the current state.  Read a
1452      look-ahead token if we need one and don't already have one.  */
1453
1454   /* First try to decide what to do without reference to look-ahead token.  */
1455   yyn = yypact[yystate];
1456   if (yyn == YYPACT_NINF)
1457     goto yydefault;
1458
1459   /* Not known => get a look-ahead token if don't already have one.  */
1460
1461   /* YYCHAR is either YYEMPTY or YYEOF or a valid look-ahead symbol.  */
1462   if (yychar == YYEMPTY)
1463     {
1464       YYDPRINTF ((stderr, "Reading a token: "));
1465       yychar = YYLEX;
1466     }
1467
1468   if (yychar <= YYEOF)
1469     {
1470       yychar = yytoken = YYEOF;
1471       YYDPRINTF ((stderr, "Now at end of input.\n"));
1472     }
1473   else
1474     {
1475       yytoken = YYTRANSLATE (yychar);
1476       YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
1477     }
1478
1479   /* If the proper action on seeing token YYTOKEN is to reduce or to
1480      detect an error, take that action.  */
1481   yyn += yytoken;
1482   if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
1483     goto yydefault;
1484   yyn = yytable[yyn];
1485   if (yyn <= 0)
1486     {
1487       if (yyn == 0 || yyn == YYTABLE_NINF)
1488         goto yyerrlab;
1489       yyn = -yyn;
1490       goto yyreduce;
1491     }
1492
1493   if (yyn == YYFINAL)
1494     YYACCEPT;
1495
1496   /* Count tokens shifted since error; after three, turn off error
1497      status.  */
1498   if (yyerrstatus)
1499     yyerrstatus--;
1500
1501   /* Shift the look-ahead token.  */
1502   YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
1503
1504   /* Discard the shifted token unless it is eof.  */
1505   if (yychar != YYEOF)
1506     yychar = YYEMPTY;
1507
1508   yystate = yyn;
1509   *++yyvsp = yylval;
1510
1511   goto yynewstate;
1512
1513
1514 /*-----------------------------------------------------------.
1515 | yydefault -- do the default action for the current state.  |
1516 `-----------------------------------------------------------*/
1517 yydefault:
1518   yyn = yydefact[yystate];
1519   if (yyn == 0)
1520     goto yyerrlab;
1521   goto yyreduce;
1522
1523
1524 /*-----------------------------.
1525 | yyreduce -- Do a reduction.  |
1526 `-----------------------------*/
1527 yyreduce:
1528   /* yyn is the number of a rule to reduce with.  */
1529   yylen = yyr2[yyn];
1530
1531   /* If YYLEN is nonzero, implement the default value of the action:
1532      `$$ = $1'.
1533
1534      Otherwise, the following line sets YYVAL to garbage.
1535      This behavior is undocumented and Bison
1536      users should not rely upon it.  Assigning to YYVAL
1537      unconditionally makes the parser a bit smaller, and it avoids a
1538      GCC warning that YYVAL may be used uninitialized.  */
1539   yyval = yyvsp[1-yylen];
1540
1541
1542   YY_REDUCE_PRINT (yyn);
1543   switch (yyn)
1544     {
1545         case 14:
1546 #line 83 "uparse.y"
1547     { list_host(); }
1548     break;
1549
1550   case 15:
1551 #line 84 "uparse.y"
1552     { yyerror("Invalid argument"); }
1553     break;
1554
1555   case 16:
1556 #line 85 "uparse.y"
1557     { list_disk((yyvsp[(2) - (3)].strval)); amfree((yyvsp[(2) - (3)].strval)); }
1558     break;
1559
1560   case 17:
1561 #line 86 "uparse.y"
1562     { list_disk(NULL); }
1563     break;
1564
1565   case 18:
1566 #line 87 "uparse.y"
1567     { yyerror("Invalid argument"); amfree((yyvsp[(2) - (3)].strval)); }
1568     break;
1569
1570   case 19:
1571 #line 88 "uparse.y"
1572     { list_property(); }
1573     break;
1574
1575   case 20:
1576 #line 89 "uparse.y"
1577     { yyerror("Invalid argument"); }
1578     break;
1579
1580   case 21:
1581 #line 90 "uparse.y"
1582     { set_host((yyvsp[(2) - (3)].strval)); amfree((yyvsp[(2) - (3)].strval)); }
1583     break;
1584
1585   case 22:
1586 #line 91 "uparse.y"
1587     { yyerror("Invalid argument"); amfree((yyvsp[(2) - (3)].strval)); }
1588     break;
1589
1590   case 23:
1591 #line 92 "uparse.y"
1592     { yyerror("Argument required"); }
1593     break;
1594
1595   case 24:
1596 #line 93 "uparse.y"
1597     { set_disk((yyvsp[(2) - (4)].strval), (yyvsp[(3) - (4)].strval)); amfree((yyvsp[(2) - (4)].strval)); amfree((yyvsp[(3) - (4)].strval)); }
1598     break;
1599
1600   case 25:
1601 #line 94 "uparse.y"
1602     { set_disk((yyvsp[(2) - (3)].strval), NULL); amfree((yyvsp[(2) - (3)].strval)); }
1603     break;
1604
1605   case 26:
1606 #line 95 "uparse.y"
1607     { yyerror("Invalid argument"); amfree((yyvsp[(2) - (4)].strval)); amfree((yyvsp[(3) - (4)].strval)); }
1608     break;
1609
1610   case 27:
1611 #line 96 "uparse.y"
1612     { yyerror("Argument required"); }
1613     break;
1614
1615   case 28:
1616 #line 97 "uparse.y"
1617     { set_tape((yyvsp[(2) - (3)].strval)); amfree((yyvsp[(2) - (3)].strval)); }
1618     break;
1619
1620   case 29:
1621 #line 98 "uparse.y"
1622     { set_tape("default"); }
1623     break;
1624
1625   case 30:
1626 #line 99 "uparse.y"
1627     { yyerror("Invalid argument"); amfree((yyvsp[(2) - (3)].strval)); }
1628     break;
1629
1630   case 31:
1631 #line 100 "uparse.y"
1632     { set_device(NULL, (yyvsp[(2) - (3)].strval)); amfree((yyvsp[(2) - (3)].strval)); }
1633     break;
1634
1635   case 32:
1636 #line 101 "uparse.y"
1637     { set_device((yyvsp[(3) - (5)].strval), (yyvsp[(4) - (5)].strval)); amfree((yyvsp[(3) - (5)].strval)); amfree((yyvsp[(4) - (5)].strval));  }
1638     break;
1639
1640   case 33:
1641 #line 102 "uparse.y"
1642     { set_device(NULL, NULL); }
1643     break;
1644
1645   case 34:
1646 #line 103 "uparse.y"
1647     { yyerror("Invalid argument"); amfree((yyvsp[(2) - (3)].strval)); }
1648     break;
1649
1650   case 35:
1651 #line 104 "uparse.y"
1652     { yyerror("Invalid argument"); amfree((yyvsp[(3) - (4)].strval)); }
1653     break;
1654
1655   case 36:
1656 #line 105 "uparse.y"
1657     { yyerror("Invalid argument"); amfree((yyvsp[(3) - (5)].strval)); amfree((yyvsp[(4) - (5)].strval)); }
1658     break;
1659
1660   case 37:
1661 #line 106 "uparse.y"
1662     { set_property_name((yyvsp[(2) - (3)].strval), 0); amfree((yyvsp[(2) - (3)].strval)); }
1663     break;
1664
1665   case 38:
1666 #line 107 "uparse.y"
1667     { set_property_name((yyvsp[(3) - (4)].strval), 1); amfree((yyvsp[(3) - (4)].strval)); }
1668     break;
1669
1670   case 39:
1671 #line 108 "uparse.y"
1672     { set_property_name((yyvsp[(3) - (4)].strval), 0); amfree((yyvsp[(3) - (4)].strval)); }
1673     break;
1674
1675   case 40:
1676 #line 109 "uparse.y"
1677     { set_property_name((yyvsp[(4) - (5)].strval), 1); amfree((yyvsp[(4) - (5)].strval)); }
1678     break;
1679
1680   case 41:
1681 #line 110 "uparse.y"
1682     { yyerror("Invalid argument"); }
1683     break;
1684
1685   case 42:
1686 #line 111 "uparse.y"
1687     { yyerror("Invalid argument"); }
1688     break;
1689
1690   case 43:
1691 #line 112 "uparse.y"
1692     { yyerror("Invalid argument"); }
1693     break;
1694
1695   case 44:
1696 #line 113 "uparse.y"
1697     { yyerror("Invalid argument"); }
1698     break;
1699
1700   case 45:
1701 #line 114 "uparse.y"
1702     { cd_glob((yyvsp[(2) - (3)].strval), 1); amfree((yyvsp[(2) - (3)].strval)); }
1703     break;
1704
1705   case 46:
1706 #line 115 "uparse.y"
1707     { yyerror("Invalid argument"); }
1708     break;
1709
1710   case 47:
1711 #line 116 "uparse.y"
1712     { yyerror("Argument required"); }
1713     break;
1714
1715   case 48:
1716 #line 117 "uparse.y"
1717     { cd_regex((yyvsp[(2) - (3)].strval), 1); amfree((yyvsp[(2) - (3)].strval)); }
1718     break;
1719
1720   case 49:
1721 #line 118 "uparse.y"
1722     { yyerror("Invalid argument"); amfree((yyvsp[(2) - (3)].strval)); }
1723     break;
1724
1725   case 50:
1726 #line 119 "uparse.y"
1727     { yyerror("Argument required"); }
1728     break;
1729
1730   case 51:
1731 #line 120 "uparse.y"
1732     { set_mode(SAMBA_SMBCLIENT); }
1733     break;
1734
1735   case 52:
1736 #line 121 "uparse.y"
1737     { set_mode(SAMBA_TAR); }
1738     break;
1739
1740   case 53:
1741 #line 122 "uparse.y"
1742     { yyerror("Invalid argument"); }
1743     break;
1744
1745   case 54:
1746 #line 123 "uparse.y"
1747     { yyerror("Invalid argument"); }
1748     break;
1749
1750   case 55:
1751 #line 124 "uparse.y"
1752     { yyerror("Invalid argument"); }
1753     break;
1754
1755   case 56:
1756 #line 125 "uparse.y"
1757     { yyerror("Argument required"); }
1758     break;
1759
1760   case 57:
1761 #line 129 "uparse.y"
1762     {
1763                         time_t now;
1764                         struct tm *t;
1765                         int y=2000, m=0, d=1, h=0, mi=0, s=0;
1766                         int ret;
1767                         char *mydate = (yyvsp[(2) - (3)].strval);
1768
1769                         now = time((time_t *)NULL);
1770                         t = localtime(&now);
1771                         if (t) {
1772                             y = 1900+t->tm_year;
1773                             m = t->tm_mon+1;
1774                             d = t->tm_mday;
1775                         }
1776                         if (sscanf(mydate, "---%d", &d) == 1 ||
1777                             sscanf(mydate, "--%d-%d", &m, &d) == 2 ||
1778                             sscanf(mydate, "%d-%d-%d-%d-%d-%d", &y, &m, &d, &h, &mi, &s) >= 3) {
1779                             if (y < 70) {
1780                                 y += 2000;
1781                             } else if (y < 100) {
1782                                 y += 1900;
1783                             }
1784                             if(y < 1000 || y > 9999) {
1785                                 printf("invalid year");
1786                             } else if(m < 1 || m > 12) {
1787                                 printf("invalid month");
1788                             } else if(d < 1 || d > 31) {
1789                                 printf("invalid day");
1790                             } else if(h < 0 || h > 24) {
1791                                 printf("invalid hour");
1792                             } else if(mi < 0 || mi > 59) {
1793                                 printf("invalid minute");
1794                             } else if(s < 0 || s > 59) {
1795                                 printf("invalid second");
1796                             } else {
1797                                 char result[DATE_ALLOC_SIZE];
1798                                 if (h == 0 && mi == 0 && s == 0)
1799                                     g_snprintf(result, DATE_ALLOC_SIZE, "%04d-%02d-%02d", y, m, d);
1800                                 else
1801                                     g_snprintf(result, DATE_ALLOC_SIZE, "%04d-%02d-%02d-%02d-%02d-%02d", y, m, d, h, mi, s);
1802                                 set_date(result);
1803                             }
1804                         } else {
1805                             printf("Invalid date: %s\n", mydate);
1806                         }
1807                      }
1808     break;
1809
1810   case 58:
1811 #line 175 "uparse.y"
1812     { yyerror("Argument required"); }
1813     break;
1814
1815   case 59:
1816 #line 176 "uparse.y"
1817     { yyerror("Invalid argument"); }
1818     break;
1819
1820   case 60:
1821 #line 180 "uparse.y"
1822     { list_disk_history(); }
1823     break;
1824
1825   case 61:
1826 #line 181 "uparse.y"
1827     { yyerror("Invalid argument"); }
1828     break;
1829
1830   case 62:
1831 #line 182 "uparse.y"
1832     { list_directory(); }
1833     break;
1834
1835   case 63:
1836 #line 183 "uparse.y"
1837     { yyerror("Invalid argument"); }
1838     break;
1839
1840   case 64:
1841 #line 184 "uparse.y"
1842     { display_extract_list((yyvsp[(2) - (3)].strval)); amfree((yyvsp[(2) - (3)].strval)); }
1843     break;
1844
1845   case 65:
1846 #line 185 "uparse.y"
1847     { display_extract_list(NULL); }
1848     break;
1849
1850   case 66:
1851 #line 186 "uparse.y"
1852     { yyerror("Invalid argument"); }
1853     break;
1854
1855   case 67:
1856 #line 187 "uparse.y"
1857     { show_directory(); }
1858     break;
1859
1860   case 68:
1861 #line 188 "uparse.y"
1862     { yyerror("Invalid argument"); }
1863     break;
1864
1865   case 69:
1866 #line 189 "uparse.y"
1867     { clear_extract_list(); }
1868     break;
1869
1870   case 70:
1871 #line 190 "uparse.y"
1872     { yyerror("Invalid argument"); }
1873     break;
1874
1875   case 71:
1876 #line 191 "uparse.y"
1877     { show_mode (); }
1878     break;
1879
1880   case 72:
1881 #line 192 "uparse.y"
1882     { yyerror("Invalid argument"); }
1883     break;
1884
1885   case 73:
1886 #line 196 "uparse.y"
1887     { quit(); }
1888     break;
1889
1890   case 74:
1891 #line 197 "uparse.y"
1892     { yyerror("Invalid argument"); }
1893     break;
1894
1895   case 76:
1896 #line 205 "uparse.y"
1897     { add_glob((yyvsp[(2) - (2)].strval)); amfree((yyvsp[(2) - (2)].strval)); }
1898     break;
1899
1900   case 77:
1901 #line 206 "uparse.y"
1902     { add_glob((yyvsp[(1) - (1)].strval)); amfree((yyvsp[(1) - (1)].strval)); }
1903     break;
1904
1905   case 79:
1906 #line 214 "uparse.y"
1907     { add_regex((yyvsp[(2) - (2)].strval)); amfree((yyvsp[(2) - (2)].strval)); }
1908     break;
1909
1910   case 80:
1911 #line 215 "uparse.y"
1912     { add_regex((yyvsp[(1) - (1)].strval)); amfree((yyvsp[(1) - (1)].strval)); }
1913     break;
1914
1915   case 82:
1916 #line 223 "uparse.y"
1917     { delete_glob((yyvsp[(2) - (2)].strval)); amfree((yyvsp[(2) - (2)].strval)); }
1918     break;
1919
1920   case 83:
1921 #line 224 "uparse.y"
1922     { delete_glob((yyvsp[(1) - (1)].strval)); amfree((yyvsp[(1) - (1)].strval)); }
1923     break;
1924
1925   case 85:
1926 #line 232 "uparse.y"
1927     { delete_regex((yyvsp[(2) - (2)].strval)); amfree((yyvsp[(2) - (2)].strval)); }
1928     break;
1929
1930   case 86:
1931 #line 233 "uparse.y"
1932     { delete_regex((yyvsp[(1) - (1)].strval)); amfree((yyvsp[(1) - (1)].strval)); }
1933     break;
1934
1935   case 87:
1936 #line 237 "uparse.y"
1937     { char * buf= g_get_current_dir(); puts(buf); free(buf); }
1938     break;
1939
1940   case 88:
1941 #line 238 "uparse.y"
1942     { yyerror("Invalid argument"); }
1943     break;
1944
1945   case 89:
1946 #line 239 "uparse.y"
1947     {
1948                 local_cd((yyvsp[(2) - (3)].strval));
1949                 amfree((yyvsp[(2) - (3)].strval));
1950         }
1951     break;
1952
1953   case 90:
1954 #line 243 "uparse.y"
1955     { yyerror("Invalid argument"); }
1956     break;
1957
1958   case 91:
1959 #line 244 "uparse.y"
1960     { yyerror("Argument required"); }
1961     break;
1962
1963   case 92:
1964 #line 248 "uparse.y"
1965     { help_list(); }
1966     break;
1967
1968   case 93:
1969 #line 249 "uparse.y"
1970     { yyerror("Invalid argument"); }
1971     break;
1972
1973   case 94:
1974 #line 253 "uparse.y"
1975     { extract_files(); }
1976     break;
1977
1978   case 95:
1979 #line 254 "uparse.y"
1980     { yyerror("Invalid argument"); }
1981     break;
1982
1983   case 96:
1984 #line 258 "uparse.y"
1985     {
1986             char * errstr = vstralloc("Invalid command: ", (yyvsp[(1) - (2)].strval), NULL);
1987             yyerror(errstr);
1988             amfree(errstr);
1989             YYERROR;
1990         }
1991     break;
1992
1993   case 97:
1994 #line 267 "uparse.y"
1995     { add_property_value((yyvsp[(1) - (2)].strval)); amfree( (yyvsp[(1) - (2)].strval)); }
1996     break;
1997
1998   case 98:
1999 #line 268 "uparse.y"
2000     { ; }
2001     break;
2002
2003   case 99:
2004 #line 272 "uparse.y"
2005     { amfree((yyvsp[(1) - (2)].strval)); }
2006     break;
2007
2008   case 100:
2009 #line 276 "uparse.y"
2010     { amfree((yyvsp[(1) - (2)].strval)); }
2011     break;
2012
2013   case 101:
2014 #line 277 "uparse.y"
2015     { ; }
2016     break;
2017
2018
2019 /* Line 1267 of yacc.c.  */
2020 #line 2021 "uparse.c"
2021       default: break;
2022     }
2023   YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
2024
2025   YYPOPSTACK (yylen);
2026   yylen = 0;
2027   YY_STACK_PRINT (yyss, yyssp);
2028
2029   *++yyvsp = yyval;
2030
2031
2032   /* Now `shift' the result of the reduction.  Determine what state
2033      that goes to, based on the state we popped back to and the rule
2034      number reduced by.  */
2035
2036   yyn = yyr1[yyn];
2037
2038   yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
2039   if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
2040     yystate = yytable[yystate];
2041   else
2042     yystate = yydefgoto[yyn - YYNTOKENS];
2043
2044   goto yynewstate;
2045
2046
2047 /*------------------------------------.
2048 | yyerrlab -- here on detecting error |
2049 `------------------------------------*/
2050 yyerrlab:
2051   /* If not already recovering from an error, report this error.  */
2052   if (!yyerrstatus)
2053     {
2054       ++yynerrs;
2055 #if ! YYERROR_VERBOSE
2056       yyerror (YY_("syntax error"));
2057 #else
2058       {
2059         YYSIZE_T yysize = yysyntax_error (0, yystate, yychar);
2060         if (yymsg_alloc < yysize && yymsg_alloc < YYSTACK_ALLOC_MAXIMUM)
2061           {
2062             YYSIZE_T yyalloc = 2 * yysize;
2063             if (! (yysize <= yyalloc && yyalloc <= YYSTACK_ALLOC_MAXIMUM))
2064               yyalloc = YYSTACK_ALLOC_MAXIMUM;
2065             if (yymsg != yymsgbuf)
2066               YYSTACK_FREE (yymsg);
2067             yymsg = (char *) YYSTACK_ALLOC (yyalloc);
2068             if (yymsg)
2069               yymsg_alloc = yyalloc;
2070             else
2071               {
2072                 yymsg = yymsgbuf;
2073                 yymsg_alloc = sizeof yymsgbuf;
2074               }
2075           }
2076
2077         if (0 < yysize && yysize <= yymsg_alloc)
2078           {
2079             (void) yysyntax_error (yymsg, yystate, yychar);
2080             yyerror (yymsg);
2081           }
2082         else
2083           {
2084             yyerror (YY_("syntax error"));
2085             if (yysize != 0)
2086               goto yyexhaustedlab;
2087           }
2088       }
2089 #endif
2090     }
2091
2092
2093
2094   if (yyerrstatus == 3)
2095     {
2096       /* If just tried and failed to reuse look-ahead token after an
2097          error, discard it.  */
2098
2099       if (yychar <= YYEOF)
2100         {
2101           /* Return failure if at end of input.  */
2102           if (yychar == YYEOF)
2103             YYABORT;
2104         }
2105       else
2106         {
2107           yydestruct ("Error: discarding",
2108                       yytoken, &yylval);
2109           yychar = YYEMPTY;
2110         }
2111     }
2112
2113   /* Else will try to reuse look-ahead token after shifting the error
2114      token.  */
2115   goto yyerrlab1;
2116
2117
2118 /*---------------------------------------------------.
2119 | yyerrorlab -- error raised explicitly by YYERROR.  |
2120 `---------------------------------------------------*/
2121 yyerrorlab:
2122
2123   /* Pacify compilers like GCC when the user code never invokes
2124      YYERROR and the label yyerrorlab therefore never appears in user
2125      code.  */
2126   if (/*CONSTCOND*/ 0)
2127      goto yyerrorlab;
2128
2129   /* Do not reclaim the symbols of the rule which action triggered
2130      this YYERROR.  */
2131   YYPOPSTACK (yylen);
2132   yylen = 0;
2133   YY_STACK_PRINT (yyss, yyssp);
2134   yystate = *yyssp;
2135   goto yyerrlab1;
2136
2137
2138 /*-------------------------------------------------------------.
2139 | yyerrlab1 -- common code for both syntax error and YYERROR.  |
2140 `-------------------------------------------------------------*/
2141 yyerrlab1:
2142   yyerrstatus = 3;      /* Each real token shifted decrements this.  */
2143
2144   for (;;)
2145     {
2146       yyn = yypact[yystate];
2147       if (yyn != YYPACT_NINF)
2148         {
2149           yyn += YYTERROR;
2150           if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
2151             {
2152               yyn = yytable[yyn];
2153               if (0 < yyn)
2154                 break;
2155             }
2156         }
2157
2158       /* Pop the current state because it cannot handle the error token.  */
2159       if (yyssp == yyss)
2160         YYABORT;
2161
2162
2163       yydestruct ("Error: popping",
2164                   yystos[yystate], yyvsp);
2165       YYPOPSTACK (1);
2166       yystate = *yyssp;
2167       YY_STACK_PRINT (yyss, yyssp);
2168     }
2169
2170   if (yyn == YYFINAL)
2171     YYACCEPT;
2172
2173   *++yyvsp = yylval;
2174
2175
2176   /* Shift the error token.  */
2177   YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp);
2178
2179   yystate = yyn;
2180   goto yynewstate;
2181
2182
2183 /*-------------------------------------.
2184 | yyacceptlab -- YYACCEPT comes here.  |
2185 `-------------------------------------*/
2186 yyacceptlab:
2187   yyresult = 0;
2188   goto yyreturn;
2189
2190 /*-----------------------------------.
2191 | yyabortlab -- YYABORT comes here.  |
2192 `-----------------------------------*/
2193 yyabortlab:
2194   yyresult = 1;
2195   goto yyreturn;
2196
2197 #ifndef yyoverflow
2198 /*-------------------------------------------------.
2199 | yyexhaustedlab -- memory exhaustion comes here.  |
2200 `-------------------------------------------------*/
2201 yyexhaustedlab:
2202   yyerror (YY_("memory exhausted"));
2203   yyresult = 2;
2204   /* Fall through.  */
2205 #endif
2206
2207 yyreturn:
2208   if (yychar != YYEOF && yychar != YYEMPTY)
2209      yydestruct ("Cleanup: discarding lookahead",
2210                  yytoken, &yylval);
2211   /* Do not reclaim the symbols of the rule which action triggered
2212      this YYABORT or YYACCEPT.  */
2213   YYPOPSTACK (yylen);
2214   YY_STACK_PRINT (yyss, yyssp);
2215   while (yyssp != yyss)
2216     {
2217       yydestruct ("Cleanup: popping",
2218                   yystos[*yyssp], yyvsp);
2219       YYPOPSTACK (1);
2220     }
2221 #ifndef yyoverflow
2222   if (yyss != yyssa)
2223     YYSTACK_FREE (yyss);
2224 #endif
2225 #if YYERROR_VERBOSE
2226   if (yymsg != yymsgbuf)
2227     YYSTACK_FREE (yymsg);
2228 #endif
2229   /* Make sure YYID is used.  */
2230   return YYID (yyresult);
2231 }
2232
2233
2234 #line 280 "uparse.y"
2235
2236
2237 void
2238 yyerror(
2239     char *      s)
2240 {
2241         g_printf("%s\n", s);
2242 }
2243