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