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