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