MIPS: Lemote 2F, Malta: Fix build warning
[zen-stable.git] / scripts / dtc / dtc-parser.tab.c_shipped
blob9be2eea18a304d8ca28cd812b6610fc546cfc00d
2 /* A Bison parser, made by GNU Bison 2.4.1.  */
4 /* Skeleton implementation for Bison's Yacc-like parsers in C
5    
6       Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006
7    Free Software Foundation, Inc.
8    
9    This program is free software: you can redistribute it and/or modify
10    it under the terms of the GNU General Public License as published by
11    the Free Software Foundation, either version 3 of the License, or
12    (at your option) any later version.
13    
14    This program is distributed in the hope that it will be useful,
15    but WITHOUT ANY WARRANTY; without even the implied warranty of
16    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17    GNU General Public License for more details.
18    
19    You should have received a copy of the GNU General Public License
20    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
22 /* As a special exception, you may create a larger work that contains
23    part or all of the Bison parser skeleton and distribute that work
24    under terms of your choice, so long as that work isn't itself a
25    parser generator using the skeleton or a modified version thereof
26    as a parser skeleton.  Alternatively, if you modify or redistribute
27    the parser skeleton itself, you may (at your option) remove this
28    special exception, which will cause the skeleton and the resulting
29    Bison output files to be licensed under the GNU General Public
30    License without this special exception.
31    
32    This special exception was added by the Free Software Foundation in
33    version 2.2 of Bison.  */
35 /* C LALR(1) parser skeleton written by Richard Stallman, by
36    simplifying the original so-called "semantic" parser.  */
38 /* All symbols defined below should begin with yy or YY, to avoid
39    infringing on user name space.  This should be done even for local
40    variables, as they might otherwise be expanded by user macros.
41    There are some unavoidable exceptions within include files to
42    define necessary library symbols; they are noted "INFRINGES ON
43    USER NAME SPACE" below.  */
45 /* Identify Bison output.  */
46 #define YYBISON 1
48 /* Bison version.  */
49 #define YYBISON_VERSION "2.4.1"
51 /* Skeleton name.  */
52 #define YYSKELETON_NAME "yacc.c"
54 /* Pure parsers.  */
55 #define YYPURE 0
57 /* Push parsers.  */
58 #define YYPUSH 0
60 /* Pull parsers.  */
61 #define YYPULL 1
63 /* Using locations.  */
64 #define YYLSP_NEEDED 0
68 /* Copy the first part of user declarations.  */
70 /* Line 189 of yacc.c  */
71 #line 21 "dtc-parser.y"
73 #include <stdio.h>
75 #include "dtc.h"
76 #include "srcpos.h"
78 YYLTYPE yylloc;
80 extern int yylex(void);
81 extern void print_error(char const *fmt, ...);
82 extern void yyerror(char const *s);
84 extern struct boot_info *the_boot_info;
85 extern int treesource_error;
87 static unsigned long long eval_literal(const char *s, int base, int bits);
90 /* Line 189 of yacc.c  */
91 #line 92 "dtc-parser.tab.c"
93 /* Enabling traces.  */
94 #ifndef YYDEBUG
95 # define YYDEBUG 0
96 #endif
98 /* Enabling verbose error messages.  */
99 #ifdef YYERROR_VERBOSE
100 # undef YYERROR_VERBOSE
101 # define YYERROR_VERBOSE 1
102 #else
103 # define YYERROR_VERBOSE 0
104 #endif
106 /* Enabling the token table.  */
107 #ifndef YYTOKEN_TABLE
108 # define YYTOKEN_TABLE 0
109 #endif
112 /* Tokens.  */
113 #ifndef YYTOKENTYPE
114 # define YYTOKENTYPE
115    /* Put the tokens into the symbol table, so that GDB and other debuggers
116       know about them.  */
117    enum yytokentype {
118      DT_V1 = 258,
119      DT_MEMRESERVE = 259,
120      DT_PROPNODENAME = 260,
121      DT_LITERAL = 261,
122      DT_BASE = 262,
123      DT_BYTE = 263,
124      DT_STRING = 264,
125      DT_LABEL = 265,
126      DT_REF = 266,
127      DT_INCBIN = 267
128    };
129 #endif
133 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
134 typedef union YYSTYPE
137 /* Line 214 of yacc.c  */
138 #line 39 "dtc-parser.y"
140         char *propnodename;
141         char *literal;
142         char *labelref;
143         unsigned int cbase;
144         uint8_t byte;
145         struct data data;
147         uint64_t addr;
148         cell_t cell;
149         struct property *prop;
150         struct property *proplist;
151         struct node *node;
152         struct node *nodelist;
153         struct reserve_info *re;
157 /* Line 214 of yacc.c  */
158 #line 159 "dtc-parser.tab.c"
159 } YYSTYPE;
160 # define YYSTYPE_IS_TRIVIAL 1
161 # define yystype YYSTYPE /* obsolescent; will be withdrawn */
162 # define YYSTYPE_IS_DECLARED 1
163 #endif
166 /* Copy the second part of user declarations.  */
169 /* Line 264 of yacc.c  */
170 #line 171 "dtc-parser.tab.c"
172 #ifdef short
173 # undef short
174 #endif
176 #ifdef YYTYPE_UINT8
177 typedef YYTYPE_UINT8 yytype_uint8;
178 #else
179 typedef unsigned char yytype_uint8;
180 #endif
182 #ifdef YYTYPE_INT8
183 typedef YYTYPE_INT8 yytype_int8;
184 #elif (defined __STDC__ || defined __C99__FUNC__ \
185      || defined __cplusplus || defined _MSC_VER)
186 typedef signed char yytype_int8;
187 #else
188 typedef short int yytype_int8;
189 #endif
191 #ifdef YYTYPE_UINT16
192 typedef YYTYPE_UINT16 yytype_uint16;
193 #else
194 typedef unsigned short int yytype_uint16;
195 #endif
197 #ifdef YYTYPE_INT16
198 typedef YYTYPE_INT16 yytype_int16;
199 #else
200 typedef short int yytype_int16;
201 #endif
203 #ifndef YYSIZE_T
204 # ifdef __SIZE_TYPE__
205 #  define YYSIZE_T __SIZE_TYPE__
206 # elif defined size_t
207 #  define YYSIZE_T size_t
208 # elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \
209      || defined __cplusplus || defined _MSC_VER)
210 #  include <stddef.h> /* INFRINGES ON USER NAME SPACE */
211 #  define YYSIZE_T size_t
212 # else
213 #  define YYSIZE_T unsigned int
214 # endif
215 #endif
217 #define YYSIZE_MAXIMUM ((YYSIZE_T) -1)
219 #ifndef YY_
220 # if YYENABLE_NLS
221 #  if ENABLE_NLS
222 #   include <libintl.h> /* INFRINGES ON USER NAME SPACE */
223 #   define YY_(msgid) dgettext ("bison-runtime", msgid)
224 #  endif
225 # endif
226 # ifndef YY_
227 #  define YY_(msgid) msgid
228 # endif
229 #endif
231 /* Suppress unused-variable warnings by "using" E.  */
232 #if ! defined lint || defined __GNUC__
233 # define YYUSE(e) ((void) (e))
234 #else
235 # define YYUSE(e) /* empty */
236 #endif
238 /* Identity function, used to suppress warnings about constant conditions.  */
239 #ifndef lint
240 # define YYID(n) (n)
241 #else
242 #if (defined __STDC__ || defined __C99__FUNC__ \
243      || defined __cplusplus || defined _MSC_VER)
244 static int
245 YYID (int yyi)
246 #else
247 static int
248 YYID (yyi)
249     int yyi;
250 #endif
252   return yyi;
254 #endif
256 #if ! defined yyoverflow || YYERROR_VERBOSE
258 /* The parser invokes alloca or malloc; define the necessary symbols.  */
260 # ifdef YYSTACK_USE_ALLOCA
261 #  if YYSTACK_USE_ALLOCA
262 #   ifdef __GNUC__
263 #    define YYSTACK_ALLOC __builtin_alloca
264 #   elif defined __BUILTIN_VA_ARG_INCR
265 #    include <alloca.h> /* INFRINGES ON USER NAME SPACE */
266 #   elif defined _AIX
267 #    define YYSTACK_ALLOC __alloca
268 #   elif defined _MSC_VER
269 #    include <malloc.h> /* INFRINGES ON USER NAME SPACE */
270 #    define alloca _alloca
271 #   else
272 #    define YYSTACK_ALLOC alloca
273 #    if ! defined _ALLOCA_H && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
274      || defined __cplusplus || defined _MSC_VER)
275 #     include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
276 #     ifndef _STDLIB_H
277 #      define _STDLIB_H 1
278 #     endif
279 #    endif
280 #   endif
281 #  endif
282 # endif
284 # ifdef YYSTACK_ALLOC
285    /* Pacify GCC's `empty if-body' warning.  */
286 #  define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0))
287 #  ifndef YYSTACK_ALLOC_MAXIMUM
288     /* The OS might guarantee only one guard page at the bottom of the stack,
289        and a page size can be as small as 4096 bytes.  So we cannot safely
290        invoke alloca (N) if N exceeds 4096.  Use a slightly smaller number
291        to allow for a few compiler-allocated temporary stack slots.  */
292 #   define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */
293 #  endif
294 # else
295 #  define YYSTACK_ALLOC YYMALLOC
296 #  define YYSTACK_FREE YYFREE
297 #  ifndef YYSTACK_ALLOC_MAXIMUM
298 #   define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
299 #  endif
300 #  if (defined __cplusplus && ! defined _STDLIB_H \
301        && ! ((defined YYMALLOC || defined malloc) \
302              && (defined YYFREE || defined free)))
303 #   include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
304 #   ifndef _STDLIB_H
305 #    define _STDLIB_H 1
306 #   endif
307 #  endif
308 #  ifndef YYMALLOC
309 #   define YYMALLOC malloc
310 #   if ! defined malloc && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
311      || defined __cplusplus || defined _MSC_VER)
312 void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
313 #   endif
314 #  endif
315 #  ifndef YYFREE
316 #   define YYFREE free
317 #   if ! defined free && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
318      || defined __cplusplus || defined _MSC_VER)
319 void free (void *); /* INFRINGES ON USER NAME SPACE */
320 #   endif
321 #  endif
322 # endif
323 #endif /* ! defined yyoverflow || YYERROR_VERBOSE */
326 #if (! defined yyoverflow \
327      && (! defined __cplusplus \
328          || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
330 /* A type that is properly aligned for any stack member.  */
331 union yyalloc
333   yytype_int16 yyss_alloc;
334   YYSTYPE yyvs_alloc;
337 /* The size of the maximum gap between one aligned stack and the next.  */
338 # define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
340 /* The size of an array large to enough to hold all stacks, each with
341    N elements.  */
342 # define YYSTACK_BYTES(N) \
343      ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \
344       + YYSTACK_GAP_MAXIMUM)
346 /* Copy COUNT objects from FROM to TO.  The source and destination do
347    not overlap.  */
348 # ifndef YYCOPY
349 #  if defined __GNUC__ && 1 < __GNUC__
350 #   define YYCOPY(To, From, Count) \
351       __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
352 #  else
353 #   define YYCOPY(To, From, Count)              \
354       do                                        \
355         {                                       \
356           YYSIZE_T yyi;                         \
357           for (yyi = 0; yyi < (Count); yyi++)   \
358             (To)[yyi] = (From)[yyi];            \
359         }                                       \
360       while (YYID (0))
361 #  endif
362 # endif
364 /* Relocate STACK from its old location to the new one.  The
365    local variables YYSIZE and YYSTACKSIZE give the old and new number of
366    elements in the stack, and YYPTR gives the new location of the
367    stack.  Advance YYPTR to a properly aligned location for the next
368    stack.  */
369 # define YYSTACK_RELOCATE(Stack_alloc, Stack)                           \
370     do                                                                  \
371       {                                                                 \
372         YYSIZE_T yynewbytes;                                            \
373         YYCOPY (&yyptr->Stack_alloc, Stack, yysize);                    \
374         Stack = &yyptr->Stack_alloc;                                    \
375         yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
376         yyptr += yynewbytes / sizeof (*yyptr);                          \
377       }                                                                 \
378     while (YYID (0))
380 #endif
382 /* YYFINAL -- State number of the termination state.  */
383 #define YYFINAL  4
384 /* YYLAST -- Last index in YYTABLE.  */
385 #define YYLAST   56
387 /* YYNTOKENS -- Number of terminals.  */
388 #define YYNTOKENS  25
389 /* YYNNTS -- Number of nonterminals.  */
390 #define YYNNTS  16
391 /* YYNRULES -- Number of rules.  */
392 #define YYNRULES  39
393 /* YYNRULES -- Number of states.  */
394 #define YYNSTATES  67
396 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
397 #define YYUNDEFTOK  2
398 #define YYMAXUTOK   267
400 #define YYTRANSLATE(YYX)                                                \
401   ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
403 /* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX.  */
404 static const yytype_uint8 yytranslate[] =
406        0,     2,     2,     2,     2,     2,     2,     2,     2,     2,
407        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
408        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
409        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
410       22,    24,     2,     2,    23,     2,     2,    14,     2,     2,
411        2,     2,     2,     2,     2,     2,     2,     2,     2,    13,
412       18,    17,    19,     2,     2,     2,     2,     2,     2,     2,
413        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
414        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
415        2,    20,     2,    21,     2,     2,     2,     2,     2,     2,
416        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
417        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
418        2,     2,     2,    15,     2,    16,     2,     2,     2,     2,
419        2,     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,
423        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
424        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
425        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
426        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
427        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
428        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
429        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
430        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
431        2,     2,     2,     2,     2,     2,     1,     2,     3,     4,
432        5,     6,     7,     8,     9,    10,    11,    12
435 #if YYDEBUG
436 /* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
437    YYRHS.  */
438 static const yytype_uint8 yyprhs[] =
440        0,     0,     3,     8,     9,    12,    17,    20,    22,    25,
441       29,    33,    39,    40,    43,    48,    51,    54,    57,    62,
442       67,    70,    80,    86,    89,    90,    93,    96,    97,   100,
443      103,   106,   108,   109,   112,   115,   116,   119,   122,   125
446 /* YYRHS -- A `-1'-separated list of the rules' RHS.  */
447 static const yytype_int8 yyrhs[] =
449       26,     0,    -1,     3,    13,    27,    30,    -1,    -1,    28,
450       27,    -1,     4,    29,    29,    13,    -1,    10,    28,    -1,
451        6,    -1,    14,    31,    -1,    30,    14,    31,    -1,    30,
452       11,    31,    -1,    15,    32,    39,    16,    13,    -1,    -1,
453       32,    33,    -1,     5,    17,    34,    13,    -1,     5,    13,
454       -1,    10,    33,    -1,    35,     9,    -1,    35,    18,    36,
455       19,    -1,    35,    20,    38,    21,    -1,    35,    11,    -1,
456       35,    12,    22,     9,    23,    29,    23,    29,    24,    -1,
457       35,    12,    22,     9,    24,    -1,    34,    10,    -1,    -1,
458       34,    23,    -1,    35,    10,    -1,    -1,    36,    37,    -1,
459       36,    11,    -1,    36,    10,    -1,     6,    -1,    -1,    38,
460        8,    -1,    38,    10,    -1,    -1,    40,    39,    -1,    40,
461       33,    -1,     5,    31,    -1,    10,    40,    -1
464 /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
465 static const yytype_uint16 yyrline[] =
467        0,    86,    86,    95,    98,   105,   109,   117,   124,   128,
468      132,   145,   153,   156,   163,   167,   171,   179,   183,   187,
469      191,   195,   212,   222,   230,   233,   237,   245,   248,   252,
470      257,   264,   272,   275,   279,   287,   290,   294,   302,   306
472 #endif
474 #if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE
475 /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
476    First, the terminals, then, starting at YYNTOKENS, nonterminals.  */
477 static const char *const yytname[] =
479   "$end", "error", "$undefined", "DT_V1", "DT_MEMRESERVE",
480   "DT_PROPNODENAME", "DT_LITERAL", "DT_BASE", "DT_BYTE", "DT_STRING",
481   "DT_LABEL", "DT_REF", "DT_INCBIN", "';'", "'/'", "'{'", "'}'", "'='",
482   "'<'", "'>'", "'['", "']'", "'('", "','", "')'", "$accept", "sourcefile",
483   "memreserves", "memreserve", "addr", "devicetree", "nodedef", "proplist",
484   "propdef", "propdata", "propdataprefix", "celllist", "cellval",
485   "bytestring", "subnodes", "subnode", 0
487 #endif
489 # ifdef YYPRINT
490 /* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to
491    token YYLEX-NUM.  */
492 static const yytype_uint16 yytoknum[] =
494        0,   256,   257,   258,   259,   260,   261,   262,   263,   264,
495      265,   266,   267,    59,    47,   123,   125,    61,    60,    62,
496       91,    93,    40,    44,    41
498 # endif
500 /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
501 static const yytype_uint8 yyr1[] =
503        0,    25,    26,    27,    27,    28,    28,    29,    30,    30,
504       30,    31,    32,    32,    33,    33,    33,    34,    34,    34,
505       34,    34,    34,    34,    35,    35,    35,    36,    36,    36,
506       36,    37,    38,    38,    38,    39,    39,    39,    40,    40
509 /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
510 static const yytype_uint8 yyr2[] =
512        0,     2,     4,     0,     2,     4,     2,     1,     2,     3,
513        3,     5,     0,     2,     4,     2,     2,     2,     4,     4,
514        2,     9,     5,     2,     0,     2,     2,     0,     2,     2,
515        2,     1,     0,     2,     2,     0,     2,     2,     2,     2
518 /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
519    STATE-NUM when YYTABLE doesn't specify something else to do.  Zero
520    means the default is an error.  */
521 static const yytype_uint8 yydefact[] =
523        0,     0,     0,     3,     1,     0,     0,     0,     3,     7,
524        0,     6,     0,     2,     4,     0,    12,     8,     0,     0,
525        5,    35,    10,     9,     0,     0,    13,     0,    35,    15,
526       24,    38,    16,    39,     0,    37,    36,     0,     0,    11,
527       23,    14,    25,    17,    26,    20,     0,    27,    32,     0,
528        0,     0,     0,    31,    30,    29,    18,    28,    33,    34,
529       19,     0,    22,     0,     0,     0,    21
532 /* YYDEFGOTO[NTERM-NUM].  */
533 static const yytype_int8 yydefgoto[] =
535       -1,     2,     7,     8,    10,    13,    17,    21,    26,    37,
536       38,    50,    57,    51,    27,    28
539 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
540    STATE-NUM.  */
541 #define YYPACT_NINF -12
542 static const yytype_int8 yypact[] =
544       10,   -11,    18,    -1,   -12,    22,    -1,    15,    -1,   -12,
545       22,   -12,    20,     1,   -12,    17,   -12,   -12,    20,    20,
546      -12,     6,   -12,   -12,    21,     6,   -12,    23,     6,   -12,
547      -12,   -12,   -12,   -12,    28,   -12,   -12,    -6,    13,   -12,
548      -12,   -12,   -12,   -12,   -12,   -12,    24,   -12,   -12,    33,
549       -5,     0,    -4,   -12,   -12,   -12,   -12,   -12,   -12,   -12,
550      -12,    22,   -12,    25,    22,    19,   -12
553 /* YYPGOTO[NTERM-NUM].  */
554 static const yytype_int8 yypgoto[] =
556      -12,   -12,    36,    39,   -10,   -12,     8,   -12,    12,   -12,
557      -12,   -12,   -12,   -12,    27,    31
560 /* YYTABLE[YYPACT[STATE-NUM]].  What to do in state STATE-NUM.  If
561    positive, shift that token.  If negative, reduce the rule which
562    number is the opposite.  If zero, do what YYDEFACT says.
563    If YYTABLE_NINF, syntax error.  */
564 #define YYTABLE_NINF -1
565 static const yytype_uint8 yytable[] =
567       15,    53,     3,     5,    40,    54,    55,    41,    58,     6,
568       59,    24,    18,     1,    56,    19,    25,    42,     4,    61,
569       62,    60,    43,    44,    45,    46,    22,    23,     9,    12,
570       20,    47,    31,    48,    29,    16,    16,    32,    30,    34,
571       35,    39,    52,    66,    14,    11,    49,     0,    64,     0,
572        0,    63,     0,     0,    65,    36,    33
575 static const yytype_int8 yycheck[] =
577       10,     6,    13,     4,    10,    10,    11,    13,     8,    10,
578       10,     5,    11,     3,    19,    14,    10,    23,     0,    23,
579       24,    21,     9,    10,    11,    12,    18,    19,     6,    14,
580       13,    18,    24,    20,    13,    15,    15,    25,    17,    16,
581       28,    13,     9,    24,     8,     6,    22,    -1,    23,    -1,
582       -1,    61,    -1,    -1,    64,    28,    25
585 /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
586    symbol of state STATE-NUM.  */
587 static const yytype_uint8 yystos[] =
589        0,     3,    26,    13,     0,     4,    10,    27,    28,     6,
590       29,    28,    14,    30,    27,    29,    15,    31,    11,    14,
591       13,    32,    31,    31,     5,    10,    33,    39,    40,    13,
592       17,    31,    33,    40,    16,    33,    39,    34,    35,    13,
593       10,    13,    23,     9,    10,    11,    12,    18,    20,    22,
594       36,    38,     9,     6,    10,    11,    19,    37,     8,    10,
595       21,    23,    24,    29,    23,    29,    24
598 #define yyerrok         (yyerrstatus = 0)
599 #define yyclearin       (yychar = YYEMPTY)
600 #define YYEMPTY         (-2)
601 #define YYEOF           0
603 #define YYACCEPT        goto yyacceptlab
604 #define YYABORT         goto yyabortlab
605 #define YYERROR         goto yyerrorlab
608 /* Like YYERROR except do call yyerror.  This remains here temporarily
609    to ease the transition to the new meaning of YYERROR, for GCC.
610    Once GCC version 2 has supplanted version 1, this can go.  */
612 #define YYFAIL          goto yyerrlab
614 #define YYRECOVERING()  (!!yyerrstatus)
616 #define YYBACKUP(Token, Value)                                  \
617 do                                                              \
618   if (yychar == YYEMPTY && yylen == 1)                          \
619     {                                                           \
620       yychar = (Token);                                         \
621       yylval = (Value);                                         \
622       yytoken = YYTRANSLATE (yychar);                           \
623       YYPOPSTACK (1);                                           \
624       goto yybackup;                                            \
625     }                                                           \
626   else                                                          \
627     {                                                           \
628       yyerror (YY_("syntax error: cannot back up")); \
629       YYERROR;                                                  \
630     }                                                           \
631 while (YYID (0))
634 #define YYTERROR        1
635 #define YYERRCODE       256
638 /* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
639    If N is 0, then set CURRENT to the empty location which ends
640    the previous symbol: RHS[0] (always defined).  */
642 #define YYRHSLOC(Rhs, K) ((Rhs)[K])
643 #ifndef YYLLOC_DEFAULT
644 # define YYLLOC_DEFAULT(Current, Rhs, N)                                \
645     do                                                                  \
646       if (YYID (N))                                                    \
647         {                                                               \
648           (Current).first_line   = YYRHSLOC (Rhs, 1).first_line;        \
649           (Current).first_column = YYRHSLOC (Rhs, 1).first_column;      \
650           (Current).last_line    = YYRHSLOC (Rhs, N).last_line;         \
651           (Current).last_column  = YYRHSLOC (Rhs, N).last_column;       \
652         }                                                               \
653       else                                                              \
654         {                                                               \
655           (Current).first_line   = (Current).last_line   =              \
656             YYRHSLOC (Rhs, 0).last_line;                                \
657           (Current).first_column = (Current).last_column =              \
658             YYRHSLOC (Rhs, 0).last_column;                              \
659         }                                                               \
660     while (YYID (0))
661 #endif
664 /* YY_LOCATION_PRINT -- Print the location on the stream.
665    This macro was not mandated originally: define only if we know
666    we won't break user code: when these are the locations we know.  */
668 #ifndef YY_LOCATION_PRINT
669 # if YYLTYPE_IS_TRIVIAL
670 #  define YY_LOCATION_PRINT(File, Loc)                  \
671      fprintf (File, "%d.%d-%d.%d",                      \
672               (Loc).first_line, (Loc).first_column,     \
673               (Loc).last_line,  (Loc).last_column)
674 # else
675 #  define YY_LOCATION_PRINT(File, Loc) ((void) 0)
676 # endif
677 #endif
680 /* YYLEX -- calling `yylex' with the right arguments.  */
682 #ifdef YYLEX_PARAM
683 # define YYLEX yylex (YYLEX_PARAM)
684 #else
685 # define YYLEX yylex ()
686 #endif
688 /* Enable debugging if requested.  */
689 #if YYDEBUG
691 # ifndef YYFPRINTF
692 #  include <stdio.h> /* INFRINGES ON USER NAME SPACE */
693 #  define YYFPRINTF fprintf
694 # endif
696 # define YYDPRINTF(Args)                        \
697 do {                                            \
698   if (yydebug)                                  \
699     YYFPRINTF Args;                             \
700 } while (YYID (0))
702 # define YY_SYMBOL_PRINT(Title, Type, Value, Location)                    \
703 do {                                                                      \
704   if (yydebug)                                                            \
705     {                                                                     \
706       YYFPRINTF (stderr, "%s ", Title);                                   \
707       yy_symbol_print (stderr,                                            \
708                   Type, Value); \
709       YYFPRINTF (stderr, "\n");                                           \
710     }                                                                     \
711 } while (YYID (0))
714 /*--------------------------------.
715 | Print this symbol on YYOUTPUT.  |
716 `--------------------------------*/
718 /*ARGSUSED*/
719 #if (defined __STDC__ || defined __C99__FUNC__ \
720      || defined __cplusplus || defined _MSC_VER)
721 static void
722 yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
723 #else
724 static void
725 yy_symbol_value_print (yyoutput, yytype, yyvaluep)
726     FILE *yyoutput;
727     int yytype;
728     YYSTYPE const * const yyvaluep;
729 #endif
731   if (!yyvaluep)
732     return;
733 # ifdef YYPRINT
734   if (yytype < YYNTOKENS)
735     YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
736 # else
737   YYUSE (yyoutput);
738 # endif
739   switch (yytype)
740     {
741       default:
742         break;
743     }
747 /*--------------------------------.
748 | Print this symbol on YYOUTPUT.  |
749 `--------------------------------*/
751 #if (defined __STDC__ || defined __C99__FUNC__ \
752      || defined __cplusplus || defined _MSC_VER)
753 static void
754 yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
755 #else
756 static void
757 yy_symbol_print (yyoutput, yytype, yyvaluep)
758     FILE *yyoutput;
759     int yytype;
760     YYSTYPE const * const yyvaluep;
761 #endif
763   if (yytype < YYNTOKENS)
764     YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
765   else
766     YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
768   yy_symbol_value_print (yyoutput, yytype, yyvaluep);
769   YYFPRINTF (yyoutput, ")");
772 /*------------------------------------------------------------------.
773 | yy_stack_print -- Print the state stack from its BOTTOM up to its |
774 | TOP (included).                                                   |
775 `------------------------------------------------------------------*/
777 #if (defined __STDC__ || defined __C99__FUNC__ \
778      || defined __cplusplus || defined _MSC_VER)
779 static void
780 yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop)
781 #else
782 static void
783 yy_stack_print (yybottom, yytop)
784     yytype_int16 *yybottom;
785     yytype_int16 *yytop;
786 #endif
788   YYFPRINTF (stderr, "Stack now");
789   for (; yybottom <= yytop; yybottom++)
790     {
791       int yybot = *yybottom;
792       YYFPRINTF (stderr, " %d", yybot);
793     }
794   YYFPRINTF (stderr, "\n");
797 # define YY_STACK_PRINT(Bottom, Top)                            \
798 do {                                                            \
799   if (yydebug)                                                  \
800     yy_stack_print ((Bottom), (Top));                           \
801 } while (YYID (0))
804 /*------------------------------------------------.
805 | Report that the YYRULE is going to be reduced.  |
806 `------------------------------------------------*/
808 #if (defined __STDC__ || defined __C99__FUNC__ \
809      || defined __cplusplus || defined _MSC_VER)
810 static void
811 yy_reduce_print (YYSTYPE *yyvsp, int yyrule)
812 #else
813 static void
814 yy_reduce_print (yyvsp, yyrule)
815     YYSTYPE *yyvsp;
816     int yyrule;
817 #endif
819   int yynrhs = yyr2[yyrule];
820   int yyi;
821   unsigned long int yylno = yyrline[yyrule];
822   YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n",
823              yyrule - 1, yylno);
824   /* The symbols being reduced.  */
825   for (yyi = 0; yyi < yynrhs; yyi++)
826     {
827       YYFPRINTF (stderr, "   $%d = ", yyi + 1);
828       yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi],
829                        &(yyvsp[(yyi + 1) - (yynrhs)])
830                                        );
831       YYFPRINTF (stderr, "\n");
832     }
835 # define YY_REDUCE_PRINT(Rule)          \
836 do {                                    \
837   if (yydebug)                          \
838     yy_reduce_print (yyvsp, Rule); \
839 } while (YYID (0))
841 /* Nonzero means print parse trace.  It is left uninitialized so that
842    multiple parsers can coexist.  */
843 int yydebug;
844 #else /* !YYDEBUG */
845 # define YYDPRINTF(Args)
846 # define YY_SYMBOL_PRINT(Title, Type, Value, Location)
847 # define YY_STACK_PRINT(Bottom, Top)
848 # define YY_REDUCE_PRINT(Rule)
849 #endif /* !YYDEBUG */
852 /* YYINITDEPTH -- initial size of the parser's stacks.  */
853 #ifndef YYINITDEPTH
854 # define YYINITDEPTH 200
855 #endif
857 /* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
858    if the built-in stack extension method is used).
860    Do not make this value too large; the results are undefined if
861    YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH)
862    evaluated with infinite-precision integer arithmetic.  */
864 #ifndef YYMAXDEPTH
865 # define YYMAXDEPTH 10000
866 #endif
870 #if YYERROR_VERBOSE
872 # ifndef yystrlen
873 #  if defined __GLIBC__ && defined _STRING_H
874 #   define yystrlen strlen
875 #  else
876 /* Return the length of YYSTR.  */
877 #if (defined __STDC__ || defined __C99__FUNC__ \
878      || defined __cplusplus || defined _MSC_VER)
879 static YYSIZE_T
880 yystrlen (const char *yystr)
881 #else
882 static YYSIZE_T
883 yystrlen (yystr)
884     const char *yystr;
885 #endif
887   YYSIZE_T yylen;
888   for (yylen = 0; yystr[yylen]; yylen++)
889     continue;
890   return yylen;
892 #  endif
893 # endif
895 # ifndef yystpcpy
896 #  if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
897 #   define yystpcpy stpcpy
898 #  else
899 /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
900    YYDEST.  */
901 #if (defined __STDC__ || defined __C99__FUNC__ \
902      || defined __cplusplus || defined _MSC_VER)
903 static char *
904 yystpcpy (char *yydest, const char *yysrc)
905 #else
906 static char *
907 yystpcpy (yydest, yysrc)
908     char *yydest;
909     const char *yysrc;
910 #endif
912   char *yyd = yydest;
913   const char *yys = yysrc;
915   while ((*yyd++ = *yys++) != '\0')
916     continue;
918   return yyd - 1;
920 #  endif
921 # endif
923 # ifndef yytnamerr
924 /* Copy to YYRES the contents of YYSTR after stripping away unnecessary
925    quotes and backslashes, so that it's suitable for yyerror.  The
926    heuristic is that double-quoting is unnecessary unless the string
927    contains an apostrophe, a comma, or backslash (other than
928    backslash-backslash).  YYSTR is taken from yytname.  If YYRES is
929    null, do not copy; instead, return the length of what the result
930    would have been.  */
931 static YYSIZE_T
932 yytnamerr (char *yyres, const char *yystr)
934   if (*yystr == '"')
935     {
936       YYSIZE_T yyn = 0;
937       char const *yyp = yystr;
939       for (;;)
940         switch (*++yyp)
941           {
942           case '\'':
943           case ',':
944             goto do_not_strip_quotes;
946           case '\\':
947             if (*++yyp != '\\')
948               goto do_not_strip_quotes;
949             /* Fall through.  */
950           default:
951             if (yyres)
952               yyres[yyn] = *yyp;
953             yyn++;
954             break;
956           case '"':
957             if (yyres)
958               yyres[yyn] = '\0';
959             return yyn;
960           }
961     do_not_strip_quotes: ;
962     }
964   if (! yyres)
965     return yystrlen (yystr);
967   return yystpcpy (yyres, yystr) - yyres;
969 # endif
971 /* Copy into YYRESULT an error message about the unexpected token
972    YYCHAR while in state YYSTATE.  Return the number of bytes copied,
973    including the terminating null byte.  If YYRESULT is null, do not
974    copy anything; just return the number of bytes that would be
975    copied.  As a special case, return 0 if an ordinary "syntax error"
976    message will do.  Return YYSIZE_MAXIMUM if overflow occurs during
977    size calculation.  */
978 static YYSIZE_T
979 yysyntax_error (char *yyresult, int yystate, int yychar)
981   int yyn = yypact[yystate];
983   if (! (YYPACT_NINF < yyn && yyn <= YYLAST))
984     return 0;
985   else
986     {
987       int yytype = YYTRANSLATE (yychar);
988       YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]);
989       YYSIZE_T yysize = yysize0;
990       YYSIZE_T yysize1;
991       int yysize_overflow = 0;
992       enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
993       char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
994       int yyx;
996 # if 0
997       /* This is so xgettext sees the translatable formats that are
998          constructed on the fly.  */
999       YY_("syntax error, unexpected %s");
1000       YY_("syntax error, unexpected %s, expecting %s");
1001       YY_("syntax error, unexpected %s, expecting %s or %s");
1002       YY_("syntax error, unexpected %s, expecting %s or %s or %s");
1003       YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s");
1004 # endif
1005       char *yyfmt;
1006       char const *yyf;
1007       static char const yyunexpected[] = "syntax error, unexpected %s";
1008       static char const yyexpecting[] = ", expecting %s";
1009       static char const yyor[] = " or %s";
1010       char yyformat[sizeof yyunexpected
1011                     + sizeof yyexpecting - 1
1012                     + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2)
1013                        * (sizeof yyor - 1))];
1014       char const *yyprefix = yyexpecting;
1016       /* Start YYX at -YYN if negative to avoid negative indexes in
1017          YYCHECK.  */
1018       int yyxbegin = yyn < 0 ? -yyn : 0;
1020       /* Stay within bounds of both yycheck and yytname.  */
1021       int yychecklim = YYLAST - yyn + 1;
1022       int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
1023       int yycount = 1;
1025       yyarg[0] = yytname[yytype];
1026       yyfmt = yystpcpy (yyformat, yyunexpected);
1028       for (yyx = yyxbegin; yyx < yyxend; ++yyx)
1029         if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
1030           {
1031             if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
1032               {
1033                 yycount = 1;
1034                 yysize = yysize0;
1035                 yyformat[sizeof yyunexpected - 1] = '\0';
1036                 break;
1037               }
1038             yyarg[yycount++] = yytname[yyx];
1039             yysize1 = yysize + yytnamerr (0, yytname[yyx]);
1040             yysize_overflow |= (yysize1 < yysize);
1041             yysize = yysize1;
1042             yyfmt = yystpcpy (yyfmt, yyprefix);
1043             yyprefix = yyor;
1044           }
1046       yyf = YY_(yyformat);
1047       yysize1 = yysize + yystrlen (yyf);
1048       yysize_overflow |= (yysize1 < yysize);
1049       yysize = yysize1;
1051       if (yysize_overflow)
1052         return YYSIZE_MAXIMUM;
1054       if (yyresult)
1055         {
1056           /* Avoid sprintf, as that infringes on the user's name space.
1057              Don't have undefined behavior even if the translation
1058              produced a string with the wrong number of "%s"s.  */
1059           char *yyp = yyresult;
1060           int yyi = 0;
1061           while ((*yyp = *yyf) != '\0')
1062             {
1063               if (*yyp == '%' && yyf[1] == 's' && yyi < yycount)
1064                 {
1065                   yyp += yytnamerr (yyp, yyarg[yyi++]);
1066                   yyf += 2;
1067                 }
1068               else
1069                 {
1070                   yyp++;
1071                   yyf++;
1072                 }
1073             }
1074         }
1075       return yysize;
1076     }
1078 #endif /* YYERROR_VERBOSE */
1081 /*-----------------------------------------------.
1082 | Release the memory associated to this symbol.  |
1083 `-----------------------------------------------*/
1085 /*ARGSUSED*/
1086 #if (defined __STDC__ || defined __C99__FUNC__ \
1087      || defined __cplusplus || defined _MSC_VER)
1088 static void
1089 yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep)
1090 #else
1091 static void
1092 yydestruct (yymsg, yytype, yyvaluep)
1093     const char *yymsg;
1094     int yytype;
1095     YYSTYPE *yyvaluep;
1096 #endif
1098   YYUSE (yyvaluep);
1100   if (!yymsg)
1101     yymsg = "Deleting";
1102   YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
1104   switch (yytype)
1105     {
1107       default:
1108         break;
1109     }
1112 /* Prevent warnings from -Wmissing-prototypes.  */
1113 #ifdef YYPARSE_PARAM
1114 #if defined __STDC__ || defined __cplusplus
1115 int yyparse (void *YYPARSE_PARAM);
1116 #else
1117 int yyparse ();
1118 #endif
1119 #else /* ! YYPARSE_PARAM */
1120 #if defined __STDC__ || defined __cplusplus
1121 int yyparse (void);
1122 #else
1123 int yyparse ();
1124 #endif
1125 #endif /* ! YYPARSE_PARAM */
1128 /* The lookahead symbol.  */
1129 int yychar;
1131 /* The semantic value of the lookahead symbol.  */
1132 YYSTYPE yylval;
1134 /* Number of syntax errors so far.  */
1135 int yynerrs;
1139 /*-------------------------.
1140 | yyparse or yypush_parse.  |
1141 `-------------------------*/
1143 #ifdef YYPARSE_PARAM
1144 #if (defined __STDC__ || defined __C99__FUNC__ \
1145      || defined __cplusplus || defined _MSC_VER)
1147 yyparse (void *YYPARSE_PARAM)
1148 #else
1150 yyparse (YYPARSE_PARAM)
1151     void *YYPARSE_PARAM;
1152 #endif
1153 #else /* ! YYPARSE_PARAM */
1154 #if (defined __STDC__ || defined __C99__FUNC__ \
1155      || defined __cplusplus || defined _MSC_VER)
1157 yyparse (void)
1158 #else
1160 yyparse ()
1162 #endif
1163 #endif
1167     int yystate;
1168     /* Number of tokens to shift before error messages enabled.  */
1169     int yyerrstatus;
1171     /* The stacks and their tools:
1172        `yyss': related to states.
1173        `yyvs': related to semantic values.
1175        Refer to the stacks thru separate pointers, to allow yyoverflow
1176        to reallocate them elsewhere.  */
1178     /* The state stack.  */
1179     yytype_int16 yyssa[YYINITDEPTH];
1180     yytype_int16 *yyss;
1181     yytype_int16 *yyssp;
1183     /* The semantic value stack.  */
1184     YYSTYPE yyvsa[YYINITDEPTH];
1185     YYSTYPE *yyvs;
1186     YYSTYPE *yyvsp;
1188     YYSIZE_T yystacksize;
1190   int yyn;
1191   int yyresult;
1192   /* Lookahead token as an internal (translated) token number.  */
1193   int yytoken;
1194   /* The variables used to return semantic value and location from the
1195      action routines.  */
1196   YYSTYPE yyval;
1198 #if YYERROR_VERBOSE
1199   /* Buffer for error messages, and its allocated size.  */
1200   char yymsgbuf[128];
1201   char *yymsg = yymsgbuf;
1202   YYSIZE_T yymsg_alloc = sizeof yymsgbuf;
1203 #endif
1205 #define YYPOPSTACK(N)   (yyvsp -= (N), yyssp -= (N))
1207   /* The number of symbols on the RHS of the reduced rule.
1208      Keep to zero when no symbol should be popped.  */
1209   int yylen = 0;
1211   yytoken = 0;
1212   yyss = yyssa;
1213   yyvs = yyvsa;
1214   yystacksize = YYINITDEPTH;
1216   YYDPRINTF ((stderr, "Starting parse\n"));
1218   yystate = 0;
1219   yyerrstatus = 0;
1220   yynerrs = 0;
1221   yychar = YYEMPTY; /* Cause a token to be read.  */
1223   /* Initialize stack pointers.
1224      Waste one element of value and location stack
1225      so that they stay on the same level as the state stack.
1226      The wasted elements are never initialized.  */
1227   yyssp = yyss;
1228   yyvsp = yyvs;
1230   goto yysetstate;
1232 /*------------------------------------------------------------.
1233 | yynewstate -- Push a new state, which is found in yystate.  |
1234 `------------------------------------------------------------*/
1235  yynewstate:
1236   /* In all cases, when you get here, the value and location stacks
1237      have just been pushed.  So pushing a state here evens the stacks.  */
1238   yyssp++;
1240  yysetstate:
1241   *yyssp = yystate;
1243   if (yyss + yystacksize - 1 <= yyssp)
1244     {
1245       /* Get the current used size of the three stacks, in elements.  */
1246       YYSIZE_T yysize = yyssp - yyss + 1;
1248 #ifdef yyoverflow
1249       {
1250         /* Give user a chance to reallocate the stack.  Use copies of
1251            these so that the &'s don't force the real ones into
1252            memory.  */
1253         YYSTYPE *yyvs1 = yyvs;
1254         yytype_int16 *yyss1 = yyss;
1256         /* Each stack pointer address is followed by the size of the
1257            data in use in that stack, in bytes.  This used to be a
1258            conditional around just the two extra args, but that might
1259            be undefined if yyoverflow is a macro.  */
1260         yyoverflow (YY_("memory exhausted"),
1261                     &yyss1, yysize * sizeof (*yyssp),
1262                     &yyvs1, yysize * sizeof (*yyvsp),
1263                     &yystacksize);
1265         yyss = yyss1;
1266         yyvs = yyvs1;
1267       }
1268 #else /* no yyoverflow */
1269 # ifndef YYSTACK_RELOCATE
1270       goto yyexhaustedlab;
1271 # else
1272       /* Extend the stack our own way.  */
1273       if (YYMAXDEPTH <= yystacksize)
1274         goto yyexhaustedlab;
1275       yystacksize *= 2;
1276       if (YYMAXDEPTH < yystacksize)
1277         yystacksize = YYMAXDEPTH;
1279       {
1280         yytype_int16 *yyss1 = yyss;
1281         union yyalloc *yyptr =
1282           (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
1283         if (! yyptr)
1284           goto yyexhaustedlab;
1285         YYSTACK_RELOCATE (yyss_alloc, yyss);
1286         YYSTACK_RELOCATE (yyvs_alloc, yyvs);
1287 #  undef YYSTACK_RELOCATE
1288         if (yyss1 != yyssa)
1289           YYSTACK_FREE (yyss1);
1290       }
1291 # endif
1292 #endif /* no yyoverflow */
1294       yyssp = yyss + yysize - 1;
1295       yyvsp = yyvs + yysize - 1;
1297       YYDPRINTF ((stderr, "Stack size increased to %lu\n",
1298                   (unsigned long int) yystacksize));
1300       if (yyss + yystacksize - 1 <= yyssp)
1301         YYABORT;
1302     }
1304   YYDPRINTF ((stderr, "Entering state %d\n", yystate));
1306   if (yystate == YYFINAL)
1307     YYACCEPT;
1309   goto yybackup;
1311 /*-----------.
1312 | yybackup.  |
1313 `-----------*/
1314 yybackup:
1316   /* Do appropriate processing given the current state.  Read a
1317      lookahead token if we need one and don't already have one.  */
1319   /* First try to decide what to do without reference to lookahead token.  */
1320   yyn = yypact[yystate];
1321   if (yyn == YYPACT_NINF)
1322     goto yydefault;
1324   /* Not known => get a lookahead token if don't already have one.  */
1326   /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol.  */
1327   if (yychar == YYEMPTY)
1328     {
1329       YYDPRINTF ((stderr, "Reading a token: "));
1330       yychar = YYLEX;
1331     }
1333   if (yychar <= YYEOF)
1334     {
1335       yychar = yytoken = YYEOF;
1336       YYDPRINTF ((stderr, "Now at end of input.\n"));
1337     }
1338   else
1339     {
1340       yytoken = YYTRANSLATE (yychar);
1341       YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
1342     }
1344   /* If the proper action on seeing token YYTOKEN is to reduce or to
1345      detect an error, take that action.  */
1346   yyn += yytoken;
1347   if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
1348     goto yydefault;
1349   yyn = yytable[yyn];
1350   if (yyn <= 0)
1351     {
1352       if (yyn == 0 || yyn == YYTABLE_NINF)
1353         goto yyerrlab;
1354       yyn = -yyn;
1355       goto yyreduce;
1356     }
1358   /* Count tokens shifted since error; after three, turn off error
1359      status.  */
1360   if (yyerrstatus)
1361     yyerrstatus--;
1363   /* Shift the lookahead token.  */
1364   YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
1366   /* Discard the shifted token.  */
1367   yychar = YYEMPTY;
1369   yystate = yyn;
1370   *++yyvsp = yylval;
1372   goto yynewstate;
1375 /*-----------------------------------------------------------.
1376 | yydefault -- do the default action for the current state.  |
1377 `-----------------------------------------------------------*/
1378 yydefault:
1379   yyn = yydefact[yystate];
1380   if (yyn == 0)
1381     goto yyerrlab;
1382   goto yyreduce;
1385 /*-----------------------------.
1386 | yyreduce -- Do a reduction.  |
1387 `-----------------------------*/
1388 yyreduce:
1389   /* yyn is the number of a rule to reduce with.  */
1390   yylen = yyr2[yyn];
1392   /* If YYLEN is nonzero, implement the default value of the action:
1393      `$$ = $1'.
1395      Otherwise, the following line sets YYVAL to garbage.
1396      This behavior is undocumented and Bison
1397      users should not rely upon it.  Assigning to YYVAL
1398      unconditionally makes the parser a bit smaller, and it avoids a
1399      GCC warning that YYVAL may be used uninitialized.  */
1400   yyval = yyvsp[1-yylen];
1403   YY_REDUCE_PRINT (yyn);
1404   switch (yyn)
1405     {
1406         case 2:
1408 /* Line 1455 of yacc.c  */
1409 #line 87 "dtc-parser.y"
1410     {
1411                         the_boot_info = build_boot_info((yyvsp[(3) - (4)].re), (yyvsp[(4) - (4)].node),
1412                                                         guess_boot_cpuid((yyvsp[(4) - (4)].node)));
1413                 ;}
1414     break;
1416   case 3:
1418 /* Line 1455 of yacc.c  */
1419 #line 95 "dtc-parser.y"
1420     {
1421                         (yyval.re) = NULL;
1422                 ;}
1423     break;
1425   case 4:
1427 /* Line 1455 of yacc.c  */
1428 #line 99 "dtc-parser.y"
1429     {
1430                         (yyval.re) = chain_reserve_entry((yyvsp[(1) - (2)].re), (yyvsp[(2) - (2)].re));
1431                 ;}
1432     break;
1434   case 5:
1436 /* Line 1455 of yacc.c  */
1437 #line 106 "dtc-parser.y"
1438     {
1439                         (yyval.re) = build_reserve_entry((yyvsp[(2) - (4)].addr), (yyvsp[(3) - (4)].addr));
1440                 ;}
1441     break;
1443   case 6:
1445 /* Line 1455 of yacc.c  */
1446 #line 110 "dtc-parser.y"
1447     {
1448                         add_label(&(yyvsp[(2) - (2)].re)->labels, (yyvsp[(1) - (2)].labelref));
1449                         (yyval.re) = (yyvsp[(2) - (2)].re);
1450                 ;}
1451     break;
1453   case 7:
1455 /* Line 1455 of yacc.c  */
1456 #line 118 "dtc-parser.y"
1457     {
1458                         (yyval.addr) = eval_literal((yyvsp[(1) - (1)].literal), 0, 64);
1459                 ;}
1460     break;
1462   case 8:
1464 /* Line 1455 of yacc.c  */
1465 #line 125 "dtc-parser.y"
1466     {
1467                         (yyval.node) = name_node((yyvsp[(2) - (2)].node), "");
1468                 ;}
1469     break;
1471   case 9:
1473 /* Line 1455 of yacc.c  */
1474 #line 129 "dtc-parser.y"
1475     {
1476                         (yyval.node) = merge_nodes((yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node));
1477                 ;}
1478     break;
1480   case 10:
1482 /* Line 1455 of yacc.c  */
1483 #line 133 "dtc-parser.y"
1484     {
1485                         struct node *target = get_node_by_ref((yyvsp[(1) - (3)].node), (yyvsp[(2) - (3)].labelref));
1487                         if (target)
1488                                 merge_nodes(target, (yyvsp[(3) - (3)].node));
1489                         else
1490                                 print_error("label or path, '%s', not found", (yyvsp[(2) - (3)].labelref));
1491                         (yyval.node) = (yyvsp[(1) - (3)].node);
1492                 ;}
1493     break;
1495   case 11:
1497 /* Line 1455 of yacc.c  */
1498 #line 146 "dtc-parser.y"
1499     {
1500                         (yyval.node) = build_node((yyvsp[(2) - (5)].proplist), (yyvsp[(3) - (5)].nodelist));
1501                 ;}
1502     break;
1504   case 12:
1506 /* Line 1455 of yacc.c  */
1507 #line 153 "dtc-parser.y"
1508     {
1509                         (yyval.proplist) = NULL;
1510                 ;}
1511     break;
1513   case 13:
1515 /* Line 1455 of yacc.c  */
1516 #line 157 "dtc-parser.y"
1517     {
1518                         (yyval.proplist) = chain_property((yyvsp[(2) - (2)].prop), (yyvsp[(1) - (2)].proplist));
1519                 ;}
1520     break;
1522   case 14:
1524 /* Line 1455 of yacc.c  */
1525 #line 164 "dtc-parser.y"
1526     {
1527                         (yyval.prop) = build_property((yyvsp[(1) - (4)].propnodename), (yyvsp[(3) - (4)].data));
1528                 ;}
1529     break;
1531   case 15:
1533 /* Line 1455 of yacc.c  */
1534 #line 168 "dtc-parser.y"
1535     {
1536                         (yyval.prop) = build_property((yyvsp[(1) - (2)].propnodename), empty_data);
1537                 ;}
1538     break;
1540   case 16:
1542 /* Line 1455 of yacc.c  */
1543 #line 172 "dtc-parser.y"
1544     {
1545                         add_label(&(yyvsp[(2) - (2)].prop)->labels, (yyvsp[(1) - (2)].labelref));
1546                         (yyval.prop) = (yyvsp[(2) - (2)].prop);
1547                 ;}
1548     break;
1550   case 17:
1552 /* Line 1455 of yacc.c  */
1553 #line 180 "dtc-parser.y"
1554     {
1555                         (yyval.data) = data_merge((yyvsp[(1) - (2)].data), (yyvsp[(2) - (2)].data));
1556                 ;}
1557     break;
1559   case 18:
1561 /* Line 1455 of yacc.c  */
1562 #line 184 "dtc-parser.y"
1563     {
1564                         (yyval.data) = data_merge((yyvsp[(1) - (4)].data), (yyvsp[(3) - (4)].data));
1565                 ;}
1566     break;
1568   case 19:
1570 /* Line 1455 of yacc.c  */
1571 #line 188 "dtc-parser.y"
1572     {
1573                         (yyval.data) = data_merge((yyvsp[(1) - (4)].data), (yyvsp[(3) - (4)].data));
1574                 ;}
1575     break;
1577   case 20:
1579 /* Line 1455 of yacc.c  */
1580 #line 192 "dtc-parser.y"
1581     {
1582                         (yyval.data) = data_add_marker((yyvsp[(1) - (2)].data), REF_PATH, (yyvsp[(2) - (2)].labelref));
1583                 ;}
1584     break;
1586   case 21:
1588 /* Line 1455 of yacc.c  */
1589 #line 196 "dtc-parser.y"
1590     {
1591                         FILE *f = srcfile_relative_open((yyvsp[(4) - (9)].data).val, NULL);
1592                         struct data d;
1594                         if ((yyvsp[(6) - (9)].addr) != 0)
1595                                 if (fseek(f, (yyvsp[(6) - (9)].addr), SEEK_SET) != 0)
1596                                         print_error("Couldn't seek to offset %llu in \"%s\": %s",
1597                                                      (unsigned long long)(yyvsp[(6) - (9)].addr),
1598                                                      (yyvsp[(4) - (9)].data).val,
1599                                                      strerror(errno));
1601                         d = data_copy_file(f, (yyvsp[(8) - (9)].addr));
1603                         (yyval.data) = data_merge((yyvsp[(1) - (9)].data), d);
1604                         fclose(f);
1605                 ;}
1606     break;
1608   case 22:
1610 /* Line 1455 of yacc.c  */
1611 #line 213 "dtc-parser.y"
1612     {
1613                         FILE *f = srcfile_relative_open((yyvsp[(4) - (5)].data).val, NULL);
1614                         struct data d = empty_data;
1616                         d = data_copy_file(f, -1);
1618                         (yyval.data) = data_merge((yyvsp[(1) - (5)].data), d);
1619                         fclose(f);
1620                 ;}
1621     break;
1623   case 23:
1625 /* Line 1455 of yacc.c  */
1626 #line 223 "dtc-parser.y"
1627     {
1628                         (yyval.data) = data_add_marker((yyvsp[(1) - (2)].data), LABEL, (yyvsp[(2) - (2)].labelref));
1629                 ;}
1630     break;
1632   case 24:
1634 /* Line 1455 of yacc.c  */
1635 #line 230 "dtc-parser.y"
1636     {
1637                         (yyval.data) = empty_data;
1638                 ;}
1639     break;
1641   case 25:
1643 /* Line 1455 of yacc.c  */
1644 #line 234 "dtc-parser.y"
1645     {
1646                         (yyval.data) = (yyvsp[(1) - (2)].data);
1647                 ;}
1648     break;
1650   case 26:
1652 /* Line 1455 of yacc.c  */
1653 #line 238 "dtc-parser.y"
1654     {
1655                         (yyval.data) = data_add_marker((yyvsp[(1) - (2)].data), LABEL, (yyvsp[(2) - (2)].labelref));
1656                 ;}
1657     break;
1659   case 27:
1661 /* Line 1455 of yacc.c  */
1662 #line 245 "dtc-parser.y"
1663     {
1664                         (yyval.data) = empty_data;
1665                 ;}
1666     break;
1668   case 28:
1670 /* Line 1455 of yacc.c  */
1671 #line 249 "dtc-parser.y"
1672     {
1673                         (yyval.data) = data_append_cell((yyvsp[(1) - (2)].data), (yyvsp[(2) - (2)].cell));
1674                 ;}
1675     break;
1677   case 29:
1679 /* Line 1455 of yacc.c  */
1680 #line 253 "dtc-parser.y"
1681     {
1682                         (yyval.data) = data_append_cell(data_add_marker((yyvsp[(1) - (2)].data), REF_PHANDLE,
1683                                                               (yyvsp[(2) - (2)].labelref)), -1);
1684                 ;}
1685     break;
1687   case 30:
1689 /* Line 1455 of yacc.c  */
1690 #line 258 "dtc-parser.y"
1691     {
1692                         (yyval.data) = data_add_marker((yyvsp[(1) - (2)].data), LABEL, (yyvsp[(2) - (2)].labelref));
1693                 ;}
1694     break;
1696   case 31:
1698 /* Line 1455 of yacc.c  */
1699 #line 265 "dtc-parser.y"
1700     {
1701                         (yyval.cell) = eval_literal((yyvsp[(1) - (1)].literal), 0, 32);
1702                 ;}
1703     break;
1705   case 32:
1707 /* Line 1455 of yacc.c  */
1708 #line 272 "dtc-parser.y"
1709     {
1710                         (yyval.data) = empty_data;
1711                 ;}
1712     break;
1714   case 33:
1716 /* Line 1455 of yacc.c  */
1717 #line 276 "dtc-parser.y"
1718     {
1719                         (yyval.data) = data_append_byte((yyvsp[(1) - (2)].data), (yyvsp[(2) - (2)].byte));
1720                 ;}
1721     break;
1723   case 34:
1725 /* Line 1455 of yacc.c  */
1726 #line 280 "dtc-parser.y"
1727     {
1728                         (yyval.data) = data_add_marker((yyvsp[(1) - (2)].data), LABEL, (yyvsp[(2) - (2)].labelref));
1729                 ;}
1730     break;
1732   case 35:
1734 /* Line 1455 of yacc.c  */
1735 #line 287 "dtc-parser.y"
1736     {
1737                         (yyval.nodelist) = NULL;
1738                 ;}
1739     break;
1741   case 36:
1743 /* Line 1455 of yacc.c  */
1744 #line 291 "dtc-parser.y"
1745     {
1746                         (yyval.nodelist) = chain_node((yyvsp[(1) - (2)].node), (yyvsp[(2) - (2)].nodelist));
1747                 ;}
1748     break;
1750   case 37:
1752 /* Line 1455 of yacc.c  */
1753 #line 295 "dtc-parser.y"
1754     {
1755                         print_error("syntax error: properties must precede subnodes");
1756                         YYERROR;
1757                 ;}
1758     break;
1760   case 38:
1762 /* Line 1455 of yacc.c  */
1763 #line 303 "dtc-parser.y"
1764     {
1765                         (yyval.node) = name_node((yyvsp[(2) - (2)].node), (yyvsp[(1) - (2)].propnodename));
1766                 ;}
1767     break;
1769   case 39:
1771 /* Line 1455 of yacc.c  */
1772 #line 307 "dtc-parser.y"
1773     {
1774                         add_label(&(yyvsp[(2) - (2)].node)->labels, (yyvsp[(1) - (2)].labelref));
1775                         (yyval.node) = (yyvsp[(2) - (2)].node);
1776                 ;}
1777     break;
1781 /* Line 1455 of yacc.c  */
1782 #line 1783 "dtc-parser.tab.c"
1783       default: break;
1784     }
1785   YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
1787   YYPOPSTACK (yylen);
1788   yylen = 0;
1789   YY_STACK_PRINT (yyss, yyssp);
1791   *++yyvsp = yyval;
1793   /* Now `shift' the result of the reduction.  Determine what state
1794      that goes to, based on the state we popped back to and the rule
1795      number reduced by.  */
1797   yyn = yyr1[yyn];
1799   yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
1800   if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
1801     yystate = yytable[yystate];
1802   else
1803     yystate = yydefgoto[yyn - YYNTOKENS];
1805   goto yynewstate;
1808 /*------------------------------------.
1809 | yyerrlab -- here on detecting error |
1810 `------------------------------------*/
1811 yyerrlab:
1812   /* If not already recovering from an error, report this error.  */
1813   if (!yyerrstatus)
1814     {
1815       ++yynerrs;
1816 #if ! YYERROR_VERBOSE
1817       yyerror (YY_("syntax error"));
1818 #else
1819       {
1820         YYSIZE_T yysize = yysyntax_error (0, yystate, yychar);
1821         if (yymsg_alloc < yysize && yymsg_alloc < YYSTACK_ALLOC_MAXIMUM)
1822           {
1823             YYSIZE_T yyalloc = 2 * yysize;
1824             if (! (yysize <= yyalloc && yyalloc <= YYSTACK_ALLOC_MAXIMUM))
1825               yyalloc = YYSTACK_ALLOC_MAXIMUM;
1826             if (yymsg != yymsgbuf)
1827               YYSTACK_FREE (yymsg);
1828             yymsg = (char *) YYSTACK_ALLOC (yyalloc);
1829             if (yymsg)
1830               yymsg_alloc = yyalloc;
1831             else
1832               {
1833                 yymsg = yymsgbuf;
1834                 yymsg_alloc = sizeof yymsgbuf;
1835               }
1836           }
1838         if (0 < yysize && yysize <= yymsg_alloc)
1839           {
1840             (void) yysyntax_error (yymsg, yystate, yychar);
1841             yyerror (yymsg);
1842           }
1843         else
1844           {
1845             yyerror (YY_("syntax error"));
1846             if (yysize != 0)
1847               goto yyexhaustedlab;
1848           }
1849       }
1850 #endif
1851     }
1855   if (yyerrstatus == 3)
1856     {
1857       /* If just tried and failed to reuse lookahead token after an
1858          error, discard it.  */
1860       if (yychar <= YYEOF)
1861         {
1862           /* Return failure if at end of input.  */
1863           if (yychar == YYEOF)
1864             YYABORT;
1865         }
1866       else
1867         {
1868           yydestruct ("Error: discarding",
1869                       yytoken, &yylval);
1870           yychar = YYEMPTY;
1871         }
1872     }
1874   /* Else will try to reuse lookahead token after shifting the error
1875      token.  */
1876   goto yyerrlab1;
1879 /*---------------------------------------------------.
1880 | yyerrorlab -- error raised explicitly by YYERROR.  |
1881 `---------------------------------------------------*/
1882 yyerrorlab:
1884   /* Pacify compilers like GCC when the user code never invokes
1885      YYERROR and the label yyerrorlab therefore never appears in user
1886      code.  */
1887   if (/*CONSTCOND*/ 0)
1888      goto yyerrorlab;
1890   /* Do not reclaim the symbols of the rule which action triggered
1891      this YYERROR.  */
1892   YYPOPSTACK (yylen);
1893   yylen = 0;
1894   YY_STACK_PRINT (yyss, yyssp);
1895   yystate = *yyssp;
1896   goto yyerrlab1;
1899 /*-------------------------------------------------------------.
1900 | yyerrlab1 -- common code for both syntax error and YYERROR.  |
1901 `-------------------------------------------------------------*/
1902 yyerrlab1:
1903   yyerrstatus = 3;      /* Each real token shifted decrements this.  */
1905   for (;;)
1906     {
1907       yyn = yypact[yystate];
1908       if (yyn != YYPACT_NINF)
1909         {
1910           yyn += YYTERROR;
1911           if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
1912             {
1913               yyn = yytable[yyn];
1914               if (0 < yyn)
1915                 break;
1916             }
1917         }
1919       /* Pop the current state because it cannot handle the error token.  */
1920       if (yyssp == yyss)
1921         YYABORT;
1924       yydestruct ("Error: popping",
1925                   yystos[yystate], yyvsp);
1926       YYPOPSTACK (1);
1927       yystate = *yyssp;
1928       YY_STACK_PRINT (yyss, yyssp);
1929     }
1931   *++yyvsp = yylval;
1934   /* Shift the error token.  */
1935   YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp);
1937   yystate = yyn;
1938   goto yynewstate;
1941 /*-------------------------------------.
1942 | yyacceptlab -- YYACCEPT comes here.  |
1943 `-------------------------------------*/
1944 yyacceptlab:
1945   yyresult = 0;
1946   goto yyreturn;
1948 /*-----------------------------------.
1949 | yyabortlab -- YYABORT comes here.  |
1950 `-----------------------------------*/
1951 yyabortlab:
1952   yyresult = 1;
1953   goto yyreturn;
1955 #if !defined(yyoverflow) || YYERROR_VERBOSE
1956 /*-------------------------------------------------.
1957 | yyexhaustedlab -- memory exhaustion comes here.  |
1958 `-------------------------------------------------*/
1959 yyexhaustedlab:
1960   yyerror (YY_("memory exhausted"));
1961   yyresult = 2;
1962   /* Fall through.  */
1963 #endif
1965 yyreturn:
1966   if (yychar != YYEMPTY)
1967      yydestruct ("Cleanup: discarding lookahead",
1968                  yytoken, &yylval);
1969   /* Do not reclaim the symbols of the rule which action triggered
1970      this YYABORT or YYACCEPT.  */
1971   YYPOPSTACK (yylen);
1972   YY_STACK_PRINT (yyss, yyssp);
1973   while (yyssp != yyss)
1974     {
1975       yydestruct ("Cleanup: popping",
1976                   yystos[*yyssp], yyvsp);
1977       YYPOPSTACK (1);
1978     }
1979 #ifndef yyoverflow
1980   if (yyss != yyssa)
1981     YYSTACK_FREE (yyss);
1982 #endif
1983 #if YYERROR_VERBOSE
1984   if (yymsg != yymsgbuf)
1985     YYSTACK_FREE (yymsg);
1986 #endif
1987   /* Make sure YYID is used.  */
1988   return YYID (yyresult);
1993 /* Line 1675 of yacc.c  */
1994 #line 313 "dtc-parser.y"
1997 void print_error(char const *fmt, ...)
1999         va_list va;
2001         va_start(va, fmt);
2002         srcpos_verror(&yylloc, fmt, va);
2003         va_end(va);
2005         treesource_error = 1;
2008 void yyerror(char const *s) {
2009         print_error("%s", s);
2012 static unsigned long long eval_literal(const char *s, int base, int bits)
2014         unsigned long long val;
2015         char *e;
2017         errno = 0;
2018         val = strtoull(s, &e, base);
2019         if (*e)
2020                 print_error("bad characters in literal");
2021         else if ((errno == ERANGE)
2022                  || ((bits < 64) && (val >= (1ULL << bits))))
2023                 print_error("literal out of range");
2024         else if (errno != 0)
2025                 print_error("bad literal");
2026         return val;