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