1 /* A Bison parser, made by GNU Bison 3.8.2. */
3 /* Bison implementation for Yacc-like parsers in C
5 Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2021 Free Software Foundation,
8 This program is free software: you can redistribute it and/or modify
9 it under the terms of the GNU General Public License as published by
10 the Free Software Foundation, either version 3 of the License, or
11 (at your option) any later version.
13 This program is distributed in the hope that it will be useful,
14 but WITHOUT ANY WARRANTY; without even the implied warranty of
15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 GNU General Public License for more details.
18 You should have received a copy of the GNU General Public License
19 along with this program. If not, see <https://www.gnu.org/licenses/>. */
21 /* As a special exception, you may create a larger work that contains
22 part or all of the Bison parser skeleton and distribute that work
23 under terms of your choice, so long as that work isn't itself a
24 parser generator using the skeleton or a modified version thereof
25 as a parser skeleton. Alternatively, if you modify or redistribute
26 the parser skeleton itself, you may (at your option) remove this
27 special exception, which will cause the skeleton and the resulting
28 Bison output files to be licensed under the GNU General Public
29 License without this special exception.
31 This special exception was added by the Free Software Foundation in
32 version 2.2 of Bison. */
34 /* C LALR(1) parser skeleton written by Richard Stallman, by
35 simplifying the original so-called "semantic" parser. */
37 /* DO NOT RELY ON FEATURES THAT ARE NOT DOCUMENTED in the manual,
38 especially those whose name start with YY_ or yy_. They are
39 private implementation details that can be changed or removed. */
41 /* All symbols defined below should begin with yy or YY, to avoid
42 infringing on user name space. This should be done even for local
43 variables, as they might otherwise be expanded by user macros.
44 There are some unavoidable exceptions within include files to
45 define necessary library symbols; they are noted "INFRINGES ON
46 USER NAME SPACE" below. */
48 /* Identify Bison output, and Bison version. */
51 /* Bison version string. */
52 #define YYBISON_VERSION "3.8.2"
55 #define YYSKELETON_NAME "yacc.c"
69 /* First part of user prologue. */
71 /* sconfig, coreboot device tree compiler */
72 /* SPDX-License-Identifier: GPL-2.0-only */
78 void yyerror(const char *s);
80 static struct bus *cur_parent;
81 static struct chip_instance *cur_chip_instance;
82 static struct fw_config_field *cur_field;
83 static struct fw_config_field_bits *cur_bits;
89 # define YY_CAST(Type, Val) static_cast<Type> (Val)
90 # define YY_REINTERPRET_CAST(Type, Val) reinterpret_cast<Type> (Val)
92 # define YY_CAST(Type, Val) ((Type) (Val))
93 # define YY_REINTERPRET_CAST(Type, Val) ((Type) (Val))
97 # if defined __cplusplus
98 # if 201103L <= __cplusplus
99 # define YY_NULLPTR nullptr
101 # define YY_NULLPTR 0
104 # define YY_NULLPTR ((void*)0)
108 #include "sconfig.tab.h_shipped"
112 YYSYMBOL_YYEMPTY = -2,
113 YYSYMBOL_YYEOF = 0, /* "end of file" */
114 YYSYMBOL_YYerror = 1, /* error */
115 YYSYMBOL_YYUNDEF = 2, /* "invalid token" */
116 YYSYMBOL_CHIP = 3, /* CHIP */
117 YYSYMBOL_DEVICE = 4, /* DEVICE */
118 YYSYMBOL_REGISTER = 5, /* REGISTER */
119 YYSYMBOL_ALIAS = 6, /* ALIAS */
120 YYSYMBOL_REFERENCE = 7, /* REFERENCE */
121 YYSYMBOL_ASSOCIATION = 8, /* ASSOCIATION */
122 YYSYMBOL_BOOL = 9, /* BOOL */
123 YYSYMBOL_STATUS = 10, /* STATUS */
124 YYSYMBOL_MANDATORY = 11, /* MANDATORY */
125 YYSYMBOL_BUS = 12, /* BUS */
126 YYSYMBOL_RESOURCE = 13, /* RESOURCE */
127 YYSYMBOL_END = 14, /* END */
128 YYSYMBOL_EQUALS = 15, /* EQUALS */
129 YYSYMBOL_HEX = 16, /* HEX */
130 YYSYMBOL_STRING = 17, /* STRING */
131 YYSYMBOL_PCI = 18, /* PCI */
132 YYSYMBOL_PNP = 19, /* PNP */
133 YYSYMBOL_I2C = 20, /* I2C */
134 YYSYMBOL_CPU_CLUSTER = 21, /* CPU_CLUSTER */
135 YYSYMBOL_CPU = 22, /* CPU */
136 YYSYMBOL_DOMAIN = 23, /* DOMAIN */
137 YYSYMBOL_IRQ = 24, /* IRQ */
138 YYSYMBOL_DRQ = 25, /* DRQ */
139 YYSYMBOL_SLOT_DESC = 26, /* SLOT_DESC */
140 YYSYMBOL_SMBIOS_DEV_INFO = 27, /* SMBIOS_DEV_INFO */
141 YYSYMBOL_IO = 28, /* IO */
142 YYSYMBOL_NUMBER = 29, /* NUMBER */
143 YYSYMBOL_SUBSYSTEMID = 30, /* SUBSYSTEMID */
144 YYSYMBOL_INHERIT = 31, /* INHERIT */
145 YYSYMBOL_PCIINT = 32, /* PCIINT */
146 YYSYMBOL_GENERIC = 33, /* GENERIC */
147 YYSYMBOL_SPI = 34, /* SPI */
148 YYSYMBOL_USB = 35, /* USB */
149 YYSYMBOL_MMIO = 36, /* MMIO */
150 YYSYMBOL_GPIO = 37, /* GPIO */
151 YYSYMBOL_MDIO = 38, /* MDIO */
152 YYSYMBOL_FW_CONFIG_TABLE = 39, /* FW_CONFIG_TABLE */
153 YYSYMBOL_FW_CONFIG_FIELD = 40, /* FW_CONFIG_FIELD */
154 YYSYMBOL_FW_CONFIG_OPTION = 41, /* FW_CONFIG_OPTION */
155 YYSYMBOL_FW_CONFIG_PROBE = 42, /* FW_CONFIG_PROBE */
156 YYSYMBOL_PIPE = 43, /* PIPE */
157 YYSYMBOL_OPS = 44, /* OPS */
158 YYSYMBOL_YYACCEPT = 45, /* $accept */
159 YYSYMBOL_devtree = 46, /* devtree */
160 YYSYMBOL_chipchild_nondev = 47, /* chipchild_nondev */
161 YYSYMBOL_chipchild = 48, /* chipchild */
162 YYSYMBOL_chipchildren = 49, /* chipchildren */
163 YYSYMBOL_chipchildren_dev = 50, /* chipchildren_dev */
164 YYSYMBOL_devicechildren = 51, /* devicechildren */
165 YYSYMBOL_chip = 52, /* chip */
166 YYSYMBOL_53_1 = 53, /* @1 */
167 YYSYMBOL_device = 54, /* device */
168 YYSYMBOL_55_2 = 55, /* @2 */
169 YYSYMBOL_56_3 = 56, /* @3 */
170 YYSYMBOL_alias = 57, /* alias */
171 YYSYMBOL_status = 58, /* status */
172 YYSYMBOL_resource = 59, /* resource */
173 YYSYMBOL_reference = 60, /* reference */
174 YYSYMBOL_registers = 61, /* registers */
175 YYSYMBOL_subsystemid = 62, /* subsystemid */
176 YYSYMBOL_smbios_slot_desc = 63, /* smbios_slot_desc */
177 YYSYMBOL_smbios_dev_info = 64, /* smbios_dev_info */
178 YYSYMBOL_fw_config_table = 65, /* fw_config_table */
179 YYSYMBOL_fw_config_table_children = 66, /* fw_config_table_children */
180 YYSYMBOL_fw_config_field_children = 67, /* fw_config_field_children */
181 YYSYMBOL_fw_config_field_bits = 68, /* fw_config_field_bits */
182 YYSYMBOL_fw_config_field_bits_repeating = 69, /* fw_config_field_bits_repeating */
183 YYSYMBOL_fw_config_field = 70, /* fw_config_field */
184 YYSYMBOL_71_4 = 71, /* $@4 */
185 YYSYMBOL_72_5 = 72, /* $@5 */
186 YYSYMBOL_73_6 = 73, /* $@6 */
187 YYSYMBOL_fw_config_option = 74, /* fw_config_option */
188 YYSYMBOL_fw_config_probe = 75, /* fw_config_probe */
189 YYSYMBOL_ops = 76 /* ops */
191 typedef enum yysymbol_kind_t yysymbol_kind_t;
200 /* On compilers that do not define __PTRDIFF_MAX__ etc., make sure
201 <limits.h> and (if available) <stdint.h> are included
202 so that the code can choose integer types of a good width. */
204 #ifndef __PTRDIFF_MAX__
205 # include <limits.h> /* INFRINGES ON USER NAME SPACE */
206 # if defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__
207 # include <stdint.h> /* INFRINGES ON USER NAME SPACE */
212 /* Narrow types that promote to a signed type and that can represent a
213 signed or unsigned integer of at least N bits. In tables they can
214 save space and decrease cache pressure. Promoting to a signed type
215 helps avoid bugs in integer arithmetic. */
217 #ifdef __INT_LEAST8_MAX__
218 typedef __INT_LEAST8_TYPE__ yytype_int8;
219 #elif defined YY_STDINT_H
220 typedef int_least8_t yytype_int8;
222 typedef signed char yytype_int8;
225 #ifdef __INT_LEAST16_MAX__
226 typedef __INT_LEAST16_TYPE__ yytype_int16;
227 #elif defined YY_STDINT_H
228 typedef int_least16_t yytype_int16;
230 typedef short yytype_int16;
233 /* Work around bug in HP-UX 11.23, which defines these macros
234 incorrectly for preprocessor constants. This workaround can likely
235 be removed in 2023, as HPE has promised support for HP-UX 11.23
236 (aka HP-UX 11i v2) only through the end of 2022; see Table 2 of
237 <https://h20195.www2.hpe.com/V2/getpdf.aspx/4AA4-7673ENW.pdf>. */
239 # undef UINT_LEAST8_MAX
240 # undef UINT_LEAST16_MAX
241 # define UINT_LEAST8_MAX 255
242 # define UINT_LEAST16_MAX 65535
245 #if defined __UINT_LEAST8_MAX__ && __UINT_LEAST8_MAX__ <= __INT_MAX__
246 typedef __UINT_LEAST8_TYPE__ yytype_uint8;
247 #elif (!defined __UINT_LEAST8_MAX__ && defined YY_STDINT_H \
248 && UINT_LEAST8_MAX <= INT_MAX)
249 typedef uint_least8_t yytype_uint8;
250 #elif !defined __UINT_LEAST8_MAX__ && UCHAR_MAX <= INT_MAX
251 typedef unsigned char yytype_uint8;
253 typedef short yytype_uint8;
256 #if defined __UINT_LEAST16_MAX__ && __UINT_LEAST16_MAX__ <= __INT_MAX__
257 typedef __UINT_LEAST16_TYPE__ yytype_uint16;
258 #elif (!defined __UINT_LEAST16_MAX__ && defined YY_STDINT_H \
259 && UINT_LEAST16_MAX <= INT_MAX)
260 typedef uint_least16_t yytype_uint16;
261 #elif !defined __UINT_LEAST16_MAX__ && USHRT_MAX <= INT_MAX
262 typedef unsigned short yytype_uint16;
264 typedef int yytype_uint16;
268 # if defined __PTRDIFF_TYPE__ && defined __PTRDIFF_MAX__
269 # define YYPTRDIFF_T __PTRDIFF_TYPE__
270 # define YYPTRDIFF_MAXIMUM __PTRDIFF_MAX__
271 # elif defined PTRDIFF_MAX
273 # include <stddef.h> /* INFRINGES ON USER NAME SPACE */
275 # define YYPTRDIFF_T ptrdiff_t
276 # define YYPTRDIFF_MAXIMUM PTRDIFF_MAX
278 # define YYPTRDIFF_T long
279 # define YYPTRDIFF_MAXIMUM LONG_MAX
284 # ifdef __SIZE_TYPE__
285 # define YYSIZE_T __SIZE_TYPE__
286 # elif defined size_t
287 # define YYSIZE_T size_t
288 # elif defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__
289 # include <stddef.h> /* INFRINGES ON USER NAME SPACE */
290 # define YYSIZE_T size_t
292 # define YYSIZE_T unsigned
296 #define YYSIZE_MAXIMUM \
297 YY_CAST (YYPTRDIFF_T, \
298 (YYPTRDIFF_MAXIMUM < YY_CAST (YYSIZE_T, -1) \
299 ? YYPTRDIFF_MAXIMUM \
300 : YY_CAST (YYSIZE_T, -1)))
302 #define YYSIZEOF(X) YY_CAST (YYPTRDIFF_T, sizeof (X))
305 /* Stored state numbers (used for stacks). */
306 typedef yytype_int8 yy_state_t;
308 /* State numbers in computations. */
309 typedef int yy_state_fast_t;
312 # if defined YYENABLE_NLS && YYENABLE_NLS
314 # include <libintl.h> /* INFRINGES ON USER NAME SPACE */
315 # define YY_(Msgid) dgettext ("bison-runtime", Msgid)
319 # define YY_(Msgid) Msgid
324 #ifndef YY_ATTRIBUTE_PURE
325 # if defined __GNUC__ && 2 < __GNUC__ + (96 <= __GNUC_MINOR__)
326 # define YY_ATTRIBUTE_PURE __attribute__ ((__pure__))
328 # define YY_ATTRIBUTE_PURE
332 #ifndef YY_ATTRIBUTE_UNUSED
333 # if defined __GNUC__ && 2 < __GNUC__ + (7 <= __GNUC_MINOR__)
334 # define YY_ATTRIBUTE_UNUSED __attribute__ ((__unused__))
336 # define YY_ATTRIBUTE_UNUSED
340 /* Suppress unused-variable warnings by "using" E. */
341 #if ! defined lint || defined __GNUC__
342 # define YY_USE(E) ((void) (E))
344 # define YY_USE(E) /* empty */
347 /* Suppress an incorrect diagnostic about yylval being uninitialized. */
348 #if defined __GNUC__ && ! defined __ICC && 406 <= __GNUC__ * 100 + __GNUC_MINOR__
349 # if __GNUC__ * 100 + __GNUC_MINOR__ < 407
350 # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
351 _Pragma ("GCC diagnostic push") \
352 _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")
354 # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
355 _Pragma ("GCC diagnostic push") \
356 _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"") \
357 _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"")
359 # define YY_IGNORE_MAYBE_UNINITIALIZED_END \
360 _Pragma ("GCC diagnostic pop")
362 # define YY_INITIAL_VALUE(Value) Value
364 #ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
365 # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
366 # define YY_IGNORE_MAYBE_UNINITIALIZED_END
368 #ifndef YY_INITIAL_VALUE
369 # define YY_INITIAL_VALUE(Value) /* Nothing. */
372 #if defined __cplusplus && defined __GNUC__ && ! defined __ICC && 6 <= __GNUC__
373 # define YY_IGNORE_USELESS_CAST_BEGIN \
374 _Pragma ("GCC diagnostic push") \
375 _Pragma ("GCC diagnostic ignored \"-Wuseless-cast\"")
376 # define YY_IGNORE_USELESS_CAST_END \
377 _Pragma ("GCC diagnostic pop")
379 #ifndef YY_IGNORE_USELESS_CAST_BEGIN
380 # define YY_IGNORE_USELESS_CAST_BEGIN
381 # define YY_IGNORE_USELESS_CAST_END
385 #define YY_ASSERT(E) ((void) (0 && (E)))
387 #if !defined yyoverflow
389 /* The parser invokes alloca or malloc; define the necessary symbols. */
391 # ifdef YYSTACK_USE_ALLOCA
392 # if YYSTACK_USE_ALLOCA
394 # define YYSTACK_ALLOC __builtin_alloca
395 # elif defined __BUILTIN_VA_ARG_INCR
396 # include <alloca.h> /* INFRINGES ON USER NAME SPACE */
398 # define YYSTACK_ALLOC __alloca
399 # elif defined _MSC_VER
400 # include <malloc.h> /* INFRINGES ON USER NAME SPACE */
401 # define alloca _alloca
403 # define YYSTACK_ALLOC alloca
404 # if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS
405 # include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
406 /* Use EXIT_SUCCESS as a witness for stdlib.h. */
407 # ifndef EXIT_SUCCESS
408 # define EXIT_SUCCESS 0
415 # ifdef YYSTACK_ALLOC
416 /* Pacify GCC's 'empty if-body' warning. */
417 # define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
418 # ifndef YYSTACK_ALLOC_MAXIMUM
419 /* The OS might guarantee only one guard page at the bottom of the stack,
420 and a page size can be as small as 4096 bytes. So we cannot safely
421 invoke alloca (N) if N exceeds 4096. Use a slightly smaller number
422 to allow for a few compiler-allocated temporary stack slots. */
423 # define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */
426 # define YYSTACK_ALLOC YYMALLOC
427 # define YYSTACK_FREE YYFREE
428 # ifndef YYSTACK_ALLOC_MAXIMUM
429 # define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
431 # if (defined __cplusplus && ! defined EXIT_SUCCESS \
432 && ! ((defined YYMALLOC || defined malloc) \
433 && (defined YYFREE || defined free)))
434 # include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
435 # ifndef EXIT_SUCCESS
436 # define EXIT_SUCCESS 0
440 # define YYMALLOC malloc
441 # if ! defined malloc && ! defined EXIT_SUCCESS
442 void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
447 # if ! defined free && ! defined EXIT_SUCCESS
448 void free (void *); /* INFRINGES ON USER NAME SPACE */
452 #endif /* !defined yyoverflow */
454 #if (! defined yyoverflow \
455 && (! defined __cplusplus \
456 || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
458 /* A type that is properly aligned for any stack member. */
461 yy_state_t yyss_alloc;
465 /* The size of the maximum gap between one aligned stack and the next. */
466 # define YYSTACK_GAP_MAXIMUM (YYSIZEOF (union yyalloc) - 1)
468 /* The size of an array large to enough to hold all stacks, each with
470 # define YYSTACK_BYTES(N) \
471 ((N) * (YYSIZEOF (yy_state_t) + YYSIZEOF (YYSTYPE)) \
472 + YYSTACK_GAP_MAXIMUM)
474 # define YYCOPY_NEEDED 1
476 /* Relocate STACK from its old location to the new one. The
477 local variables YYSIZE and YYSTACKSIZE give the old and new number of
478 elements in the stack, and YYPTR gives the new location of the
479 stack. Advance YYPTR to a properly aligned location for the next
481 # define YYSTACK_RELOCATE(Stack_alloc, Stack) \
484 YYPTRDIFF_T yynewbytes; \
485 YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \
486 Stack = &yyptr->Stack_alloc; \
487 yynewbytes = yystacksize * YYSIZEOF (*Stack) + YYSTACK_GAP_MAXIMUM; \
488 yyptr += yynewbytes / YYSIZEOF (*yyptr); \
494 #if defined YYCOPY_NEEDED && YYCOPY_NEEDED
495 /* Copy COUNT objects from SRC to DST. The source and destination do
498 # if defined __GNUC__ && 1 < __GNUC__
499 # define YYCOPY(Dst, Src, Count) \
500 __builtin_memcpy (Dst, Src, YY_CAST (YYSIZE_T, (Count)) * sizeof (*(Src)))
502 # define YYCOPY(Dst, Src, Count) \
506 for (yyi = 0; yyi < (Count); yyi++) \
507 (Dst)[yyi] = (Src)[yyi]; \
512 #endif /* !YYCOPY_NEEDED */
514 /* YYFINAL -- State number of the termination state. */
516 /* YYLAST -- Last index in YYTABLE. */
519 /* YYNTOKENS -- Number of terminals. */
521 /* YYNNTS -- Number of nonterminals. */
523 /* YYNRULES -- Number of rules. */
525 /* YYNSTATES -- Number of states. */
526 #define YYNSTATES 103
528 /* YYMAXUTOK -- Last valid token kind. */
529 #define YYMAXUTOK 299
532 /* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM
533 as returned by yylex, with out-of-bounds checking. */
534 #define YYTRANSLATE(YYX) \
535 (0 <= (YYX) && (YYX) <= YYMAXUTOK \
536 ? YY_CAST (yysymbol_kind_t, yytranslate[YYX]) \
539 /* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM
540 as returned by yylex. */
541 static const yytype_int8 yytranslate[] =
543 0, 2, 2, 2, 2, 2, 2, 2, 2, 2,
544 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
545 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
546 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
547 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
548 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
549 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
550 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
551 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
552 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
553 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
554 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
555 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
556 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
557 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
558 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
559 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
560 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
561 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
562 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
563 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
564 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
565 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
566 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
567 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
568 2, 2, 2, 2, 2, 2, 1, 2, 3, 4,
569 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
570 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
571 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
572 35, 36, 37, 38, 39, 40, 41, 42, 43, 44
576 /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */
577 static const yytype_uint8 yyrline[] =
579 0, 26, 26, 26, 26, 29, 29, 29, 30, 30,
580 31, 31, 32, 32, 34, 34, 34, 34, 34, 34,
581 34, 34, 34, 34, 36, 36, 45, 45, 53, 53,
582 61, 63, 67, 67, 69, 72, 75, 78, 81, 84,
583 87, 90, 93, 96, 100, 103, 103, 106, 106, 109,
584 115, 115, 118, 117, 122, 122, 130, 130, 136, 140,
589 /** Accessing symbol of state STATE. */
590 #define YY_ACCESSING_SYMBOL(State) YY_CAST (yysymbol_kind_t, yystos[State])
593 /* The user-facing name of the symbol whose (internal) number is
594 YYSYMBOL. No bounds checking. */
595 static const char *yysymbol_name (yysymbol_kind_t yysymbol) YY_ATTRIBUTE_UNUSED;
597 /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
598 First, the terminals, then, starting at YYNTOKENS, nonterminals. */
599 static const char *const yytname[] =
601 "\"end of file\"", "error", "\"invalid token\"", "CHIP", "DEVICE",
602 "REGISTER", "ALIAS", "REFERENCE", "ASSOCIATION", "BOOL", "STATUS",
603 "MANDATORY", "BUS", "RESOURCE", "END", "EQUALS", "HEX", "STRING", "PCI",
604 "PNP", "I2C", "CPU_CLUSTER", "CPU", "DOMAIN", "IRQ", "DRQ", "SLOT_DESC",
605 "SMBIOS_DEV_INFO", "IO", "NUMBER", "SUBSYSTEMID", "INHERIT", "PCIINT",
606 "GENERIC", "SPI", "USB", "MMIO", "GPIO", "MDIO", "FW_CONFIG_TABLE",
607 "FW_CONFIG_FIELD", "FW_CONFIG_OPTION", "FW_CONFIG_PROBE", "PIPE", "OPS",
608 "$accept", "devtree", "chipchild_nondev", "chipchild", "chipchildren",
609 "chipchildren_dev", "devicechildren", "chip", "@1", "device", "@2", "@3",
610 "alias", "status", "resource", "reference", "registers", "subsystemid",
611 "smbios_slot_desc", "smbios_dev_info", "fw_config_table",
612 "fw_config_table_children", "fw_config_field_children",
613 "fw_config_field_bits", "fw_config_field_bits_repeating",
614 "fw_config_field", "$@4", "$@5", "$@6", "fw_config_option",
615 "fw_config_probe", "ops", YY_NULLPTR
619 yysymbol_name (yysymbol_kind_t yysymbol)
621 return yytname[yysymbol];
625 #define YYPACT_NINF (-51)
627 #define yypact_value_is_default(Yyn) \
628 ((Yyn) == YYPACT_NINF)
630 #define YYTABLE_NINF (-1)
632 #define yytable_value_is_error(Yyn) \
635 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
637 static const yytype_int8 yypact[] =
639 -51, 12, -51, 6, -51, -51, -51, -51, -3, 49,
640 -51, 7, -51, 10, 23, 24, 49, 14, -51, -51,
641 -51, -51, 16, 26, 17, 33, 42, -51, -51, 49,
642 28, 18, -51, 11, 53, 38, 43, -51, -51, -51,
643 -51, -51, 34, -51, -12, -51, -51, -51, 45, 11,
644 -51, -51, -8, 28, 18, -51, -51, 47, -51, -51,
645 -51, -51, -51, -51, -7, 37, 0, -51, -51, -51,
646 39, -51, 50, 40, 41, 54, 55, -51, -51, -51,
647 -51, -51, -51, -51, -51, -51, 5, 58, 57, 59,
648 46, 60, -51, -51, 51, 61, -51, 48, -51, -51,
652 /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
653 Performed when YYTABLE does not specify something else to do. Zero
654 means the default is an error. */
655 static const yytype_int8 yydefact[] =
657 2, 0, 1, 0, 46, 3, 4, 24, 0, 0,
658 44, 0, 45, 0, 0, 0, 0, 0, 5, 11,
659 7, 6, 56, 0, 0, 0, 0, 13, 25, 12,
660 54, 51, 48, 0, 30, 0, 0, 9, 10, 8,
661 49, 48, 0, 52, 0, 32, 33, 28, 0, 0,
662 36, 35, 0, 0, 51, 48, 57, 0, 47, 23,
663 31, 26, 55, 50, 0, 0, 0, 23, 53, 58,
664 0, 29, 0, 0, 0, 0, 0, 15, 14, 16,
665 20, 17, 18, 19, 21, 22, 0, 0, 0, 43,
666 0, 0, 60, 27, 0, 41, 42, 37, 59, 34,
670 /* YYPGOTO[NTERM-NUM]. */
671 static const yytype_int8 yypgoto[] =
673 -51, -51, 62, -51, -51, 66, 19, -1, -51, -28,
674 -51, -51, -51, 35, -51, -51, -50, -51, -51, -51,
675 -51, -51, -16, 52, 29, -51, -51, -51, -51, -51,
679 /* YYDEFGOTO[NTERM-NUM]. */
680 static const yytype_int8 yydefgoto[] =
682 0, 1, 16, 38, 29, 17, 66, 18, 9, 19,
683 67, 59, 49, 47, 79, 20, 21, 81, 82, 83,
684 6, 8, 44, 31, 43, 12, 55, 41, 32, 58,
688 /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If
689 positive, shift that token. If negative, reduce the rule whose
690 number is the opposite. If YYTABLE_NINF, syntax error. */
691 static const yytype_int8 yytable[] =
693 5, 39, 56, 3, 13, 14, 62, 68, 3, 13,
694 14, 10, 2, 70, 71, 3, 80, 23, 70, 93,
695 45, 46, 24, 7, 22, 52, 72, 73, 28, 57,
696 74, 72, 73, 57, 57, 74, 80, 11, 78, 64,
697 25, 26, 75, 33, 76, 30, 34, 75, 35, 76,
698 36, 4, 3, 13, 14, 50, 15, 40, 78, 48,
699 51, 42, 60, 53, 65, 77, 69, 88, 87, 89,
700 90, 91, 92, 94, 95, 97, 96, 98, 100, 101,
701 99, 102, 27, 63, 61, 77, 86, 0, 0, 0,
705 static const yytype_int8 yycheck[] =
707 1, 29, 14, 3, 4, 5, 14, 14, 3, 4,
708 5, 14, 0, 13, 14, 3, 66, 7, 13, 14,
709 9, 10, 12, 17, 17, 41, 26, 27, 14, 41,
710 30, 26, 27, 41, 41, 30, 86, 40, 66, 55,
711 17, 17, 42, 17, 44, 29, 29, 42, 15, 44,
712 8, 39, 3, 4, 5, 17, 7, 29, 86, 6,
713 17, 43, 17, 29, 17, 66, 29, 17, 29, 29,
714 29, 17, 17, 15, 17, 29, 17, 17, 17, 31,
715 29, 17, 16, 54, 49, 86, 67, -1, -1, -1,
719 /* YYSTOS[STATE-NUM] -- The symbol kind of the accessing symbol of
721 static const yytype_int8 yystos[] =
723 0, 46, 0, 3, 39, 52, 65, 17, 66, 53,
724 14, 40, 70, 4, 5, 7, 47, 50, 52, 54,
725 60, 61, 17, 7, 12, 17, 17, 50, 14, 49,
726 29, 68, 73, 17, 29, 15, 8, 47, 48, 54,
727 29, 72, 43, 69, 67, 9, 10, 58, 6, 57,
728 17, 17, 67, 29, 68, 71, 14, 41, 74, 56,
729 17, 58, 14, 69, 67, 17, 51, 55, 14, 29,
730 13, 14, 26, 27, 30, 42, 44, 52, 54, 59,
731 61, 62, 63, 64, 75, 76, 51, 29, 17, 29,
732 29, 17, 17, 14, 15, 17, 17, 29, 17, 29,
736 /* YYR1[RULE-NUM] -- Symbol kind of the left-hand side of rule RULE-NUM. */
737 static const yytype_int8 yyr1[] =
739 0, 45, 46, 46, 46, 47, 47, 47, 48, 48,
740 49, 49, 50, 50, 51, 51, 51, 51, 51, 51,
741 51, 51, 51, 51, 53, 52, 55, 54, 56, 54,
742 57, 57, 58, 58, 59, 60, 61, 62, 62, 63,
743 63, 63, 64, 64, 65, 66, 66, 67, 67, 68,
744 69, 69, 71, 70, 72, 70, 73, 70, 74, 75,
748 /* YYR2[RULE-NUM] -- Number of symbols on the right-hand side of rule RULE-NUM. */
749 static const yytype_int8 yyr2[] =
751 0, 2, 0, 2, 2, 1, 1, 1, 1, 1,
752 2, 0, 2, 2, 2, 2, 2, 2, 2, 2,
753 2, 2, 2, 0, 0, 5, 0, 8, 0, 7,
754 0, 2, 1, 1, 4, 4, 4, 3, 4, 5,
755 4, 3, 3, 2, 3, 2, 0, 2, 0, 2,
756 3, 0, 0, 7, 0, 6, 0, 5, 3, 3,
761 enum { YYENOMEM = -2 };
763 #define yyerrok (yyerrstatus = 0)
764 #define yyclearin (yychar = YYEMPTY)
766 #define YYACCEPT goto yyacceptlab
767 #define YYABORT goto yyabortlab
768 #define YYERROR goto yyerrorlab
769 #define YYNOMEM goto yyexhaustedlab
772 #define YYRECOVERING() (!!yyerrstatus)
774 #define YYBACKUP(Token, Value) \
776 if (yychar == YYEMPTY) \
780 YYPOPSTACK (yylen); \
786 yyerror (YY_("syntax error: cannot back up")); \
791 /* Backward compatibility with an undocumented macro.
792 Use YYerror or YYUNDEF. */
793 #define YYERRCODE YYUNDEF
796 /* Enable debugging if requested. */
800 # include <stdio.h> /* INFRINGES ON USER NAME SPACE */
801 # define YYFPRINTF fprintf
804 # define YYDPRINTF(Args) \
813 # define YY_SYMBOL_PRINT(Title, Kind, Value, Location) \
817 YYFPRINTF (stderr, "%s ", Title); \
818 yy_symbol_print (stderr, \
820 YYFPRINTF (stderr, "\n"); \
825 /*-----------------------------------.
826 | Print this symbol's value on YYO. |
827 `-----------------------------------*/
830 yy_symbol_value_print (FILE *yyo,
831 yysymbol_kind_t yykind, YYSTYPE const * const yyvaluep)
833 FILE *yyoutput = yyo;
837 YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
839 YY_IGNORE_MAYBE_UNINITIALIZED_END
843 /*---------------------------.
844 | Print this symbol on YYO. |
845 `---------------------------*/
848 yy_symbol_print (FILE *yyo,
849 yysymbol_kind_t yykind, YYSTYPE const * const yyvaluep)
851 YYFPRINTF (yyo, "%s %s (",
852 yykind < YYNTOKENS ? "token" : "nterm", yysymbol_name (yykind));
854 yy_symbol_value_print (yyo, yykind, yyvaluep);
855 YYFPRINTF (yyo, ")");
858 /*------------------------------------------------------------------.
859 | yy_stack_print -- Print the state stack from its BOTTOM up to its |
861 `------------------------------------------------------------------*/
864 yy_stack_print (yy_state_t *yybottom, yy_state_t *yytop)
866 YYFPRINTF (stderr, "Stack now");
867 for (; yybottom <= yytop; yybottom++)
869 int yybot = *yybottom;
870 YYFPRINTF (stderr, " %d", yybot);
872 YYFPRINTF (stderr, "\n");
875 # define YY_STACK_PRINT(Bottom, Top) \
878 yy_stack_print ((Bottom), (Top)); \
882 /*------------------------------------------------.
883 | Report that the YYRULE is going to be reduced. |
884 `------------------------------------------------*/
887 yy_reduce_print (yy_state_t *yyssp, YYSTYPE *yyvsp,
890 int yylno = yyrline[yyrule];
891 int yynrhs = yyr2[yyrule];
893 YYFPRINTF (stderr, "Reducing stack by rule %d (line %d):\n",
895 /* The symbols being reduced. */
896 for (yyi = 0; yyi < yynrhs; yyi++)
898 YYFPRINTF (stderr, " $%d = ", yyi + 1);
899 yy_symbol_print (stderr,
900 YY_ACCESSING_SYMBOL (+yyssp[yyi + 1 - yynrhs]),
901 &yyvsp[(yyi + 1) - (yynrhs)]);
902 YYFPRINTF (stderr, "\n");
906 # define YY_REDUCE_PRINT(Rule) \
909 yy_reduce_print (yyssp, yyvsp, Rule); \
912 /* Nonzero means print parse trace. It is left uninitialized so that
913 multiple parsers can coexist. */
916 # define YYDPRINTF(Args) ((void) 0)
917 # define YY_SYMBOL_PRINT(Title, Kind, Value, Location)
918 # define YY_STACK_PRINT(Bottom, Top)
919 # define YY_REDUCE_PRINT(Rule)
920 #endif /* !YYDEBUG */
923 /* YYINITDEPTH -- initial size of the parser's stacks. */
925 # define YYINITDEPTH 200
928 /* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
929 if the built-in stack extension method is used).
931 Do not make this value too large; the results are undefined if
932 YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH)
933 evaluated with infinite-precision integer arithmetic. */
936 # define YYMAXDEPTH 10000
944 /*-----------------------------------------------.
945 | Release the memory associated to this symbol. |
946 `-----------------------------------------------*/
949 yydestruct (const char *yymsg,
950 yysymbol_kind_t yykind, YYSTYPE *yyvaluep)
955 YY_SYMBOL_PRINT (yymsg, yykind, yyvaluep, yylocationp);
957 YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
959 YY_IGNORE_MAYBE_UNINITIALIZED_END
963 /* Lookahead token kind. */
966 /* The semantic value of the lookahead symbol. */
968 /* Number of syntax errors so far. */
981 yy_state_fast_t yystate = 0;
982 /* Number of tokens to shift before error messages enabled. */
985 /* Refer to the stacks through separate pointers, to allow yyoverflow
986 to reallocate them elsewhere. */
989 YYPTRDIFF_T yystacksize = YYINITDEPTH;
991 /* The state stack: array, bottom, top. */
992 yy_state_t yyssa[YYINITDEPTH];
993 yy_state_t *yyss = yyssa;
994 yy_state_t *yyssp = yyss;
996 /* The semantic value stack: array, bottom, top. */
997 YYSTYPE yyvsa[YYINITDEPTH];
998 YYSTYPE *yyvs = yyvsa;
999 YYSTYPE *yyvsp = yyvs;
1002 /* The return value of yyparse. */
1004 /* Lookahead symbol kind. */
1005 yysymbol_kind_t yytoken = YYSYMBOL_YYEMPTY;
1006 /* The variables used to return semantic value and location from the
1012 #define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N))
1014 /* The number of symbols on the RHS of the reduced rule.
1015 Keep to zero when no symbol should be popped. */
1018 YYDPRINTF ((stderr, "Starting parse\n"));
1020 yychar = YYEMPTY; /* Cause a token to be read. */
1025 /*------------------------------------------------------------.
1026 | yynewstate -- push a new state, which is found in yystate. |
1027 `------------------------------------------------------------*/
1029 /* In all cases, when you get here, the value and location stacks
1030 have just been pushed. So pushing a state here evens the stacks. */
1034 /*--------------------------------------------------------------------.
1035 | yysetstate -- set current state (the top of the stack) to yystate. |
1036 `--------------------------------------------------------------------*/
1038 YYDPRINTF ((stderr, "Entering state %d\n", yystate));
1039 YY_ASSERT (0 <= yystate && yystate < YYNSTATES);
1040 YY_IGNORE_USELESS_CAST_BEGIN
1041 *yyssp = YY_CAST (yy_state_t, yystate);
1042 YY_IGNORE_USELESS_CAST_END
1043 YY_STACK_PRINT (yyss, yyssp);
1045 if (yyss + yystacksize - 1 <= yyssp)
1046 #if !defined yyoverflow && !defined YYSTACK_RELOCATE
1050 /* Get the current used size of the three stacks, in elements. */
1051 YYPTRDIFF_T yysize = yyssp - yyss + 1;
1053 # if defined yyoverflow
1055 /* Give user a chance to reallocate the stack. Use copies of
1056 these so that the &'s don't force the real ones into
1058 yy_state_t *yyss1 = yyss;
1059 YYSTYPE *yyvs1 = yyvs;
1061 /* Each stack pointer address is followed by the size of the
1062 data in use in that stack, in bytes. This used to be a
1063 conditional around just the two extra args, but that might
1064 be undefined if yyoverflow is a macro. */
1065 yyoverflow (YY_("memory exhausted"),
1066 &yyss1, yysize * YYSIZEOF (*yyssp),
1067 &yyvs1, yysize * YYSIZEOF (*yyvsp),
1072 # else /* defined YYSTACK_RELOCATE */
1073 /* Extend the stack our own way. */
1074 if (YYMAXDEPTH <= yystacksize)
1077 if (YYMAXDEPTH < yystacksize)
1078 yystacksize = YYMAXDEPTH;
1081 yy_state_t *yyss1 = yyss;
1082 union yyalloc *yyptr =
1083 YY_CAST (union yyalloc *,
1084 YYSTACK_ALLOC (YY_CAST (YYSIZE_T, YYSTACK_BYTES (yystacksize))));
1087 YYSTACK_RELOCATE (yyss_alloc, yyss);
1088 YYSTACK_RELOCATE (yyvs_alloc, yyvs);
1089 # undef YYSTACK_RELOCATE
1091 YYSTACK_FREE (yyss1);
1095 yyssp = yyss + yysize - 1;
1096 yyvsp = yyvs + yysize - 1;
1098 YY_IGNORE_USELESS_CAST_BEGIN
1099 YYDPRINTF ((stderr, "Stack size increased to %ld\n",
1100 YY_CAST (long, yystacksize)));
1101 YY_IGNORE_USELESS_CAST_END
1103 if (yyss + yystacksize - 1 <= yyssp)
1106 #endif /* !defined yyoverflow && !defined YYSTACK_RELOCATE */
1109 if (yystate == YYFINAL)
1119 /* Do appropriate processing given the current state. Read a
1120 lookahead token if we need one and don't already have one. */
1122 /* First try to decide what to do without reference to lookahead token. */
1123 yyn = yypact[yystate];
1124 if (yypact_value_is_default (yyn))
1127 /* Not known => get a lookahead token if don't already have one. */
1129 /* YYCHAR is either empty, or end-of-input, or a valid lookahead. */
1130 if (yychar == YYEMPTY)
1132 YYDPRINTF ((stderr, "Reading a token\n"));
1136 if (yychar <= YYEOF)
1139 yytoken = YYSYMBOL_YYEOF;
1140 YYDPRINTF ((stderr, "Now at end of input.\n"));
1142 else if (yychar == YYerror)
1144 /* The scanner already issued an error message, process directly
1145 to error recovery. But do not keep the error token as
1146 lookahead, it is too special and may lead us to an endless
1147 loop in error recovery. */
1149 yytoken = YYSYMBOL_YYerror;
1154 yytoken = YYTRANSLATE (yychar);
1155 YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
1158 /* If the proper action on seeing token YYTOKEN is to reduce or to
1159 detect an error, take that action. */
1161 if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
1166 if (yytable_value_is_error (yyn))
1172 /* Count tokens shifted since error; after three, turn off error
1177 /* Shift the lookahead token. */
1178 YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
1180 YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
1182 YY_IGNORE_MAYBE_UNINITIALIZED_END
1184 /* Discard the shifted token. */
1189 /*-----------------------------------------------------------.
1190 | yydefault -- do the default action for the current state. |
1191 `-----------------------------------------------------------*/
1193 yyn = yydefact[yystate];
1199 /*-----------------------------.
1200 | yyreduce -- do a reduction. |
1201 `-----------------------------*/
1203 /* yyn is the number of a rule to reduce with. */
1206 /* If YYLEN is nonzero, implement the default value of the action:
1209 Otherwise, the following line sets YYVAL to garbage.
1210 This behavior is undocumented and Bison
1211 users should not rely upon it. Assigning to YYVAL
1212 unconditionally makes the parser a bit smaller, and it avoids a
1213 GCC warning that YYVAL may be used uninitialized. */
1214 yyval = yyvsp[1-yylen];
1217 YY_REDUCE_PRINT (yyn);
1220 case 2: /* devtree: %empty */
1221 { cur_parent = root_parent; }
1224 case 24: /* @1: %empty */
1226 (yyval.chip_instance) = new_chip_instance((yyvsp[0].string));
1227 chip_enqueue_tail(cur_chip_instance);
1228 cur_chip_instance = (yyval.chip_instance);
1232 case 25: /* chip: CHIP STRING @1 chipchildren_dev END */
1234 cur_chip_instance = chip_dequeue_tail();
1238 case 26: /* @2: %empty */
1240 (yyval.dev) = new_device_raw(cur_parent, cur_chip_instance, (yyvsp[-3].number), (yyvsp[-2].string), (yyvsp[-1].string), (yyvsp[0].number));
1241 cur_parent = (yyval.dev)->bus;
1245 case 27: /* device: DEVICE BUS NUMBER alias status @2 devicechildren END */
1247 cur_parent = (yyvsp[-2].dev)->parent;
1251 case 28: /* @3: %empty */
1253 (yyval.dev) = new_device_reference(cur_parent, cur_chip_instance, (yyvsp[-1].string), (yyvsp[0].number));
1254 cur_parent = (yyval.dev)->bus;
1258 case 29: /* device: DEVICE REFERENCE STRING status @3 devicechildren END */
1260 cur_parent = (yyvsp[-2].dev)->parent;
1264 case 30: /* alias: %empty */
1266 (yyval.string) = NULL;
1270 case 31: /* alias: ALIAS STRING */
1272 (yyval.string) = (yyvsp[0].string);
1276 case 34: /* resource: RESOURCE NUMBER EQUALS NUMBER */
1277 { add_resource(cur_parent, (yyvsp[-3].number), strtol((yyvsp[-2].string), NULL, 0), strtol((yyvsp[0].string), NULL, 0)); }
1280 case 35: /* reference: REFERENCE STRING ASSOCIATION STRING */
1281 { add_reference(cur_chip_instance, (yyvsp[0].string), (yyvsp[-2].string)); }
1284 case 36: /* registers: REGISTER STRING EQUALS STRING */
1285 { add_register(cur_chip_instance, (yyvsp[-2].string), (yyvsp[0].string)); }
1288 case 37: /* subsystemid: SUBSYSTEMID NUMBER NUMBER */
1289 { add_pci_subsystem_ids(cur_parent, strtol((yyvsp[-1].string), NULL, 16), strtol((yyvsp[0].string), NULL, 16), 0); }
1292 case 38: /* subsystemid: SUBSYSTEMID NUMBER NUMBER INHERIT */
1293 { add_pci_subsystem_ids(cur_parent, strtol((yyvsp[-2].string), NULL, 16), strtol((yyvsp[-1].string), NULL, 16), 1); }
1296 case 39: /* smbios_slot_desc: SLOT_DESC STRING STRING STRING STRING */
1297 { add_slot_desc(cur_parent, (yyvsp[-3].string), (yyvsp[-2].string), (yyvsp[-1].string), (yyvsp[0].string)); }
1300 case 40: /* smbios_slot_desc: SLOT_DESC STRING STRING STRING */
1301 { add_slot_desc(cur_parent, (yyvsp[-2].string), (yyvsp[-1].string), (yyvsp[0].string), NULL); }
1304 case 41: /* smbios_slot_desc: SLOT_DESC STRING STRING */
1305 { add_slot_desc(cur_parent, (yyvsp[-1].string), (yyvsp[0].string), NULL, NULL); }
1308 case 42: /* smbios_dev_info: SMBIOS_DEV_INFO NUMBER STRING */
1309 { add_smbios_dev_info(cur_parent, strtol((yyvsp[-1].string), NULL, 0), (yyvsp[0].string)); }
1312 case 43: /* smbios_dev_info: SMBIOS_DEV_INFO NUMBER */
1313 { add_smbios_dev_info(cur_parent, strtol((yyvsp[0].string), NULL, 0), NULL); }
1316 case 44: /* fw_config_table: FW_CONFIG_TABLE fw_config_table_children END */
1320 case 49: /* fw_config_field_bits: NUMBER NUMBER */
1322 append_fw_config_bits(&cur_bits, strtoul((yyvsp[-1].string), NULL, 0), strtoul((yyvsp[0].string), NULL, 0));
1326 case 52: /* $@4: %empty */
1327 { cur_field = new_fw_config_field((yyvsp[-2].string), cur_bits); }
1330 case 53: /* fw_config_field: FW_CONFIG_FIELD STRING fw_config_field_bits fw_config_field_bits_repeating $@4 fw_config_field_children END */
1331 { cur_bits = NULL; }
1334 case 54: /* $@5: %empty */
1337 append_fw_config_bits(&cur_bits, strtoul((yyvsp[0].string), NULL, 0), strtoul((yyvsp[0].string), NULL, 0));
1338 cur_field = new_fw_config_field((yyvsp[-1].string), cur_bits);
1342 case 55: /* fw_config_field: FW_CONFIG_FIELD STRING NUMBER $@5 fw_config_field_children END */
1343 { cur_bits = NULL; }
1346 case 56: /* $@6: %empty */
1348 cur_field = get_fw_config_field((yyvsp[0].string));
1352 case 57: /* fw_config_field: FW_CONFIG_FIELD STRING $@6 fw_config_field_children END */
1353 { cur_bits = NULL; }
1356 case 58: /* fw_config_option: FW_CONFIG_OPTION STRING NUMBER */
1357 { add_fw_config_option(cur_field, (yyvsp[-1].string), strtoull((yyvsp[0].string), NULL, 0)); }
1360 case 59: /* fw_config_probe: FW_CONFIG_PROBE STRING STRING */
1361 { add_fw_config_probe(cur_parent, (yyvsp[-1].string), (yyvsp[0].string)); }
1364 case 60: /* ops: OPS STRING */
1365 { add_device_ops(cur_parent, (yyvsp[0].string)); }
1372 /* User semantic actions sometimes alter yychar, and that requires
1373 that yytoken be updated with the new translation. We take the
1374 approach of translating immediately before every use of yytoken.
1375 One alternative is translating here after every semantic action,
1376 but that translation would be missed if the semantic action invokes
1377 YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or
1378 if it invokes YYBACKUP. In the case of YYABORT or YYACCEPT, an
1379 incorrect destructor might then be invoked immediately. In the
1380 case of YYERROR or YYBACKUP, subsequent parser actions might lead
1381 to an incorrect destructor call or verbose syntax error message
1382 before the lookahead is translated. */
1383 YY_SYMBOL_PRINT ("-> $$ =", YY_CAST (yysymbol_kind_t, yyr1[yyn]), &yyval, &yyloc);
1390 /* Now 'shift' the result of the reduction. Determine what state
1391 that goes to, based on the state we popped back to and the rule
1392 number reduced by. */
1394 const int yylhs = yyr1[yyn] - YYNTOKENS;
1395 const int yyi = yypgoto[yylhs] + *yyssp;
1396 yystate = (0 <= yyi && yyi <= YYLAST && yycheck[yyi] == *yyssp
1398 : yydefgoto[yylhs]);
1404 /*--------------------------------------.
1405 | yyerrlab -- here on detecting error. |
1406 `--------------------------------------*/
1408 /* Make sure we have latest lookahead translation. See comments at
1409 user semantic actions for why this is necessary. */
1410 yytoken = yychar == YYEMPTY ? YYSYMBOL_YYEMPTY : YYTRANSLATE (yychar);
1411 /* If not already recovering from an error, report this error. */
1415 yyerror (YY_("syntax error"));
1418 if (yyerrstatus == 3)
1420 /* If just tried and failed to reuse lookahead token after an
1421 error, discard it. */
1423 if (yychar <= YYEOF)
1425 /* Return failure if at end of input. */
1426 if (yychar == YYEOF)
1431 yydestruct ("Error: discarding",
1437 /* Else will try to reuse lookahead token after shifting the error
1442 /*---------------------------------------------------.
1443 | yyerrorlab -- error raised explicitly by YYERROR. |
1444 `---------------------------------------------------*/
1446 /* Pacify compilers when the user code never invokes YYERROR and the
1447 label yyerrorlab therefore never appears in user code. */
1452 /* Do not reclaim the symbols of the rule whose action triggered
1456 YY_STACK_PRINT (yyss, yyssp);
1461 /*-------------------------------------------------------------.
1462 | yyerrlab1 -- common code for both syntax error and YYERROR. |
1463 `-------------------------------------------------------------*/
1465 yyerrstatus = 3; /* Each real token shifted decrements this. */
1467 /* Pop stack until we find a state that shifts the error token. */
1470 yyn = yypact[yystate];
1471 if (!yypact_value_is_default (yyn))
1473 yyn += YYSYMBOL_YYerror;
1474 if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYSYMBOL_YYerror)
1482 /* Pop the current state because it cannot handle the error token. */
1487 yydestruct ("Error: popping",
1488 YY_ACCESSING_SYMBOL (yystate), yyvsp);
1491 YY_STACK_PRINT (yyss, yyssp);
1494 YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
1496 YY_IGNORE_MAYBE_UNINITIALIZED_END
1499 /* Shift the error token. */
1500 YY_SYMBOL_PRINT ("Shifting", YY_ACCESSING_SYMBOL (yyn), yyvsp, yylsp);
1506 /*-------------------------------------.
1507 | yyacceptlab -- YYACCEPT comes here. |
1508 `-------------------------------------*/
1514 /*-----------------------------------.
1515 | yyabortlab -- YYABORT comes here. |
1516 `-----------------------------------*/
1522 /*-----------------------------------------------------------.
1523 | yyexhaustedlab -- YYNOMEM (memory exhaustion) comes here. |
1524 `-----------------------------------------------------------*/
1526 yyerror (YY_("memory exhausted"));
1531 /*----------------------------------------------------------.
1532 | yyreturnlab -- parsing is finished, clean up and return. |
1533 `----------------------------------------------------------*/
1535 if (yychar != YYEMPTY)
1537 /* Make sure we have latest lookahead translation. See comments at
1538 user semantic actions for why this is necessary. */
1539 yytoken = YYTRANSLATE (yychar);
1540 yydestruct ("Cleanup: discarding lookahead",
1543 /* Do not reclaim the symbols of the rule whose action triggered
1544 this YYABORT or YYACCEPT. */
1546 YY_STACK_PRINT (yyss, yyssp);
1547 while (yyssp != yyss)
1549 yydestruct ("Cleanup: popping",
1550 YY_ACCESSING_SYMBOL (+*yyssp), yyvsp);
1555 YYSTACK_FREE (yyss);