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