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