]> git.proxmox.com Git - mirror_ubuntu-artful-kernel.git/blob - scripts/dtc/dtc-parser.tab.c_shipped
UBUNTU: [Config] CONFIG_NET_DSA_LOOP=m
[mirror_ubuntu-artful-kernel.git] / scripts / dtc / dtc-parser.tab.c_shipped
1 /* A Bison parser, made by GNU Bison 3.0.4. */
2
3 /* Bison implementation for Yacc-like parsers in C
4
5 Copyright (C) 1984, 1989-1990, 2000-2015 Free Software Foundation, Inc.
6
7 This program is free software: you can redistribute it and/or modify
8 it under the terms of the GNU General Public License as published by
9 the Free Software Foundation, either version 3 of the License, or
10 (at your option) any later version.
11
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.
16
17 You should have received a copy of the GNU General Public License
18 along with this program. If not, see <http://www.gnu.org/licenses/>. */
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.
29
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. */
47 #define YYBISON_VERSION "3.0.4"
48
49 /* Skeleton name. */
50 #define YYSKELETON_NAME "yacc.c"
51
52 /* Pure parsers. */
53 #define YYPURE 0
54
55 /* Push parsers. */
56 #define YYPUSH 0
57
58 /* Pull parsers. */
59 #define YYPULL 1
60
61
62
63
64 /* Copy the first part of user declarations. */
65 #line 20 "dtc-parser.y" /* yacc.c:339 */
66
67 #include <stdio.h>
68 #include <inttypes.h>
69
70 #include "dtc.h"
71 #include "srcpos.h"
72
73 extern int yylex(void);
74 extern void yyerror(char const *s);
75 #define ERROR(loc, ...) \
76 do { \
77 srcpos_error((loc), "Error", __VA_ARGS__); \
78 treesource_error = true; \
79 } while (0)
80
81 extern struct dt_info *parser_output;
82 extern bool treesource_error;
83
84 #line 85 "dtc-parser.tab.c" /* yacc.c:339 */
85
86 # ifndef YY_NULLPTR
87 # if defined __cplusplus && 201103L <= __cplusplus
88 # define YY_NULLPTR nullptr
89 # else
90 # define YY_NULLPTR 0
91 # endif
92 # endif
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
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
106 /* Debug traces. */
107 #ifndef YYDEBUG
108 # define YYDEBUG 0
109 #endif
110 #if YYDEBUG
111 extern int yydebug;
112 #endif
113
114 /* Token type. */
115 #ifndef YYTOKENTYPE
116 # define YYTOKENTYPE
117 enum yytokentype
118 {
119 DT_V1 = 258,
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
141 };
142 #endif
143
144 /* Value type. */
145 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
146
147 union YYSTYPE
148 {
149 #line 39 "dtc-parser.y" /* yacc.c:355 */
150
151 char *propnodename;
152 char *labelref;
153 uint8_t byte;
154 struct data data;
155
156 struct {
157 struct data data;
158 int bits;
159 } array;
160
161 struct property *prop;
162 struct property *proplist;
163 struct node *node;
164 struct node *nodelist;
165 struct reserve_info *re;
166 uint64_t integer;
167 unsigned int flags;
168
169 #line 170 "dtc-parser.tab.c" /* yacc.c:355 */
170 };
171
172 typedef union YYSTYPE YYSTYPE;
173 # define YYSTYPE_IS_TRIVIAL 1
174 # define YYSTYPE_IS_DECLARED 1
175 #endif
176
177 /* Location type. */
178 #if ! defined YYLTYPE && ! defined YYLTYPE_IS_DECLARED
179 typedef struct YYLTYPE YYLTYPE;
180 struct 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
189 #endif
190
191
192 extern YYSTYPE yylval;
193 extern YYLTYPE yylloc;
194 int yyparse (void);
195
196 #endif /* !YY_YY_DTC_PARSER_TAB_H_INCLUDED */
197
198 /* Copy the second part of user declarations. */
199
200 #line 201 "dtc-parser.tab.c" /* yacc.c:358 */
201
202 #ifdef short
203 # undef short
204 #endif
205
206 #ifdef YYTYPE_UINT8
207 typedef YYTYPE_UINT8 yytype_uint8;
208 #else
209 typedef unsigned char yytype_uint8;
210 #endif
211
212 #ifdef YYTYPE_INT8
213 typedef YYTYPE_INT8 yytype_int8;
214 #else
215 typedef signed char yytype_int8;
216 #endif
217
218 #ifdef YYTYPE_UINT16
219 typedef YYTYPE_UINT16 yytype_uint16;
220 #else
221 typedef unsigned short int yytype_uint16;
222 #endif
223
224 #ifdef YYTYPE_INT16
225 typedef YYTYPE_INT16 yytype_int16;
226 #else
227 typedef 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
235 # elif ! defined YYSIZE_T
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_
246 # if defined YYENABLE_NLS && YYENABLE_NLS
247 # if ENABLE_NLS
248 # include <libintl.h> /* INFRINGES ON USER NAME SPACE */
249 # define YY_(Msgid) dgettext ("bison-runtime", Msgid)
250 # endif
251 # endif
252 # ifndef YY_
253 # define YY_(Msgid) Msgid
254 # endif
255 #endif
256
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__))
281 # endif
282 #endif
283
284 /* Suppress unused-variable warnings by "using" E. */
285 #if ! defined lint || defined __GNUC__
286 # define YYUSE(E) ((void) (E))
287 #else
288 # define YYUSE(E) /* empty */
289 #endif
290
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")
299 #else
300 # define YY_INITIAL_VALUE(Value) Value
301 #endif
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. */
308 #endif
309
310
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
328 # if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS
329 # include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
330 /* Use EXIT_SUCCESS as a witness for stdlib.h. */
331 # ifndef EXIT_SUCCESS
332 # define EXIT_SUCCESS 0
333 # endif
334 # endif
335 # endif
336 # endif
337 # endif
338
339 # ifdef YYSTACK_ALLOC
340 /* Pacify GCC's 'empty if-body' warning. */
341 # define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
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
355 # if (defined __cplusplus && ! defined EXIT_SUCCESS \
356 && ! ((defined YYMALLOC || defined malloc) \
357 && (defined YYFREE || defined free)))
358 # include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
359 # ifndef EXIT_SUCCESS
360 # define EXIT_SUCCESS 0
361 # endif
362 # endif
363 # ifndef YYMALLOC
364 # define YYMALLOC malloc
365 # if ! defined malloc && ! defined EXIT_SUCCESS
366 void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
367 # endif
368 # endif
369 # ifndef YYFREE
370 # define YYFREE free
371 # if ! defined free && ! defined EXIT_SUCCESS
372 void 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 \
381 || (defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL \
382 && defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
383
384 /* A type that is properly aligned for any stack member. */
385 union yyalloc
386 {
387 yytype_int16 yyss_alloc;
388 YYSTYPE yyvs_alloc;
389 YYLTYPE yyls_alloc;
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) \
398 ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE) + sizeof (YYLTYPE)) \
399 + 2 * YYSTACK_GAP_MAXIMUM)
400
401 # define YYCOPY_NEEDED 1
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. */
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)
418
419 #endif
420
421 #if defined YYCOPY_NEEDED && YYCOPY_NEEDED
422 /* Copy COUNT objects from SRC to DST. The source and destination do
423 not overlap. */
424 # ifndef YYCOPY
425 # if defined __GNUC__ && 1 < __GNUC__
426 # define YYCOPY(Dst, Src, Count) \
427 __builtin_memcpy (Dst, Src, (Count) * sizeof (*(Src)))
428 # else
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 } \
436 while (0)
437 # endif
438 # endif
439 #endif /* !YYCOPY_NEEDED */
440
441 /* YYFINAL -- State number of the termination state. */
442 #define YYFINAL 6
443 /* YYLAST -- Last index in YYTABLE. */
444 #define YYLAST 138
445
446 /* YYNTOKENS -- Number of terminals. */
447 #define YYNTOKENS 48
448 /* YYNNTS -- Number of nonterminals. */
449 #define YYNNTS 30
450 /* YYNRULES -- Number of rules. */
451 #define YYNRULES 84
452 /* YYNSTATES -- Number of states. */
453 #define YYNSTATES 149
454
455 /* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned
456 by yylex, with out-of-bounds checking. */
457 #define YYUNDEFTOK 2
458 #define YYMAXUTOK 279
459
460 #define YYTRANSLATE(YYX) \
461 ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
462
463 /* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM
464 as returned by yylex, without out-of-bounds checking. */
465 static 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,
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,
474 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
475 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
476 2, 31, 2, 32, 40, 2, 2, 2, 2, 2,
477 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
478 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
479 2, 2, 2, 27, 39, 28, 46, 2, 2, 2,
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,
493 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
494 15, 16, 17, 18, 19, 20, 21, 22, 23, 24
495 };
496
497 #if YYDEBUG
498 /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */
499 static const yytype_uint16 yyrline[] =
500 {
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
510 };
511 #endif
512
513 #if YYDEBUG || YYERROR_VERBOSE || 0
514 /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
515 First, the terminals, then, starting at YYNTOKENS, nonterminals. */
516 static const char *const yytname[] =
517 {
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
532 };
533 #endif
534
535 # ifdef YYPRINT
536 /* YYTOKNUM[NUM] -- (External) token number corresponding to the
537 (internal) symbol number NUM (which must be that of a token). */
538 static const yytype_uint16 yytoknum[] =
539 {
540 0, 256, 257, 258, 259, 260, 261, 262, 263, 264,
541 265, 266, 267, 268, 269, 270, 271, 272, 273, 274,
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
545 };
546 # endif
547
548 #define YYPACT_NINF -44
549
550 #define yypact_value_is_default(Yystate) \
551 (!!((Yystate) == (-44)))
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. */
560 static const yytype_int8 yypact[] =
561 {
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
577 };
578
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. */
582 static const yytype_uint8 yydefact[] =
583 {
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,
589 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
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
599 };
600
601 /* YYPGOTO[NTERM-NUM]. */
602 static const yytype_int8 yypgoto[] =
603 {
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
607 };
608
609 /* YYDEFGOTO[NTERM-NUM]. */
610 static const yytype_int16 yydefgoto[] =
611 {
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
615 };
616
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. */
620 static const yytype_uint8 yytable[] =
621 {
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
636 };
637
638 static const yytype_int16 yycheck[] =
639 {
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
654 };
655
656 /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
657 symbol of state STATE-NUM. */
658 static const yytype_uint8 yystos[] =
659 {
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
675 };
676
677 /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */
678 static const yytype_uint8 yyr1[] =
679 {
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
689 };
690
691 /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */
692 static const yytype_uint8 yyr2[] =
693 {
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
703 };
704
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
715
716 #define YYRECOVERING() (!!yyerrstatus)
717
718 #define YYBACKUP(Token, Value) \
719 do \
720 if (yychar == YYEMPTY) \
721 { \
722 yychar = (Token); \
723 yylval = (Value); \
724 YYPOPSTACK (yylen); \
725 yystate = *yyssp; \
726 goto yybackup; \
727 } \
728 else \
729 { \
730 yyerror (YY_("syntax error: cannot back up")); \
731 YYERROR; \
732 } \
733 while (0)
734
735 /* Error token number */
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)
762 #endif
763
764 #define YYRHSLOC(Rhs, K) ((Rhs)[K])
765
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
775 # define YYDPRINTF(Args) \
776 do { \
777 if (yydebug) \
778 YYFPRINTF Args; \
779 } while (0)
780
781
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. */
785
786 #ifndef YY_LOCATION_PRINT
787 # if defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL
788
789 /* Print *YYLOCP on YYO. Private, do not rely on its existence. */
790
791 YY_ATTRIBUTE_UNUSED
792 static unsigned
793 yy_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
823 #endif
824
825
826 # define YY_SYMBOL_PRINT(Title, Type, Value, Location) \
827 do { \
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
842 static void
843 yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, YYLTYPE const * const yylocationp)
844 {
845 FILE *yyo = yyoutput;
846 YYUSE (yyo);
847 YYUSE (yylocationp);
848 if (!yyvaluep)
849 return;
850 # ifdef YYPRINT
851 if (yytype < YYNTOKENS)
852 YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
853 # endif
854 YYUSE (yytype);
855 }
856
857
858 /*--------------------------------.
859 | Print this symbol on YYOUTPUT. |
860 `--------------------------------*/
861
862 static void
863 yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, YYLTYPE const * const yylocationp)
864 {
865 YYFPRINTF (yyoutput, "%s %s (",
866 yytype < YYNTOKENS ? "token" : "nterm", yytname[yytype]);
867
868 YY_LOCATION_PRINT (yyoutput, *yylocationp);
869 YYFPRINTF (yyoutput, ": ");
870 yy_symbol_value_print (yyoutput, yytype, yyvaluep, yylocationp);
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
879 static void
880 yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop)
881 {
882 YYFPRINTF (stderr, "Stack now");
883 for (; yybottom <= yytop; yybottom++)
884 {
885 int yybot = *yybottom;
886 YYFPRINTF (stderr, " %d", yybot);
887 }
888 YYFPRINTF (stderr, "\n");
889 }
890
891 # define YY_STACK_PRINT(Bottom, Top) \
892 do { \
893 if (yydebug) \
894 yy_stack_print ((Bottom), (Top)); \
895 } while (0)
896
897
898 /*------------------------------------------------.
899 | Report that the YYRULE is going to be reduced. |
900 `------------------------------------------------*/
901
902 static void
903 yy_reduce_print (yytype_int16 *yyssp, YYSTYPE *yyvsp, YYLTYPE *yylsp, int yyrule)
904 {
905 unsigned long int yylno = yyrline[yyrule];
906 int yynrhs = yyr2[yyrule];
907 int yyi;
908 YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n",
909 yyrule - 1, yylno);
910 /* The symbols being reduced. */
911 for (yyi = 0; yyi < yynrhs; yyi++)
912 {
913 YYFPRINTF (stderr, " $%d = ", yyi + 1);
914 yy_symbol_print (stderr,
915 yystos[yyssp[yyi + 1 - yynrhs]],
916 &(yyvsp[(yyi + 1) - (yynrhs)])
917 , &(yylsp[(yyi + 1) - (yynrhs)]) );
918 YYFPRINTF (stderr, "\n");
919 }
920 }
921
922 # define YY_REDUCE_PRINT(Rule) \
923 do { \
924 if (yydebug) \
925 yy_reduce_print (yyssp, yyvsp, yylsp, Rule); \
926 } while (0)
927
928 /* Nonzero means print parse trace. It is left uninitialized so that
929 multiple parsers can coexist. */
930 int 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. */
940 #ifndef YYINITDEPTH
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
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. */
963 static YYSIZE_T
964 yystrlen (const char *yystr)
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. */
980 static char *
981 yystpcpy (char *yydest, const char *yysrc)
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. */
1002 static YYSIZE_T
1003 yytnamerr (char *yyres, const char *yystr)
1004 {
1005 if (*yystr == '"')
1006 {
1007 YYSIZE_T yyn = 0;
1008 char const *yyp = yystr;
1009
1010 for (;;)
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 }
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
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.
1045
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. */
1050 static int
1051 yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg,
1052 yytype_int16 *yyssp, int yytoken)
1053 {
1054 YYSIZE_T yysize0 = yytnamerr (YY_NULLPTR, yytname[yytoken]);
1055 YYSIZE_T yysize = yysize0;
1056 enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
1057 /* Internationalized format string. */
1058 const char *yyformat = YY_NULLPTR;
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:
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)
1089 {
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];
1114 {
1115 YYSIZE_T yysize1 = yysize + yytnamerr (YY_NULLPTR, yytname[yyx]);
1116 if (! (yysize <= yysize1
1117 && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
1118 return 2;
1119 yysize = yysize1;
1120 }
1121 }
1122 }
1123 }
1124
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 }
1139
1140 {
1141 YYSIZE_T yysize1 = yysize + yystrlen (yyformat);
1142 if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
1143 return 2;
1144 yysize = yysize1;
1145 }
1146
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;
1154 }
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;
1175 }
1176 #endif /* YYERROR_VERBOSE */
1177
1178 /*-----------------------------------------------.
1179 | Release the memory associated to this symbol. |
1180 `-----------------------------------------------*/
1181
1182 static void
1183 yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocationp)
1184 {
1185 YYUSE (yyvaluep);
1186 YYUSE (yylocationp);
1187 if (!yymsg)
1188 yymsg = "Deleting";
1189 YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
1190
1191 YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
1192 YYUSE (yytype);
1193 YY_IGNORE_MAYBE_UNINITIALIZED_END
1194 }
1195
1196
1197
1198
1199 /* The lookahead symbol. */
1200 int yychar;
1201
1202 /* The semantic value of the lookahead symbol. */
1203 YYSTYPE yylval;
1204 /* Location data for the lookahead symbol. */
1205 YYLTYPE yylloc
1206 # if defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL
1207 = { 1, 1, 1, 1 }
1208 # endif
1209 ;
1210 /* Number of syntax errors so far. */
1211 int yynerrs;
1212
1213
1214 /*----------.
1215 | yyparse. |
1216 `----------*/
1217
1218 int
1219 yyparse (void)
1220 {
1221 int yystate;
1222 /* Number of tokens to shift before error messages enabled. */
1223 int yyerrstatus;
1224
1225 /* The stacks and their tools:
1226 'yyss': related to states.
1227 'yyvs': related to semantic values.
1228 'yyls': related to locations.
1229
1230 Refer to the stacks through separate pointers, to allow yyoverflow
1231 to reallocate them elsewhere. */
1232
1233 /* The state stack. */
1234 yytype_int16 yyssa[YYINITDEPTH];
1235 yytype_int16 *yyss;
1236 yytype_int16 *yyssp;
1237
1238 /* The semantic value stack. */
1239 YYSTYPE yyvsa[YYINITDEPTH];
1240 YYSTYPE *yyvs;
1241 YYSTYPE *yyvsp;
1242
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
1251 YYSIZE_T yystacksize;
1252
1253 int yyn;
1254 int yyresult;
1255 /* Lookahead token as an internal (translated) token number. */
1256 int yytoken = 0;
1257 /* The variables used to return semantic value and location from the
1258 action routines. */
1259 YYSTYPE yyval;
1260 YYLTYPE yyloc;
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
1269 #define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N), yylsp -= (N))
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
1275 yyssp = yyss = yyssa;
1276 yyvsp = yyvs = yyvsa;
1277 yylsp = yyls = yylsa;
1278 yystacksize = YYINITDEPTH;
1279
1280 YYDPRINTF ((stderr, "Starting parse\n"));
1281
1282 yystate = 0;
1283 yyerrstatus = 0;
1284 yynerrs = 0;
1285 yychar = YYEMPTY; /* Cause a token to be read. */
1286 yylsp[0] = yylloc;
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 {
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;
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)
1334 goto yyexhaustedlab;
1335 yystacksize *= 2;
1336 if (YYMAXDEPTH < yystacksize)
1337 yystacksize = YYMAXDEPTH;
1338
1339 {
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);
1348 # undef YYSTACK_RELOCATE
1349 if (yyss1 != yyssa)
1350 YYSTACK_FREE (yyss1);
1351 }
1352 # endif
1353 #endif /* no yyoverflow */
1354
1355 yyssp = yyss + yysize - 1;
1356 yyvsp = yyvs + yysize - 1;
1357 yylsp = yyls + yysize - 1;
1358
1359 YYDPRINTF ((stderr, "Stack size increased to %lu\n",
1360 (unsigned long int) yystacksize));
1361
1362 if (yyss + yystacksize - 1 <= yyssp)
1363 YYABORT;
1364 }
1365
1366 YYDPRINTF ((stderr, "Entering state %d\n", yystate));
1367
1368 if (yystate == YYFINAL)
1369 YYACCEPT;
1370
1371 goto yybackup;
1372
1373 /*-----------.
1374 | yybackup. |
1375 `-----------*/
1376 yybackup:
1377
1378 /* Do appropriate processing given the current state. Read a
1379 lookahead token if we need one and don't already have one. */
1380
1381 /* First try to decide what to do without reference to lookahead token. */
1382 yyn = yypact[yystate];
1383 if (yypact_value_is_default (yyn))
1384 goto yydefault;
1385
1386 /* Not known => get a lookahead token if don't already have one. */
1387
1388 /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol. */
1389 if (yychar == YYEMPTY)
1390 {
1391 YYDPRINTF ((stderr, "Reading a token: "));
1392 yychar = yylex ();
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 {
1414 if (yytable_value_is_error (yyn))
1415 goto yyerrlab;
1416 yyn = -yyn;
1417 goto yyreduce;
1418 }
1419
1420 /* Count tokens shifted since error; after three, turn off error
1421 status. */
1422 if (yyerrstatus)
1423 yyerrstatus--;
1424
1425 /* Shift the lookahead token. */
1426 YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
1427
1428 /* Discard the shifted token. */
1429 yychar = YYEMPTY;
1430
1431 yystate = yyn;
1432 YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
1433 *++yyvsp = yylval;
1434 YY_IGNORE_MAYBE_UNINITIALIZED_END
1435 *++yylsp = yylloc;
1436 goto yynewstate;
1437
1438
1439 /*-----------------------------------------------------------.
1440 | yydefault -- do the default action for the current state. |
1441 `-----------------------------------------------------------*/
1442 yydefault:
1443 yyn = yydefact[yystate];
1444 if (yyn == 0)
1445 goto yyerrlab;
1446 goto yyreduce;
1447
1448
1449 /*-----------------------------.
1450 | yyreduce -- Do a reduction. |
1451 `-----------------------------*/
1452 yyreduce:
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:
1457 '$$ = $1'.
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
1466 /* Default location. */
1467 YYLLOC_DEFAULT (yyloc, (yylsp - yylen), yylen);
1468 YY_REDUCE_PRINT (yyn);
1469 switch (yyn)
1470 {
1471 case 2:
1472 #line 110 "dtc-parser.y" /* yacc.c:1646 */
1473 {
1474 parser_output = build_dt_info((yyvsp[-2].flags), (yyvsp[-1].re), (yyvsp[0].node),
1475 guess_boot_cpuid((yyvsp[0].node)));
1476 }
1477 #line 1478 "dtc-parser.tab.c" /* yacc.c:1646 */
1478 break;
1479
1480 case 3:
1481 #line 118 "dtc-parser.y" /* yacc.c:1646 */
1482 {
1483 (yyval.flags) = DTSF_V1;
1484 }
1485 #line 1486 "dtc-parser.tab.c" /* yacc.c:1646 */
1486 break;
1487
1488 case 4:
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 */
1516 {
1517 (yyval.re) = chain_reserve_entry((yyvsp[-1].re), (yyvsp[0].re));
1518 }
1519 #line 1520 "dtc-parser.tab.c" /* yacc.c:1646 */
1520 break;
1521
1522 case 9:
1523 #line 150 "dtc-parser.y" /* yacc.c:1646 */
1524 {
1525 (yyval.re) = build_reserve_entry((yyvsp[-2].integer), (yyvsp[-1].integer));
1526 }
1527 #line 1528 "dtc-parser.tab.c" /* yacc.c:1646 */
1528 break;
1529
1530 case 10:
1531 #line 154 "dtc-parser.y" /* yacc.c:1646 */
1532 {
1533 add_label(&(yyvsp[0].re)->labels, (yyvsp[-1].labelref));
1534 (yyval.re) = (yyvsp[0].re);
1535 }
1536 #line 1537 "dtc-parser.tab.c" /* yacc.c:1646 */
1537 break;
1538
1539 case 11:
1540 #line 162 "dtc-parser.y" /* yacc.c:1646 */
1541 {
1542 (yyval.node) = name_node((yyvsp[0].node), "");
1543 }
1544 #line 1545 "dtc-parser.tab.c" /* yacc.c:1646 */
1545 break;
1546
1547 case 12:
1548 #line 166 "dtc-parser.y" /* yacc.c:1646 */
1549 {
1550 (yyval.node) = merge_nodes((yyvsp[-2].node), (yyvsp[0].node));
1551 }
1552 #line 1553 "dtc-parser.tab.c" /* yacc.c:1646 */
1553 break;
1554
1555 case 13:
1556 #line 171 "dtc-parser.y" /* yacc.c:1646 */
1557 {
1558 struct node *target = get_node_by_ref((yyvsp[-3].node), (yyvsp[-1].labelref));
1559
1560 if (target) {
1561 add_label(&target->labels, (yyvsp[-2].labelref));
1562 merge_nodes(target, (yyvsp[0].node));
1563 } else
1564 ERROR(&(yylsp[-1]), "Label or path %s not found", (yyvsp[-1].labelref));
1565 (yyval.node) = (yyvsp[-3].node);
1566 }
1567 #line 1568 "dtc-parser.tab.c" /* yacc.c:1646 */
1568 break;
1569
1570 case 14:
1571 #line 182 "dtc-parser.y" /* yacc.c:1646 */
1572 {
1573 struct node *target = get_node_by_ref((yyvsp[-2].node), (yyvsp[-1].labelref));
1574
1575 if (target)
1576 merge_nodes(target, (yyvsp[0].node));
1577 else
1578 ERROR(&(yylsp[-1]), "Label or path %s not found", (yyvsp[-1].labelref));
1579 (yyval.node) = (yyvsp[-2].node);
1580 }
1581 #line 1582 "dtc-parser.tab.c" /* yacc.c:1646 */
1582 break;
1583
1584 case 15:
1585 #line 192 "dtc-parser.y" /* yacc.c:1646 */
1586 {
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);
1596 }
1597 #line 1598 "dtc-parser.tab.c" /* yacc.c:1646 */
1598 break;
1599
1600 case 16:
1601 #line 207 "dtc-parser.y" /* yacc.c:1646 */
1602 {
1603 (yyval.node) = build_node((yyvsp[-3].proplist), (yyvsp[-2].nodelist));
1604 }
1605 #line 1606 "dtc-parser.tab.c" /* yacc.c:1646 */
1606 break;
1607
1608 case 17:
1609 #line 214 "dtc-parser.y" /* yacc.c:1646 */
1610 {
1611 (yyval.proplist) = NULL;
1612 }
1613 #line 1614 "dtc-parser.tab.c" /* yacc.c:1646 */
1614 break;
1615
1616 case 18:
1617 #line 218 "dtc-parser.y" /* yacc.c:1646 */
1618 {
1619 (yyval.proplist) = chain_property((yyvsp[0].prop), (yyvsp[-1].proplist));
1620 }
1621 #line 1622 "dtc-parser.tab.c" /* yacc.c:1646 */
1622 break;
1623
1624 case 19:
1625 #line 225 "dtc-parser.y" /* yacc.c:1646 */
1626 {
1627 (yyval.prop) = build_property((yyvsp[-3].propnodename), (yyvsp[-1].data));
1628 }
1629 #line 1630 "dtc-parser.tab.c" /* yacc.c:1646 */
1630 break;
1631
1632 case 20:
1633 #line 229 "dtc-parser.y" /* yacc.c:1646 */
1634 {
1635 (yyval.prop) = build_property((yyvsp[-1].propnodename), empty_data);
1636 }
1637 #line 1638 "dtc-parser.tab.c" /* yacc.c:1646 */
1638 break;
1639
1640 case 21:
1641 #line 233 "dtc-parser.y" /* yacc.c:1646 */
1642 {
1643 (yyval.prop) = build_property_delete((yyvsp[-1].propnodename));
1644 }
1645 #line 1646 "dtc-parser.tab.c" /* yacc.c:1646 */
1646 break;
1647
1648 case 22:
1649 #line 237 "dtc-parser.y" /* yacc.c:1646 */
1650 {
1651 add_label(&(yyvsp[0].prop)->labels, (yyvsp[-1].labelref));
1652 (yyval.prop) = (yyvsp[0].prop);
1653 }
1654 #line 1655 "dtc-parser.tab.c" /* yacc.c:1646 */
1655 break;
1656
1657 case 23:
1658 #line 245 "dtc-parser.y" /* yacc.c:1646 */
1659 {
1660 (yyval.data) = data_merge((yyvsp[-1].data), (yyvsp[0].data));
1661 }
1662 #line 1663 "dtc-parser.tab.c" /* yacc.c:1646 */
1663 break;
1664
1665 case 24:
1666 #line 249 "dtc-parser.y" /* yacc.c:1646 */
1667 {
1668 (yyval.data) = data_merge((yyvsp[-2].data), (yyvsp[-1].array).data);
1669 }
1670 #line 1671 "dtc-parser.tab.c" /* yacc.c:1646 */
1671 break;
1672
1673 case 25:
1674 #line 253 "dtc-parser.y" /* yacc.c:1646 */
1675 {
1676 (yyval.data) = data_merge((yyvsp[-3].data), (yyvsp[-1].data));
1677 }
1678 #line 1679 "dtc-parser.tab.c" /* yacc.c:1646 */
1679 break;
1680
1681 case 26:
1682 #line 257 "dtc-parser.y" /* yacc.c:1646 */
1683 {
1684 (yyval.data) = data_add_marker((yyvsp[-1].data), REF_PATH, (yyvsp[0].labelref));
1685 }
1686 #line 1687 "dtc-parser.tab.c" /* yacc.c:1646 */
1687 break;
1688
1689 case 27:
1690 #line 261 "dtc-parser.y" /* yacc.c:1646 */
1691 {
1692 FILE *f = srcfile_relative_open((yyvsp[-5].data).val, NULL);
1693 struct data d;
1694
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));
1700
1701 d = data_copy_file(f, (yyvsp[-1].integer));
1702
1703 (yyval.data) = data_merge((yyvsp[-8].data), d);
1704 fclose(f);
1705 }
1706 #line 1707 "dtc-parser.tab.c" /* yacc.c:1646 */
1707 break;
1708
1709 case 28:
1710 #line 277 "dtc-parser.y" /* yacc.c:1646 */
1711 {
1712 FILE *f = srcfile_relative_open((yyvsp[-1].data).val, NULL);
1713 struct data d = empty_data;
1714
1715 d = data_copy_file(f, -1);
1716
1717 (yyval.data) = data_merge((yyvsp[-4].data), d);
1718 fclose(f);
1719 }
1720 #line 1721 "dtc-parser.tab.c" /* yacc.c:1646 */
1721 break;
1722
1723 case 29:
1724 #line 287 "dtc-parser.y" /* yacc.c:1646 */
1725 {
1726 (yyval.data) = data_add_marker((yyvsp[-1].data), LABEL, (yyvsp[0].labelref));
1727 }
1728 #line 1729 "dtc-parser.tab.c" /* yacc.c:1646 */
1729 break;
1730
1731 case 30:
1732 #line 294 "dtc-parser.y" /* yacc.c:1646 */
1733 {
1734 (yyval.data) = empty_data;
1735 }
1736 #line 1737 "dtc-parser.tab.c" /* yacc.c:1646 */
1737 break;
1738
1739 case 31:
1740 #line 298 "dtc-parser.y" /* yacc.c:1646 */
1741 {
1742 (yyval.data) = (yyvsp[-1].data);
1743 }
1744 #line 1745 "dtc-parser.tab.c" /* yacc.c:1646 */
1745 break;
1746
1747 case 32:
1748 #line 302 "dtc-parser.y" /* yacc.c:1646 */
1749 {
1750 (yyval.data) = data_add_marker((yyvsp[-1].data), LABEL, (yyvsp[0].labelref));
1751 }
1752 #line 1753 "dtc-parser.tab.c" /* yacc.c:1646 */
1753 break;
1754
1755 case 33:
1756 #line 309 "dtc-parser.y" /* yacc.c:1646 */
1757 {
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;
1767 }
1768
1769 (yyval.array).data = empty_data;
1770 (yyval.array).bits = bits;
1771 }
1772 #line 1773 "dtc-parser.tab.c" /* yacc.c:1646 */
1773 break;
1774
1775 case 34:
1776 #line 325 "dtc-parser.y" /* yacc.c:1646 */
1777 {
1778 (yyval.array).data = empty_data;
1779 (yyval.array).bits = 32;
1780 }
1781 #line 1782 "dtc-parser.tab.c" /* yacc.c:1646 */
1782 break;
1783
1784 case 35:
1785 #line 330 "dtc-parser.y" /* yacc.c:1646 */
1786 {
1787 if ((yyvsp[-1].array).bits < 64) {
1788 uint64_t mask = (1ULL << (yyvsp[-1].array).bits) - 1;
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 */
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);
1800 }
1801
1802 (yyval.array).data = data_append_integer((yyvsp[-1].array).data, (yyvsp[0].integer), (yyvsp[-1].array).bits);
1803 }
1804 #line 1805 "dtc-parser.tab.c" /* yacc.c:1646 */
1805 break;
1806
1807 case 36:
1808 #line 349 "dtc-parser.y" /* yacc.c:1646 */
1809 {
1810 uint64_t val = ~0ULL >> (64 - (yyvsp[-1].array).bits);
1811
1812 if ((yyvsp[-1].array).bits == 32)
1813 (yyvsp[-1].array).data = data_add_marker((yyvsp[-1].array).data,
1814 REF_PHANDLE,
1815 (yyvsp[0].labelref));
1816 else
1817 ERROR(&(yylsp[0]), "References are only allowed in "
1818 "arrays with 32-bit elements.");
1819
1820 (yyval.array).data = data_append_integer((yyvsp[-1].array).data, val, (yyvsp[-1].array).bits);
1821 }
1822 #line 1823 "dtc-parser.tab.c" /* yacc.c:1646 */
1823 break;
1824
1825 case 37:
1826 #line 363 "dtc-parser.y" /* yacc.c:1646 */
1827 {
1828 (yyval.array).data = data_add_marker((yyvsp[-1].array).data, LABEL, (yyvsp[0].labelref));
1829 }
1830 #line 1831 "dtc-parser.tab.c" /* yacc.c:1646 */
1831 break;
1832
1833 case 40:
1834 #line 372 "dtc-parser.y" /* yacc.c:1646 */
1835 {
1836 (yyval.integer) = (yyvsp[-1].integer);
1837 }
1838 #line 1839 "dtc-parser.tab.c" /* yacc.c:1646 */
1839 break;
1840
1841 case 43:
1842 #line 383 "dtc-parser.y" /* yacc.c:1646 */
1843 { (yyval.integer) = (yyvsp[-4].integer) ? (yyvsp[-2].integer) : (yyvsp[0].integer); }
1844 #line 1845 "dtc-parser.tab.c" /* yacc.c:1646 */
1845 break;
1846
1847 case 45:
1848 #line 388 "dtc-parser.y" /* yacc.c:1646 */
1849 { (yyval.integer) = (yyvsp[-2].integer) || (yyvsp[0].integer); }
1850 #line 1851 "dtc-parser.tab.c" /* yacc.c:1646 */
1851 break;
1852
1853 case 47:
1854 #line 393 "dtc-parser.y" /* yacc.c:1646 */
1855 { (yyval.integer) = (yyvsp[-2].integer) && (yyvsp[0].integer); }
1856 #line 1857 "dtc-parser.tab.c" /* yacc.c:1646 */
1857 break;
1858
1859 case 49:
1860 #line 398 "dtc-parser.y" /* yacc.c:1646 */
1861 { (yyval.integer) = (yyvsp[-2].integer) | (yyvsp[0].integer); }
1862 #line 1863 "dtc-parser.tab.c" /* yacc.c:1646 */
1863 break;
1864
1865 case 51:
1866 #line 403 "dtc-parser.y" /* yacc.c:1646 */
1867 { (yyval.integer) = (yyvsp[-2].integer) ^ (yyvsp[0].integer); }
1868 #line 1869 "dtc-parser.tab.c" /* yacc.c:1646 */
1869 break;
1870
1871 case 53:
1872 #line 408 "dtc-parser.y" /* yacc.c:1646 */
1873 { (yyval.integer) = (yyvsp[-2].integer) & (yyvsp[0].integer); }
1874 #line 1875 "dtc-parser.tab.c" /* yacc.c:1646 */
1875 break;
1876
1877 case 55:
1878 #line 413 "dtc-parser.y" /* yacc.c:1646 */
1879 { (yyval.integer) = (yyvsp[-2].integer) == (yyvsp[0].integer); }
1880 #line 1881 "dtc-parser.tab.c" /* yacc.c:1646 */
1881 break;
1882
1883 case 56:
1884 #line 414 "dtc-parser.y" /* yacc.c:1646 */
1885 { (yyval.integer) = (yyvsp[-2].integer) != (yyvsp[0].integer); }
1886 #line 1887 "dtc-parser.tab.c" /* yacc.c:1646 */
1887 break;
1888
1889 case 58:
1890 #line 419 "dtc-parser.y" /* yacc.c:1646 */
1891 { (yyval.integer) = (yyvsp[-2].integer) < (yyvsp[0].integer); }
1892 #line 1893 "dtc-parser.tab.c" /* yacc.c:1646 */
1893 break;
1894
1895 case 59:
1896 #line 420 "dtc-parser.y" /* yacc.c:1646 */
1897 { (yyval.integer) = (yyvsp[-2].integer) > (yyvsp[0].integer); }
1898 #line 1899 "dtc-parser.tab.c" /* yacc.c:1646 */
1899 break;
1900
1901 case 60:
1902 #line 421 "dtc-parser.y" /* yacc.c:1646 */
1903 { (yyval.integer) = (yyvsp[-2].integer) <= (yyvsp[0].integer); }
1904 #line 1905 "dtc-parser.tab.c" /* yacc.c:1646 */
1905 break;
1906
1907 case 61:
1908 #line 422 "dtc-parser.y" /* yacc.c:1646 */
1909 { (yyval.integer) = (yyvsp[-2].integer) >= (yyvsp[0].integer); }
1910 #line 1911 "dtc-parser.tab.c" /* yacc.c:1646 */
1911 break;
1912
1913 case 62:
1914 #line 426 "dtc-parser.y" /* yacc.c:1646 */
1915 { (yyval.integer) = (yyvsp[-2].integer) << (yyvsp[0].integer); }
1916 #line 1917 "dtc-parser.tab.c" /* yacc.c:1646 */
1917 break;
1918
1919 case 63:
1920 #line 427 "dtc-parser.y" /* yacc.c:1646 */
1921 { (yyval.integer) = (yyvsp[-2].integer) >> (yyvsp[0].integer); }
1922 #line 1923 "dtc-parser.tab.c" /* yacc.c:1646 */
1923 break;
1924
1925 case 65:
1926 #line 432 "dtc-parser.y" /* yacc.c:1646 */
1927 { (yyval.integer) = (yyvsp[-2].integer) + (yyvsp[0].integer); }
1928 #line 1929 "dtc-parser.tab.c" /* yacc.c:1646 */
1929 break;
1930
1931 case 66:
1932 #line 433 "dtc-parser.y" /* yacc.c:1646 */
1933 { (yyval.integer) = (yyvsp[-2].integer) - (yyvsp[0].integer); }
1934 #line 1935 "dtc-parser.tab.c" /* yacc.c:1646 */
1935 break;
1936
1937 case 68:
1938 #line 438 "dtc-parser.y" /* yacc.c:1646 */
1939 { (yyval.integer) = (yyvsp[-2].integer) * (yyvsp[0].integer); }
1940 #line 1941 "dtc-parser.tab.c" /* yacc.c:1646 */
1941 break;
1942
1943 case 69:
1944 #line 440 "dtc-parser.y" /* yacc.c:1646 */
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 }
1953 #line 1954 "dtc-parser.tab.c" /* yacc.c:1646 */
1954 break;
1955
1956 case 70:
1957 #line 449 "dtc-parser.y" /* yacc.c:1646 */
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 }
1966 #line 1967 "dtc-parser.tab.c" /* yacc.c:1646 */
1967 break;
1968
1969 case 73:
1970 #line 462 "dtc-parser.y" /* yacc.c:1646 */
1971 { (yyval.integer) = -(yyvsp[0].integer); }
1972 #line 1973 "dtc-parser.tab.c" /* yacc.c:1646 */
1973 break;
1974
1975 case 74:
1976 #line 463 "dtc-parser.y" /* yacc.c:1646 */
1977 { (yyval.integer) = ~(yyvsp[0].integer); }
1978 #line 1979 "dtc-parser.tab.c" /* yacc.c:1646 */
1979 break;
1980
1981 case 75:
1982 #line 464 "dtc-parser.y" /* yacc.c:1646 */
1983 { (yyval.integer) = !(yyvsp[0].integer); }
1984 #line 1985 "dtc-parser.tab.c" /* yacc.c:1646 */
1985 break;
1986
1987 case 76:
1988 #line 469 "dtc-parser.y" /* yacc.c:1646 */
1989 {
1990 (yyval.data) = empty_data;
1991 }
1992 #line 1993 "dtc-parser.tab.c" /* yacc.c:1646 */
1993 break;
1994
1995 case 77:
1996 #line 473 "dtc-parser.y" /* yacc.c:1646 */
1997 {
1998 (yyval.data) = data_append_byte((yyvsp[-1].data), (yyvsp[0].byte));
1999 }
2000 #line 2001 "dtc-parser.tab.c" /* yacc.c:1646 */
2001 break;
2002
2003 case 78:
2004 #line 477 "dtc-parser.y" /* yacc.c:1646 */
2005 {
2006 (yyval.data) = data_add_marker((yyvsp[-1].data), LABEL, (yyvsp[0].labelref));
2007 }
2008 #line 2009 "dtc-parser.tab.c" /* yacc.c:1646 */
2009 break;
2010
2011 case 79:
2012 #line 484 "dtc-parser.y" /* yacc.c:1646 */
2013 {
2014 (yyval.nodelist) = NULL;
2015 }
2016 #line 2017 "dtc-parser.tab.c" /* yacc.c:1646 */
2017 break;
2018
2019 case 80:
2020 #line 488 "dtc-parser.y" /* yacc.c:1646 */
2021 {
2022 (yyval.nodelist) = chain_node((yyvsp[-1].node), (yyvsp[0].nodelist));
2023 }
2024 #line 2025 "dtc-parser.tab.c" /* yacc.c:1646 */
2025 break;
2026
2027 case 81:
2028 #line 492 "dtc-parser.y" /* yacc.c:1646 */
2029 {
2030 ERROR(&(yylsp[0]), "Properties must precede subnodes");
2031 YYERROR;
2032 }
2033 #line 2034 "dtc-parser.tab.c" /* yacc.c:1646 */
2034 break;
2035
2036 case 82:
2037 #line 500 "dtc-parser.y" /* yacc.c:1646 */
2038 {
2039 (yyval.node) = name_node((yyvsp[0].node), (yyvsp[-1].propnodename));
2040 }
2041 #line 2042 "dtc-parser.tab.c" /* yacc.c:1646 */
2042 break;
2043
2044 case 83:
2045 #line 504 "dtc-parser.y" /* yacc.c:1646 */
2046 {
2047 (yyval.node) = name_node(build_node_delete(), (yyvsp[-1].propnodename));
2048 }
2049 #line 2050 "dtc-parser.tab.c" /* yacc.c:1646 */
2050 break;
2051
2052 case 84:
2053 #line 508 "dtc-parser.y" /* yacc.c:1646 */
2054 {
2055 add_label(&(yyvsp[0].node)->labels, (yyvsp[-1].labelref));
2056 (yyval.node) = (yyvsp[0].node);
2057 }
2058 #line 2059 "dtc-parser.tab.c" /* yacc.c:1646 */
2059 break;
2060
2061
2062 #line 2063 "dtc-parser.tab.c" /* yacc.c:1646 */
2063 default: break;
2064 }
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. */
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;
2083 *++yylsp = yyloc;
2084
2085 /* Now 'shift' the result of the reduction. Determine what state
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
2100 /*--------------------------------------.
2101 | yyerrlab -- here on detecting error. |
2102 `--------------------------------------*/
2103 yyerrlab:
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
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
2115 # define YYSYNTAX_ERROR yysyntax_error (&yymsg_alloc, &yymsg, \
2116 yyssp, yytoken)
2117 {
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;
2143 }
2144 # undef YYSYNTAX_ERROR
2145 #endif
2146 }
2147
2148 yyerror_range[1] = yylloc;
2149
2150 if (yyerrstatus == 3)
2151 {
2152 /* If just tried and failed to reuse lookahead token after an
2153 error, discard it. */
2154
2155 if (yychar <= YYEOF)
2156 {
2157 /* Return failure if at end of input. */
2158 if (yychar == YYEOF)
2159 YYABORT;
2160 }
2161 else
2162 {
2163 yydestruct ("Error: discarding",
2164 yytoken, &yylval, &yylloc);
2165 yychar = YYEMPTY;
2166 }
2167 }
2168
2169 /* Else will try to reuse lookahead token after shifting the error
2170 token. */
2171 goto yyerrlab1;
2172
2173
2174 /*---------------------------------------------------.
2175 | yyerrorlab -- error raised explicitly by YYERROR. |
2176 `---------------------------------------------------*/
2177 yyerrorlab:
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
2185 yyerror_range[1] = yylsp[1-yylen];
2186 /* Do not reclaim the symbols of the rule whose action triggered
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 `-------------------------------------------------------------*/
2198 yyerrlab1:
2199 yyerrstatus = 3; /* Each real token shifted decrements this. */
2200
2201 for (;;)
2202 {
2203 yyn = yypact[yystate];
2204 if (!yypact_value_is_default (yyn))
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 }
2214
2215 /* Pop the current state because it cannot handle the error token. */
2216 if (yyssp == yyss)
2217 YYABORT;
2218
2219 yyerror_range[1] = *yylsp;
2220 yydestruct ("Error: popping",
2221 yystos[yystate], yyvsp, yylsp);
2222 YYPOPSTACK (1);
2223 yystate = *yyssp;
2224 YY_STACK_PRINT (yyss, yyssp);
2225 }
2226
2227 YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
2228 *++yyvsp = yylval;
2229 YY_IGNORE_MAYBE_UNINITIALIZED_END
2230
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;
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 `-------------------------------------*/
2247 yyacceptlab:
2248 yyresult = 0;
2249 goto yyreturn;
2250
2251 /*-----------------------------------.
2252 | yyabortlab -- YYABORT comes here. |
2253 `-----------------------------------*/
2254 yyabortlab:
2255 yyresult = 1;
2256 goto yyreturn;
2257
2258 #if !defined yyoverflow || YYERROR_VERBOSE
2259 /*-------------------------------------------------.
2260 | yyexhaustedlab -- memory exhaustion comes here. |
2261 `-------------------------------------------------*/
2262 yyexhaustedlab:
2263 yyerror (YY_("memory exhausted"));
2264 yyresult = 2;
2265 /* Fall through. */
2266 #endif
2267
2268 yyreturn:
2269 if (yychar != YYEMPTY)
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",
2275 yytoken, &yylval, &yylloc);
2276 }
2277 /* Do not reclaim the symbols of the rule whose action triggered
2278 this YYABORT or YYACCEPT. */
2279 YYPOPSTACK (yylen);
2280 YY_STACK_PRINT (yyss, yyssp);
2281 while (yyssp != yyss)
2282 {
2283 yydestruct ("Cleanup: popping",
2284 yystos[*yyssp], yyvsp, yylsp);
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
2295 return yyresult;
2296 }
2297 #line 514 "dtc-parser.y" /* yacc.c:1906 */
2298
2299
2300 void yyerror(char const *s)
2301 {
2302 ERROR(&yylloc, "%s", s);
2303 }