1 1.1 christos 2 1.1 christos /* A Bison parser, made by GNU Bison 2.4.1. */ 3 1.1 christos 4 1.1 christos /* Skeleton implementation for Bison's Yacc-like parsers in C 5 1.1 christos 6 1.1 christos Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006 7 1.1 christos Free Software Foundation, Inc. 8 1.1 christos 9 1.1 christos This program is free software: you can redistribute it and/or modify 10 1.1 christos it under the terms of the GNU General Public License as published by 11 1.1 christos the Free Software Foundation, either version 3 of the License, or 12 1.1 christos (at your option) any later version. 13 1.1 christos 14 1.1 christos This program is distributed in the hope that it will be useful, 15 1.1 christos but WITHOUT ANY WARRANTY; without even the implied warranty of 16 1.1 christos MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 1.1 christos GNU General Public License for more details. 18 1.1 christos 19 1.1 christos You should have received a copy of the GNU General Public License 20 1.1 christos along with this program. If not, see <http://www.gnu.org/licenses/>. */ 21 1.1 christos 22 1.1 christos /* As a special exception, you may create a larger work that contains 23 1.1 christos part or all of the Bison parser skeleton and distribute that work 24 1.1 christos under terms of your choice, so long as that work isn't itself a 25 1.1 christos parser generator using the skeleton or a modified version thereof 26 1.1 christos as a parser skeleton. Alternatively, if you modify or redistribute 27 1.1 christos the parser skeleton itself, you may (at your option) remove this 28 1.1 christos special exception, which will cause the skeleton and the resulting 29 1.1 christos Bison output files to be licensed under the GNU General Public 30 1.1 christos License without this special exception. 31 1.1 christos 32 1.1 christos This special exception was added by the Free Software Foundation in 33 1.1 christos version 2.2 of Bison. */ 34 1.1 christos 35 1.1 christos /* C LALR(1) parser skeleton written by Richard Stallman, by 36 1.1 christos simplifying the original so-called "semantic" parser. */ 37 1.1 christos 38 1.1 christos /* All symbols defined below should begin with yy or YY, to avoid 39 1.1 christos infringing on user name space. This should be done even for local 40 1.1 christos variables, as they might otherwise be expanded by user macros. 41 1.1 christos There are some unavoidable exceptions within include files to 42 1.1 christos define necessary library symbols; they are noted "INFRINGES ON 43 1.1 christos USER NAME SPACE" below. */ 44 1.1 christos 45 1.1 christos /* Identify Bison output. */ 46 1.1 christos #define YYBISON 1 47 1.1 christos 48 1.1 christos /* Bison version. */ 49 1.1 christos #define YYBISON_VERSION "2.4.1" 50 1.1 christos 51 1.1 christos /* Skeleton name. */ 52 1.1 christos #define YYSKELETON_NAME "yacc.c" 53 1.1 christos 54 1.1 christos /* Pure parsers. */ 55 1.1 christos #define YYPURE 0 56 1.1 christos 57 1.1 christos /* Push parsers. */ 58 1.1 christos #define YYPUSH 0 59 1.1 christos 60 1.1 christos /* Pull parsers. */ 61 1.1 christos #define YYPULL 1 62 1.1 christos 63 1.1 christos /* Using locations. */ 64 1.1 christos #define YYLSP_NEEDED 0 65 1.1 christos 66 1.1 christos 67 1.1 christos 68 1.1 christos /* Copy the first part of user declarations. */ 69 1.1 christos 70 1.1 christos /* Line 189 of yacc.c */ 71 1.1 christos #line 1 "C:\\Users\\sdumbre\\testclone\\source\\compiler\\prparser.y" 72 1.1 christos 73 1.1 christos /****************************************************************************** 74 1.1 christos * 75 1.1 christos * Module Name: prparser.y - Bison input file for preprocessor parser 76 1.1 christos * 77 1.1 christos *****************************************************************************/ 78 1.1 christos 79 1.1 christos /****************************************************************************** 80 1.1 christos * 81 1.1 christos * 1. Copyright Notice 82 1.1 christos * 83 1.1 christos * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. 84 1.1 christos * All rights reserved. 85 1.1 christos * 86 1.1 christos * 2. License 87 1.1 christos * 88 1.1 christos * 2.1. This is your license from Intel Corp. under its intellectual property 89 1.1 christos * rights. You may have additional license terms from the party that provided 90 1.1 christos * you this software, covering your right to use that party's intellectual 91 1.1 christos * property rights. 92 1.1 christos * 93 1.1 christos * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a 94 1.1 christos * copy of the source code appearing in this file ("Covered Code") an 95 1.1 christos * irrevocable, perpetual, worldwide license under Intel's copyrights in the 96 1.1 christos * base code distributed originally by Intel ("Original Intel Code") to copy, 97 1.1 christos * make derivatives, distribute, use and display any portion of the Covered 98 1.1 christos * Code in any form, with the right to sublicense such rights; and 99 1.1 christos * 100 1.1 christos * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent 101 1.1 christos * license (with the right to sublicense), under only those claims of Intel 102 1.1 christos * patents that are infringed by the Original Intel Code, to make, use, sell, 103 1.1 christos * offer to sell, and import the Covered Code and derivative works thereof 104 1.1 christos * solely to the minimum extent necessary to exercise the above copyright 105 1.1 christos * license, and in no event shall the patent license extend to any additions 106 1.1 christos * to or modifications of the Original Intel Code. No other license or right 107 1.1 christos * is granted directly or by implication, estoppel or otherwise; 108 1.1 christos * 109 1.1 christos * The above copyright and patent license is granted only if the following 110 1.1 christos * conditions are met: 111 1.1 christos * 112 1.1 christos * 3. Conditions 113 1.1 christos * 114 1.1 christos * 3.1. Redistribution of Source with Rights to Further Distribute Source. 115 1.1 christos * Redistribution of source code of any substantial portion of the Covered 116 1.1 christos * Code or modification with rights to further distribute source must include 117 1.1 christos * the above Copyright Notice, the above License, this list of Conditions, 118 1.1 christos * and the following Disclaimer and Export Compliance provision. In addition, 119 1.1 christos * Licensee must cause all Covered Code to which Licensee contributes to 120 1.1 christos * contain a file documenting the changes Licensee made to create that Covered 121 1.1 christos * Code and the date of any change. Licensee must include in that file the 122 1.1 christos * documentation of any changes made by any predecessor Licensee. Licensee 123 1.1 christos * must include a prominent statement that the modification is derived, 124 1.1 christos * directly or indirectly, from Original Intel Code. 125 1.1 christos * 126 1.1 christos * 3.2. Redistribution of Source with no Rights to Further Distribute Source. 127 1.1 christos * Redistribution of source code of any substantial portion of the Covered 128 1.1 christos * Code or modification without rights to further distribute source must 129 1.1 christos * include the following Disclaimer and Export Compliance provision in the 130 1.1 christos * documentation and/or other materials provided with distribution. In 131 1.1 christos * addition, Licensee may not authorize further sublicense of source of any 132 1.1 christos * portion of the Covered Code, and must include terms to the effect that the 133 1.1 christos * license from Licensee to its licensee is limited to the intellectual 134 1.1 christos * property embodied in the software Licensee provides to its licensee, and 135 1.1 christos * not to intellectual property embodied in modifications its licensee may 136 1.1 christos * make. 137 1.1 christos * 138 1.1 christos * 3.3. Redistribution of Executable. Redistribution in executable form of any 139 1.1 christos * substantial portion of the Covered Code or modification must reproduce the 140 1.1 christos * above Copyright Notice, and the following Disclaimer and Export Compliance 141 1.1 christos * provision in the documentation and/or other materials provided with the 142 1.1 christos * distribution. 143 1.1 christos * 144 1.1 christos * 3.4. Intel retains all right, title, and interest in and to the Original 145 1.1 christos * Intel Code. 146 1.1 christos * 147 1.1 christos * 3.5. Neither the name Intel nor any other trademark owned or controlled by 148 1.1 christos * Intel shall be used in advertising or otherwise to promote the sale, use or 149 1.1 christos * other dealings in products derived from or relating to the Covered Code 150 1.1 christos * without prior written authorization from Intel. 151 1.1 christos * 152 1.1 christos * 4. Disclaimer and Export Compliance 153 1.1 christos * 154 1.1 christos * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED 155 1.1 christos * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE 156 1.1 christos * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, 157 1.1 christos * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY 158 1.1 christos * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY 159 1.1 christos * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A 160 1.1 christos * PARTICULAR PURPOSE. 161 1.1 christos * 162 1.1 christos * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES 163 1.1 christos * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR 164 1.1 christos * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, 165 1.1 christos * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY 166 1.1 christos * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL 167 1.1 christos * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS 168 1.1 christos * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY 169 1.1 christos * LIMITED REMEDY. 170 1.1 christos * 171 1.1 christos * 4.3. Licensee shall not export, either directly or indirectly, any of this 172 1.1 christos * software or system incorporating such software without first obtaining any 173 1.1 christos * required license or other approval from the U. S. Department of Commerce or 174 1.1 christos * any other agency or department of the United States Government. In the 175 1.1 christos * event Licensee exports any such software from the United States or 176 1.1 christos * re-exports any such software from a foreign destination, Licensee shall 177 1.1 christos * ensure that the distribution and export/re-export of the software is in 178 1.1 christos * compliance with all laws, regulations, orders, or other restrictions of the 179 1.1 christos * U.S. Export Administration Regulations. Licensee agrees that neither it nor 180 1.1 christos * any of its subsidiaries will export/re-export any technical data, process, 181 1.1 christos * software, or service, directly or indirectly, to any country for which the 182 1.1 christos * United States government or any agency thereof requires an export license, 183 1.1 christos * other governmental approval, or letter of assurance, without first obtaining 184 1.1 christos * such license, approval or letter. 185 1.1 christos * 186 1.1 christos ***************************************************************************** 187 1.1 christos * 188 1.1 christos * Alternatively, you may choose to be licensed under the terms of the 189 1.1 christos * following license: 190 1.1 christos * 191 1.1 christos * Redistribution and use in source and binary forms, with or without 192 1.1 christos * modification, are permitted provided that the following conditions 193 1.1 christos * are met: 194 1.1 christos * 1. Redistributions of source code must retain the above copyright 195 1.1 christos * notice, this list of conditions, and the following disclaimer, 196 1.1 christos * without modification. 197 1.1 christos * 2. Redistributions in binary form must reproduce at minimum a disclaimer 198 1.1 christos * substantially similar to the "NO WARRANTY" disclaimer below 199 1.1 christos * ("Disclaimer") and any redistribution must be conditioned upon 200 1.1 christos * including a substantially similar Disclaimer requirement for further 201 1.1 christos * binary redistribution. 202 1.1 christos * 3. Neither the names of the above-listed copyright holders nor the names 203 1.1 christos * of any contributors may be used to endorse or promote products derived 204 1.1 christos * from this software without specific prior written permission. 205 1.1 christos * 206 1.1 christos * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 207 1.1 christos * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 208 1.1 christos * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 209 1.1 christos * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 210 1.1 christos * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 211 1.1 christos * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 212 1.1 christos * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 213 1.1 christos * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 214 1.1 christos * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 215 1.1 christos * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 216 1.1 christos * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 217 1.1 christos * 218 1.1 christos * Alternatively, you may choose to be licensed under the terms of the 219 1.1 christos * GNU General Public License ("GPL") version 2 as published by the Free 220 1.1 christos * Software Foundation. 221 1.1 christos * 222 1.1 christos *****************************************************************************/ 223 1.1 christos 224 1.1 christos #include "aslcompiler.h" 225 1.1 christos 226 1.1 christos #define _COMPONENT ASL_PREPROCESSOR 227 1.1 christos ACPI_MODULE_NAME ("prparser") 228 1.1 christos 229 1.1 christos void * AslLocalAllocate (unsigned int Size); 230 1.1 christos 231 1.1 christos /* Bison/yacc configuration */ 232 1.1 christos 233 1.1 christos #undef alloca 234 1.1 christos #define alloca AslLocalAllocate 235 1.1 christos 236 1.1 christos int PrParserlex (void); 237 1.1 christos int PrParserparse (void); 238 1.1 christos void PrParsererror (char const *msg); 239 1.1 christos extern char *PrParsertext; 240 1.1 christos 241 1.1 christos UINT64 PrParserResult; /* Expression return value */ 242 1.1 christos 243 1.1 christos /* Bison/yacc configuration */ 244 1.1 christos 245 1.1 christos #define yytname PrParsername 246 1.1 christos #define YYDEBUG 1 /* Enable debug output */ 247 1.1 christos #define YYERROR_VERBOSE 1 /* Verbose error messages */ 248 1.1 christos #define YYFLAG -32768 249 1.1 christos 250 1.1 christos /* Define YYMALLOC/YYFREE to prevent redefinition errors */ 251 1.1 christos 252 1.1 christos #define YYMALLOC malloc 253 1.1 christos #define YYFREE free 254 1.1 christos 255 1.1 christos 256 1.1 christos /* Line 189 of yacc.c */ 257 1.1 christos #line 258 "prparser.tab.c" 258 1.1 christos 259 1.1 christos /* Enabling traces. */ 260 1.1 christos #ifndef YYDEBUG 261 1.1 christos # define YYDEBUG 0 262 1.1 christos #endif 263 1.1 christos 264 1.1 christos /* Enabling verbose error messages. */ 265 1.1 christos #ifdef YYERROR_VERBOSE 266 1.1 christos # undef YYERROR_VERBOSE 267 1.1 christos # define YYERROR_VERBOSE 1 268 1.1 christos #else 269 1.1 christos # define YYERROR_VERBOSE 0 270 1.1 christos #endif 271 1.1 christos 272 1.1 christos /* Enabling the token table. */ 273 1.1 christos #ifndef YYTOKEN_TABLE 274 1.1 christos # define YYTOKEN_TABLE 0 275 1.1 christos #endif 276 1.1 christos 277 1.1 christos 278 1.1 christos /* Tokens. */ 279 1.1 christos #ifndef YYTOKENTYPE 280 1.1 christos # define YYTOKENTYPE 281 1.1 christos /* Put the tokens into the symbol table, so that GDB and other debuggers 282 1.1 christos know about them. */ 283 1.1 christos enum yytokentype { 284 1.1 christos EXPOP_EOF = 258, 285 1.1 christos EXPOP_NEW_LINE = 259, 286 1.1 christos EXPOP_NUMBER = 260, 287 1.1 christos EXPOP_HEX_NUMBER = 261, 288 1.1 christos EXPOP_RESERVED1 = 262, 289 1.1 christos EXPOP_RESERVED2 = 263, 290 1.1 christos EXPOP_PAREN_OPEN = 264, 291 1.1 christos EXPOP_PAREN_CLOSE = 265, 292 1.1 christos EXPOP_LOGICAL_OR = 266, 293 1.1 christos EXPOP_LOGICAL_AND = 267, 294 1.1 christos EXPOP_OR = 268, 295 1.1 christos EXPOP_XOR = 269, 296 1.1 christos EXPOP_AND = 270, 297 1.1 christos EXPOP_NOT_EQUAL = 271, 298 1.1 christos EXPOP_EQUAL = 272, 299 1.1 christos EXPOP_LESS_EQUAL = 273, 300 1.1 christos EXPOP_GREATER_EQUAL = 274, 301 1.1 christos EXPOP_LESS = 275, 302 1.1 christos EXPOP_GREATER = 276, 303 1.1 christos EXPOP_SHIFT_LEFT = 277, 304 1.1 christos EXPOP_SHIFT_RIGHT = 278, 305 1.1 christos EXPOP_SUBTRACT = 279, 306 1.1 christos EXPOP_ADD = 280, 307 1.1 christos EXPOP_MODULO = 281, 308 1.1 christos EXPOP_DIVIDE = 282, 309 1.1 christos EXPOP_MULTIPLY = 283, 310 1.1 christos EXPOP_LOGICAL_NOT = 284, 311 1.1 christos EXPOP_ONES_COMPLIMENT = 285, 312 1.1 christos EXPOP_DEFINE = 286, 313 1.1 christos EXPOP_IDENTIFIER = 287 314 1.1 christos }; 315 1.1 christos #endif 316 1.1 christos 317 1.1 christos 318 1.1 christos 319 1.1 christos #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED 320 1.1 christos typedef union YYSTYPE 321 1.1 christos { 322 1.1 christos 323 1.1 christos /* Line 214 of yacc.c */ 324 1.1 christos #line 186 "C:\\Users\\sdumbre\\testclone\\source\\compiler\\prparser.y" 325 1.1 christos 326 1.1 christos UINT64 value; 327 1.1 christos UINT32 op; 328 1.1 christos char *str; 329 1.1 christos 330 1.1 christos 331 1.1 christos 332 1.1 christos /* Line 214 of yacc.c */ 333 1.1 christos #line 334 "prparser.tab.c" 334 1.1 christos } YYSTYPE; 335 1.1 christos # define YYSTYPE_IS_TRIVIAL 1 336 1.1 christos # define yystype YYSTYPE /* obsolescent; will be withdrawn */ 337 1.1 christos # define YYSTYPE_IS_DECLARED 1 338 1.1 christos #endif 339 1.1 christos 340 1.1 christos 341 1.1 christos /* Copy the second part of user declarations. */ 342 1.1 christos 343 1.1 christos 344 1.1 christos /* Line 264 of yacc.c */ 345 1.1 christos #line 346 "prparser.tab.c" 346 1.1 christos 347 1.1 christos #ifdef short 348 1.1 christos # undef short 349 1.1 christos #endif 350 1.1 christos 351 1.1 christos #ifdef YYTYPE_UINT8 352 1.1 christos typedef YYTYPE_UINT8 yytype_uint8; 353 1.1 christos #else 354 1.1 christos typedef unsigned char yytype_uint8; 355 1.1 christos #endif 356 1.1 christos 357 1.1 christos #ifdef YYTYPE_INT8 358 1.1 christos typedef YYTYPE_INT8 yytype_int8; 359 1.1 christos #elif (defined __STDC__ || defined __C99__FUNC__ \ 360 1.1 christos || defined __cplusplus || defined _MSC_VER) 361 1.1 christos typedef signed char yytype_int8; 362 1.1 christos #else 363 1.1 christos typedef short int yytype_int8; 364 1.1 christos #endif 365 1.1 christos 366 1.1 christos #ifdef YYTYPE_UINT16 367 1.1 christos typedef YYTYPE_UINT16 yytype_uint16; 368 1.1 christos #else 369 1.1 christos typedef unsigned short int yytype_uint16; 370 1.1 christos #endif 371 1.1 christos 372 1.1 christos #ifdef YYTYPE_INT16 373 1.1 christos typedef YYTYPE_INT16 yytype_int16; 374 1.1 christos #else 375 1.1 christos typedef short int yytype_int16; 376 1.1 christos #endif 377 1.1 christos 378 1.1 christos #ifndef YYSIZE_T 379 1.1 christos # ifdef __SIZE_TYPE__ 380 1.1 christos # define YYSIZE_T __SIZE_TYPE__ 381 1.1 christos # elif defined size_t 382 1.1 christos # define YYSIZE_T size_t 383 1.1 christos # elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \ 384 1.1 christos || defined __cplusplus || defined _MSC_VER) 385 1.1 christos # include <stddef.h> /* INFRINGES ON USER NAME SPACE */ 386 1.1 christos # define YYSIZE_T size_t 387 1.1 christos # else 388 1.1 christos # define YYSIZE_T unsigned int 389 1.1 christos # endif 390 1.1 christos #endif 391 1.1 christos 392 1.1 christos #define YYSIZE_MAXIMUM ((YYSIZE_T) -1) 393 1.1 christos 394 1.1 christos #ifndef YY_ 395 1.1 christos # if YYENABLE_NLS 396 1.1 christos # if ENABLE_NLS 397 1.1 christos # include <libintl.h> /* INFRINGES ON USER NAME SPACE */ 398 1.1 christos # define YY_(msgid) dgettext ("bison-runtime", msgid) 399 1.1 christos # endif 400 1.1 christos # endif 401 1.1 christos # ifndef YY_ 402 1.1 christos # define YY_(msgid) msgid 403 1.1 christos # endif 404 1.1 christos #endif 405 1.1 christos 406 1.1 christos /* Suppress unused-variable warnings by "using" E. */ 407 1.1 christos #if ! defined lint || defined __GNUC__ 408 1.1 christos # define YYUSE(e) ((void) (e)) 409 1.1 christos #else 410 1.1 christos # define YYUSE(e) /* empty */ 411 1.1 christos #endif 412 1.1 christos 413 1.1 christos /* Identity function, used to suppress warnings about constant conditions. */ 414 1.1 christos #ifndef lint 415 1.1 christos # define YYID(n) (n) 416 1.1 christos #else 417 1.1 christos #if (defined __STDC__ || defined __C99__FUNC__ \ 418 1.1 christos || defined __cplusplus || defined _MSC_VER) 419 1.1 christos static int 420 1.1 christos YYID (int yyi) 421 1.1 christos #else 422 1.1 christos static int 423 1.1 christos YYID (yyi) 424 1.1 christos int yyi; 425 1.1 christos #endif 426 1.1 christos { 427 1.1 christos return yyi; 428 1.1 christos } 429 1.1 christos #endif 430 1.1 christos 431 1.1 christos #if ! defined yyoverflow || YYERROR_VERBOSE 432 1.1 christos 433 1.1 christos /* The parser invokes alloca or malloc; define the necessary symbols. */ 434 1.1 christos 435 1.1 christos # ifdef YYSTACK_USE_ALLOCA 436 1.1 christos # if YYSTACK_USE_ALLOCA 437 1.1 christos # ifdef __GNUC__ 438 1.1 christos # define YYSTACK_ALLOC __builtin_alloca 439 1.1 christos # elif defined __BUILTIN_VA_ARG_INCR 440 1.1 christos # include <alloca.h> /* INFRINGES ON USER NAME SPACE */ 441 1.1 christos # elif defined _AIX 442 1.1 christos # define YYSTACK_ALLOC __alloca 443 1.1 christos # elif defined _MSC_VER 444 1.1 christos # include <malloc.h> /* INFRINGES ON USER NAME SPACE */ 445 1.1 christos # define alloca _alloca 446 1.1 christos # else 447 1.1 christos # define YYSTACK_ALLOC alloca 448 1.1 christos # if ! defined _ALLOCA_H && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ 449 1.1 christos || defined __cplusplus || defined _MSC_VER) 450 1.1 christos # include <stdlib.h> /* INFRINGES ON USER NAME SPACE */ 451 1.1 christos # ifndef _STDLIB_H 452 1.1 christos # define _STDLIB_H 1 453 1.1 christos # endif 454 1.1 christos # endif 455 1.1 christos # endif 456 1.1 christos # endif 457 1.1 christos # endif 458 1.1 christos 459 1.1 christos # ifdef YYSTACK_ALLOC 460 1.1 christos /* Pacify GCC's `empty if-body' warning. */ 461 1.1 christos # define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0)) 462 1.1 christos # ifndef YYSTACK_ALLOC_MAXIMUM 463 1.1 christos /* The OS might guarantee only one guard page at the bottom of the stack, 464 1.1 christos and a page size can be as small as 4096 bytes. So we cannot safely 465 1.1 christos invoke alloca (N) if N exceeds 4096. Use a slightly smaller number 466 1.1 christos to allow for a few compiler-allocated temporary stack slots. */ 467 1.1 christos # define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */ 468 1.1 christos # endif 469 1.1 christos # else 470 1.1 christos # define YYSTACK_ALLOC YYMALLOC 471 1.1 christos # define YYSTACK_FREE YYFREE 472 1.1 christos # ifndef YYSTACK_ALLOC_MAXIMUM 473 1.1 christos # define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM 474 1.1 christos # endif 475 1.1 christos # if (defined __cplusplus && ! defined _STDLIB_H \ 476 1.1 christos && ! ((defined YYMALLOC || defined malloc) \ 477 1.1 christos && (defined YYFREE || defined free))) 478 1.1 christos # include <stdlib.h> /* INFRINGES ON USER NAME SPACE */ 479 1.1 christos # ifndef _STDLIB_H 480 1.1 christos # define _STDLIB_H 1 481 1.1 christos # endif 482 1.1 christos # endif 483 1.1 christos # ifndef YYMALLOC 484 1.1 christos # define YYMALLOC malloc 485 1.1 christos # if ! defined malloc && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ 486 1.1 christos || defined __cplusplus || defined _MSC_VER) 487 1.1 christos void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */ 488 1.1 christos # endif 489 1.1 christos # endif 490 1.1 christos # ifndef YYFREE 491 1.1 christos # define YYFREE free 492 1.1 christos # if ! defined free && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ 493 1.1 christos || defined __cplusplus || defined _MSC_VER) 494 1.1 christos void free (void *); /* INFRINGES ON USER NAME SPACE */ 495 1.1 christos # endif 496 1.1 christos # endif 497 1.1 christos # endif 498 1.1 christos #endif /* ! defined yyoverflow || YYERROR_VERBOSE */ 499 1.1 christos 500 1.1 christos 501 1.1 christos #if (! defined yyoverflow \ 502 1.1 christos && (! defined __cplusplus \ 503 1.1 christos || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL))) 504 1.1 christos 505 1.1 christos /* A type that is properly aligned for any stack member. */ 506 1.1 christos union yyalloc 507 1.1 christos { 508 1.1 christos yytype_int16 yyss_alloc; 509 1.1 christos YYSTYPE yyvs_alloc; 510 1.1 christos }; 511 1.1 christos 512 1.1 christos /* The size of the maximum gap between one aligned stack and the next. */ 513 1.1 christos # define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1) 514 1.1 christos 515 1.1 christos /* The size of an array large to enough to hold all stacks, each with 516 1.1 christos N elements. */ 517 1.1 christos # define YYSTACK_BYTES(N) \ 518 1.1 christos ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \ 519 1.1 christos + YYSTACK_GAP_MAXIMUM) 520 1.1 christos 521 1.1 christos /* Copy COUNT objects from FROM to TO. The source and destination do 522 1.1 christos not overlap. */ 523 1.1 christos # ifndef YYCOPY 524 1.1 christos # if defined __GNUC__ && 1 < __GNUC__ 525 1.1 christos # define YYCOPY(To, From, Count) \ 526 1.1 christos __builtin_memcpy (To, From, (Count) * sizeof (*(From))) 527 1.1 christos # else 528 1.1 christos # define YYCOPY(To, From, Count) \ 529 1.1 christos do \ 530 1.1 christos { \ 531 1.1 christos YYSIZE_T yyi; \ 532 1.1 christos for (yyi = 0; yyi < (Count); yyi++) \ 533 1.1 christos (To)[yyi] = (From)[yyi]; \ 534 1.1 christos } \ 535 1.1 christos while (YYID (0)) 536 1.1 christos # endif 537 1.1 christos # endif 538 1.1 christos 539 1.1 christos /* Relocate STACK from its old location to the new one. The 540 1.1 christos local variables YYSIZE and YYSTACKSIZE give the old and new number of 541 1.1 christos elements in the stack, and YYPTR gives the new location of the 542 1.1 christos stack. Advance YYPTR to a properly aligned location for the next 543 1.1 christos stack. */ 544 1.1 christos # define YYSTACK_RELOCATE(Stack_alloc, Stack) \ 545 1.1 christos do \ 546 1.1 christos { \ 547 1.1 christos YYSIZE_T yynewbytes; \ 548 1.1 christos YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \ 549 1.1 christos Stack = &yyptr->Stack_alloc; \ 550 1.1 christos yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \ 551 1.1 christos yyptr += yynewbytes / sizeof (*yyptr); \ 552 1.1 christos } \ 553 1.1 christos while (YYID (0)) 554 1.1 christos 555 1.1 christos #endif 556 1.1 christos 557 1.1 christos /* YYFINAL -- State number of the termination state. */ 558 1.1 christos #define YYFINAL 15 559 1.1 christos /* YYLAST -- Last index in YYTABLE. */ 560 1.1 christos #define YYLAST 175 561 1.1 christos 562 1.1 christos /* YYNTOKENS -- Number of terminals. */ 563 1.1 christos #define YYNTOKENS 33 564 1.1 christos /* YYNNTS -- Number of nonterminals. */ 565 1.1 christos #define YYNNTS 3 566 1.1 christos /* YYNRULES -- Number of rules. */ 567 1.1 christos #define YYNRULES 29 568 1.1 christos /* YYNRULES -- Number of states. */ 569 1.1 christos #define YYNSTATES 57 570 1.1 christos 571 1.1 christos /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ 572 1.1 christos #define YYUNDEFTOK 2 573 1.1 christos #define YYMAXUTOK 287 574 1.1 christos 575 1.1 christos #define YYTRANSLATE(YYX) \ 576 1.1 christos ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) 577 1.1 christos 578 1.1 christos /* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX. */ 579 1.1 christos static const yytype_uint8 yytranslate[] = 580 1.1 christos { 581 1.1 christos 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 582 1.1 christos 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 583 1.1 christos 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 584 1.1 christos 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 585 1.1 christos 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 586 1.1 christos 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 587 1.1 christos 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 588 1.1 christos 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 589 1.1 christos 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 590 1.1 christos 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 591 1.1 christos 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 592 1.1 christos 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 593 1.1 christos 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 594 1.1 christos 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 595 1.1 christos 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 596 1.1 christos 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 597 1.1 christos 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 598 1.1 christos 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 599 1.1 christos 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 600 1.1 christos 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 601 1.1 christos 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 602 1.1 christos 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 603 1.1 christos 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 604 1.1 christos 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 605 1.1 christos 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 606 1.1 christos 2, 2, 2, 2, 2, 2, 1, 2, 3, 4, 607 1.1 christos 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 608 1.1 christos 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 609 1.1 christos 25, 26, 27, 28, 29, 30, 31, 32 610 1.1 christos }; 611 1.1 christos 612 1.1 christos #if YYDEBUG 613 1.1 christos /* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in 614 1.1 christos YYRHS. */ 615 1.1 christos static const yytype_uint8 yyprhs[] = 616 1.1 christos { 617 1.1 christos 0, 0, 3, 6, 9, 12, 15, 19, 23, 27, 618 1.1 christos 31, 35, 39, 43, 47, 51, 55, 59, 63, 67, 619 1.1 christos 71, 75, 79, 83, 87, 91, 96, 99, 101, 103 620 1.1 christos }; 621 1.1 christos 622 1.1 christos /* YYRHS -- A `-1'-separated list of the rules' RHS. */ 623 1.1 christos static const yytype_int8 yyrhs[] = 624 1.1 christos { 625 1.1 christos 34, 0, -1, 35, 4, -1, 35, 3, -1, 29, 626 1.1 christos 35, -1, 30, 35, -1, 35, 28, 35, -1, 35, 627 1.1 christos 27, 35, -1, 35, 26, 35, -1, 35, 25, 35, 628 1.1 christos -1, 35, 24, 35, -1, 35, 23, 35, -1, 35, 629 1.1 christos 22, 35, -1, 35, 21, 35, -1, 35, 20, 35, 630 1.1 christos -1, 35, 19, 35, -1, 35, 18, 35, -1, 35, 631 1.1 christos 17, 35, -1, 35, 16, 35, -1, 35, 15, 35, 632 1.1 christos -1, 35, 14, 35, -1, 35, 13, 35, -1, 35, 633 1.1 christos 12, 35, -1, 35, 11, 35, -1, 9, 35, 10, 634 1.1 christos -1, 31, 9, 32, 10, -1, 31, 32, -1, 32, 635 1.1 christos -1, 5, -1, 6, -1 636 1.1 christos }; 637 1.1 christos 638 1.1 christos /* YYRLINE[YYN] -- source line where rule number YYN was defined. */ 639 1.1 christos static const yytype_uint16 yyrline[] = 640 1.1 christos { 641 1.1 christos 0, 244, 244, 245, 252, 253, 257, 258, 259, 260, 642 1.1 christos 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 643 1.1 christos 271, 272, 273, 274, 278, 283, 286, 288, 292, 296 644 1.1 christos }; 645 1.1 christos #endif 646 1.1 christos 647 1.1 christos #if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE 648 1.1 christos /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM. 649 1.1 christos First, the terminals, then, starting at YYNTOKENS, nonterminals. */ 650 1.1 christos static const char *const yytname[] = 651 1.1 christos { 652 1.1 christos "$end", "error", "$undefined", "EXPOP_EOF", "EXPOP_NEW_LINE", 653 1.1 christos "EXPOP_NUMBER", "EXPOP_HEX_NUMBER", "EXPOP_RESERVED1", "EXPOP_RESERVED2", 654 1.1 christos "EXPOP_PAREN_OPEN", "EXPOP_PAREN_CLOSE", "EXPOP_LOGICAL_OR", 655 1.1 christos "EXPOP_LOGICAL_AND", "EXPOP_OR", "EXPOP_XOR", "EXPOP_AND", 656 1.1 christos "EXPOP_NOT_EQUAL", "EXPOP_EQUAL", "EXPOP_LESS_EQUAL", 657 1.1 christos "EXPOP_GREATER_EQUAL", "EXPOP_LESS", "EXPOP_GREATER", "EXPOP_SHIFT_LEFT", 658 1.1 christos "EXPOP_SHIFT_RIGHT", "EXPOP_SUBTRACT", "EXPOP_ADD", "EXPOP_MODULO", 659 1.1 christos "EXPOP_DIVIDE", "EXPOP_MULTIPLY", "EXPOP_LOGICAL_NOT", 660 1.1 christos "EXPOP_ONES_COMPLIMENT", "EXPOP_DEFINE", "EXPOP_IDENTIFIER", "$accept", 661 1.1 christos "Value", "Expression", 0 662 1.1 christos }; 663 1.1 christos #endif 664 1.1 christos 665 1.1 christos # ifdef YYPRINT 666 1.1 christos /* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to 667 1.1 christos token YYLEX-NUM. */ 668 1.1 christos static const yytype_uint16 yytoknum[] = 669 1.1 christos { 670 1.1 christos 0, 256, 257, 258, 259, 260, 261, 262, 263, 264, 671 1.1 christos 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 672 1.1 christos 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 673 1.1 christos 285, 286, 287 674 1.1 christos }; 675 1.1 christos # endif 676 1.1 christos 677 1.1 christos /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ 678 1.1 christos static const yytype_uint8 yyr1[] = 679 1.1 christos { 680 1.1 christos 0, 33, 34, 34, 35, 35, 35, 35, 35, 35, 681 1.1 christos 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 682 1.1 christos 35, 35, 35, 35, 35, 35, 35, 35, 35, 35 683 1.1 christos }; 684 1.1 christos 685 1.1 christos /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ 686 1.1 christos static const yytype_uint8 yyr2[] = 687 1.1 christos { 688 1.1 christos 0, 2, 2, 2, 2, 2, 3, 3, 3, 3, 689 1.1 christos 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 690 1.1 christos 3, 3, 3, 3, 3, 4, 2, 1, 1, 1 691 1.1 christos }; 692 1.1 christos 693 1.1 christos /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state 694 1.1 christos STATE-NUM when YYTABLE doesn't specify something else to do. Zero 695 1.1 christos means the default is an error. */ 696 1.1 christos static const yytype_uint8 yydefact[] = 697 1.1 christos { 698 1.1 christos 0, 28, 29, 0, 0, 0, 0, 27, 0, 0, 699 1.1 christos 0, 4, 5, 0, 26, 1, 3, 2, 0, 0, 700 1.1 christos 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 701 1.1 christos 0, 0, 0, 0, 0, 0, 24, 0, 23, 22, 702 1.1 christos 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 703 1.1 christos 11, 10, 9, 8, 7, 6, 25 704 1.1 christos }; 705 1.1 christos 706 1.1 christos /* YYDEFGOTO[NTERM-NUM]. */ 707 1.1 christos static const yytype_int8 yydefgoto[] = 708 1.1 christos { 709 1.1 christos -1, 8, 9 710 1.1 christos }; 711 1.1 christos 712 1.1 christos /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing 713 1.1 christos STATE-NUM. */ 714 1.1 christos #define YYPACT_NINF -22 715 1.1 christos static const yytype_int16 yypact[] = 716 1.1 christos { 717 1.1 christos 4, -22, -22, 4, 4, 4, 31, -22, 8, 34, 718 1.1 christos 54, -22, -22, -20, -22, -22, -22, -22, 4, 4, 719 1.1 christos 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 720 1.1 christos 4, 4, 4, 4, 4, 4, -22, 1, 71, 87, 721 1.1 christos 102, 116, 129, 140, 140, 147, 147, 147, 147, -21, 722 1.1 christos -21, 15, 15, -22, -22, -22, -22 723 1.1 christos }; 724 1.1 christos 725 1.1 christos /* YYPGOTO[NTERM-NUM]. */ 726 1.1 christos static const yytype_int8 yypgoto[] = 727 1.1 christos { 728 1.1 christos -22, -22, -3 729 1.1 christos }; 730 1.1 christos 731 1.1 christos /* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If 732 1.1 christos positive, shift that token. If negative, reduce the rule which 733 1.1 christos number is the opposite. If zero, do what YYDEFACT says. 734 1.1 christos If YYTABLE_NINF, syntax error. */ 735 1.1 christos #define YYTABLE_NINF -1 736 1.1 christos static const yytype_uint8 yytable[] = 737 1.1 christos { 738 1.1 christos 10, 11, 12, 31, 32, 33, 34, 35, 15, 1, 739 1.1 christos 2, 56, 37, 3, 0, 38, 39, 40, 41, 42, 740 1.1 christos 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 741 1.1 christos 53, 54, 55, 4, 5, 6, 7, 16, 17, 0, 742 1.1 christos 13, 33, 34, 35, 0, 18, 19, 20, 21, 22, 743 1.1 christos 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 744 1.1 christos 33, 34, 35, 14, 36, 18, 19, 20, 21, 22, 745 1.1 christos 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 746 1.1 christos 33, 34, 35, 19, 20, 21, 22, 23, 24, 25, 747 1.1 christos 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 748 1.1 christos 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 749 1.1 christos 30, 31, 32, 33, 34, 35, 21, 22, 23, 24, 750 1.1 christos 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 751 1.1 christos 35, 22, 23, 24, 25, 26, 27, 28, 29, 30, 752 1.1 christos 31, 32, 33, 34, 35, 23, 24, 25, 26, 27, 753 1.1 christos 28, 29, 30, 31, 32, 33, 34, 35, 25, 26, 754 1.1 christos 27, 28, 29, 30, 31, 32, 33, 34, 35, 29, 755 1.1 christos 30, 31, 32, 33, 34, 35 756 1.1 christos }; 757 1.1 christos 758 1.1 christos static const yytype_int8 yycheck[] = 759 1.1 christos { 760 1.1 christos 3, 4, 5, 24, 25, 26, 27, 28, 0, 5, 761 1.1 christos 6, 10, 32, 9, -1, 18, 19, 20, 21, 22, 762 1.1 christos 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 763 1.1 christos 33, 34, 35, 29, 30, 31, 32, 3, 4, -1, 764 1.1 christos 9, 26, 27, 28, -1, 11, 12, 13, 14, 15, 765 1.1 christos 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 766 1.1 christos 26, 27, 28, 32, 10, 11, 12, 13, 14, 15, 767 1.1 christos 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 768 1.1 christos 26, 27, 28, 12, 13, 14, 15, 16, 17, 18, 769 1.1 christos 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 770 1.1 christos 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 771 1.1 christos 23, 24, 25, 26, 27, 28, 14, 15, 16, 17, 772 1.1 christos 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 773 1.1 christos 28, 15, 16, 17, 18, 19, 20, 21, 22, 23, 774 1.1 christos 24, 25, 26, 27, 28, 16, 17, 18, 19, 20, 775 1.1 christos 21, 22, 23, 24, 25, 26, 27, 28, 18, 19, 776 1.1 christos 20, 21, 22, 23, 24, 25, 26, 27, 28, 22, 777 1.1 christos 23, 24, 25, 26, 27, 28 778 1.1 christos }; 779 1.1 christos 780 1.1 christos /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing 781 1.1 christos symbol of state STATE-NUM. */ 782 1.1 christos static const yytype_uint8 yystos[] = 783 1.1 christos { 784 1.1 christos 0, 5, 6, 9, 29, 30, 31, 32, 34, 35, 785 1.1 christos 35, 35, 35, 9, 32, 0, 3, 4, 11, 12, 786 1.1 christos 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 787 1.1 christos 23, 24, 25, 26, 27, 28, 10, 32, 35, 35, 788 1.1 christos 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 789 1.1 christos 35, 35, 35, 35, 35, 35, 10 790 1.1 christos }; 791 1.1 christos 792 1.1 christos #define yyerrok (yyerrstatus = 0) 793 1.1 christos #define yyclearin (yychar = YYEMPTY) 794 1.1 christos #define YYEMPTY (-2) 795 1.1 christos #define YYEOF 0 796 1.1 christos 797 1.1 christos #define YYACCEPT goto yyacceptlab 798 1.1 christos #define YYABORT goto yyabortlab 799 1.1 christos #define YYERROR goto yyerrorlab 800 1.1 christos 801 1.1 christos 802 1.1 christos /* Like YYERROR except do call yyerror. This remains here temporarily 803 1.1 christos to ease the transition to the new meaning of YYERROR, for GCC. 804 1.1 christos Once GCC version 2 has supplanted version 1, this can go. */ 805 1.1 christos 806 1.1 christos #define YYFAIL goto yyerrlab 807 1.1 christos 808 1.1 christos #define YYRECOVERING() (!!yyerrstatus) 809 1.1 christos 810 1.1 christos #define YYBACKUP(Token, Value) \ 811 1.1 christos do \ 812 1.1 christos if (yychar == YYEMPTY && yylen == 1) \ 813 1.1 christos { \ 814 1.1 christos yychar = (Token); \ 815 1.1 christos yylval = (Value); \ 816 1.1 christos yytoken = YYTRANSLATE (yychar); \ 817 1.1 christos YYPOPSTACK (1); \ 818 1.1 christos goto yybackup; \ 819 1.1 christos } \ 820 1.1 christos else \ 821 1.1 christos { \ 822 1.1 christos yyerror (YY_("syntax error: cannot back up")); \ 823 1.1 christos YYERROR; \ 824 1.1 christos } \ 825 1.1 christos while (YYID (0)) 826 1.1 christos 827 1.1 christos 828 1.1 christos #define YYTERROR 1 829 1.1 christos #define YYERRCODE 256 830 1.1 christos 831 1.1 christos 832 1.1 christos /* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N]. 833 1.1 christos If N is 0, then set CURRENT to the empty location which ends 834 1.1 christos the previous symbol: RHS[0] (always defined). */ 835 1.1 christos 836 1.1 christos #define YYRHSLOC(Rhs, K) ((Rhs)[K]) 837 1.1 christos #ifndef YYLLOC_DEFAULT 838 1.1 christos # define YYLLOC_DEFAULT(Current, Rhs, N) \ 839 1.1 christos do \ 840 1.1 christos if (YYID (N)) \ 841 1.1 christos { \ 842 1.1 christos (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \ 843 1.1 christos (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \ 844 1.1 christos (Current).last_line = YYRHSLOC (Rhs, N).last_line; \ 845 1.1 christos (Current).last_column = YYRHSLOC (Rhs, N).last_column; \ 846 1.1 christos } \ 847 1.1 christos else \ 848 1.1 christos { \ 849 1.1 christos (Current).first_line = (Current).last_line = \ 850 1.1 christos YYRHSLOC (Rhs, 0).last_line; \ 851 1.1 christos (Current).first_column = (Current).last_column = \ 852 1.1 christos YYRHSLOC (Rhs, 0).last_column; \ 853 1.1 christos } \ 854 1.1 christos while (YYID (0)) 855 1.1 christos #endif 856 1.1 christos 857 1.1 christos 858 1.1 christos /* YY_LOCATION_PRINT -- Print the location on the stream. 859 1.1 christos This macro was not mandated originally: define only if we know 860 1.1 christos we won't break user code: when these are the locations we know. */ 861 1.1 christos 862 1.1 christos #ifndef YY_LOCATION_PRINT 863 1.1 christos # if YYLTYPE_IS_TRIVIAL 864 1.1 christos # define YY_LOCATION_PRINT(File, Loc) \ 865 1.1 christos fprintf (File, "%d.%d-%d.%d", \ 866 1.1 christos (Loc).first_line, (Loc).first_column, \ 867 1.1 christos (Loc).last_line, (Loc).last_column) 868 1.1 christos # else 869 1.1 christos # define YY_LOCATION_PRINT(File, Loc) ((void) 0) 870 1.1 christos # endif 871 1.1 christos #endif 872 1.1 christos 873 1.1 christos 874 1.1 christos /* YYLEX -- calling `yylex' with the right arguments. */ 875 1.1 christos 876 1.1 christos #ifdef YYLEX_PARAM 877 1.1 christos # define YYLEX yylex (YYLEX_PARAM) 878 1.1 christos #else 879 1.1 christos # define YYLEX yylex () 880 1.1 christos #endif 881 1.1 christos 882 1.1 christos /* Enable debugging if requested. */ 883 1.1 christos #if YYDEBUG 884 1.1 christos 885 1.1 christos # ifndef YYFPRINTF 886 1.1 christos # include <stdio.h> /* INFRINGES ON USER NAME SPACE */ 887 1.1 christos # define YYFPRINTF fprintf 888 1.1 christos # endif 889 1.1 christos 890 1.1 christos # define YYDPRINTF(Args) \ 891 1.1 christos do { \ 892 1.1 christos if (yydebug) \ 893 1.1 christos YYFPRINTF Args; \ 894 1.1 christos } while (YYID (0)) 895 1.1 christos 896 1.1 christos # define YY_SYMBOL_PRINT(Title, Type, Value, Location) \ 897 1.1 christos do { \ 898 1.1 christos if (yydebug) \ 899 1.1 christos { \ 900 1.1 christos YYFPRINTF (stderr, "%s ", Title); \ 901 1.1 christos yy_symbol_print (stderr, \ 902 1.1 christos Type, Value); \ 903 1.1 christos YYFPRINTF (stderr, "\n"); \ 904 1.1 christos } \ 905 1.1 christos } while (YYID (0)) 906 1.1 christos 907 1.1 christos 908 1.1 christos /*--------------------------------. 909 1.1 christos | Print this symbol on YYOUTPUT. | 910 1.1 christos `--------------------------------*/ 911 1.1 christos 912 1.1 christos /*ARGSUSED*/ 913 1.1 christos #if (defined __STDC__ || defined __C99__FUNC__ \ 914 1.1 christos || defined __cplusplus || defined _MSC_VER) 915 1.1 christos static void 916 1.1 christos yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep) 917 1.1 christos #else 918 1.1 christos static void 919 1.1 christos yy_symbol_value_print (yyoutput, yytype, yyvaluep) 920 1.1 christos FILE *yyoutput; 921 1.1 christos int yytype; 922 1.1 christos YYSTYPE const * const yyvaluep; 923 1.1 christos #endif 924 1.1 christos { 925 1.1 christos if (!yyvaluep) 926 1.1 christos return; 927 1.1 christos # ifdef YYPRINT 928 1.1 christos if (yytype < YYNTOKENS) 929 1.1 christos YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep); 930 1.1 christos # else 931 1.1 christos YYUSE (yyoutput); 932 1.1 christos # endif 933 1.1 christos switch (yytype) 934 1.1 christos { 935 1.1 christos default: 936 1.1 christos break; 937 1.1 christos } 938 1.1 christos } 939 1.1 christos 940 1.1 christos 941 1.1 christos /*--------------------------------. 942 1.1 christos | Print this symbol on YYOUTPUT. | 943 1.1 christos `--------------------------------*/ 944 1.1 christos 945 1.1 christos #if (defined __STDC__ || defined __C99__FUNC__ \ 946 1.1 christos || defined __cplusplus || defined _MSC_VER) 947 1.1 christos static void 948 1.1 christos yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep) 949 1.1 christos #else 950 1.1 christos static void 951 1.1 christos yy_symbol_print (yyoutput, yytype, yyvaluep) 952 1.1 christos FILE *yyoutput; 953 1.1 christos int yytype; 954 1.1 christos YYSTYPE const * const yyvaluep; 955 1.1 christos #endif 956 1.1 christos { 957 1.1 christos if (yytype < YYNTOKENS) 958 1.1 christos YYFPRINTF (yyoutput, "token %s (", yytname[yytype]); 959 1.1 christos else 960 1.1 christos YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]); 961 1.1 christos 962 1.1 christos yy_symbol_value_print (yyoutput, yytype, yyvaluep); 963 1.1 christos YYFPRINTF (yyoutput, ")"); 964 1.1 christos } 965 1.1 christos 966 1.1 christos /*------------------------------------------------------------------. 967 1.1 christos | yy_stack_print -- Print the state stack from its BOTTOM up to its | 968 1.1 christos | TOP (included). | 969 1.1 christos `------------------------------------------------------------------*/ 970 1.1 christos 971 1.1 christos #if (defined __STDC__ || defined __C99__FUNC__ \ 972 1.1 christos || defined __cplusplus || defined _MSC_VER) 973 1.1 christos static void 974 1.1 christos yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop) 975 1.1 christos #else 976 1.1 christos static void 977 1.1 christos yy_stack_print (yybottom, yytop) 978 1.1 christos yytype_int16 *yybottom; 979 1.1 christos yytype_int16 *yytop; 980 1.1 christos #endif 981 1.1 christos { 982 1.1 christos YYFPRINTF (stderr, "Stack now"); 983 1.1 christos for (; yybottom <= yytop; yybottom++) 984 1.1 christos { 985 1.1 christos int yybot = *yybottom; 986 1.1 christos YYFPRINTF (stderr, " %d", yybot); 987 1.1 christos } 988 1.1 christos YYFPRINTF (stderr, "\n"); 989 1.1 christos } 990 1.1 christos 991 1.1 christos # define YY_STACK_PRINT(Bottom, Top) \ 992 1.1 christos do { \ 993 1.1 christos if (yydebug) \ 994 1.1 christos yy_stack_print ((Bottom), (Top)); \ 995 1.1 christos } while (YYID (0)) 996 1.1 christos 997 1.1 christos 998 1.1 christos /*------------------------------------------------. 999 1.1 christos | Report that the YYRULE is going to be reduced. | 1000 1.1 christos `------------------------------------------------*/ 1001 1.1 christos 1002 1.1 christos #if (defined __STDC__ || defined __C99__FUNC__ \ 1003 1.1 christos || defined __cplusplus || defined _MSC_VER) 1004 1.1 christos static void 1005 1.1 christos yy_reduce_print (YYSTYPE *yyvsp, int yyrule) 1006 1.1 christos #else 1007 1.1 christos static void 1008 1.1 christos yy_reduce_print (yyvsp, yyrule) 1009 1.1 christos YYSTYPE *yyvsp; 1010 1.1 christos int yyrule; 1011 1.1 christos #endif 1012 1.1 christos { 1013 1.1 christos int yynrhs = yyr2[yyrule]; 1014 1.1 christos int yyi; 1015 1.1 christos unsigned long int yylno = yyrline[yyrule]; 1016 1.1 christos YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n", 1017 1.1 christos yyrule - 1, yylno); 1018 1.1 christos /* The symbols being reduced. */ 1019 1.1 christos for (yyi = 0; yyi < yynrhs; yyi++) 1020 1.1 christos { 1021 1.1 christos YYFPRINTF (stderr, " $%d = ", yyi + 1); 1022 1.1 christos yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi], 1023 1.1 christos &(yyvsp[(yyi + 1) - (yynrhs)]) 1024 1.1 christos ); 1025 1.1 christos YYFPRINTF (stderr, "\n"); 1026 1.1 christos } 1027 1.1 christos } 1028 1.1 christos 1029 1.1 christos # define YY_REDUCE_PRINT(Rule) \ 1030 1.1 christos do { \ 1031 1.1 christos if (yydebug) \ 1032 1.1 christos yy_reduce_print (yyvsp, Rule); \ 1033 1.1 christos } while (YYID (0)) 1034 1.1 christos 1035 1.1 christos /* Nonzero means print parse trace. It is left uninitialized so that 1036 1.1 christos multiple parsers can coexist. */ 1037 1.1 christos int yydebug; 1038 1.1 christos #else /* !YYDEBUG */ 1039 1.1 christos # define YYDPRINTF(Args) 1040 1.1 christos # define YY_SYMBOL_PRINT(Title, Type, Value, Location) 1041 1.1 christos # define YY_STACK_PRINT(Bottom, Top) 1042 1.1 christos # define YY_REDUCE_PRINT(Rule) 1043 1.1 christos #endif /* !YYDEBUG */ 1044 1.1 christos 1045 1.1 christos 1046 1.1 christos /* YYINITDEPTH -- initial size of the parser's stacks. */ 1047 1.1 christos #ifndef YYINITDEPTH 1048 1.1 christos # define YYINITDEPTH 200 1049 1.1 christos #endif 1050 1.1 christos 1051 1.1 christos /* YYMAXDEPTH -- maximum size the stacks can grow to (effective only 1052 1.1 christos if the built-in stack extension method is used). 1053 1.1 christos 1054 1.1 christos Do not make this value too large; the results are undefined if 1055 1.1 christos YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH) 1056 1.1 christos evaluated with infinite-precision integer arithmetic. */ 1057 1.1 christos 1058 1.1 christos #ifndef YYMAXDEPTH 1059 1.1 christos # define YYMAXDEPTH 10000 1060 1.1 christos #endif 1061 1.1 christos 1062 1.1 christos 1063 1.1 christos 1065 1.1 christos #if YYERROR_VERBOSE 1066 1.1 christos 1067 1.1 christos # ifndef yystrlen 1068 1.1 christos # if defined __GLIBC__ && defined _STRING_H 1069 1.1 christos # define yystrlen strlen 1070 1.1 christos # else 1071 1.1 christos /* Return the length of YYSTR. */ 1072 1.1 christos #if (defined __STDC__ || defined __C99__FUNC__ \ 1073 1.1 christos || defined __cplusplus || defined _MSC_VER) 1074 1.1 christos static YYSIZE_T 1075 1.1 christos yystrlen (const char *yystr) 1076 1.1 christos #else 1077 1.1 christos static YYSIZE_T 1078 1.1 christos yystrlen (yystr) 1079 1.1 christos const char *yystr; 1080 1.1 christos #endif 1081 1.1 christos { 1082 1.1 christos YYSIZE_T yylen; 1083 1.1 christos for (yylen = 0; yystr[yylen]; yylen++) 1084 1.1 christos continue; 1085 1.1 christos return yylen; 1086 1.1 christos } 1087 1.1 christos # endif 1088 1.1 christos # endif 1089 1.1 christos 1090 1.1 christos # ifndef yystpcpy 1091 1.1 christos # if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE 1092 1.1 christos # define yystpcpy stpcpy 1093 1.1 christos # else 1094 1.1 christos /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in 1095 1.1 christos YYDEST. */ 1096 1.1 christos #if (defined __STDC__ || defined __C99__FUNC__ \ 1097 1.1 christos || defined __cplusplus || defined _MSC_VER) 1098 1.1 christos static char * 1099 1.1 christos yystpcpy (char *yydest, const char *yysrc) 1100 1.1 christos #else 1101 1.1 christos static char * 1102 1.1 christos yystpcpy (yydest, yysrc) 1103 1.1 christos char *yydest; 1104 1.1 christos const char *yysrc; 1105 1.1 christos #endif 1106 1.1 christos { 1107 1.1 christos char *yyd = yydest; 1108 1.1 christos const char *yys = yysrc; 1109 1.1 christos 1110 1.1 christos while ((*yyd++ = *yys++) != '\0') 1111 1.1 christos continue; 1112 1.1 christos 1113 1.1 christos return yyd - 1; 1114 1.1 christos } 1115 1.1 christos # endif 1116 1.1 christos # endif 1117 1.1 christos 1118 1.1 christos # ifndef yytnamerr 1119 1.1 christos /* Copy to YYRES the contents of YYSTR after stripping away unnecessary 1120 1.1 christos quotes and backslashes, so that it's suitable for yyerror. The 1121 1.1 christos heuristic is that double-quoting is unnecessary unless the string 1122 1.1 christos contains an apostrophe, a comma, or backslash (other than 1123 1.1 christos backslash-backslash). YYSTR is taken from yytname. If YYRES is 1124 1.1 christos null, do not copy; instead, return the length of what the result 1125 1.1 christos would have been. */ 1126 1.1 christos static YYSIZE_T 1127 1.1 christos yytnamerr (char *yyres, const char *yystr) 1128 1.1 christos { 1129 1.1 christos if (*yystr == '"') 1130 1.1 christos { 1131 1.1 christos YYSIZE_T yyn = 0; 1132 1.1 christos char const *yyp = yystr; 1133 1.1 christos 1134 1.1 christos for (;;) 1135 1.1 christos switch (*++yyp) 1136 1.1 christos { 1137 1.1 christos case '\'': 1138 1.1 christos case ',': 1139 1.1 christos goto do_not_strip_quotes; 1140 1.1 christos 1141 1.1 christos case '\\': 1142 1.1 christos if (*++yyp != '\\') 1143 1.1 christos goto do_not_strip_quotes; 1144 1.1 christos /* Fall through. */ 1145 1.1 christos default: 1146 1.1 christos if (yyres) 1147 1.1 christos yyres[yyn] = *yyp; 1148 1.1 christos yyn++; 1149 1.1 christos break; 1150 1.1 christos 1151 1.1 christos case '"': 1152 1.1 christos if (yyres) 1153 1.1 christos yyres[yyn] = '\0'; 1154 1.1 christos return yyn; 1155 1.1 christos } 1156 1.1 christos do_not_strip_quotes: ; 1157 1.1 christos } 1158 1.1 christos 1159 1.1 christos if (! yyres) 1160 1.1 christos return yystrlen (yystr); 1161 1.1 christos 1162 1.1 christos return yystpcpy (yyres, yystr) - yyres; 1163 1.1 christos } 1164 1.1 christos # endif 1165 1.1 christos 1166 1.1 christos /* Copy into YYRESULT an error message about the unexpected token 1167 1.1 christos YYCHAR while in state YYSTATE. Return the number of bytes copied, 1168 1.1 christos including the terminating null byte. If YYRESULT is null, do not 1169 1.1 christos copy anything; just return the number of bytes that would be 1170 1.1 christos copied. As a special case, return 0 if an ordinary "syntax error" 1171 1.1 christos message will do. Return YYSIZE_MAXIMUM if overflow occurs during 1172 1.1 christos size calculation. */ 1173 1.1 christos static YYSIZE_T 1174 1.1 christos yysyntax_error (char *yyresult, int yystate, int yychar) 1175 1.1 christos { 1176 1.1 christos int yyn = yypact[yystate]; 1177 1.1 christos 1178 1.1 christos if (! (YYPACT_NINF < yyn && yyn <= YYLAST)) 1179 1.1 christos return 0; 1180 1.1 christos else 1181 1.1 christos { 1182 1.1 christos int yytype = YYTRANSLATE (yychar); 1183 1.1 christos YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]); 1184 1.1 christos YYSIZE_T yysize = yysize0; 1185 1.1 christos YYSIZE_T yysize1; 1186 1.1 christos int yysize_overflow = 0; 1187 1.1 christos enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 }; 1188 1.1 christos char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM]; 1189 1.1 christos int yyx; 1190 1.1 christos 1191 1.1 christos # if 0 1192 1.1 christos /* This is so xgettext sees the translatable formats that are 1193 1.1 christos constructed on the fly. */ 1194 1.1 christos YY_("syntax error, unexpected %s"); 1195 1.1 christos YY_("syntax error, unexpected %s, expecting %s"); 1196 1.1 christos YY_("syntax error, unexpected %s, expecting %s or %s"); 1197 1.1 christos YY_("syntax error, unexpected %s, expecting %s or %s or %s"); 1198 1.1 christos YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"); 1199 1.1 christos # endif 1200 1.1 christos char *yyfmt; 1201 1.1 christos char const *yyf; 1202 1.1 christos static char const yyunexpected[] = "syntax error, unexpected %s"; 1203 1.1 christos static char const yyexpecting[] = ", expecting %s"; 1204 1.1 christos static char const yyor[] = " or %s"; 1205 1.1 christos char yyformat[sizeof yyunexpected 1206 1.1 christos + sizeof yyexpecting - 1 1207 1.1 christos + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2) 1208 1.1 christos * (sizeof yyor - 1))]; 1209 1.1 christos char const *yyprefix = yyexpecting; 1210 1.1 christos 1211 1.1 christos /* Start YYX at -YYN if negative to avoid negative indexes in 1212 1.1 christos YYCHECK. */ 1213 1.1 christos int yyxbegin = yyn < 0 ? -yyn : 0; 1214 1.1 christos 1215 1.1 christos /* Stay within bounds of both yycheck and yytname. */ 1216 1.1 christos int yychecklim = YYLAST - yyn + 1; 1217 1.1 christos int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS; 1218 1.1 christos int yycount = 1; 1219 1.1 christos 1220 1.1 christos yyarg[0] = yytname[yytype]; 1221 1.1 christos yyfmt = yystpcpy (yyformat, yyunexpected); 1222 1.1 christos 1223 1.1 christos for (yyx = yyxbegin; yyx < yyxend; ++yyx) 1224 1.1 christos if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR) 1225 1.1 christos { 1226 1.1 christos if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM) 1227 1.1 christos { 1228 1.1 christos yycount = 1; 1229 1.1 christos yysize = yysize0; 1230 1.1 christos yyformat[sizeof yyunexpected - 1] = '\0'; 1231 1.1 christos break; 1232 1.1 christos } 1233 1.1 christos yyarg[yycount++] = yytname[yyx]; 1234 1.1 christos yysize1 = yysize + yytnamerr (0, yytname[yyx]); 1235 1.1 christos yysize_overflow |= (yysize1 < yysize); 1236 1.1 christos yysize = yysize1; 1237 1.1 christos yyfmt = yystpcpy (yyfmt, yyprefix); 1238 1.1 christos yyprefix = yyor; 1239 1.1 christos } 1240 1.1 christos 1241 1.1 christos yyf = YY_(yyformat); 1242 1.1 christos yysize1 = yysize + yystrlen (yyf); 1243 1.1 christos yysize_overflow |= (yysize1 < yysize); 1244 1.1 christos yysize = yysize1; 1245 1.1 christos 1246 1.1 christos if (yysize_overflow) 1247 1.1 christos return YYSIZE_MAXIMUM; 1248 1.1 christos 1249 1.1 christos if (yyresult) 1250 1.1 christos { 1251 1.1 christos /* Avoid sprintf, as that infringes on the user's name space. 1252 1.1 christos Don't have undefined behavior even if the translation 1253 1.1 christos produced a string with the wrong number of "%s"s. */ 1254 1.1 christos char *yyp = yyresult; 1255 1.1 christos int yyi = 0; 1256 1.1 christos while ((*yyp = *yyf) != '\0') 1257 1.1 christos { 1258 1.1 christos if (*yyp == '%' && yyf[1] == 's' && yyi < yycount) 1259 1.1 christos { 1260 1.1 christos yyp += yytnamerr (yyp, yyarg[yyi++]); 1261 1.1 christos yyf += 2; 1262 1.1 christos } 1263 1.1 christos else 1264 1.1 christos { 1265 1.1 christos yyp++; 1266 1.1 christos yyf++; 1267 1.1 christos } 1268 1.1 christos } 1269 1.1 christos } 1270 1.1 christos return yysize; 1271 1.1 christos } 1272 1.1 christos } 1273 1.1 christos #endif /* YYERROR_VERBOSE */ 1274 1.1 christos 1275 1.1 christos 1277 1.1 christos /*-----------------------------------------------. 1278 1.1 christos | Release the memory associated to this symbol. | 1279 1.1 christos `-----------------------------------------------*/ 1280 1.1 christos 1281 1.1 christos /*ARGSUSED*/ 1282 1.1 christos #if (defined __STDC__ || defined __C99__FUNC__ \ 1283 1.1 christos || defined __cplusplus || defined _MSC_VER) 1284 1.1 christos static void 1285 1.1 christos yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep) 1286 1.1 christos #else 1287 1.1 christos static void 1288 1.1 christos yydestruct (yymsg, yytype, yyvaluep) 1289 1.1 christos const char *yymsg; 1290 1.1 christos int yytype; 1291 1.1 christos YYSTYPE *yyvaluep; 1292 1.1 christos #endif 1293 1.1 christos { 1294 1.1 christos YYUSE (yyvaluep); 1295 1.1 christos 1296 1.1 christos if (!yymsg) 1297 1.1 christos yymsg = "Deleting"; 1298 1.1 christos YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp); 1299 1.1 christos 1300 1.1 christos switch (yytype) 1301 1.1 christos { 1302 1.1 christos 1303 1.1 christos default: 1304 1.1 christos break; 1305 1.1 christos } 1306 1.1 christos } 1307 1.1 christos 1308 1.1 christos /* Prevent warnings from -Wmissing-prototypes. */ 1309 1.1 christos #ifdef YYPARSE_PARAM 1310 1.1 christos #if defined __STDC__ || defined __cplusplus 1311 1.1 christos int yyparse (void *YYPARSE_PARAM); 1312 1.1 christos #else 1313 1.1 christos int yyparse (); 1314 1.1 christos #endif 1315 1.1 christos #else /* ! YYPARSE_PARAM */ 1316 1.1 christos #if defined __STDC__ || defined __cplusplus 1317 1.1 christos int yyparse (void); 1318 1.1 christos #else 1319 1.1 christos int yyparse (); 1320 1.1 christos #endif 1321 1.1 christos #endif /* ! YYPARSE_PARAM */ 1322 1.1 christos 1323 1.1 christos 1324 1.1 christos /* The lookahead symbol. */ 1325 1.1 christos int yychar; 1326 1.1 christos 1327 1.1 christos /* The semantic value of the lookahead symbol. */ 1328 1.1 christos YYSTYPE yylval; 1329 1.1 christos 1330 1.1 christos /* Number of syntax errors so far. */ 1331 1.1 christos int yynerrs; 1332 1.1 christos 1333 1.1 christos 1334 1.1 christos 1335 1.1 christos /*-------------------------. 1336 1.1 christos | yyparse or yypush_parse. | 1337 1.1 christos `-------------------------*/ 1338 1.1 christos 1339 1.1 christos #ifdef YYPARSE_PARAM 1340 1.1 christos #if (defined __STDC__ || defined __C99__FUNC__ \ 1341 1.1 christos || defined __cplusplus || defined _MSC_VER) 1342 1.1 christos int 1343 1.1 christos yyparse (void *YYPARSE_PARAM) 1344 1.1 christos #else 1345 1.1 christos int 1346 1.1 christos yyparse (YYPARSE_PARAM) 1347 1.1 christos void *YYPARSE_PARAM; 1348 1.1 christos #endif 1349 1.1 christos #else /* ! YYPARSE_PARAM */ 1350 1.1 christos #if (defined __STDC__ || defined __C99__FUNC__ \ 1351 1.1 christos || defined __cplusplus || defined _MSC_VER) 1352 1.1 christos int 1353 1.1 christos yyparse (void) 1354 1.1 christos #else 1355 1.1 christos int 1356 1.1 christos yyparse () 1357 1.1 christos 1358 1.1 christos #endif 1359 1.1 christos #endif 1360 1.1 christos { 1361 1.1 christos 1362 1.1 christos 1363 1.1 christos int yystate; 1364 1.1 christos /* Number of tokens to shift before error messages enabled. */ 1365 1.1 christos int yyerrstatus; 1366 1.1 christos 1367 1.1 christos /* The stacks and their tools: 1368 1.1 christos `yyss': related to states. 1369 1.1 christos `yyvs': related to semantic values. 1370 1.1 christos 1371 1.1 christos Refer to the stacks thru separate pointers, to allow yyoverflow 1372 1.1 christos to reallocate them elsewhere. */ 1373 1.1 christos 1374 1.1 christos /* The state stack. */ 1375 1.1 christos yytype_int16 yyssa[YYINITDEPTH]; 1376 1.1 christos yytype_int16 *yyss; 1377 1.1 christos yytype_int16 *yyssp; 1378 1.1 christos 1379 1.1 christos /* The semantic value stack. */ 1380 1.1 christos YYSTYPE yyvsa[YYINITDEPTH]; 1381 1.1 christos YYSTYPE *yyvs; 1382 1.1 christos YYSTYPE *yyvsp; 1383 1.1 christos 1384 1.1 christos YYSIZE_T yystacksize; 1385 1.1 christos 1386 1.1 christos int yyn; 1387 1.1 christos int yyresult; 1388 1.1 christos /* Lookahead token as an internal (translated) token number. */ 1389 1.1 christos int yytoken; 1390 1.1 christos /* The variables used to return semantic value and location from the 1391 1.1 christos action routines. */ 1392 1.1 christos YYSTYPE yyval; 1393 1.1 christos 1394 1.1 christos #if YYERROR_VERBOSE 1395 1.1 christos /* Buffer for error messages, and its allocated size. */ 1396 1.1 christos char yymsgbuf[128]; 1397 1.1 christos char *yymsg = yymsgbuf; 1398 1.1 christos YYSIZE_T yymsg_alloc = sizeof yymsgbuf; 1399 1.1 christos #endif 1400 1.1 christos 1401 1.1 christos #define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N)) 1402 1.1 christos 1403 1.1 christos /* The number of symbols on the RHS of the reduced rule. 1404 1.1 christos Keep to zero when no symbol should be popped. */ 1405 1.1 christos int yylen = 0; 1406 1.1 christos 1407 1.1 christos yytoken = 0; 1408 1.1 christos yyss = yyssa; 1409 1.1 christos yyvs = yyvsa; 1410 1.1 christos yystacksize = YYINITDEPTH; 1411 1.1 christos 1412 1.1 christos YYDPRINTF ((stderr, "Starting parse\n")); 1413 1.1 christos 1414 1.1 christos yystate = 0; 1415 1.1 christos yyerrstatus = 0; 1416 1.1 christos yynerrs = 0; 1417 1.1 christos yychar = YYEMPTY; /* Cause a token to be read. */ 1418 1.1 christos 1419 1.1 christos /* Initialize stack pointers. 1420 1.1 christos Waste one element of value and location stack 1421 1.1 christos so that they stay on the same level as the state stack. 1422 1.1 christos The wasted elements are never initialized. */ 1423 1.1 christos yyssp = yyss; 1424 1.1 christos yyvsp = yyvs; 1425 1.1 christos 1426 1.1 christos goto yysetstate; 1427 1.1 christos 1428 1.1 christos /*------------------------------------------------------------. 1429 1.1 christos | yynewstate -- Push a new state, which is found in yystate. | 1430 1.1 christos `------------------------------------------------------------*/ 1431 1.1 christos yynewstate: 1432 1.1 christos /* In all cases, when you get here, the value and location stacks 1433 1.1 christos have just been pushed. So pushing a state here evens the stacks. */ 1434 1.1 christos yyssp++; 1435 1.1 christos 1436 1.1 christos yysetstate: 1437 1.1 christos *yyssp = yystate; 1438 1.1 christos 1439 1.1 christos if (yyss + yystacksize - 1 <= yyssp) 1440 1.1 christos { 1441 1.1 christos /* Get the current used size of the three stacks, in elements. */ 1442 1.1 christos YYSIZE_T yysize = yyssp - yyss + 1; 1443 1.1 christos 1444 1.1 christos #ifdef yyoverflow 1445 1.1 christos { 1446 1.1 christos /* Give user a chance to reallocate the stack. Use copies of 1447 1.1 christos these so that the &'s don't force the real ones into 1448 1.1 christos memory. */ 1449 1.1 christos YYSTYPE *yyvs1 = yyvs; 1450 1.1 christos yytype_int16 *yyss1 = yyss; 1451 1.1 christos 1452 1.1 christos /* Each stack pointer address is followed by the size of the 1453 1.1 christos data in use in that stack, in bytes. This used to be a 1454 1.1 christos conditional around just the two extra args, but that might 1455 1.1 christos be undefined if yyoverflow is a macro. */ 1456 1.1 christos yyoverflow (YY_("memory exhausted"), 1457 1.1 christos &yyss1, yysize * sizeof (*yyssp), 1458 1.1 christos &yyvs1, yysize * sizeof (*yyvsp), 1459 1.1 christos &yystacksize); 1460 1.1 christos 1461 1.1 christos yyss = yyss1; 1462 1.1 christos yyvs = yyvs1; 1463 1.1 christos } 1464 1.1 christos #else /* no yyoverflow */ 1465 1.1 christos # ifndef YYSTACK_RELOCATE 1466 1.1 christos goto yyexhaustedlab; 1467 1.1 christos # else 1468 1.1 christos /* Extend the stack our own way. */ 1469 1.1 christos if (YYMAXDEPTH <= yystacksize) 1470 1.1 christos goto yyexhaustedlab; 1471 1.1 christos yystacksize *= 2; 1472 1.1 christos if (YYMAXDEPTH < yystacksize) 1473 1.1 christos yystacksize = YYMAXDEPTH; 1474 1.1 christos 1475 1.1 christos { 1476 1.1 christos yytype_int16 *yyss1 = yyss; 1477 1.1 christos union yyalloc *yyptr = 1478 1.1 christos (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize)); 1479 1.1 christos if (! yyptr) 1480 1.1 christos goto yyexhaustedlab; 1481 1.1 christos YYSTACK_RELOCATE (yyss_alloc, yyss); 1482 1.1 christos YYSTACK_RELOCATE (yyvs_alloc, yyvs); 1483 1.1 christos # undef YYSTACK_RELOCATE 1484 1.1 christos if (yyss1 != yyssa) 1485 1.1 christos YYSTACK_FREE (yyss1); 1486 1.1 christos } 1487 1.1 christos # endif 1488 1.1 christos #endif /* no yyoverflow */ 1489 1.1 christos 1490 1.1 christos yyssp = yyss + yysize - 1; 1491 1.1 christos yyvsp = yyvs + yysize - 1; 1492 1.1 christos 1493 1.1 christos YYDPRINTF ((stderr, "Stack size increased to %lu\n", 1494 1.1 christos (unsigned long int) yystacksize)); 1495 1.1 christos 1496 1.1 christos if (yyss + yystacksize - 1 <= yyssp) 1497 1.1 christos YYABORT; 1498 1.1 christos } 1499 1.1 christos 1500 1.1 christos YYDPRINTF ((stderr, "Entering state %d\n", yystate)); 1501 1.1 christos 1502 1.1 christos if (yystate == YYFINAL) 1503 1.1 christos YYACCEPT; 1504 1.1 christos 1505 1.1 christos goto yybackup; 1506 1.1 christos 1507 1.1 christos /*-----------. 1508 1.1 christos | yybackup. | 1509 1.1 christos `-----------*/ 1510 1.1 christos yybackup: 1511 1.1 christos 1512 1.1 christos /* Do appropriate processing given the current state. Read a 1513 1.1 christos lookahead token if we need one and don't already have one. */ 1514 1.1 christos 1515 1.1 christos /* First try to decide what to do without reference to lookahead token. */ 1516 1.1 christos yyn = yypact[yystate]; 1517 1.1 christos if (yyn == YYPACT_NINF) 1518 1.1 christos goto yydefault; 1519 1.1 christos 1520 1.1 christos /* Not known => get a lookahead token if don't already have one. */ 1521 1.1 christos 1522 1.1 christos /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol. */ 1523 1.1 christos if (yychar == YYEMPTY) 1524 1.1 christos { 1525 1.1 christos YYDPRINTF ((stderr, "Reading a token: ")); 1526 1.1 christos yychar = YYLEX; 1527 1.1 christos } 1528 1.1 christos 1529 1.1 christos if (yychar <= YYEOF) 1530 1.1 christos { 1531 1.1 christos yychar = yytoken = YYEOF; 1532 1.1 christos YYDPRINTF ((stderr, "Now at end of input.\n")); 1533 1.1 christos } 1534 1.1 christos else 1535 1.1 christos { 1536 1.1 christos yytoken = YYTRANSLATE (yychar); 1537 1.1 christos YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc); 1538 1.1 christos } 1539 1.1 christos 1540 1.1 christos /* If the proper action on seeing token YYTOKEN is to reduce or to 1541 1.1 christos detect an error, take that action. */ 1542 1.1 christos yyn += yytoken; 1543 1.1 christos if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken) 1544 1.1 christos goto yydefault; 1545 1.1 christos yyn = yytable[yyn]; 1546 1.1 christos if (yyn <= 0) 1547 1.1 christos { 1548 1.1 christos if (yyn == 0 || yyn == YYTABLE_NINF) 1549 1.1 christos goto yyerrlab; 1550 1.1 christos yyn = -yyn; 1551 1.1 christos goto yyreduce; 1552 1.1 christos } 1553 1.1 christos 1554 1.1 christos /* Count tokens shifted since error; after three, turn off error 1555 1.1 christos status. */ 1556 1.1 christos if (yyerrstatus) 1557 1.1 christos yyerrstatus--; 1558 1.1 christos 1559 1.1 christos /* Shift the lookahead token. */ 1560 1.1 christos YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc); 1561 1.1 christos 1562 1.1 christos /* Discard the shifted token. */ 1563 1.1 christos yychar = YYEMPTY; 1564 1.1 christos 1565 1.1 christos yystate = yyn; 1566 1.1 christos *++yyvsp = yylval; 1567 1.1 christos 1568 1.1 christos goto yynewstate; 1569 1.1 christos 1570 1.1 christos 1571 1.1 christos /*-----------------------------------------------------------. 1572 1.1 christos | yydefault -- do the default action for the current state. | 1573 1.1 christos `-----------------------------------------------------------*/ 1574 1.1 christos yydefault: 1575 1.1 christos yyn = yydefact[yystate]; 1576 1.1 christos if (yyn == 0) 1577 1.1 christos goto yyerrlab; 1578 1.1 christos goto yyreduce; 1579 1.1 christos 1580 1.1 christos 1581 1.1 christos /*-----------------------------. 1582 1.1 christos | yyreduce -- Do a reduction. | 1583 1.1 christos `-----------------------------*/ 1584 1.1 christos yyreduce: 1585 1.1 christos /* yyn is the number of a rule to reduce with. */ 1586 1.1 christos yylen = yyr2[yyn]; 1587 1.1 christos 1588 1.1 christos /* If YYLEN is nonzero, implement the default value of the action: 1589 1.1 christos `$$ = $1'. 1590 1.1 christos 1591 1.1 christos Otherwise, the following line sets YYVAL to garbage. 1592 1.1 christos This behavior is undocumented and Bison 1593 1.1 christos users should not rely upon it. Assigning to YYVAL 1594 1.1 christos unconditionally makes the parser a bit smaller, and it avoids a 1595 1.1 christos GCC warning that YYVAL may be used uninitialized. */ 1596 1.1 christos yyval = yyvsp[1-yylen]; 1597 1.1 christos 1598 1.1 christos 1599 1.1 christos YY_REDUCE_PRINT (yyn); 1600 1.1 christos switch (yyn) 1601 1.1 christos { 1602 1.1 christos case 2: 1603 1.1 christos 1604 1.1 christos /* Line 1455 of yacc.c */ 1605 1.1 christos #line 244 "C:\\Users\\sdumbre\\testclone\\source\\compiler\\prparser.y" 1606 1.1 christos { PrParserResult=(yyvsp[(1) - (2)].value); return 0; ;} 1607 1.1 christos break; 1608 1.1 christos 1609 1.1 christos case 3: 1610 1.1 christos 1611 1.1 christos /* Line 1455 of yacc.c */ 1612 1.1 christos #line 245 "C:\\Users\\sdumbre\\testclone\\source\\compiler\\prparser.y" 1613 1.1 christos { PrParserResult=(yyvsp[(1) - (2)].value); return 0; ;} 1614 1.1 christos break; 1615 1.1 christos 1616 1.1 christos case 4: 1617 1.1 christos 1618 1.1 christos /* Line 1455 of yacc.c */ 1619 1.1 christos #line 252 "C:\\Users\\sdumbre\\testclone\\source\\compiler\\prparser.y" 1620 1.1 christos { (yyval.value) = DtDoOperator ((yyvsp[(2) - (2)].value), EXPOP_LOGICAL_NOT, (yyvsp[(2) - (2)].value));;} 1621 1.1 christos break; 1622 1.1 christos 1623 1.1 christos case 5: 1624 1.1 christos 1625 1.1 christos /* Line 1455 of yacc.c */ 1626 1.1 christos #line 253 "C:\\Users\\sdumbre\\testclone\\source\\compiler\\prparser.y" 1627 1.1 christos { (yyval.value) = DtDoOperator ((yyvsp[(2) - (2)].value), EXPOP_ONES_COMPLIMENT, (yyvsp[(2) - (2)].value));;} 1628 1.1 christos break; 1629 1.1 christos 1630 1.1 christos case 6: 1631 1.1 christos 1632 1.1 christos /* Line 1455 of yacc.c */ 1633 1.1 christos #line 257 "C:\\Users\\sdumbre\\testclone\\source\\compiler\\prparser.y" 1634 1.1 christos { (yyval.value) = DtDoOperator ((yyvsp[(1) - (3)].value), EXPOP_MULTIPLY, (yyvsp[(3) - (3)].value));;} 1635 1.1 christos break; 1636 1.1 christos 1637 1.1 christos case 7: 1638 1.1 christos 1639 1.1 christos /* Line 1455 of yacc.c */ 1640 1.1 christos #line 258 "C:\\Users\\sdumbre\\testclone\\source\\compiler\\prparser.y" 1641 1.1 christos { (yyval.value) = DtDoOperator ((yyvsp[(1) - (3)].value), EXPOP_DIVIDE, (yyvsp[(3) - (3)].value));;} 1642 1.1 christos break; 1643 1.1 christos 1644 1.1 christos case 8: 1645 1.1 christos 1646 1.1 christos /* Line 1455 of yacc.c */ 1647 1.1 christos #line 259 "C:\\Users\\sdumbre\\testclone\\source\\compiler\\prparser.y" 1648 1.1 christos { (yyval.value) = DtDoOperator ((yyvsp[(1) - (3)].value), EXPOP_MODULO, (yyvsp[(3) - (3)].value));;} 1649 1.1 christos break; 1650 1.1 christos 1651 1.1 christos case 9: 1652 1.1 christos 1653 1.1 christos /* Line 1455 of yacc.c */ 1654 1.1 christos #line 260 "C:\\Users\\sdumbre\\testclone\\source\\compiler\\prparser.y" 1655 1.1 christos { (yyval.value) = DtDoOperator ((yyvsp[(1) - (3)].value), EXPOP_ADD, (yyvsp[(3) - (3)].value));;} 1656 1.1 christos break; 1657 1.1 christos 1658 1.1 christos case 10: 1659 1.1 christos 1660 1.1 christos /* Line 1455 of yacc.c */ 1661 1.1 christos #line 261 "C:\\Users\\sdumbre\\testclone\\source\\compiler\\prparser.y" 1662 1.1 christos { (yyval.value) = DtDoOperator ((yyvsp[(1) - (3)].value), EXPOP_SUBTRACT, (yyvsp[(3) - (3)].value));;} 1663 1.1 christos break; 1664 1.1 christos 1665 1.1 christos case 11: 1666 1.1 christos 1667 1.1 christos /* Line 1455 of yacc.c */ 1668 1.1 christos #line 262 "C:\\Users\\sdumbre\\testclone\\source\\compiler\\prparser.y" 1669 1.1 christos { (yyval.value) = DtDoOperator ((yyvsp[(1) - (3)].value), EXPOP_SHIFT_RIGHT, (yyvsp[(3) - (3)].value));;} 1670 1.1 christos break; 1671 1.1 christos 1672 1.1 christos case 12: 1673 1.1 christos 1674 1.1 christos /* Line 1455 of yacc.c */ 1675 1.1 christos #line 263 "C:\\Users\\sdumbre\\testclone\\source\\compiler\\prparser.y" 1676 1.1 christos { (yyval.value) = DtDoOperator ((yyvsp[(1) - (3)].value), EXPOP_SHIFT_LEFT, (yyvsp[(3) - (3)].value));;} 1677 1.1 christos break; 1678 1.1 christos 1679 1.1 christos case 13: 1680 1.1 christos 1681 1.1 christos /* Line 1455 of yacc.c */ 1682 1.1 christos #line 264 "C:\\Users\\sdumbre\\testclone\\source\\compiler\\prparser.y" 1683 1.1 christos { (yyval.value) = DtDoOperator ((yyvsp[(1) - (3)].value), EXPOP_GREATER, (yyvsp[(3) - (3)].value));;} 1684 1.1 christos break; 1685 1.1 christos 1686 1.1 christos case 14: 1687 1.1 christos 1688 1.1 christos /* Line 1455 of yacc.c */ 1689 1.1 christos #line 265 "C:\\Users\\sdumbre\\testclone\\source\\compiler\\prparser.y" 1690 1.1 christos { (yyval.value) = DtDoOperator ((yyvsp[(1) - (3)].value), EXPOP_LESS, (yyvsp[(3) - (3)].value));;} 1691 1.1 christos break; 1692 1.1 christos 1693 1.1 christos case 15: 1694 1.1 christos 1695 1.1 christos /* Line 1455 of yacc.c */ 1696 1.1 christos #line 266 "C:\\Users\\sdumbre\\testclone\\source\\compiler\\prparser.y" 1697 1.1 christos { (yyval.value) = DtDoOperator ((yyvsp[(1) - (3)].value), EXPOP_GREATER_EQUAL, (yyvsp[(3) - (3)].value));;} 1698 1.1 christos break; 1699 1.1 christos 1700 1.1 christos case 16: 1701 1.1 christos 1702 1.1 christos /* Line 1455 of yacc.c */ 1703 1.1 christos #line 267 "C:\\Users\\sdumbre\\testclone\\source\\compiler\\prparser.y" 1704 1.1 christos { (yyval.value) = DtDoOperator ((yyvsp[(1) - (3)].value), EXPOP_LESS_EQUAL, (yyvsp[(3) - (3)].value));;} 1705 1.1 christos break; 1706 1.1 christos 1707 1.1 christos case 17: 1708 1.1 christos 1709 1.1 christos /* Line 1455 of yacc.c */ 1710 1.1 christos #line 268 "C:\\Users\\sdumbre\\testclone\\source\\compiler\\prparser.y" 1711 1.1 christos { (yyval.value) = DtDoOperator ((yyvsp[(1) - (3)].value), EXPOP_EQUAL, (yyvsp[(3) - (3)].value));;} 1712 1.1 christos break; 1713 1.1 christos 1714 1.1 christos case 18: 1715 1.1 christos 1716 1.1 christos /* Line 1455 of yacc.c */ 1717 1.1 christos #line 269 "C:\\Users\\sdumbre\\testclone\\source\\compiler\\prparser.y" 1718 1.1 christos { (yyval.value) = DtDoOperator ((yyvsp[(1) - (3)].value), EXPOP_NOT_EQUAL, (yyvsp[(3) - (3)].value));;} 1719 1.1 christos break; 1720 1.1 christos 1721 1.1 christos case 19: 1722 1.1 christos 1723 1.1 christos /* Line 1455 of yacc.c */ 1724 1.1 christos #line 270 "C:\\Users\\sdumbre\\testclone\\source\\compiler\\prparser.y" 1725 1.1 christos { (yyval.value) = DtDoOperator ((yyvsp[(1) - (3)].value), EXPOP_AND, (yyvsp[(3) - (3)].value));;} 1726 1.1 christos break; 1727 1.1 christos 1728 1.1 christos case 20: 1729 1.1 christos 1730 1.1 christos /* Line 1455 of yacc.c */ 1731 1.1 christos #line 271 "C:\\Users\\sdumbre\\testclone\\source\\compiler\\prparser.y" 1732 1.1 christos { (yyval.value) = DtDoOperator ((yyvsp[(1) - (3)].value), EXPOP_XOR, (yyvsp[(3) - (3)].value));;} 1733 1.1 christos break; 1734 1.1 christos 1735 1.1 christos case 21: 1736 1.1 christos 1737 1.1 christos /* Line 1455 of yacc.c */ 1738 1.1 christos #line 272 "C:\\Users\\sdumbre\\testclone\\source\\compiler\\prparser.y" 1739 1.1 christos { (yyval.value) = DtDoOperator ((yyvsp[(1) - (3)].value), EXPOP_OR, (yyvsp[(3) - (3)].value));;} 1740 1.1 christos break; 1741 1.1 christos 1742 1.1 christos case 22: 1743 1.1 christos 1744 1.1 christos /* Line 1455 of yacc.c */ 1745 1.1 christos #line 273 "C:\\Users\\sdumbre\\testclone\\source\\compiler\\prparser.y" 1746 1.1 christos { (yyval.value) = DtDoOperator ((yyvsp[(1) - (3)].value), EXPOP_LOGICAL_AND, (yyvsp[(3) - (3)].value));;} 1747 1.1 christos break; 1748 1.1 christos 1749 1.1 christos case 23: 1750 1.1 christos 1751 1.1 christos /* Line 1455 of yacc.c */ 1752 1.1 christos #line 274 "C:\\Users\\sdumbre\\testclone\\source\\compiler\\prparser.y" 1753 1.1 christos { (yyval.value) = DtDoOperator ((yyvsp[(1) - (3)].value), EXPOP_LOGICAL_OR, (yyvsp[(3) - (3)].value));;} 1754 1.1 christos break; 1755 1.1 christos 1756 1.1 christos case 24: 1757 1.1 christos 1758 1.1 christos /* Line 1455 of yacc.c */ 1759 1.1 christos #line 279 "C:\\Users\\sdumbre\\testclone\\source\\compiler\\prparser.y" 1760 1.1 christos { (yyval.value) = (yyvsp[(2) - (3)].value);;} 1761 1.1 christos break; 1762 1.1 christos 1763 1.1 christos case 25: 1764 1.1 christos 1765 1.1 christos /* Line 1455 of yacc.c */ 1766 1.1 christos #line 284 "C:\\Users\\sdumbre\\testclone\\source\\compiler\\prparser.y" 1767 1.1 christos { (yyval.value) = PrIsDefined (PrParserlval.str);;} 1768 1.1 christos break; 1769 1.1 christos 1770 1.1 christos case 26: 1771 1.1 christos 1772 1.1 christos /* Line 1455 of yacc.c */ 1773 1.1 christos #line 286 "C:\\Users\\sdumbre\\testclone\\source\\compiler\\prparser.y" 1774 1.1 christos { (yyval.value) = PrIsDefined (PrParserlval.str);;} 1775 1.1 christos break; 1776 1.1 christos 1777 1.1 christos case 27: 1778 1.1 christos 1779 1.1 christos /* Line 1455 of yacc.c */ 1780 1.1 christos #line 288 "C:\\Users\\sdumbre\\testclone\\source\\compiler\\prparser.y" 1781 1.1 christos { (yyval.value) = PrResolveDefine (PrParserlval.str);;} 1782 1.1 christos break; 1783 1.1 christos 1784 1.1 christos case 28: 1785 1.1 christos 1786 1.1 christos /* Line 1455 of yacc.c */ 1787 1.1 christos #line 292 "C:\\Users\\sdumbre\\testclone\\source\\compiler\\prparser.y" 1788 1.1 christos { AcpiUtStrtoul64 (PrParsertext, &(yyval.value));;} 1789 1.1 christos break; 1790 1.1 christos 1791 1.1 christos case 29: 1792 1.1 christos 1793 1.1 christos /* Line 1455 of yacc.c */ 1794 1.1 christos #line 296 "C:\\Users\\sdumbre\\testclone\\source\\compiler\\prparser.y" 1795 1.1 christos { AcpiUtStrtoul64 (PrParsertext, &(yyval.value));;} 1796 1.1 christos break; 1797 1.1 christos 1798 1.1 christos 1799 1.1 christos 1800 1.1 christos /* Line 1455 of yacc.c */ 1801 1.1 christos #line 1800 "prparser.tab.c" 1802 1.1 christos default: break; 1803 1.1 christos } 1804 1.1 christos YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc); 1805 1.1 christos 1806 1.1 christos YYPOPSTACK (yylen); 1807 1.1 christos yylen = 0; 1808 1.1 christos YY_STACK_PRINT (yyss, yyssp); 1809 1.1 christos 1810 1.1 christos *++yyvsp = yyval; 1811 1.1 christos 1812 1.1 christos /* Now `shift' the result of the reduction. Determine what state 1813 1.1 christos that goes to, based on the state we popped back to and the rule 1814 1.1 christos number reduced by. */ 1815 1.1 christos 1816 1.1 christos yyn = yyr1[yyn]; 1817 1.1 christos 1818 1.1 christos yystate = yypgoto[yyn - YYNTOKENS] + *yyssp; 1819 1.1 christos if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp) 1820 1.1 christos yystate = yytable[yystate]; 1821 1.1 christos else 1822 1.1 christos yystate = yydefgoto[yyn - YYNTOKENS]; 1823 1.1 christos 1824 1.1 christos goto yynewstate; 1825 1.1 christos 1826 1.1 christos 1827 1.1 christos /*------------------------------------. 1828 1.1 christos | yyerrlab -- here on detecting error | 1829 1.1 christos `------------------------------------*/ 1830 1.1 christos yyerrlab: 1831 1.1 christos /* If not already recovering from an error, report this error. */ 1832 1.1 christos if (!yyerrstatus) 1833 1.1 christos { 1834 1.1 christos ++yynerrs; 1835 1.1 christos #if ! YYERROR_VERBOSE 1836 1.1 christos yyerror (YY_("syntax error")); 1837 1.1 christos #else 1838 1.1 christos { 1839 1.1 christos YYSIZE_T yysize = yysyntax_error (0, yystate, yychar); 1840 1.1 christos if (yymsg_alloc < yysize && yymsg_alloc < YYSTACK_ALLOC_MAXIMUM) 1841 1.1 christos { 1842 1.1 christos YYSIZE_T yyalloc = 2 * yysize; 1843 1.1 christos if (! (yysize <= yyalloc && yyalloc <= YYSTACK_ALLOC_MAXIMUM)) 1844 1.1 christos yyalloc = YYSTACK_ALLOC_MAXIMUM; 1845 1.1 christos if (yymsg != yymsgbuf) 1846 1.1 christos YYSTACK_FREE (yymsg); 1847 1.1 christos yymsg = (char *) YYSTACK_ALLOC (yyalloc); 1848 1.1 christos if (yymsg) 1849 1.1 christos yymsg_alloc = yyalloc; 1850 1.1 christos else 1851 1.1 christos { 1852 1.1 christos yymsg = yymsgbuf; 1853 1.1 christos yymsg_alloc = sizeof yymsgbuf; 1854 1.1 christos } 1855 1.1 christos } 1856 1.1 christos 1857 1.1 christos if (0 < yysize && yysize <= yymsg_alloc) 1858 1.1 christos { 1859 1.1 christos (void) yysyntax_error (yymsg, yystate, yychar); 1860 1.1 christos yyerror (yymsg); 1861 1.1 christos } 1862 1.1 christos else 1863 1.1 christos { 1864 1.1 christos yyerror (YY_("syntax error")); 1865 1.1 christos if (yysize != 0) 1866 1.1 christos goto yyexhaustedlab; 1867 1.1 christos } 1868 1.1 christos } 1869 1.1 christos #endif 1870 1.1 christos } 1871 1.1 christos 1872 1.1 christos 1873 1.1 christos 1874 1.1 christos if (yyerrstatus == 3) 1875 1.1 christos { 1876 1.1 christos /* If just tried and failed to reuse lookahead token after an 1877 1.1 christos error, discard it. */ 1878 1.1 christos 1879 1.1 christos if (yychar <= YYEOF) 1880 1.1 christos { 1881 1.1 christos /* Return failure if at end of input. */ 1882 1.1 christos if (yychar == YYEOF) 1883 1.1 christos YYABORT; 1884 1.1 christos } 1885 1.1 christos else 1886 1.1 christos { 1887 1.1 christos yydestruct ("Error: discarding", 1888 1.1 christos yytoken, &yylval); 1889 1.1 christos yychar = YYEMPTY; 1890 1.1 christos } 1891 1.1 christos } 1892 1.1 christos 1893 1.1 christos /* Else will try to reuse lookahead token after shifting the error 1894 1.1 christos token. */ 1895 1.1 christos goto yyerrlab1; 1896 1.1 christos 1897 1.1 christos 1898 1.1 christos /*---------------------------------------------------. 1899 1.1 christos | yyerrorlab -- error raised explicitly by YYERROR. | 1900 1.1 christos `---------------------------------------------------*/ 1901 1.1 christos yyerrorlab: 1902 1.1 christos 1903 1.1 christos /* Pacify compilers like GCC when the user code never invokes 1904 1.1 christos YYERROR and the label yyerrorlab therefore never appears in user 1905 1.1 christos code. */ 1906 1.1 christos if (/*CONSTCOND*/ 0) 1907 1.1 christos goto yyerrorlab; 1908 1.1 christos 1909 1.1 christos /* Do not reclaim the symbols of the rule which action triggered 1910 1.1 christos this YYERROR. */ 1911 1.1 christos YYPOPSTACK (yylen); 1912 1.1 christos yylen = 0; 1913 1.1 christos YY_STACK_PRINT (yyss, yyssp); 1914 1.1 christos yystate = *yyssp; 1915 1.1 christos goto yyerrlab1; 1916 1.1 christos 1917 1.1 christos 1918 1.1 christos /*-------------------------------------------------------------. 1919 1.1 christos | yyerrlab1 -- common code for both syntax error and YYERROR. | 1920 1.1 christos `-------------------------------------------------------------*/ 1921 1.1 christos yyerrlab1: 1922 1.1 christos yyerrstatus = 3; /* Each real token shifted decrements this. */ 1923 1.1 christos 1924 1.1 christos for (;;) 1925 1.1 christos { 1926 1.1 christos yyn = yypact[yystate]; 1927 1.1 christos if (yyn != YYPACT_NINF) 1928 1.1 christos { 1929 1.1 christos yyn += YYTERROR; 1930 1.1 christos if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR) 1931 1.1 christos { 1932 1.1 christos yyn = yytable[yyn]; 1933 1.1 christos if (0 < yyn) 1934 1.1 christos break; 1935 1.1 christos } 1936 1.1 christos } 1937 1.1 christos 1938 1.1 christos /* Pop the current state because it cannot handle the error token. */ 1939 1.1 christos if (yyssp == yyss) 1940 1.1 christos YYABORT; 1941 1.1 christos 1942 1.1 christos 1943 1.1 christos yydestruct ("Error: popping", 1944 1.1 christos yystos[yystate], yyvsp); 1945 1.1 christos YYPOPSTACK (1); 1946 1.1 christos yystate = *yyssp; 1947 1.1 christos YY_STACK_PRINT (yyss, yyssp); 1948 1.1 christos } 1949 1.1 christos 1950 1.1 christos *++yyvsp = yylval; 1951 1.1 christos 1952 1.1 christos 1953 1.1 christos /* Shift the error token. */ 1954 1.1 christos YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp); 1955 1.1 christos 1956 1.1 christos yystate = yyn; 1957 1.1 christos goto yynewstate; 1958 1.1 christos 1959 1.1 christos 1960 1.1 christos /*-------------------------------------. 1961 1.1 christos | yyacceptlab -- YYACCEPT comes here. | 1962 1.1 christos `-------------------------------------*/ 1963 1.1 christos yyacceptlab: 1964 1.1 christos yyresult = 0; 1965 1.1 christos goto yyreturn; 1966 1.1 christos 1967 1.1 christos /*-----------------------------------. 1968 1.1 christos | yyabortlab -- YYABORT comes here. | 1969 1.1 christos `-----------------------------------*/ 1970 1.1 christos yyabortlab: 1971 1.1 christos yyresult = 1; 1972 1.1 christos goto yyreturn; 1973 1.1 christos 1974 1.1 christos #if !defined(yyoverflow) || YYERROR_VERBOSE 1975 1.1 christos /*-------------------------------------------------. 1976 1.1 christos | yyexhaustedlab -- memory exhaustion comes here. | 1977 1.1 christos `-------------------------------------------------*/ 1978 1.1 christos yyexhaustedlab: 1979 1.1 christos yyerror (YY_("memory exhausted")); 1980 1.1 christos yyresult = 2; 1981 1.1 christos /* Fall through. */ 1982 1.1 christos #endif 1983 1.1 christos 1984 1.1 christos yyreturn: 1985 1.1 christos if (yychar != YYEMPTY) 1986 1.1 christos yydestruct ("Cleanup: discarding lookahead", 1987 1.1 christos yytoken, &yylval); 1988 1.1 christos /* Do not reclaim the symbols of the rule which action triggered 1989 1.1 christos this YYABORT or YYACCEPT. */ 1990 1.1 christos YYPOPSTACK (yylen); 1991 1.1 christos YY_STACK_PRINT (yyss, yyssp); 1992 1.1 christos while (yyssp != yyss) 1993 1.1 christos { 1994 1.1 christos yydestruct ("Cleanup: popping", 1995 1.1 christos yystos[*yyssp], yyvsp); 1996 1.1 christos YYPOPSTACK (1); 1997 1.1 christos } 1998 1.1 christos #ifndef yyoverflow 1999 1.1 christos if (yyss != yyssa) 2000 1.1 christos YYSTACK_FREE (yyss); 2001 1.1 christos #endif 2002 1.1 christos #if YYERROR_VERBOSE 2003 1.1 christos if (yymsg != yymsgbuf) 2004 1.1 christos YYSTACK_FREE (yymsg); 2005 1.1 christos #endif 2006 1.1 christos /* Make sure YYID is used. */ 2007 1.1 christos return YYID (yyresult); 2008 1.1 christos } 2009 1.1 christos 2010 1.1 christos 2011 1.1 christos 2012 1.1 christos /* Line 1675 of yacc.c */ 2013 1.1 christos #line 298 "C:\\Users\\sdumbre\\testclone\\source\\compiler\\prparser.y" 2014 1.1 christos 2015 1.1 christos 2016 1.1 christos /* 2017 1.1 christos * Local support functions, including parser entry point 2018 1.1 christos */ 2019 1.1 christos #define PR_FIRST_PARSE_OPCODE EXPOP_EOF 2020 1.1 christos #define PR_YYTNAME_START 3 2021 1.1 christos 2022 1.1 christos 2023 1.1 christos /****************************************************************************** 2024 1.1 christos * 2025 1.1 christos * FUNCTION: PrParsererror 2026 1.1 christos * 2027 1.1 christos * PARAMETERS: Message - Parser-generated error message 2028 1.1 christos * 2029 1.1 christos * RETURN: None 2030 1.1 christos * 2031 1.1 christos * DESCRIPTION: Handler for parser errors 2032 1.1 christos * 2033 1.1 christos *****************************************************************************/ 2034 1.1 christos 2035 1.1 christos void 2036 1.1 christos PrParsererror ( 2037 1.1 christos char const *Message) 2038 1.1 christos { 2039 1.1 christos 2040 1.1 christos sprintf (AslGbl_StringBuffer, "Preprocessor Parser : %s (near line %u)", 2041 1.1 christos Message, AslGbl_CurrentLineNumber); 2042 1.1 christos DtError (ASL_ERROR, ASL_MSG_SYNTAX, 2043 1.1 christos NULL, (char *) AslGbl_StringBuffer); 2044 1.1 christos } 2045 1.1 christos 2046 1.1 christos 2047 1.1 christos /****************************************************************************** 2048 1.1 christos * 2049 1.1 christos * FUNCTION: PrGetOpName 2050 1.1 christos * 2051 1.1 christos * PARAMETERS: ParseOpcode - Parser token (EXPOP_*) 2052 1.1 christos * 2053 1.1 christos * RETURN: Pointer to the opcode name 2054 1.1 christos * 2055 1.1 christos * DESCRIPTION: Get the ascii name of the parse opcode for debug output 2056 1.1 christos * 2057 1.1 christos *****************************************************************************/ 2058 1.1 christos 2059 1.1 christos char * 2060 1.1 christos PrGetOpName ( 2061 1.1 christos UINT32 ParseOpcode) 2062 1.1 christos { 2063 1.1 christos #ifdef ASL_YYTNAME_START 2064 1.1 christos /* 2065 1.1 christos * First entries (PR_YYTNAME_START) in yytname are special reserved names. 2066 1.1 christos * Ignore first 6 characters of name (EXPOP_) 2067 1.1 christos */ 2068 1.1 christos return ((char *) yytname 2069 1.1 christos [(ParseOpcode - PR_FIRST_PARSE_OPCODE) + PR_YYTNAME_START] + 6); 2070 1.1 christos #else 2071 1.1 christos return ("[Unknown parser generator]"); 2072 1.1 christos #endif 2073 1.1 christos } 2074 1.1 christos 2075 1.1 christos 2076 1.1 christos /****************************************************************************** 2077 1.1 christos * 2078 1.1 christos * FUNCTION: PrEvaluateExpression 2079 1.1 christos * 2080 1.1 christos * PARAMETERS: ExprString - Expression to be evaluated. Must be 2081 1.1 christos * terminated by either a newline or a NUL 2082 1.1 christos * string terminator 2083 1.1 christos * 2084 1.1 christos * RETURN: 64-bit value for the expression 2085 1.1 christos * 2086 1.1 christos * DESCRIPTION: Main entry point for the DT expression parser 2087 1.1 christos * 2088 1.1 christos *****************************************************************************/ 2089 1.1 christos 2090 1.1 christos UINT64 2091 1.1 christos PrEvaluateExpression ( 2092 1.1 christos char *ExprString) 2093 1.1 christos { 2094 1.1 christos 2095 1.1 christos DbgPrint (ASL_DEBUG_OUTPUT, 2096 1.1 christos "**** Input expression: %s\n", ExprString); 2097 1.1 christos 2098 1.1 christos /* Point lexer to the input string */ 2099 1.1 christos 2100 1.1 christos if (PrInitLexer (ExprString)) 2101 1.1 christos { 2102 1.1 christos DtError (ASL_ERROR, ASL_MSG_COMPILER_INTERNAL, 2103 1.1 christos NULL, "Could not initialize lexer"); 2104 1.1 christos return (0); 2105 1.1 christos } 2106 1.1 christos 2107 1.1 christos /* Parse/Evaluate the input string (value returned in PrParserResult) */ 2108 1.1 christos 2109 1.1 christos PrParserparse (); 2110 1.1 christos PrTerminateLexer (); 2111 1.1 christos 2112 1.1 christos DbgPrint (ASL_DEBUG_OUTPUT, 2113 1.1 christos "**** Parser returned value: %u (%8.8X%8.8X)\n", 2114 1.1 christos (UINT32) PrParserResult, ACPI_FORMAT_UINT64 (PrParserResult)); 2115 1.1 christos 2116 1.1 christos return (PrParserResult); 2117 } 2118 2119