blob: 61d4a5d09856a6f90cc29c85f066b361bbc7c8ea [file] [log] [blame]
Arnaud Lacombe58ef81c2011-05-23 01:52:59 -04001/* A Bison parser, made by GNU Bison 2.4.3. */
Linus Torvalds1da177e2005-04-16 15:20:36 -07002
Sam Ravnborg70f75242007-09-01 10:26:32 +02003/* Skeleton implementation for Bison's Yacc-like parsers in C
Michal Marek303fc012011-02-15 16:04:35 +01004
Arnaud Lacombe58ef81c2011-05-23 01:52:59 -04005 Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
6 2009, 2010 Free Software Foundation, Inc.
Michal Marek303fc012011-02-15 16:04:35 +01007
8 This program is free software: you can redistribute it and/or modify
Sam Ravnborgc40f5642005-12-26 22:53:25 +01009 it under the terms of the GNU General Public License as published by
Michal Marek303fc012011-02-15 16:04:35 +010010 the Free Software Foundation, either version 3 of the License, or
11 (at your option) any later version.
12
Sam Ravnborgc40f5642005-12-26 22:53:25 +010013 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.
Michal Marek303fc012011-02-15 16:04:35 +010017
Sam Ravnborgc40f5642005-12-26 22:53:25 +010018 You should have received a copy of the GNU General Public License
Michal Marek303fc012011-02-15 16:04:35 +010019 along with this program. If not, see <http://www.gnu.org/licenses/>. */
Sam Ravnborgc40f5642005-12-26 22:53:25 +010020
Sam Ravnborg70f75242007-09-01 10:26:32 +020021/* As a special exception, you may create a larger work that contains
22 part or all of the Bison parser skeleton and distribute that work
23 under terms of your choice, so long as that work isn't itself a
24 parser generator using the skeleton or a modified version thereof
25 as a parser skeleton. Alternatively, if you modify or redistribute
26 the parser skeleton itself, you may (at your option) remove this
27 special exception, which will cause the skeleton and the resulting
28 Bison output files to be licensed under the GNU General Public
29 License without this special exception.
Michal Marek303fc012011-02-15 16:04:35 +010030
Sam Ravnborg70f75242007-09-01 10:26:32 +020031 This special exception was added by the Free Software Foundation in
32 version 2.2 of Bison. */
33
34/* C LALR(1) parser skeleton written by Richard Stallman, by
35 simplifying the original so-called "semantic" parser. */
Sam Ravnborgc40f5642005-12-26 22:53:25 +010036
37/* All symbols defined below should begin with yy or YY, to avoid
38 infringing on user name space. This should be done even for local
39 variables, as they might otherwise be expanded by user macros.
40 There are some unavoidable exceptions within include files to
41 define necessary library symbols; they are noted "INFRINGES ON
42 USER NAME SPACE" below. */
43
44/* Identify Bison output. */
45#define YYBISON 1
46
Sam Ravnborg70f75242007-09-01 10:26:32 +020047/* Bison version. */
Arnaud Lacombe58ef81c2011-05-23 01:52:59 -040048#define YYBISON_VERSION "2.4.3"
Sam Ravnborg70f75242007-09-01 10:26:32 +020049
Sam Ravnborgc40f5642005-12-26 22:53:25 +010050/* Skeleton name. */
51#define YYSKELETON_NAME "yacc.c"
52
53/* Pure parsers. */
54#define YYPURE 0
55
Michal Marek303fc012011-02-15 16:04:35 +010056/* Push parsers. */
57#define YYPUSH 0
58
59/* Pull parsers. */
60#define YYPULL 1
61
Sam Ravnborgc40f5642005-12-26 22:53:25 +010062/* Using locations. */
63#define YYLSP_NEEDED 0
64
65
66
Michal Marek303fc012011-02-15 16:04:35 +010067/* Copy the first part of user declarations. */
68
Michal Marek303fc012011-02-15 16:04:35 +010069
70
71#include <assert.h>
72#include <stdlib.h>
73#include <string.h>
74#include "genksyms.h"
75
76static int is_typedef;
77static int is_extern;
78static char *current_name;
79static struct string_list *decl_spec;
80
81static void yyerror(const char *);
82
83static inline void
84remove_node(struct string_list **p)
85{
86 struct string_list *node = *p;
87 *p = node->next;
88 free_node(node);
89}
90
91static inline void
92remove_list(struct string_list **pb, struct string_list **pe)
93{
94 struct string_list *b = *pb, *e = *pe;
95 *pb = e;
96 free_list(b, e);
97}
98
99
100
Michal Marek303fc012011-02-15 16:04:35 +0100101
102/* Enabling traces. */
103#ifndef YYDEBUG
104# define YYDEBUG 1
105#endif
106
107/* Enabling verbose error messages. */
108#ifdef YYERROR_VERBOSE
109# undef YYERROR_VERBOSE
110# define YYERROR_VERBOSE 1
111#else
112# define YYERROR_VERBOSE 0
113#endif
114
115/* Enabling the token table. */
116#ifndef YYTOKEN_TABLE
117# define YYTOKEN_TABLE 0
118#endif
119
120
Sam Ravnborgc40f5642005-12-26 22:53:25 +0100121/* Tokens. */
122#ifndef YYTOKENTYPE
123# define YYTOKENTYPE
124 /* Put the tokens into the symbol table, so that GDB and other debuggers
125 know about them. */
126 enum yytokentype {
127 ASM_KEYW = 258,
128 ATTRIBUTE_KEYW = 259,
129 AUTO_KEYW = 260,
130 BOOL_KEYW = 261,
131 CHAR_KEYW = 262,
132 CONST_KEYW = 263,
133 DOUBLE_KEYW = 264,
134 ENUM_KEYW = 265,
135 EXTERN_KEYW = 266,
Sam Ravnborg70f75242007-09-01 10:26:32 +0200136 EXTENSION_KEYW = 267,
137 FLOAT_KEYW = 268,
138 INLINE_KEYW = 269,
139 INT_KEYW = 270,
140 LONG_KEYW = 271,
141 REGISTER_KEYW = 272,
142 RESTRICT_KEYW = 273,
143 SHORT_KEYW = 274,
144 SIGNED_KEYW = 275,
145 STATIC_KEYW = 276,
146 STRUCT_KEYW = 277,
147 TYPEDEF_KEYW = 278,
148 UNION_KEYW = 279,
149 UNSIGNED_KEYW = 280,
150 VOID_KEYW = 281,
151 VOLATILE_KEYW = 282,
152 TYPEOF_KEYW = 283,
153 EXPORT_SYMBOL_KEYW = 284,
154 ASM_PHRASE = 285,
155 ATTRIBUTE_PHRASE = 286,
156 BRACE_PHRASE = 287,
157 BRACKET_PHRASE = 288,
158 EXPRESSION_PHRASE = 289,
159 CHAR = 290,
160 DOTS = 291,
161 IDENT = 292,
162 INT = 293,
163 REAL = 294,
164 STRING = 295,
165 TYPE = 296,
166 OTHER = 297,
167 FILENAME = 298
Sam Ravnborgc40f5642005-12-26 22:53:25 +0100168 };
169#endif
Sam Ravnborgc40f5642005-12-26 22:53:25 +0100170
171
172
Sam Ravnborg70f75242007-09-01 10:26:32 +0200173#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
Sam Ravnborgc40f5642005-12-26 22:53:25 +0100174typedef int YYSTYPE;
Michal Marek303fc012011-02-15 16:04:35 +0100175# define YYSTYPE_IS_TRIVIAL 1
Sam Ravnborgc40f5642005-12-26 22:53:25 +0100176# define yystype YYSTYPE /* obsolescent; will be withdrawn */
177# define YYSTYPE_IS_DECLARED 1
Sam Ravnborgc40f5642005-12-26 22:53:25 +0100178#endif
179
180
Sam Ravnborgc40f5642005-12-26 22:53:25 +0100181/* Copy the second part of user declarations. */
182
183
Sam Ravnborgc40f5642005-12-26 22:53:25 +0100184
Sam Ravnborg70f75242007-09-01 10:26:32 +0200185#ifdef short
186# undef short
187#endif
Sam Ravnborgc40f5642005-12-26 22:53:25 +0100188
Sam Ravnborg70f75242007-09-01 10:26:32 +0200189#ifdef YYTYPE_UINT8
190typedef YYTYPE_UINT8 yytype_uint8;
191#else
192typedef unsigned char yytype_uint8;
193#endif
194
195#ifdef YYTYPE_INT8
196typedef YYTYPE_INT8 yytype_int8;
197#elif (defined __STDC__ || defined __C99__FUNC__ \
198 || defined __cplusplus || defined _MSC_VER)
199typedef signed char yytype_int8;
200#else
201typedef short int yytype_int8;
202#endif
203
204#ifdef YYTYPE_UINT16
205typedef YYTYPE_UINT16 yytype_uint16;
206#else
207typedef unsigned short int yytype_uint16;
208#endif
209
210#ifdef YYTYPE_INT16
211typedef YYTYPE_INT16 yytype_int16;
212#else
213typedef short int yytype_int16;
214#endif
215
216#ifndef YYSIZE_T
217# ifdef __SIZE_TYPE__
218# define YYSIZE_T __SIZE_TYPE__
219# elif defined size_t
220# define YYSIZE_T size_t
221# elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \
222 || defined __cplusplus || defined _MSC_VER)
223# include <stddef.h> /* INFRINGES ON USER NAME SPACE */
224# define YYSIZE_T size_t
225# else
226# define YYSIZE_T unsigned int
Sam Ravnborgc40f5642005-12-26 22:53:25 +0100227# endif
Sam Ravnborg70f75242007-09-01 10:26:32 +0200228#endif
229
230#define YYSIZE_MAXIMUM ((YYSIZE_T) -1)
231
232#ifndef YY_
Arnaud Lacombe58ef81c2011-05-23 01:52:59 -0400233# if defined YYENABLE_NLS && YYENABLE_NLS
Sam Ravnborg70f75242007-09-01 10:26:32 +0200234# if ENABLE_NLS
235# include <libintl.h> /* INFRINGES ON USER NAME SPACE */
236# define YY_(msgid) dgettext ("bison-runtime", msgid)
237# endif
Sam Ravnborgc40f5642005-12-26 22:53:25 +0100238# endif
Sam Ravnborg70f75242007-09-01 10:26:32 +0200239# ifndef YY_
240# define YY_(msgid) msgid
241# endif
242#endif
243
244/* Suppress unused-variable warnings by "using" E. */
245#if ! defined lint || defined __GNUC__
246# define YYUSE(e) ((void) (e))
247#else
248# define YYUSE(e) /* empty */
249#endif
250
251/* Identity function, used to suppress warnings about constant conditions. */
252#ifndef lint
253# define YYID(n) (n)
254#else
255#if (defined __STDC__ || defined __C99__FUNC__ \
256 || defined __cplusplus || defined _MSC_VER)
257static int
Michal Marek303fc012011-02-15 16:04:35 +0100258YYID (int yyi)
Sam Ravnborg70f75242007-09-01 10:26:32 +0200259#else
260static int
Michal Marek303fc012011-02-15 16:04:35 +0100261YYID (yyi)
262 int yyi;
Sam Ravnborg70f75242007-09-01 10:26:32 +0200263#endif
264{
Michal Marek303fc012011-02-15 16:04:35 +0100265 return yyi;
Sam Ravnborg70f75242007-09-01 10:26:32 +0200266}
267#endif
268
269#if ! defined yyoverflow || YYERROR_VERBOSE
Sam Ravnborgc40f5642005-12-26 22:53:25 +0100270
271/* The parser invokes alloca or malloc; define the necessary symbols. */
272
273# ifdef YYSTACK_USE_ALLOCA
274# if YYSTACK_USE_ALLOCA
275# ifdef __GNUC__
276# define YYSTACK_ALLOC __builtin_alloca
Sam Ravnborg70f75242007-09-01 10:26:32 +0200277# elif defined __BUILTIN_VA_ARG_INCR
278# include <alloca.h> /* INFRINGES ON USER NAME SPACE */
279# elif defined _AIX
280# define YYSTACK_ALLOC __alloca
281# elif defined _MSC_VER
282# include <malloc.h> /* INFRINGES ON USER NAME SPACE */
283# define alloca _alloca
Sam Ravnborgc40f5642005-12-26 22:53:25 +0100284# else
285# define YYSTACK_ALLOC alloca
Sam Ravnborg70f75242007-09-01 10:26:32 +0200286# if ! defined _ALLOCA_H && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
287 || defined __cplusplus || defined _MSC_VER)
288# include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
289# ifndef _STDLIB_H
290# define _STDLIB_H 1
291# endif
292# endif
Sam Ravnborgc40f5642005-12-26 22:53:25 +0100293# endif
294# endif
295# endif
296
297# ifdef YYSTACK_ALLOC
Sam Ravnborg70f75242007-09-01 10:26:32 +0200298 /* Pacify GCC's `empty if-body' warning. */
299# define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0))
300# ifndef YYSTACK_ALLOC_MAXIMUM
301 /* The OS might guarantee only one guard page at the bottom of the stack,
302 and a page size can be as small as 4096 bytes. So we cannot safely
303 invoke alloca (N) if N exceeds 4096. Use a slightly smaller number
304 to allow for a few compiler-allocated temporary stack slots. */
305# define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */
Sam Ravnborgc40f5642005-12-26 22:53:25 +0100306# endif
Sam Ravnborg70f75242007-09-01 10:26:32 +0200307# else
Sam Ravnborgc40f5642005-12-26 22:53:25 +0100308# define YYSTACK_ALLOC YYMALLOC
309# define YYSTACK_FREE YYFREE
Sam Ravnborg70f75242007-09-01 10:26:32 +0200310# ifndef YYSTACK_ALLOC_MAXIMUM
311# define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
312# endif
313# if (defined __cplusplus && ! defined _STDLIB_H \
314 && ! ((defined YYMALLOC || defined malloc) \
315 && (defined YYFREE || defined free)))
316# include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
317# ifndef _STDLIB_H
318# define _STDLIB_H 1
319# endif
320# endif
321# ifndef YYMALLOC
322# define YYMALLOC malloc
323# if ! defined malloc && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
324 || defined __cplusplus || defined _MSC_VER)
325void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
326# endif
327# endif
328# ifndef YYFREE
329# define YYFREE free
330# if ! defined free && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
331 || defined __cplusplus || defined _MSC_VER)
332void free (void *); /* INFRINGES ON USER NAME SPACE */
333# endif
334# endif
Sam Ravnborgc40f5642005-12-26 22:53:25 +0100335# endif
Sam Ravnborg70f75242007-09-01 10:26:32 +0200336#endif /* ! defined yyoverflow || YYERROR_VERBOSE */
Sam Ravnborgc40f5642005-12-26 22:53:25 +0100337
338
Sam Ravnborg70f75242007-09-01 10:26:32 +0200339#if (! defined yyoverflow \
340 && (! defined __cplusplus \
341 || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
Sam Ravnborgc40f5642005-12-26 22:53:25 +0100342
343/* A type that is properly aligned for any stack member. */
344union yyalloc
345{
Michal Marek303fc012011-02-15 16:04:35 +0100346 yytype_int16 yyss_alloc;
347 YYSTYPE yyvs_alloc;
348};
Sam Ravnborgc40f5642005-12-26 22:53:25 +0100349
350/* The size of the maximum gap between one aligned stack and the next. */
351# define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
352
353/* The size of an array large to enough to hold all stacks, each with
354 N elements. */
355# define YYSTACK_BYTES(N) \
Sam Ravnborg70f75242007-09-01 10:26:32 +0200356 ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \
Sam Ravnborgc40f5642005-12-26 22:53:25 +0100357 + YYSTACK_GAP_MAXIMUM)
358
359/* Copy COUNT objects from FROM to TO. The source and destination do
360 not overlap. */
361# ifndef YYCOPY
Sam Ravnborg70f75242007-09-01 10:26:32 +0200362# if defined __GNUC__ && 1 < __GNUC__
Sam Ravnborgc40f5642005-12-26 22:53:25 +0100363# define YYCOPY(To, From, Count) \
364 __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
365# else
366# define YYCOPY(To, From, Count) \
367 do \
368 { \
Sam Ravnborg70f75242007-09-01 10:26:32 +0200369 YYSIZE_T yyi; \
Sam Ravnborgc40f5642005-12-26 22:53:25 +0100370 for (yyi = 0; yyi < (Count); yyi++) \
371 (To)[yyi] = (From)[yyi]; \
372 } \
Sam Ravnborg70f75242007-09-01 10:26:32 +0200373 while (YYID (0))
Sam Ravnborgc40f5642005-12-26 22:53:25 +0100374# endif
375# endif
376
377/* Relocate STACK from its old location to the new one. The
378 local variables YYSIZE and YYSTACKSIZE give the old and new number of
379 elements in the stack, and YYPTR gives the new location of the
380 stack. Advance YYPTR to a properly aligned location for the next
381 stack. */
Michal Marek303fc012011-02-15 16:04:35 +0100382# define YYSTACK_RELOCATE(Stack_alloc, Stack) \
Sam Ravnborgc40f5642005-12-26 22:53:25 +0100383 do \
384 { \
385 YYSIZE_T yynewbytes; \
Michal Marek303fc012011-02-15 16:04:35 +0100386 YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \
387 Stack = &yyptr->Stack_alloc; \
Sam Ravnborgc40f5642005-12-26 22:53:25 +0100388 yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
389 yyptr += yynewbytes / sizeof (*yyptr); \
390 } \
Sam Ravnborg70f75242007-09-01 10:26:32 +0200391 while (YYID (0))
Sam Ravnborgc40f5642005-12-26 22:53:25 +0100392
393#endif
394
Sam Ravnborg70f75242007-09-01 10:26:32 +0200395/* YYFINAL -- State number of the termination state. */
Sam Ravnborgc40f5642005-12-26 22:53:25 +0100396#define YYFINAL 4
397/* YYLAST -- Last index in YYTABLE. */
Michal Marek303fc012011-02-15 16:04:35 +0100398#define YYLAST 532
Sam Ravnborgc40f5642005-12-26 22:53:25 +0100399
Sam Ravnborg70f75242007-09-01 10:26:32 +0200400/* YYNTOKENS -- Number of terminals. */
401#define YYNTOKENS 53
402/* YYNNTS -- Number of nonterminals. */
Michal Marek303fc012011-02-15 16:04:35 +0100403#define YYNNTS 49
Sam Ravnborg70f75242007-09-01 10:26:32 +0200404/* YYNRULES -- Number of rules. */
Michal Marek303fc012011-02-15 16:04:35 +0100405#define YYNRULES 132
Sam Ravnborg70f75242007-09-01 10:26:32 +0200406/* YYNRULES -- Number of states. */
Michal Marek303fc012011-02-15 16:04:35 +0100407#define YYNSTATES 188
Sam Ravnborgc40f5642005-12-26 22:53:25 +0100408
409/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */
410#define YYUNDEFTOK 2
Sam Ravnborg70f75242007-09-01 10:26:32 +0200411#define YYMAXUTOK 298
Sam Ravnborgc40f5642005-12-26 22:53:25 +0100412
Sam Ravnborg70f75242007-09-01 10:26:32 +0200413#define YYTRANSLATE(YYX) \
Sam Ravnborgc40f5642005-12-26 22:53:25 +0100414 ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
415
416/* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX. */
Sam Ravnborg70f75242007-09-01 10:26:32 +0200417static const yytype_uint8 yytranslate[] =
Sam Ravnborgc40f5642005-12-26 22:53:25 +0100418{
419 0, 2, 2, 2, 2, 2, 2, 2, 2, 2,
420 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
421 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
422 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
Sam Ravnborg70f75242007-09-01 10:26:32 +0200423 47, 49, 48, 2, 46, 2, 2, 2, 2, 2,
424 2, 2, 2, 2, 2, 2, 2, 2, 52, 44,
425 2, 50, 2, 2, 2, 2, 2, 2, 2, 2,
Sam Ravnborgc40f5642005-12-26 22:53:25 +0100426 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,
Sam Ravnborg70f75242007-09-01 10:26:32 +0200431 2, 2, 2, 51, 2, 45, 2, 2, 2, 2,
Sam Ravnborgc40f5642005-12-26 22:53:25 +0100432 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, 1, 2, 3, 4,
445 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
446 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
447 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
Sam Ravnborg70f75242007-09-01 10:26:32 +0200448 35, 36, 37, 38, 39, 40, 41, 42, 43
Sam Ravnborgc40f5642005-12-26 22:53:25 +0100449};
450
451#if YYDEBUG
452/* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
453 YYRHS. */
Sam Ravnborg70f75242007-09-01 10:26:32 +0200454static const yytype_uint16 yyprhs[] =
Sam Ravnborgc40f5642005-12-26 22:53:25 +0100455{
Sam Ravnborg70f75242007-09-01 10:26:32 +0200456 0, 0, 3, 5, 8, 9, 12, 13, 18, 19,
457 23, 25, 27, 29, 31, 34, 37, 41, 42, 44,
458 46, 50, 55, 56, 58, 60, 63, 65, 67, 69,
459 71, 73, 75, 77, 79, 81, 87, 92, 95, 98,
460 101, 105, 109, 113, 116, 119, 122, 124, 126, 128,
461 130, 132, 134, 136, 138, 140, 142, 144, 147, 148,
462 150, 152, 155, 157, 159, 161, 163, 166, 168, 170,
463 175, 180, 183, 187, 191, 194, 196, 198, 200, 205,
464 210, 213, 217, 221, 224, 226, 230, 231, 233, 235,
465 239, 242, 245, 247, 248, 250, 252, 257, 262, 265,
466 269, 273, 277, 278, 280, 283, 287, 291, 292, 294,
467 296, 299, 303, 306, 307, 309, 311, 315, 318, 321,
Michal Marek303fc012011-02-15 16:04:35 +0100468 323, 326, 327, 330, 334, 339, 341, 345, 347, 351,
469 354, 355, 357
Sam Ravnborgc40f5642005-12-26 22:53:25 +0100470};
471
Sam Ravnborg70f75242007-09-01 10:26:32 +0200472/* YYRHS -- A `-1'-separated list of the rules' RHS. */
473static const yytype_int8 yyrhs[] =
Sam Ravnborgc40f5642005-12-26 22:53:25 +0100474{
Sam Ravnborg70f75242007-09-01 10:26:32 +0200475 54, 0, -1, 55, -1, 54, 55, -1, -1, 56,
476 57, -1, -1, 12, 23, 58, 60, -1, -1, 23,
Michal Marek303fc012011-02-15 16:04:35 +0100477 59, 60, -1, 60, -1, 84, -1, 99, -1, 101,
Sam Ravnborg70f75242007-09-01 10:26:32 +0200478 -1, 1, 44, -1, 1, 45, -1, 64, 61, 44,
479 -1, -1, 62, -1, 63, -1, 62, 46, 63, -1,
Michal Marek303fc012011-02-15 16:04:35 +0100480 74, 100, 95, 85, -1, -1, 65, -1, 66, -1,
Sam Ravnborg70f75242007-09-01 10:26:32 +0200481 65, 66, -1, 67, -1, 68, -1, 5, -1, 17,
482 -1, 21, -1, 11, -1, 14, -1, 69, -1, 73,
483 -1, 28, 47, 65, 48, 49, -1, 28, 47, 65,
484 49, -1, 22, 37, -1, 24, 37, -1, 10, 37,
485 -1, 22, 37, 87, -1, 24, 37, 87, -1, 10,
Michal Marek303fc012011-02-15 16:04:35 +0100486 37, 96, -1, 10, 96, -1, 22, 87, -1, 24,
Sam Ravnborg70f75242007-09-01 10:26:32 +0200487 87, -1, 7, -1, 19, -1, 15, -1, 16, -1,
488 20, -1, 25, -1, 13, -1, 9, -1, 26, -1,
489 6, -1, 41, -1, 48, 71, -1, -1, 72, -1,
490 73, -1, 72, 73, -1, 8, -1, 27, -1, 31,
491 -1, 18, -1, 70, 74, -1, 75, -1, 37, -1,
492 75, 47, 78, 49, -1, 75, 47, 1, 49, -1,
493 75, 33, -1, 47, 74, 49, -1, 47, 1, 49,
494 -1, 70, 76, -1, 77, -1, 37, -1, 41, -1,
495 77, 47, 78, 49, -1, 77, 47, 1, 49, -1,
496 77, 33, -1, 47, 76, 49, -1, 47, 1, 49,
497 -1, 79, 36, -1, 79, -1, 80, 46, 36, -1,
498 -1, 80, -1, 81, -1, 80, 46, 81, -1, 65,
499 82, -1, 70, 82, -1, 83, -1, -1, 37, -1,
500 41, -1, 83, 47, 78, 49, -1, 83, 47, 1,
501 49, -1, 83, 33, -1, 47, 82, 49, -1, 47,
502 1, 49, -1, 64, 74, 32, -1, -1, 86, -1,
503 50, 34, -1, 51, 88, 45, -1, 51, 1, 45,
504 -1, -1, 89, -1, 90, -1, 89, 90, -1, 64,
505 91, 44, -1, 1, 44, -1, -1, 92, -1, 93,
506 -1, 92, 46, 93, -1, 76, 95, -1, 37, 94,
Andreas Gruenbacher94aa3d72008-07-31 00:03:49 +0200507 -1, 94, -1, 52, 34, -1, -1, 95, 31, -1,
Michal Marek303fc012011-02-15 16:04:35 +0100508 51, 97, 45, -1, 51, 97, 46, 45, -1, 98,
509 -1, 97, 46, 98, -1, 37, -1, 37, 50, 34,
510 -1, 30, 44, -1, -1, 30, -1, 29, 47, 37,
511 49, 44, -1
Sam Ravnborgc40f5642005-12-26 22:53:25 +0100512};
513
514/* YYRLINE[YYN] -- source line where rule number YYN was defined. */
Sam Ravnborg70f75242007-09-01 10:26:32 +0200515static const yytype_uint16 yyrline[] =
Sam Ravnborgc40f5642005-12-26 22:53:25 +0100516{
Michal Marek303fc012011-02-15 16:04:35 +0100517 0, 104, 104, 105, 109, 109, 115, 115, 117, 117,
518 119, 120, 121, 122, 123, 124, 128, 142, 143, 147,
519 155, 168, 174, 175, 179, 180, 184, 190, 194, 195,
520 196, 197, 198, 202, 203, 204, 205, 209, 211, 213,
521 217, 224, 231, 241, 244, 245, 249, 250, 251, 252,
522 253, 254, 255, 256, 257, 258, 259, 263, 268, 269,
523 273, 274, 278, 278, 278, 279, 287, 288, 292, 301,
524 303, 305, 307, 309, 316, 317, 321, 322, 323, 325,
525 327, 329, 331, 336, 337, 338, 342, 343, 347, 348,
526 353, 358, 360, 364, 365, 373, 377, 379, 381, 383,
527 385, 390, 399, 400, 405, 410, 411, 415, 416, 420,
528 421, 425, 427, 432, 433, 437, 438, 442, 443, 444,
529 448, 452, 453, 457, 458, 462, 463, 466, 471, 479,
530 483, 484, 488
Sam Ravnborgc40f5642005-12-26 22:53:25 +0100531};
532#endif
533
Sam Ravnborg70f75242007-09-01 10:26:32 +0200534#if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE
535/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
536 First, the terminals, then, starting at YYNTOKENS, nonterminals. */
Sam Ravnborgc40f5642005-12-26 22:53:25 +0100537static const char *const yytname[] =
538{
539 "$end", "error", "$undefined", "ASM_KEYW", "ATTRIBUTE_KEYW",
540 "AUTO_KEYW", "BOOL_KEYW", "CHAR_KEYW", "CONST_KEYW", "DOUBLE_KEYW",
Sam Ravnborg70f75242007-09-01 10:26:32 +0200541 "ENUM_KEYW", "EXTERN_KEYW", "EXTENSION_KEYW", "FLOAT_KEYW",
542 "INLINE_KEYW", "INT_KEYW", "LONG_KEYW", "REGISTER_KEYW", "RESTRICT_KEYW",
543 "SHORT_KEYW", "SIGNED_KEYW", "STATIC_KEYW", "STRUCT_KEYW",
544 "TYPEDEF_KEYW", "UNION_KEYW", "UNSIGNED_KEYW", "VOID_KEYW",
545 "VOLATILE_KEYW", "TYPEOF_KEYW", "EXPORT_SYMBOL_KEYW", "ASM_PHRASE",
546 "ATTRIBUTE_PHRASE", "BRACE_PHRASE", "BRACKET_PHRASE",
547 "EXPRESSION_PHRASE", "CHAR", "DOTS", "IDENT", "INT", "REAL", "STRING",
548 "TYPE", "OTHER", "FILENAME", "';'", "'}'", "','", "'('", "'*'", "')'",
Michal Marek303fc012011-02-15 16:04:35 +0100549 "'='", "'{'", "':'", "$accept", "declaration_seq", "declaration", "$@1",
550 "declaration1", "$@2", "$@3", "simple_declaration",
Sam Ravnborg70f75242007-09-01 10:26:32 +0200551 "init_declarator_list_opt", "init_declarator_list", "init_declarator",
552 "decl_specifier_seq_opt", "decl_specifier_seq", "decl_specifier",
553 "storage_class_specifier", "type_specifier", "simple_type_specifier",
554 "ptr_operator", "cvar_qualifier_seq_opt", "cvar_qualifier_seq",
555 "cvar_qualifier", "declarator", "direct_declarator", "nested_declarator",
556 "direct_nested_declarator", "parameter_declaration_clause",
557 "parameter_declaration_list_opt", "parameter_declaration_list",
558 "parameter_declaration", "m_abstract_declarator",
559 "direct_m_abstract_declarator", "function_definition", "initializer_opt",
560 "initializer", "class_body", "member_specification_opt",
561 "member_specification", "member_declaration",
Sam Ravnborgc40f5642005-12-26 22:53:25 +0100562 "member_declarator_list_opt", "member_declarator_list",
563 "member_declarator", "member_bitfield_declarator", "attribute_opt",
Michal Marek303fc012011-02-15 16:04:35 +0100564 "enum_body", "enumerator_list", "enumerator", "asm_definition",
565 "asm_phrase_opt", "export_definition", 0
Sam Ravnborgc40f5642005-12-26 22:53:25 +0100566};
567#endif
568
569# ifdef YYPRINT
570/* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to
571 token YYLEX-NUM. */
Sam Ravnborg70f75242007-09-01 10:26:32 +0200572static const yytype_uint16 yytoknum[] =
Sam Ravnborgc40f5642005-12-26 22:53:25 +0100573{
574 0, 256, 257, 258, 259, 260, 261, 262, 263, 264,
575 265, 266, 267, 268, 269, 270, 271, 272, 273, 274,
576 275, 276, 277, 278, 279, 280, 281, 282, 283, 284,
577 285, 286, 287, 288, 289, 290, 291, 292, 293, 294,
Sam Ravnborg70f75242007-09-01 10:26:32 +0200578 295, 296, 297, 298, 59, 125, 44, 40, 42, 41,
579 61, 123, 58
Sam Ravnborgc40f5642005-12-26 22:53:25 +0100580};
581# endif
582
583/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */
Sam Ravnborg70f75242007-09-01 10:26:32 +0200584static const yytype_uint8 yyr1[] =
Sam Ravnborgc40f5642005-12-26 22:53:25 +0100585{
Sam Ravnborg70f75242007-09-01 10:26:32 +0200586 0, 53, 54, 54, 56, 55, 58, 57, 59, 57,
587 57, 57, 57, 57, 57, 57, 60, 61, 61, 62,
588 62, 63, 64, 64, 65, 65, 66, 66, 67, 67,
589 67, 67, 67, 68, 68, 68, 68, 68, 68, 68,
590 68, 68, 68, 68, 68, 68, 69, 69, 69, 69,
591 69, 69, 69, 69, 69, 69, 69, 70, 71, 71,
592 72, 72, 73, 73, 73, 73, 74, 74, 75, 75,
593 75, 75, 75, 75, 76, 76, 77, 77, 77, 77,
594 77, 77, 77, 78, 78, 78, 79, 79, 80, 80,
595 81, 82, 82, 83, 83, 83, 83, 83, 83, 83,
596 83, 84, 85, 85, 86, 87, 87, 88, 88, 89,
597 89, 90, 90, 91, 91, 92, 92, 93, 93, 93,
Michal Marek303fc012011-02-15 16:04:35 +0100598 94, 95, 95, 96, 96, 97, 97, 98, 98, 99,
599 100, 100, 101
Sam Ravnborgc40f5642005-12-26 22:53:25 +0100600};
601
602/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */
Sam Ravnborg70f75242007-09-01 10:26:32 +0200603static const yytype_uint8 yyr2[] =
Sam Ravnborgc40f5642005-12-26 22:53:25 +0100604{
Sam Ravnborg70f75242007-09-01 10:26:32 +0200605 0, 2, 1, 2, 0, 2, 0, 4, 0, 3,
606 1, 1, 1, 1, 2, 2, 3, 0, 1, 1,
607 3, 4, 0, 1, 1, 2, 1, 1, 1, 1,
608 1, 1, 1, 1, 1, 5, 4, 2, 2, 2,
609 3, 3, 3, 2, 2, 2, 1, 1, 1, 1,
610 1, 1, 1, 1, 1, 1, 1, 2, 0, 1,
611 1, 2, 1, 1, 1, 1, 2, 1, 1, 4,
612 4, 2, 3, 3, 2, 1, 1, 1, 4, 4,
613 2, 3, 3, 2, 1, 3, 0, 1, 1, 3,
614 2, 2, 1, 0, 1, 1, 4, 4, 2, 3,
615 3, 3, 0, 1, 2, 3, 3, 0, 1, 1,
616 2, 3, 2, 0, 1, 1, 3, 2, 2, 1,
Michal Marek303fc012011-02-15 16:04:35 +0100617 2, 0, 2, 3, 4, 1, 3, 1, 3, 2,
618 0, 1, 5
Sam Ravnborgc40f5642005-12-26 22:53:25 +0100619};
620
621/* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
622 STATE-NUM when YYTABLE doesn't specify something else to do. Zero
623 means the default is an error. */
Sam Ravnborg70f75242007-09-01 10:26:32 +0200624static const yytype_uint8 yydefact[] =
Sam Ravnborgc40f5642005-12-26 22:53:25 +0100625{
Sam Ravnborg70f75242007-09-01 10:26:32 +0200626 4, 4, 2, 0, 1, 3, 0, 28, 55, 46,
627 62, 53, 0, 31, 0, 52, 32, 48, 49, 29,
628 65, 47, 50, 30, 0, 8, 0, 51, 54, 63,
629 0, 0, 0, 64, 56, 5, 10, 17, 23, 24,
Michal Marek303fc012011-02-15 16:04:35 +0100630 26, 27, 33, 34, 11, 12, 13, 14, 15, 39,
631 0, 43, 6, 37, 0, 44, 22, 38, 45, 0,
632 0, 129, 68, 0, 58, 0, 18, 19, 0, 130,
633 67, 25, 42, 127, 0, 125, 22, 40, 0, 113,
634 0, 0, 109, 9, 17, 41, 0, 0, 0, 0,
635 57, 59, 60, 16, 0, 66, 131, 101, 121, 71,
636 0, 0, 123, 0, 7, 112, 106, 76, 77, 0,
637 0, 0, 121, 75, 0, 114, 115, 119, 105, 0,
638 110, 130, 0, 36, 0, 73, 72, 61, 20, 102,
639 0, 93, 0, 84, 87, 88, 128, 124, 126, 118,
Andreas Gruenbacher94aa3d72008-07-31 00:03:49 +0200640 0, 76, 0, 120, 74, 117, 80, 0, 111, 0,
Michal Marek303fc012011-02-15 16:04:35 +0100641 35, 132, 122, 0, 21, 103, 70, 94, 56, 0,
Sam Ravnborg70f75242007-09-01 10:26:32 +0200642 93, 90, 92, 69, 83, 0, 82, 81, 0, 0,
643 116, 104, 0, 95, 0, 91, 98, 0, 85, 89,
644 79, 78, 100, 99, 0, 0, 97, 96
Sam Ravnborgc40f5642005-12-26 22:53:25 +0100645};
646
Sam Ravnborg70f75242007-09-01 10:26:32 +0200647/* YYDEFGOTO[NTERM-NUM]. */
648static const yytype_int16 yydefgoto[] =
Sam Ravnborgc40f5642005-12-26 22:53:25 +0100649{
Michal Marek303fc012011-02-15 16:04:35 +0100650 -1, 1, 2, 3, 35, 76, 56, 36, 65, 66,
651 67, 79, 38, 39, 40, 41, 42, 68, 90, 91,
652 43, 121, 70, 112, 113, 132, 133, 134, 135, 161,
653 162, 44, 154, 155, 55, 80, 81, 82, 114, 115,
654 116, 117, 129, 51, 74, 75, 45, 98, 46
Sam Ravnborgc40f5642005-12-26 22:53:25 +0100655};
656
657/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
658 STATE-NUM. */
Michal Marek303fc012011-02-15 16:04:35 +0100659#define YYPACT_NINF -135
Sam Ravnborg70f75242007-09-01 10:26:32 +0200660static const yytype_int16 yypact[] =
Sam Ravnborgc40f5642005-12-26 22:53:25 +0100661{
Michal Marek303fc012011-02-15 16:04:35 +0100662 -135, 20, -135, 321, -135, -135, 30, -135, -135, -135,
663 -135, -135, -28, -135, 2, -135, -135, -135, -135, -135,
664 -135, -135, -135, -135, -6, -135, 9, -135, -135, -135,
665 -5, 15, -17, -135, -135, -135, -135, 18, 491, -135,
666 -135, -135, -135, -135, -135, -135, -135, -135, -135, -22,
667 31, -135, -135, 19, 106, -135, 491, 19, -135, 491,
668 50, -135, -135, 11, -3, 51, 57, -135, 18, -14,
669 14, -135, -135, 48, 46, -135, 491, -135, 33, 32,
670 59, 154, -135, -135, 18, -135, 365, 56, 60, 61,
671 -135, -3, -135, -135, 18, -135, -135, -135, -135, -135,
672 202, 74, -135, -23, -135, -135, -135, 77, -135, 16,
673 101, 49, -135, 34, 92, 93, -135, -135, -135, 94,
674 -135, 110, 95, -135, 97, -135, -135, -135, -135, -20,
675 96, 410, 99, 113, 100, -135, -135, -135, -135, -135,
676 103, -135, 107, -135, -135, 111, -135, 239, -135, 32,
677 -135, -135, -135, 123, -135, -135, -135, -135, -135, 3,
678 52, -135, 38, -135, -135, 454, -135, -135, 117, 128,
679 -135, -135, 134, -135, 135, -135, -135, 276, -135, -135,
680 -135, -135, -135, -135, 137, 138, -135, -135
Sam Ravnborgc40f5642005-12-26 22:53:25 +0100681};
682
683/* YYPGOTO[NTERM-NUM]. */
Sam Ravnborg70f75242007-09-01 10:26:32 +0200684static const yytype_int16 yypgoto[] =
Sam Ravnborgc40f5642005-12-26 22:53:25 +0100685{
Michal Marek303fc012011-02-15 16:04:35 +0100686 -135, -135, 187, -135, -135, -135, -135, -50, -135, -135,
687 98, 0, -59, -37, -135, -135, -135, -77, -135, -135,
688 -54, -30, -135, -90, -135, -134, -135, -135, 24, -58,
689 -135, -135, -135, -135, -18, -135, -135, 109, -135, -135,
690 44, 87, 84, 148, -135, 102, -135, -135, -135
Sam Ravnborgc40f5642005-12-26 22:53:25 +0100691};
692
693/* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If
694 positive, shift that token. If negative, reduce the rule which
695 number is the opposite. If zero, do what YYDEFACT says.
696 If YYTABLE_NINF, syntax error. */
Sam Ravnborg70f75242007-09-01 10:26:32 +0200697#define YYTABLE_NINF -109
698static const yytype_int16 yytable[] =
Sam Ravnborgc40f5642005-12-26 22:53:25 +0100699{
Michal Marek303fc012011-02-15 16:04:35 +0100700 86, 71, 111, 37, 172, 10, 83, 69, 58, 49,
701 92, 152, 88, 169, 73, 20, 96, 140, 97, 142,
702 4, 144, 137, 50, 29, 52, 104, 61, 33, 50,
703 153, 53, 111, 89, 111, 77, -93, 127, 95, 85,
704 157, 131, 59, 185, 173, 54, 57, 99, 62, 71,
705 159, 64, -93, 141, 160, 62, 84, 108, 63, 64,
706 54, 100, 60, 109, 64, 63, 64, 146, 73, 107,
707 54, 176, 111, 108, 47, 48, 84, 105, 106, 109,
708 64, 147, 160, 160, 110, 177, 141, 87, 131, 157,
709 108, 102, 103, 173, 71, 93, 109, 64, 101, 159,
710 64, 174, 175, 94, 118, 124, 131, 78, 136, 125,
711 126, 7, 8, 9, 10, 11, 12, 13, 131, 15,
712 16, 17, 18, 19, 20, 21, 22, 23, 24, 110,
713 26, 27, 28, 29, 30, 143, 148, 33, 105, 149,
714 96, 151, 152, -22, 150, 156, 165, 34, 163, 164,
715 -22, -107, 166, -22, -22, 119, 167, 171, -22, 7,
716 8, 9, 10, 11, 12, 13, 180, 15, 16, 17,
717 18, 19, 20, 21, 22, 23, 24, 181, 26, 27,
718 28, 29, 30, 182, 183, 33, 186, 187, 5, 179,
719 120, -22, 128, 170, 139, 34, 145, 72, -22, -108,
720 0, -22, -22, 130, 0, 138, -22, 7, 8, 9,
721 10, 11, 12, 13, 0, 15, 16, 17, 18, 19,
722 20, 21, 22, 23, 24, 0, 26, 27, 28, 29,
723 30, 0, 0, 33, 0, 0, 0, 0, -86, 0,
724 168, 0, 0, 34, 7, 8, 9, 10, 11, 12,
725 13, -86, 15, 16, 17, 18, 19, 20, 21, 22,
726 23, 24, 0, 26, 27, 28, 29, 30, 0, 0,
727 33, 0, 0, 0, 0, -86, 0, 184, 0, 0,
728 34, 7, 8, 9, 10, 11, 12, 13, -86, 15,
Sam Ravnborg70f75242007-09-01 10:26:32 +0200729 16, 17, 18, 19, 20, 21, 22, 23, 24, 0,
730 26, 27, 28, 29, 30, 0, 0, 33, 0, 0,
Michal Marek303fc012011-02-15 16:04:35 +0100731 0, 0, -86, 0, 0, 0, 0, 34, 0, 0,
732 0, 0, 6, 0, 0, -86, 7, 8, 9, 10,
733 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
734 21, 22, 23, 24, 25, 26, 27, 28, 29, 30,
735 31, 32, 33, 0, 0, 0, 0, 0, -22, 0,
736 0, 0, 34, 0, 0, -22, 0, 0, -22, -22,
Sam Ravnborg70f75242007-09-01 10:26:32 +0200737 7, 8, 9, 10, 11, 12, 13, 0, 15, 16,
738 17, 18, 19, 20, 21, 22, 23, 24, 0, 26,
739 27, 28, 29, 30, 0, 0, 33, 0, 0, 0,
Michal Marek303fc012011-02-15 16:04:35 +0100740 0, 0, 0, 0, 0, 0, 34, 0, 0, 0,
741 0, 0, 0, 122, 123, 7, 8, 9, 10, 11,
742 12, 13, 0, 15, 16, 17, 18, 19, 20, 21,
743 22, 23, 24, 0, 26, 27, 28, 29, 30, 0,
744 0, 33, 0, 0, 0, 0, 0, 157, 0, 0,
745 0, 158, 0, 0, 0, 0, 0, 159, 64, 7,
746 8, 9, 10, 11, 12, 13, 0, 15, 16, 17,
747 18, 19, 20, 21, 22, 23, 24, 0, 26, 27,
748 28, 29, 30, 0, 0, 33, 0, 0, 0, 0,
749 178, 0, 0, 0, 0, 34, 7, 8, 9, 10,
750 11, 12, 13, 0, 15, 16, 17, 18, 19, 20,
751 21, 22, 23, 24, 0, 26, 27, 28, 29, 30,
752 0, 0, 33, 0, 0, 0, 0, 0, 0, 0,
753 0, 0, 34
Sam Ravnborgc40f5642005-12-26 22:53:25 +0100754};
755
Sam Ravnborg70f75242007-09-01 10:26:32 +0200756static const yytype_int16 yycheck[] =
Sam Ravnborgc40f5642005-12-26 22:53:25 +0100757{
Michal Marek303fc012011-02-15 16:04:35 +0100758 59, 38, 79, 3, 1, 8, 56, 37, 26, 37,
759 64, 31, 1, 147, 37, 18, 30, 1, 32, 109,
760 0, 111, 45, 51, 27, 23, 76, 44, 31, 51,
761 50, 37, 109, 63, 111, 53, 33, 91, 68, 57,
762 37, 100, 47, 177, 41, 51, 37, 33, 37, 86,
763 47, 48, 49, 37, 131, 37, 56, 41, 47, 48,
764 51, 47, 47, 47, 48, 47, 48, 33, 37, 37,
765 51, 33, 149, 41, 44, 45, 76, 44, 45, 47,
766 48, 47, 159, 160, 52, 47, 37, 37, 147, 37,
767 41, 45, 46, 41, 131, 44, 47, 48, 50, 47,
768 48, 159, 160, 46, 45, 49, 165, 1, 34, 49,
769 49, 5, 6, 7, 8, 9, 10, 11, 177, 13,
770 14, 15, 16, 17, 18, 19, 20, 21, 22, 52,
771 24, 25, 26, 27, 28, 34, 44, 31, 44, 46,
772 30, 44, 31, 37, 49, 49, 46, 41, 49, 36,
773 44, 45, 49, 47, 48, 1, 49, 34, 52, 5,
774 6, 7, 8, 9, 10, 11, 49, 13, 14, 15,
775 16, 17, 18, 19, 20, 21, 22, 49, 24, 25,
776 26, 27, 28, 49, 49, 31, 49, 49, 1, 165,
777 81, 37, 94, 149, 107, 41, 112, 49, 44, 45,
778 -1, 47, 48, 1, -1, 103, 52, 5, 6, 7,
779 8, 9, 10, 11, -1, 13, 14, 15, 16, 17,
780 18, 19, 20, 21, 22, -1, 24, 25, 26, 27,
781 28, -1, -1, 31, -1, -1, -1, -1, 36, -1,
782 1, -1, -1, 41, 5, 6, 7, 8, 9, 10,
783 11, 49, 13, 14, 15, 16, 17, 18, 19, 20,
784 21, 22, -1, 24, 25, 26, 27, 28, -1, -1,
785 31, -1, -1, -1, -1, 36, -1, 1, -1, -1,
786 41, 5, 6, 7, 8, 9, 10, 11, 49, 13,
Sam Ravnborg70f75242007-09-01 10:26:32 +0200787 14, 15, 16, 17, 18, 19, 20, 21, 22, -1,
788 24, 25, 26, 27, 28, -1, -1, 31, -1, -1,
Michal Marek303fc012011-02-15 16:04:35 +0100789 -1, -1, 36, -1, -1, -1, -1, 41, -1, -1,
790 -1, -1, 1, -1, -1, 49, 5, 6, 7, 8,
791 9, 10, 11, 12, 13, 14, 15, 16, 17, 18,
792 19, 20, 21, 22, 23, 24, 25, 26, 27, 28,
793 29, 30, 31, -1, -1, -1, -1, -1, 37, -1,
794 -1, -1, 41, -1, -1, 44, -1, -1, 47, 48,
Sam Ravnborg70f75242007-09-01 10:26:32 +0200795 5, 6, 7, 8, 9, 10, 11, -1, 13, 14,
796 15, 16, 17, 18, 19, 20, 21, 22, -1, 24,
797 25, 26, 27, 28, -1, -1, 31, -1, -1, -1,
Michal Marek303fc012011-02-15 16:04:35 +0100798 -1, -1, -1, -1, -1, -1, 41, -1, -1, -1,
799 -1, -1, -1, 48, 49, 5, 6, 7, 8, 9,
800 10, 11, -1, 13, 14, 15, 16, 17, 18, 19,
801 20, 21, 22, -1, 24, 25, 26, 27, 28, -1,
802 -1, 31, -1, -1, -1, -1, -1, 37, -1, -1,
803 -1, 41, -1, -1, -1, -1, -1, 47, 48, 5,
804 6, 7, 8, 9, 10, 11, -1, 13, 14, 15,
805 16, 17, 18, 19, 20, 21, 22, -1, 24, 25,
806 26, 27, 28, -1, -1, 31, -1, -1, -1, -1,
807 36, -1, -1, -1, -1, 41, 5, 6, 7, 8,
808 9, 10, 11, -1, 13, 14, 15, 16, 17, 18,
809 19, 20, 21, 22, -1, 24, 25, 26, 27, 28,
810 -1, -1, 31, -1, -1, -1, -1, -1, -1, -1,
811 -1, -1, 41
Sam Ravnborgc40f5642005-12-26 22:53:25 +0100812};
813
814/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
815 symbol of state STATE-NUM. */
Sam Ravnborg70f75242007-09-01 10:26:32 +0200816static const yytype_uint8 yystos[] =
Sam Ravnborgc40f5642005-12-26 22:53:25 +0100817{
Sam Ravnborg70f75242007-09-01 10:26:32 +0200818 0, 54, 55, 56, 0, 55, 1, 5, 6, 7,
Sam Ravnborgc40f5642005-12-26 22:53:25 +0100819 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,
820 18, 19, 20, 21, 22, 23, 24, 25, 26, 27,
Sam Ravnborg70f75242007-09-01 10:26:32 +0200821 28, 29, 30, 31, 41, 57, 60, 64, 65, 66,
Michal Marek303fc012011-02-15 16:04:35 +0100822 67, 68, 69, 73, 84, 99, 101, 44, 45, 37,
823 51, 96, 23, 37, 51, 87, 59, 37, 87, 47,
824 47, 44, 37, 47, 48, 61, 62, 63, 70, 74,
825 75, 66, 96, 37, 97, 98, 58, 87, 1, 64,
826 88, 89, 90, 60, 64, 87, 65, 37, 1, 74,
827 71, 72, 73, 44, 46, 74, 30, 32, 100, 33,
828 47, 50, 45, 46, 60, 44, 45, 37, 41, 47,
829 52, 70, 76, 77, 91, 92, 93, 94, 45, 1,
830 90, 74, 48, 49, 49, 49, 49, 73, 63, 95,
831 1, 65, 78, 79, 80, 81, 34, 45, 98, 94,
Andreas Gruenbacher94aa3d72008-07-31 00:03:49 +0200832 1, 37, 76, 34, 76, 95, 33, 47, 44, 46,
833 49, 44, 31, 50, 85, 86, 49, 37, 41, 47,
Sam Ravnborg70f75242007-09-01 10:26:32 +0200834 70, 82, 83, 49, 36, 46, 49, 49, 1, 78,
835 93, 34, 1, 41, 82, 82, 33, 47, 36, 81,
836 49, 49, 49, 49, 1, 78, 49, 49
Sam Ravnborgc40f5642005-12-26 22:53:25 +0100837};
838
Linus Torvalds1da177e2005-04-16 15:20:36 -0700839#define yyerrok (yyerrstatus = 0)
840#define yyclearin (yychar = YYEMPTY)
Sam Ravnborgc40f5642005-12-26 22:53:25 +0100841#define YYEMPTY (-2)
Linus Torvalds1da177e2005-04-16 15:20:36 -0700842#define YYEOF 0
Sam Ravnborgc40f5642005-12-26 22:53:25 +0100843
Linus Torvalds1da177e2005-04-16 15:20:36 -0700844#define YYACCEPT goto yyacceptlab
Sam Ravnborgc40f5642005-12-26 22:53:25 +0100845#define YYABORT goto yyabortlab
846#define YYERROR goto yyerrorlab
847
848
849/* Like YYERROR except do call yyerror. This remains here temporarily
850 to ease the transition to the new meaning of YYERROR, for GCC.
Arnaud Lacombe58ef81c2011-05-23 01:52:59 -0400851 Once GCC version 2 has supplanted version 1, this can go. However,
852 YYFAIL appears to be in use. Nevertheless, it is formally deprecated
853 in Bison 2.4.2's NEWS entry, where a plan to phase it out is
854 discussed. */
Sam Ravnborgc40f5642005-12-26 22:53:25 +0100855
Linus Torvalds1da177e2005-04-16 15:20:36 -0700856#define YYFAIL goto yyerrlab
Arnaud Lacombe58ef81c2011-05-23 01:52:59 -0400857#if defined YYFAIL
858 /* This is here to suppress warnings from the GCC cpp's
859 -Wunused-macros. Normally we don't worry about that warning, but
860 some users do, and we want to make it easy for users to remove
861 YYFAIL uses, which will produce warnings from Bison 2.5. */
862#endif
Sam Ravnborgc40f5642005-12-26 22:53:25 +0100863
Linus Torvalds1da177e2005-04-16 15:20:36 -0700864#define YYRECOVERING() (!!yyerrstatus)
Sam Ravnborgc40f5642005-12-26 22:53:25 +0100865
866#define YYBACKUP(Token, Value) \
Linus Torvalds1da177e2005-04-16 15:20:36 -0700867do \
868 if (yychar == YYEMPTY && yylen == 1) \
Sam Ravnborgc40f5642005-12-26 22:53:25 +0100869 { \
870 yychar = (Token); \
871 yylval = (Value); \
872 yytoken = YYTRANSLATE (yychar); \
Sam Ravnborg70f75242007-09-01 10:26:32 +0200873 YYPOPSTACK (1); \
Linus Torvalds1da177e2005-04-16 15:20:36 -0700874 goto yybackup; \
875 } \
876 else \
Sam Ravnborg70f75242007-09-01 10:26:32 +0200877 { \
878 yyerror (YY_("syntax error: cannot back up")); \
Sam Ravnborgc40f5642005-12-26 22:53:25 +0100879 YYERROR; \
880 } \
Sam Ravnborg70f75242007-09-01 10:26:32 +0200881while (YYID (0))
Linus Torvalds1da177e2005-04-16 15:20:36 -0700882
Sam Ravnborgc40f5642005-12-26 22:53:25 +0100883
Linus Torvalds1da177e2005-04-16 15:20:36 -0700884#define YYTERROR 1
885#define YYERRCODE 256
886
Sam Ravnborgc40f5642005-12-26 22:53:25 +0100887
888/* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
889 If N is 0, then set CURRENT to the empty location which ends
890 the previous symbol: RHS[0] (always defined). */
891
892#define YYRHSLOC(Rhs, K) ((Rhs)[K])
893#ifndef YYLLOC_DEFAULT
894# define YYLLOC_DEFAULT(Current, Rhs, N) \
895 do \
Sam Ravnborg70f75242007-09-01 10:26:32 +0200896 if (YYID (N)) \
Sam Ravnborgc40f5642005-12-26 22:53:25 +0100897 { \
898 (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \
899 (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \
900 (Current).last_line = YYRHSLOC (Rhs, N).last_line; \
901 (Current).last_column = YYRHSLOC (Rhs, N).last_column; \
902 } \
903 else \
904 { \
905 (Current).first_line = (Current).last_line = \
906 YYRHSLOC (Rhs, 0).last_line; \
907 (Current).first_column = (Current).last_column = \
908 YYRHSLOC (Rhs, 0).last_column; \
909 } \
Sam Ravnborg70f75242007-09-01 10:26:32 +0200910 while (YYID (0))
Linus Torvalds1da177e2005-04-16 15:20:36 -0700911#endif
912
Sam Ravnborgc40f5642005-12-26 22:53:25 +0100913
914/* YY_LOCATION_PRINT -- Print the location on the stream.
915 This macro was not mandated originally: define only if we know
916 we won't break user code: when these are the locations we know. */
917
918#ifndef YY_LOCATION_PRINT
Arnaud Lacombe58ef81c2011-05-23 01:52:59 -0400919# if defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL
Sam Ravnborgc40f5642005-12-26 22:53:25 +0100920# define YY_LOCATION_PRINT(File, Loc) \
921 fprintf (File, "%d.%d-%d.%d", \
Sam Ravnborg70f75242007-09-01 10:26:32 +0200922 (Loc).first_line, (Loc).first_column, \
923 (Loc).last_line, (Loc).last_column)
Sam Ravnborgc40f5642005-12-26 22:53:25 +0100924# else
925# define YY_LOCATION_PRINT(File, Loc) ((void) 0)
926# endif
927#endif
928
929
930/* YYLEX -- calling `yylex' with the right arguments. */
931
Linus Torvalds1da177e2005-04-16 15:20:36 -0700932#ifdef YYLEX_PARAM
Sam Ravnborgc40f5642005-12-26 22:53:25 +0100933# define YYLEX yylex (YYLEX_PARAM)
Linus Torvalds1da177e2005-04-16 15:20:36 -0700934#else
Sam Ravnborgc40f5642005-12-26 22:53:25 +0100935# define YYLEX yylex ()
Linus Torvalds1da177e2005-04-16 15:20:36 -0700936#endif
Sam Ravnborgc40f5642005-12-26 22:53:25 +0100937
938/* Enable debugging if requested. */
939#if YYDEBUG
940
941# ifndef YYFPRINTF
942# include <stdio.h> /* INFRINGES ON USER NAME SPACE */
943# define YYFPRINTF fprintf
944# endif
945
946# define YYDPRINTF(Args) \
947do { \
948 if (yydebug) \
949 YYFPRINTF Args; \
Sam Ravnborg70f75242007-09-01 10:26:32 +0200950} while (YYID (0))
Sam Ravnborgc40f5642005-12-26 22:53:25 +0100951
Sam Ravnborg70f75242007-09-01 10:26:32 +0200952# define YY_SYMBOL_PRINT(Title, Type, Value, Location) \
953do { \
954 if (yydebug) \
955 { \
956 YYFPRINTF (stderr, "%s ", Title); \
957 yy_symbol_print (stderr, \
958 Type, Value); \
959 YYFPRINTF (stderr, "\n"); \
960 } \
961} while (YYID (0))
962
963
964/*--------------------------------.
965| Print this symbol on YYOUTPUT. |
966`--------------------------------*/
967
968/*ARGSUSED*/
969#if (defined __STDC__ || defined __C99__FUNC__ \
970 || defined __cplusplus || defined _MSC_VER)
971static void
972yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
973#else
974static void
975yy_symbol_value_print (yyoutput, yytype, yyvaluep)
976 FILE *yyoutput;
977 int yytype;
978 YYSTYPE const * const yyvaluep;
979#endif
980{
981 if (!yyvaluep)
982 return;
983# ifdef YYPRINT
984 if (yytype < YYNTOKENS)
985 YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
986# else
987 YYUSE (yyoutput);
988# endif
989 switch (yytype)
990 {
991 default:
992 break;
993 }
994}
995
996
997/*--------------------------------.
998| Print this symbol on YYOUTPUT. |
999`--------------------------------*/
1000
1001#if (defined __STDC__ || defined __C99__FUNC__ \
1002 || defined __cplusplus || defined _MSC_VER)
1003static void
1004yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
1005#else
1006static void
1007yy_symbol_print (yyoutput, yytype, yyvaluep)
1008 FILE *yyoutput;
1009 int yytype;
1010 YYSTYPE const * const yyvaluep;
1011#endif
1012{
1013 if (yytype < YYNTOKENS)
1014 YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
1015 else
1016 YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
1017
1018 yy_symbol_value_print (yyoutput, yytype, yyvaluep);
1019 YYFPRINTF (yyoutput, ")");
1020}
Sam Ravnborgc40f5642005-12-26 22:53:25 +01001021
1022/*------------------------------------------------------------------.
1023| yy_stack_print -- Print the state stack from its BOTTOM up to its |
1024| TOP (included). |
1025`------------------------------------------------------------------*/
1026
Sam Ravnborg70f75242007-09-01 10:26:32 +02001027#if (defined __STDC__ || defined __C99__FUNC__ \
1028 || defined __cplusplus || defined _MSC_VER)
Sam Ravnborgc40f5642005-12-26 22:53:25 +01001029static void
Michal Marek303fc012011-02-15 16:04:35 +01001030yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop)
Linus Torvalds1da177e2005-04-16 15:20:36 -07001031#else
Sam Ravnborgc40f5642005-12-26 22:53:25 +01001032static void
Michal Marek303fc012011-02-15 16:04:35 +01001033yy_stack_print (yybottom, yytop)
1034 yytype_int16 *yybottom;
1035 yytype_int16 *yytop;
Linus Torvalds1da177e2005-04-16 15:20:36 -07001036#endif
Sam Ravnborgc40f5642005-12-26 22:53:25 +01001037{
1038 YYFPRINTF (stderr, "Stack now");
Michal Marek303fc012011-02-15 16:04:35 +01001039 for (; yybottom <= yytop; yybottom++)
1040 {
1041 int yybot = *yybottom;
1042 YYFPRINTF (stderr, " %d", yybot);
1043 }
Sam Ravnborgc40f5642005-12-26 22:53:25 +01001044 YYFPRINTF (stderr, "\n");
1045}
1046
1047# define YY_STACK_PRINT(Bottom, Top) \
1048do { \
1049 if (yydebug) \
1050 yy_stack_print ((Bottom), (Top)); \
Sam Ravnborg70f75242007-09-01 10:26:32 +02001051} while (YYID (0))
Sam Ravnborgc40f5642005-12-26 22:53:25 +01001052
1053
1054/*------------------------------------------------.
1055| Report that the YYRULE is going to be reduced. |
1056`------------------------------------------------*/
1057
Sam Ravnborg70f75242007-09-01 10:26:32 +02001058#if (defined __STDC__ || defined __C99__FUNC__ \
1059 || defined __cplusplus || defined _MSC_VER)
Sam Ravnborgc40f5642005-12-26 22:53:25 +01001060static void
Sam Ravnborg70f75242007-09-01 10:26:32 +02001061yy_reduce_print (YYSTYPE *yyvsp, int yyrule)
Sam Ravnborgc40f5642005-12-26 22:53:25 +01001062#else
1063static void
Sam Ravnborg70f75242007-09-01 10:26:32 +02001064yy_reduce_print (yyvsp, yyrule)
1065 YYSTYPE *yyvsp;
Sam Ravnborgc40f5642005-12-26 22:53:25 +01001066 int yyrule;
Linus Torvalds1da177e2005-04-16 15:20:36 -07001067#endif
Sam Ravnborgc40f5642005-12-26 22:53:25 +01001068{
Sam Ravnborg70f75242007-09-01 10:26:32 +02001069 int yynrhs = yyr2[yyrule];
Sam Ravnborgc40f5642005-12-26 22:53:25 +01001070 int yyi;
Sam Ravnborg70f75242007-09-01 10:26:32 +02001071 unsigned long int yylno = yyrline[yyrule];
1072 YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n",
1073 yyrule - 1, yylno);
1074 /* The symbols being reduced. */
1075 for (yyi = 0; yyi < yynrhs; yyi++)
1076 {
Michal Marek303fc012011-02-15 16:04:35 +01001077 YYFPRINTF (stderr, " $%d = ", yyi + 1);
Sam Ravnborg70f75242007-09-01 10:26:32 +02001078 yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi],
1079 &(yyvsp[(yyi + 1) - (yynrhs)])
1080 );
Michal Marek303fc012011-02-15 16:04:35 +01001081 YYFPRINTF (stderr, "\n");
Sam Ravnborg70f75242007-09-01 10:26:32 +02001082 }
Sam Ravnborgc40f5642005-12-26 22:53:25 +01001083}
Linus Torvalds1da177e2005-04-16 15:20:36 -07001084
Sam Ravnborgc40f5642005-12-26 22:53:25 +01001085# define YY_REDUCE_PRINT(Rule) \
1086do { \
1087 if (yydebug) \
Sam Ravnborg70f75242007-09-01 10:26:32 +02001088 yy_reduce_print (yyvsp, Rule); \
1089} while (YYID (0))
Linus Torvalds1da177e2005-04-16 15:20:36 -07001090
Sam Ravnborgc40f5642005-12-26 22:53:25 +01001091/* Nonzero means print parse trace. It is left uninitialized so that
1092 multiple parsers can coexist. */
1093int yydebug;
1094#else /* !YYDEBUG */
1095# define YYDPRINTF(Args)
1096# define YY_SYMBOL_PRINT(Title, Type, Value, Location)
1097# define YY_STACK_PRINT(Bottom, Top)
1098# define YY_REDUCE_PRINT(Rule)
1099#endif /* !YYDEBUG */
Linus Torvalds1da177e2005-04-16 15:20:36 -07001100
Linus Torvalds1da177e2005-04-16 15:20:36 -07001101
Sam Ravnborgc40f5642005-12-26 22:53:25 +01001102/* YYINITDEPTH -- initial size of the parser's stacks. */
Linus Torvalds1da177e2005-04-16 15:20:36 -07001103#ifndef YYINITDEPTH
Sam Ravnborgc40f5642005-12-26 22:53:25 +01001104# define YYINITDEPTH 200
Linus Torvalds1da177e2005-04-16 15:20:36 -07001105#endif
1106
Sam Ravnborgc40f5642005-12-26 22:53:25 +01001107/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
1108 if the built-in stack extension method is used).
Linus Torvalds1da177e2005-04-16 15:20:36 -07001109
Sam Ravnborgc40f5642005-12-26 22:53:25 +01001110 Do not make this value too large; the results are undefined if
Sam Ravnborg70f75242007-09-01 10:26:32 +02001111 YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH)
Sam Ravnborgc40f5642005-12-26 22:53:25 +01001112 evaluated with infinite-precision integer arithmetic. */
Linus Torvalds1da177e2005-04-16 15:20:36 -07001113
1114#ifndef YYMAXDEPTH
Sam Ravnborgc40f5642005-12-26 22:53:25 +01001115# define YYMAXDEPTH 10000
Linus Torvalds1da177e2005-04-16 15:20:36 -07001116#endif
Sam Ravnborgc40f5642005-12-26 22:53:25 +01001117
Linus Torvalds1da177e2005-04-16 15:20:36 -07001118
Linus Torvalds1da177e2005-04-16 15:20:36 -07001119
Sam Ravnborgc40f5642005-12-26 22:53:25 +01001120#if YYERROR_VERBOSE
Linus Torvalds1da177e2005-04-16 15:20:36 -07001121
Sam Ravnborgc40f5642005-12-26 22:53:25 +01001122# ifndef yystrlen
Sam Ravnborg70f75242007-09-01 10:26:32 +02001123# if defined __GLIBC__ && defined _STRING_H
Sam Ravnborgc40f5642005-12-26 22:53:25 +01001124# define yystrlen strlen
1125# else
1126/* Return the length of YYSTR. */
Sam Ravnborg70f75242007-09-01 10:26:32 +02001127#if (defined __STDC__ || defined __C99__FUNC__ \
1128 || defined __cplusplus || defined _MSC_VER)
Sam Ravnborgc40f5642005-12-26 22:53:25 +01001129static YYSIZE_T
Sam Ravnborgc40f5642005-12-26 22:53:25 +01001130yystrlen (const char *yystr)
Sam Ravnborg70f75242007-09-01 10:26:32 +02001131#else
1132static YYSIZE_T
Sam Ravnborgc40f5642005-12-26 22:53:25 +01001133yystrlen (yystr)
Sam Ravnborg70f75242007-09-01 10:26:32 +02001134 const char *yystr;
1135#endif
Linus Torvalds1da177e2005-04-16 15:20:36 -07001136{
Sam Ravnborg70f75242007-09-01 10:26:32 +02001137 YYSIZE_T yylen;
1138 for (yylen = 0; yystr[yylen]; yylen++)
Sam Ravnborgc40f5642005-12-26 22:53:25 +01001139 continue;
Sam Ravnborg70f75242007-09-01 10:26:32 +02001140 return yylen;
Linus Torvalds1da177e2005-04-16 15:20:36 -07001141}
Sam Ravnborgc40f5642005-12-26 22:53:25 +01001142# endif
1143# endif
Linus Torvalds1da177e2005-04-16 15:20:36 -07001144
Sam Ravnborgc40f5642005-12-26 22:53:25 +01001145# ifndef yystpcpy
Sam Ravnborg70f75242007-09-01 10:26:32 +02001146# if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
Sam Ravnborgc40f5642005-12-26 22:53:25 +01001147# define yystpcpy stpcpy
1148# else
1149/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
1150 YYDEST. */
Sam Ravnborg70f75242007-09-01 10:26:32 +02001151#if (defined __STDC__ || defined __C99__FUNC__ \
1152 || defined __cplusplus || defined _MSC_VER)
Sam Ravnborgc40f5642005-12-26 22:53:25 +01001153static char *
Sam Ravnborgc40f5642005-12-26 22:53:25 +01001154yystpcpy (char *yydest, const char *yysrc)
Sam Ravnborg70f75242007-09-01 10:26:32 +02001155#else
1156static char *
Sam Ravnborgc40f5642005-12-26 22:53:25 +01001157yystpcpy (yydest, yysrc)
Sam Ravnborg70f75242007-09-01 10:26:32 +02001158 char *yydest;
1159 const char *yysrc;
1160#endif
Linus Torvalds1da177e2005-04-16 15:20:36 -07001161{
Sam Ravnborg70f75242007-09-01 10:26:32 +02001162 char *yyd = yydest;
1163 const char *yys = yysrc;
Linus Torvalds1da177e2005-04-16 15:20:36 -07001164
Sam Ravnborgc40f5642005-12-26 22:53:25 +01001165 while ((*yyd++ = *yys++) != '\0')
1166 continue;
1167
1168 return yyd - 1;
Linus Torvalds1da177e2005-04-16 15:20:36 -07001169}
Sam Ravnborgc40f5642005-12-26 22:53:25 +01001170# endif
1171# endif
Linus Torvalds1da177e2005-04-16 15:20:36 -07001172
Sam Ravnborg70f75242007-09-01 10:26:32 +02001173# ifndef yytnamerr
1174/* Copy to YYRES the contents of YYSTR after stripping away unnecessary
1175 quotes and backslashes, so that it's suitable for yyerror. The
1176 heuristic is that double-quoting is unnecessary unless the string
1177 contains an apostrophe, a comma, or backslash (other than
1178 backslash-backslash). YYSTR is taken from yytname. If YYRES is
1179 null, do not copy; instead, return the length of what the result
1180 would have been. */
1181static YYSIZE_T
1182yytnamerr (char *yyres, const char *yystr)
1183{
1184 if (*yystr == '"')
1185 {
1186 YYSIZE_T yyn = 0;
1187 char const *yyp = yystr;
Sam Ravnborgc40f5642005-12-26 22:53:25 +01001188
Sam Ravnborg70f75242007-09-01 10:26:32 +02001189 for (;;)
1190 switch (*++yyp)
1191 {
1192 case '\'':
1193 case ',':
1194 goto do_not_strip_quotes;
1195
1196 case '\\':
1197 if (*++yyp != '\\')
1198 goto do_not_strip_quotes;
1199 /* Fall through. */
1200 default:
1201 if (yyres)
1202 yyres[yyn] = *yyp;
1203 yyn++;
1204 break;
1205
1206 case '"':
1207 if (yyres)
1208 yyres[yyn] = '\0';
1209 return yyn;
1210 }
1211 do_not_strip_quotes: ;
1212 }
1213
1214 if (! yyres)
1215 return yystrlen (yystr);
1216
1217 return yystpcpy (yyres, yystr) - yyres;
1218}
1219# endif
1220
1221/* Copy into YYRESULT an error message about the unexpected token
1222 YYCHAR while in state YYSTATE. Return the number of bytes copied,
1223 including the terminating null byte. If YYRESULT is null, do not
1224 copy anything; just return the number of bytes that would be
1225 copied. As a special case, return 0 if an ordinary "syntax error"
1226 message will do. Return YYSIZE_MAXIMUM if overflow occurs during
1227 size calculation. */
1228static YYSIZE_T
1229yysyntax_error (char *yyresult, int yystate, int yychar)
1230{
1231 int yyn = yypact[yystate];
1232
1233 if (! (YYPACT_NINF < yyn && yyn <= YYLAST))
1234 return 0;
1235 else
1236 {
1237 int yytype = YYTRANSLATE (yychar);
1238 YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]);
1239 YYSIZE_T yysize = yysize0;
1240 YYSIZE_T yysize1;
1241 int yysize_overflow = 0;
1242 enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
1243 char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
1244 int yyx;
1245
1246# if 0
1247 /* This is so xgettext sees the translatable formats that are
1248 constructed on the fly. */
1249 YY_("syntax error, unexpected %s");
1250 YY_("syntax error, unexpected %s, expecting %s");
1251 YY_("syntax error, unexpected %s, expecting %s or %s");
1252 YY_("syntax error, unexpected %s, expecting %s or %s or %s");
1253 YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s");
1254# endif
1255 char *yyfmt;
1256 char const *yyf;
1257 static char const yyunexpected[] = "syntax error, unexpected %s";
1258 static char const yyexpecting[] = ", expecting %s";
1259 static char const yyor[] = " or %s";
1260 char yyformat[sizeof yyunexpected
1261 + sizeof yyexpecting - 1
1262 + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2)
1263 * (sizeof yyor - 1))];
1264 char const *yyprefix = yyexpecting;
1265
1266 /* Start YYX at -YYN if negative to avoid negative indexes in
1267 YYCHECK. */
1268 int yyxbegin = yyn < 0 ? -yyn : 0;
1269
1270 /* Stay within bounds of both yycheck and yytname. */
1271 int yychecklim = YYLAST - yyn + 1;
1272 int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
1273 int yycount = 1;
1274
1275 yyarg[0] = yytname[yytype];
1276 yyfmt = yystpcpy (yyformat, yyunexpected);
1277
1278 for (yyx = yyxbegin; yyx < yyxend; ++yyx)
1279 if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
1280 {
1281 if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
1282 {
1283 yycount = 1;
1284 yysize = yysize0;
1285 yyformat[sizeof yyunexpected - 1] = '\0';
1286 break;
1287 }
1288 yyarg[yycount++] = yytname[yyx];
1289 yysize1 = yysize + yytnamerr (0, yytname[yyx]);
1290 yysize_overflow |= (yysize1 < yysize);
1291 yysize = yysize1;
1292 yyfmt = yystpcpy (yyfmt, yyprefix);
1293 yyprefix = yyor;
1294 }
1295
1296 yyf = YY_(yyformat);
1297 yysize1 = yysize + yystrlen (yyf);
1298 yysize_overflow |= (yysize1 < yysize);
1299 yysize = yysize1;
1300
1301 if (yysize_overflow)
1302 return YYSIZE_MAXIMUM;
1303
1304 if (yyresult)
1305 {
1306 /* Avoid sprintf, as that infringes on the user's name space.
1307 Don't have undefined behavior even if the translation
1308 produced a string with the wrong number of "%s"s. */
1309 char *yyp = yyresult;
1310 int yyi = 0;
1311 while ((*yyp = *yyf) != '\0')
1312 {
1313 if (*yyp == '%' && yyf[1] == 's' && yyi < yycount)
1314 {
1315 yyp += yytnamerr (yyp, yyarg[yyi++]);
1316 yyf += 2;
1317 }
1318 else
1319 {
1320 yyp++;
1321 yyf++;
1322 }
1323 }
1324 }
1325 return yysize;
1326 }
1327}
1328#endif /* YYERROR_VERBOSE */
Linus Torvalds1da177e2005-04-16 15:20:36 -07001329
Linus Torvalds1da177e2005-04-16 15:20:36 -07001330
Sam Ravnborgc40f5642005-12-26 22:53:25 +01001331/*-----------------------------------------------.
1332| Release the memory associated to this symbol. |
1333`-----------------------------------------------*/
1334
Sam Ravnborg70f75242007-09-01 10:26:32 +02001335/*ARGSUSED*/
1336#if (defined __STDC__ || defined __C99__FUNC__ \
1337 || defined __cplusplus || defined _MSC_VER)
Sam Ravnborgc40f5642005-12-26 22:53:25 +01001338static void
1339yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep)
1340#else
1341static void
1342yydestruct (yymsg, yytype, yyvaluep)
1343 const char *yymsg;
1344 int yytype;
1345 YYSTYPE *yyvaluep;
1346#endif
1347{
Sam Ravnborg70f75242007-09-01 10:26:32 +02001348 YYUSE (yyvaluep);
Sam Ravnborgc40f5642005-12-26 22:53:25 +01001349
1350 if (!yymsg)
1351 yymsg = "Deleting";
1352 YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
1353
1354 switch (yytype)
1355 {
1356
1357 default:
Sam Ravnborg70f75242007-09-01 10:26:32 +02001358 break;
Sam Ravnborgc40f5642005-12-26 22:53:25 +01001359 }
1360}
Sam Ravnborgc40f5642005-12-26 22:53:25 +01001361
1362/* Prevent warnings from -Wmissing-prototypes. */
Sam Ravnborgc40f5642005-12-26 22:53:25 +01001363#ifdef YYPARSE_PARAM
Sam Ravnborg70f75242007-09-01 10:26:32 +02001364#if defined __STDC__ || defined __cplusplus
Sam Ravnborgc40f5642005-12-26 22:53:25 +01001365int yyparse (void *YYPARSE_PARAM);
Sam Ravnborg70f75242007-09-01 10:26:32 +02001366#else
Sam Ravnborgc40f5642005-12-26 22:53:25 +01001367int yyparse ();
Sam Ravnborg70f75242007-09-01 10:26:32 +02001368#endif
Sam Ravnborgc40f5642005-12-26 22:53:25 +01001369#else /* ! YYPARSE_PARAM */
Sam Ravnborg70f75242007-09-01 10:26:32 +02001370#if defined __STDC__ || defined __cplusplus
Sam Ravnborgc40f5642005-12-26 22:53:25 +01001371int yyparse (void);
1372#else
1373int yyparse ();
1374#endif
1375#endif /* ! YYPARSE_PARAM */
1376
1377
Michal Marek303fc012011-02-15 16:04:35 +01001378/* The lookahead symbol. */
Sam Ravnborgc40f5642005-12-26 22:53:25 +01001379int yychar;
1380
Michal Marek303fc012011-02-15 16:04:35 +01001381/* The semantic value of the lookahead symbol. */
Sam Ravnborgc40f5642005-12-26 22:53:25 +01001382YYSTYPE yylval;
1383
1384/* Number of syntax errors so far. */
1385int yynerrs;
1386
1387
1388
Michal Marek303fc012011-02-15 16:04:35 +01001389/*-------------------------.
1390| yyparse or yypush_parse. |
1391`-------------------------*/
Sam Ravnborgc40f5642005-12-26 22:53:25 +01001392
1393#ifdef YYPARSE_PARAM
Sam Ravnborg70f75242007-09-01 10:26:32 +02001394#if (defined __STDC__ || defined __C99__FUNC__ \
1395 || defined __cplusplus || defined _MSC_VER)
1396int
1397yyparse (void *YYPARSE_PARAM)
1398#else
1399int
1400yyparse (YYPARSE_PARAM)
1401 void *YYPARSE_PARAM;
1402#endif
Sam Ravnborgc40f5642005-12-26 22:53:25 +01001403#else /* ! YYPARSE_PARAM */
Sam Ravnborg70f75242007-09-01 10:26:32 +02001404#if (defined __STDC__ || defined __C99__FUNC__ \
1405 || defined __cplusplus || defined _MSC_VER)
Sam Ravnborgc40f5642005-12-26 22:53:25 +01001406int
1407yyparse (void)
1408#else
1409int
1410yyparse ()
1411
1412#endif
1413#endif
1414{
Michal Marek303fc012011-02-15 16:04:35 +01001415
1416
1417 int yystate;
1418 /* Number of tokens to shift before error messages enabled. */
1419 int yyerrstatus;
1420
1421 /* The stacks and their tools:
1422 `yyss': related to states.
1423 `yyvs': related to semantic values.
1424
1425 Refer to the stacks thru separate pointers, to allow yyoverflow
1426 to reallocate them elsewhere. */
1427
1428 /* The state stack. */
1429 yytype_int16 yyssa[YYINITDEPTH];
1430 yytype_int16 *yyss;
1431 yytype_int16 *yyssp;
1432
1433 /* The semantic value stack. */
1434 YYSTYPE yyvsa[YYINITDEPTH];
1435 YYSTYPE *yyvs;
1436 YYSTYPE *yyvsp;
1437
1438 YYSIZE_T yystacksize;
1439
Sam Ravnborg70f75242007-09-01 10:26:32 +02001440 int yyn;
Sam Ravnborgc40f5642005-12-26 22:53:25 +01001441 int yyresult;
Michal Marek303fc012011-02-15 16:04:35 +01001442 /* Lookahead token as an internal (translated) token number. */
1443 int yytoken;
1444 /* The variables used to return semantic value and location from the
1445 action routines. */
1446 YYSTYPE yyval;
1447
Sam Ravnborg70f75242007-09-01 10:26:32 +02001448#if YYERROR_VERBOSE
1449 /* Buffer for error messages, and its allocated size. */
1450 char yymsgbuf[128];
1451 char *yymsg = yymsgbuf;
1452 YYSIZE_T yymsg_alloc = sizeof yymsgbuf;
1453#endif
Sam Ravnborgc40f5642005-12-26 22:53:25 +01001454
Sam Ravnborg70f75242007-09-01 10:26:32 +02001455#define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N))
Linus Torvalds1da177e2005-04-16 15:20:36 -07001456
Sam Ravnborg70f75242007-09-01 10:26:32 +02001457 /* The number of symbols on the RHS of the reduced rule.
1458 Keep to zero when no symbol should be popped. */
1459 int yylen = 0;
Linus Torvalds1da177e2005-04-16 15:20:36 -07001460
Michal Marek303fc012011-02-15 16:04:35 +01001461 yytoken = 0;
1462 yyss = yyssa;
1463 yyvs = yyvsa;
1464 yystacksize = YYINITDEPTH;
1465
Sam Ravnborgc40f5642005-12-26 22:53:25 +01001466 YYDPRINTF ((stderr, "Starting parse\n"));
Linus Torvalds1da177e2005-04-16 15:20:36 -07001467
1468 yystate = 0;
1469 yyerrstatus = 0;
1470 yynerrs = 0;
Michal Marek303fc012011-02-15 16:04:35 +01001471 yychar = YYEMPTY; /* Cause a token to be read. */
Linus Torvalds1da177e2005-04-16 15:20:36 -07001472
1473 /* Initialize stack pointers.
1474 Waste one element of value and location stack
1475 so that they stay on the same level as the state stack.
1476 The wasted elements are never initialized. */
Sam Ravnborgc40f5642005-12-26 22:53:25 +01001477 yyssp = yyss;
Linus Torvalds1da177e2005-04-16 15:20:36 -07001478 yyvsp = yyvs;
Linus Torvalds1da177e2005-04-16 15:20:36 -07001479
Sam Ravnborgc40f5642005-12-26 22:53:25 +01001480 goto yysetstate;
1481
1482/*------------------------------------------------------------.
1483| yynewstate -- Push a new state, which is found in yystate. |
1484`------------------------------------------------------------*/
1485 yynewstate:
1486 /* In all cases, when you get here, the value and location stacks
Sam Ravnborg70f75242007-09-01 10:26:32 +02001487 have just been pushed. So pushing a state here evens the stacks. */
Sam Ravnborgc40f5642005-12-26 22:53:25 +01001488 yyssp++;
1489
1490 yysetstate:
1491 *yyssp = yystate;
1492
1493 if (yyss + yystacksize - 1 <= yyssp)
Linus Torvalds1da177e2005-04-16 15:20:36 -07001494 {
Linus Torvalds1da177e2005-04-16 15:20:36 -07001495 /* Get the current used size of the three stacks, in elements. */
Sam Ravnborgc40f5642005-12-26 22:53:25 +01001496 YYSIZE_T yysize = yyssp - yyss + 1;
Linus Torvalds1da177e2005-04-16 15:20:36 -07001497
1498#ifdef yyoverflow
Sam Ravnborgc40f5642005-12-26 22:53:25 +01001499 {
Sam Ravnborg70f75242007-09-01 10:26:32 +02001500 /* Give user a chance to reallocate the stack. Use copies of
Sam Ravnborgc40f5642005-12-26 22:53:25 +01001501 these so that the &'s don't force the real ones into
1502 memory. */
1503 YYSTYPE *yyvs1 = yyvs;
Sam Ravnborg70f75242007-09-01 10:26:32 +02001504 yytype_int16 *yyss1 = yyss;
Linus Torvalds1da177e2005-04-16 15:20:36 -07001505
Sam Ravnborgc40f5642005-12-26 22:53:25 +01001506 /* Each stack pointer address is followed by the size of the
1507 data in use in that stack, in bytes. This used to be a
1508 conditional around just the two extra args, but that might
1509 be undefined if yyoverflow is a macro. */
Sam Ravnborg70f75242007-09-01 10:26:32 +02001510 yyoverflow (YY_("memory exhausted"),
Sam Ravnborgc40f5642005-12-26 22:53:25 +01001511 &yyss1, yysize * sizeof (*yyssp),
1512 &yyvs1, yysize * sizeof (*yyvsp),
Sam Ravnborgc40f5642005-12-26 22:53:25 +01001513 &yystacksize);
1514
1515 yyss = yyss1;
1516 yyvs = yyvs1;
1517 }
Linus Torvalds1da177e2005-04-16 15:20:36 -07001518#else /* no yyoverflow */
Sam Ravnborgc40f5642005-12-26 22:53:25 +01001519# ifndef YYSTACK_RELOCATE
Sam Ravnborg70f75242007-09-01 10:26:32 +02001520 goto yyexhaustedlab;
Sam Ravnborgc40f5642005-12-26 22:53:25 +01001521# else
Linus Torvalds1da177e2005-04-16 15:20:36 -07001522 /* Extend the stack our own way. */
Sam Ravnborgc40f5642005-12-26 22:53:25 +01001523 if (YYMAXDEPTH <= yystacksize)
Sam Ravnborg70f75242007-09-01 10:26:32 +02001524 goto yyexhaustedlab;
Linus Torvalds1da177e2005-04-16 15:20:36 -07001525 yystacksize *= 2;
Sam Ravnborgc40f5642005-12-26 22:53:25 +01001526 if (YYMAXDEPTH < yystacksize)
Linus Torvalds1da177e2005-04-16 15:20:36 -07001527 yystacksize = YYMAXDEPTH;
Sam Ravnborgc40f5642005-12-26 22:53:25 +01001528
1529 {
Sam Ravnborg70f75242007-09-01 10:26:32 +02001530 yytype_int16 *yyss1 = yyss;
Sam Ravnborgc40f5642005-12-26 22:53:25 +01001531 union yyalloc *yyptr =
1532 (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
1533 if (! yyptr)
Sam Ravnborg70f75242007-09-01 10:26:32 +02001534 goto yyexhaustedlab;
Michal Marek303fc012011-02-15 16:04:35 +01001535 YYSTACK_RELOCATE (yyss_alloc, yyss);
1536 YYSTACK_RELOCATE (yyvs_alloc, yyvs);
Sam Ravnborgc40f5642005-12-26 22:53:25 +01001537# undef YYSTACK_RELOCATE
1538 if (yyss1 != yyssa)
1539 YYSTACK_FREE (yyss1);
1540 }
1541# endif
Linus Torvalds1da177e2005-04-16 15:20:36 -07001542#endif /* no yyoverflow */
1543
Sam Ravnborgc40f5642005-12-26 22:53:25 +01001544 yyssp = yyss + yysize - 1;
1545 yyvsp = yyvs + yysize - 1;
Linus Torvalds1da177e2005-04-16 15:20:36 -07001546
Sam Ravnborgc40f5642005-12-26 22:53:25 +01001547 YYDPRINTF ((stderr, "Stack size increased to %lu\n",
1548 (unsigned long int) yystacksize));
1549
1550 if (yyss + yystacksize - 1 <= yyssp)
Linus Torvalds1da177e2005-04-16 15:20:36 -07001551 YYABORT;
1552 }
1553
Sam Ravnborgc40f5642005-12-26 22:53:25 +01001554 YYDPRINTF ((stderr, "Entering state %d\n", yystate));
Linus Torvalds1da177e2005-04-16 15:20:36 -07001555
Michal Marek303fc012011-02-15 16:04:35 +01001556 if (yystate == YYFINAL)
1557 YYACCEPT;
1558
Linus Torvalds1da177e2005-04-16 15:20:36 -07001559 goto yybackup;
Sam Ravnborgc40f5642005-12-26 22:53:25 +01001560
1561/*-----------.
1562| yybackup. |
1563`-----------*/
1564yybackup:
Linus Torvalds1da177e2005-04-16 15:20:36 -07001565
Sam Ravnborg70f75242007-09-01 10:26:32 +02001566 /* Do appropriate processing given the current state. Read a
Michal Marek303fc012011-02-15 16:04:35 +01001567 lookahead token if we need one and don't already have one. */
Linus Torvalds1da177e2005-04-16 15:20:36 -07001568
Michal Marek303fc012011-02-15 16:04:35 +01001569 /* First try to decide what to do without reference to lookahead token. */
Linus Torvalds1da177e2005-04-16 15:20:36 -07001570 yyn = yypact[yystate];
Sam Ravnborgc40f5642005-12-26 22:53:25 +01001571 if (yyn == YYPACT_NINF)
Linus Torvalds1da177e2005-04-16 15:20:36 -07001572 goto yydefault;
1573
Michal Marek303fc012011-02-15 16:04:35 +01001574 /* Not known => get a lookahead token if don't already have one. */
Linus Torvalds1da177e2005-04-16 15:20:36 -07001575
Michal Marek303fc012011-02-15 16:04:35 +01001576 /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol. */
Linus Torvalds1da177e2005-04-16 15:20:36 -07001577 if (yychar == YYEMPTY)
1578 {
Sam Ravnborgc40f5642005-12-26 22:53:25 +01001579 YYDPRINTF ((stderr, "Reading a token: "));
Linus Torvalds1da177e2005-04-16 15:20:36 -07001580 yychar = YYLEX;
1581 }
1582
Sam Ravnborgc40f5642005-12-26 22:53:25 +01001583 if (yychar <= YYEOF)
Linus Torvalds1da177e2005-04-16 15:20:36 -07001584 {
Sam Ravnborgc40f5642005-12-26 22:53:25 +01001585 yychar = yytoken = YYEOF;
1586 YYDPRINTF ((stderr, "Now at end of input.\n"));
Linus Torvalds1da177e2005-04-16 15:20:36 -07001587 }
1588 else
1589 {
Sam Ravnborgc40f5642005-12-26 22:53:25 +01001590 yytoken = YYTRANSLATE (yychar);
1591 YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
Linus Torvalds1da177e2005-04-16 15:20:36 -07001592 }
1593
Sam Ravnborgc40f5642005-12-26 22:53:25 +01001594 /* If the proper action on seeing token YYTOKEN is to reduce or to
1595 detect an error, take that action. */
1596 yyn += yytoken;
1597 if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
Linus Torvalds1da177e2005-04-16 15:20:36 -07001598 goto yydefault;
Linus Torvalds1da177e2005-04-16 15:20:36 -07001599 yyn = yytable[yyn];
Sam Ravnborgc40f5642005-12-26 22:53:25 +01001600 if (yyn <= 0)
Linus Torvalds1da177e2005-04-16 15:20:36 -07001601 {
Sam Ravnborgc40f5642005-12-26 22:53:25 +01001602 if (yyn == 0 || yyn == YYTABLE_NINF)
Linus Torvalds1da177e2005-04-16 15:20:36 -07001603 goto yyerrlab;
1604 yyn = -yyn;
1605 goto yyreduce;
1606 }
Linus Torvalds1da177e2005-04-16 15:20:36 -07001607
Sam Ravnborgc40f5642005-12-26 22:53:25 +01001608 /* Count tokens shifted since error; after three, turn off error
1609 status. */
1610 if (yyerrstatus)
1611 yyerrstatus--;
Linus Torvalds1da177e2005-04-16 15:20:36 -07001612
Michal Marek303fc012011-02-15 16:04:35 +01001613 /* Shift the lookahead token. */
Sam Ravnborg70f75242007-09-01 10:26:32 +02001614 YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
1615
Michal Marek303fc012011-02-15 16:04:35 +01001616 /* Discard the shifted token. */
1617 yychar = YYEMPTY;
Sam Ravnborg70f75242007-09-01 10:26:32 +02001618
Linus Torvalds1da177e2005-04-16 15:20:36 -07001619 yystate = yyn;
Sam Ravnborg70f75242007-09-01 10:26:32 +02001620 *++yyvsp = yylval;
1621
Linus Torvalds1da177e2005-04-16 15:20:36 -07001622 goto yynewstate;
1623
Linus Torvalds1da177e2005-04-16 15:20:36 -07001624
Sam Ravnborgc40f5642005-12-26 22:53:25 +01001625/*-----------------------------------------------------------.
1626| yydefault -- do the default action for the current state. |
1627`-----------------------------------------------------------*/
1628yydefault:
Linus Torvalds1da177e2005-04-16 15:20:36 -07001629 yyn = yydefact[yystate];
1630 if (yyn == 0)
1631 goto yyerrlab;
Sam Ravnborgc40f5642005-12-26 22:53:25 +01001632 goto yyreduce;
Linus Torvalds1da177e2005-04-16 15:20:36 -07001633
Sam Ravnborgc40f5642005-12-26 22:53:25 +01001634
1635/*-----------------------------.
1636| yyreduce -- Do a reduction. |
1637`-----------------------------*/
Linus Torvalds1da177e2005-04-16 15:20:36 -07001638yyreduce:
Sam Ravnborgc40f5642005-12-26 22:53:25 +01001639 /* yyn is the number of a rule to reduce with. */
Linus Torvalds1da177e2005-04-16 15:20:36 -07001640 yylen = yyr2[yyn];
Linus Torvalds1da177e2005-04-16 15:20:36 -07001641
Sam Ravnborgc40f5642005-12-26 22:53:25 +01001642 /* If YYLEN is nonzero, implement the default value of the action:
1643 `$$ = $1'.
1644
1645 Otherwise, the following line sets YYVAL to garbage.
1646 This behavior is undocumented and Bison
1647 users should not rely upon it. Assigning to YYVAL
1648 unconditionally makes the parser a bit smaller, and it avoids a
1649 GCC warning that YYVAL may be used uninitialized. */
1650 yyval = yyvsp[1-yylen];
1651
1652
1653 YY_REDUCE_PRINT (yyn);
1654 switch (yyn)
Linus Torvalds1da177e2005-04-16 15:20:36 -07001655 {
Sam Ravnborgc40f5642005-12-26 22:53:25 +01001656 case 4:
Michal Marek303fc012011-02-15 16:04:35 +01001657
Sam Ravnborgc40f5642005-12-26 22:53:25 +01001658 { is_typedef = 0; is_extern = 0; current_name = NULL; decl_spec = NULL; ;}
1659 break;
1660
1661 case 5:
Michal Marek303fc012011-02-15 16:04:35 +01001662
Sam Ravnborg70f75242007-09-01 10:26:32 +02001663 { free_list(*(yyvsp[(2) - (2)]), NULL); *(yyvsp[(2) - (2)]) = NULL; ;}
Sam Ravnborgc40f5642005-12-26 22:53:25 +01001664 break;
1665
1666 case 6:
Michal Marek303fc012011-02-15 16:04:35 +01001667
Sam Ravnborgc40f5642005-12-26 22:53:25 +01001668 { is_typedef = 1; ;}
1669 break;
1670
1671 case 7:
Michal Marek303fc012011-02-15 16:04:35 +01001672
Sam Ravnborg70f75242007-09-01 10:26:32 +02001673 { (yyval) = (yyvsp[(4) - (4)]); ;}
Sam Ravnborgc40f5642005-12-26 22:53:25 +01001674 break;
1675
Sam Ravnborg70f75242007-09-01 10:26:32 +02001676 case 8:
Michal Marek303fc012011-02-15 16:04:35 +01001677
Sam Ravnborg70f75242007-09-01 10:26:32 +02001678 { is_typedef = 1; ;}
Sam Ravnborgc40f5642005-12-26 22:53:25 +01001679 break;
1680
Sam Ravnborg70f75242007-09-01 10:26:32 +02001681 case 9:
Michal Marek303fc012011-02-15 16:04:35 +01001682
Sam Ravnborg70f75242007-09-01 10:26:32 +02001683 { (yyval) = (yyvsp[(3) - (3)]); ;}
Sam Ravnborgc40f5642005-12-26 22:53:25 +01001684 break;
1685
1686 case 14:
Sam Ravnborg70f75242007-09-01 10:26:32 +02001687
Sam Ravnborg70f75242007-09-01 10:26:32 +02001688 { (yyval) = (yyvsp[(2) - (2)]); ;}
1689 break;
1690
Michal Marek303fc012011-02-15 16:04:35 +01001691 case 15:
1692
Michal Marek303fc012011-02-15 16:04:35 +01001693 { (yyval) = (yyvsp[(2) - (2)]); ;}
1694 break;
1695
Sam Ravnborg70f75242007-09-01 10:26:32 +02001696 case 16:
Michal Marek303fc012011-02-15 16:04:35 +01001697
Sam Ravnborgc40f5642005-12-26 22:53:25 +01001698 { if (current_name) {
Sam Ravnborg70f75242007-09-01 10:26:32 +02001699 struct string_list *decl = (*(yyvsp[(3) - (3)]))->next;
1700 (*(yyvsp[(3) - (3)]))->next = NULL;
Linus Torvalds1da177e2005-04-16 15:20:36 -07001701 add_symbol(current_name,
1702 is_typedef ? SYM_TYPEDEF : SYM_NORMAL,
1703 decl, is_extern);
1704 current_name = NULL;
1705 }
Sam Ravnborg70f75242007-09-01 10:26:32 +02001706 (yyval) = (yyvsp[(3) - (3)]);
Sam Ravnborgc40f5642005-12-26 22:53:25 +01001707 ;}
1708 break;
1709
Sam Ravnborgc40f5642005-12-26 22:53:25 +01001710 case 17:
Michal Marek303fc012011-02-15 16:04:35 +01001711
Sam Ravnborg70f75242007-09-01 10:26:32 +02001712 { (yyval) = NULL; ;}
Sam Ravnborgc40f5642005-12-26 22:53:25 +01001713 break;
1714
1715 case 19:
Michal Marek303fc012011-02-15 16:04:35 +01001716
Sam Ravnborg70f75242007-09-01 10:26:32 +02001717 { struct string_list *decl = *(yyvsp[(1) - (1)]);
1718 *(yyvsp[(1) - (1)]) = NULL;
1719 add_symbol(current_name,
1720 is_typedef ? SYM_TYPEDEF : SYM_NORMAL, decl, is_extern);
1721 current_name = NULL;
1722 (yyval) = (yyvsp[(1) - (1)]);
1723 ;}
Sam Ravnborgc40f5642005-12-26 22:53:25 +01001724 break;
1725
1726 case 20:
Michal Marek303fc012011-02-15 16:04:35 +01001727
Sam Ravnborg70f75242007-09-01 10:26:32 +02001728 { struct string_list *decl = *(yyvsp[(3) - (3)]);
1729 *(yyvsp[(3) - (3)]) = NULL;
1730 free_list(*(yyvsp[(2) - (3)]), NULL);
1731 *(yyvsp[(2) - (3)]) = decl_spec;
1732 add_symbol(current_name,
1733 is_typedef ? SYM_TYPEDEF : SYM_NORMAL, decl, is_extern);
1734 current_name = NULL;
1735 (yyval) = (yyvsp[(3) - (3)]);
1736 ;}
1737 break;
1738
1739 case 21:
Michal Marek303fc012011-02-15 16:04:35 +01001740
Sam Ravnborg70f75242007-09-01 10:26:32 +02001741 { (yyval) = (yyvsp[(4) - (4)]) ? (yyvsp[(4) - (4)]) : (yyvsp[(3) - (4)]) ? (yyvsp[(3) - (4)]) : (yyvsp[(2) - (4)]) ? (yyvsp[(2) - (4)]) : (yyvsp[(1) - (4)]); ;}
Sam Ravnborgc40f5642005-12-26 22:53:25 +01001742 break;
1743
1744 case 22:
Michal Marek303fc012011-02-15 16:04:35 +01001745
Sam Ravnborg70f75242007-09-01 10:26:32 +02001746 { decl_spec = NULL; ;}
Sam Ravnborgc40f5642005-12-26 22:53:25 +01001747 break;
1748
1749 case 24:
Michal Marek303fc012011-02-15 16:04:35 +01001750
Sam Ravnborg70f75242007-09-01 10:26:32 +02001751 { decl_spec = *(yyvsp[(1) - (1)]); ;}
1752 break;
1753
1754 case 25:
Michal Marek303fc012011-02-15 16:04:35 +01001755
Sam Ravnborg70f75242007-09-01 10:26:32 +02001756 { decl_spec = *(yyvsp[(2) - (2)]); ;}
1757 break;
1758
1759 case 26:
Michal Marek303fc012011-02-15 16:04:35 +01001760
Sam Ravnborgc40f5642005-12-26 22:53:25 +01001761 { /* Version 2 checksumming ignores storage class, as that
Linus Torvalds1da177e2005-04-16 15:20:36 -07001762 is really irrelevant to the linkage. */
Sam Ravnborg70f75242007-09-01 10:26:32 +02001763 remove_node((yyvsp[(1) - (1)]));
1764 (yyval) = (yyvsp[(1) - (1)]);
Sam Ravnborgc40f5642005-12-26 22:53:25 +01001765 ;}
1766 break;
1767
Sam Ravnborg70f75242007-09-01 10:26:32 +02001768 case 31:
Michal Marek303fc012011-02-15 16:04:35 +01001769
Sam Ravnborg70f75242007-09-01 10:26:32 +02001770 { is_extern = 1; (yyval) = (yyvsp[(1) - (1)]); ;}
Sam Ravnborgc40f5642005-12-26 22:53:25 +01001771 break;
1772
Sam Ravnborg70f75242007-09-01 10:26:32 +02001773 case 32:
Michal Marek303fc012011-02-15 16:04:35 +01001774
Sam Ravnborg70f75242007-09-01 10:26:32 +02001775 { is_extern = 0; (yyval) = (yyvsp[(1) - (1)]); ;}
Sam Ravnborgc40f5642005-12-26 22:53:25 +01001776 break;
1777
1778 case 37:
Michal Marek303fc012011-02-15 16:04:35 +01001779
Sam Ravnborg70f75242007-09-01 10:26:32 +02001780 { remove_node((yyvsp[(1) - (2)])); (*(yyvsp[(2) - (2)]))->tag = SYM_STRUCT; (yyval) = (yyvsp[(2) - (2)]); ;}
Sam Ravnborgc40f5642005-12-26 22:53:25 +01001781 break;
1782
1783 case 38:
Michal Marek303fc012011-02-15 16:04:35 +01001784
Sam Ravnborg70f75242007-09-01 10:26:32 +02001785 { remove_node((yyvsp[(1) - (2)])); (*(yyvsp[(2) - (2)]))->tag = SYM_UNION; (yyval) = (yyvsp[(2) - (2)]); ;}
Sam Ravnborgc40f5642005-12-26 22:53:25 +01001786 break;
1787
1788 case 39:
Michal Marek303fc012011-02-15 16:04:35 +01001789
Sam Ravnborg70f75242007-09-01 10:26:32 +02001790 { remove_node((yyvsp[(1) - (2)])); (*(yyvsp[(2) - (2)]))->tag = SYM_ENUM; (yyval) = (yyvsp[(2) - (2)]); ;}
Sam Ravnborgc40f5642005-12-26 22:53:25 +01001791 break;
1792
1793 case 40:
Michal Marek303fc012011-02-15 16:04:35 +01001794
Sam Ravnborg70f75242007-09-01 10:26:32 +02001795 { struct string_list *s = *(yyvsp[(3) - (3)]), *i = *(yyvsp[(2) - (3)]), *r;
1796 r = copy_node(i); r->tag = SYM_STRUCT;
1797 r->next = (*(yyvsp[(1) - (3)]))->next; *(yyvsp[(3) - (3)]) = r; (*(yyvsp[(1) - (3)]))->next = NULL;
1798 add_symbol(i->string, SYM_STRUCT, s, is_extern);
1799 (yyval) = (yyvsp[(3) - (3)]);
Sam Ravnborgc40f5642005-12-26 22:53:25 +01001800 ;}
1801 break;
1802
1803 case 41:
Michal Marek303fc012011-02-15 16:04:35 +01001804
Sam Ravnborg70f75242007-09-01 10:26:32 +02001805 { struct string_list *s = *(yyvsp[(3) - (3)]), *i = *(yyvsp[(2) - (3)]), *r;
1806 r = copy_node(i); r->tag = SYM_UNION;
1807 r->next = (*(yyvsp[(1) - (3)]))->next; *(yyvsp[(3) - (3)]) = r; (*(yyvsp[(1) - (3)]))->next = NULL;
1808 add_symbol(i->string, SYM_UNION, s, is_extern);
1809 (yyval) = (yyvsp[(3) - (3)]);
Sam Ravnborgc40f5642005-12-26 22:53:25 +01001810 ;}
1811 break;
1812
Sam Ravnborg70f75242007-09-01 10:26:32 +02001813 case 42:
Michal Marek303fc012011-02-15 16:04:35 +01001814
Sam Ravnborg70f75242007-09-01 10:26:32 +02001815 { struct string_list *s = *(yyvsp[(3) - (3)]), *i = *(yyvsp[(2) - (3)]), *r;
1816 r = copy_node(i); r->tag = SYM_ENUM;
1817 r->next = (*(yyvsp[(1) - (3)]))->next; *(yyvsp[(3) - (3)]) = r; (*(yyvsp[(1) - (3)]))->next = NULL;
1818 add_symbol(i->string, SYM_ENUM, s, is_extern);
1819 (yyval) = (yyvsp[(3) - (3)]);
1820 ;}
1821 break;
1822
1823 case 43:
Michal Marek303fc012011-02-15 16:04:35 +01001824
Michal Marek303fc012011-02-15 16:04:35 +01001825 { add_symbol(NULL, SYM_ENUM, NULL, 0); (yyval) = (yyvsp[(2) - (2)]); ;}
Sam Ravnborg70f75242007-09-01 10:26:32 +02001826 break;
1827
1828 case 44:
Michal Marek303fc012011-02-15 16:04:35 +01001829
Sam Ravnborg70f75242007-09-01 10:26:32 +02001830 { (yyval) = (yyvsp[(2) - (2)]); ;}
1831 break;
1832
1833 case 45:
Michal Marek303fc012011-02-15 16:04:35 +01001834
Sam Ravnborg70f75242007-09-01 10:26:32 +02001835 { (yyval) = (yyvsp[(2) - (2)]); ;}
1836 break;
1837
1838 case 56:
Michal Marek303fc012011-02-15 16:04:35 +01001839
Sam Ravnborg70f75242007-09-01 10:26:32 +02001840 { (*(yyvsp[(1) - (1)]))->tag = SYM_TYPEDEF; (yyval) = (yyvsp[(1) - (1)]); ;}
1841 break;
1842
1843 case 57:
Michal Marek303fc012011-02-15 16:04:35 +01001844
Sam Ravnborg70f75242007-09-01 10:26:32 +02001845 { (yyval) = (yyvsp[(2) - (2)]) ? (yyvsp[(2) - (2)]) : (yyvsp[(1) - (2)]); ;}
1846 break;
1847
1848 case 58:
Michal Marek303fc012011-02-15 16:04:35 +01001849
Sam Ravnborg70f75242007-09-01 10:26:32 +02001850 { (yyval) = NULL; ;}
1851 break;
1852
1853 case 61:
Michal Marek303fc012011-02-15 16:04:35 +01001854
Sam Ravnborg70f75242007-09-01 10:26:32 +02001855 { (yyval) = (yyvsp[(2) - (2)]); ;}
1856 break;
1857
1858 case 65:
Michal Marek303fc012011-02-15 16:04:35 +01001859
Sam Ravnborg70f75242007-09-01 10:26:32 +02001860 { /* restrict has no effect in prototypes so ignore it */
1861 remove_node((yyvsp[(1) - (1)]));
1862 (yyval) = (yyvsp[(1) - (1)]);
1863 ;}
Sam Ravnborgc40f5642005-12-26 22:53:25 +01001864 break;
1865
1866 case 66:
Michal Marek303fc012011-02-15 16:04:35 +01001867
Sam Ravnborg70f75242007-09-01 10:26:32 +02001868 { (yyval) = (yyvsp[(2) - (2)]); ;}
1869 break;
1870
1871 case 68:
Michal Marek303fc012011-02-15 16:04:35 +01001872
Sam Ravnborgc40f5642005-12-26 22:53:25 +01001873 { if (current_name != NULL) {
Linus Torvalds1da177e2005-04-16 15:20:36 -07001874 error_with_pos("unexpected second declaration name");
1875 YYERROR;
1876 } else {
Sam Ravnborg70f75242007-09-01 10:26:32 +02001877 current_name = (*(yyvsp[(1) - (1)]))->string;
1878 (yyval) = (yyvsp[(1) - (1)]);
Linus Torvalds1da177e2005-04-16 15:20:36 -07001879 }
Sam Ravnborgc40f5642005-12-26 22:53:25 +01001880 ;}
1881 break;
1882
Sam Ravnborgc40f5642005-12-26 22:53:25 +01001883 case 69:
Michal Marek303fc012011-02-15 16:04:35 +01001884
Sam Ravnborg70f75242007-09-01 10:26:32 +02001885 { (yyval) = (yyvsp[(4) - (4)]); ;}
Sam Ravnborgc40f5642005-12-26 22:53:25 +01001886 break;
1887
1888 case 70:
Michal Marek303fc012011-02-15 16:04:35 +01001889
Sam Ravnborg70f75242007-09-01 10:26:32 +02001890 { (yyval) = (yyvsp[(4) - (4)]); ;}
Sam Ravnborgc40f5642005-12-26 22:53:25 +01001891 break;
1892
1893 case 71:
Michal Marek303fc012011-02-15 16:04:35 +01001894
Sam Ravnborg70f75242007-09-01 10:26:32 +02001895 { (yyval) = (yyvsp[(2) - (2)]); ;}
Sam Ravnborgc40f5642005-12-26 22:53:25 +01001896 break;
1897
1898 case 72:
Michal Marek303fc012011-02-15 16:04:35 +01001899
Sam Ravnborg70f75242007-09-01 10:26:32 +02001900 { (yyval) = (yyvsp[(3) - (3)]); ;}
Sam Ravnborgc40f5642005-12-26 22:53:25 +01001901 break;
1902
Sam Ravnborg70f75242007-09-01 10:26:32 +02001903 case 73:
Michal Marek303fc012011-02-15 16:04:35 +01001904
Sam Ravnborg70f75242007-09-01 10:26:32 +02001905 { (yyval) = (yyvsp[(3) - (3)]); ;}
Sam Ravnborgc40f5642005-12-26 22:53:25 +01001906 break;
1907
Sam Ravnborg70f75242007-09-01 10:26:32 +02001908 case 74:
Michal Marek303fc012011-02-15 16:04:35 +01001909
Sam Ravnborg70f75242007-09-01 10:26:32 +02001910 { (yyval) = (yyvsp[(2) - (2)]); ;}
Sam Ravnborgc40f5642005-12-26 22:53:25 +01001911 break;
1912
1913 case 78:
Michal Marek303fc012011-02-15 16:04:35 +01001914
Sam Ravnborg70f75242007-09-01 10:26:32 +02001915 { (yyval) = (yyvsp[(4) - (4)]); ;}
Sam Ravnborgc40f5642005-12-26 22:53:25 +01001916 break;
1917
1918 case 79:
Michal Marek303fc012011-02-15 16:04:35 +01001919
Sam Ravnborg70f75242007-09-01 10:26:32 +02001920 { (yyval) = (yyvsp[(4) - (4)]); ;}
Sam Ravnborgc40f5642005-12-26 22:53:25 +01001921 break;
1922
1923 case 80:
Michal Marek303fc012011-02-15 16:04:35 +01001924
Sam Ravnborg70f75242007-09-01 10:26:32 +02001925 { (yyval) = (yyvsp[(2) - (2)]); ;}
Sam Ravnborgc40f5642005-12-26 22:53:25 +01001926 break;
1927
1928 case 81:
Michal Marek303fc012011-02-15 16:04:35 +01001929
Sam Ravnborg70f75242007-09-01 10:26:32 +02001930 { (yyval) = (yyvsp[(3) - (3)]); ;}
1931 break;
1932
1933 case 82:
Michal Marek303fc012011-02-15 16:04:35 +01001934
Sam Ravnborg70f75242007-09-01 10:26:32 +02001935 { (yyval) = (yyvsp[(3) - (3)]); ;}
Sam Ravnborgc40f5642005-12-26 22:53:25 +01001936 break;
1937
1938 case 83:
Michal Marek303fc012011-02-15 16:04:35 +01001939
Sam Ravnborg70f75242007-09-01 10:26:32 +02001940 { (yyval) = (yyvsp[(2) - (2)]); ;}
Sam Ravnborgc40f5642005-12-26 22:53:25 +01001941 break;
1942
Sam Ravnborg70f75242007-09-01 10:26:32 +02001943 case 85:
Michal Marek303fc012011-02-15 16:04:35 +01001944
Sam Ravnborg70f75242007-09-01 10:26:32 +02001945 { (yyval) = (yyvsp[(3) - (3)]); ;}
1946 break;
1947
1948 case 86:
Michal Marek303fc012011-02-15 16:04:35 +01001949
Sam Ravnborgc40f5642005-12-26 22:53:25 +01001950 { (yyval) = NULL; ;}
1951 break;
1952
Sam Ravnborgc40f5642005-12-26 22:53:25 +01001953 case 89:
Michal Marek303fc012011-02-15 16:04:35 +01001954
Sam Ravnborg70f75242007-09-01 10:26:32 +02001955 { (yyval) = (yyvsp[(3) - (3)]); ;}
1956 break;
1957
1958 case 90:
Michal Marek303fc012011-02-15 16:04:35 +01001959
Sam Ravnborg70f75242007-09-01 10:26:32 +02001960 { (yyval) = (yyvsp[(2) - (2)]) ? (yyvsp[(2) - (2)]) : (yyvsp[(1) - (2)]); ;}
Sam Ravnborgc40f5642005-12-26 22:53:25 +01001961 break;
1962
1963 case 91:
Michal Marek303fc012011-02-15 16:04:35 +01001964
Sam Ravnborg70f75242007-09-01 10:26:32 +02001965 { (yyval) = (yyvsp[(2) - (2)]) ? (yyvsp[(2) - (2)]) : (yyvsp[(1) - (2)]); ;}
Sam Ravnborgc40f5642005-12-26 22:53:25 +01001966 break;
1967
1968 case 93:
Michal Marek303fc012011-02-15 16:04:35 +01001969
Sam Ravnborg70f75242007-09-01 10:26:32 +02001970 { (yyval) = NULL; ;}
Sam Ravnborgc40f5642005-12-26 22:53:25 +01001971 break;
1972
1973 case 94:
Michal Marek303fc012011-02-15 16:04:35 +01001974
Sam Ravnborg70f75242007-09-01 10:26:32 +02001975 { /* For version 2 checksums, we don't want to remember
1976 private parameter names. */
1977 remove_node((yyvsp[(1) - (1)]));
1978 (yyval) = (yyvsp[(1) - (1)]);
Sam Ravnborgc40f5642005-12-26 22:53:25 +01001979 ;}
1980 break;
1981
Sam Ravnborg70f75242007-09-01 10:26:32 +02001982 case 95:
Michal Marek303fc012011-02-15 16:04:35 +01001983
Sam Ravnborg70f75242007-09-01 10:26:32 +02001984 { remove_node((yyvsp[(1) - (1)]));
1985 (yyval) = (yyvsp[(1) - (1)]);
1986 ;}
1987 break;
1988
1989 case 96:
Michal Marek303fc012011-02-15 16:04:35 +01001990
Sam Ravnborg70f75242007-09-01 10:26:32 +02001991 { (yyval) = (yyvsp[(4) - (4)]); ;}
1992 break;
1993
1994 case 97:
Michal Marek303fc012011-02-15 16:04:35 +01001995
Sam Ravnborg70f75242007-09-01 10:26:32 +02001996 { (yyval) = (yyvsp[(4) - (4)]); ;}
1997 break;
1998
1999 case 98:
Michal Marek303fc012011-02-15 16:04:35 +01002000
Sam Ravnborg70f75242007-09-01 10:26:32 +02002001 { (yyval) = (yyvsp[(2) - (2)]); ;}
2002 break;
2003
2004 case 99:
Michal Marek303fc012011-02-15 16:04:35 +01002005
Sam Ravnborg70f75242007-09-01 10:26:32 +02002006 { (yyval) = (yyvsp[(3) - (3)]); ;}
2007 break;
2008
Sam Ravnborgc40f5642005-12-26 22:53:25 +01002009 case 100:
Michal Marek303fc012011-02-15 16:04:35 +01002010
Sam Ravnborg70f75242007-09-01 10:26:32 +02002011 { (yyval) = (yyvsp[(3) - (3)]); ;}
2012 break;
2013
2014 case 101:
Michal Marek303fc012011-02-15 16:04:35 +01002015
Sam Ravnborg70f75242007-09-01 10:26:32 +02002016 { struct string_list *decl = *(yyvsp[(2) - (3)]);
2017 *(yyvsp[(2) - (3)]) = NULL;
2018 add_symbol(current_name, SYM_NORMAL, decl, is_extern);
2019 (yyval) = (yyvsp[(3) - (3)]);
2020 ;}
Sam Ravnborgc40f5642005-12-26 22:53:25 +01002021 break;
2022
2023 case 102:
Michal Marek303fc012011-02-15 16:04:35 +01002024
Sam Ravnborg70f75242007-09-01 10:26:32 +02002025 { (yyval) = NULL; ;}
Sam Ravnborgc40f5642005-12-26 22:53:25 +01002026 break;
2027
2028 case 104:
Michal Marek303fc012011-02-15 16:04:35 +01002029
Sam Ravnborg70f75242007-09-01 10:26:32 +02002030 { remove_list((yyvsp[(2) - (2)]), &(*(yyvsp[(1) - (2)]))->next); (yyval) = (yyvsp[(2) - (2)]); ;}
Sam Ravnborgc40f5642005-12-26 22:53:25 +01002031 break;
2032
2033 case 105:
Michal Marek303fc012011-02-15 16:04:35 +01002034
Sam Ravnborg70f75242007-09-01 10:26:32 +02002035 { (yyval) = (yyvsp[(3) - (3)]); ;}
2036 break;
2037
2038 case 106:
Michal Marek303fc012011-02-15 16:04:35 +01002039
Sam Ravnborg70f75242007-09-01 10:26:32 +02002040 { (yyval) = (yyvsp[(3) - (3)]); ;}
2041 break;
2042
2043 case 107:
Michal Marek303fc012011-02-15 16:04:35 +01002044
Sam Ravnborgc40f5642005-12-26 22:53:25 +01002045 { (yyval) = NULL; ;}
2046 break;
2047
Sam Ravnborgc40f5642005-12-26 22:53:25 +01002048 case 110:
Michal Marek303fc012011-02-15 16:04:35 +01002049
Sam Ravnborg70f75242007-09-01 10:26:32 +02002050 { (yyval) = (yyvsp[(2) - (2)]); ;}
Sam Ravnborgc40f5642005-12-26 22:53:25 +01002051 break;
2052
2053 case 111:
Michal Marek303fc012011-02-15 16:04:35 +01002054
Sam Ravnborg70f75242007-09-01 10:26:32 +02002055 { (yyval) = (yyvsp[(3) - (3)]); ;}
2056 break;
2057
2058 case 112:
Michal Marek303fc012011-02-15 16:04:35 +01002059
Sam Ravnborg70f75242007-09-01 10:26:32 +02002060 { (yyval) = (yyvsp[(2) - (2)]); ;}
2061 break;
2062
2063 case 113:
Michal Marek303fc012011-02-15 16:04:35 +01002064
Sam Ravnborgc40f5642005-12-26 22:53:25 +01002065 { (yyval) = NULL; ;}
2066 break;
2067
Sam Ravnborgc40f5642005-12-26 22:53:25 +01002068 case 116:
Michal Marek303fc012011-02-15 16:04:35 +01002069
Sam Ravnborg70f75242007-09-01 10:26:32 +02002070 { (yyval) = (yyvsp[(3) - (3)]); ;}
2071 break;
2072
2073 case 117:
Michal Marek303fc012011-02-15 16:04:35 +01002074
Sam Ravnborg70f75242007-09-01 10:26:32 +02002075 { (yyval) = (yyvsp[(2) - (2)]) ? (yyvsp[(2) - (2)]) : (yyvsp[(1) - (2)]); ;}
Sam Ravnborgc40f5642005-12-26 22:53:25 +01002076 break;
2077
2078 case 118:
Michal Marek303fc012011-02-15 16:04:35 +01002079
Sam Ravnborg70f75242007-09-01 10:26:32 +02002080 { (yyval) = (yyvsp[(2) - (2)]); ;}
Sam Ravnborgc40f5642005-12-26 22:53:25 +01002081 break;
2082
Sam Ravnborg70f75242007-09-01 10:26:32 +02002083 case 120:
Michal Marek303fc012011-02-15 16:04:35 +01002084
Sam Ravnborg70f75242007-09-01 10:26:32 +02002085 { (yyval) = (yyvsp[(2) - (2)]); ;}
Sam Ravnborgc40f5642005-12-26 22:53:25 +01002086 break;
2087
2088 case 121:
Michal Marek303fc012011-02-15 16:04:35 +01002089
Sam Ravnborgc40f5642005-12-26 22:53:25 +01002090 { (yyval) = NULL; ;}
2091 break;
2092
Sam Ravnborg70f75242007-09-01 10:26:32 +02002093 case 123:
Michal Marek303fc012011-02-15 16:04:35 +01002094
Michal Marek303fc012011-02-15 16:04:35 +01002095 { (yyval) = (yyvsp[(3) - (3)]); ;}
Sam Ravnborg70f75242007-09-01 10:26:32 +02002096 break;
2097
Sam Ravnborgc40f5642005-12-26 22:53:25 +01002098 case 124:
Michal Marek303fc012011-02-15 16:04:35 +01002099
Michal Marek303fc012011-02-15 16:04:35 +01002100 { (yyval) = (yyvsp[(4) - (4)]); ;}
2101 break;
2102
2103 case 127:
2104
Michal Marek303fc012011-02-15 16:04:35 +01002105 {
2106 const char *name = strdup((*(yyvsp[(1) - (1)]))->string);
2107 add_symbol(name, SYM_ENUM_CONST, NULL, 0);
2108 ;}
2109 break;
2110
2111 case 128:
2112
Michal Marek303fc012011-02-15 16:04:35 +01002113 {
2114 const char *name = strdup((*(yyvsp[(1) - (3)]))->string);
2115 struct string_list *expr = copy_list_range(*(yyvsp[(3) - (3)]), *(yyvsp[(2) - (3)]));
2116 add_symbol(name, SYM_ENUM_CONST, expr, 0);
2117 ;}
2118 break;
2119
2120 case 129:
2121
Michal Marek303fc012011-02-15 16:04:35 +01002122 { (yyval) = (yyvsp[(2) - (2)]); ;}
2123 break;
2124
2125 case 130:
2126
Sam Ravnborg70f75242007-09-01 10:26:32 +02002127 { (yyval) = NULL; ;}
2128 break;
2129
Michal Marek303fc012011-02-15 16:04:35 +01002130 case 132:
2131
Sam Ravnborg70f75242007-09-01 10:26:32 +02002132 { export_symbol((*(yyvsp[(3) - (5)]))->string); (yyval) = (yyvsp[(5) - (5)]); ;}
Sam Ravnborgc40f5642005-12-26 22:53:25 +01002133 break;
2134
2135
Michal Marek303fc012011-02-15 16:04:35 +01002136
Sam Ravnborg70f75242007-09-01 10:26:32 +02002137 default: break;
Sam Ravnborgc40f5642005-12-26 22:53:25 +01002138 }
Sam Ravnborg70f75242007-09-01 10:26:32 +02002139 YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
Sam Ravnborgc40f5642005-12-26 22:53:25 +01002140
Sam Ravnborg70f75242007-09-01 10:26:32 +02002141 YYPOPSTACK (yylen);
2142 yylen = 0;
Sam Ravnborgc40f5642005-12-26 22:53:25 +01002143 YY_STACK_PRINT (yyss, yyssp);
Linus Torvalds1da177e2005-04-16 15:20:36 -07002144
2145 *++yyvsp = yyval;
2146
Sam Ravnborgc40f5642005-12-26 22:53:25 +01002147 /* Now `shift' the result of the reduction. Determine what state
2148 that goes to, based on the state we popped back to and the rule
2149 number reduced by. */
Linus Torvalds1da177e2005-04-16 15:20:36 -07002150
2151 yyn = yyr1[yyn];
2152
Sam Ravnborgc40f5642005-12-26 22:53:25 +01002153 yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
2154 if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
Linus Torvalds1da177e2005-04-16 15:20:36 -07002155 yystate = yytable[yystate];
2156 else
Sam Ravnborgc40f5642005-12-26 22:53:25 +01002157 yystate = yydefgoto[yyn - YYNTOKENS];
Linus Torvalds1da177e2005-04-16 15:20:36 -07002158
2159 goto yynewstate;
2160
Linus Torvalds1da177e2005-04-16 15:20:36 -07002161
Sam Ravnborgc40f5642005-12-26 22:53:25 +01002162/*------------------------------------.
2163| yyerrlab -- here on detecting error |
2164`------------------------------------*/
2165yyerrlab:
2166 /* If not already recovering from an error, report this error. */
2167 if (!yyerrstatus)
Linus Torvalds1da177e2005-04-16 15:20:36 -07002168 {
2169 ++yynerrs;
Sam Ravnborg70f75242007-09-01 10:26:32 +02002170#if ! YYERROR_VERBOSE
2171 yyerror (YY_("syntax error"));
2172#else
2173 {
2174 YYSIZE_T yysize = yysyntax_error (0, yystate, yychar);
2175 if (yymsg_alloc < yysize && yymsg_alloc < YYSTACK_ALLOC_MAXIMUM)
2176 {
2177 YYSIZE_T yyalloc = 2 * yysize;
2178 if (! (yysize <= yyalloc && yyalloc <= YYSTACK_ALLOC_MAXIMUM))
2179 yyalloc = YYSTACK_ALLOC_MAXIMUM;
2180 if (yymsg != yymsgbuf)
Sam Ravnborgc40f5642005-12-26 22:53:25 +01002181 YYSTACK_FREE (yymsg);
Sam Ravnborg70f75242007-09-01 10:26:32 +02002182 yymsg = (char *) YYSTACK_ALLOC (yyalloc);
2183 if (yymsg)
2184 yymsg_alloc = yyalloc;
2185 else
2186 {
2187 yymsg = yymsgbuf;
2188 yymsg_alloc = sizeof yymsgbuf;
2189 }
2190 }
2191
2192 if (0 < yysize && yysize <= yymsg_alloc)
2193 {
2194 (void) yysyntax_error (yymsg, yystate, yychar);
2195 yyerror (yymsg);
2196 }
2197 else
2198 {
2199 yyerror (YY_("syntax error"));
2200 if (yysize != 0)
2201 goto yyexhaustedlab;
2202 }
2203 }
2204#endif
Linus Torvalds1da177e2005-04-16 15:20:36 -07002205 }
2206
Sam Ravnborgc40f5642005-12-26 22:53:25 +01002207
Linus Torvalds1da177e2005-04-16 15:20:36 -07002208
2209 if (yyerrstatus == 3)
2210 {
Michal Marek303fc012011-02-15 16:04:35 +01002211 /* If just tried and failed to reuse lookahead token after an
Sam Ravnborgc40f5642005-12-26 22:53:25 +01002212 error, discard it. */
Linus Torvalds1da177e2005-04-16 15:20:36 -07002213
Sam Ravnborgc40f5642005-12-26 22:53:25 +01002214 if (yychar <= YYEOF)
Sam Ravnborg70f75242007-09-01 10:26:32 +02002215 {
2216 /* Return failure if at end of input. */
Sam Ravnborgc40f5642005-12-26 22:53:25 +01002217 if (yychar == YYEOF)
Sam Ravnborg70f75242007-09-01 10:26:32 +02002218 YYABORT;
2219 }
Sam Ravnborgc40f5642005-12-26 22:53:25 +01002220 else
2221 {
Sam Ravnborg70f75242007-09-01 10:26:32 +02002222 yydestruct ("Error: discarding",
2223 yytoken, &yylval);
Sam Ravnborgc40f5642005-12-26 22:53:25 +01002224 yychar = YYEMPTY;
2225 }
2226 }
2227
Michal Marek303fc012011-02-15 16:04:35 +01002228 /* Else will try to reuse lookahead token after shifting the error
Sam Ravnborgc40f5642005-12-26 22:53:25 +01002229 token. */
2230 goto yyerrlab1;
2231
2232
2233/*---------------------------------------------------.
2234| yyerrorlab -- error raised explicitly by YYERROR. |
2235`---------------------------------------------------*/
2236yyerrorlab:
2237
Sam Ravnborg70f75242007-09-01 10:26:32 +02002238 /* Pacify compilers like GCC when the user code never invokes
2239 YYERROR and the label yyerrorlab therefore never appears in user
2240 code. */
2241 if (/*CONSTCOND*/ 0)
Sam Ravnborgc40f5642005-12-26 22:53:25 +01002242 goto yyerrorlab;
Sam Ravnborgc40f5642005-12-26 22:53:25 +01002243
Sam Ravnborg70f75242007-09-01 10:26:32 +02002244 /* Do not reclaim the symbols of the rule which action triggered
2245 this YYERROR. */
2246 YYPOPSTACK (yylen);
2247 yylen = 0;
2248 YY_STACK_PRINT (yyss, yyssp);
Sam Ravnborgc40f5642005-12-26 22:53:25 +01002249 yystate = *yyssp;
2250 goto yyerrlab1;
2251
2252
2253/*-------------------------------------------------------------.
2254| yyerrlab1 -- common code for both syntax error and YYERROR. |
2255`-------------------------------------------------------------*/
2256yyerrlab1:
2257 yyerrstatus = 3; /* Each real token shifted decrements this. */
2258
2259 for (;;)
2260 {
2261 yyn = yypact[yystate];
2262 if (yyn != YYPACT_NINF)
2263 {
2264 yyn += YYTERROR;
2265 if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
2266 {
2267 yyn = yytable[yyn];
2268 if (0 < yyn)
2269 break;
2270 }
2271 }
2272
2273 /* Pop the current state because it cannot handle the error token. */
2274 if (yyssp == yyss)
Linus Torvalds1da177e2005-04-16 15:20:36 -07002275 YYABORT;
2276
Linus Torvalds1da177e2005-04-16 15:20:36 -07002277
Sam Ravnborg70f75242007-09-01 10:26:32 +02002278 yydestruct ("Error: popping",
2279 yystos[yystate], yyvsp);
2280 YYPOPSTACK (1);
Sam Ravnborgc40f5642005-12-26 22:53:25 +01002281 yystate = *yyssp;
2282 YY_STACK_PRINT (yyss, yyssp);
Linus Torvalds1da177e2005-04-16 15:20:36 -07002283 }
2284
Linus Torvalds1da177e2005-04-16 15:20:36 -07002285 *++yyvsp = yylval;
Sam Ravnborgc40f5642005-12-26 22:53:25 +01002286
2287
Sam Ravnborg70f75242007-09-01 10:26:32 +02002288 /* Shift the error token. */
Sam Ravnborgc40f5642005-12-26 22:53:25 +01002289 YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp);
Linus Torvalds1da177e2005-04-16 15:20:36 -07002290
2291 yystate = yyn;
2292 goto yynewstate;
2293
Linus Torvalds1da177e2005-04-16 15:20:36 -07002294
Sam Ravnborgc40f5642005-12-26 22:53:25 +01002295/*-------------------------------------.
2296| yyacceptlab -- YYACCEPT comes here. |
2297`-------------------------------------*/
2298yyacceptlab:
2299 yyresult = 0;
2300 goto yyreturn;
2301
2302/*-----------------------------------.
2303| yyabortlab -- YYABORT comes here. |
2304`-----------------------------------*/
2305yyabortlab:
Sam Ravnborgc40f5642005-12-26 22:53:25 +01002306 yyresult = 1;
2307 goto yyreturn;
2308
Michal Marek303fc012011-02-15 16:04:35 +01002309#if !defined(yyoverflow) || YYERROR_VERBOSE
Sam Ravnborg70f75242007-09-01 10:26:32 +02002310/*-------------------------------------------------.
2311| yyexhaustedlab -- memory exhaustion comes here. |
2312`-------------------------------------------------*/
2313yyexhaustedlab:
2314 yyerror (YY_("memory exhausted"));
Sam Ravnborgc40f5642005-12-26 22:53:25 +01002315 yyresult = 2;
2316 /* Fall through. */
Linus Torvalds1da177e2005-04-16 15:20:36 -07002317#endif
Sam Ravnborgc40f5642005-12-26 22:53:25 +01002318
2319yyreturn:
Michal Marek303fc012011-02-15 16:04:35 +01002320 if (yychar != YYEMPTY)
Sam Ravnborg70f75242007-09-01 10:26:32 +02002321 yydestruct ("Cleanup: discarding lookahead",
2322 yytoken, &yylval);
2323 /* Do not reclaim the symbols of the rule which action triggered
2324 this YYABORT or YYACCEPT. */
2325 YYPOPSTACK (yylen);
2326 YY_STACK_PRINT (yyss, yyssp);
2327 while (yyssp != yyss)
2328 {
2329 yydestruct ("Cleanup: popping",
2330 yystos[*yyssp], yyvsp);
2331 YYPOPSTACK (1);
2332 }
Sam Ravnborgc40f5642005-12-26 22:53:25 +01002333#ifndef yyoverflow
2334 if (yyss != yyssa)
2335 YYSTACK_FREE (yyss);
2336#endif
Sam Ravnborg70f75242007-09-01 10:26:32 +02002337#if YYERROR_VERBOSE
2338 if (yymsg != yymsgbuf)
2339 YYSTACK_FREE (yymsg);
2340#endif
2341 /* Make sure YYID is used. */
2342 return YYID (yyresult);
Linus Torvalds1da177e2005-04-16 15:20:36 -07002343}
Sam Ravnborgc40f5642005-12-26 22:53:25 +01002344
2345
Michal Marek303fc012011-02-15 16:04:35 +01002346
Linus Torvalds1da177e2005-04-16 15:20:36 -07002347
2348
2349static void
2350yyerror(const char *e)
2351{
2352 error_with_pos("%s", e);
2353}
Sam Ravnborgc40f5642005-12-26 22:53:25 +01002354