GDB (API)
/home/stan/gdb/linux/gdb/c-exp.c
Go to the documentation of this file.
00001 /* A Bison parser, made by GNU Bison 2.5.  */
00002 
00003 /* Bison implementation for Yacc-like parsers in C
00004    
00005       Copyright (C) 1984, 1989-1990, 2000-2011 Free Software Foundation, Inc.
00006    
00007    This program is free software: you can redistribute it and/or modify
00008    it under the terms of the GNU General Public License as published by
00009    the Free Software Foundation, either version 3 of the License, or
00010    (at your option) any later version.
00011    
00012    This program is distributed in the hope that it will be useful,
00013    but WITHOUT ANY WARRANTY; without even the implied warranty of
00014    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00015    GNU General Public License for more details.
00016    
00017    You should have received a copy of the GNU General Public License
00018    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
00019 
00020 /* As a special exception, you may create a larger work that contains
00021    part or all of the Bison parser skeleton and distribute that work
00022    under terms of your choice, so long as that work isn't itself a
00023    parser generator using the skeleton or a modified version thereof
00024    as a parser skeleton.  Alternatively, if you modify or redistribute
00025    the parser skeleton itself, you may (at your option) remove this
00026    special exception, which will cause the skeleton and the resulting
00027    Bison output files to be licensed under the GNU General Public
00028    License without this special exception.
00029    
00030    This special exception was added by the Free Software Foundation in
00031    version 2.2 of Bison.  */
00032 
00033 /* C LALR(1) parser skeleton written by Richard Stallman, by
00034    simplifying the original so-called "semantic" parser.  */
00035 
00036 /* All symbols defined below should begin with yy or YY, to avoid
00037    infringing on user name space.  This should be done even for local
00038    variables, as they might otherwise be expanded by user macros.
00039    There are some unavoidable exceptions within include files to
00040    define necessary library symbols; they are noted "INFRINGES ON
00041    USER NAME SPACE" below.  */
00042 
00043 /* Identify Bison output.  */
00044 #define YYBISON 1
00045 
00046 /* Bison version.  */
00047 #define YYBISON_VERSION "2.5"
00048 
00049 /* Skeleton name.  */
00050 #define YYSKELETON_NAME "yacc.c"
00051 
00052 /* Pure parsers.  */
00053 #define YYPURE 0
00054 
00055 /* Push parsers.  */
00056 #define YYPUSH 0
00057 
00058 /* Pull parsers.  */
00059 #define YYPULL 1
00060 
00061 /* Using locations.  */
00062 #define YYLSP_NEEDED 0
00063 
00064 
00065 
00066 /* Copy the first part of user declarations.  */
00067 
00068 /* Line 268 of yacc.c  */
00069 #line 36 "../../src/gdb/c-exp.y"
00070 
00071 
00072 #include "defs.h"
00073 #include "gdb_string.h"
00074 #include <ctype.h>
00075 #include "expression.h"
00076 #include "value.h"
00077 #include "parser-defs.h"
00078 #include "language.h"
00079 #include "c-lang.h"
00080 #include "bfd.h" /* Required by objfiles.h.  */
00081 #include "symfile.h" /* Required by objfiles.h.  */
00082 #include "objfiles.h" /* For have_full_symbols and have_partial_symbols */
00083 #include "charset.h"
00084 #include "block.h"
00085 #include "cp-support.h"
00086 #include "dfp.h"
00087 #include "gdb_assert.h"
00088 #include "macroscope.h"
00089 #include "objc-lang.h"
00090 #include "typeprint.h"
00091 #include "cp-abi.h"
00092 
00093 #define parse_type builtin_type (parse_gdbarch)
00094 
00095 /* Remap normal yacc parser interface names (yyparse, yylex, yyerror, etc),
00096    as well as gratuitiously global symbol names, so we can have multiple
00097    yacc generated parsers in gdb.  Note that these are only the variables
00098    produced by yacc.  If other parser generators (bison, byacc, etc) produce
00099    additional global names that conflict at link time, then those parser
00100    generators need to be fixed instead of adding those names to this list. */
00101 
00102 #define yymaxdepth c_maxdepth
00103 #define yyparse c_parse_internal
00104 #define yylex   c_lex
00105 #define yyerror c_error
00106 #define yylval  c_lval
00107 #define yychar  c_char
00108 #define yydebug c_debug
00109 #define yypact  c_pact  
00110 #define yyr1    c_r1                    
00111 #define yyr2    c_r2                    
00112 #define yydef   c_def           
00113 #define yychk   c_chk           
00114 #define yypgo   c_pgo           
00115 #define yyact   c_act           
00116 #define yyexca  c_exca
00117 #define yyerrflag c_errflag
00118 #define yynerrs c_nerrs
00119 #define yyps    c_ps
00120 #define yypv    c_pv
00121 #define yys     c_s
00122 #define yy_yys  c_yys
00123 #define yystate c_state
00124 #define yytmp   c_tmp
00125 #define yyv     c_v
00126 #define yy_yyv  c_yyv
00127 #define yyval   c_val
00128 #define yylloc  c_lloc
00129 #define yyreds  c_reds          /* With YYDEBUG defined */
00130 #define yytoks  c_toks          /* With YYDEBUG defined */
00131 #define yyname  c_name          /* With YYDEBUG defined */
00132 #define yyrule  c_rule          /* With YYDEBUG defined */
00133 #define yylhs   c_yylhs
00134 #define yylen   c_yylen
00135 #define yydefred c_yydefred
00136 #define yydgoto c_yydgoto
00137 #define yysindex c_yysindex
00138 #define yyrindex c_yyrindex
00139 #define yygindex c_yygindex
00140 #define yytable  c_yytable
00141 #define yycheck  c_yycheck
00142 #define yyss    c_yyss
00143 #define yysslim c_yysslim
00144 #define yyssp   c_yyssp
00145 #define yystacksize c_yystacksize
00146 #define yyvs    c_yyvs
00147 #define yyvsp   c_yyvsp
00148 
00149 #ifndef YYDEBUG
00150 #define YYDEBUG 1               /* Default to yydebug support */
00151 #endif
00152 
00153 #define YYFPRINTF parser_fprintf
00154 
00155 int yyparse (void);
00156 
00157 static int yylex (void);
00158 
00159 void yyerror (char *);
00160 
00161 
00162 
00163 /* Line 268 of yacc.c  */
00164 #line 165 "c-exp.c"
00165 
00166 /* Enabling traces.  */
00167 #ifndef YYDEBUG
00168 # define YYDEBUG 0
00169 #endif
00170 
00171 /* Enabling verbose error messages.  */
00172 #ifdef YYERROR_VERBOSE
00173 # undef YYERROR_VERBOSE
00174 # define YYERROR_VERBOSE 1
00175 #else
00176 # define YYERROR_VERBOSE 0
00177 #endif
00178 
00179 /* Enabling the token table.  */
00180 #ifndef YYTOKEN_TABLE
00181 # define YYTOKEN_TABLE 0
00182 #endif
00183 
00184 
00185 /* Tokens.  */
00186 #ifndef YYTOKENTYPE
00187 # define YYTOKENTYPE
00188    /* Put the tokens into the symbol table, so that GDB and other debuggers
00189       know about them.  */
00190    enum yytokentype {
00191      INT = 258,
00192      FLOAT = 259,
00193      DECFLOAT = 260,
00194      STRING = 261,
00195      NSSTRING = 262,
00196      SELECTOR = 263,
00197      CHAR = 264,
00198      NAME = 265,
00199      UNKNOWN_CPP_NAME = 266,
00200      COMPLETE = 267,
00201      TYPENAME = 268,
00202      CLASSNAME = 269,
00203      OBJC_LBRAC = 270,
00204      NAME_OR_INT = 271,
00205      OPERATOR = 272,
00206      STRUCT = 273,
00207      CLASS = 274,
00208      UNION = 275,
00209      ENUM = 276,
00210      SIZEOF = 277,
00211      UNSIGNED = 278,
00212      COLONCOLON = 279,
00213      TEMPLATE = 280,
00214      ERROR = 281,
00215      NEW = 282,
00216      DELETE = 283,
00217      REINTERPRET_CAST = 284,
00218      DYNAMIC_CAST = 285,
00219      STATIC_CAST = 286,
00220      CONST_CAST = 287,
00221      ENTRY = 288,
00222      TYPEOF = 289,
00223      DECLTYPE = 290,
00224      TYPEID = 291,
00225      SIGNED_KEYWORD = 292,
00226      LONG = 293,
00227      SHORT = 294,
00228      INT_KEYWORD = 295,
00229      CONST_KEYWORD = 296,
00230      VOLATILE_KEYWORD = 297,
00231      DOUBLE_KEYWORD = 298,
00232      VARIABLE = 299,
00233      ASSIGN_MODIFY = 300,
00234      TRUEKEYWORD = 301,
00235      FALSEKEYWORD = 302,
00236      ABOVE_COMMA = 303,
00237      OROR = 304,
00238      ANDAND = 305,
00239      NOTEQUAL = 306,
00240      EQUAL = 307,
00241      GEQ = 308,
00242      LEQ = 309,
00243      RSH = 310,
00244      LSH = 311,
00245      DECREMENT = 312,
00246      INCREMENT = 313,
00247      UNARY = 314,
00248      DOT_STAR = 315,
00249      ARROW_STAR = 316,
00250      ARROW = 317,
00251      BLOCKNAME = 318,
00252      FILENAME = 319,
00253      DOTDOTDOT = 320
00254    };
00255 #endif
00256 /* Tokens.  */
00257 #define INT 258
00258 #define FLOAT 259
00259 #define DECFLOAT 260
00260 #define STRING 261
00261 #define NSSTRING 262
00262 #define SELECTOR 263
00263 #define CHAR 264
00264 #define NAME 265
00265 #define UNKNOWN_CPP_NAME 266
00266 #define COMPLETE 267
00267 #define TYPENAME 268
00268 #define CLASSNAME 269
00269 #define OBJC_LBRAC 270
00270 #define NAME_OR_INT 271
00271 #define OPERATOR 272
00272 #define STRUCT 273
00273 #define CLASS 274
00274 #define UNION 275
00275 #define ENUM 276
00276 #define SIZEOF 277
00277 #define UNSIGNED 278
00278 #define COLONCOLON 279
00279 #define TEMPLATE 280
00280 #define ERROR 281
00281 #define NEW 282
00282 #define DELETE 283
00283 #define REINTERPRET_CAST 284
00284 #define DYNAMIC_CAST 285
00285 #define STATIC_CAST 286
00286 #define CONST_CAST 287
00287 #define ENTRY 288
00288 #define TYPEOF 289
00289 #define DECLTYPE 290
00290 #define TYPEID 291
00291 #define SIGNED_KEYWORD 292
00292 #define LONG 293
00293 #define SHORT 294
00294 #define INT_KEYWORD 295
00295 #define CONST_KEYWORD 296
00296 #define VOLATILE_KEYWORD 297
00297 #define DOUBLE_KEYWORD 298
00298 #define VARIABLE 299
00299 #define ASSIGN_MODIFY 300
00300 #define TRUEKEYWORD 301
00301 #define FALSEKEYWORD 302
00302 #define ABOVE_COMMA 303
00303 #define OROR 304
00304 #define ANDAND 305
00305 #define NOTEQUAL 306
00306 #define EQUAL 307
00307 #define GEQ 308
00308 #define LEQ 309
00309 #define RSH 310
00310 #define LSH 311
00311 #define DECREMENT 312
00312 #define INCREMENT 313
00313 #define UNARY 314
00314 #define DOT_STAR 315
00315 #define ARROW_STAR 316
00316 #define ARROW 317
00317 #define BLOCKNAME 318
00318 #define FILENAME 319
00319 #define DOTDOTDOT 320
00320 
00321 
00322 
00323 
00324 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
00325 typedef union YYSTYPE
00326 {
00327 
00328 /* Line 293 of yacc.c  */
00329 #line 134 "../../src/gdb/c-exp.y"
00330 
00331     LONGEST lval;
00332     struct {
00333       LONGEST val;
00334       struct type *type;
00335     } typed_val_int;
00336     struct {
00337       DOUBLEST dval;
00338       struct type *type;
00339     } typed_val_float;
00340     struct {
00341       gdb_byte val[16];
00342       struct type *type;
00343     } typed_val_decfloat;
00344     struct type *tval;
00345     struct stoken sval;
00346     struct typed_stoken tsval;
00347     struct ttype tsym;
00348     struct symtoken ssym;
00349     int voidval;
00350     struct block *bval;
00351     enum exp_opcode opcode;
00352 
00353     struct stoken_vector svec;
00354     VEC (type_ptr) *tvec;
00355 
00356     struct type_stack *type_stack;
00357 
00358     struct objc_class_str class;
00359   
00360 
00361 
00362 /* Line 293 of yacc.c  */
00363 #line 364 "c-exp.c"
00364 } YYSTYPE;
00365 # define YYSTYPE_IS_TRIVIAL 1
00366 # define yystype YYSTYPE /* obsolescent; will be withdrawn */
00367 # define YYSTYPE_IS_DECLARED 1
00368 #endif
00369 
00370 
00371 /* Copy the second part of user declarations.  */
00372 
00373 /* Line 343 of yacc.c  */
00374 #line 165 "../../src/gdb/c-exp.y"
00375 
00376 /* YYSTYPE gets defined by %union */
00377 static int parse_number (const char *, int, int, YYSTYPE *);
00378 static struct stoken operator_stoken (const char *);
00379 static void check_parameter_typelist (VEC (type_ptr) *);
00380 static void write_destructor_name (struct stoken);
00381 
00382 static void c_print_token (FILE *file, int type, YYSTYPE value);
00383 #define YYPRINT(FILE, TYPE, VALUE) c_print_token (FILE, TYPE, VALUE)
00384 
00385 
00386 /* Line 343 of yacc.c  */
00387 #line 388 "c-exp.c"
00388 
00389 #ifdef short
00390 # undef short
00391 #endif
00392 
00393 #ifdef YYTYPE_UINT8
00394 typedef YYTYPE_UINT8 yytype_uint8;
00395 #else
00396 typedef unsigned char yytype_uint8;
00397 #endif
00398 
00399 #ifdef YYTYPE_INT8
00400 typedef YYTYPE_INT8 yytype_int8;
00401 #elif (defined __STDC__ || defined __C99__FUNC__ \
00402      || defined __cplusplus || defined _MSC_VER)
00403 typedef signed char yytype_int8;
00404 #else
00405 typedef short int yytype_int8;
00406 #endif
00407 
00408 #ifdef YYTYPE_UINT16
00409 typedef YYTYPE_UINT16 yytype_uint16;
00410 #else
00411 typedef unsigned short int yytype_uint16;
00412 #endif
00413 
00414 #ifdef YYTYPE_INT16
00415 typedef YYTYPE_INT16 yytype_int16;
00416 #else
00417 typedef short int yytype_int16;
00418 #endif
00419 
00420 #ifndef YYSIZE_T
00421 # ifdef __SIZE_TYPE__
00422 #  define YYSIZE_T __SIZE_TYPE__
00423 # elif defined size_t
00424 #  define YYSIZE_T size_t
00425 # elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \
00426      || defined __cplusplus || defined _MSC_VER)
00427 #  include <stddef.h> /* INFRINGES ON USER NAME SPACE */
00428 #  define YYSIZE_T size_t
00429 # else
00430 #  define YYSIZE_T unsigned int
00431 # endif
00432 #endif
00433 
00434 #define YYSIZE_MAXIMUM ((YYSIZE_T) -1)
00435 
00436 #ifndef YY_
00437 # if defined YYENABLE_NLS && YYENABLE_NLS
00438 #  if ENABLE_NLS
00439 #   include <libintl.h> /* INFRINGES ON USER NAME SPACE */
00440 #   define YY_(msgid) dgettext ("bison-runtime", msgid)
00441 #  endif
00442 # endif
00443 # ifndef YY_
00444 #  define YY_(msgid) msgid
00445 # endif
00446 #endif
00447 
00448 /* Suppress unused-variable warnings by "using" E.  */
00449 #if ! defined lint || defined __GNUC__
00450 # define YYUSE(e) ((void) (e))
00451 #else
00452 # define YYUSE(e) /* empty */
00453 #endif
00454 
00455 /* Identity function, used to suppress warnings about constant conditions.  */
00456 #ifndef lint
00457 # define YYID(n) (n)
00458 #else
00459 #if (defined __STDC__ || defined __C99__FUNC__ \
00460      || defined __cplusplus || defined _MSC_VER)
00461 static int
00462 YYID (int yyi)
00463 #else
00464 static int
00465 YYID (yyi)
00466     int yyi;
00467 #endif
00468 {
00469   return yyi;
00470 }
00471 #endif
00472 
00473 #if ! defined yyoverflow || YYERROR_VERBOSE
00474 
00475 /* The parser invokes alloca or xmalloc; define the necessary symbols.  */
00476 
00477 # ifdef YYSTACK_USE_ALLOCA
00478 #  if YYSTACK_USE_ALLOCA
00479 #   ifdef __GNUC__
00480 #    define YYSTACK_ALLOC __builtin_alloca
00481 #   elif defined __BUILTIN_VA_ARG_INCR
00482 #    include <alloca.h> /* INFRINGES ON USER NAME SPACE */
00483 #   elif defined _AIX
00484 #    define YYSTACK_ALLOC __alloca
00485 #   elif defined _MSC_VER
00486 #    define alloca _alloca
00487 #   else
00488 #    define YYSTACK_ALLOC alloca
00489 #    if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \
00490      || defined __cplusplus || defined _MSC_VER)
00491 #     include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
00492 #     ifndef EXIT_SUCCESS
00493 #      define EXIT_SUCCESS 0
00494 #     endif
00495 #    endif
00496 #   endif
00497 #  endif
00498 # endif
00499 
00500 # ifdef YYSTACK_ALLOC
00501    /* Pacify GCC's `empty if-body' warning.  */
00502 #  define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0))
00503 #  ifndef YYSTACK_ALLOC_MAXIMUM
00504     /* The OS might guarantee only one guard page at the bottom of the stack,
00505        and a page size can be as small as 4096 bytes.  So we cannot safely
00506        invoke alloca (N) if N exceeds 4096.  Use a slightly smaller number
00507        to allow for a few compiler-allocated temporary stack slots.  */
00508 #   define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */
00509 #  endif
00510 # else
00511 #  define YYSTACK_ALLOC YYMALLOC
00512 #  define YYSTACK_FREE YYFREE
00513 #  ifndef YYSTACK_ALLOC_MAXIMUM
00514 #   define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
00515 #  endif
00516 #  if (defined __cplusplus && ! defined EXIT_SUCCESS \
00517        && ! ((defined YYMALLOC || defined xmalloc) \
00518              && (defined YYFREE || defined xfree)))
00519 #   include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
00520 #   ifndef EXIT_SUCCESS
00521 #    define EXIT_SUCCESS 0
00522 #   endif
00523 #  endif
00524 #  ifndef YYMALLOC
00525 #   define YYMALLOC xmalloc
00526 #   if ! defined xmalloc && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \
00527      || defined __cplusplus || defined _MSC_VER)
00528 void *xmalloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
00529 #   endif
00530 #  endif
00531 #  ifndef YYFREE
00532 #   define YYFREE xfree
00533 #   if ! defined xfree && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \
00534      || defined __cplusplus || defined _MSC_VER)
00535 void xfree (void *); /* INFRINGES ON USER NAME SPACE */
00536 #   endif
00537 #  endif
00538 # endif
00539 #endif /* ! defined yyoverflow || YYERROR_VERBOSE */
00540 
00541 
00542 #if (! defined yyoverflow \
00543      && (! defined __cplusplus \
00544          || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
00545 
00546 /* A type that is properly aligned for any stack member.  */
00547 union yyalloc
00548 {
00549   yytype_int16 yyss_alloc;
00550   YYSTYPE yyvs_alloc;
00551 };
00552 
00553 /* The size of the maximum gap between one aligned stack and the next.  */
00554 # define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
00555 
00556 /* The size of an array large to enough to hold all stacks, each with
00557    N elements.  */
00558 # define YYSTACK_BYTES(N) \
00559      ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \
00560       + YYSTACK_GAP_MAXIMUM)
00561 
00562 # define YYCOPY_NEEDED 1
00563 
00564 /* Relocate STACK from its old location to the new one.  The
00565    local variables YYSIZE and YYSTACKSIZE give the old and new number of
00566    elements in the stack, and YYPTR gives the new location of the
00567    stack.  Advance YYPTR to a properly aligned location for the next
00568    stack.  */
00569 # define YYSTACK_RELOCATE(Stack_alloc, Stack)                           \
00570     do                                                                  \
00571       {                                                                 \
00572         YYSIZE_T yynewbytes;                                            \
00573         YYCOPY (&yyptr->Stack_alloc, Stack, yysize);                    \
00574         Stack = &yyptr->Stack_alloc;                                    \
00575         yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
00576         yyptr += yynewbytes / sizeof (*yyptr);                          \
00577       }                                                                 \
00578     while (YYID (0))
00579 
00580 #endif
00581 
00582 #if defined YYCOPY_NEEDED && YYCOPY_NEEDED
00583 /* Copy COUNT objects from FROM to TO.  The source and destination do
00584    not overlap.  */
00585 # ifndef YYCOPY
00586 #  if defined __GNUC__ && 1 < __GNUC__
00587 #   define YYCOPY(To, From, Count) \
00588       __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
00589 #  else
00590 #   define YYCOPY(To, From, Count)              \
00591       do                                        \
00592         {                                       \
00593           YYSIZE_T yyi;                         \
00594           for (yyi = 0; yyi < (Count); yyi++)   \
00595             (To)[yyi] = (From)[yyi];            \
00596         }                                       \
00597       while (YYID (0))
00598 #  endif
00599 # endif
00600 #endif /* !YYCOPY_NEEDED */
00601 
00602 /* YYFINAL -- State number of the termination state.  */
00603 #define YYFINAL  167
00604 /* YYLAST -- Last index in YYTABLE.  */
00605 #define YYLAST   1734
00606 
00607 /* YYNTOKENS -- Number of terminals.  */
00608 #define YYNTOKENS  90
00609 /* YYNNTS -- Number of nonterminals.  */
00610 #define YYNNTS  46
00611 /* YYNRULES -- Number of rules.  */
00612 #define YYNRULES  260
00613 /* YYNRULES -- Number of states.  */
00614 #define YYNSTATES  413
00615 
00616 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
00617 #define YYUNDEFTOK  2
00618 #define YYMAXUTOK   320
00619 
00620 #define YYTRANSLATE(YYX)                                                \
00621   ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
00622 
00623 /* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX.  */
00624 static const yytype_uint8 yytranslate[] =
00625 {
00626        0,     2,     2,     2,     2,     2,     2,     2,     2,     2,
00627        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
00628        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
00629        2,     2,     2,    84,     2,     2,     2,    70,    56,     2,
00630       76,    83,    68,    66,    48,    67,    74,    69,     2,     2,
00631        2,     2,     2,     2,     2,     2,     2,     2,    87,     2,
00632       59,    50,    60,    51,    65,     2,     2,     2,     2,     2,
00633        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
00634        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
00635        2,    75,     2,    86,    55,     2,     2,     2,     2,     2,
00636        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
00637        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
00638        2,     2,     2,    88,    54,    89,    85,     2,     2,     2,
00639        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
00640        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
00641        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
00642        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
00643        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
00644        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
00645        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
00646        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
00647        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
00648        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
00649        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
00650        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
00651        2,     2,     2,     2,     2,     2,     1,     2,     3,     4,
00652        5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
00653       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
00654       25,    26,    27,    28,    29,    30,    31,    32,    33,    34,
00655       35,    36,    37,    38,    39,    40,    41,    42,    43,    44,
00656       45,    46,    47,    49,    52,    53,    57,    58,    61,    62,
00657       63,    64,    71,    72,    73,    77,    78,    79,    80,    81,
00658       82
00659 };
00660 
00661 #if YYDEBUG
00662 /* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
00663    YYRHS.  */
00664 static const yytype_uint16 yyprhs[] =
00665 {
00666        0,     0,     3,     5,     7,     9,    14,    19,    24,    26,
00667       30,    33,    36,    39,    42,    45,    48,    51,    54,    57,
00668       60,    65,    70,    73,    77,    82,    86,    91,    97,   101,
00669      105,   109,   114,   118,   123,   129,   133,   137,   142,   147,
00670      148,   154,   155,   161,   162,   168,   170,   172,   174,   177,
00671      181,   184,   187,   188,   194,   195,   201,   203,   204,   206,
00672      210,   216,   218,   222,   227,   232,   236,   240,   244,   248,
00673      252,   256,   260,   264,   268,   272,   276,   280,   284,   288,
00674      292,   296,   300,   304,   308,   312,   318,   322,   326,   328,
00675      330,   332,   334,   336,   338,   340,   345,   350,   358,   366,
00676      374,   382,   384,   387,   389,   391,   393,   395,   397,   399,
00677      403,   406,   410,   414,   419,   425,   427,   430,   432,   435,
00678      437,   438,   442,   444,   446,   448,   449,   450,   455,   456,
00679      460,   462,   465,   467,   470,   472,   474,   478,   481,   483,
00680      486,   488,   491,   494,   498,   502,   505,   509,   511,   513,
00681      515,   517,   519,   522,   526,   529,   533,   537,   541,   544,
00682      547,   551,   556,   560,   564,   569,   573,   578,   582,   587,
00683      590,   594,   597,   601,   604,   608,   610,   613,   616,   619,
00684      623,   626,   629,   633,   636,   639,   643,   646,   649,   653,
00685      656,   658,   661,   663,   669,   672,   675,   677,   679,   681,
00686      683,   685,   689,   691,   695,   697,   700,   703,   704,   707,
00687      710,   713,   715,   717,   719,   722,   725,   730,   735,   740,
00688      745,   748,   751,   754,   757,   760,   763,   766,   769,   772,
00689      775,   778,   781,   784,   787,   790,   793,   796,   799,   802,
00690      805,   808,   811,   814,   817,   820,   823,   826,   830,   834,
00691      838,   841,   843,   845,   847,   849,   851,   853,   855,   857,
00692      859
00693 };
00694 
00695 /* YYRHS -- A `-1'-separated list of the rules' RHS.  */
00696 static const yytype_int16 yyrhs[] =
00697 {
00698       91,     0,    -1,    93,    -1,    92,    -1,   123,    -1,    34,
00699       76,    94,    83,    -1,    34,    76,   123,    83,    -1,    35,
00700       76,    94,    83,    -1,    94,    -1,    93,    48,    94,    -1,
00701       68,    94,    -1,    56,    94,    -1,    67,    94,    -1,    66,
00702       94,    -1,    84,    94,    -1,    85,    94,    -1,    72,    94,
00703       -1,    71,    94,    -1,    94,    72,    -1,    94,    71,    -1,
00704       36,    76,    94,    83,    -1,    36,    76,    92,    83,    -1,
00705       22,    94,    -1,    94,    79,   134,    -1,    94,    79,   134,
00706       12,    -1,    94,    79,    12,    -1,    94,    79,    85,   134,
00707       -1,    94,    79,    85,   134,    12,    -1,    94,    79,   109,
00708       -1,    94,    78,    94,    -1,    94,    74,   134,    -1,    94,
00709       74,   134,    12,    -1,    94,    74,    12,    -1,    94,    74,
00710       85,   134,    -1,    94,    74,    85,   134,    12,    -1,    94,
00711       74,   109,    -1,    94,    77,    94,    -1,    94,    75,    93,
00712       86,    -1,    94,    15,    93,    86,    -1,    -1,    15,    13,
00713       95,    98,    86,    -1,    -1,    15,    14,    96,    98,    86,
00714       -1,    -1,    15,    94,    97,    98,    86,    -1,   134,    -1,
00715       99,    -1,   100,    -1,    99,   100,    -1,   134,    87,    94,
00716       -1,    87,    94,    -1,    48,    94,    -1,    -1,    94,    76,
00717      101,   104,    83,    -1,    -1,    11,    76,   102,   104,    83,
00718       -1,    88,    -1,    -1,    94,    -1,   104,    48,    94,    -1,
00719       94,    76,   126,    83,   111,    -1,    89,    -1,   103,   104,
00720      105,    -1,   103,    92,   105,    94,    -1,    76,    92,    83,
00721       94,    -1,    76,    93,    83,    -1,    94,    65,    94,    -1,
00722       94,    68,    94,    -1,    94,    69,    94,    -1,    94,    70,
00723       94,    -1,    94,    66,    94,    -1,    94,    67,    94,    -1,
00724       94,    64,    94,    -1,    94,    63,    94,    -1,    94,    58,
00725       94,    -1,    94,    57,    94,    -1,    94,    62,    94,    -1,
00726       94,    61,    94,    -1,    94,    59,    94,    -1,    94,    60,
00727       94,    -1,    94,    56,    94,    -1,    94,    55,    94,    -1,
00728       94,    54,    94,    -1,    94,    53,    94,    -1,    94,    52,
00729       94,    -1,    94,    51,    94,    87,    94,    -1,    94,    50,
00730       94,    -1,    94,    45,    94,    -1,     3,    -1,     9,    -1,
00731       16,    -1,     4,    -1,     5,    -1,   108,    -1,    44,    -1,
00732        8,    76,   134,    83,    -1,    22,    76,   123,    83,    -1,
00733       29,    59,    92,    60,    76,    94,    83,    -1,    31,    59,
00734       92,    60,    76,    94,    83,    -1,    30,    59,    92,    60,
00735       76,    94,    83,    -1,    32,    59,    92,    60,    76,    94,
00736       83,    -1,     6,    -1,   106,     6,    -1,   106,    -1,     7,
00737       -1,    46,    -1,    47,    -1,    80,    -1,    81,    -1,   107,
00738       24,   134,    -1,   135,    33,    -1,   107,    24,   134,    -1,
00739       13,    24,   134,    -1,    13,    24,    85,   134,    -1,    13,
00740       24,   134,    24,   134,    -1,   109,    -1,    24,   135,    -1,
00741      135,    -1,    65,    10,    -1,   132,    -1,    -1,   111,   110,
00742      111,    -1,   112,    -1,   132,    -1,   113,    -1,    -1,    -1,
00743      115,    68,   116,   114,    -1,    -1,    68,   117,   114,    -1,
00744       56,    -1,    56,   115,    -1,   115,    -1,   118,   120,    -1,
00745      118,    -1,   120,    -1,    76,   119,    83,    -1,   120,   121,
00746       -1,   121,    -1,   120,   122,    -1,   122,    -1,    75,    86,
00747       -1,    15,    86,    -1,    75,     3,    86,    -1,    15,     3,
00748       86,    -1,    76,    83,    -1,    76,   126,    83,    -1,   128,
00749       -1,    13,    -1,    40,    -1,    38,    -1,    39,    -1,    38,
00750       40,    -1,    38,    37,    40,    -1,    38,    37,    -1,    37,
00751       38,    40,    -1,    23,    38,    40,    -1,    38,    23,    40,
00752       -1,    38,    23,    -1,    38,    38,    -1,    38,    38,    40,
00753       -1,    38,    38,    37,    40,    -1,    38,    38,    37,    -1,
00754       37,    38,    38,    -1,    37,    38,    38,    40,    -1,    23,
00755       38,    38,    -1,    23,    38,    38,    40,    -1,    38,    38,
00756       23,    -1,    38,    38,    23,    40,    -1,    39,    40,    -1,
00757       39,    37,    40,    -1,    39,    37,    -1,    23,    39,    40,
00758       -1,    39,    23,    -1,    39,    23,    40,    -1,    43,    -1,
00759       38,    43,    -1,    18,   134,    -1,    18,    12,    -1,    18,
00760      134,    12,    -1,    19,   134,    -1,    19,    12,    -1,    19,
00761      134,    12,    -1,    20,   134,    -1,    20,    12,    -1,    20,
00762      134,    12,    -1,    21,   134,    -1,    21,    12,    -1,    21,
00763      134,    12,    -1,    23,   125,    -1,    23,    -1,    37,   125,
00764       -1,    37,    -1,    25,   134,    59,   123,    60,    -1,   113,
00765      124,    -1,   124,   113,    -1,    13,    -1,    40,    -1,    38,
00766       -1,    39,    -1,   127,    -1,   127,    48,    82,    -1,   123,
00767       -1,   127,    48,   123,    -1,   124,    -1,   128,   119,    -1,
00768      124,   130,    -1,    -1,   115,   130,    -1,    41,    42,    -1,
00769       42,    41,    -1,   131,    -1,    41,    -1,    42,    -1,    17,
00770       27,    -1,    17,    28,    -1,    17,    27,    75,    86,    -1,
00771       17,    28,    75,    86,    -1,    17,    27,    15,    86,    -1,
00772       17,    28,    15,    86,    -1,    17,    66,    -1,    17,    67,
00773       -1,    17,    68,    -1,    17,    69,    -1,    17,    70,    -1,
00774       17,    55,    -1,    17,    56,    -1,    17,    54,    -1,    17,
00775       85,    -1,    17,    84,    -1,    17,    50,    -1,    17,    59,
00776       -1,    17,    60,    -1,    17,    45,    -1,    17,    64,    -1,
00777       17,    63,    -1,    17,    58,    -1,    17,    57,    -1,    17,
00778       62,    -1,    17,    61,    -1,    17,    53,    -1,    17,    52,
00779       -1,    17,    72,    -1,    17,    71,    -1,    17,    48,    -1,
00780       17,    78,    -1,    17,    79,    -1,    17,    76,    83,    -1,
00781       17,    75,    86,    -1,    17,    15,    86,    -1,    17,   129,
00782       -1,    10,    -1,    80,    -1,    13,    -1,    16,    -1,    11,
00783       -1,   133,    -1,    10,    -1,    80,    -1,   133,    -1,    11,
00784       -1
00785 };
00786 
00787 /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
00788 static const yytype_uint16 yyrline[] =
00789 {
00790        0,   279,   279,   280,   283,   287,   291,   297,   304,   305,
00791      310,   314,   318,   322,   326,   330,   334,   338,   342,   346,
00792      350,   354,   358,   362,   368,   375,   385,   391,   398,   406,
00793      410,   416,   423,   433,   439,   446,   454,   458,   462,   472,
00794      471,   494,   493,   509,   508,   517,   519,   522,   523,   526,
00795      528,   530,   537,   534,   545,   544,   567,   571,   574,   578,
00796      582,   600,   603,   610,   614,   618,   624,   628,   632,   636,
00797      640,   644,   648,   652,   656,   660,   664,   668,   672,   676,
00798      680,   684,   688,   692,   696,   700,   704,   708,   714,   721,
00799      730,   741,   748,   755,   758,   764,   771,   781,   785,   789,
00800      793,   800,   817,   835,   868,   877,   884,   893,   901,   907,
00801      917,   932,   954,   969,   995,  1004,  1005,  1033,  1087,  1091,
00802     1092,  1095,  1098,  1099,  1103,  1104,  1109,  1108,  1112,  1111,
00803     1114,  1116,  1120,  1129,  1131,  1132,  1135,  1137,  1144,  1151,
00804     1157,  1164,  1166,  1168,  1170,  1174,  1176,  1188,  1192,  1194,
00805     1198,  1202,  1206,  1210,  1214,  1218,  1222,  1226,  1230,  1234,
00806     1238,  1242,  1246,  1250,  1254,  1258,  1262,  1266,  1270,  1274,
00807     1278,  1282,  1286,  1290,  1294,  1298,  1302,  1306,  1309,  1314,
00808     1320,  1323,  1328,  1334,  1337,  1342,  1348,  1351,  1356,  1362,
00809     1366,  1370,  1374,  1381,  1385,  1387,  1391,  1392,  1400,  1408,
00810     1419,  1421,  1430,  1436,  1443,  1444,  1451,  1455,  1456,  1459,
00811     1460,  1463,  1467,  1469,  1473,  1475,  1477,  1479,  1481,  1483,
00812     1485,  1487,  1489,  1491,  1493,  1495,  1497,  1499,  1501,  1503,
00813     1505,  1507,  1509,  1511,  1551,  1553,  1555,  1557,  1559,  1561,
00814     1563,  1565,  1567,  1569,  1571,  1573,  1575,  1577,  1579,  1581,
00815     1583,  1599,  1600,  1601,  1602,  1603,  1604,  1607,  1608,  1616,
00816     1628
00817 };
00818 #endif
00819 
00820 #if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE
00821 /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
00822    First, the terminals, then, starting at YYNTOKENS, nonterminals.  */
00823 static const char *const yytname[] =
00824 {
00825   "$end", "error", "$undefined", "INT", "FLOAT", "DECFLOAT", "STRING",
00826   "NSSTRING", "SELECTOR", "CHAR", "NAME", "UNKNOWN_CPP_NAME", "COMPLETE",
00827   "TYPENAME", "CLASSNAME", "OBJC_LBRAC", "NAME_OR_INT", "OPERATOR",
00828   "STRUCT", "CLASS", "UNION", "ENUM", "SIZEOF", "UNSIGNED", "COLONCOLON",
00829   "TEMPLATE", "ERROR", "NEW", "DELETE", "REINTERPRET_CAST", "DYNAMIC_CAST",
00830   "STATIC_CAST", "CONST_CAST", "ENTRY", "TYPEOF", "DECLTYPE", "TYPEID",
00831   "SIGNED_KEYWORD", "LONG", "SHORT", "INT_KEYWORD", "CONST_KEYWORD",
00832   "VOLATILE_KEYWORD", "DOUBLE_KEYWORD", "VARIABLE", "ASSIGN_MODIFY",
00833   "TRUEKEYWORD", "FALSEKEYWORD", "','", "ABOVE_COMMA", "'='", "'?'",
00834   "OROR", "ANDAND", "'|'", "'^'", "'&'", "NOTEQUAL", "EQUAL", "'<'", "'>'",
00835   "GEQ", "LEQ", "RSH", "LSH", "'@'", "'+'", "'-'", "'*'", "'/'", "'%'",
00836   "DECREMENT", "INCREMENT", "UNARY", "'.'", "'['", "'('", "DOT_STAR",
00837   "ARROW_STAR", "ARROW", "BLOCKNAME", "FILENAME", "DOTDOTDOT", "')'",
00838   "'!'", "'~'", "']'", "':'", "'{'", "'}'", "$accept", "start", "type_exp",
00839   "exp1", "exp", "$@1", "$@2", "$@3", "msglist", "msgarglist", "msgarg",
00840   "$@4", "$@5", "lcurly", "arglist", "rcurly", "string_exp", "block",
00841   "variable", "qualified_name", "space_identifier", "const_or_volatile",
00842   "cv_with_space_id", "const_or_volatile_or_space_identifier_noopt",
00843   "const_or_volatile_or_space_identifier", "ptr_operator", "$@6", "$@7",
00844   "ptr_operator_ts", "abs_decl", "direct_abs_decl", "array_mod",
00845   "func_mod", "type", "typebase", "typename", "parameter_typelist",
00846   "nonempty_typelist", "ptype", "conversion_type_id",
00847   "conversion_declarator", "const_and_volatile", "const_or_volatile_noopt",
00848   "operator", "name", "name_not_typename", 0
00849 };
00850 #endif
00851 
00852 # ifdef YYPRINT
00853 /* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to
00854    token YYLEX-NUM.  */
00855 static const yytype_uint16 yytoknum[] =
00856 {
00857        0,   256,   257,   258,   259,   260,   261,   262,   263,   264,
00858      265,   266,   267,   268,   269,   270,   271,   272,   273,   274,
00859      275,   276,   277,   278,   279,   280,   281,   282,   283,   284,
00860      285,   286,   287,   288,   289,   290,   291,   292,   293,   294,
00861      295,   296,   297,   298,   299,   300,   301,   302,    44,   303,
00862       61,    63,   304,   305,   124,    94,    38,   306,   307,    60,
00863       62,   308,   309,   310,   311,    64,    43,    45,    42,    47,
00864       37,   312,   313,   314,    46,    91,    40,   315,   316,   317,
00865      318,   319,   320,    41,    33,   126,    93,    58,   123,   125
00866 };
00867 # endif
00868 
00869 /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
00870 static const yytype_uint8 yyr1[] =
00871 {
00872        0,    90,    91,    91,    92,    92,    92,    92,    93,    93,
00873       94,    94,    94,    94,    94,    94,    94,    94,    94,    94,
00874       94,    94,    94,    94,    94,    94,    94,    94,    94,    94,
00875       94,    94,    94,    94,    94,    94,    94,    94,    94,    95,
00876       94,    96,    94,    97,    94,    98,    98,    99,    99,   100,
00877      100,   100,   101,    94,   102,    94,   103,   104,   104,   104,
00878       94,   105,    94,    94,    94,    94,    94,    94,    94,    94,
00879       94,    94,    94,    94,    94,    94,    94,    94,    94,    94,
00880       94,    94,    94,    94,    94,    94,    94,    94,    94,    94,
00881       94,    94,    94,    94,    94,    94,    94,    94,    94,    94,
00882       94,   106,   106,    94,    94,    94,    94,   107,   107,   107,
00883      108,   108,   109,   109,   109,   108,   108,   108,   110,   111,
00884      111,   112,   113,   113,   114,   114,   116,   115,   117,   115,
00885      115,   115,   118,   119,   119,   119,   120,   120,   120,   120,
00886      120,   121,   121,   121,   121,   122,   122,   123,   124,   124,
00887      124,   124,   124,   124,   124,   124,   124,   124,   124,   124,
00888      124,   124,   124,   124,   124,   124,   124,   124,   124,   124,
00889      124,   124,   124,   124,   124,   124,   124,   124,   124,   124,
00890      124,   124,   124,   124,   124,   124,   124,   124,   124,   124,
00891      124,   124,   124,   124,   124,   124,   125,   125,   125,   125,
00892      126,   126,   127,   127,   128,   128,   129,   130,   130,   131,
00893      131,   132,   132,   132,   133,   133,   133,   133,   133,   133,
00894      133,   133,   133,   133,   133,   133,   133,   133,   133,   133,
00895      133,   133,   133,   133,   133,   133,   133,   133,   133,   133,
00896      133,   133,   133,   133,   133,   133,   133,   133,   133,   133,
00897      133,   134,   134,   134,   134,   134,   134,   135,   135,   135,
00898      135
00899 };
00900 
00901 /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
00902 static const yytype_uint8 yyr2[] =
00903 {
00904        0,     2,     1,     1,     1,     4,     4,     4,     1,     3,
00905        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
00906        4,     4,     2,     3,     4,     3,     4,     5,     3,     3,
00907        3,     4,     3,     4,     5,     3,     3,     4,     4,     0,
00908        5,     0,     5,     0,     5,     1,     1,     1,     2,     3,
00909        2,     2,     0,     5,     0,     5,     1,     0,     1,     3,
00910        5,     1,     3,     4,     4,     3,     3,     3,     3,     3,
00911        3,     3,     3,     3,     3,     3,     3,     3,     3,     3,
00912        3,     3,     3,     3,     3,     5,     3,     3,     1,     1,
00913        1,     1,     1,     1,     1,     4,     4,     7,     7,     7,
00914        7,     1,     2,     1,     1,     1,     1,     1,     1,     3,
00915        2,     3,     3,     4,     5,     1,     2,     1,     2,     1,
00916        0,     3,     1,     1,     1,     0,     0,     4,     0,     3,
00917        1,     2,     1,     2,     1,     1,     3,     2,     1,     2,
00918        1,     2,     2,     3,     3,     2,     3,     1,     1,     1,
00919        1,     1,     2,     3,     2,     3,     3,     3,     2,     2,
00920        3,     4,     3,     3,     4,     3,     4,     3,     4,     2,
00921        3,     2,     3,     2,     3,     1,     2,     2,     2,     3,
00922        2,     2,     3,     2,     2,     3,     2,     2,     3,     2,
00923        1,     2,     1,     5,     2,     2,     1,     1,     1,     1,
00924        1,     3,     1,     3,     1,     2,     2,     0,     2,     2,
00925        2,     1,     1,     1,     2,     2,     4,     4,     4,     4,
00926        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
00927        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
00928        2,     2,     2,     2,     2,     2,     2,     3,     3,     3,
00929        2,     1,     1,     1,     1,     1,     1,     1,     1,     1,
00930        1
00931 };
00932 
00933 /* YYDEFACT[STATE-NAME] -- Default reduction number in state STATE-NUM.
00934    Performed when YYTABLE doesn't specify something else to do.  Zero
00935    means the default is an error.  */
00936 static const yytype_uint16 yydefact[] =
00937 {
00938      120,    88,    91,    92,   101,   104,     0,    89,   257,   260,
00939      148,     0,    90,   120,     0,     0,     0,     0,     0,   190,
00940        0,     0,     0,     0,     0,     0,     0,     0,     0,   192,
00941      150,   151,   149,   212,   213,   175,    94,   105,   106,     0,
00942        0,     0,     0,     0,     0,   120,   258,   108,     0,     0,
00943       56,     0,     3,     2,     8,    57,   103,     0,    93,   115,
00944        0,   122,   120,     4,   204,   147,   211,   123,   259,   117,
00945        0,    54,     0,    39,    41,    43,   148,     0,   214,   215,
00946      233,   244,   230,   241,   240,   227,   225,   226,   237,   236,
00947      231,   232,   239,   238,   235,   234,   220,   221,   222,   223,
00948      224,   243,   242,     0,     0,   245,   246,   229,   228,   207,
00949      250,   251,   255,   178,   253,   254,   252,   256,   177,   181,
00950      180,   184,   183,   187,   186,     0,   120,    22,   196,   198,
00951      199,   197,   189,   260,   258,   116,     0,   120,   120,   120,
00952      120,   120,     0,   120,   198,   199,   191,   158,   154,   159,
00953      152,   176,   173,   171,   169,   209,   210,    11,    13,    12,
00954       10,    17,    16,     0,     0,    14,    15,     1,     0,     0,
00955        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
00956        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
00957        0,     0,    19,    18,     0,     0,    52,     0,     0,     0,
00958        0,    58,     0,   102,     0,     0,   120,   194,   195,     0,
00959      130,   128,     0,   120,   132,   134,   205,   135,   138,   140,
00960      110,     0,    57,     0,   112,     0,     0,     0,   249,     0,
00961        0,     0,     0,   248,   247,   207,   206,   179,   182,   185,
00962      188,     0,   165,   156,   172,   120,     0,     0,     0,     0,
00963        0,     0,     0,     0,     0,   163,   155,   157,   153,   167,
00964      162,   160,   174,   170,     0,    65,     9,     0,    87,    86,
00965        0,    84,    83,    82,    81,    80,    75,    74,    78,    79,
00966       77,    76,    73,    72,    66,    70,    71,    67,    68,    69,
00967       32,   253,     0,    35,    30,     0,    57,   202,     0,   200,
00968       36,    29,    25,     0,    28,    23,    61,     0,     0,    62,
00969      111,   118,   121,   119,     0,   142,   131,   125,     0,   141,
00970      145,     0,     0,   126,   133,   120,   137,   139,    95,     0,
00971      113,     0,     0,     0,     0,    46,    47,    45,     0,     0,
00972      218,   216,   219,   217,   126,   208,    96,   166,     0,     0,
00973        0,     0,     0,     5,     6,     7,    21,    20,   164,   168,
00974      161,    64,    38,     0,    33,    31,    37,     0,   120,   120,
00975       26,    24,    63,    59,   144,   124,   129,   143,   136,   146,
00976      125,    55,   114,    51,    50,    40,    48,     0,     0,    42,
00977       44,   193,     0,     0,     0,     0,    85,    34,    53,    60,
00978      201,   203,    27,   127,    49,     0,     0,     0,     0,    97,
00979       99,    98,   100
00980 };
00981 
00982 /* YYDEFGOTO[NTERM-NUM].  */
00983 static const yytype_int16 yydefgoto[] =
00984 {
00985       -1,    51,   163,   164,    54,   225,   226,   227,   334,   335,
00986      336,   296,   222,    55,   202,   307,    56,    57,    58,    59,
00987      206,    60,    61,    62,   376,   214,   380,   317,   215,   216,
00988      217,   218,   219,    63,    64,   132,   322,   299,    65,   110,
00989      236,    66,    67,    68,   337,    69
00990 };
00991 
00992 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
00993    STATE-NUM.  */
00994 #define YYPACT_NINF -214
00995 static const yytype_int16 yypact[] =
00996 {
00997      468,  -214,  -214,  -214,  -214,  -214,   -24,  -214,  -214,    -2,
00998       58,   640,  -214,   886,   265,   292,   330,   347,   726,   110,
00999       25,   193,    33,    48,    63,    84,    50,    80,    82,   185,
01000      328,    22,  -214,   139,   149,  -214,  -214,  -214,  -214,   812,
01001      812,   812,   812,   812,   812,   468,   167,  -214,   812,   812,
01002     -214,   192,  -214,   145,  1399,   382,   189,   172,  -214,  -214,
01003      135,  -214,   746,  -214,    86,   215,  -214,   136,  -214,   186,
01004      193,  -214,    53,    58,  -214,  1399,  -214,   141,    19,    43,
01005     -214,  -214,  -214,  -214,  -214,  -214,  -214,  -214,  -214,  -214,
01006     -214,  -214,  -214,  -214,  -214,  -214,  -214,  -214,  -214,  -214,
01007     -214,  -214,  -214,   142,   146,  -214,  -214,  -214,  -214,   271,
01008     -214,  -214,  -214,  -214,  -214,  -214,  -214,  -214,   220,  -214,
01009      222,  -214,   223,  -214,   230,    58,   468,    24,  -214,    96,
01010      204,  -214,  -214,  -214,  -214,  -214,   203,   660,   660,   660,
01011      660,   554,   812,   468,    97,  -214,  -214,   211,   232,   288,
01012     -214,  -214,   239,   240,  -214,  -214,  -214,    24,    24,    24,
01013       24,    24,    24,   180,   -23,    24,    24,  -214,   812,   812,
01014      812,   812,   812,   812,   812,   812,   812,   812,   812,   812,
01015      812,   812,   812,   812,   812,   812,   812,   812,   812,   812,
01016      812,   812,  -214,  -214,    67,   812,  1669,   812,   812,   103,
01017      195,  1399,    -8,  -214,   193,   278,    30,    86,  -214,     5,
01018      221,  -214,    11,   218,   224,    12,  -214,    34,  -214,  -214,
01019     -214,   216,   812,   193,   276,    37,    37,    37,  -214,   228,
01020      229,   233,   234,  -214,  -214,   -13,  -214,  -214,  -214,  -214,
01021     -214,   235,   267,  -214,  -214,   746,   256,   263,   264,   269,
01022      993,   248,  1051,   249,  1109,   293,  -214,  -214,  -214,   295,
01023      297,  -214,  -214,  -214,   812,  -214,  1399,    20,  1399,  1399,
01024      922,  1457,  1486,  1515,  1544,  1573,  1602,  1602,  1072,  1072,
01025     1072,  1072,   365,   365,  1130,  1188,  1188,    24,    24,    24,
01026     -214,    58,   193,  -214,   332,    60,   812,  -214,   266,   300,
01027      138,   138,  -214,   193,  -214,   338,  -214,   812,   812,  -214,
01028      329,  -214,  -214,  -214,   268,  -214,   224,    86,   270,  -214,
01029     -214,   272,   279,  -214,    34,   227,  -214,  -214,  -214,   -22,
01030     -214,   193,   812,   812,   275,    37,  -214,   280,   283,   284,
01031     -214,  -214,  -214,  -214,  -214,  -214,  -214,  -214,   313,   298,
01032      299,   302,   303,  -214,  -214,  -214,  -214,  -214,  -214,  -214,
01033     -214,    24,  -214,   812,   364,  -214,  -214,    38,    30,   992,
01034      384,  -214,    24,  1399,  -214,  -214,  -214,  -214,  -214,  -214,
01035       86,  -214,  -214,  1399,  1399,  -214,  -214,   280,   812,  -214,
01036     -214,  -214,   812,   812,   812,   812,  1428,  -214,  -214,  -214,
01037     -214,  -214,  -214,  -214,  1399,  1167,  1225,  1283,  1341,  -214,
01038     -214,  -214,  -214
01039 };
01040 
01041 /* YYPGOTO[NTERM-NUM].  */
01042 static const yytype_int16 yypgoto[] =
01043 {
01044     -214,  -214,     2,    13,   -11,  -214,  -214,  -214,   -72,  -214,
01045       59,  -214,  -214,  -214,  -207,   206,  -214,  -214,  -214,  -143,
01046     -214,  -184,  -214,   -63,    29,  -106,  -214,  -214,  -214,   202,
01047      231,  -213,  -212,  -120,    28,   416,   255,  -214,  -214,  -214,
01048      217,  -214,  -183,    -5,     3,   435
01049 };
01050 
01051 /* YYTABLE[YYPACT[STATE-NUM]].  What to do in state STATE-NUM.  If
01052    positive, shift that token.  If negative, reduce the rule which
01053    number is the opposite.  If YYTABLE_NINF, syntax error.  */
01054 #define YYTABLE_NINF -121
01055 static const yytype_int16 yytable[] =
01056 {
01057       75,   208,    52,   235,   326,   327,   241,   127,   314,   117,
01058      117,   117,   117,    53,   318,   329,   117,   118,   120,   122,
01059      124,   251,   312,   313,   136,   168,   308,   209,   157,   158,
01060      159,   160,   161,   162,   229,     8,   133,   165,   166,   169,
01061      308,   109,    13,   210,   201,   152,   208,   111,   112,   209,
01062      114,   293,    70,   115,    13,   344,   304,   200,   231,   153,
01063      265,   381,   154,   111,   112,   117,   114,   117,   168,   115,
01064       13,    33,    34,   221,    71,   224,   297,   111,   112,   290,
01065      291,   306,    72,   115,    13,   332,   308,   212,   213,   367,
01066      207,   315,   137,   297,   230,   192,   193,   319,   194,   195,
01067      196,   197,   198,   199,   316,   134,   362,   138,   168,   212,
01068      325,   326,   327,   111,   112,   302,   291,   116,   232,   115,
01069       13,   398,   139,   128,   333,   348,   141,    33,    34,   235,
01070      250,   252,   254,   116,   242,   255,   243,   256,   223,   246,
01071      247,   248,   249,   140,   208,   253,   366,   116,   129,   130,
01072      131,  -120,   292,   169,   338,   339,   142,   266,   143,   268,
01073      269,   270,   271,   272,   273,   274,   275,   276,   277,   278,
01074      279,   280,   281,   282,   283,   284,   285,   286,   287,   288,
01075      289,   155,   267,   116,   399,   313,   300,   301,   303,   117,
01076      156,  -107,   167,   168,   117,   203,   204,   294,   128,   117,
01077      205,  -119,   305,   111,   112,   297,   114,   310,   295,   115,
01078       13,   201,   194,   195,   196,   197,   198,   199,   117,   220,
01079      117,   117,   117,   144,   145,   131,   330,   228,   233,   234,
01080      209,    76,   237,   209,   238,   239,    14,    15,    16,    17,
01081       76,    19,   240,    21,   244,    14,    15,    16,    17,   401,
01082       19,   257,    21,   361,   375,    29,    30,    31,    32,    33,
01083       34,    35,   245,   264,    29,    30,    31,    32,    33,    34,
01084       35,   210,   258,   116,   210,   111,   112,   113,   114,   262,
01085      263,   115,    13,   211,   306,   201,   211,   117,   311,   211,
01086      212,   213,   323,   212,   213,   364,   372,   373,   117,   328,
01087      331,   320,   111,   112,   119,   114,   370,   347,   115,    13,
01088      320,   259,    33,    34,   340,   341,   349,   375,   346,   342,
01089      343,   383,   384,   350,   351,   260,   117,   210,   261,   352,
01090      117,   354,   356,   358,   382,   359,  -120,   360,   387,   211,
01091      111,   112,   121,   114,   365,   116,   115,    13,   369,   368,
01092      371,   147,   396,  -109,   374,   378,   377,   111,   112,   123,
01093      114,   385,   379,   115,    13,   148,   149,   388,   150,   389,
01094      390,   151,   116,   391,   392,   393,   397,   404,   394,   395,
01095      169,   405,   406,   407,   408,     1,     2,     3,     4,     5,
01096        6,     7,     8,     9,   386,    10,   402,    11,    12,    13,
01097       14,    15,    16,    17,    18,    19,    20,    21,   309,   403,
01098      116,    22,    23,    24,    25,   321,    26,    27,    28,    29,
01099       30,    31,    32,    33,    34,    35,    36,   116,    37,    38,
01100      186,   187,   188,   189,   190,   191,   192,   193,    39,   194,
01101      195,   196,   197,   198,   199,   146,   324,  -120,    40,    41,
01102       42,   298,   345,    43,    44,   135,     0,     0,    45,     0,
01103        0,     0,    46,    47,     0,     0,    48,    49,     0,     0,
01104       50,     1,     2,     3,     4,     5,     6,     7,     8,     9,
01105        0,    10,     0,    11,    12,    13,    14,    15,    16,    17,
01106       18,    19,    20,    21,     0,     0,     0,    22,    23,    24,
01107       25,     0,    26,    27,    28,    29,    30,    31,    32,    33,
01108       34,    35,    36,     0,    37,    38,     0,     0,     0,     0,
01109        0,     0,     0,     0,    39,     0,     0,     0,     0,     0,
01110        0,     0,     0,     0,    40,    41,    42,     0,     0,    43,
01111       44,     0,     0,     0,    45,     0,     0,     0,    46,    47,
01112        0,     0,    48,    49,     0,     0,    50,     1,     2,     3,
01113        4,     5,     6,     7,     8,     9,     0,    10,     0,    11,
01114       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
01115        0,     0,     0,    22,    23,    24,    25,     0,     0,     0,
01116       28,    29,    30,    31,    32,    33,    34,    35,    36,     0,
01117       37,    38,     0,     0,     0,     0,     0,     0,     0,     0,
01118       39,     0,     0,     0,     0,     0,     0,     0,     0,     0,
01119       40,    41,    42,     0,     0,    43,    44,     0,     0,     0,
01120       45,     0,     0,     0,    46,    47,     0,     0,    48,    49,
01121        0,     0,    50,     1,     2,     3,     4,     5,     6,     7,
01122        8,     9,     0,    73,    74,    11,    12,    13,     0,     0,
01123        0,     0,    18,     0,    20,     0,     0,     0,     0,    22,
01124       23,    24,    25,    76,     0,     0,    28,     0,    14,    15,
01125       16,    17,     0,    19,    36,    21,    37,    38,     0,     0,
01126        0,     0,     0,     0,    26,    27,    39,    29,    30,    31,
01127       32,    33,    34,    35,     0,     0,    40,    41,    42,     0,
01128        0,    43,    44,     0,     0,     0,    45,     0,     0,     0,
01129       46,    47,     0,     0,    48,    49,     0,     0,    50,     1,
01130        2,     3,     4,     5,     6,     7,     8,     9,     0,   125,
01131        0,    11,    12,    13,     0,     0,     0,     0,    18,     0,
01132       20,     0,     0,     0,     0,    22,    23,    24,    25,    76,
01133        0,     0,    28,     0,    14,    15,    16,    17,     0,    19,
01134       36,    21,    37,    38,     0,     0,     0,     0,     0,     0,
01135        0,     0,    39,    29,    30,    31,    32,    33,    34,    35,
01136        0,     0,    40,    41,    42,     0,     0,    43,    44,     0,
01137        0,     0,   126,     0,     0,     0,    46,    47,     0,     0,
01138       48,    49,     0,     0,    50,     1,     2,     3,     4,     5,
01139        6,     7,     8,     9,     0,   125,     0,    11,    12,    13,
01140        0,     0,     0,     0,    18,     0,    20,     0,     0,     0,
01141        0,    22,    23,    24,    25,     0,     0,     0,    28,     0,
01142        0,     0,     0,     0,     0,     0,    36,     0,    37,    38,
01143        0,     0,     0,     0,     0,     0,     0,     0,    39,     0,
01144        0,     0,     0,     0,     0,     0,     0,     0,    40,    41,
01145       42,     0,     0,    43,    44,     0,     0,     0,    45,     0,
01146        0,     0,    46,    47,     0,     0,    48,    49,     0,    76,
01147       50,    77,     0,     0,    14,    15,    16,    17,     0,    19,
01148        0,    21,     0,    78,    79,     0,     0,     0,     0,     0,
01149        0,     0,     0,    29,    30,    31,    32,    33,    34,    35,
01150        0,    80,     0,     0,    81,     0,    82,   169,    83,    84,
01151       85,    86,    87,    88,    89,    90,    91,    92,    93,    94,
01152       95,     0,    96,    97,    98,    99,   100,   101,   102,     0,
01153        0,   103,   104,     0,   105,   106,     0,   170,     0,     0,
01154      107,   108,   171,   172,   173,   174,   175,   176,   177,   178,
01155      179,   180,   181,   182,   183,   184,   185,   186,   187,   188,
01156      189,   190,   191,   192,   193,     0,   194,   195,   196,   197,
01157      198,   199,     0,     0,     0,    76,     0,     0,   169,   363,
01158       14,    15,    16,    17,     0,    19,     0,    21,     0,     0,
01159        0,     0,     0,     0,     0,     0,     0,     0,     0,    29,
01160       30,    31,    32,    33,    34,    35,     0,     0,   170,     0,
01161        0,     0,     0,   171,   172,   173,   174,   175,   176,   177,
01162      178,   179,   180,   181,   182,   183,   184,   185,   186,   187,
01163      188,   189,   190,   191,   192,   193,   169,   194,   195,   196,
01164      197,   198,   199,     0,   400,     0,   353,     0,     0,     0,
01165        0,     0,     0,     0,     0,     0,     0,   169,     0,     0,
01166        0,     0,     0,     0,     0,     0,   170,     0,     0,     0,
01167        0,   171,   172,   173,   174,   175,   176,   177,   178,   179,
01168      180,   181,   182,   183,   184,   185,   186,   187,   188,   189,
01169      190,   191,   192,   193,   169,   194,   195,   196,   197,   198,
01170      199,     0,     0,     0,   355,   184,   185,   186,   187,   188,
01171      189,   190,   191,   192,   193,   169,   194,   195,   196,   197,
01172      198,   199,     0,     0,   170,     0,     0,     0,     0,   171,
01173      172,   173,   174,   175,   176,   177,   178,   179,   180,   181,
01174      182,   183,   184,   185,   186,   187,   188,   189,   190,   191,
01175      192,   193,   169,   194,   195,   196,   197,   198,   199,     0,
01176        0,     0,   357,     0,     0,     0,   187,   188,   189,   190,
01177      191,   192,   193,   169,   194,   195,   196,   197,   198,   199,
01178        0,     0,   170,     0,     0,     0,     0,   171,   172,   173,
01179      174,   175,   176,   177,   178,   179,   180,   181,   182,   183,
01180      184,   185,   186,   187,   188,   189,   190,   191,   192,   193,
01181      169,   194,   195,   196,   197,   198,   199,     0,     0,     0,
01182      409,     0,     0,     0,     0,     0,   189,   190,   191,   192,
01183      193,     0,   194,   195,   196,   197,   198,   199,     0,     0,
01184      170,     0,     0,     0,     0,   171,   172,   173,   174,   175,
01185      176,   177,   178,   179,   180,   181,   182,   183,   184,   185,
01186      186,   187,   188,   189,   190,   191,   192,   193,   169,   194,
01187      195,   196,   197,   198,   199,     0,     0,     0,   410,     0,
01188        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
01189        0,     0,     0,     0,     0,     0,     0,     0,   170,     0,
01190        0,     0,     0,   171,   172,   173,   174,   175,   176,   177,
01191      178,   179,   180,   181,   182,   183,   184,   185,   186,   187,
01192      188,   189,   190,   191,   192,   193,   169,   194,   195,   196,
01193      197,   198,   199,     0,     0,     0,   411,     0,     0,     0,
01194        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
01195        0,     0,     0,     0,     0,     0,   170,     0,     0,     0,
01196        0,   171,   172,   173,   174,   175,   176,   177,   178,   179,
01197      180,   181,   182,   183,   184,   185,   186,   187,   188,   189,
01198      190,   191,   192,   193,   169,   194,   195,   196,   197,   198,
01199      199,     0,     0,     0,   412,     0,     0,     0,     0,     0,
01200        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
01201        0,     0,     0,   169,   170,     0,     0,     0,     0,   171,
01202      172,   173,   174,   175,   176,   177,   178,   179,   180,   181,
01203      182,   183,   184,   185,   186,   187,   188,   189,   190,   191,
01204      192,   193,   169,   194,   195,   196,   197,   198,   199,   172,
01205      173,   174,   175,   176,   177,   178,   179,   180,   181,   182,
01206      183,   184,   185,   186,   187,   188,   189,   190,   191,   192,
01207      193,   169,   194,   195,   196,   197,   198,   199,     0,     0,
01208      174,   175,   176,   177,   178,   179,   180,   181,   182,   183,
01209      184,   185,   186,   187,   188,   189,   190,   191,   192,   193,
01210      169,   194,   195,   196,   197,   198,   199,     0,     0,     0,
01211      175,   176,   177,   178,   179,   180,   181,   182,   183,   184,
01212      185,   186,   187,   188,   189,   190,   191,   192,   193,   169,
01213      194,   195,   196,   197,   198,   199,     0,     0,     0,     0,
01214      176,   177,   178,   179,   180,   181,   182,   183,   184,   185,
01215      186,   187,   188,   189,   190,   191,   192,   193,   169,   194,
01216      195,   196,   197,   198,   199,     0,     0,     0,     0,     0,
01217      177,   178,   179,   180,   181,   182,   183,   184,   185,   186,
01218      187,   188,   189,   190,   191,   192,   193,   169,   194,   195,
01219      196,   197,   198,   199,     0,     0,     0,     0,     0,     0,
01220      178,   179,   180,   181,   182,   183,   184,   185,   186,   187,
01221      188,   189,   190,   191,   192,   193,     0,   194,   195,   196,
01222      197,   198,   199,     0,     0,     0,     0,     0,     0,     0,
01223        0,   180,   181,   182,   183,   184,   185,   186,   187,   188,
01224      189,   190,   191,   192,   193,     0,   194,   195,   196,   197,
01225      198,   199,    76,     0,     0,     0,     0,    14,    15,    16,
01226       17,     0,    19,     0,    21,     0,     0,     0,     0,     0,
01227        0,     0,     0,     0,     0,     0,    29,    30,    31,    32,
01228       33,    34,    35,     0,     0,     0,     0,     0,     0,     0,
01229        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
01230        0,     0,     0,     0,  -120
01231 };
01232 
01233 #define yypact_value_is_default(yystate) \
01234   ((yystate) == (-214))
01235 
01236 #define yytable_value_is_error(yytable_value) \
01237   YYID (0)
01238 
01239 static const yytype_int16 yycheck[] =
01240 {
01241       11,    64,     0,   109,   217,   217,   126,    18,     3,    14,
01242       15,    16,    17,     0,     3,   222,    21,    14,    15,    16,
01243       17,   141,   206,   206,    21,    48,    48,    15,    39,    40,
01244       41,    42,    43,    44,    15,    10,    11,    48,    49,    15,
01245       48,    13,    17,    56,    55,    23,   109,    10,    11,    15,
01246       13,   194,    76,    16,    17,    68,   199,    55,    15,    37,
01247       83,    83,    40,    10,    11,    70,    13,    72,    48,    16,
01248       17,    41,    42,    70,    76,    72,   196,    10,    11,    12,
01249       13,    89,    24,    16,    17,    48,    48,    75,    76,   296,
01250       62,    86,    59,   213,    75,    71,    72,    86,    74,    75,
01251       76,    77,    78,    79,   210,    80,    86,    59,    48,    75,
01252       76,   324,   324,    10,    11,    12,    13,    80,    75,    16,
01253       17,    83,    59,    13,    87,   245,    76,    41,    42,   235,
01254      141,   142,   143,    80,    38,    38,    40,    40,    85,   137,
01255      138,   139,   140,    59,   207,   143,    86,    80,    38,    39,
01256       40,    65,    85,    15,   226,   227,    76,   168,    76,   170,
01257      171,   172,   173,   174,   175,   176,   177,   178,   179,   180,
01258      181,   182,   183,   184,   185,   186,   187,   188,   189,   190,
01259      191,    42,   169,    80,   368,   368,   197,   198,    85,   194,
01260       41,    24,     0,    48,   199,     6,    24,   194,    13,   204,
01261       65,    65,   199,    10,    11,   325,    13,   204,   195,    16,
01262       17,   222,    74,    75,    76,    77,    78,    79,   223,    33,
01263      225,   226,   227,    38,    39,    40,   223,    86,    86,    83,
01264       15,    13,    12,    15,    12,    12,    18,    19,    20,    21,
01265       13,    23,    12,    25,    40,    18,    19,    20,    21,   369,
01266       23,    40,    25,   264,   317,    37,    38,    39,    40,    41,
01267       42,    43,    59,    83,    37,    38,    39,    40,    41,    42,
01268       43,    56,    40,    80,    56,    10,    11,    12,    13,    40,
01269       40,    16,    17,    68,    89,   296,    68,   292,    10,    68,
01270       75,    76,    68,    75,    76,   292,   307,   308,   303,    83,
01271       24,    83,    10,    11,    12,    13,   303,    40,    16,    17,
01272       83,    23,    41,    42,    86,    86,    60,   380,    83,    86,
01273       86,   332,   333,    60,    60,    37,   331,    56,    40,    60,
01274      335,    83,    83,    40,   331,    40,    65,    40,   335,    68,
01275       10,    11,    12,    13,    12,    80,    16,    17,    48,    83,
01276       12,    23,   363,    24,    86,    83,    86,    10,    11,    12,
01277       13,    86,    83,    16,    17,    37,    38,    87,    40,    86,
01278       86,    43,    80,    60,    76,    76,    12,   388,    76,    76,
01279       15,   392,   393,   394,   395,     3,     4,     5,     6,     7,
01280        8,     9,    10,    11,   335,    13,    12,    15,    16,    17,
01281       18,    19,    20,    21,    22,    23,    24,    25,   202,   380,
01282       80,    29,    30,    31,    32,   213,    34,    35,    36,    37,
01283       38,    39,    40,    41,    42,    43,    44,    80,    46,    47,
01284       65,    66,    67,    68,    69,    70,    71,    72,    56,    74,
01285       75,    76,    77,    78,    79,    29,   215,    65,    66,    67,
01286       68,   196,   235,    71,    72,    20,    -1,    -1,    76,    -1,
01287       -1,    -1,    80,    81,    -1,    -1,    84,    85,    -1,    -1,
01288       88,     3,     4,     5,     6,     7,     8,     9,    10,    11,
01289       -1,    13,    -1,    15,    16,    17,    18,    19,    20,    21,
01290       22,    23,    24,    25,    -1,    -1,    -1,    29,    30,    31,
01291       32,    -1,    34,    35,    36,    37,    38,    39,    40,    41,
01292       42,    43,    44,    -1,    46,    47,    -1,    -1,    -1,    -1,
01293       -1,    -1,    -1,    -1,    56,    -1,    -1,    -1,    -1,    -1,
01294       -1,    -1,    -1,    -1,    66,    67,    68,    -1,    -1,    71,
01295       72,    -1,    -1,    -1,    76,    -1,    -1,    -1,    80,    81,
01296       -1,    -1,    84,    85,    -1,    -1,    88,     3,     4,     5,
01297        6,     7,     8,     9,    10,    11,    -1,    13,    -1,    15,
01298       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
01299       -1,    -1,    -1,    29,    30,    31,    32,    -1,    -1,    -1,
01300       36,    37,    38,    39,    40,    41,    42,    43,    44,    -1,
01301       46,    47,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
01302       56,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
01303       66,    67,    68,    -1,    -1,    71,    72,    -1,    -1,    -1,
01304       76,    -1,    -1,    -1,    80,    81,    -1,    -1,    84,    85,
01305       -1,    -1,    88,     3,     4,     5,     6,     7,     8,     9,
01306       10,    11,    -1,    13,    14,    15,    16,    17,    -1,    -1,
01307       -1,    -1,    22,    -1,    24,    -1,    -1,    -1,    -1,    29,
01308       30,    31,    32,    13,    -1,    -1,    36,    -1,    18,    19,
01309       20,    21,    -1,    23,    44,    25,    46,    47,    -1,    -1,
01310       -1,    -1,    -1,    -1,    34,    35,    56,    37,    38,    39,
01311       40,    41,    42,    43,    -1,    -1,    66,    67,    68,    -1,
01312       -1,    71,    72,    -1,    -1,    -1,    76,    -1,    -1,    -1,
01313       80,    81,    -1,    -1,    84,    85,    -1,    -1,    88,     3,
01314        4,     5,     6,     7,     8,     9,    10,    11,    -1,    13,
01315       -1,    15,    16,    17,    -1,    -1,    -1,    -1,    22,    -1,
01316       24,    -1,    -1,    -1,    -1,    29,    30,    31,    32,    13,
01317       -1,    -1,    36,    -1,    18,    19,    20,    21,    -1,    23,
01318       44,    25,    46,    47,    -1,    -1,    -1,    -1,    -1,    -1,
01319       -1,    -1,    56,    37,    38,    39,    40,    41,    42,    43,
01320       -1,    -1,    66,    67,    68,    -1,    -1,    71,    72,    -1,
01321       -1,    -1,    76,    -1,    -1,    -1,    80,    81,    -1,    -1,
01322       84,    85,    -1,    -1,    88,     3,     4,     5,     6,     7,
01323        8,     9,    10,    11,    -1,    13,    -1,    15,    16,    17,
01324       -1,    -1,    -1,    -1,    22,    -1,    24,    -1,    -1,    -1,
01325       -1,    29,    30,    31,    32,    -1,    -1,    -1,    36,    -1,
01326       -1,    -1,    -1,    -1,    -1,    -1,    44,    -1,    46,    47,
01327       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    56,    -1,
01328       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    66,    67,
01329       68,    -1,    -1,    71,    72,    -1,    -1,    -1,    76,    -1,
01330       -1,    -1,    80,    81,    -1,    -1,    84,    85,    -1,    13,
01331       88,    15,    -1,    -1,    18,    19,    20,    21,    -1,    23,
01332       -1,    25,    -1,    27,    28,    -1,    -1,    -1,    -1,    -1,
01333       -1,    -1,    -1,    37,    38,    39,    40,    41,    42,    43,
01334       -1,    45,    -1,    -1,    48,    -1,    50,    15,    52,    53,
01335       54,    55,    56,    57,    58,    59,    60,    61,    62,    63,
01336       64,    -1,    66,    67,    68,    69,    70,    71,    72,    -1,
01337       -1,    75,    76,    -1,    78,    79,    -1,    45,    -1,    -1,
01338       84,    85,    50,    51,    52,    53,    54,    55,    56,    57,
01339       58,    59,    60,    61,    62,    63,    64,    65,    66,    67,
01340       68,    69,    70,    71,    72,    -1,    74,    75,    76,    77,
01341       78,    79,    -1,    -1,    -1,    13,    -1,    -1,    15,    87,
01342       18,    19,    20,    21,    -1,    23,    -1,    25,    -1,    -1,
01343       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    37,
01344       38,    39,    40,    41,    42,    43,    -1,    -1,    45,    -1,
01345       -1,    -1,    -1,    50,    51,    52,    53,    54,    55,    56,
01346       57,    58,    59,    60,    61,    62,    63,    64,    65,    66,
01347       67,    68,    69,    70,    71,    72,    15,    74,    75,    76,
01348       77,    78,    79,    -1,    82,    -1,    83,    -1,    -1,    -1,
01349       -1,    -1,    -1,    -1,    -1,    -1,    -1,    15,    -1,    -1,
01350       -1,    -1,    -1,    -1,    -1,    -1,    45,    -1,    -1,    -1,
01351       -1,    50,    51,    52,    53,    54,    55,    56,    57,    58,
01352       59,    60,    61,    62,    63,    64,    65,    66,    67,    68,
01353       69,    70,    71,    72,    15,    74,    75,    76,    77,    78,
01354       79,    -1,    -1,    -1,    83,    63,    64,    65,    66,    67,
01355       68,    69,    70,    71,    72,    15,    74,    75,    76,    77,
01356       78,    79,    -1,    -1,    45,    -1,    -1,    -1,    -1,    50,
01357       51,    52,    53,    54,    55,    56,    57,    58,    59,    60,
01358       61,    62,    63,    64,    65,    66,    67,    68,    69,    70,
01359       71,    72,    15,    74,    75,    76,    77,    78,    79,    -1,
01360       -1,    -1,    83,    -1,    -1,    -1,    66,    67,    68,    69,
01361       70,    71,    72,    15,    74,    75,    76,    77,    78,    79,
01362       -1,    -1,    45,    -1,    -1,    -1,    -1,    50,    51,    52,
01363       53,    54,    55,    56,    57,    58,    59,    60,    61,    62,
01364       63,    64,    65,    66,    67,    68,    69,    70,    71,    72,
01365       15,    74,    75,    76,    77,    78,    79,    -1,    -1,    -1,
01366       83,    -1,    -1,    -1,    -1,    -1,    68,    69,    70,    71,
01367       72,    -1,    74,    75,    76,    77,    78,    79,    -1,    -1,
01368       45,    -1,    -1,    -1,    -1,    50,    51,    52,    53,    54,
01369       55,    56,    57,    58,    59,    60,    61,    62,    63,    64,
01370       65,    66,    67,    68,    69,    70,    71,    72,    15,    74,
01371       75,    76,    77,    78,    79,    -1,    -1,    -1,    83,    -1,
01372       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
01373       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    45,    -1,
01374       -1,    -1,    -1,    50,    51,    52,    53,    54,    55,    56,
01375       57,    58,    59,    60,    61,    62,    63,    64,    65,    66,
01376       67,    68,    69,    70,    71,    72,    15,    74,    75,    76,
01377       77,    78,    79,    -1,    -1,    -1,    83,    -1,    -1,    -1,
01378       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
01379       -1,    -1,    -1,    -1,    -1,    -1,    45,    -1,    -1,    -1,
01380       -1,    50,    51,    52,    53,    54,    55,    56,    57,    58,
01381       59,    60,    61,    62,    63,    64,    65,    66,    67,    68,
01382       69,    70,    71,    72,    15,    74,    75,    76,    77,    78,
01383       79,    -1,    -1,    -1,    83,    -1,    -1,    -1,    -1,    -1,
01384       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
01385       -1,    -1,    -1,    15,    45,    -1,    -1,    -1,    -1,    50,
01386       51,    52,    53,    54,    55,    56,    57,    58,    59,    60,
01387       61,    62,    63,    64,    65,    66,    67,    68,    69,    70,
01388       71,    72,    15,    74,    75,    76,    77,    78,    79,    51,
01389       52,    53,    54,    55,    56,    57,    58,    59,    60,    61,
01390       62,    63,    64,    65,    66,    67,    68,    69,    70,    71,
01391       72,    15,    74,    75,    76,    77,    78,    79,    -1,    -1,
01392       53,    54,    55,    56,    57,    58,    59,    60,    61,    62,
01393       63,    64,    65,    66,    67,    68,    69,    70,    71,    72,
01394       15,    74,    75,    76,    77,    78,    79,    -1,    -1,    -1,
01395       54,    55,    56,    57,    58,    59,    60,    61,    62,    63,
01396       64,    65,    66,    67,    68,    69,    70,    71,    72,    15,
01397       74,    75,    76,    77,    78,    79,    -1,    -1,    -1,    -1,
01398       55,    56,    57,    58,    59,    60,    61,    62,    63,    64,
01399       65,    66,    67,    68,    69,    70,    71,    72,    15,    74,
01400       75,    76,    77,    78,    79,    -1,    -1,    -1,    -1,    -1,
01401       56,    57,    58,    59,    60,    61,    62,    63,    64,    65,
01402       66,    67,    68,    69,    70,    71,    72,    15,    74,    75,
01403       76,    77,    78,    79,    -1,    -1,    -1,    -1,    -1,    -1,
01404       57,    58,    59,    60,    61,    62,    63,    64,    65,    66,
01405       67,    68,    69,    70,    71,    72,    -1,    74,    75,    76,
01406       77,    78,    79,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
01407       -1,    59,    60,    61,    62,    63,    64,    65,    66,    67,
01408       68,    69,    70,    71,    72,    -1,    74,    75,    76,    77,
01409       78,    79,    13,    -1,    -1,    -1,    -1,    18,    19,    20,
01410       21,    -1,    23,    -1,    25,    -1,    -1,    -1,    -1,    -1,
01411       -1,    -1,    -1,    -1,    -1,    -1,    37,    38,    39,    40,
01412       41,    42,    43,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
01413       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
01414       -1,    -1,    -1,    -1,    65
01415 };
01416 
01417 /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
01418    symbol of state STATE-NUM.  */
01419 static const yytype_uint8 yystos[] =
01420 {
01421        0,     3,     4,     5,     6,     7,     8,     9,    10,    11,
01422       13,    15,    16,    17,    18,    19,    20,    21,    22,    23,
01423       24,    25,    29,    30,    31,    32,    34,    35,    36,    37,
01424       38,    39,    40,    41,    42,    43,    44,    46,    47,    56,
01425       66,    67,    68,    71,    72,    76,    80,    81,    84,    85,
01426       88,    91,    92,    93,    94,   103,   106,   107,   108,   109,
01427      111,   112,   113,   123,   124,   128,   131,   132,   133,   135,
01428       76,    76,    24,    13,    14,    94,    13,    15,    27,    28,
01429       45,    48,    50,    52,    53,    54,    55,    56,    57,    58,
01430       59,    60,    61,    62,    63,    64,    66,    67,    68,    69,
01431       70,    71,    72,    75,    76,    78,    79,    84,    85,   124,
01432      129,    10,    11,    12,    13,    16,    80,   133,   134,    12,
01433      134,    12,   134,    12,   134,    13,    76,    94,    13,    38,
01434       39,    40,   125,    11,    80,   135,   134,    59,    59,    59,
01435       59,    76,    76,    76,    38,    39,   125,    23,    37,    38,
01436       40,    43,    23,    37,    40,    42,    41,    94,    94,    94,
01437       94,    94,    94,    92,    93,    94,    94,     0,    48,    15,
01438       45,    50,    51,    52,    53,    54,    55,    56,    57,    58,
01439       59,    60,    61,    62,    63,    64,    65,    66,    67,    68,
01440       69,    70,    71,    72,    74,    75,    76,    77,    78,    79,
01441       92,    94,   104,     6,    24,    65,   110,   124,   113,    15,
01442       56,    68,    75,    76,   115,   118,   119,   120,   121,   122,
01443       33,   134,   102,    85,   134,    95,    96,    97,    86,    15,
01444       75,    15,    75,    86,    83,   115,   130,    12,    12,    12,
01445       12,   123,    38,    40,    40,    59,    92,    92,    92,    92,
01446       94,   123,    94,    92,    94,    38,    40,    40,    40,    23,
01447       37,    40,    40,    40,    83,    83,    94,    93,    94,    94,
01448       94,    94,    94,    94,    94,    94,    94,    94,    94,    94,
01449       94,    94,    94,    94,    94,    94,    94,    94,    94,    94,
01450       12,    13,    85,   109,   134,    93,   101,   123,   126,   127,
01451       94,    94,    12,    85,   109,   134,    89,   105,    48,   105,
01452      134,    10,   111,   132,     3,    86,   115,   117,     3,    86,
01453       83,   119,   126,    68,   120,    76,   121,   122,    83,   104,
01454      134,    24,    48,    87,    98,    99,   100,   134,    98,    98,
01455       86,    86,    86,    86,    68,   130,    83,    40,   123,    60,
01456       60,    60,    60,    83,    83,    83,    83,    83,    40,    40,
01457       40,    94,    86,    87,   134,    12,    86,   104,    83,    48,
01458      134,    12,    94,    94,    86,   113,   114,    86,    83,    83,
01459      116,    83,   134,    94,    94,    86,   100,   134,    87,    86,
01460       86,    60,    76,    76,    76,    76,    94,    12,    83,   111,
01461       82,   123,    12,   114,    94,    94,    94,    94,    94,    83,
01462       83,    83,    83
01463 };
01464 
01465 #define yyerrok         (yyerrstatus = 0)
01466 #define yyclearin       (yychar = YYEMPTY)
01467 #define YYEMPTY         (-2)
01468 #define YYEOF           0
01469 
01470 #define YYACCEPT        goto yyacceptlab
01471 #define YYABORT         goto yyabortlab
01472 #define YYERROR         goto yyerrorlab
01473 
01474 
01475 /* Like YYERROR except do call yyerror.  This remains here temporarily
01476    to ease the transition to the new meaning of YYERROR, for GCC.
01477    Once GCC version 2 has supplanted version 1, this can go.  However,
01478    YYFAIL appears to be in use.  Nevertheless, it is formally deprecated
01479    in Bison 2.4.2's NEWS entry, where a plan to phase it out is
01480    discussed.  */
01481 
01482 #define YYFAIL          goto yyerrlab
01483 #if defined YYFAIL
01484   /* This is here to suppress warnings from the GCC cpp's
01485      -Wunused-macros.  Normally we don't worry about that warning, but
01486      some users do, and we want to make it easy for users to remove
01487      YYFAIL uses, which will produce warnings from Bison 2.5.  */
01488 #endif
01489 
01490 #define YYRECOVERING()  (!!yyerrstatus)
01491 
01492 #define YYBACKUP(Token, Value)                                  \
01493 do                                                              \
01494   if (yychar == YYEMPTY && yylen == 1)                          \
01495     {                                                           \
01496       yychar = (Token);                                         \
01497       yylval = (Value);                                         \
01498       YYPOPSTACK (1);                                           \
01499       goto yybackup;                                            \
01500     }                                                           \
01501   else                                                          \
01502     {                                                           \
01503       yyerror (YY_("syntax error: cannot back up")); \
01504       YYERROR;                                                  \
01505     }                                                           \
01506 while (YYID (0))
01507 
01508 
01509 #define YYTERROR        1
01510 #define YYERRCODE       256
01511 
01512 
01513 /* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
01514    If N is 0, then set CURRENT to the empty location which ends
01515    the previous symbol: RHS[0] (always defined).  */
01516 
01517 #define YYRHSLOC(Rhs, K) ((Rhs)[K])
01518 #ifndef YYLLOC_DEFAULT
01519 # define YYLLOC_DEFAULT(Current, Rhs, N)                                \
01520     do                                                                  \
01521       if (YYID (N))                                                    \
01522         {                                                               \
01523           (Current).first_line   = YYRHSLOC (Rhs, 1).first_line;        \
01524           (Current).first_column = YYRHSLOC (Rhs, 1).first_column;      \
01525           (Current).last_line    = YYRHSLOC (Rhs, N).last_line;         \
01526           (Current).last_column  = YYRHSLOC (Rhs, N).last_column;       \
01527         }                                                               \
01528       else                                                              \
01529         {                                                               \
01530           (Current).first_line   = (Current).last_line   =              \
01531             YYRHSLOC (Rhs, 0).last_line;                                \
01532           (Current).first_column = (Current).last_column =              \
01533             YYRHSLOC (Rhs, 0).last_column;                              \
01534         }                                                               \
01535     while (YYID (0))
01536 #endif
01537 
01538 
01539 /* This macro is provided for backward compatibility. */
01540 
01541 #ifndef YY_LOCATION_PRINT
01542 # define YY_LOCATION_PRINT(File, Loc) ((void) 0)
01543 #endif
01544 
01545 
01546 /* YYLEX -- calling `yylex' with the right arguments.  */
01547 
01548 #ifdef YYLEX_PARAM
01549 # define YYLEX yylex (YYLEX_PARAM)
01550 #else
01551 # define YYLEX yylex ()
01552 #endif
01553 
01554 /* Enable debugging if requested.  */
01555 #if YYDEBUG
01556 
01557 # ifndef YYFPRINTF
01558 #  include <stdio.h> /* INFRINGES ON USER NAME SPACE */
01559 #  define YYFPRINTF fprintf
01560 # endif
01561 
01562 # define YYDPRINTF(Args)                        \
01563 do {                                            \
01564   if (yydebug)                                  \
01565     YYFPRINTF Args;                             \
01566 } while (YYID (0))
01567 
01568 # define YY_SYMBOL_PRINT(Title, Type, Value, Location)                    \
01569 do {                                                                      \
01570   if (yydebug)                                                            \
01571     {                                                                     \
01572       YYFPRINTF (stderr, "%s ", Title);                                   \
01573       yy_symbol_print (stderr,                                            \
01574                   Type, Value); \
01575       YYFPRINTF (stderr, "\n");                                           \
01576     }                                                                     \
01577 } while (YYID (0))
01578 
01579 
01580 /*--------------------------------.
01581 | Print this symbol on YYOUTPUT.  |
01582 `--------------------------------*/
01583 
01584 /*ARGSUSED*/
01585 #if (defined __STDC__ || defined __C99__FUNC__ \
01586      || defined __cplusplus || defined _MSC_VER)
01587 static void
01588 yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
01589 #else
01590 static void
01591 yy_symbol_value_print (yyoutput, yytype, yyvaluep)
01592     FILE *yyoutput;
01593     int yytype;
01594     YYSTYPE const * const yyvaluep;
01595 #endif
01596 {
01597   if (!yyvaluep)
01598     return;
01599 # ifdef YYPRINT
01600   if (yytype < YYNTOKENS)
01601     YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
01602 # else
01603   YYUSE (yyoutput);
01604 # endif
01605   switch (yytype)
01606     {
01607       default:
01608         break;
01609     }
01610 }
01611 
01612 
01613 /*--------------------------------.
01614 | Print this symbol on YYOUTPUT.  |
01615 `--------------------------------*/
01616 
01617 #if (defined __STDC__ || defined __C99__FUNC__ \
01618      || defined __cplusplus || defined _MSC_VER)
01619 static void
01620 yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
01621 #else
01622 static void
01623 yy_symbol_print (yyoutput, yytype, yyvaluep)
01624     FILE *yyoutput;
01625     int yytype;
01626     YYSTYPE const * const yyvaluep;
01627 #endif
01628 {
01629   if (yytype < YYNTOKENS)
01630     YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
01631   else
01632     YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
01633 
01634   yy_symbol_value_print (yyoutput, yytype, yyvaluep);
01635   YYFPRINTF (yyoutput, ")");
01636 }
01637 
01638 /*------------------------------------------------------------------.
01639 | yy_stack_print -- Print the state stack from its BOTTOM up to its |
01640 | TOP (included).                                                   |
01641 `------------------------------------------------------------------*/
01642 
01643 #if (defined __STDC__ || defined __C99__FUNC__ \
01644      || defined __cplusplus || defined _MSC_VER)
01645 static void
01646 yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop)
01647 #else
01648 static void
01649 yy_stack_print (yybottom, yytop)
01650     yytype_int16 *yybottom;
01651     yytype_int16 *yytop;
01652 #endif
01653 {
01654   YYFPRINTF (stderr, "Stack now");
01655   for (; yybottom <= yytop; yybottom++)
01656     {
01657       int yybot = *yybottom;
01658       YYFPRINTF (stderr, " %d", yybot);
01659     }
01660   YYFPRINTF (stderr, "\n");
01661 }
01662 
01663 # define YY_STACK_PRINT(Bottom, Top)                            \
01664 do {                                                            \
01665   if (yydebug)                                                  \
01666     yy_stack_print ((Bottom), (Top));                           \
01667 } while (YYID (0))
01668 
01669 
01670 /*------------------------------------------------.
01671 | Report that the YYRULE is going to be reduced.  |
01672 `------------------------------------------------*/
01673 
01674 #if (defined __STDC__ || defined __C99__FUNC__ \
01675      || defined __cplusplus || defined _MSC_VER)
01676 static void
01677 yy_reduce_print (YYSTYPE *yyvsp, int yyrule)
01678 #else
01679 static void
01680 yy_reduce_print (yyvsp, yyrule)
01681     YYSTYPE *yyvsp;
01682     int yyrule;
01683 #endif
01684 {
01685   int yynrhs = yyr2[yyrule];
01686   int yyi;
01687   unsigned long int yylno = yyrline[yyrule];
01688   YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n",
01689              yyrule - 1, yylno);
01690   /* The symbols being reduced.  */
01691   for (yyi = 0; yyi < yynrhs; yyi++)
01692     {
01693       YYFPRINTF (stderr, "   $%d = ", yyi + 1);
01694       yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi],
01695                        &(yyvsp[(yyi + 1) - (yynrhs)])
01696                                        );
01697       YYFPRINTF (stderr, "\n");
01698     }
01699 }
01700 
01701 # define YY_REDUCE_PRINT(Rule)          \
01702 do {                                    \
01703   if (yydebug)                          \
01704     yy_reduce_print (yyvsp, Rule); \
01705 } while (YYID (0))
01706 
01707 /* Nonzero means print parse trace.  It is left uninitialized so that
01708    multiple parsers can coexist.  */
01709 int yydebug;
01710 #else /* !YYDEBUG */
01711 # define YYDPRINTF(Args)
01712 # define YY_SYMBOL_PRINT(Title, Type, Value, Location)
01713 # define YY_STACK_PRINT(Bottom, Top)
01714 # define YY_REDUCE_PRINT(Rule)
01715 #endif /* !YYDEBUG */
01716 
01717 
01718 /* YYINITDEPTH -- initial size of the parser's stacks.  */
01719 #ifndef YYINITDEPTH
01720 # define YYINITDEPTH 200
01721 #endif
01722 
01723 /* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
01724    if the built-in stack extension method is used).
01725 
01726    Do not make this value too large; the results are undefined if
01727    YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH)
01728    evaluated with infinite-precision integer arithmetic.  */
01729 
01730 #ifndef YYMAXDEPTH
01731 # define YYMAXDEPTH 10000
01732 #endif
01733 
01734 
01735 #if YYERROR_VERBOSE
01736 
01737 # ifndef yystrlen
01738 #  if defined __GLIBC__ && defined _STRING_H
01739 #   define yystrlen strlen
01740 #  else
01741 /* Return the length of YYSTR.  */
01742 #if (defined __STDC__ || defined __C99__FUNC__ \
01743      || defined __cplusplus || defined _MSC_VER)
01744 static YYSIZE_T
01745 yystrlen (const char *yystr)
01746 #else
01747 static YYSIZE_T
01748 yystrlen (yystr)
01749     const char *yystr;
01750 #endif
01751 {
01752   YYSIZE_T yylen;
01753   for (yylen = 0; yystr[yylen]; yylen++)
01754     continue;
01755   return yylen;
01756 }
01757 #  endif
01758 # endif
01759 
01760 # ifndef yystpcpy
01761 #  if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
01762 #   define yystpcpy stpcpy
01763 #  else
01764 /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
01765    YYDEST.  */
01766 #if (defined __STDC__ || defined __C99__FUNC__ \
01767      || defined __cplusplus || defined _MSC_VER)
01768 static char *
01769 yystpcpy (char *yydest, const char *yysrc)
01770 #else
01771 static char *
01772 yystpcpy (yydest, yysrc)
01773     char *yydest;
01774     const char *yysrc;
01775 #endif
01776 {
01777   char *yyd = yydest;
01778   const char *yys = yysrc;
01779 
01780   while ((*yyd++ = *yys++) != '\0')
01781     continue;
01782 
01783   return yyd - 1;
01784 }
01785 #  endif
01786 # endif
01787 
01788 # ifndef yytnamerr
01789 /* Copy to YYRES the contents of YYSTR after stripping away unnecessary
01790    quotes and backslashes, so that it's suitable for yyerror.  The
01791    heuristic is that double-quoting is unnecessary unless the string
01792    contains an apostrophe, a comma, or backslash (other than
01793    backslash-backslash).  YYSTR is taken from yytname.  If YYRES is
01794    null, do not copy; instead, return the length of what the result
01795    would have been.  */
01796 static YYSIZE_T
01797 yytnamerr (char *yyres, const char *yystr)
01798 {
01799   if (*yystr == '"')
01800     {
01801       YYSIZE_T yyn = 0;
01802       char const *yyp = yystr;
01803 
01804       for (;;)
01805         switch (*++yyp)
01806           {
01807           case '\'':
01808           case ',':
01809             goto do_not_strip_quotes;
01810 
01811           case '\\':
01812             if (*++yyp != '\\')
01813               goto do_not_strip_quotes;
01814             /* Fall through.  */
01815           default:
01816             if (yyres)
01817               yyres[yyn] = *yyp;
01818             yyn++;
01819             break;
01820 
01821           case '"':
01822             if (yyres)
01823               yyres[yyn] = '\0';
01824             return yyn;
01825           }
01826     do_not_strip_quotes: ;
01827     }
01828 
01829   if (! yyres)
01830     return yystrlen (yystr);
01831 
01832   return yystpcpy (yyres, yystr) - yyres;
01833 }
01834 # endif
01835 
01836 /* Copy into *YYMSG, which is of size *YYMSG_ALLOC, an error message
01837    about the unexpected token YYTOKEN for the state stack whose top is
01838    YYSSP.
01839 
01840    Return 0 if *YYMSG was successfully written.  Return 1 if *YYMSG is
01841    not large enough to hold the message.  In that case, also set
01842    *YYMSG_ALLOC to the required number of bytes.  Return 2 if the
01843    required number of bytes is too large to store.  */
01844 static int
01845 yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg,
01846                 yytype_int16 *yyssp, int yytoken)
01847 {
01848   YYSIZE_T yysize0 = yytnamerr (0, yytname[yytoken]);
01849   YYSIZE_T yysize = yysize0;
01850   YYSIZE_T yysize1;
01851   enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
01852   /* Internationalized format string. */
01853   const char *yyformat = 0;
01854   /* Arguments of yyformat. */
01855   char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
01856   /* Number of reported tokens (one for the "unexpected", one per
01857      "expected"). */
01858   int yycount = 0;
01859 
01860   /* There are many possibilities here to consider:
01861      - Assume YYFAIL is not used.  It's too flawed to consider.  See
01862        <http://lists.gnu.org/archive/html/bison-patches/2009-12/msg00024.html>
01863        for details.  YYERROR is fine as it does not invoke this
01864        function.
01865      - If this state is a consistent state with a default action, then
01866        the only way this function was invoked is if the default action
01867        is an error action.  In that case, don't check for expected
01868        tokens because there are none.
01869      - The only way there can be no lookahead present (in yychar) is if
01870        this state is a consistent state with a default action.  Thus,
01871        detecting the absence of a lookahead is sufficient to determine
01872        that there is no unexpected or expected token to report.  In that
01873        case, just report a simple "syntax error".
01874      - Don't assume there isn't a lookahead just because this state is a
01875        consistent state with a default action.  There might have been a
01876        previous inconsistent state, consistent state with a non-default
01877        action, or user semantic action that manipulated yychar.
01878      - Of course, the expected token list depends on states to have
01879        correct lookahead information, and it depends on the parser not
01880        to perform extra reductions after fetching a lookahead from the
01881        scanner and before detecting a syntax error.  Thus, state merging
01882        (from LALR or IELR) and default reductions corrupt the expected
01883        token list.  However, the list is correct for canonical LR with
01884        one exception: it will still contain any token that will not be
01885        accepted due to an error action in a later state.
01886   */
01887   if (yytoken != YYEMPTY)
01888     {
01889       int yyn = yypact[*yyssp];
01890       yyarg[yycount++] = yytname[yytoken];
01891       if (!yypact_value_is_default (yyn))
01892         {
01893           /* Start YYX at -YYN if negative to avoid negative indexes in
01894              YYCHECK.  In other words, skip the first -YYN actions for
01895              this state because they are default actions.  */
01896           int yyxbegin = yyn < 0 ? -yyn : 0;
01897           /* Stay within bounds of both yycheck and yytname.  */
01898           int yychecklim = YYLAST - yyn + 1;
01899           int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
01900           int yyx;
01901 
01902           for (yyx = yyxbegin; yyx < yyxend; ++yyx)
01903             if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR
01904                 && !yytable_value_is_error (yytable[yyx + yyn]))
01905               {
01906                 if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
01907                   {
01908                     yycount = 1;
01909                     yysize = yysize0;
01910                     break;
01911                   }
01912                 yyarg[yycount++] = yytname[yyx];
01913                 yysize1 = yysize + yytnamerr (0, yytname[yyx]);
01914                 if (! (yysize <= yysize1
01915                        && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
01916                   return 2;
01917                 yysize = yysize1;
01918               }
01919         }
01920     }
01921 
01922   switch (yycount)
01923     {
01924 # define YYCASE_(N, S)                      \
01925       case N:                               \
01926         yyformat = S;                       \
01927       break
01928       YYCASE_(0, YY_("syntax error"));
01929       YYCASE_(1, YY_("syntax error, unexpected %s"));
01930       YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s"));
01931       YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s"));
01932       YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s"));
01933       YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"));
01934 # undef YYCASE_
01935     }
01936 
01937   yysize1 = yysize + yystrlen (yyformat);
01938   if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
01939     return 2;
01940   yysize = yysize1;
01941 
01942   if (*yymsg_alloc < yysize)
01943     {
01944       *yymsg_alloc = 2 * yysize;
01945       if (! (yysize <= *yymsg_alloc
01946              && *yymsg_alloc <= YYSTACK_ALLOC_MAXIMUM))
01947         *yymsg_alloc = YYSTACK_ALLOC_MAXIMUM;
01948       return 1;
01949     }
01950 
01951   /* Avoid sprintf, as that infringes on the user's name space.
01952      Don't have undefined behavior even if the translation
01953      produced a string with the wrong number of "%s"s.  */
01954   {
01955     char *yyp = *yymsg;
01956     int yyi = 0;
01957     while ((*yyp = *yyformat) != '\0')
01958       if (*yyp == '%' && yyformat[1] == 's' && yyi < yycount)
01959         {
01960           yyp += yytnamerr (yyp, yyarg[yyi++]);
01961           yyformat += 2;
01962         }
01963       else
01964         {
01965           yyp++;
01966           yyformat++;
01967         }
01968   }
01969   return 0;
01970 }
01971 #endif /* YYERROR_VERBOSE */
01972 
01973 /*-----------------------------------------------.
01974 | Release the memory associated to this symbol.  |
01975 `-----------------------------------------------*/
01976 
01977 /*ARGSUSED*/
01978 #if (defined __STDC__ || defined __C99__FUNC__ \
01979      || defined __cplusplus || defined _MSC_VER)
01980 static void
01981 yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep)
01982 #else
01983 static void
01984 yydestruct (yymsg, yytype, yyvaluep)
01985     const char *yymsg;
01986     int yytype;
01987     YYSTYPE *yyvaluep;
01988 #endif
01989 {
01990   YYUSE (yyvaluep);
01991 
01992   if (!yymsg)
01993     yymsg = "Deleting";
01994   YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
01995 
01996   switch (yytype)
01997     {
01998 
01999       default:
02000         break;
02001     }
02002 }
02003 
02004 
02005 /* Prevent warnings from -Wmissing-prototypes.  */
02006 #ifdef YYPARSE_PARAM
02007 #if defined __STDC__ || defined __cplusplus
02008 int yyparse (void *YYPARSE_PARAM);
02009 #else
02010 int yyparse ();
02011 #endif
02012 #else /* ! YYPARSE_PARAM */
02013 #if defined __STDC__ || defined __cplusplus
02014 int yyparse (void);
02015 #else
02016 int yyparse ();
02017 #endif
02018 #endif /* ! YYPARSE_PARAM */
02019 
02020 
02021 /* The lookahead symbol.  */
02022 int yychar;
02023 
02024 /* The semantic value of the lookahead symbol.  */
02025 YYSTYPE yylval;
02026 
02027 /* Number of syntax errors so far.  */
02028 int yynerrs;
02029 
02030 
02031 /*----------.
02032 | yyparse.  |
02033 `----------*/
02034 
02035 #ifdef YYPARSE_PARAM
02036 #if (defined __STDC__ || defined __C99__FUNC__ \
02037      || defined __cplusplus || defined _MSC_VER)
02038 int
02039 yyparse (void *YYPARSE_PARAM)
02040 #else
02041 int
02042 yyparse (YYPARSE_PARAM)
02043     void *YYPARSE_PARAM;
02044 #endif
02045 #else /* ! YYPARSE_PARAM */
02046 #if (defined __STDC__ || defined __C99__FUNC__ \
02047      || defined __cplusplus || defined _MSC_VER)
02048 int
02049 yyparse (void)
02050 #else
02051 int
02052 yyparse ()
02053 
02054 #endif
02055 #endif
02056 {
02057     int yystate;
02058     /* Number of tokens to shift before error messages enabled.  */
02059     int yyerrstatus;
02060 
02061     /* The stacks and their tools:
02062        `yyss': related to states.
02063        `yyvs': related to semantic values.
02064 
02065        Refer to the stacks thru separate pointers, to allow yyoverflow
02066        to xreallocate them elsewhere.  */
02067 
02068     /* The state stack.  */
02069     yytype_int16 yyssa[YYINITDEPTH];
02070     yytype_int16 *yyss;
02071     yytype_int16 *yyssp;
02072 
02073     /* The semantic value stack.  */
02074     YYSTYPE yyvsa[YYINITDEPTH];
02075     YYSTYPE *yyvs;
02076     YYSTYPE *yyvsp;
02077 
02078     YYSIZE_T yystacksize;
02079 
02080   int yyn;
02081   int yyresult;
02082   /* Lookahead token as an internal (translated) token number.  */
02083   int yytoken;
02084   /* The variables used to return semantic value and location from the
02085      action routines.  */
02086   YYSTYPE yyval;
02087 
02088 #if YYERROR_VERBOSE
02089   /* Buffer for error messages, and its allocated size.  */
02090   char yymsgbuf[128];
02091   char *yymsg = yymsgbuf;
02092   YYSIZE_T yymsg_alloc = sizeof yymsgbuf;
02093 #endif
02094 
02095 #define YYPOPSTACK(N)   (yyvsp -= (N), yyssp -= (N))
02096 
02097   /* The number of symbols on the RHS of the reduced rule.
02098      Keep to zero when no symbol should be popped.  */
02099   int yylen = 0;
02100 
02101   yytoken = 0;
02102   yyss = yyssa;
02103   yyvs = yyvsa;
02104   yystacksize = YYINITDEPTH;
02105 
02106   YYDPRINTF ((stderr, "Starting parse\n"));
02107 
02108   yystate = 0;
02109   yyerrstatus = 0;
02110   yynerrs = 0;
02111   yychar = YYEMPTY; /* Cause a token to be read.  */
02112 
02113   /* Initialize stack pointers.
02114      Waste one element of value and location stack
02115      so that they stay on the same level as the state stack.
02116      The wasted elements are never initialized.  */
02117   yyssp = yyss;
02118   yyvsp = yyvs;
02119 
02120   goto yysetstate;
02121 
02122 /*------------------------------------------------------------.
02123 | yynewstate -- Push a new state, which is found in yystate.  |
02124 `------------------------------------------------------------*/
02125  yynewstate:
02126   /* In all cases, when you get here, the value and location stacks
02127      have just been pushed.  So pushing a state here evens the stacks.  */
02128   yyssp++;
02129 
02130  yysetstate:
02131   *yyssp = yystate;
02132 
02133   if (yyss + yystacksize - 1 <= yyssp)
02134     {
02135       /* Get the current used size of the three stacks, in elements.  */
02136       YYSIZE_T yysize = yyssp - yyss + 1;
02137 
02138 #ifdef yyoverflow
02139       {
02140         /* Give user a chance to xreallocate the stack.  Use copies of
02141            these so that the &'s don't force the real ones into
02142            memory.  */
02143         YYSTYPE *yyvs1 = yyvs;
02144         yytype_int16 *yyss1 = yyss;
02145 
02146         /* Each stack pointer address is followed by the size of the
02147            data in use in that stack, in bytes.  This used to be a
02148            conditional around just the two extra args, but that might
02149            be undefined if yyoverflow is a macro.  */
02150         yyoverflow (YY_("memory exhausted"),
02151                     &yyss1, yysize * sizeof (*yyssp),
02152                     &yyvs1, yysize * sizeof (*yyvsp),
02153                     &yystacksize);
02154 
02155         yyss = yyss1;
02156         yyvs = yyvs1;
02157       }
02158 #else /* no yyoverflow */
02159 # ifndef YYSTACK_RELOCATE
02160       goto yyexhaustedlab;
02161 # else
02162       /* Extend the stack our own way.  */
02163       if (YYMAXDEPTH <= yystacksize)
02164         goto yyexhaustedlab;
02165       yystacksize *= 2;
02166       if (YYMAXDEPTH < yystacksize)
02167         yystacksize = YYMAXDEPTH;
02168 
02169       {
02170         yytype_int16 *yyss1 = yyss;
02171         union yyalloc *yyptr =
02172           (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
02173         if (! yyptr)
02174           goto yyexhaustedlab;
02175         YYSTACK_RELOCATE (yyss_alloc, yyss);
02176         YYSTACK_RELOCATE (yyvs_alloc, yyvs);
02177 #  undef YYSTACK_RELOCATE
02178         if (yyss1 != yyssa)
02179           YYSTACK_FREE (yyss1);
02180       }
02181 # endif
02182 #endif /* no yyoverflow */
02183 
02184       yyssp = yyss + yysize - 1;
02185       yyvsp = yyvs + yysize - 1;
02186 
02187       YYDPRINTF ((stderr, "Stack size increased to %lu\n",
02188                   (unsigned long int) yystacksize));
02189 
02190       if (yyss + yystacksize - 1 <= yyssp)
02191         YYABORT;
02192     }
02193 
02194   YYDPRINTF ((stderr, "Entering state %d\n", yystate));
02195 
02196   if (yystate == YYFINAL)
02197     YYACCEPT;
02198 
02199   goto yybackup;
02200 
02201 /*-----------.
02202 | yybackup.  |
02203 `-----------*/
02204 yybackup:
02205 
02206   /* Do appropriate processing given the current state.  Read a
02207      lookahead token if we need one and don't already have one.  */
02208 
02209   /* First try to decide what to do without reference to lookahead token.  */
02210   yyn = yypact[yystate];
02211   if (yypact_value_is_default (yyn))
02212     goto yydefault;
02213 
02214   /* Not known => get a lookahead token if don't already have one.  */
02215 
02216   /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol.  */
02217   if (yychar == YYEMPTY)
02218     {
02219       YYDPRINTF ((stderr, "Reading a token: "));
02220       yychar = YYLEX;
02221     }
02222 
02223   if (yychar <= YYEOF)
02224     {
02225       yychar = yytoken = YYEOF;
02226       YYDPRINTF ((stderr, "Now at end of input.\n"));
02227     }
02228   else
02229     {
02230       yytoken = YYTRANSLATE (yychar);
02231       YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
02232     }
02233 
02234   /* If the proper action on seeing token YYTOKEN is to reduce or to
02235      detect an error, take that action.  */
02236   yyn += yytoken;
02237   if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
02238     goto yydefault;
02239   yyn = yytable[yyn];
02240   if (yyn <= 0)
02241     {
02242       if (yytable_value_is_error (yyn))
02243         goto yyerrlab;
02244       yyn = -yyn;
02245       goto yyreduce;
02246     }
02247 
02248   /* Count tokens shifted since error; after three, turn off error
02249      status.  */
02250   if (yyerrstatus)
02251     yyerrstatus--;
02252 
02253   /* Shift the lookahead token.  */
02254   YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
02255 
02256   /* Discard the shifted token.  */
02257   yychar = YYEMPTY;
02258 
02259   yystate = yyn;
02260   *++yyvsp = yylval;
02261 
02262   goto yynewstate;
02263 
02264 
02265 /*-----------------------------------------------------------.
02266 | yydefault -- do the default action for the current state.  |
02267 `-----------------------------------------------------------*/
02268 yydefault:
02269   yyn = yydefact[yystate];
02270   if (yyn == 0)
02271     goto yyerrlab;
02272   goto yyreduce;
02273 
02274 
02275 /*-----------------------------.
02276 | yyreduce -- Do a reduction.  |
02277 `-----------------------------*/
02278 yyreduce:
02279   /* yyn is the number of a rule to reduce with.  */
02280   yylen = yyr2[yyn];
02281 
02282   /* If YYLEN is nonzero, implement the default value of the action:
02283      `$$ = $1'.
02284 
02285      Otherwise, the following line sets YYVAL to garbage.
02286      This behavior is undocumented and Bison
02287      users should not rely upon it.  Assigning to YYVAL
02288      unconditionally makes the parser a bit smaller, and it avoids a
02289      GCC warning that YYVAL may be used uninitialized.  */
02290   yyval = yyvsp[1-yylen];
02291 
02292 
02293   YY_REDUCE_PRINT (yyn);
02294   switch (yyn)
02295     {
02296         case 4:
02297 
02298 /* Line 1806 of yacc.c  */
02299 #line 284 "../../src/gdb/c-exp.y"
02300     { write_exp_elt_opcode(OP_TYPE);
02301                           write_exp_elt_type((yyvsp[(1) - (1)].tval));
02302                           write_exp_elt_opcode(OP_TYPE);}
02303     break;
02304 
02305   case 5:
02306 
02307 /* Line 1806 of yacc.c  */
02308 #line 288 "../../src/gdb/c-exp.y"
02309     {
02310                           write_exp_elt_opcode (OP_TYPEOF);
02311                         }
02312     break;
02313 
02314   case 6:
02315 
02316 /* Line 1806 of yacc.c  */
02317 #line 292 "../../src/gdb/c-exp.y"
02318     {
02319                           write_exp_elt_opcode (OP_TYPE);
02320                           write_exp_elt_type ((yyvsp[(3) - (4)].tval));
02321                           write_exp_elt_opcode (OP_TYPE);
02322                         }
02323     break;
02324 
02325   case 7:
02326 
02327 /* Line 1806 of yacc.c  */
02328 #line 298 "../../src/gdb/c-exp.y"
02329     {
02330                           write_exp_elt_opcode (OP_DECLTYPE);
02331                         }
02332     break;
02333 
02334   case 9:
02335 
02336 /* Line 1806 of yacc.c  */
02337 #line 306 "../../src/gdb/c-exp.y"
02338     { write_exp_elt_opcode (BINOP_COMMA); }
02339     break;
02340 
02341   case 10:
02342 
02343 /* Line 1806 of yacc.c  */
02344 #line 311 "../../src/gdb/c-exp.y"
02345     { write_exp_elt_opcode (UNOP_IND); }
02346     break;
02347 
02348   case 11:
02349 
02350 /* Line 1806 of yacc.c  */
02351 #line 315 "../../src/gdb/c-exp.y"
02352     { write_exp_elt_opcode (UNOP_ADDR); }
02353     break;
02354 
02355   case 12:
02356 
02357 /* Line 1806 of yacc.c  */
02358 #line 319 "../../src/gdb/c-exp.y"
02359     { write_exp_elt_opcode (UNOP_NEG); }
02360     break;
02361 
02362   case 13:
02363 
02364 /* Line 1806 of yacc.c  */
02365 #line 323 "../../src/gdb/c-exp.y"
02366     { write_exp_elt_opcode (UNOP_PLUS); }
02367     break;
02368 
02369   case 14:
02370 
02371 /* Line 1806 of yacc.c  */
02372 #line 327 "../../src/gdb/c-exp.y"
02373     { write_exp_elt_opcode (UNOP_LOGICAL_NOT); }
02374     break;
02375 
02376   case 15:
02377 
02378 /* Line 1806 of yacc.c  */
02379 #line 331 "../../src/gdb/c-exp.y"
02380     { write_exp_elt_opcode (UNOP_COMPLEMENT); }
02381     break;
02382 
02383   case 16:
02384 
02385 /* Line 1806 of yacc.c  */
02386 #line 335 "../../src/gdb/c-exp.y"
02387     { write_exp_elt_opcode (UNOP_PREINCREMENT); }
02388     break;
02389 
02390   case 17:
02391 
02392 /* Line 1806 of yacc.c  */
02393 #line 339 "../../src/gdb/c-exp.y"
02394     { write_exp_elt_opcode (UNOP_PREDECREMENT); }
02395     break;
02396 
02397   case 18:
02398 
02399 /* Line 1806 of yacc.c  */
02400 #line 343 "../../src/gdb/c-exp.y"
02401     { write_exp_elt_opcode (UNOP_POSTINCREMENT); }
02402     break;
02403 
02404   case 19:
02405 
02406 /* Line 1806 of yacc.c  */
02407 #line 347 "../../src/gdb/c-exp.y"
02408     { write_exp_elt_opcode (UNOP_POSTDECREMENT); }
02409     break;
02410 
02411   case 20:
02412 
02413 /* Line 1806 of yacc.c  */
02414 #line 351 "../../src/gdb/c-exp.y"
02415     { write_exp_elt_opcode (OP_TYPEID); }
02416     break;
02417 
02418   case 21:
02419 
02420 /* Line 1806 of yacc.c  */
02421 #line 355 "../../src/gdb/c-exp.y"
02422     { write_exp_elt_opcode (OP_TYPEID); }
02423     break;
02424 
02425   case 22:
02426 
02427 /* Line 1806 of yacc.c  */
02428 #line 359 "../../src/gdb/c-exp.y"
02429     { write_exp_elt_opcode (UNOP_SIZEOF); }
02430     break;
02431 
02432   case 23:
02433 
02434 /* Line 1806 of yacc.c  */
02435 #line 363 "../../src/gdb/c-exp.y"
02436     { write_exp_elt_opcode (STRUCTOP_PTR);
02437                           write_exp_string ((yyvsp[(3) - (3)].sval));
02438                           write_exp_elt_opcode (STRUCTOP_PTR); }
02439     break;
02440 
02441   case 24:
02442 
02443 /* Line 1806 of yacc.c  */
02444 #line 369 "../../src/gdb/c-exp.y"
02445     { mark_struct_expression ();
02446                           write_exp_elt_opcode (STRUCTOP_PTR);
02447                           write_exp_string ((yyvsp[(3) - (4)].sval));
02448                           write_exp_elt_opcode (STRUCTOP_PTR); }
02449     break;
02450 
02451   case 25:
02452 
02453 /* Line 1806 of yacc.c  */
02454 #line 376 "../../src/gdb/c-exp.y"
02455     { struct stoken s;
02456                           mark_struct_expression ();
02457                           write_exp_elt_opcode (STRUCTOP_PTR);
02458                           s.ptr = "";
02459                           s.length = 0;
02460                           write_exp_string (s);
02461                           write_exp_elt_opcode (STRUCTOP_PTR); }
02462     break;
02463 
02464   case 26:
02465 
02466 /* Line 1806 of yacc.c  */
02467 #line 386 "../../src/gdb/c-exp.y"
02468     { write_exp_elt_opcode (STRUCTOP_PTR);
02469                           write_destructor_name ((yyvsp[(4) - (4)].sval));
02470                           write_exp_elt_opcode (STRUCTOP_PTR); }
02471     break;
02472 
02473   case 27:
02474 
02475 /* Line 1806 of yacc.c  */
02476 #line 392 "../../src/gdb/c-exp.y"
02477     { mark_struct_expression ();
02478                           write_exp_elt_opcode (STRUCTOP_PTR);
02479                           write_destructor_name ((yyvsp[(4) - (5)].sval));
02480                           write_exp_elt_opcode (STRUCTOP_PTR); }
02481     break;
02482 
02483   case 28:
02484 
02485 /* Line 1806 of yacc.c  */
02486 #line 399 "../../src/gdb/c-exp.y"
02487     { /* exp->type::name becomes exp->*(&type::name) */
02488                           /* Note: this doesn't work if name is a
02489                              static member!  FIXME */
02490                           write_exp_elt_opcode (UNOP_ADDR);
02491                           write_exp_elt_opcode (STRUCTOP_MPTR); }
02492     break;
02493 
02494   case 29:
02495 
02496 /* Line 1806 of yacc.c  */
02497 #line 407 "../../src/gdb/c-exp.y"
02498     { write_exp_elt_opcode (STRUCTOP_MPTR); }
02499     break;
02500 
02501   case 30:
02502 
02503 /* Line 1806 of yacc.c  */
02504 #line 411 "../../src/gdb/c-exp.y"
02505     { write_exp_elt_opcode (STRUCTOP_STRUCT);
02506                           write_exp_string ((yyvsp[(3) - (3)].sval));
02507                           write_exp_elt_opcode (STRUCTOP_STRUCT); }
02508     break;
02509 
02510   case 31:
02511 
02512 /* Line 1806 of yacc.c  */
02513 #line 417 "../../src/gdb/c-exp.y"
02514     { mark_struct_expression ();
02515                           write_exp_elt_opcode (STRUCTOP_STRUCT);
02516                           write_exp_string ((yyvsp[(3) - (4)].sval));
02517                           write_exp_elt_opcode (STRUCTOP_STRUCT); }
02518     break;
02519 
02520   case 32:
02521 
02522 /* Line 1806 of yacc.c  */
02523 #line 424 "../../src/gdb/c-exp.y"
02524     { struct stoken s;
02525                           mark_struct_expression ();
02526                           write_exp_elt_opcode (STRUCTOP_STRUCT);
02527                           s.ptr = "";
02528                           s.length = 0;
02529                           write_exp_string (s);
02530                           write_exp_elt_opcode (STRUCTOP_STRUCT); }
02531     break;
02532 
02533   case 33:
02534 
02535 /* Line 1806 of yacc.c  */
02536 #line 434 "../../src/gdb/c-exp.y"
02537     { write_exp_elt_opcode (STRUCTOP_STRUCT);
02538                           write_destructor_name ((yyvsp[(4) - (4)].sval));
02539                           write_exp_elt_opcode (STRUCTOP_STRUCT); }
02540     break;
02541 
02542   case 34:
02543 
02544 /* Line 1806 of yacc.c  */
02545 #line 440 "../../src/gdb/c-exp.y"
02546     { mark_struct_expression ();
02547                           write_exp_elt_opcode (STRUCTOP_STRUCT);
02548                           write_destructor_name ((yyvsp[(4) - (5)].sval));
02549                           write_exp_elt_opcode (STRUCTOP_STRUCT); }
02550     break;
02551 
02552   case 35:
02553 
02554 /* Line 1806 of yacc.c  */
02555 #line 447 "../../src/gdb/c-exp.y"
02556     { /* exp.type::name becomes exp.*(&type::name) */
02557                           /* Note: this doesn't work if name is a
02558                              static member!  FIXME */
02559                           write_exp_elt_opcode (UNOP_ADDR);
02560                           write_exp_elt_opcode (STRUCTOP_MEMBER); }
02561     break;
02562 
02563   case 36:
02564 
02565 /* Line 1806 of yacc.c  */
02566 #line 455 "../../src/gdb/c-exp.y"
02567     { write_exp_elt_opcode (STRUCTOP_MEMBER); }
02568     break;
02569 
02570   case 37:
02571 
02572 /* Line 1806 of yacc.c  */
02573 #line 459 "../../src/gdb/c-exp.y"
02574     { write_exp_elt_opcode (BINOP_SUBSCRIPT); }
02575     break;
02576 
02577   case 38:
02578 
02579 /* Line 1806 of yacc.c  */
02580 #line 463 "../../src/gdb/c-exp.y"
02581     { write_exp_elt_opcode (BINOP_SUBSCRIPT); }
02582     break;
02583 
02584   case 39:
02585 
02586 /* Line 1806 of yacc.c  */
02587 #line 472 "../../src/gdb/c-exp.y"
02588     {
02589                           CORE_ADDR class;
02590 
02591                           class = lookup_objc_class (parse_gdbarch,
02592                                                      copy_name ((yyvsp[(2) - (2)].tsym).stoken));
02593                           if (class == 0)
02594                             error (_("%s is not an ObjC Class"),
02595                                    copy_name ((yyvsp[(2) - (2)].tsym).stoken));
02596                           write_exp_elt_opcode (OP_LONG);
02597                           write_exp_elt_type (parse_type->builtin_int);
02598                           write_exp_elt_longcst ((LONGEST) class);
02599                           write_exp_elt_opcode (OP_LONG);
02600                           start_msglist();
02601                         }
02602     break;
02603 
02604   case 40:
02605 
02606 /* Line 1806 of yacc.c  */
02607 #line 487 "../../src/gdb/c-exp.y"
02608     { write_exp_elt_opcode (OP_OBJC_MSGCALL);
02609                           end_msglist();
02610                           write_exp_elt_opcode (OP_OBJC_MSGCALL);
02611                         }
02612     break;
02613 
02614   case 41:
02615 
02616 /* Line 1806 of yacc.c  */
02617 #line 494 "../../src/gdb/c-exp.y"
02618     {
02619                           write_exp_elt_opcode (OP_LONG);
02620                           write_exp_elt_type (parse_type->builtin_int);
02621                           write_exp_elt_longcst ((LONGEST) (yyvsp[(2) - (2)].class).class);
02622                           write_exp_elt_opcode (OP_LONG);
02623                           start_msglist();
02624                         }
02625     break;
02626 
02627   case 42:
02628 
02629 /* Line 1806 of yacc.c  */
02630 #line 502 "../../src/gdb/c-exp.y"
02631     { write_exp_elt_opcode (OP_OBJC_MSGCALL);
02632                           end_msglist();
02633                           write_exp_elt_opcode (OP_OBJC_MSGCALL);
02634                         }
02635     break;
02636 
02637   case 43:
02638 
02639 /* Line 1806 of yacc.c  */
02640 #line 509 "../../src/gdb/c-exp.y"
02641     { start_msglist(); }
02642     break;
02643 
02644   case 44:
02645 
02646 /* Line 1806 of yacc.c  */
02647 #line 511 "../../src/gdb/c-exp.y"
02648     { write_exp_elt_opcode (OP_OBJC_MSGCALL);
02649                           end_msglist();
02650                           write_exp_elt_opcode (OP_OBJC_MSGCALL);
02651                         }
02652     break;
02653 
02654   case 45:
02655 
02656 /* Line 1806 of yacc.c  */
02657 #line 518 "../../src/gdb/c-exp.y"
02658     { add_msglist(&(yyvsp[(1) - (1)].sval), 0); }
02659     break;
02660 
02661   case 49:
02662 
02663 /* Line 1806 of yacc.c  */
02664 #line 527 "../../src/gdb/c-exp.y"
02665     { add_msglist(&(yyvsp[(1) - (3)].sval), 1); }
02666     break;
02667 
02668   case 50:
02669 
02670 /* Line 1806 of yacc.c  */
02671 #line 529 "../../src/gdb/c-exp.y"
02672     { add_msglist(0, 1);   }
02673     break;
02674 
02675   case 51:
02676 
02677 /* Line 1806 of yacc.c  */
02678 #line 531 "../../src/gdb/c-exp.y"
02679     { add_msglist(0, 0);   }
02680     break;
02681 
02682   case 52:
02683 
02684 /* Line 1806 of yacc.c  */
02685 #line 537 "../../src/gdb/c-exp.y"
02686     { start_arglist (); }
02687     break;
02688 
02689   case 53:
02690 
02691 /* Line 1806 of yacc.c  */
02692 #line 539 "../../src/gdb/c-exp.y"
02693     { write_exp_elt_opcode (OP_FUNCALL);
02694                           write_exp_elt_longcst ((LONGEST) end_arglist ());
02695                           write_exp_elt_opcode (OP_FUNCALL); }
02696     break;
02697 
02698   case 54:
02699 
02700 /* Line 1806 of yacc.c  */
02701 #line 545 "../../src/gdb/c-exp.y"
02702     {
02703                           /* This could potentially be a an argument defined
02704                              lookup function (Koenig).  */
02705                           write_exp_elt_opcode (OP_ADL_FUNC);
02706                           write_exp_elt_block (expression_context_block);
02707                           write_exp_elt_sym (NULL); /* Placeholder.  */
02708                           write_exp_string ((yyvsp[(1) - (2)].ssym).stoken);
02709                           write_exp_elt_opcode (OP_ADL_FUNC);
02710 
02711                         /* This is to save the value of arglist_len
02712                            being accumulated by an outer function call.  */
02713 
02714                           start_arglist ();
02715                         }
02716     break;
02717 
02718   case 55:
02719 
02720 /* Line 1806 of yacc.c  */
02721 #line 560 "../../src/gdb/c-exp.y"
02722     {
02723                           write_exp_elt_opcode (OP_FUNCALL);
02724                           write_exp_elt_longcst ((LONGEST) end_arglist ());
02725                           write_exp_elt_opcode (OP_FUNCALL);
02726                         }
02727     break;
02728 
02729   case 56:
02730 
02731 /* Line 1806 of yacc.c  */
02732 #line 568 "../../src/gdb/c-exp.y"
02733     { start_arglist (); }
02734     break;
02735 
02736   case 58:
02737 
02738 /* Line 1806 of yacc.c  */
02739 #line 575 "../../src/gdb/c-exp.y"
02740     { arglist_len = 1; }
02741     break;
02742 
02743   case 59:
02744 
02745 /* Line 1806 of yacc.c  */
02746 #line 579 "../../src/gdb/c-exp.y"
02747     { arglist_len++; }
02748     break;
02749 
02750   case 60:
02751 
02752 /* Line 1806 of yacc.c  */
02753 #line 583 "../../src/gdb/c-exp.y"
02754     { int i;
02755                           VEC (type_ptr) *type_list = (yyvsp[(3) - (5)].tvec);
02756                           struct type *type_elt;
02757                           LONGEST len = VEC_length (type_ptr, type_list);
02758 
02759                           write_exp_elt_opcode (TYPE_INSTANCE);
02760                           write_exp_elt_longcst (len);
02761                           for (i = 0;
02762                                VEC_iterate (type_ptr, type_list, i, type_elt);
02763                                ++i)
02764                             write_exp_elt_type (type_elt);
02765                           write_exp_elt_longcst(len);
02766                           write_exp_elt_opcode (TYPE_INSTANCE);
02767                           VEC_free (type_ptr, type_list);
02768                         }
02769     break;
02770 
02771   case 61:
02772 
02773 /* Line 1806 of yacc.c  */
02774 #line 601 "../../src/gdb/c-exp.y"
02775     { (yyval.lval) = end_arglist () - 1; }
02776     break;
02777 
02778   case 62:
02779 
02780 /* Line 1806 of yacc.c  */
02781 #line 604 "../../src/gdb/c-exp.y"
02782     { write_exp_elt_opcode (OP_ARRAY);
02783                           write_exp_elt_longcst ((LONGEST) 0);
02784                           write_exp_elt_longcst ((LONGEST) (yyvsp[(3) - (3)].lval));
02785                           write_exp_elt_opcode (OP_ARRAY); }
02786     break;
02787 
02788   case 63:
02789 
02790 /* Line 1806 of yacc.c  */
02791 #line 611 "../../src/gdb/c-exp.y"
02792     { write_exp_elt_opcode (UNOP_MEMVAL_TYPE); }
02793     break;
02794 
02795   case 64:
02796 
02797 /* Line 1806 of yacc.c  */
02798 #line 615 "../../src/gdb/c-exp.y"
02799     { write_exp_elt_opcode (UNOP_CAST_TYPE); }
02800     break;
02801 
02802   case 65:
02803 
02804 /* Line 1806 of yacc.c  */
02805 #line 619 "../../src/gdb/c-exp.y"
02806     { }
02807     break;
02808 
02809   case 66:
02810 
02811 /* Line 1806 of yacc.c  */
02812 #line 625 "../../src/gdb/c-exp.y"
02813     { write_exp_elt_opcode (BINOP_REPEAT); }
02814     break;
02815 
02816   case 67:
02817 
02818 /* Line 1806 of yacc.c  */
02819 #line 629 "../../src/gdb/c-exp.y"
02820     { write_exp_elt_opcode (BINOP_MUL); }
02821     break;
02822 
02823   case 68:
02824 
02825 /* Line 1806 of yacc.c  */
02826 #line 633 "../../src/gdb/c-exp.y"
02827     { write_exp_elt_opcode (BINOP_DIV); }
02828     break;
02829 
02830   case 69:
02831 
02832 /* Line 1806 of yacc.c  */
02833 #line 637 "../../src/gdb/c-exp.y"
02834     { write_exp_elt_opcode (BINOP_REM); }
02835     break;
02836 
02837   case 70:
02838 
02839 /* Line 1806 of yacc.c  */
02840 #line 641 "../../src/gdb/c-exp.y"
02841     { write_exp_elt_opcode (BINOP_ADD); }
02842     break;
02843 
02844   case 71:
02845 
02846 /* Line 1806 of yacc.c  */
02847 #line 645 "../../src/gdb/c-exp.y"
02848     { write_exp_elt_opcode (BINOP_SUB); }
02849     break;
02850 
02851   case 72:
02852 
02853 /* Line 1806 of yacc.c  */
02854 #line 649 "../../src/gdb/c-exp.y"
02855     { write_exp_elt_opcode (BINOP_LSH); }
02856     break;
02857 
02858   case 73:
02859 
02860 /* Line 1806 of yacc.c  */
02861 #line 653 "../../src/gdb/c-exp.y"
02862     { write_exp_elt_opcode (BINOP_RSH); }
02863     break;
02864 
02865   case 74:
02866 
02867 /* Line 1806 of yacc.c  */
02868 #line 657 "../../src/gdb/c-exp.y"
02869     { write_exp_elt_opcode (BINOP_EQUAL); }
02870     break;
02871 
02872   case 75:
02873 
02874 /* Line 1806 of yacc.c  */
02875 #line 661 "../../src/gdb/c-exp.y"
02876     { write_exp_elt_opcode (BINOP_NOTEQUAL); }
02877     break;
02878 
02879   case 76:
02880 
02881 /* Line 1806 of yacc.c  */
02882 #line 665 "../../src/gdb/c-exp.y"
02883     { write_exp_elt_opcode (BINOP_LEQ); }
02884     break;
02885 
02886   case 77:
02887 
02888 /* Line 1806 of yacc.c  */
02889 #line 669 "../../src/gdb/c-exp.y"
02890     { write_exp_elt_opcode (BINOP_GEQ); }
02891     break;
02892 
02893   case 78:
02894 
02895 /* Line 1806 of yacc.c  */
02896 #line 673 "../../src/gdb/c-exp.y"
02897     { write_exp_elt_opcode (BINOP_LESS); }
02898     break;
02899 
02900   case 79:
02901 
02902 /* Line 1806 of yacc.c  */
02903 #line 677 "../../src/gdb/c-exp.y"
02904     { write_exp_elt_opcode (BINOP_GTR); }
02905     break;
02906 
02907   case 80:
02908 
02909 /* Line 1806 of yacc.c  */
02910 #line 681 "../../src/gdb/c-exp.y"
02911     { write_exp_elt_opcode (BINOP_BITWISE_AND); }
02912     break;
02913 
02914   case 81:
02915 
02916 /* Line 1806 of yacc.c  */
02917 #line 685 "../../src/gdb/c-exp.y"
02918     { write_exp_elt_opcode (BINOP_BITWISE_XOR); }
02919     break;
02920 
02921   case 82:
02922 
02923 /* Line 1806 of yacc.c  */
02924 #line 689 "../../src/gdb/c-exp.y"
02925     { write_exp_elt_opcode (BINOP_BITWISE_IOR); }
02926     break;
02927 
02928   case 83:
02929 
02930 /* Line 1806 of yacc.c  */
02931 #line 693 "../../src/gdb/c-exp.y"
02932     { write_exp_elt_opcode (BINOP_LOGICAL_AND); }
02933     break;
02934 
02935   case 84:
02936 
02937 /* Line 1806 of yacc.c  */
02938 #line 697 "../../src/gdb/c-exp.y"
02939     { write_exp_elt_opcode (BINOP_LOGICAL_OR); }
02940     break;
02941 
02942   case 85:
02943 
02944 /* Line 1806 of yacc.c  */
02945 #line 701 "../../src/gdb/c-exp.y"
02946     { write_exp_elt_opcode (TERNOP_COND); }
02947     break;
02948 
02949   case 86:
02950 
02951 /* Line 1806 of yacc.c  */
02952 #line 705 "../../src/gdb/c-exp.y"
02953     { write_exp_elt_opcode (BINOP_ASSIGN); }
02954     break;
02955 
02956   case 87:
02957 
02958 /* Line 1806 of yacc.c  */
02959 #line 709 "../../src/gdb/c-exp.y"
02960     { write_exp_elt_opcode (BINOP_ASSIGN_MODIFY);
02961                           write_exp_elt_opcode ((yyvsp[(2) - (3)].opcode));
02962                           write_exp_elt_opcode (BINOP_ASSIGN_MODIFY); }
02963     break;
02964 
02965   case 88:
02966 
02967 /* Line 1806 of yacc.c  */
02968 #line 715 "../../src/gdb/c-exp.y"
02969     { write_exp_elt_opcode (OP_LONG);
02970                           write_exp_elt_type ((yyvsp[(1) - (1)].typed_val_int).type);
02971                           write_exp_elt_longcst ((LONGEST)((yyvsp[(1) - (1)].typed_val_int).val));
02972                           write_exp_elt_opcode (OP_LONG); }
02973     break;
02974 
02975   case 89:
02976 
02977 /* Line 1806 of yacc.c  */
02978 #line 722 "../../src/gdb/c-exp.y"
02979     {
02980                           struct stoken_vector vec;
02981                           vec.len = 1;
02982                           vec.tokens = &(yyvsp[(1) - (1)].tsval);
02983                           write_exp_string_vector ((yyvsp[(1) - (1)].tsval).type, &vec);
02984                         }
02985     break;
02986 
02987   case 90:
02988 
02989 /* Line 1806 of yacc.c  */
02990 #line 731 "../../src/gdb/c-exp.y"
02991     { YYSTYPE val;
02992                           parse_number ((yyvsp[(1) - (1)].ssym).stoken.ptr, (yyvsp[(1) - (1)].ssym).stoken.length, 0, &val);
02993                           write_exp_elt_opcode (OP_LONG);
02994                           write_exp_elt_type (val.typed_val_int.type);
02995                           write_exp_elt_longcst ((LONGEST)val.typed_val_int.val);
02996                           write_exp_elt_opcode (OP_LONG);
02997                         }
02998     break;
02999 
03000   case 91:
03001 
03002 /* Line 1806 of yacc.c  */
03003 #line 742 "../../src/gdb/c-exp.y"
03004     { write_exp_elt_opcode (OP_DOUBLE);
03005                           write_exp_elt_type ((yyvsp[(1) - (1)].typed_val_float).type);
03006                           write_exp_elt_dblcst ((yyvsp[(1) - (1)].typed_val_float).dval);
03007                           write_exp_elt_opcode (OP_DOUBLE); }
03008     break;
03009 
03010   case 92:
03011 
03012 /* Line 1806 of yacc.c  */
03013 #line 749 "../../src/gdb/c-exp.y"
03014     { write_exp_elt_opcode (OP_DECFLOAT);
03015                           write_exp_elt_type ((yyvsp[(1) - (1)].typed_val_decfloat).type);
03016                           write_exp_elt_decfloatcst ((yyvsp[(1) - (1)].typed_val_decfloat).val);
03017                           write_exp_elt_opcode (OP_DECFLOAT); }
03018     break;
03019 
03020   case 94:
03021 
03022 /* Line 1806 of yacc.c  */
03023 #line 759 "../../src/gdb/c-exp.y"
03024     {
03025                           write_dollar_variable ((yyvsp[(1) - (1)].sval));
03026                         }
03027     break;
03028 
03029   case 95:
03030 
03031 /* Line 1806 of yacc.c  */
03032 #line 765 "../../src/gdb/c-exp.y"
03033     {
03034                           write_exp_elt_opcode (OP_OBJC_SELECTOR);
03035                           write_exp_string ((yyvsp[(3) - (4)].sval));
03036                           write_exp_elt_opcode (OP_OBJC_SELECTOR); }
03037     break;
03038 
03039   case 96:
03040 
03041 /* Line 1806 of yacc.c  */
03042 #line 772 "../../src/gdb/c-exp.y"
03043     { write_exp_elt_opcode (OP_LONG);
03044                           write_exp_elt_type (lookup_signed_typename
03045                                               (parse_language, parse_gdbarch,
03046                                                "int"));
03047                           CHECK_TYPEDEF ((yyvsp[(3) - (4)].tval));
03048                           write_exp_elt_longcst ((LONGEST) TYPE_LENGTH ((yyvsp[(3) - (4)].tval)));
03049                           write_exp_elt_opcode (OP_LONG); }
03050     break;
03051 
03052   case 97:
03053 
03054 /* Line 1806 of yacc.c  */
03055 #line 782 "../../src/gdb/c-exp.y"
03056     { write_exp_elt_opcode (UNOP_REINTERPRET_CAST); }
03057     break;
03058 
03059   case 98:
03060 
03061 /* Line 1806 of yacc.c  */
03062 #line 786 "../../src/gdb/c-exp.y"
03063     { write_exp_elt_opcode (UNOP_CAST_TYPE); }
03064     break;
03065 
03066   case 99:
03067 
03068 /* Line 1806 of yacc.c  */
03069 #line 790 "../../src/gdb/c-exp.y"
03070     { write_exp_elt_opcode (UNOP_DYNAMIC_CAST); }
03071     break;
03072 
03073   case 100:
03074 
03075 /* Line 1806 of yacc.c  */
03076 #line 794 "../../src/gdb/c-exp.y"
03077     { /* We could do more error checking here, but
03078                              it doesn't seem worthwhile.  */
03079                           write_exp_elt_opcode (UNOP_CAST_TYPE); }
03080     break;
03081 
03082   case 101:
03083 
03084 /* Line 1806 of yacc.c  */
03085 #line 801 "../../src/gdb/c-exp.y"
03086     {
03087                           /* We copy the string here, and not in the
03088                              lexer, to guarantee that we do not leak a
03089                              string.  Note that we follow the
03090                              NUL-termination convention of the
03091                              lexer.  */
03092                           struct typed_stoken *vec = XNEW (struct typed_stoken);
03093                           (yyval.svec).len = 1;
03094                           (yyval.svec).tokens = vec;
03095 
03096                           vec->type = (yyvsp[(1) - (1)].tsval).type;
03097                           vec->length = (yyvsp[(1) - (1)].tsval).length;
03098                           vec->ptr = xmalloc ((yyvsp[(1) - (1)].tsval).length + 1);
03099                           memcpy (vec->ptr, (yyvsp[(1) - (1)].tsval).ptr, (yyvsp[(1) - (1)].tsval).length + 1);
03100                         }
03101     break;
03102 
03103   case 102:
03104 
03105 /* Line 1806 of yacc.c  */
03106 #line 818 "../../src/gdb/c-exp.y"
03107     {
03108                           /* Note that we NUL-terminate here, but just
03109                              for convenience.  */
03110                           char *p;
03111                           ++(yyval.svec).len;
03112                           (yyval.svec).tokens = xrealloc ((yyval.svec).tokens,
03113                                                (yyval.svec).len * sizeof (struct typed_stoken));
03114 
03115                           p = xmalloc ((yyvsp[(2) - (2)].tsval).length + 1);
03116                           memcpy (p, (yyvsp[(2) - (2)].tsval).ptr, (yyvsp[(2) - (2)].tsval).length + 1);
03117 
03118                           (yyval.svec).tokens[(yyval.svec).len - 1].type = (yyvsp[(2) - (2)].tsval).type;
03119                           (yyval.svec).tokens[(yyval.svec).len - 1].length = (yyvsp[(2) - (2)].tsval).length;
03120                           (yyval.svec).tokens[(yyval.svec).len - 1].ptr = p;
03121                         }
03122     break;
03123 
03124   case 103:
03125 
03126 /* Line 1806 of yacc.c  */
03127 #line 836 "../../src/gdb/c-exp.y"
03128     {
03129                           int i;
03130                           enum c_string_type type = C_STRING;
03131 
03132                           for (i = 0; i < (yyvsp[(1) - (1)].svec).len; ++i)
03133                             {
03134                               switch ((yyvsp[(1) - (1)].svec).tokens[i].type)
03135                                 {
03136                                 case C_STRING:
03137                                   break;
03138                                 case C_WIDE_STRING:
03139                                 case C_STRING_16:
03140                                 case C_STRING_32:
03141                                   if (type != C_STRING
03142                                       && type != (yyvsp[(1) - (1)].svec).tokens[i].type)
03143                                     error (_("Undefined string concatenation."));
03144                                   type = (yyvsp[(1) - (1)].svec).tokens[i].type;
03145                                   break;
03146                                 default:
03147                                   /* internal error */
03148                                   internal_error (__FILE__, __LINE__,
03149                                                   "unrecognized type in string concatenation");
03150                                 }
03151                             }
03152 
03153                           write_exp_string_vector (type, &(yyvsp[(1) - (1)].svec));
03154                           for (i = 0; i < (yyvsp[(1) - (1)].svec).len; ++i)
03155                             xfree ((yyvsp[(1) - (1)].svec).tokens[i].ptr);
03156                           xfree ((yyvsp[(1) - (1)].svec).tokens);
03157                         }
03158     break;
03159 
03160   case 104:
03161 
03162 /* Line 1806 of yacc.c  */
03163 #line 871 "../../src/gdb/c-exp.y"
03164     { write_exp_elt_opcode (OP_OBJC_NSSTRING);
03165                           write_exp_string ((yyvsp[(1) - (1)].sval));
03166                           write_exp_elt_opcode (OP_OBJC_NSSTRING); }
03167     break;
03168 
03169   case 105:
03170 
03171 /* Line 1806 of yacc.c  */
03172 #line 878 "../../src/gdb/c-exp.y"
03173     { write_exp_elt_opcode (OP_LONG);
03174                           write_exp_elt_type (parse_type->builtin_bool);
03175                           write_exp_elt_longcst ((LONGEST) 1);
03176                           write_exp_elt_opcode (OP_LONG); }
03177     break;
03178 
03179   case 106:
03180 
03181 /* Line 1806 of yacc.c  */
03182 #line 885 "../../src/gdb/c-exp.y"
03183     { write_exp_elt_opcode (OP_LONG);
03184                           write_exp_elt_type (parse_type->builtin_bool);
03185                           write_exp_elt_longcst ((LONGEST) 0);
03186                           write_exp_elt_opcode (OP_LONG); }
03187     break;
03188 
03189   case 107:
03190 
03191 /* Line 1806 of yacc.c  */
03192 #line 894 "../../src/gdb/c-exp.y"
03193     {
03194                           if ((yyvsp[(1) - (1)].ssym).sym)
03195                             (yyval.bval) = SYMBOL_BLOCK_VALUE ((yyvsp[(1) - (1)].ssym).sym);
03196                           else
03197                             error (_("No file or function \"%s\"."),
03198                                    copy_name ((yyvsp[(1) - (1)].ssym).stoken));
03199                         }
03200     break;
03201 
03202   case 108:
03203 
03204 /* Line 1806 of yacc.c  */
03205 #line 902 "../../src/gdb/c-exp.y"
03206     {
03207                           (yyval.bval) = (yyvsp[(1) - (1)].bval);
03208                         }
03209     break;
03210 
03211   case 109:
03212 
03213 /* Line 1806 of yacc.c  */
03214 #line 908 "../../src/gdb/c-exp.y"
03215     { struct symbol *tem
03216                             = lookup_symbol (copy_name ((yyvsp[(3) - (3)].sval)), (yyvsp[(1) - (3)].bval),
03217                                              VAR_DOMAIN, NULL);
03218                           if (!tem || SYMBOL_CLASS (tem) != LOC_BLOCK)
03219                             error (_("No function \"%s\" in specified context."),
03220                                    copy_name ((yyvsp[(3) - (3)].sval)));
03221                           (yyval.bval) = SYMBOL_BLOCK_VALUE (tem); }
03222     break;
03223 
03224   case 110:
03225 
03226 /* Line 1806 of yacc.c  */
03227 #line 918 "../../src/gdb/c-exp.y"
03228     { struct symbol *sym = (yyvsp[(1) - (2)].ssym).sym;
03229 
03230                           if (sym == NULL || !SYMBOL_IS_ARGUMENT (sym)
03231                               || !symbol_read_needs_frame (sym))
03232                             error (_("@entry can be used only for function "
03233                                      "parameters, not for \"%s\""),
03234                                    copy_name ((yyvsp[(1) - (2)].ssym).stoken));
03235 
03236                           write_exp_elt_opcode (OP_VAR_ENTRY_VALUE);
03237                           write_exp_elt_sym (sym);
03238                           write_exp_elt_opcode (OP_VAR_ENTRY_VALUE);
03239                         }
03240     break;
03241 
03242   case 111:
03243 
03244 /* Line 1806 of yacc.c  */
03245 #line 933 "../../src/gdb/c-exp.y"
03246     { struct symbol *sym;
03247                           sym = lookup_symbol (copy_name ((yyvsp[(3) - (3)].sval)), (yyvsp[(1) - (3)].bval),
03248                                                VAR_DOMAIN, NULL);
03249                           if (sym == 0)
03250                             error (_("No symbol \"%s\" in specified context."),
03251                                    copy_name ((yyvsp[(3) - (3)].sval)));
03252                           if (symbol_read_needs_frame (sym))
03253                             {
03254                               if (innermost_block == 0
03255                                   || contained_in (block_found,
03256                                                    innermost_block))
03257                                 innermost_block = block_found;
03258                             }
03259 
03260                           write_exp_elt_opcode (OP_VAR_VALUE);
03261                           /* block_found is set by lookup_symbol.  */
03262                           write_exp_elt_block (block_found);
03263                           write_exp_elt_sym (sym);
03264                           write_exp_elt_opcode (OP_VAR_VALUE); }
03265     break;
03266 
03267   case 112:
03268 
03269 /* Line 1806 of yacc.c  */
03270 #line 955 "../../src/gdb/c-exp.y"
03271     {
03272                           struct type *type = (yyvsp[(1) - (3)].tsym).type;
03273                           CHECK_TYPEDEF (type);
03274                           if (TYPE_CODE (type) != TYPE_CODE_STRUCT
03275                               && TYPE_CODE (type) != TYPE_CODE_UNION
03276                               && TYPE_CODE (type) != TYPE_CODE_NAMESPACE)
03277                             error (_("`%s' is not defined as an aggregate type."),
03278                                    TYPE_SAFE_NAME (type));
03279 
03280                           write_exp_elt_opcode (OP_SCOPE);
03281                           write_exp_elt_type (type);
03282                           write_exp_string ((yyvsp[(3) - (3)].sval));
03283                           write_exp_elt_opcode (OP_SCOPE);
03284                         }
03285     break;
03286 
03287   case 113:
03288 
03289 /* Line 1806 of yacc.c  */
03290 #line 970 "../../src/gdb/c-exp.y"
03291     {
03292                           struct type *type = (yyvsp[(1) - (4)].tsym).type;
03293                           struct stoken tmp_token;
03294                           char *buf;
03295 
03296                           CHECK_TYPEDEF (type);
03297                           if (TYPE_CODE (type) != TYPE_CODE_STRUCT
03298                               && TYPE_CODE (type) != TYPE_CODE_UNION
03299                               && TYPE_CODE (type) != TYPE_CODE_NAMESPACE)
03300                             error (_("`%s' is not defined as an aggregate type."),
03301                                    TYPE_SAFE_NAME (type));
03302                           buf = alloca ((yyvsp[(4) - (4)].sval).length + 2);
03303                           tmp_token.ptr = buf;
03304                           tmp_token.length = (yyvsp[(4) - (4)].sval).length + 1;
03305                           buf[0] = '~';
03306                           memcpy (buf+1, (yyvsp[(4) - (4)].sval).ptr, (yyvsp[(4) - (4)].sval).length);
03307                           buf[tmp_token.length] = 0;
03308 
03309                           /* Check for valid destructor name.  */
03310                           destructor_name_p (tmp_token.ptr, (yyvsp[(1) - (4)].tsym).type);
03311                           write_exp_elt_opcode (OP_SCOPE);
03312                           write_exp_elt_type (type);
03313                           write_exp_string (tmp_token);
03314                           write_exp_elt_opcode (OP_SCOPE);
03315                         }
03316     break;
03317 
03318   case 114:
03319 
03320 /* Line 1806 of yacc.c  */
03321 #line 996 "../../src/gdb/c-exp.y"
03322     {
03323                           char *copy = copy_name ((yyvsp[(3) - (5)].sval));
03324                           error (_("No type \"%s\" within class "
03325                                    "or namespace \"%s\"."),
03326                                  copy, TYPE_SAFE_NAME ((yyvsp[(1) - (5)].tsym).type));
03327                         }
03328     break;
03329 
03330   case 116:
03331 
03332 /* Line 1806 of yacc.c  */
03333 #line 1006 "../../src/gdb/c-exp.y"
03334     {
03335                           char *name = copy_name ((yyvsp[(2) - (2)].ssym).stoken);
03336                           struct symbol *sym;
03337                           struct bound_minimal_symbol msymbol;
03338 
03339                           sym =
03340                             lookup_symbol (name, (const struct block *) NULL,
03341                                            VAR_DOMAIN, NULL);
03342                           if (sym)
03343                             {
03344                               write_exp_elt_opcode (OP_VAR_VALUE);
03345                               write_exp_elt_block (NULL);
03346                               write_exp_elt_sym (sym);
03347                               write_exp_elt_opcode (OP_VAR_VALUE);
03348                               break;
03349                             }
03350 
03351                           msymbol = lookup_bound_minimal_symbol (name);
03352                           if (msymbol.minsym != NULL)
03353                             write_exp_msymbol (msymbol);
03354                           else if (!have_full_symbols () && !have_partial_symbols ())
03355                             error (_("No symbol table is loaded.  Use the \"file\" command."));
03356                           else
03357                             error (_("No symbol \"%s\" in current context."), name);
03358                         }
03359     break;
03360 
03361   case 117:
03362 
03363 /* Line 1806 of yacc.c  */
03364 #line 1034 "../../src/gdb/c-exp.y"
03365     { struct symbol *sym = (yyvsp[(1) - (1)].ssym).sym;
03366 
03367                           if (sym)
03368                             {
03369                               if (symbol_read_needs_frame (sym))
03370                                 {
03371                                   if (innermost_block == 0
03372                                       || contained_in (block_found, 
03373                                                        innermost_block))
03374                                     innermost_block = block_found;
03375                                 }
03376 
03377                               write_exp_elt_opcode (OP_VAR_VALUE);
03378                               /* We want to use the selected frame, not
03379                                  another more inner frame which happens to
03380                                  be in the same block.  */
03381                               write_exp_elt_block (NULL);
03382                               write_exp_elt_sym (sym);
03383                               write_exp_elt_opcode (OP_VAR_VALUE);
03384                             }
03385                           else if ((yyvsp[(1) - (1)].ssym).is_a_field_of_this)
03386                             {
03387                               /* C++: it hangs off of `this'.  Must
03388                                  not inadvertently convert from a method call
03389                                  to data ref.  */
03390                               if (innermost_block == 0
03391                                   || contained_in (block_found,
03392                                                    innermost_block))
03393                                 innermost_block = block_found;
03394                               write_exp_elt_opcode (OP_THIS);
03395                               write_exp_elt_opcode (OP_THIS);
03396                               write_exp_elt_opcode (STRUCTOP_PTR);
03397                               write_exp_string ((yyvsp[(1) - (1)].ssym).stoken);
03398                               write_exp_elt_opcode (STRUCTOP_PTR);
03399                             }
03400                           else
03401                             {
03402                               struct bound_minimal_symbol msymbol;
03403                               char *arg = copy_name ((yyvsp[(1) - (1)].ssym).stoken);
03404 
03405                               msymbol =
03406                                 lookup_bound_minimal_symbol (arg);
03407                               if (msymbol.minsym != NULL)
03408                                 write_exp_msymbol (msymbol);
03409                               else if (!have_full_symbols () && !have_partial_symbols ())
03410                                 error (_("No symbol table is loaded.  Use the \"file\" command."));
03411                               else
03412                                 error (_("No symbol \"%s\" in current context."),
03413                                        copy_name ((yyvsp[(1) - (1)].ssym).stoken));
03414                             }
03415                         }
03416     break;
03417 
03418   case 118:
03419 
03420 /* Line 1806 of yacc.c  */
03421 #line 1088 "../../src/gdb/c-exp.y"
03422     { insert_type_address_space (copy_name ((yyvsp[(2) - (2)].ssym).stoken)); }
03423     break;
03424 
03425   case 126:
03426 
03427 /* Line 1806 of yacc.c  */
03428 #line 1109 "../../src/gdb/c-exp.y"
03429     { insert_type (tp_pointer); }
03430     break;
03431 
03432   case 128:
03433 
03434 /* Line 1806 of yacc.c  */
03435 #line 1112 "../../src/gdb/c-exp.y"
03436     { insert_type (tp_pointer); }
03437     break;
03438 
03439   case 130:
03440 
03441 /* Line 1806 of yacc.c  */
03442 #line 1115 "../../src/gdb/c-exp.y"
03443     { insert_type (tp_reference); }
03444     break;
03445 
03446   case 131:
03447 
03448 /* Line 1806 of yacc.c  */
03449 #line 1117 "../../src/gdb/c-exp.y"
03450     { insert_type (tp_reference); }
03451     break;
03452 
03453   case 132:
03454 
03455 /* Line 1806 of yacc.c  */
03456 #line 1121 "../../src/gdb/c-exp.y"
03457     {
03458                           (yyval.type_stack) = get_type_stack ();
03459                           /* This cleanup is eventually run by
03460                              c_parse.  */
03461                           make_cleanup (type_stack_cleanup, (yyval.type_stack));
03462                         }
03463     break;
03464 
03465   case 133:
03466 
03467 /* Line 1806 of yacc.c  */
03468 #line 1130 "../../src/gdb/c-exp.y"
03469     { (yyval.type_stack) = append_type_stack ((yyvsp[(2) - (2)].type_stack), (yyvsp[(1) - (2)].type_stack)); }
03470     break;
03471 
03472   case 136:
03473 
03474 /* Line 1806 of yacc.c  */
03475 #line 1136 "../../src/gdb/c-exp.y"
03476     { (yyval.type_stack) = (yyvsp[(2) - (3)].type_stack); }
03477     break;
03478 
03479   case 137:
03480 
03481 /* Line 1806 of yacc.c  */
03482 #line 1138 "../../src/gdb/c-exp.y"
03483     {
03484                           push_type_stack ((yyvsp[(1) - (2)].type_stack));
03485                           push_type_int ((yyvsp[(2) - (2)].lval));
03486                           push_type (tp_array);
03487                           (yyval.type_stack) = get_type_stack ();
03488                         }
03489     break;
03490 
03491   case 138:
03492 
03493 /* Line 1806 of yacc.c  */
03494 #line 1145 "../../src/gdb/c-exp.y"
03495     {
03496                           push_type_int ((yyvsp[(1) - (1)].lval));
03497                           push_type (tp_array);
03498                           (yyval.type_stack) = get_type_stack ();
03499                         }
03500     break;
03501 
03502   case 139:
03503 
03504 /* Line 1806 of yacc.c  */
03505 #line 1152 "../../src/gdb/c-exp.y"
03506     {
03507                           push_type_stack ((yyvsp[(1) - (2)].type_stack));
03508                           push_typelist ((yyvsp[(2) - (2)].tvec));
03509                           (yyval.type_stack) = get_type_stack ();
03510                         }
03511     break;
03512 
03513   case 140:
03514 
03515 /* Line 1806 of yacc.c  */
03516 #line 1158 "../../src/gdb/c-exp.y"
03517     {
03518                           push_typelist ((yyvsp[(1) - (1)].tvec));
03519                           (yyval.type_stack) = get_type_stack ();
03520                         }
03521     break;
03522 
03523   case 141:
03524 
03525 /* Line 1806 of yacc.c  */
03526 #line 1165 "../../src/gdb/c-exp.y"
03527     { (yyval.lval) = -1; }
03528     break;
03529 
03530   case 142:
03531 
03532 /* Line 1806 of yacc.c  */
03533 #line 1167 "../../src/gdb/c-exp.y"
03534     { (yyval.lval) = -1; }
03535     break;
03536 
03537   case 143:
03538 
03539 /* Line 1806 of yacc.c  */
03540 #line 1169 "../../src/gdb/c-exp.y"
03541     { (yyval.lval) = (yyvsp[(2) - (3)].typed_val_int).val; }
03542     break;
03543 
03544   case 144:
03545 
03546 /* Line 1806 of yacc.c  */
03547 #line 1171 "../../src/gdb/c-exp.y"
03548     { (yyval.lval) = (yyvsp[(2) - (3)].typed_val_int).val; }
03549     break;
03550 
03551   case 145:
03552 
03553 /* Line 1806 of yacc.c  */
03554 #line 1175 "../../src/gdb/c-exp.y"
03555     { (yyval.tvec) = NULL; }
03556     break;
03557 
03558   case 146:
03559 
03560 /* Line 1806 of yacc.c  */
03561 #line 1177 "../../src/gdb/c-exp.y"
03562     { (yyval.tvec) = (yyvsp[(2) - (3)].tvec); }
03563     break;
03564 
03565   case 148:
03566 
03567 /* Line 1806 of yacc.c  */
03568 #line 1193 "../../src/gdb/c-exp.y"
03569     { (yyval.tval) = (yyvsp[(1) - (1)].tsym).type; }
03570     break;
03571 
03572   case 149:
03573 
03574 /* Line 1806 of yacc.c  */
03575 #line 1195 "../../src/gdb/c-exp.y"
03576     { (yyval.tval) = lookup_signed_typename (parse_language,
03577                                                        parse_gdbarch,
03578                                                        "int"); }
03579     break;
03580 
03581   case 150:
03582 
03583 /* Line 1806 of yacc.c  */
03584 #line 1199 "../../src/gdb/c-exp.y"
03585     { (yyval.tval) = lookup_signed_typename (parse_language,
03586                                                        parse_gdbarch,
03587                                                        "long"); }
03588     break;
03589 
03590   case 151:
03591 
03592 /* Line 1806 of yacc.c  */
03593 #line 1203 "../../src/gdb/c-exp.y"
03594     { (yyval.tval) = lookup_signed_typename (parse_language,
03595                                                        parse_gdbarch,
03596                                                        "short"); }
03597     break;
03598 
03599   case 152:
03600 
03601 /* Line 1806 of yacc.c  */
03602 #line 1207 "../../src/gdb/c-exp.y"
03603     { (yyval.tval) = lookup_signed_typename (parse_language,
03604                                                        parse_gdbarch,
03605                                                        "long"); }
03606     break;
03607 
03608   case 153:
03609 
03610 /* Line 1806 of yacc.c  */
03611 #line 1211 "../../src/gdb/c-exp.y"
03612     { (yyval.tval) = lookup_signed_typename (parse_language,
03613                                                        parse_gdbarch,
03614                                                        "long"); }
03615     break;
03616 
03617   case 154:
03618 
03619 /* Line 1806 of yacc.c  */
03620 #line 1215 "../../src/gdb/c-exp.y"
03621     { (yyval.tval) = lookup_signed_typename (parse_language,
03622                                                        parse_gdbarch,
03623                                                        "long"); }
03624     break;
03625 
03626   case 155:
03627 
03628 /* Line 1806 of yacc.c  */
03629 #line 1219 "../../src/gdb/c-exp.y"
03630     { (yyval.tval) = lookup_signed_typename (parse_language,
03631                                                        parse_gdbarch,
03632                                                        "long"); }
03633     break;
03634 
03635   case 156:
03636 
03637 /* Line 1806 of yacc.c  */
03638 #line 1223 "../../src/gdb/c-exp.y"
03639     { (yyval.tval) = lookup_unsigned_typename (parse_language,
03640                                                          parse_gdbarch,
03641                                                          "long"); }
03642     break;
03643 
03644   case 157:
03645 
03646 /* Line 1806 of yacc.c  */
03647 #line 1227 "../../src/gdb/c-exp.y"
03648     { (yyval.tval) = lookup_unsigned_typename (parse_language,
03649                                                          parse_gdbarch,
03650                                                          "long"); }
03651     break;
03652 
03653   case 158:
03654 
03655 /* Line 1806 of yacc.c  */
03656 #line 1231 "../../src/gdb/c-exp.y"
03657     { (yyval.tval) = lookup_unsigned_typename (parse_language,
03658                                                          parse_gdbarch,
03659                                                          "long"); }
03660     break;
03661 
03662   case 159:
03663 
03664 /* Line 1806 of yacc.c  */
03665 #line 1235 "../../src/gdb/c-exp.y"
03666     { (yyval.tval) = lookup_signed_typename (parse_language,
03667                                                        parse_gdbarch,
03668                                                        "long long"); }
03669     break;
03670 
03671   case 160:
03672 
03673 /* Line 1806 of yacc.c  */
03674 #line 1239 "../../src/gdb/c-exp.y"
03675     { (yyval.tval) = lookup_signed_typename (parse_language,
03676                                                        parse_gdbarch,
03677                                                        "long long"); }
03678     break;
03679 
03680   case 161:
03681 
03682 /* Line 1806 of yacc.c  */
03683 #line 1243 "../../src/gdb/c-exp.y"
03684     { (yyval.tval) = lookup_signed_typename (parse_language,
03685                                                        parse_gdbarch,
03686                                                        "long long"); }
03687     break;
03688 
03689   case 162:
03690 
03691 /* Line 1806 of yacc.c  */
03692 #line 1247 "../../src/gdb/c-exp.y"
03693     { (yyval.tval) = lookup_signed_typename (parse_language,
03694                                                        parse_gdbarch,
03695                                                        "long long"); }
03696     break;
03697 
03698   case 163:
03699 
03700 /* Line 1806 of yacc.c  */
03701 #line 1251 "../../src/gdb/c-exp.y"
03702     { (yyval.tval) = lookup_signed_typename (parse_language,
03703                                                        parse_gdbarch,
03704                                                        "long long"); }
03705     break;
03706 
03707   case 164:
03708 
03709 /* Line 1806 of yacc.c  */
03710 #line 1255 "../../src/gdb/c-exp.y"
03711     { (yyval.tval) = lookup_signed_typename (parse_language,
03712                                                        parse_gdbarch,
03713                                                        "long long"); }
03714     break;
03715 
03716   case 165:
03717 
03718 /* Line 1806 of yacc.c  */
03719 #line 1259 "../../src/gdb/c-exp.y"
03720     { (yyval.tval) = lookup_unsigned_typename (parse_language,
03721                                                          parse_gdbarch,
03722                                                          "long long"); }
03723     break;
03724 
03725   case 166:
03726 
03727 /* Line 1806 of yacc.c  */
03728 #line 1263 "../../src/gdb/c-exp.y"
03729     { (yyval.tval) = lookup_unsigned_typename (parse_language,
03730                                                          parse_gdbarch,
03731                                                          "long long"); }
03732     break;
03733 
03734   case 167:
03735 
03736 /* Line 1806 of yacc.c  */
03737 #line 1267 "../../src/gdb/c-exp.y"
03738     { (yyval.tval) = lookup_unsigned_typename (parse_language,
03739                                                          parse_gdbarch,
03740                                                          "long long"); }
03741     break;
03742 
03743   case 168:
03744 
03745 /* Line 1806 of yacc.c  */
03746 #line 1271 "../../src/gdb/c-exp.y"
03747     { (yyval.tval) = lookup_unsigned_typename (parse_language,
03748                                                          parse_gdbarch,
03749                                                          "long long"); }
03750     break;
03751 
03752   case 169:
03753 
03754 /* Line 1806 of yacc.c  */
03755 #line 1275 "../../src/gdb/c-exp.y"
03756     { (yyval.tval) = lookup_signed_typename (parse_language,
03757                                                        parse_gdbarch,
03758                                                        "short"); }
03759     break;
03760 
03761   case 170:
03762 
03763 /* Line 1806 of yacc.c  */
03764 #line 1279 "../../src/gdb/c-exp.y"
03765     { (yyval.tval) = lookup_signed_typename (parse_language,
03766                                                        parse_gdbarch,
03767                                                        "short"); }
03768     break;
03769 
03770   case 171:
03771 
03772 /* Line 1806 of yacc.c  */
03773 #line 1283 "../../src/gdb/c-exp.y"
03774     { (yyval.tval) = lookup_signed_typename (parse_language,
03775                                                        parse_gdbarch,
03776                                                        "short"); }
03777     break;
03778 
03779   case 172:
03780 
03781 /* Line 1806 of yacc.c  */
03782 #line 1287 "../../src/gdb/c-exp.y"
03783     { (yyval.tval) = lookup_unsigned_typename (parse_language,
03784                                                          parse_gdbarch,
03785                                                          "short"); }
03786     break;
03787 
03788   case 173:
03789 
03790 /* Line 1806 of yacc.c  */
03791 #line 1291 "../../src/gdb/c-exp.y"
03792     { (yyval.tval) = lookup_unsigned_typename (parse_language,
03793                                                          parse_gdbarch,
03794                                                          "short"); }
03795     break;
03796 
03797   case 174:
03798 
03799 /* Line 1806 of yacc.c  */
03800 #line 1295 "../../src/gdb/c-exp.y"
03801     { (yyval.tval) = lookup_unsigned_typename (parse_language,
03802                                                          parse_gdbarch,
03803                                                          "short"); }
03804     break;
03805 
03806   case 175:
03807 
03808 /* Line 1806 of yacc.c  */
03809 #line 1299 "../../src/gdb/c-exp.y"
03810     { (yyval.tval) = lookup_typename (parse_language, parse_gdbarch,
03811                                                 "double", (struct block *) NULL,
03812                                                 0); }
03813     break;
03814 
03815   case 176:
03816 
03817 /* Line 1806 of yacc.c  */
03818 #line 1303 "../../src/gdb/c-exp.y"
03819     { (yyval.tval) = lookup_typename (parse_language, parse_gdbarch,
03820                                                 "long double",
03821                                                 (struct block *) NULL, 0); }
03822     break;
03823 
03824   case 177:
03825 
03826 /* Line 1806 of yacc.c  */
03827 #line 1307 "../../src/gdb/c-exp.y"
03828     { (yyval.tval) = lookup_struct (copy_name ((yyvsp[(2) - (2)].sval)),
03829                                               expression_context_block); }
03830     break;
03831 
03832   case 178:
03833 
03834 /* Line 1806 of yacc.c  */
03835 #line 1310 "../../src/gdb/c-exp.y"
03836     {
03837                           mark_completion_tag (TYPE_CODE_STRUCT, "", 0);
03838                           (yyval.tval) = NULL;
03839                         }
03840     break;
03841 
03842   case 179:
03843 
03844 /* Line 1806 of yacc.c  */
03845 #line 1315 "../../src/gdb/c-exp.y"
03846     {
03847                           mark_completion_tag (TYPE_CODE_STRUCT, (yyvsp[(2) - (3)].sval).ptr,
03848                                                (yyvsp[(2) - (3)].sval).length);
03849                           (yyval.tval) = NULL;
03850                         }
03851     break;
03852 
03853   case 180:
03854 
03855 /* Line 1806 of yacc.c  */
03856 #line 1321 "../../src/gdb/c-exp.y"
03857     { (yyval.tval) = lookup_struct (copy_name ((yyvsp[(2) - (2)].sval)),
03858                                               expression_context_block); }
03859     break;
03860 
03861   case 181:
03862 
03863 /* Line 1806 of yacc.c  */
03864 #line 1324 "../../src/gdb/c-exp.y"
03865     {
03866                           mark_completion_tag (TYPE_CODE_CLASS, "", 0);
03867                           (yyval.tval) = NULL;
03868                         }
03869     break;
03870 
03871   case 182:
03872 
03873 /* Line 1806 of yacc.c  */
03874 #line 1329 "../../src/gdb/c-exp.y"
03875     {
03876                           mark_completion_tag (TYPE_CODE_CLASS, (yyvsp[(2) - (3)].sval).ptr,
03877                                                (yyvsp[(2) - (3)].sval).length);
03878                           (yyval.tval) = NULL;
03879                         }
03880     break;
03881 
03882   case 183:
03883 
03884 /* Line 1806 of yacc.c  */
03885 #line 1335 "../../src/gdb/c-exp.y"
03886     { (yyval.tval) = lookup_union (copy_name ((yyvsp[(2) - (2)].sval)),
03887                                              expression_context_block); }
03888     break;
03889 
03890   case 184:
03891 
03892 /* Line 1806 of yacc.c  */
03893 #line 1338 "../../src/gdb/c-exp.y"
03894     {
03895                           mark_completion_tag (TYPE_CODE_UNION, "", 0);
03896                           (yyval.tval) = NULL;
03897                         }
03898     break;
03899 
03900   case 185:
03901 
03902 /* Line 1806 of yacc.c  */
03903 #line 1343 "../../src/gdb/c-exp.y"
03904     {
03905                           mark_completion_tag (TYPE_CODE_UNION, (yyvsp[(2) - (3)].sval).ptr,
03906                                                (yyvsp[(2) - (3)].sval).length);
03907                           (yyval.tval) = NULL;
03908                         }
03909     break;
03910 
03911   case 186:
03912 
03913 /* Line 1806 of yacc.c  */
03914 #line 1349 "../../src/gdb/c-exp.y"
03915     { (yyval.tval) = lookup_enum (copy_name ((yyvsp[(2) - (2)].sval)),
03916                                             expression_context_block); }
03917     break;
03918 
03919   case 187:
03920 
03921 /* Line 1806 of yacc.c  */
03922 #line 1352 "../../src/gdb/c-exp.y"
03923     {
03924                           mark_completion_tag (TYPE_CODE_ENUM, "", 0);
03925                           (yyval.tval) = NULL;
03926                         }
03927     break;
03928 
03929   case 188:
03930 
03931 /* Line 1806 of yacc.c  */
03932 #line 1357 "../../src/gdb/c-exp.y"
03933     {
03934                           mark_completion_tag (TYPE_CODE_ENUM, (yyvsp[(2) - (3)].sval).ptr,
03935                                                (yyvsp[(2) - (3)].sval).length);
03936                           (yyval.tval) = NULL;
03937                         }
03938     break;
03939 
03940   case 189:
03941 
03942 /* Line 1806 of yacc.c  */
03943 #line 1363 "../../src/gdb/c-exp.y"
03944     { (yyval.tval) = lookup_unsigned_typename (parse_language,
03945                                                          parse_gdbarch,
03946                                                          TYPE_NAME((yyvsp[(2) - (2)].tsym).type)); }
03947     break;
03948 
03949   case 190:
03950 
03951 /* Line 1806 of yacc.c  */
03952 #line 1367 "../../src/gdb/c-exp.y"
03953     { (yyval.tval) = lookup_unsigned_typename (parse_language,
03954                                                          parse_gdbarch,
03955                                                          "int"); }
03956     break;
03957 
03958   case 191:
03959 
03960 /* Line 1806 of yacc.c  */
03961 #line 1371 "../../src/gdb/c-exp.y"
03962     { (yyval.tval) = lookup_signed_typename (parse_language,
03963                                                        parse_gdbarch,
03964                                                        TYPE_NAME((yyvsp[(2) - (2)].tsym).type)); }
03965     break;
03966 
03967   case 192:
03968 
03969 /* Line 1806 of yacc.c  */
03970 #line 1375 "../../src/gdb/c-exp.y"
03971     { (yyval.tval) = lookup_signed_typename (parse_language,
03972                                                        parse_gdbarch,
03973                                                        "int"); }
03974     break;
03975 
03976   case 193:
03977 
03978 /* Line 1806 of yacc.c  */
03979 #line 1382 "../../src/gdb/c-exp.y"
03980     { (yyval.tval) = lookup_template_type(copy_name((yyvsp[(2) - (5)].sval)), (yyvsp[(4) - (5)].tval),
03981                                                     expression_context_block);
03982                         }
03983     break;
03984 
03985   case 194:
03986 
03987 /* Line 1806 of yacc.c  */
03988 #line 1386 "../../src/gdb/c-exp.y"
03989     { (yyval.tval) = follow_types ((yyvsp[(2) - (2)].tval)); }
03990     break;
03991 
03992   case 195:
03993 
03994 /* Line 1806 of yacc.c  */
03995 #line 1388 "../../src/gdb/c-exp.y"
03996     { (yyval.tval) = follow_types ((yyvsp[(1) - (2)].tval)); }
03997     break;
03998 
03999   case 197:
04000 
04001 /* Line 1806 of yacc.c  */
04002 #line 1393 "../../src/gdb/c-exp.y"
04003     {
04004                   (yyval.tsym).stoken.ptr = "int";
04005                   (yyval.tsym).stoken.length = 3;
04006                   (yyval.tsym).type = lookup_signed_typename (parse_language,
04007                                                     parse_gdbarch,
04008                                                     "int");
04009                 }
04010     break;
04011 
04012   case 198:
04013 
04014 /* Line 1806 of yacc.c  */
04015 #line 1401 "../../src/gdb/c-exp.y"
04016     {
04017                   (yyval.tsym).stoken.ptr = "long";
04018                   (yyval.tsym).stoken.length = 4;
04019                   (yyval.tsym).type = lookup_signed_typename (parse_language,
04020                                                     parse_gdbarch,
04021                                                     "long");
04022                 }
04023     break;
04024 
04025   case 199:
04026 
04027 /* Line 1806 of yacc.c  */
04028 #line 1409 "../../src/gdb/c-exp.y"
04029     {
04030                   (yyval.tsym).stoken.ptr = "short";
04031                   (yyval.tsym).stoken.length = 5;
04032                   (yyval.tsym).type = lookup_signed_typename (parse_language,
04033                                                     parse_gdbarch,
04034                                                     "short");
04035                 }
04036     break;
04037 
04038   case 200:
04039 
04040 /* Line 1806 of yacc.c  */
04041 #line 1420 "../../src/gdb/c-exp.y"
04042     { check_parameter_typelist ((yyvsp[(1) - (1)].tvec)); }
04043     break;
04044 
04045   case 201:
04046 
04047 /* Line 1806 of yacc.c  */
04048 #line 1422 "../../src/gdb/c-exp.y"
04049     {
04050                           VEC_safe_push (type_ptr, (yyvsp[(1) - (3)].tvec), NULL);
04051                           check_parameter_typelist ((yyvsp[(1) - (3)].tvec));
04052                           (yyval.tvec) = (yyvsp[(1) - (3)].tvec);
04053                         }
04054     break;
04055 
04056   case 202:
04057 
04058 /* Line 1806 of yacc.c  */
04059 #line 1431 "../../src/gdb/c-exp.y"
04060     {
04061                   VEC (type_ptr) *typelist = NULL;
04062                   VEC_safe_push (type_ptr, typelist, (yyvsp[(1) - (1)].tval));
04063                   (yyval.tvec) = typelist;
04064                 }
04065     break;
04066 
04067   case 203:
04068 
04069 /* Line 1806 of yacc.c  */
04070 #line 1437 "../../src/gdb/c-exp.y"
04071     {
04072                   VEC_safe_push (type_ptr, (yyvsp[(1) - (3)].tvec), (yyvsp[(3) - (3)].tval));
04073                   (yyval.tvec) = (yyvsp[(1) - (3)].tvec);
04074                 }
04075     break;
04076 
04077   case 205:
04078 
04079 /* Line 1806 of yacc.c  */
04080 #line 1445 "../../src/gdb/c-exp.y"
04081     {
04082                   push_type_stack ((yyvsp[(2) - (2)].type_stack));
04083                   (yyval.tval) = follow_types ((yyvsp[(1) - (2)].tval));
04084                 }
04085     break;
04086 
04087   case 206:
04088 
04089 /* Line 1806 of yacc.c  */
04090 #line 1452 "../../src/gdb/c-exp.y"
04091     { (yyval.tval) = follow_types ((yyvsp[(1) - (2)].tval)); }
04092     break;
04093 
04094   case 211:
04095 
04096 /* Line 1806 of yacc.c  */
04097 #line 1464 "../../src/gdb/c-exp.y"
04098     { insert_type (tp_const);
04099                           insert_type (tp_volatile); 
04100                         }
04101     break;
04102 
04103   case 212:
04104 
04105 /* Line 1806 of yacc.c  */
04106 #line 1468 "../../src/gdb/c-exp.y"
04107     { insert_type (tp_const); }
04108     break;
04109 
04110   case 213:
04111 
04112 /* Line 1806 of yacc.c  */
04113 #line 1470 "../../src/gdb/c-exp.y"
04114     { insert_type (tp_volatile); }
04115     break;
04116 
04117   case 214:
04118 
04119 /* Line 1806 of yacc.c  */
04120 #line 1474 "../../src/gdb/c-exp.y"
04121     { (yyval.sval) = operator_stoken (" new"); }
04122     break;
04123 
04124   case 215:
04125 
04126 /* Line 1806 of yacc.c  */
04127 #line 1476 "../../src/gdb/c-exp.y"
04128     { (yyval.sval) = operator_stoken (" delete"); }
04129     break;
04130 
04131   case 216:
04132 
04133 /* Line 1806 of yacc.c  */
04134 #line 1478 "../../src/gdb/c-exp.y"
04135     { (yyval.sval) = operator_stoken (" new[]"); }
04136     break;
04137 
04138   case 217:
04139 
04140 /* Line 1806 of yacc.c  */
04141 #line 1480 "../../src/gdb/c-exp.y"
04142     { (yyval.sval) = operator_stoken (" delete[]"); }
04143     break;
04144 
04145   case 218:
04146 
04147 /* Line 1806 of yacc.c  */
04148 #line 1482 "../../src/gdb/c-exp.y"
04149     { (yyval.sval) = operator_stoken (" new[]"); }
04150     break;
04151 
04152   case 219:
04153 
04154 /* Line 1806 of yacc.c  */
04155 #line 1484 "../../src/gdb/c-exp.y"
04156     { (yyval.sval) = operator_stoken (" delete[]"); }
04157     break;
04158 
04159   case 220:
04160 
04161 /* Line 1806 of yacc.c  */
04162 #line 1486 "../../src/gdb/c-exp.y"
04163     { (yyval.sval) = operator_stoken ("+"); }
04164     break;
04165 
04166   case 221:
04167 
04168 /* Line 1806 of yacc.c  */
04169 #line 1488 "../../src/gdb/c-exp.y"
04170     { (yyval.sval) = operator_stoken ("-"); }
04171     break;
04172 
04173   case 222:
04174 
04175 /* Line 1806 of yacc.c  */
04176 #line 1490 "../../src/gdb/c-exp.y"
04177     { (yyval.sval) = operator_stoken ("*"); }
04178     break;
04179 
04180   case 223:
04181 
04182 /* Line 1806 of yacc.c  */
04183 #line 1492 "../../src/gdb/c-exp.y"
04184     { (yyval.sval) = operator_stoken ("/"); }
04185     break;
04186 
04187   case 224:
04188 
04189 /* Line 1806 of yacc.c  */
04190 #line 1494 "../../src/gdb/c-exp.y"
04191     { (yyval.sval) = operator_stoken ("%"); }
04192     break;
04193 
04194   case 225:
04195 
04196 /* Line 1806 of yacc.c  */
04197 #line 1496 "../../src/gdb/c-exp.y"
04198     { (yyval.sval) = operator_stoken ("^"); }
04199     break;
04200 
04201   case 226:
04202 
04203 /* Line 1806 of yacc.c  */
04204 #line 1498 "../../src/gdb/c-exp.y"
04205     { (yyval.sval) = operator_stoken ("&"); }
04206     break;
04207 
04208   case 227:
04209 
04210 /* Line 1806 of yacc.c  */
04211 #line 1500 "../../src/gdb/c-exp.y"
04212     { (yyval.sval) = operator_stoken ("|"); }
04213     break;
04214 
04215   case 228:
04216 
04217 /* Line 1806 of yacc.c  */
04218 #line 1502 "../../src/gdb/c-exp.y"
04219     { (yyval.sval) = operator_stoken ("~"); }
04220     break;
04221 
04222   case 229:
04223 
04224 /* Line 1806 of yacc.c  */
04225 #line 1504 "../../src/gdb/c-exp.y"
04226     { (yyval.sval) = operator_stoken ("!"); }
04227     break;
04228 
04229   case 230:
04230 
04231 /* Line 1806 of yacc.c  */
04232 #line 1506 "../../src/gdb/c-exp.y"
04233     { (yyval.sval) = operator_stoken ("="); }
04234     break;
04235 
04236   case 231:
04237 
04238 /* Line 1806 of yacc.c  */
04239 #line 1508 "../../src/gdb/c-exp.y"
04240     { (yyval.sval) = operator_stoken ("<"); }
04241     break;
04242 
04243   case 232:
04244 
04245 /* Line 1806 of yacc.c  */
04246 #line 1510 "../../src/gdb/c-exp.y"
04247     { (yyval.sval) = operator_stoken (">"); }
04248     break;
04249 
04250   case 233:
04251 
04252 /* Line 1806 of yacc.c  */
04253 #line 1512 "../../src/gdb/c-exp.y"
04254     { const char *op = "unknown";
04255                           switch ((yyvsp[(2) - (2)].opcode))
04256                             {
04257                             case BINOP_RSH:
04258                               op = ">>=";
04259                               break;
04260                             case BINOP_LSH:
04261                               op = "<<=";
04262                               break;
04263                             case BINOP_ADD:
04264                               op = "+=";
04265                               break;
04266                             case BINOP_SUB:
04267                               op = "-=";
04268                               break;
04269                             case BINOP_MUL:
04270                               op = "*=";
04271                               break;
04272                             case BINOP_DIV:
04273                               op = "/=";
04274                               break;
04275                             case BINOP_REM:
04276                               op = "%=";
04277                               break;
04278                             case BINOP_BITWISE_IOR:
04279                               op = "|=";
04280                               break;
04281                             case BINOP_BITWISE_AND:
04282                               op = "&=";
04283                               break;
04284                             case BINOP_BITWISE_XOR:
04285                               op = "^=";
04286                               break;
04287                             default:
04288                               break;
04289                             }
04290 
04291                           (yyval.sval) = operator_stoken (op);
04292                         }
04293     break;
04294 
04295   case 234:
04296 
04297 /* Line 1806 of yacc.c  */
04298 #line 1552 "../../src/gdb/c-exp.y"
04299     { (yyval.sval) = operator_stoken ("<<"); }
04300     break;
04301 
04302   case 235:
04303 
04304 /* Line 1806 of yacc.c  */
04305 #line 1554 "../../src/gdb/c-exp.y"
04306     { (yyval.sval) = operator_stoken (">>"); }
04307     break;
04308 
04309   case 236:
04310 
04311 /* Line 1806 of yacc.c  */
04312 #line 1556 "../../src/gdb/c-exp.y"
04313     { (yyval.sval) = operator_stoken ("=="); }
04314     break;
04315 
04316   case 237:
04317 
04318 /* Line 1806 of yacc.c  */
04319 #line 1558 "../../src/gdb/c-exp.y"
04320     { (yyval.sval) = operator_stoken ("!="); }
04321     break;
04322 
04323   case 238:
04324 
04325 /* Line 1806 of yacc.c  */
04326 #line 1560 "../../src/gdb/c-exp.y"
04327     { (yyval.sval) = operator_stoken ("<="); }
04328     break;
04329 
04330   case 239:
04331 
04332 /* Line 1806 of yacc.c  */
04333 #line 1562 "../../src/gdb/c-exp.y"
04334     { (yyval.sval) = operator_stoken (">="); }
04335     break;
04336 
04337   case 240:
04338 
04339 /* Line 1806 of yacc.c  */
04340 #line 1564 "../../src/gdb/c-exp.y"
04341     { (yyval.sval) = operator_stoken ("&&"); }
04342     break;
04343 
04344   case 241:
04345 
04346 /* Line 1806 of yacc.c  */
04347 #line 1566 "../../src/gdb/c-exp.y"
04348     { (yyval.sval) = operator_stoken ("||"); }
04349     break;
04350 
04351   case 242:
04352 
04353 /* Line 1806 of yacc.c  */
04354 #line 1568 "../../src/gdb/c-exp.y"
04355     { (yyval.sval) = operator_stoken ("++"); }
04356     break;
04357 
04358   case 243:
04359 
04360 /* Line 1806 of yacc.c  */
04361 #line 1570 "../../src/gdb/c-exp.y"
04362     { (yyval.sval) = operator_stoken ("--"); }
04363     break;
04364 
04365   case 244:
04366 
04367 /* Line 1806 of yacc.c  */
04368 #line 1572 "../../src/gdb/c-exp.y"
04369     { (yyval.sval) = operator_stoken (","); }
04370     break;
04371 
04372   case 245:
04373 
04374 /* Line 1806 of yacc.c  */
04375 #line 1574 "../../src/gdb/c-exp.y"
04376     { (yyval.sval) = operator_stoken ("->*"); }
04377     break;
04378 
04379   case 246:
04380 
04381 /* Line 1806 of yacc.c  */
04382 #line 1576 "../../src/gdb/c-exp.y"
04383     { (yyval.sval) = operator_stoken ("->"); }
04384     break;
04385 
04386   case 247:
04387 
04388 /* Line 1806 of yacc.c  */
04389 #line 1578 "../../src/gdb/c-exp.y"
04390     { (yyval.sval) = operator_stoken ("()"); }
04391     break;
04392 
04393   case 248:
04394 
04395 /* Line 1806 of yacc.c  */
04396 #line 1580 "../../src/gdb/c-exp.y"
04397     { (yyval.sval) = operator_stoken ("[]"); }
04398     break;
04399 
04400   case 249:
04401 
04402 /* Line 1806 of yacc.c  */
04403 #line 1582 "../../src/gdb/c-exp.y"
04404     { (yyval.sval) = operator_stoken ("[]"); }
04405     break;
04406 
04407   case 250:
04408 
04409 /* Line 1806 of yacc.c  */
04410 #line 1584 "../../src/gdb/c-exp.y"
04411     { char *name;
04412                           long length;
04413                           struct ui_file *buf = mem_fileopen ();
04414 
04415                           c_print_type ((yyvsp[(2) - (2)].tval), NULL, buf, -1, 0,
04416                                         &type_print_raw_options);
04417                           name = ui_file_xstrdup (buf, &length);
04418                           ui_file_delete (buf);
04419                           (yyval.sval) = operator_stoken (name);
04420                           xfree (name);
04421                         }
04422     break;
04423 
04424   case 251:
04425 
04426 /* Line 1806 of yacc.c  */
04427 #line 1599 "../../src/gdb/c-exp.y"
04428     { (yyval.sval) = (yyvsp[(1) - (1)].ssym).stoken; }
04429     break;
04430 
04431   case 252:
04432 
04433 /* Line 1806 of yacc.c  */
04434 #line 1600 "../../src/gdb/c-exp.y"
04435     { (yyval.sval) = (yyvsp[(1) - (1)].ssym).stoken; }
04436     break;
04437 
04438   case 253:
04439 
04440 /* Line 1806 of yacc.c  */
04441 #line 1601 "../../src/gdb/c-exp.y"
04442     { (yyval.sval) = (yyvsp[(1) - (1)].tsym).stoken; }
04443     break;
04444 
04445   case 254:
04446 
04447 /* Line 1806 of yacc.c  */
04448 #line 1602 "../../src/gdb/c-exp.y"
04449     { (yyval.sval) = (yyvsp[(1) - (1)].ssym).stoken; }
04450     break;
04451 
04452   case 255:
04453 
04454 /* Line 1806 of yacc.c  */
04455 #line 1603 "../../src/gdb/c-exp.y"
04456     { (yyval.sval) = (yyvsp[(1) - (1)].ssym).stoken; }
04457     break;
04458 
04459   case 256:
04460 
04461 /* Line 1806 of yacc.c  */
04462 #line 1604 "../../src/gdb/c-exp.y"
04463     { (yyval.sval) = (yyvsp[(1) - (1)].sval); }
04464     break;
04465 
04466   case 259:
04467 
04468 /* Line 1806 of yacc.c  */
04469 #line 1617 "../../src/gdb/c-exp.y"
04470     {
04471                           struct field_of_this_result is_a_field_of_this;
04472 
04473                           (yyval.ssym).stoken = (yyvsp[(1) - (1)].sval);
04474                           (yyval.ssym).sym = lookup_symbol ((yyvsp[(1) - (1)].sval).ptr,
04475                                                   expression_context_block,
04476                                                   VAR_DOMAIN,
04477                                                   &is_a_field_of_this);
04478                           (yyval.ssym).is_a_field_of_this
04479                             = is_a_field_of_this.type != NULL;
04480                         }
04481     break;
04482 
04483 
04484 
04485 /* Line 1806 of yacc.c  */
04486 #line 4488 "c-exp.c"
04487       default: break;
04488     }
04489   /* User semantic actions sometimes alter yychar, and that requires
04490      that yytoken be updated with the new translation.  We take the
04491      approach of translating immediately before every use of yytoken.
04492      One alternative is translating here after every semantic action,
04493      but that translation would be missed if the semantic action invokes
04494      YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or
04495      if it invokes YYBACKUP.  In the case of YYABORT or YYACCEPT, an
04496      incorrect destructor might then be invoked immediately.  In the
04497      case of YYERROR or YYBACKUP, subsequent parser actions might lead
04498      to an incorrect destructor call or verbose syntax error message
04499      before the lookahead is translated.  */
04500   YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
04501 
04502   YYPOPSTACK (yylen);
04503   yylen = 0;
04504   YY_STACK_PRINT (yyss, yyssp);
04505 
04506   *++yyvsp = yyval;
04507 
04508   /* Now `shift' the result of the reduction.  Determine what state
04509      that goes to, based on the state we popped back to and the rule
04510      number reduced by.  */
04511 
04512   yyn = yyr1[yyn];
04513 
04514   yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
04515   if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
04516     yystate = yytable[yystate];
04517   else
04518     yystate = yydefgoto[yyn - YYNTOKENS];
04519 
04520   goto yynewstate;
04521 
04522 
04523 /*------------------------------------.
04524 | yyerrlab -- here on detecting error |
04525 `------------------------------------*/
04526 yyerrlab:
04527   /* Make sure we have latest lookahead translation.  See comments at
04528      user semantic actions for why this is necessary.  */
04529   yytoken = yychar == YYEMPTY ? YYEMPTY : YYTRANSLATE (yychar);
04530 
04531   /* If not already recovering from an error, report this error.  */
04532   if (!yyerrstatus)
04533     {
04534       ++yynerrs;
04535 #if ! YYERROR_VERBOSE
04536       yyerror (YY_("syntax error"));
04537 #else
04538 # define YYSYNTAX_ERROR yysyntax_error (&yymsg_alloc, &yymsg, \
04539                                         yyssp, yytoken)
04540       {
04541         char const *yymsgp = YY_("syntax error");
04542         int yysyntax_error_status;
04543         yysyntax_error_status = YYSYNTAX_ERROR;
04544         if (yysyntax_error_status == 0)
04545           yymsgp = yymsg;
04546         else if (yysyntax_error_status == 1)
04547           {
04548             if (yymsg != yymsgbuf)
04549               YYSTACK_FREE (yymsg);
04550             yymsg = (char *) YYSTACK_ALLOC (yymsg_alloc);
04551             if (!yymsg)
04552               {
04553                 yymsg = yymsgbuf;
04554                 yymsg_alloc = sizeof yymsgbuf;
04555                 yysyntax_error_status = 2;
04556               }
04557             else
04558               {
04559                 yysyntax_error_status = YYSYNTAX_ERROR;
04560                 yymsgp = yymsg;
04561               }
04562           }
04563         yyerror (yymsgp);
04564         if (yysyntax_error_status == 2)
04565           goto yyexhaustedlab;
04566       }
04567 # undef YYSYNTAX_ERROR
04568 #endif
04569     }
04570 
04571 
04572 
04573   if (yyerrstatus == 3)
04574     {
04575       /* If just tried and failed to reuse lookahead token after an
04576          error, discard it.  */
04577 
04578       if (yychar <= YYEOF)
04579         {
04580           /* Return failure if at end of input.  */
04581           if (yychar == YYEOF)
04582             YYABORT;
04583         }
04584       else
04585         {
04586           yydestruct ("Error: discarding",
04587                       yytoken, &yylval);
04588           yychar = YYEMPTY;
04589         }
04590     }
04591 
04592   /* Else will try to reuse lookahead token after shifting the error
04593      token.  */
04594   goto yyerrlab1;
04595 
04596 
04597 /*---------------------------------------------------.
04598 | yyerrorlab -- error raised explicitly by YYERROR.  |
04599 `---------------------------------------------------*/
04600 yyerrorlab:
04601 
04602   /* Pacify compilers like GCC when the user code never invokes
04603      YYERROR and the label yyerrorlab therefore never appears in user
04604      code.  */
04605   if (/*CONSTCOND*/ 0)
04606      goto yyerrorlab;
04607 
04608   /* Do not reclaim the symbols of the rule which action triggered
04609      this YYERROR.  */
04610   YYPOPSTACK (yylen);
04611   yylen = 0;
04612   YY_STACK_PRINT (yyss, yyssp);
04613   yystate = *yyssp;
04614   goto yyerrlab1;
04615 
04616 
04617 /*-------------------------------------------------------------.
04618 | yyerrlab1 -- common code for both syntax error and YYERROR.  |
04619 `-------------------------------------------------------------*/
04620 yyerrlab1:
04621   yyerrstatus = 3;      /* Each real token shifted decrements this.  */
04622 
04623   for (;;)
04624     {
04625       yyn = yypact[yystate];
04626       if (!yypact_value_is_default (yyn))
04627         {
04628           yyn += YYTERROR;
04629           if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
04630             {
04631               yyn = yytable[yyn];
04632               if (0 < yyn)
04633                 break;
04634             }
04635         }
04636 
04637       /* Pop the current state because it cannot handle the error token.  */
04638       if (yyssp == yyss)
04639         YYABORT;
04640 
04641 
04642       yydestruct ("Error: popping",
04643                   yystos[yystate], yyvsp);
04644       YYPOPSTACK (1);
04645       yystate = *yyssp;
04646       YY_STACK_PRINT (yyss, yyssp);
04647     }
04648 
04649   *++yyvsp = yylval;
04650 
04651 
04652   /* Shift the error token.  */
04653   YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp);
04654 
04655   yystate = yyn;
04656   goto yynewstate;
04657 
04658 
04659 /*-------------------------------------.
04660 | yyacceptlab -- YYACCEPT comes here.  |
04661 `-------------------------------------*/
04662 yyacceptlab:
04663   yyresult = 0;
04664   goto yyreturn;
04665 
04666 /*-----------------------------------.
04667 | yyabortlab -- YYABORT comes here.  |
04668 `-----------------------------------*/
04669 yyabortlab:
04670   yyresult = 1;
04671   goto yyreturn;
04672 
04673 #if !defined(yyoverflow) || YYERROR_VERBOSE
04674 /*-------------------------------------------------.
04675 | yyexhaustedlab -- memory exhaustion comes here.  |
04676 `-------------------------------------------------*/
04677 yyexhaustedlab:
04678   yyerror (YY_("memory exhausted"));
04679   yyresult = 2;
04680   /* Fall through.  */
04681 #endif
04682 
04683 yyreturn:
04684   if (yychar != YYEMPTY)
04685     {
04686       /* Make sure we have latest lookahead translation.  See comments at
04687          user semantic actions for why this is necessary.  */
04688       yytoken = YYTRANSLATE (yychar);
04689       yydestruct ("Cleanup: discarding lookahead",
04690                   yytoken, &yylval);
04691     }
04692   /* Do not reclaim the symbols of the rule which action triggered
04693      this YYABORT or YYACCEPT.  */
04694   YYPOPSTACK (yylen);
04695   YY_STACK_PRINT (yyss, yyssp);
04696   while (yyssp != yyss)
04697     {
04698       yydestruct ("Cleanup: popping",
04699                   yystos[*yyssp], yyvsp);
04700       YYPOPSTACK (1);
04701     }
04702 #ifndef yyoverflow
04703   if (yyss != yyssa)
04704     YYSTACK_FREE (yyss);
04705 #endif
04706 #if YYERROR_VERBOSE
04707   if (yymsg != yymsgbuf)
04708     YYSTACK_FREE (yymsg);
04709 #endif
04710   /* Make sure YYID is used.  */
04711   return YYID (yyresult);
04712 }
04713 
04714 
04715 
04716 /* Line 2067 of yacc.c  */
04717 #line 1631 "../../src/gdb/c-exp.y"
04718 
04719 
04720 /* Like write_exp_string, but prepends a '~'.  */
04721 
04722 static void
04723 write_destructor_name (struct stoken token)
04724 {
04725   char *copy = alloca (token.length + 1);
04726 
04727   copy[0] = '~';
04728   memcpy (&copy[1], token.ptr, token.length);
04729 
04730   token.ptr = copy;
04731   ++token.length;
04732 
04733   write_exp_string (token);
04734 }
04735 
04736 /* Returns a stoken of the operator name given by OP (which does not
04737    include the string "operator").  */ 
04738 static struct stoken
04739 operator_stoken (const char *op)
04740 {
04741   static const char *operator_string = "operator";
04742   struct stoken st = { NULL, 0 };
04743   char *buf;
04744 
04745   st.length = strlen (operator_string) + strlen (op);
04746   buf = xmalloc (st.length + 1);
04747   strcpy (buf, operator_string);
04748   strcat (buf, op);
04749   st.ptr = buf;
04750 
04751   /* The toplevel (c_parse) will free the memory allocated here.  */
04752   make_cleanup (xfree, buf);
04753   return st;
04754 };
04755 
04756 /* Validate a parameter typelist.  */
04757 
04758 static void
04759 check_parameter_typelist (VEC (type_ptr) *params)
04760 {
04761   struct type *type;
04762   int ix;
04763 
04764   for (ix = 0; VEC_iterate (type_ptr, params, ix, type); ++ix)
04765     {
04766       if (type != NULL && TYPE_CODE (check_typedef (type)) == TYPE_CODE_VOID)
04767         {
04768           if (ix == 0)
04769             {
04770               if (VEC_length (type_ptr, params) == 1)
04771                 {
04772                   /* Ok.  */
04773                   break;
04774                 }
04775               VEC_free (type_ptr, params);
04776               error (_("parameter types following 'void'"));
04777             }
04778           else
04779             {
04780               VEC_free (type_ptr, params);
04781               error (_("'void' invalid as parameter type"));
04782             }
04783         }
04784     }
04785 }
04786 
04787 /* Take care of parsing a number (anything that starts with a digit).
04788    Set yylval and return the token type; update lexptr.
04789    LEN is the number of characters in it.  */
04790 
04791 /*** Needs some error checking for the float case ***/
04792 
04793 static int
04794 parse_number (const char *buf, int len, int parsed_float, YYSTYPE *putithere)
04795 {
04796   /* FIXME: Shouldn't these be unsigned?  We don't deal with negative values
04797      here, and we do kind of silly things like cast to unsigned.  */
04798   LONGEST n = 0;
04799   LONGEST prevn = 0;
04800   ULONGEST un;
04801 
04802   int i = 0;
04803   int c;
04804   int base = input_radix;
04805   int unsigned_p = 0;
04806 
04807   /* Number of "L" suffixes encountered.  */
04808   int long_p = 0;
04809 
04810   /* We have found a "L" or "U" suffix.  */
04811   int found_suffix = 0;
04812 
04813   ULONGEST high_bit;
04814   struct type *signed_type;
04815   struct type *unsigned_type;
04816   char *p;
04817 
04818   p = alloca (len);
04819   memcpy (p, buf, len);
04820 
04821   if (parsed_float)
04822     {
04823       /* If it ends at "df", "dd" or "dl", take it as type of decimal floating
04824          point.  Return DECFLOAT.  */
04825 
04826       if (len >= 2 && p[len - 2] == 'd' && p[len - 1] == 'f')
04827         {
04828           p[len - 2] = '\0';
04829           putithere->typed_val_decfloat.type
04830             = parse_type->builtin_decfloat;
04831           decimal_from_string (putithere->typed_val_decfloat.val, 4,
04832                                gdbarch_byte_order (parse_gdbarch), p);
04833           p[len - 2] = 'd';
04834           return DECFLOAT;
04835         }
04836 
04837       if (len >= 2 && p[len - 2] == 'd' && p[len - 1] == 'd')
04838         {
04839           p[len - 2] = '\0';
04840           putithere->typed_val_decfloat.type
04841             = parse_type->builtin_decdouble;
04842           decimal_from_string (putithere->typed_val_decfloat.val, 8,
04843                                gdbarch_byte_order (parse_gdbarch), p);
04844           p[len - 2] = 'd';
04845           return DECFLOAT;
04846         }
04847 
04848       if (len >= 2 && p[len - 2] == 'd' && p[len - 1] == 'l')
04849         {
04850           p[len - 2] = '\0';
04851           putithere->typed_val_decfloat.type
04852             = parse_type->builtin_declong;
04853           decimal_from_string (putithere->typed_val_decfloat.val, 16,
04854                                gdbarch_byte_order (parse_gdbarch), p);
04855           p[len - 2] = 'd';
04856           return DECFLOAT;
04857         }
04858 
04859       if (! parse_c_float (parse_gdbarch, p, len,
04860                            &putithere->typed_val_float.dval,
04861                            &putithere->typed_val_float.type))
04862         return ERROR;
04863       return FLOAT;
04864     }
04865 
04866   /* Handle base-switching prefixes 0x, 0t, 0d, 0 */
04867   if (p[0] == '0')
04868     switch (p[1])
04869       {
04870       case 'x':
04871       case 'X':
04872         if (len >= 3)
04873           {
04874             p += 2;
04875             base = 16;
04876             len -= 2;
04877           }
04878         break;
04879 
04880       case 'b':
04881       case 'B':
04882         if (len >= 3)
04883           {
04884             p += 2;
04885             base = 2;
04886             len -= 2;
04887           }
04888         break;
04889 
04890       case 't':
04891       case 'T':
04892       case 'd':
04893       case 'D':
04894         if (len >= 3)
04895           {
04896             p += 2;
04897             base = 10;
04898             len -= 2;
04899           }
04900         break;
04901 
04902       default:
04903         base = 8;
04904         break;
04905       }
04906 
04907   while (len-- > 0)
04908     {
04909       c = *p++;
04910       if (c >= 'A' && c <= 'Z')
04911         c += 'a' - 'A';
04912       if (c != 'l' && c != 'u')
04913         n *= base;
04914       if (c >= '0' && c <= '9')
04915         {
04916           if (found_suffix)
04917             return ERROR;
04918           n += i = c - '0';
04919         }
04920       else
04921         {
04922           if (base > 10 && c >= 'a' && c <= 'f')
04923             {
04924               if (found_suffix)
04925                 return ERROR;
04926               n += i = c - 'a' + 10;
04927             }
04928           else if (c == 'l')
04929             {
04930               ++long_p;
04931               found_suffix = 1;
04932             }
04933           else if (c == 'u')
04934             {
04935               unsigned_p = 1;
04936               found_suffix = 1;
04937             }
04938           else
04939             return ERROR;       /* Char not a digit */
04940         }
04941       if (i >= base)
04942         return ERROR;           /* Invalid digit in this base */
04943 
04944       /* Portably test for overflow (only works for nonzero values, so make
04945          a second check for zero).  FIXME: Can't we just make n and prevn
04946          unsigned and avoid this?  */
04947       if (c != 'l' && c != 'u' && (prevn >= n) && n != 0)
04948         unsigned_p = 1;         /* Try something unsigned */
04949 
04950       /* Portably test for unsigned overflow.
04951          FIXME: This check is wrong; for example it doesn't find overflow
04952          on 0x123456789 when LONGEST is 32 bits.  */
04953       if (c != 'l' && c != 'u' && n != 0)
04954         {       
04955           if ((unsigned_p && (ULONGEST) prevn >= (ULONGEST) n))
04956             error (_("Numeric constant too large."));
04957         }
04958       prevn = n;
04959     }
04960 
04961   /* An integer constant is an int, a long, or a long long.  An L
04962      suffix forces it to be long; an LL suffix forces it to be long
04963      long.  If not forced to a larger size, it gets the first type of
04964      the above that it fits in.  To figure out whether it fits, we
04965      shift it right and see whether anything remains.  Note that we
04966      can't shift sizeof (LONGEST) * HOST_CHAR_BIT bits or more in one
04967      operation, because many compilers will warn about such a shift
04968      (which always produces a zero result).  Sometimes gdbarch_int_bit
04969      or gdbarch_long_bit will be that big, sometimes not.  To deal with
04970      the case where it is we just always shift the value more than
04971      once, with fewer bits each time.  */
04972 
04973   un = (ULONGEST)n >> 2;
04974   if (long_p == 0
04975       && (un >> (gdbarch_int_bit (parse_gdbarch) - 2)) == 0)
04976     {
04977       high_bit = ((ULONGEST)1) << (gdbarch_int_bit (parse_gdbarch) - 1);
04978 
04979       /* A large decimal (not hex or octal) constant (between INT_MAX
04980          and UINT_MAX) is a long or unsigned long, according to ANSI,
04981          never an unsigned int, but this code treats it as unsigned
04982          int.  This probably should be fixed.  GCC gives a warning on
04983          such constants.  */
04984 
04985       unsigned_type = parse_type->builtin_unsigned_int;
04986       signed_type = parse_type->builtin_int;
04987     }
04988   else if (long_p <= 1
04989            && (un >> (gdbarch_long_bit (parse_gdbarch) - 2)) == 0)
04990     {
04991       high_bit = ((ULONGEST)1) << (gdbarch_long_bit (parse_gdbarch) - 1);
04992       unsigned_type = parse_type->builtin_unsigned_long;
04993       signed_type = parse_type->builtin_long;
04994     }
04995   else
04996     {
04997       int shift;
04998       if (sizeof (ULONGEST) * HOST_CHAR_BIT 
04999           < gdbarch_long_long_bit (parse_gdbarch))
05000         /* A long long does not fit in a LONGEST.  */
05001         shift = (sizeof (ULONGEST) * HOST_CHAR_BIT - 1);
05002       else
05003         shift = (gdbarch_long_long_bit (parse_gdbarch) - 1);
05004       high_bit = (ULONGEST) 1 << shift;
05005       unsigned_type = parse_type->builtin_unsigned_long_long;
05006       signed_type = parse_type->builtin_long_long;
05007     }
05008 
05009    putithere->typed_val_int.val = n;
05010 
05011    /* If the high bit of the worked out type is set then this number
05012       has to be unsigned. */
05013 
05014    if (unsigned_p || (n & high_bit)) 
05015      {
05016        putithere->typed_val_int.type = unsigned_type;
05017      }
05018    else 
05019      {
05020        putithere->typed_val_int.type = signed_type;
05021      }
05022 
05023    return INT;
05024 }
05025 
05026 /* Temporary obstack used for holding strings.  */
05027 static struct obstack tempbuf;
05028 static int tempbuf_init;
05029 
05030 /* Parse a C escape sequence.  The initial backslash of the sequence
05031    is at (*PTR)[-1].  *PTR will be updated to point to just after the
05032    last character of the sequence.  If OUTPUT is not NULL, the
05033    translated form of the escape sequence will be written there.  If
05034    OUTPUT is NULL, no output is written and the call will only affect
05035    *PTR.  If an escape sequence is expressed in target bytes, then the
05036    entire sequence will simply be copied to OUTPUT.  Return 1 if any
05037    character was emitted, 0 otherwise.  */
05038 
05039 int
05040 c_parse_escape (const char **ptr, struct obstack *output)
05041 {
05042   const char *tokptr = *ptr;
05043   int result = 1;
05044 
05045   /* Some escape sequences undergo character set conversion.  Those we
05046      translate here.  */
05047   switch (*tokptr)
05048     {
05049       /* Hex escapes do not undergo character set conversion, so keep
05050          the escape sequence for later.  */
05051     case 'x':
05052       if (output)
05053         obstack_grow_str (output, "\\x");
05054       ++tokptr;
05055       if (!isxdigit (*tokptr))
05056         error (_("\\x escape without a following hex digit"));
05057       while (isxdigit (*tokptr))
05058         {
05059           if (output)
05060             obstack_1grow (output, *tokptr);
05061           ++tokptr;
05062         }
05063       break;
05064 
05065       /* Octal escapes do not undergo character set conversion, so
05066          keep the escape sequence for later.  */
05067     case '0':
05068     case '1':
05069     case '2':
05070     case '3':
05071     case '4':
05072     case '5':
05073     case '6':
05074     case '7':
05075       {
05076         int i;
05077         if (output)
05078           obstack_grow_str (output, "\\");
05079         for (i = 0;
05080              i < 3 && isdigit (*tokptr) && *tokptr != '8' && *tokptr != '9';
05081              ++i)
05082           {
05083             if (output)
05084               obstack_1grow (output, *tokptr);
05085             ++tokptr;
05086           }
05087       }
05088       break;
05089 
05090       /* We handle UCNs later.  We could handle them here, but that
05091          would mean a spurious error in the case where the UCN could
05092          be converted to the target charset but not the host
05093          charset.  */
05094     case 'u':
05095     case 'U':
05096       {
05097         char c = *tokptr;
05098         int i, len = c == 'U' ? 8 : 4;
05099         if (output)
05100           {
05101             obstack_1grow (output, '\\');
05102             obstack_1grow (output, *tokptr);
05103           }
05104         ++tokptr;
05105         if (!isxdigit (*tokptr))
05106           error (_("\\%c escape without a following hex digit"), c);
05107         for (i = 0; i < len && isxdigit (*tokptr); ++i)
05108           {
05109             if (output)
05110               obstack_1grow (output, *tokptr);
05111             ++tokptr;
05112           }
05113       }
05114       break;
05115 
05116       /* We must pass backslash through so that it does not
05117          cause quoting during the second expansion.  */
05118     case '\\':
05119       if (output)
05120         obstack_grow_str (output, "\\\\");
05121       ++tokptr;
05122       break;
05123 
05124       /* Escapes which undergo conversion.  */
05125     case 'a':
05126       if (output)
05127         obstack_1grow (output, '\a');
05128       ++tokptr;
05129       break;
05130     case 'b':
05131       if (output)
05132         obstack_1grow (output, '\b');
05133       ++tokptr;
05134       break;
05135     case 'f':
05136       if (output)
05137         obstack_1grow (output, '\f');
05138       ++tokptr;
05139       break;
05140     case 'n':
05141       if (output)
05142         obstack_1grow (output, '\n');
05143       ++tokptr;
05144       break;
05145     case 'r':
05146       if (output)
05147         obstack_1grow (output, '\r');
05148       ++tokptr;
05149       break;
05150     case 't':
05151       if (output)
05152         obstack_1grow (output, '\t');
05153       ++tokptr;
05154       break;
05155     case 'v':
05156       if (output)
05157         obstack_1grow (output, '\v');
05158       ++tokptr;
05159       break;
05160 
05161       /* GCC extension.  */
05162     case 'e':
05163       if (output)
05164         obstack_1grow (output, HOST_ESCAPE_CHAR);
05165       ++tokptr;
05166       break;
05167 
05168       /* Backslash-newline expands to nothing at all.  */
05169     case '\n':
05170       ++tokptr;
05171       result = 0;
05172       break;
05173 
05174       /* A few escapes just expand to the character itself.  */
05175     case '\'':
05176     case '\"':
05177     case '?':
05178       /* GCC extensions.  */
05179     case '(':
05180     case '{':
05181     case '[':
05182     case '%':
05183       /* Unrecognized escapes turn into the character itself.  */
05184     default:
05185       if (output)
05186         obstack_1grow (output, *tokptr);
05187       ++tokptr;
05188       break;
05189     }
05190   *ptr = tokptr;
05191   return result;
05192 }
05193 
05194 /* Parse a string or character literal from TOKPTR.  The string or
05195    character may be wide or unicode.  *OUTPTR is set to just after the
05196    end of the literal in the input string.  The resulting token is
05197    stored in VALUE.  This returns a token value, either STRING or
05198    CHAR, depending on what was parsed.  *HOST_CHARS is set to the
05199    number of host characters in the literal.  */
05200 static int
05201 parse_string_or_char (const char *tokptr, const char **outptr,
05202                       struct typed_stoken *value, int *host_chars)
05203 {
05204   int quote;
05205   enum c_string_type type;
05206   int is_objc = 0;
05207 
05208   /* Build the gdb internal form of the input string in tempbuf.  Note
05209      that the buffer is null byte terminated *only* for the
05210      convenience of debugging gdb itself and printing the buffer
05211      contents when the buffer contains no embedded nulls.  Gdb does
05212      not depend upon the buffer being null byte terminated, it uses
05213      the length string instead.  This allows gdb to handle C strings
05214      (as well as strings in other languages) with embedded null
05215      bytes */
05216 
05217   if (!tempbuf_init)
05218     tempbuf_init = 1;
05219   else
05220     obstack_free (&tempbuf, NULL);
05221   obstack_init (&tempbuf);
05222 
05223   /* Record the string type.  */
05224   if (*tokptr == 'L')
05225     {
05226       type = C_WIDE_STRING;
05227       ++tokptr;
05228     }
05229   else if (*tokptr == 'u')
05230     {
05231       type = C_STRING_16;
05232       ++tokptr;
05233     }
05234   else if (*tokptr == 'U')
05235     {
05236       type = C_STRING_32;
05237       ++tokptr;
05238     }
05239   else if (*tokptr == '@')
05240     {
05241       /* An Objective C string.  */
05242       is_objc = 1;
05243       type = C_STRING;
05244       ++tokptr;
05245     }
05246   else
05247     type = C_STRING;
05248 
05249   /* Skip the quote.  */
05250   quote = *tokptr;
05251   if (quote == '\'')
05252     type |= C_CHAR;
05253   ++tokptr;
05254 
05255   *host_chars = 0;
05256 
05257   while (*tokptr)
05258     {
05259       char c = *tokptr;
05260       if (c == '\\')
05261         {
05262           ++tokptr;
05263           *host_chars += c_parse_escape (&tokptr, &tempbuf);
05264         }
05265       else if (c == quote)
05266         break;
05267       else
05268         {
05269           obstack_1grow (&tempbuf, c);
05270           ++tokptr;
05271           /* FIXME: this does the wrong thing with multi-byte host
05272              characters.  We could use mbrlen here, but that would
05273              make "set host-charset" a bit less useful.  */
05274           ++*host_chars;
05275         }
05276     }
05277 
05278   if (*tokptr != quote)
05279     {
05280       if (quote == '"')
05281         error (_("Unterminated string in expression."));
05282       else
05283         error (_("Unmatched single quote."));
05284     }
05285   ++tokptr;
05286 
05287   value->type = type;
05288   value->ptr = obstack_base (&tempbuf);
05289   value->length = obstack_object_size (&tempbuf);
05290 
05291   *outptr = tokptr;
05292 
05293   return quote == '"' ? (is_objc ? NSSTRING : STRING) : CHAR;
05294 }
05295 
05296 /* This is used to associate some attributes with a token.  */
05297 
05298 enum token_flags
05299 {
05300   /* If this bit is set, the token is C++-only.  */
05301 
05302   FLAG_CXX = 1,
05303 
05304   /* If this bit is set, the token is conditional: if there is a
05305      symbol of the same name, then the token is a symbol; otherwise,
05306      the token is a keyword.  */
05307 
05308   FLAG_SHADOW = 2
05309 };
05310 
05311 struct token
05312 {
05313   char *operator;
05314   int token;
05315   enum exp_opcode opcode;
05316   enum token_flags flags;
05317 };
05318 
05319 static const struct token tokentab3[] =
05320   {
05321     {">>=", ASSIGN_MODIFY, BINOP_RSH, 0},
05322     {"<<=", ASSIGN_MODIFY, BINOP_LSH, 0},
05323     {"->*", ARROW_STAR, BINOP_END, FLAG_CXX},
05324     {"...", DOTDOTDOT, BINOP_END, 0}
05325   };
05326 
05327 static const struct token tokentab2[] =
05328   {
05329     {"+=", ASSIGN_MODIFY, BINOP_ADD, 0},
05330     {"-=", ASSIGN_MODIFY, BINOP_SUB, 0},
05331     {"*=", ASSIGN_MODIFY, BINOP_MUL, 0},
05332     {"/=", ASSIGN_MODIFY, BINOP_DIV, 0},
05333     {"%=", ASSIGN_MODIFY, BINOP_REM, 0},
05334     {"|=", ASSIGN_MODIFY, BINOP_BITWISE_IOR, 0},
05335     {"&=", ASSIGN_MODIFY, BINOP_BITWISE_AND, 0},
05336     {"^=", ASSIGN_MODIFY, BINOP_BITWISE_XOR, 0},
05337     {"++", INCREMENT, BINOP_END, 0},
05338     {"--", DECREMENT, BINOP_END, 0},
05339     {"->", ARROW, BINOP_END, 0},
05340     {"&&", ANDAND, BINOP_END, 0},
05341     {"||", OROR, BINOP_END, 0},
05342     /* "::" is *not* only C++: gdb overrides its meaning in several
05343        different ways, e.g., 'filename'::func, function::variable.  */
05344     {"::", COLONCOLON, BINOP_END, 0},
05345     {"<<", LSH, BINOP_END, 0},
05346     {">>", RSH, BINOP_END, 0},
05347     {"==", EQUAL, BINOP_END, 0},
05348     {"!=", NOTEQUAL, BINOP_END, 0},
05349     {"<=", LEQ, BINOP_END, 0},
05350     {">=", GEQ, BINOP_END, 0},
05351     {".*", DOT_STAR, BINOP_END, FLAG_CXX}
05352   };
05353 
05354 /* Identifier-like tokens.  */
05355 static const struct token ident_tokens[] =
05356   {
05357     {"unsigned", UNSIGNED, OP_NULL, 0},
05358     {"template", TEMPLATE, OP_NULL, FLAG_CXX},
05359     {"volatile", VOLATILE_KEYWORD, OP_NULL, 0},
05360     {"struct", STRUCT, OP_NULL, 0},
05361     {"signed", SIGNED_KEYWORD, OP_NULL, 0},
05362     {"sizeof", SIZEOF, OP_NULL, 0},
05363     {"double", DOUBLE_KEYWORD, OP_NULL, 0},
05364     {"false", FALSEKEYWORD, OP_NULL, FLAG_CXX},
05365     {"class", CLASS, OP_NULL, FLAG_CXX},
05366     {"union", UNION, OP_NULL, 0},
05367     {"short", SHORT, OP_NULL, 0},
05368     {"const", CONST_KEYWORD, OP_NULL, 0},
05369     {"enum", ENUM, OP_NULL, 0},
05370     {"long", LONG, OP_NULL, 0},
05371     {"true", TRUEKEYWORD, OP_NULL, FLAG_CXX},
05372     {"int", INT_KEYWORD, OP_NULL, 0},
05373     {"new", NEW, OP_NULL, FLAG_CXX},
05374     {"delete", DELETE, OP_NULL, FLAG_CXX},
05375     {"operator", OPERATOR, OP_NULL, FLAG_CXX},
05376 
05377     {"and", ANDAND, BINOP_END, FLAG_CXX},
05378     {"and_eq", ASSIGN_MODIFY, BINOP_BITWISE_AND, FLAG_CXX},
05379     {"bitand", '&', OP_NULL, FLAG_CXX},
05380     {"bitor", '|', OP_NULL, FLAG_CXX},
05381     {"compl", '~', OP_NULL, FLAG_CXX},
05382     {"not", '!', OP_NULL, FLAG_CXX},
05383     {"not_eq", NOTEQUAL, BINOP_END, FLAG_CXX},
05384     {"or", OROR, BINOP_END, FLAG_CXX},
05385     {"or_eq", ASSIGN_MODIFY, BINOP_BITWISE_IOR, FLAG_CXX},
05386     {"xor", '^', OP_NULL, FLAG_CXX},
05387     {"xor_eq", ASSIGN_MODIFY, BINOP_BITWISE_XOR, FLAG_CXX},
05388 
05389     {"const_cast", CONST_CAST, OP_NULL, FLAG_CXX },
05390     {"dynamic_cast", DYNAMIC_CAST, OP_NULL, FLAG_CXX },
05391     {"static_cast", STATIC_CAST, OP_NULL, FLAG_CXX },
05392     {"reinterpret_cast", REINTERPRET_CAST, OP_NULL, FLAG_CXX },
05393 
05394     {"__typeof__", TYPEOF, OP_TYPEOF, 0 },
05395     {"__typeof", TYPEOF, OP_TYPEOF, 0 },
05396     {"typeof", TYPEOF, OP_TYPEOF, FLAG_SHADOW },
05397     {"__decltype", DECLTYPE, OP_DECLTYPE, FLAG_CXX },
05398     {"decltype", DECLTYPE, OP_DECLTYPE, FLAG_CXX | FLAG_SHADOW },
05399 
05400     {"typeid", TYPEID, OP_TYPEID, FLAG_CXX}
05401   };
05402 
05403 /* When we find that lexptr (the global var defined in parse.c) is
05404    pointing at a macro invocation, we expand the invocation, and call
05405    scan_macro_expansion to save the old lexptr here and point lexptr
05406    into the expanded text.  When we reach the end of that, we call
05407    end_macro_expansion to pop back to the value we saved here.  The
05408    macro expansion code promises to return only fully-expanded text,
05409    so we don't need to "push" more than one level.
05410 
05411    This is disgusting, of course.  It would be cleaner to do all macro
05412    expansion beforehand, and then hand that to lexptr.  But we don't
05413    really know where the expression ends.  Remember, in a command like
05414 
05415      (gdb) break *ADDRESS if CONDITION
05416 
05417    we evaluate ADDRESS in the scope of the current frame, but we
05418    evaluate CONDITION in the scope of the breakpoint's location.  So
05419    it's simply wrong to try to macro-expand the whole thing at once.  */
05420 static const char *macro_original_text;
05421 
05422 /* We save all intermediate macro expansions on this obstack for the
05423    duration of a single parse.  The expansion text may sometimes have
05424    to live past the end of the expansion, due to yacc lookahead.
05425    Rather than try to be clever about saving the data for a single
05426    token, we simply keep it all and delete it after parsing has
05427    completed.  */
05428 static struct obstack expansion_obstack;
05429 
05430 static void
05431 scan_macro_expansion (char *expansion)
05432 {
05433   char *copy;
05434 
05435   /* We'd better not be trying to push the stack twice.  */
05436   gdb_assert (! macro_original_text);
05437 
05438   /* Copy to the obstack, and then free the intermediate
05439      expansion.  */
05440   copy = obstack_copy0 (&expansion_obstack, expansion, strlen (expansion));
05441   xfree (expansion);
05442 
05443   /* Save the old lexptr value, so we can return to it when we're done
05444      parsing the expanded text.  */
05445   macro_original_text = lexptr;
05446   lexptr = copy;
05447 }
05448 
05449 
05450 static int
05451 scanning_macro_expansion (void)
05452 {
05453   return macro_original_text != 0;
05454 }
05455 
05456 
05457 static void 
05458 finished_macro_expansion (void)
05459 {
05460   /* There'd better be something to pop back to.  */
05461   gdb_assert (macro_original_text);
05462 
05463   /* Pop back to the original text.  */
05464   lexptr = macro_original_text;
05465   macro_original_text = 0;
05466 }
05467 
05468 
05469 static void
05470 scan_macro_cleanup (void *dummy)
05471 {
05472   if (macro_original_text)
05473     finished_macro_expansion ();
05474 
05475   obstack_free (&expansion_obstack, NULL);
05476 }
05477 
05478 /* Return true iff the token represents a C++ cast operator.  */
05479 
05480 static int
05481 is_cast_operator (const char *token, int len)
05482 {
05483   return (! strncmp (token, "dynamic_cast", len)
05484           || ! strncmp (token, "static_cast", len)
05485           || ! strncmp (token, "reinterpret_cast", len)
05486           || ! strncmp (token, "const_cast", len));
05487 }
05488 
05489 /* The scope used for macro expansion.  */
05490 static struct macro_scope *expression_macro_scope;
05491 
05492 /* This is set if a NAME token appeared at the very end of the input
05493    string, with no whitespace separating the name from the EOF.  This
05494    is used only when parsing to do field name completion.  */
05495 static int saw_name_at_eof;
05496 
05497 /* This is set if the previously-returned token was a structure
05498    operator -- either '.' or ARROW.  This is used only when parsing to
05499    do field name completion.  */
05500 static int last_was_structop;
05501 
05502 /* Read one token, getting characters through lexptr.  */
05503 
05504 static int
05505 lex_one_token (void)
05506 {
05507   int c;
05508   int namelen;
05509   unsigned int i;
05510   const char *tokstart;
05511   int saw_structop = last_was_structop;
05512   char *copy;
05513 
05514   last_was_structop = 0;
05515 
05516  retry:
05517 
05518   /* Check if this is a macro invocation that we need to expand.  */
05519   if (! scanning_macro_expansion ())
05520     {
05521       char *expanded = macro_expand_next (&lexptr,
05522                                           standard_macro_lookup,
05523                                           expression_macro_scope);
05524 
05525       if (expanded)
05526         scan_macro_expansion (expanded);
05527     }
05528 
05529   prev_lexptr = lexptr;
05530 
05531   tokstart = lexptr;
05532   /* See if it is a special token of length 3.  */
05533   for (i = 0; i < sizeof tokentab3 / sizeof tokentab3[0]; i++)
05534     if (strncmp (tokstart, tokentab3[i].operator, 3) == 0)
05535       {
05536         if ((tokentab3[i].flags & FLAG_CXX) != 0
05537             && parse_language->la_language != language_cplus)
05538           break;
05539 
05540         lexptr += 3;
05541         yylval.opcode = tokentab3[i].opcode;
05542         return tokentab3[i].token;
05543       }
05544 
05545   /* See if it is a special token of length 2.  */
05546   for (i = 0; i < sizeof tokentab2 / sizeof tokentab2[0]; i++)
05547     if (strncmp (tokstart, tokentab2[i].operator, 2) == 0)
05548       {
05549         if ((tokentab2[i].flags & FLAG_CXX) != 0
05550             && parse_language->la_language != language_cplus)
05551           break;
05552 
05553         lexptr += 2;
05554         yylval.opcode = tokentab2[i].opcode;
05555         if (parse_completion && tokentab2[i].token == ARROW)
05556           last_was_structop = 1;
05557         return tokentab2[i].token;
05558       }
05559 
05560   switch (c = *tokstart)
05561     {
05562     case 0:
05563       /* If we were just scanning the result of a macro expansion,
05564          then we need to resume scanning the original text.
05565          If we're parsing for field name completion, and the previous
05566          token allows such completion, return a COMPLETE token.
05567          Otherwise, we were already scanning the original text, and
05568          we're really done.  */
05569       if (scanning_macro_expansion ())
05570         {
05571           finished_macro_expansion ();
05572           goto retry;
05573         }
05574       else if (saw_name_at_eof)
05575         {
05576           saw_name_at_eof = 0;
05577           return COMPLETE;
05578         }
05579       else if (saw_structop)
05580         return COMPLETE;
05581       else
05582         return 0;
05583 
05584     case ' ':
05585     case '\t':
05586     case '\n':
05587       lexptr++;
05588       goto retry;
05589 
05590     case '[':
05591     case '(':
05592       paren_depth++;
05593       lexptr++;
05594       if (parse_language->la_language == language_objc && c == '[')
05595         return OBJC_LBRAC;
05596       return c;
05597 
05598     case ']':
05599     case ')':
05600       if (paren_depth == 0)
05601         return 0;
05602       paren_depth--;
05603       lexptr++;
05604       return c;
05605 
05606     case ',':
05607       if (comma_terminates
05608           && paren_depth == 0
05609           && ! scanning_macro_expansion ())
05610         return 0;
05611       lexptr++;
05612       return c;
05613 
05614     case '.':
05615       /* Might be a floating point number.  */
05616       if (lexptr[1] < '0' || lexptr[1] > '9')
05617         {
05618           if (parse_completion)
05619             last_was_structop = 1;
05620           goto symbol;          /* Nope, must be a symbol. */
05621         }
05622       /* FALL THRU into number case.  */
05623 
05624     case '0':
05625     case '1':
05626     case '2':
05627     case '3':
05628     case '4':
05629     case '5':
05630     case '6':
05631     case '7':
05632     case '8':
05633     case '9':
05634       {
05635         /* It's a number.  */
05636         int got_dot = 0, got_e = 0, toktype;
05637         const char *p = tokstart;
05638         int hex = input_radix > 10;
05639 
05640         if (c == '0' && (p[1] == 'x' || p[1] == 'X'))
05641           {
05642             p += 2;
05643             hex = 1;
05644           }
05645         else if (c == '0' && (p[1]=='t' || p[1]=='T' || p[1]=='d' || p[1]=='D'))
05646           {
05647             p += 2;
05648             hex = 0;
05649           }
05650 
05651         for (;; ++p)
05652           {
05653             /* This test includes !hex because 'e' is a valid hex digit
05654                and thus does not indicate a floating point number when
05655                the radix is hex.  */
05656             if (!hex && !got_e && (*p == 'e' || *p == 'E'))
05657               got_dot = got_e = 1;
05658             /* This test does not include !hex, because a '.' always indicates
05659                a decimal floating point number regardless of the radix.  */
05660             else if (!got_dot && *p == '.')
05661               got_dot = 1;
05662             else if (got_e && (p[-1] == 'e' || p[-1] == 'E')
05663                      && (*p == '-' || *p == '+'))
05664               /* This is the sign of the exponent, not the end of the
05665                  number.  */
05666               continue;
05667             /* We will take any letters or digits.  parse_number will
05668                complain if past the radix, or if L or U are not final.  */
05669             else if ((*p < '0' || *p > '9')
05670                      && ((*p < 'a' || *p > 'z')
05671                                   && (*p < 'A' || *p > 'Z')))
05672               break;
05673           }
05674         toktype = parse_number (tokstart, p - tokstart, got_dot|got_e, &yylval);
05675         if (toktype == ERROR)
05676           {
05677             char *err_copy = (char *) alloca (p - tokstart + 1);
05678 
05679             memcpy (err_copy, tokstart, p - tokstart);
05680             err_copy[p - tokstart] = 0;
05681             error (_("Invalid number \"%s\"."), err_copy);
05682           }
05683         lexptr = p;
05684         return toktype;
05685       }
05686 
05687     case '@':
05688       {
05689         const char *p = &tokstart[1];
05690         size_t len = strlen ("entry");
05691 
05692         if (parse_language->la_language == language_objc)
05693           {
05694             size_t len = strlen ("selector");
05695 
05696             if (strncmp (p, "selector", len) == 0
05697                 && (p[len] == '\0' || isspace (p[len])))
05698               {
05699                 lexptr = p + len;
05700                 return SELECTOR;
05701               }
05702             else if (*p == '"')
05703               goto parse_string;
05704           }
05705 
05706         while (isspace (*p))
05707           p++;
05708         if (strncmp (p, "entry", len) == 0 && !isalnum (p[len])
05709             && p[len] != '_')
05710           {
05711             lexptr = &p[len];
05712             return ENTRY;
05713           }
05714       }
05715       /* FALLTHRU */
05716     case '+':
05717     case '-':
05718     case '*':
05719     case '/':
05720     case '%':
05721     case '|':
05722     case '&':
05723     case '^':
05724     case '~':
05725     case '!':
05726     case '<':
05727     case '>':
05728     case '?':
05729     case ':':
05730     case '=':
05731     case '{':
05732     case '}':
05733     symbol:
05734       lexptr++;
05735       return c;
05736 
05737     case 'L':
05738     case 'u':
05739     case 'U':
05740       if (tokstart[1] != '"' && tokstart[1] != '\'')
05741         break;
05742       /* Fall through.  */
05743     case '\'':
05744     case '"':
05745 
05746     parse_string:
05747       {
05748         int host_len;
05749         int result = parse_string_or_char (tokstart, &lexptr, &yylval.tsval,
05750                                            &host_len);
05751         if (result == CHAR)
05752           {
05753             if (host_len == 0)
05754               error (_("Empty character constant."));
05755             else if (host_len > 2 && c == '\'')
05756               {
05757                 ++tokstart;
05758                 namelen = lexptr - tokstart - 1;
05759                 goto tryname;
05760               }
05761             else if (host_len > 1)
05762               error (_("Invalid character constant."));
05763           }
05764         return result;
05765       }
05766     }
05767 
05768   if (!(c == '_' || c == '$'
05769         || (c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z')))
05770     /* We must have come across a bad character (e.g. ';').  */
05771     error (_("Invalid character '%c' in expression."), c);
05772 
05773   /* It's a name.  See how long it is.  */
05774   namelen = 0;
05775   for (c = tokstart[namelen];
05776        (c == '_' || c == '$' || (c >= '0' && c <= '9')
05777         || (c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z') || c == '<');)
05778     {
05779       /* Template parameter lists are part of the name.
05780          FIXME: This mishandles `print $a<4&&$a>3'.  */
05781 
05782       if (c == '<')
05783         {
05784           if (! is_cast_operator (tokstart, namelen))
05785             {
05786               /* Scan ahead to get rest of the template specification.  Note
05787                  that we look ahead only when the '<' adjoins non-whitespace
05788                  characters; for comparison expressions, e.g. "a < b > c",
05789                  there must be spaces before the '<', etc. */
05790                
05791               const char *p = find_template_name_end (tokstart + namelen);
05792 
05793               if (p)
05794                 namelen = p - tokstart;
05795             }
05796           break;
05797         }
05798       c = tokstart[++namelen];
05799     }
05800 
05801   /* The token "if" terminates the expression and is NOT removed from
05802      the input stream.  It doesn't count if it appears in the
05803      expansion of a macro.  */
05804   if (namelen == 2
05805       && tokstart[0] == 'i'
05806       && tokstart[1] == 'f'
05807       && ! scanning_macro_expansion ())
05808     {
05809       return 0;
05810     }
05811 
05812   /* For the same reason (breakpoint conditions), "thread N"
05813      terminates the expression.  "thread" could be an identifier, but
05814      an identifier is never followed by a number without intervening
05815      punctuation.  "task" is similar.  Handle abbreviations of these,
05816      similarly to breakpoint.c:find_condition_and_thread.  */
05817   if (namelen >= 1
05818       && (strncmp (tokstart, "thread", namelen) == 0
05819           || strncmp (tokstart, "task", namelen) == 0)
05820       && (tokstart[namelen] == ' ' || tokstart[namelen] == '\t')
05821       && ! scanning_macro_expansion ())
05822     {
05823       const char *p = tokstart + namelen + 1;
05824 
05825       while (*p == ' ' || *p == '\t')
05826         p++;
05827       if (*p >= '0' && *p <= '9')
05828         return 0;
05829     }
05830 
05831   lexptr += namelen;
05832 
05833   tryname:
05834 
05835   yylval.sval.ptr = tokstart;
05836   yylval.sval.length = namelen;
05837 
05838   /* Catch specific keywords.  */
05839   copy = copy_name (yylval.sval);
05840   for (i = 0; i < sizeof ident_tokens / sizeof ident_tokens[0]; i++)
05841     if (strcmp (copy, ident_tokens[i].operator) == 0)
05842       {
05843         if ((ident_tokens[i].flags & FLAG_CXX) != 0
05844             && parse_language->la_language != language_cplus)
05845           break;
05846 
05847         if ((ident_tokens[i].flags & FLAG_SHADOW) != 0)
05848           {
05849             struct field_of_this_result is_a_field_of_this;
05850 
05851             if (lookup_symbol (copy, expression_context_block,
05852                                VAR_DOMAIN,
05853                                (parse_language->la_language == language_cplus
05854                                 ? &is_a_field_of_this
05855                                 : NULL))
05856                 != NULL)
05857               {
05858                 /* The keyword is shadowed.  */
05859                 break;
05860               }
05861           }
05862 
05863         /* It is ok to always set this, even though we don't always
05864            strictly need to.  */
05865         yylval.opcode = ident_tokens[i].opcode;
05866         return ident_tokens[i].token;
05867       }
05868 
05869   if (*tokstart == '$')
05870     return VARIABLE;
05871 
05872   if (parse_completion && *lexptr == '\0')
05873     saw_name_at_eof = 1;
05874 
05875   yylval.ssym.stoken = yylval.sval;
05876   yylval.ssym.sym = NULL;
05877   yylval.ssym.is_a_field_of_this = 0;
05878   return NAME;
05879 }
05880 
05881 /* An object of this type is pushed on a FIFO by the "outer" lexer.  */
05882 typedef struct
05883 {
05884   int token;
05885   YYSTYPE value;
05886 } token_and_value;
05887 
05888 DEF_VEC_O (token_and_value);
05889 
05890 /* A FIFO of tokens that have been read but not yet returned to the
05891    parser.  */
05892 static VEC (token_and_value) *token_fifo;
05893 
05894 /* Non-zero if the lexer should return tokens from the FIFO.  */
05895 static int popping;
05896 
05897 /* Temporary storage for c_lex; this holds symbol names as they are
05898    built up.  */
05899 static struct obstack name_obstack;
05900 
05901 /* Classify a NAME token.  The contents of the token are in `yylval'.
05902    Updates yylval and returns the new token type.  BLOCK is the block
05903    in which lookups start; this can be NULL to mean the global
05904    scope.  */
05905 static int
05906 classify_name (const struct block *block)
05907 {
05908   struct symbol *sym;
05909   char *copy;
05910   struct field_of_this_result is_a_field_of_this;
05911 
05912   copy = copy_name (yylval.sval);
05913 
05914   /* Initialize this in case we *don't* use it in this call; that way
05915      we can refer to it unconditionally below.  */
05916   memset (&is_a_field_of_this, 0, sizeof (is_a_field_of_this));
05917 
05918   sym = lookup_symbol (copy, block, VAR_DOMAIN, 
05919                        parse_language->la_name_of_this
05920                        ? &is_a_field_of_this : NULL);
05921 
05922   if (sym && SYMBOL_CLASS (sym) == LOC_BLOCK)
05923     {
05924       yylval.ssym.sym = sym;
05925       yylval.ssym.is_a_field_of_this = is_a_field_of_this.type != NULL;
05926       return BLOCKNAME;
05927     }
05928   else if (!sym)
05929     {
05930       /* See if it's a file name. */
05931       struct symtab *symtab;
05932 
05933       symtab = lookup_symtab (copy);
05934       if (symtab)
05935         {
05936           yylval.bval = BLOCKVECTOR_BLOCK (BLOCKVECTOR (symtab), STATIC_BLOCK);
05937           return FILENAME;
05938         }
05939 
05940       /* If we found a field of 'this', we might have erroneously
05941          found a constructor where we wanted a type name.  Handle this
05942          case by noticing that we found a constructor and then look up
05943          the type tag instead.  */
05944       if (is_a_field_of_this.type != NULL
05945           && is_a_field_of_this.fn_field != NULL
05946           && TYPE_FN_FIELD_CONSTRUCTOR (is_a_field_of_this.fn_field->fn_fields,
05947                                         0))
05948         {
05949           struct field_of_this_result inner_is_a_field_of_this;
05950 
05951           sym = lookup_symbol (copy, block, STRUCT_DOMAIN,
05952                                &inner_is_a_field_of_this);
05953           if (sym != NULL)
05954             {
05955               yylval.tsym.type = SYMBOL_TYPE (sym);
05956               return TYPENAME;
05957             }
05958         }
05959     }
05960 
05961   if (sym && SYMBOL_CLASS (sym) == LOC_TYPEDEF)
05962     {
05963       yylval.tsym.type = SYMBOL_TYPE (sym);
05964       return TYPENAME;
05965     }
05966 
05967   yylval.tsym.type
05968     = language_lookup_primitive_type_by_name (parse_language,
05969                                               parse_gdbarch, copy);
05970   if (yylval.tsym.type != NULL)
05971     return TYPENAME;
05972 
05973   /* See if it's an ObjC classname.  */
05974   if (parse_language->la_language == language_objc && !sym)
05975     {
05976       CORE_ADDR Class = lookup_objc_class (parse_gdbarch, copy);
05977       if (Class)
05978         {
05979           yylval.class.class = Class;
05980           sym = lookup_struct_typedef (copy, expression_context_block, 1);
05981           if (sym)
05982             yylval.class.type = SYMBOL_TYPE (sym);
05983           return CLASSNAME;
05984         }
05985     }
05986 
05987   /* Input names that aren't symbols but ARE valid hex numbers, when
05988      the input radix permits them, can be names or numbers depending
05989      on the parse.  Note we support radixes > 16 here.  */
05990   if (!sym
05991       && ((copy[0] >= 'a' && copy[0] < 'a' + input_radix - 10)
05992           || (copy[0] >= 'A' && copy[0] < 'A' + input_radix - 10)))
05993     {
05994       YYSTYPE newlval;  /* Its value is ignored.  */
05995       int hextype = parse_number (copy, yylval.sval.length, 0, &newlval);
05996       if (hextype == INT)
05997         {
05998           yylval.ssym.sym = sym;
05999           yylval.ssym.is_a_field_of_this = is_a_field_of_this.type != NULL;
06000           return NAME_OR_INT;
06001         }
06002     }
06003 
06004   /* Any other kind of symbol */
06005   yylval.ssym.sym = sym;
06006   yylval.ssym.is_a_field_of_this = is_a_field_of_this.type != NULL;
06007 
06008   if (sym == NULL
06009       && parse_language->la_language == language_cplus
06010       && is_a_field_of_this.type == NULL
06011       && !lookup_minimal_symbol (copy, NULL, NULL))
06012     return UNKNOWN_CPP_NAME;
06013 
06014   return NAME;
06015 }
06016 
06017 /* Like classify_name, but used by the inner loop of the lexer, when a
06018    name might have already been seen.  CONTEXT is the context type, or
06019    NULL if this is the first component of a name.  */
06020 
06021 static int
06022 classify_inner_name (const struct block *block, struct type *context)
06023 {
06024   struct type *type;
06025   char *copy;
06026 
06027   if (context == NULL)
06028     return classify_name (block);
06029 
06030   type = check_typedef (context);
06031   if (TYPE_CODE (type) != TYPE_CODE_STRUCT
06032       && TYPE_CODE (type) != TYPE_CODE_UNION
06033       && TYPE_CODE (type) != TYPE_CODE_NAMESPACE)
06034     return ERROR;
06035 
06036   copy = copy_name (yylval.ssym.stoken);
06037   yylval.ssym.sym = cp_lookup_nested_symbol (type, copy, block);
06038   if (yylval.ssym.sym == NULL)
06039     return ERROR;
06040 
06041   switch (SYMBOL_CLASS (yylval.ssym.sym))
06042     {
06043     case LOC_BLOCK:
06044     case LOC_LABEL:
06045       return ERROR;
06046 
06047     case LOC_TYPEDEF:
06048       yylval.tsym.type = SYMBOL_TYPE (yylval.ssym.sym);;
06049       return TYPENAME;
06050 
06051     default:
06052       return NAME;
06053     }
06054   internal_error (__FILE__, __LINE__, _("not reached"));
06055 }
06056 
06057 /* The outer level of a two-level lexer.  This calls the inner lexer
06058    to return tokens.  It then either returns these tokens, or
06059    aggregates them into a larger token.  This lets us work around a
06060    problem in our parsing approach, where the parser could not
06061    distinguish between qualified names and qualified types at the
06062    right point.
06063    
06064    This approach is still not ideal, because it mishandles template
06065    types.  See the comment in lex_one_token for an example.  However,
06066    this is still an improvement over the earlier approach, and will
06067    suffice until we move to better parsing technology.  */
06068 static int
06069 yylex (void)
06070 {
06071   token_and_value current;
06072   int first_was_coloncolon, last_was_coloncolon;
06073   struct type *context_type = NULL;
06074   int last_to_examine, next_to_examine, checkpoint;
06075   const struct block *search_block;
06076 
06077   if (popping && !VEC_empty (token_and_value, token_fifo))
06078     goto do_pop;
06079   popping = 0;
06080 
06081   /* Read the first token and decide what to do.  Most of the
06082      subsequent code is C++-only; but also depends on seeing a "::" or
06083      name-like token.  */
06084   current.token = lex_one_token ();
06085   if (current.token == NAME)
06086     current.token = classify_name (expression_context_block);
06087   if (parse_language->la_language != language_cplus
06088       || (current.token != TYPENAME && current.token != COLONCOLON
06089           && current.token != FILENAME))
06090     return current.token;
06091 
06092   /* Read any sequence of alternating "::" and name-like tokens into
06093      the token FIFO.  */
06094   current.value = yylval;
06095   VEC_safe_push (token_and_value, token_fifo, &current);
06096   last_was_coloncolon = current.token == COLONCOLON;
06097   while (1)
06098     {
06099       current.token = lex_one_token ();
06100       current.value = yylval;
06101       VEC_safe_push (token_and_value, token_fifo, &current);
06102 
06103       if ((last_was_coloncolon && current.token != NAME)
06104           || (!last_was_coloncolon && current.token != COLONCOLON))
06105         break;
06106       last_was_coloncolon = !last_was_coloncolon;
06107     }
06108   popping = 1;
06109 
06110   /* We always read one extra token, so compute the number of tokens
06111      to examine accordingly.  */
06112   last_to_examine = VEC_length (token_and_value, token_fifo) - 2;
06113   next_to_examine = 0;
06114 
06115   current = *VEC_index (token_and_value, token_fifo, next_to_examine);
06116   ++next_to_examine;
06117 
06118   obstack_free (&name_obstack, obstack_base (&name_obstack));
06119   checkpoint = 0;
06120   if (current.token == FILENAME)
06121     search_block = current.value.bval;
06122   else if (current.token == COLONCOLON)
06123     search_block = NULL;
06124   else
06125     {
06126       gdb_assert (current.token == TYPENAME);
06127       search_block = expression_context_block;
06128       obstack_grow (&name_obstack, current.value.sval.ptr,
06129                     current.value.sval.length);
06130       context_type = current.value.tsym.type;
06131       checkpoint = 1;
06132     }
06133 
06134   first_was_coloncolon = current.token == COLONCOLON;
06135   last_was_coloncolon = first_was_coloncolon;
06136 
06137   while (next_to_examine <= last_to_examine)
06138     {
06139       token_and_value *next;
06140 
06141       next = VEC_index (token_and_value, token_fifo, next_to_examine);
06142       ++next_to_examine;
06143 
06144       if (next->token == NAME && last_was_coloncolon)
06145         {
06146           int classification;
06147 
06148           yylval = next->value;
06149           classification = classify_inner_name (search_block, context_type);
06150           /* We keep going until we either run out of names, or until
06151              we have a qualified name which is not a type.  */
06152           if (classification != TYPENAME && classification != NAME)
06153             break;
06154 
06155           /* Accept up to this token.  */
06156           checkpoint = next_to_examine;
06157 
06158           /* Update the partial name we are constructing.  */
06159           if (context_type != NULL)
06160             {
06161               /* We don't want to put a leading "::" into the name.  */
06162               obstack_grow_str (&name_obstack, "::");
06163             }
06164           obstack_grow (&name_obstack, next->value.sval.ptr,
06165                         next->value.sval.length);
06166 
06167           yylval.sval.ptr = obstack_base (&name_obstack);
06168           yylval.sval.length = obstack_object_size (&name_obstack);
06169           current.value = yylval;
06170           current.token = classification;
06171 
06172           last_was_coloncolon = 0;
06173           
06174           if (classification == NAME)
06175             break;
06176 
06177           context_type = yylval.tsym.type;
06178         }
06179       else if (next->token == COLONCOLON && !last_was_coloncolon)
06180         last_was_coloncolon = 1;
06181       else
06182         {
06183           /* We've reached the end of the name.  */
06184           break;
06185         }
06186     }
06187 
06188   /* If we have a replacement token, install it as the first token in
06189      the FIFO, and delete the other constituent tokens.  */
06190   if (checkpoint > 0)
06191     {
06192       current.value.sval.ptr = obstack_copy0 (&expansion_obstack,
06193                                               current.value.sval.ptr,
06194                                               current.value.sval.length);
06195 
06196       VEC_replace (token_and_value, token_fifo, 0, &current);
06197       if (checkpoint > 1)
06198         VEC_block_remove (token_and_value, token_fifo, 1, checkpoint - 1);
06199     }
06200 
06201  do_pop:
06202   current = *VEC_index (token_and_value, token_fifo, 0);
06203   VEC_ordered_remove (token_and_value, token_fifo, 0);
06204   yylval = current.value;
06205   return current.token;
06206 }
06207 
06208 int
06209 c_parse (void)
06210 {
06211   int result;
06212   struct cleanup *back_to = make_cleanup (free_current_contents,
06213                                           &expression_macro_scope);
06214 
06215   /* Set up the scope for macro expansion.  */
06216   expression_macro_scope = NULL;
06217 
06218   if (expression_context_block)
06219     expression_macro_scope
06220       = sal_macro_scope (find_pc_line (expression_context_pc, 0));
06221   else
06222     expression_macro_scope = default_macro_scope ();
06223   if (! expression_macro_scope)
06224     expression_macro_scope = user_macro_scope ();
06225 
06226   /* Initialize macro expansion code.  */
06227   obstack_init (&expansion_obstack);
06228   gdb_assert (! macro_original_text);
06229   make_cleanup (scan_macro_cleanup, 0);
06230 
06231   make_cleanup_restore_integer (&yydebug);
06232   yydebug = parser_debug;
06233 
06234   /* Initialize some state used by the lexer.  */
06235   last_was_structop = 0;
06236   saw_name_at_eof = 0;
06237 
06238   VEC_free (token_and_value, token_fifo);
06239   popping = 0;
06240   obstack_init (&name_obstack);
06241   make_cleanup_obstack_free (&name_obstack);
06242 
06243   result = yyparse ();
06244   do_cleanups (back_to);
06245   return result;
06246 }
06247 
06248 /* This is called via the YYPRINT macro when parser debugging is
06249    enabled.  It prints a token's value.  */
06250 
06251 static void
06252 c_print_token (FILE *file, int type, YYSTYPE value)
06253 {
06254   switch (type)
06255     {
06256     case INT:
06257       fprintf (file, "typed_val_int<%s, %s>",
06258                TYPE_SAFE_NAME (value.typed_val_int.type),
06259                pulongest (value.typed_val_int.val));
06260       break;
06261 
06262     case CHAR:
06263     case STRING:
06264       {
06265         char *copy = alloca (value.tsval.length + 1);
06266 
06267         memcpy (copy, value.tsval.ptr, value.tsval.length);
06268         copy[value.tsval.length] = '\0';
06269 
06270         fprintf (file, "tsval<type=%d, %s>", value.tsval.type, copy);
06271       }
06272       break;
06273 
06274     case NSSTRING:
06275     case VARIABLE:
06276       fprintf (file, "sval<%s>", copy_name (value.sval));
06277       break;
06278 
06279     case TYPENAME:
06280       fprintf (file, "tsym<type=%s, name=%s>",
06281                TYPE_SAFE_NAME (value.tsym.type),
06282                copy_name (value.tsym.stoken));
06283       break;
06284 
06285     case NAME:
06286     case UNKNOWN_CPP_NAME:
06287     case NAME_OR_INT:
06288     case BLOCKNAME:
06289       fprintf (file, "ssym<name=%s, sym=%s, field_of_this=%d>",
06290                copy_name (value.ssym.stoken),
06291                (value.ssym.sym == NULL
06292                 ? "(null)" : SYMBOL_PRINT_NAME (value.ssym.sym)),
06293                value.ssym.is_a_field_of_this);
06294       break;
06295 
06296     case FILENAME:
06297       fprintf (file, "bval<%s>", host_address_to_string (value.bval));
06298       break;
06299     }
06300 }
06301 
06302 void
06303 yyerror (char *msg)
06304 {
06305   if (prev_lexptr)
06306     lexptr = prev_lexptr;
06307 
06308   error (_("A %s in expression, near `%s'."), (msg ? msg : "error"), lexptr);
06309 }
06310 
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Defines