parser.tab.cc

Go to the documentation of this file.
00001 /* A Bison parser, made by GNU Bison 2.2.  */
00002 
00003 /* Skeleton implementation for Bison's Yacc-like parsers in C
00004 
00005    Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006
00006    Free Software Foundation, Inc.
00007 
00008    This program is free software; you can redistribute it and/or modify
00009    it under the terms of the GNU General Public License as published by
00010    the Free Software Foundation; either version 2, or (at your option)
00011    any later version.
00012 
00013    This program is distributed in the hope that it will be useful,
00014    but WITHOUT ANY WARRANTY; without even the implied warranty of
00015    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00016    GNU General Public License for more details.
00017 
00018    You should have received a copy of the GNU General Public License
00019    along with this program; if not, write to the Free Software
00020    Foundation, Inc., 51 Franklin Street, Fifth Floor,
00021    Boston, MA 02110-1301, USA.  */
00022 
00023 /* As a special exception, you may create a larger work that contains
00024    part or all of the Bison parser skeleton and distribute that work
00025    under terms of your choice, so long as that work isn't itself a
00026    parser generator using the skeleton or a modified version thereof
00027    as a parser skeleton.  Alternatively, if you modify or redistribute
00028    the parser skeleton itself, you may (at your option) remove this
00029    special exception, which will cause the skeleton and the resulting
00030    Bison output files to be licensed under the GNU General Public
00031    License without this special exception.
00032 
00033    This special exception was added by the Free Software Foundation in
00034    version 2.2 of Bison.  */
00035 
00036 /* C LALR(1) parser skeleton written by Richard Stallman, by
00037    simplifying the original so-called "semantic" parser.  */
00038 
00039 /* All symbols defined below should begin with yy or YY, to avoid
00040    infringing on user name space.  This should be done even for local
00041    variables, as they might otherwise be expanded by user macros.
00042    There are some unavoidable exceptions within include files to
00043    define necessary library symbols; they are noted "INFRINGES ON
00044    USER NAME SPACE" below.  */
00045 
00046 /* Identify Bison output.  */
00047 #define YYBISON 1
00048 
00049 /* Bison version.  */
00050 #define YYBISON_VERSION "2.2"
00051 
00052 /* Skeleton name.  */
00053 #define YYSKELETON_NAME "yacc.c"
00054 
00055 /* Pure parsers.  */
00056 #define YYPURE 1
00057 
00058 /* Using locations.  */
00059 #define YYLSP_NEEDED 0
00060 
00061 
00062 
00063 /* Tokens.  */
00064 #ifndef YYTOKENTYPE
00065 # define YYTOKENTYPE
00066    /* Put the tokens into the symbol table, so that GDB and other debuggers
00067       know about them.  */
00068    enum yytokentype {
00069      TOK_EOF = 0,
00070      _LOWEST_PREC = 258,
00071      TOK_LITERAL = 259,
00072      TOK_ASM = 260,
00073      TOK_AUTO = 261,
00074      TOK_BOOL = 262,
00075      TOK_BREAK = 263,
00076      TOK_CASE = 264,
00077      TOK_CATCH = 265,
00078      TOK_CHAR = 266,
00079      TOK_CLASS = 267,
00080      TOK_CONST = 268,
00081      TOK_CONST_CAST = 269,
00082      TOK_CONTINUE = 270,
00083      TOK_DEFAULT = 271,
00084      TOK_DELETE = 272,
00085      TOK_DO = 273,
00086      TOK_DOUBLE = 274,
00087      TOK_DYNAMIC_CAST = 275,
00088      TOK_ELSE = 276,
00089      TOK_ENUM = 277,
00090      TOK_EXPLICIT = 278,
00091      TOK_EXPORT = 279,
00092      TOK_EXTERN = 280,
00093      TOK_FLOAT = 281,
00094      TOK_FOR = 282,
00095      TOK_FRIEND = 283,
00096      TOK_GOTO = 284,
00097      TOK_IF = 285,
00098      TOK_INLINE = 286,
00099      TOK_INT = 287,
00100      TOK_LONG = 288,
00101      TOK_MUTABLE = 289,
00102      TOK_NAMESPACE = 290,
00103      TOK_NEW = 291,
00104      TOK_OPERATOR = 292,
00105      TOK_PRIVATE = 293,
00106      TOK_PROTECTED = 294,
00107      TOK_PUBLIC = 295,
00108      TOK_REGISTER = 296,
00109      TOK_REINTERPRET_CAST = 297,
00110      TOK_RETURN = 298,
00111      TOK_SHORT = 299,
00112      TOK_SIGNED = 300,
00113      TOK_SIZEOF = 301,
00114      TOK_STATIC = 302,
00115      TOK_STATIC_CAST = 303,
00116      TOK_STRUCT = 304,
00117      TOK_SWITCH = 305,
00118      TOK_TEMPLATE = 306,
00119      TOK_THIS = 307,
00120      TOK_THROW = 308,
00121      TOK_TRY = 309,
00122      TOK_TYPEDEF = 310,
00123      TOK_TYPEID = 311,
00124      TOK_TYPENAME = 312,
00125      TOK_UNION = 313,
00126      TOK_UNSIGNED = 314,
00127      TOK_USING = 315,
00128      TOK_VIRTUAL = 316,
00129      TOK_VOID = 317,
00130      TOK_VOLATILE = 318,
00131      TOK_WCHAR_T = 319,
00132      TOK_WHILE = 320,
00133      TOK_IDENT = 321,
00134      _TYPEDEF_NAME_ID = 322,
00135      _ENUM_NAME_ID = 323,
00136      _CLASS_NAME_ID = 324,
00137      _TEMPL_FORCED = 325,
00138      _NONTYPE = 326,
00139      _TEMPL_TYPE = 327,
00140      _TEMPL_NONTYPE = 328,
00141      _UNKNOWN_ID = 329,
00142      _NMSPC_NAME = 330,
00143      _PAD_FIRST = 331,
00144      TOK_PAD_EXPR_STMT = 332,
00145      TOK_PAD_BLOCK_DECL = 333,
00146      TOK_PAD_SIMPLE_DECL = 334,
00147      TOK_PAD_LABEL = 335,
00148      TOK_PAD_COND_EXPR = 336,
00149      TOK_PAD_COND_DECL = 337,
00150      TOK_PAD_FOR_COND_EXPR = 338,
00151      TOK_PAD_FOR_COND_DECL = 339,
00152      TOK_PAD_SIZEOF_EXPR = 340,
00153      TOK_PAD_SIZEOF_TYPE_ID = 341,
00154      TOK_PAD_TYPE_ID_RPAR_CAST_EXPR = 342,
00155      TOK_PAD_EXPR_RPAR = 343,
00156      TOK_PAD_TYPE_ID_RPAR = 344,
00157      TOK_PAD_LPAR_EXPR_LIST_RPAR = 345,
00158      TOK_PAD_EXPR_LIST_RPAR = 346,
00159      TOK_PAD_TEMPL_ARG_EXPR = 347,
00160      TOK_PAD_TEMPL_ARG_TYPE_ID = 348,
00161      TOK_PAD_PARAM_DECL_CLAUSE = 349,
00162      TOK_PAD_PARAM_DCLTOR = 350,
00163      TOK_PAD_TEMPL_PARAM_TYPE = 351,
00164      TOK_PAD_TEMPL_PARAM_NONTYPE = 352,
00165      TOK_PAD_CTOR = 353,
00166      TOK_PAD_UNNAMED_BITFIELD = 354,
00167      TOK_PAD_MEMBER_FUNC = 355,
00168      TOK_PAD_MEMBER_OBJECT = 356,
00169      TOK_PAD_TEMPL_OP = 357,
00170      TOK_PAD_OP_NOT_TEMPL = 358,
00171      TOK_PAD_TO_BE_DISCARDED = 359,
00172      _PAD_LAST = 360,
00173      _START_FIRST = 361,
00174      TOK_START_PROGRAM = 362,
00175      TOK_START_EXPR_STMT = 363,
00176      TOK_START_BLOCK_DECL = 364,
00177      TOK_START_SIMPLE_DECL = 365,
00178      TOK_START_LABEL = 366,
00179      TOK_START_COND_EXPR = 367,
00180      TOK_START_COND_DECL = 368,
00181      TOK_START_FOR_COND_EXPR = 369,
00182      TOK_START_FOR_COND_DECL = 370,
00183      TOK_START_SIZEOF_EXPR = 371,
00184      TOK_START_SIZEOF_TYPE_ID = 372,
00185      TOK_START_EXPR_RPAR = 373,
00186      TOK_START_TYPE_ID_RPAR = 374,
00187      TOK_START_TYPE_ID_RPAR_CAST_EXPR = 375,
00188      TOK_START_LPAR_EXPR_LIST_RPAR = 376,
00189      TOK_START_EXPR_LIST_RPAR = 377,
00190      TOK_START_TEMPL_ARG_EXPR = 378,
00191      TOK_START_TEMPL_ARG_TYPE_ID = 379,
00192      TOK_START_PARAM_DECL_CLAUSE = 380,
00193      TOK_START_PARAM_DCLTOR = 381,
00194      TOK_START_TEMPL_PARAM_TYPE = 382,
00195      TOK_START_TEMPL_PARAM_NONTYPE = 383,
00196      TOK_START_CTOR = 384,
00197      TOK_START_TO_BE_DISCARDED = 385,
00198      _START_LAST = 386,
00199      _PACK_FIRST = 387,
00200      TOK_PACK_BODY = 388,
00201      TOK_PACK_ERROR_COND = 389,
00202      TOK_PACK_ERROR_FOR_COND = 390,
00203      TOK_PACK_ERROR_STMT = 391,
00204      _PACK_LAST = 392,
00205      TOK_DOT = 393,
00206      TOK_RIGHT_BRACKET = 394,
00207      TOK_LEFT_BRACKET = 395,
00208      TOK_EXCLAMATION = 396,
00209      TOK_TILDE = 397,
00210      TOK_PERCENT = 398,
00211      TOK_SLASH = 399,
00212      TOK_STAR = 400,
00213      TOK_MINUS = 401,
00214      TOK_PLUS = 402,
00215      TOK_GT = 403,
00216      TOK_LT = 404,
00217      TOK_AMP = 405,
00218      TOK_HAT = 406,
00219      TOK_VBAR = 407,
00220      TOK_QMARK = 408,
00221      TOK_COMMA = 409,
00222      TOK_RIGHT_BRACE = 410,
00223      TOK_LEFT_BRACE = 411,
00224      TOK_SEMICOLON = 412,
00225      TOK_RIGHT_PAR = 413,
00226      TOK_LEFT_PAR = 414,
00227      TOK_EQ = 415,
00228      TOK_COLON = 416,
00229      TOK_DOT_DOT_DOT = 417,
00230      TOK_MINUS_GT = 418,
00231      TOK_MINUS_GT_STAR = 419,
00232      TOK_DOT_STAR = 420,
00233      TOK_GT_EQ = 421,
00234      TOK_LT_EQ = 422,
00235      TOK_EXCLAMATION_EQ = 423,
00236      TOK_EQ_EQ = 424,
00237      TOK_AMP_AMP = 425,
00238      TOK_VBAR_VBAR = 426,
00239      TOK_GT_GT = 427,
00240      TOK_LT_LT = 428,
00241      TOK_MINUS_MINUS = 429,
00242      TOK_PLUS_PLUS = 430,
00243      TOK_LT_LT_EQ = 431,
00244      TOK_GT_GT_EQ = 432,
00245      TOK_VBAR_EQ = 433,
00246      TOK_AMP_EQ = 434,
00247      TOK_HAT_EQ = 435,
00248      TOK_PERCENT_EQ = 436,
00249      TOK_SLASH_EQ = 437,
00250      TOK_STAR_EQ = 438,
00251      TOK_MINUS_EQ = 439,
00252      TOK_PLUS_EQ = 440,
00253      TOK_COLON_COLON = 441,
00254      _HIGHEST_PREC = 442,
00255      TOK_ERROR = 443,
00256      TOK_TEXT = 444
00257    };
00258 #endif
00259 /* Tokens.  */
00260 #define TOK_EOF 0
00261 #define _LOWEST_PREC 258
00262 #define TOK_LITERAL 259
00263 #define TOK_ASM 260
00264 #define TOK_AUTO 261
00265 #define TOK_BOOL 262
00266 #define TOK_BREAK 263
00267 #define TOK_CASE 264
00268 #define TOK_CATCH 265
00269 #define TOK_CHAR 266
00270 #define TOK_CLASS 267
00271 #define TOK_CONST 268
00272 #define TOK_CONST_CAST 269
00273 #define TOK_CONTINUE 270
00274 #define TOK_DEFAULT 271
00275 #define TOK_DELETE 272
00276 #define TOK_DO 273
00277 #define TOK_DOUBLE 274
00278 #define TOK_DYNAMIC_CAST 275
00279 #define TOK_ELSE 276
00280 #define TOK_ENUM 277
00281 #define TOK_EXPLICIT 278
00282 #define TOK_EXPORT 279
00283 #define TOK_EXTERN 280
00284 #define TOK_FLOAT 281
00285 #define TOK_FOR 282
00286 #define TOK_FRIEND 283
00287 #define TOK_GOTO 284
00288 #define TOK_IF 285
00289 #define TOK_INLINE 286
00290 #define TOK_INT 287
00291 #define TOK_LONG 288
00292 #define TOK_MUTABLE 289
00293 #define TOK_NAMESPACE 290
00294 #define TOK_NEW 291
00295 #define TOK_OPERATOR 292
00296 #define TOK_PRIVATE 293
00297 #define TOK_PROTECTED 294
00298 #define TOK_PUBLIC 295
00299 #define TOK_REGISTER 296
00300 #define TOK_REINTERPRET_CAST 297
00301 #define TOK_RETURN 298
00302 #define TOK_SHORT 299
00303 #define TOK_SIGNED 300
00304 #define TOK_SIZEOF 301
00305 #define TOK_STATIC 302
00306 #define TOK_STATIC_CAST 303
00307 #define TOK_STRUCT 304
00308 #define TOK_SWITCH 305
00309 #define TOK_TEMPLATE 306
00310 #define TOK_THIS 307
00311 #define TOK_THROW 308
00312 #define TOK_TRY 309
00313 #define TOK_TYPEDEF 310
00314 #define TOK_TYPEID 311
00315 #define TOK_TYPENAME 312
00316 #define TOK_UNION 313
00317 #define TOK_UNSIGNED 314
00318 #define TOK_USING 315
00319 #define TOK_VIRTUAL 316
00320 #define TOK_VOID 317
00321 #define TOK_VOLATILE 318
00322 #define TOK_WCHAR_T 319
00323 #define TOK_WHILE 320
00324 #define TOK_IDENT 321
00325 #define _TYPEDEF_NAME_ID 322
00326 #define _ENUM_NAME_ID 323
00327 #define _CLASS_NAME_ID 324
00328 #define _TEMPL_FORCED 325
00329 #define _NONTYPE 326
00330 #define _TEMPL_TYPE 327
00331 #define _TEMPL_NONTYPE 328
00332 #define _UNKNOWN_ID 329
00333 #define _NMSPC_NAME 330
00334 #define _PAD_FIRST 331
00335 #define TOK_PAD_EXPR_STMT 332
00336 #define TOK_PAD_BLOCK_DECL 333
00337 #define TOK_PAD_SIMPLE_DECL 334
00338 #define TOK_PAD_LABEL 335
00339 #define TOK_PAD_COND_EXPR 336
00340 #define TOK_PAD_COND_DECL 337
00341 #define TOK_PAD_FOR_COND_EXPR 338
00342 #define TOK_PAD_FOR_COND_DECL 339
00343 #define TOK_PAD_SIZEOF_EXPR 340
00344 #define TOK_PAD_SIZEOF_TYPE_ID 341
00345 #define TOK_PAD_TYPE_ID_RPAR_CAST_EXPR 342
00346 #define TOK_PAD_EXPR_RPAR 343
00347 #define TOK_PAD_TYPE_ID_RPAR 344
00348 #define TOK_PAD_LPAR_EXPR_LIST_RPAR 345
00349 #define TOK_PAD_EXPR_LIST_RPAR 346
00350 #define TOK_PAD_TEMPL_ARG_EXPR 347
00351 #define TOK_PAD_TEMPL_ARG_TYPE_ID 348
00352 #define TOK_PAD_PARAM_DECL_CLAUSE 349
00353 #define TOK_PAD_PARAM_DCLTOR 350
00354 #define TOK_PAD_TEMPL_PARAM_TYPE 351
00355 #define TOK_PAD_TEMPL_PARAM_NONTYPE 352
00356 #define TOK_PAD_CTOR 353
00357 #define TOK_PAD_UNNAMED_BITFIELD 354
00358 #define TOK_PAD_MEMBER_FUNC 355
00359 #define TOK_PAD_MEMBER_OBJECT 356
00360 #define TOK_PAD_TEMPL_OP 357
00361 #define TOK_PAD_OP_NOT_TEMPL 358
00362 #define TOK_PAD_TO_BE_DISCARDED 359
00363 #define _PAD_LAST 360
00364 #define _START_FIRST 361
00365 #define TOK_START_PROGRAM 362
00366 #define TOK_START_EXPR_STMT 363
00367 #define TOK_START_BLOCK_DECL 364
00368 #define TOK_START_SIMPLE_DECL 365
00369 #define TOK_START_LABEL 366
00370 #define TOK_START_COND_EXPR 367
00371 #define TOK_START_COND_DECL 368
00372 #define TOK_START_FOR_COND_EXPR 369
00373 #define TOK_START_FOR_COND_DECL 370
00374 #define TOK_START_SIZEOF_EXPR 371
00375 #define TOK_START_SIZEOF_TYPE_ID 372
00376 #define TOK_START_EXPR_RPAR 373
00377 #define TOK_START_TYPE_ID_RPAR 374
00378 #define TOK_START_TYPE_ID_RPAR_CAST_EXPR 375
00379 #define TOK_START_LPAR_EXPR_LIST_RPAR 376
00380 #define TOK_START_EXPR_LIST_RPAR 377
00381 #define TOK_START_TEMPL_ARG_EXPR 378
00382 #define TOK_START_TEMPL_ARG_TYPE_ID 379
00383 #define TOK_START_PARAM_DECL_CLAUSE 380
00384 #define TOK_START_PARAM_DCLTOR 381
00385 #define TOK_START_TEMPL_PARAM_TYPE 382
00386 #define TOK_START_TEMPL_PARAM_NONTYPE 383
00387 #define TOK_START_CTOR 384
00388 #define TOK_START_TO_BE_DISCARDED 385
00389 #define _START_LAST 386
00390 #define _PACK_FIRST 387
00391 #define TOK_PACK_BODY 388
00392 #define TOK_PACK_ERROR_COND 389
00393 #define TOK_PACK_ERROR_FOR_COND 390
00394 #define TOK_PACK_ERROR_STMT 391
00395 #define _PACK_LAST 392
00396 #define TOK_DOT 393
00397 #define TOK_RIGHT_BRACKET 394
00398 #define TOK_LEFT_BRACKET 395
00399 #define TOK_EXCLAMATION 396
00400 #define TOK_TILDE 397
00401 #define TOK_PERCENT 398
00402 #define TOK_SLASH 399
00403 #define TOK_STAR 400
00404 #define TOK_MINUS 401
00405 #define TOK_PLUS 402
00406 #define TOK_GT 403
00407 #define TOK_LT 404
00408 #define TOK_AMP 405
00409 #define TOK_HAT 406
00410 #define TOK_VBAR 407
00411 #define TOK_QMARK 408
00412 #define TOK_COMMA 409
00413 #define TOK_RIGHT_BRACE 410
00414 #define TOK_LEFT_BRACE 411
00415 #define TOK_SEMICOLON 412
00416 #define TOK_RIGHT_PAR 413
00417 #define TOK_LEFT_PAR 414
00418 #define TOK_EQ 415
00419 #define TOK_COLON 416
00420 #define TOK_DOT_DOT_DOT 417
00421 #define TOK_MINUS_GT 418
00422 #define TOK_MINUS_GT_STAR 419
00423 #define TOK_DOT_STAR 420
00424 #define TOK_GT_EQ 421
00425 #define TOK_LT_EQ 422
00426 #define TOK_EXCLAMATION_EQ 423
00427 #define TOK_EQ_EQ 424
00428 #define TOK_AMP_AMP 425
00429 #define TOK_VBAR_VBAR 426
00430 #define TOK_GT_GT 427
00431 #define TOK_LT_LT 428
00432 #define TOK_MINUS_MINUS 429
00433 #define TOK_PLUS_PLUS 430
00434 #define TOK_LT_LT_EQ 431
00435 #define TOK_GT_GT_EQ 432
00436 #define TOK_VBAR_EQ 433
00437 #define TOK_AMP_EQ 434
00438 #define TOK_HAT_EQ 435
00439 #define TOK_PERCENT_EQ 436
00440 #define TOK_SLASH_EQ 437
00441 #define TOK_STAR_EQ 438
00442 #define TOK_MINUS_EQ 439
00443 #define TOK_PLUS_EQ 440
00444 #define TOK_COLON_COLON 441
00445 #define _HIGHEST_PREC 442
00446 #define TOK_ERROR 443
00447 #define TOK_TEXT 444
00448 
00449 
00450 
00451 
00452 /* Copy the first part of user declarations.  */
00453 #line 1 "parser.y"
00454 
00455 /*
00456    The lestes compiler suite
00457    Copyright (C) 2002, 2003, 2004, 2005 Miroslav Tichy
00458    Copyright (C) 2002, 2003, 2004, 2005 Petr Zika
00459    Copyright (C) 2002, 2003, 2004, 2005 Vojtech Hala
00460    Copyright (C) 2002, 2003, 2004, 2005 Jiri Kosina
00461    Copyright (C) 2002, 2003, 2004, 2005 Pavel Sanda
00462    Copyright (C) 2002, 2003, 2004, 2005 Jan Zouhar
00463    Copyright (C) 2002, 2003, 2004, 2005 Rudolf Thomas
00464 
00465    This program is free software; you can redistribute it and/or modify
00466    it under the terms of the GNU General Public License as published by
00467    the Free Software Foundation; version 2 of the License.
00468 
00469    This program is distributed in the hope that it will be useful,
00470    but WITHOUT ANY WARRANTY; without even the implied warranty of
00471    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00472    GNU General Public License for more details.
00473 
00474    See the full text of the GNU General Public License version 2, and
00475    the limitations in the file doc/LICENSE.
00476 
00477    By accepting the license the licensee waives any and all claims
00478    against the copyright holder(s) related in whole or in part to the
00479    work, its use, and/or the inability to use it.
00480  
00481  */
00482 
00483 #define YYSTYPE semval
00484 
00485 #define clear_lookahead()                       \
00486         do {                                    \
00487                 lassert( yychar != YYEMPTY );   \
00488                 yychar = YYEMPTY;               \
00489                 manager::back_up();             \
00490         } while (false)                 
00491 
00492 #define try_begin( _txt ) do {                  \
00493                 llog_xml_open(pl,"disambiguation") << "\nkind: " << _txt << "\n";
00494 
00495 #define try_end_fail()                                                                  \
00496                         llog_xml_close(pl,"disambiguation") << " all tries failed\n";   \
00497                         if (manager::in_disambiguation())                               \
00498                                 YYABORT;        /* returns from yyparse() */            \
00499                         report << disa_failed << loc(manager::peek());                  \
00500                         /* commit ANY pad token, or NO_PAD_TOKEN_BUG() may kick in */   \
00501                         manager::start( TOK_START_TO_BE_DISCARDED );                    \
00502                         manager::commit( TOK_PAD_TO_BE_DISCARDED );                     \
00503                         manager::failing_set_true();                                    \
00504                 } while (false)
00505 
00506 #define try_end_skip() llog_xml_close(pl,"disambiguation") << "\n";     \
00507                 } while (false)
00508 
00509 // DO NOT use this one in *any* construct (if, for, ...)
00510 // (or enclose it in braces :)
00511 #define try_and_commit( start_token_value, commit_token_value, result_var )     \
00512         manager::start( start_token_value );                                    \
00513         ptr<parse_result_type> result_var = parser::parse();                    \
00514         if (result_var->success_get()) {                                        \
00515                 manager::commit( commit_token_value );                          \
00516                 llog_xml_close(pl,"disambiguation") << "\n";                    \
00517                 break;                                                          \
00518         }                                                                       \
00519         manager::rollback();
00520 
00521 static bool is_not_pad( int i )
00522 {
00523         return (i < _PAD_FIRST || i > _PAD_LAST);
00524 }
00525 
00526 static bool is_pack( int i )
00527 {
00528         return (i > _PACK_FIRST && i < _PACK_LAST);
00529 }
00530 
00531 static void disambiguate_ctor_and_bitfield_class_scope( ptr<as_declaration_specifier_seq> const );
00532 static void disambiguate_ctor_nmspc_scope( ptr<as_declaration_specifier_seq> const );
00533 
00534 #define loc(x)                                  ((x)->location_get())
00535 
00536 #define UNWTOK(x)                               ((x)->wrapped_token_get())
00537 
00538 #define EMPTY_LIST( type )                      ::lestes::std::list< srp< type > >::create()
00539 #define EMPTY_WRAPPER( wrapper_type, l, type )  wrapper_type::create( (l), EMPTY_LIST(type) )
00540 // "create empty wrapper with one item" ;-)
00541 #define NEW_WRAPPER_W1( dest, wrapper_type, l, type, item )                             \
00542                         do {                                                            \
00543                                 (dest) = EMPTY_WRAPPER( wrapper_type, (l), type );      \
00544                                 WRAPPER_APPEND( (dest), (item) );                       \
00545                         } while(false)
00546 
00547 #define LIST_APPEND( list, item )               (list)->push_back(item)
00548 #define LIST_PREPEND( list, item )              (list)->push_front(item)
00549 #define LIST_APPEND_LIST( append_to, list )     (append_to)->splice( (append_to)->end(), *(list) )
00550 #define LIST_PREPEND_LIST( prepend_to, list )   (prepend_to)->splice( (prepend_to)->begin(), *(list) )
00551 
00552 #define UNWRAP(w)                               (w)->l_get()
00553 #define WRAPPER_APPEND( wrapper, item )         LIST_APPEND( UNWRAP(wrapper), (item) )
00554 #define WRAPPER_PREPEND( wrapper, item )        LIST_PREPEND( UNWRAP(wrapper), (item) )
00555 #define WRAPPER_APPEND_WRAPPER( append_to, w )  LIST_APPEND_LIST( UNWRAP(append_to), UNWRAP(w) )
00556 
00557 /*!
00558   \brief Accessory macro for obtaining current as_name context.
00559 
00560   \invariant The value of this macro shall have the as_name::was_qualified set to false.
00561 */
00562 #define CURR_CTX(l)     (sa_context_manager::instance()->current()->as_get()->scope_get())
00563 #define GLOB_CTX(l)     as_name::create( (l), NULL, as_global_namespace_fake_id::create(l), true )
00564 
00565 #define DUMMY_STMT      as_dummy_statement::create(DUMMY_LOC)
00566 #define DUMMY_LOC       source_location::zero()
00567 #define DUMMY_DCLTOR    as_dummy_declarator::create( DUMMY_LOC, NULL, EMPTY_LIST(as_declarator_op) )
00568 
00569 #define EMPTY_EXPR(l)   as_empty_expression::create( (l) )
00570 #define EMPTY_DCLTOR(l) as_declarator::create( (l), NULL, EMPTY_LIST(as_declarator_op) )
00571 #define EMPTY_TYPE_ID(l,dl)     as_type_id::create( (l), EMPTY_LIST(as_type_specifier), EMPTY_DCLTOR(dl) )
00572 
00573 #define EXPR2STMT(x)    as_expression_statement::create( loc(x), (x) )
00574 #define TOK2ID(x)       as_identifier::create( loc(x), (x) )
00575 
00576 #define EMPTY_ID(l)     as_empty_id::create( (l) )
00577 
00578 #define CURR_ACCESS_SPEC() (sa_context_manager::instance()->current()->as_get()->access_specifier_get())
00579 
00580 #define NO_PAD_TOKEN_BUG(l)     lassert3( false, "Disambiguation did not commit a PAD token.", (l) )
00581 
00582 #define sel(type)       select< type >()
00583 
00584 
00585 
00586 /* Enabling traces.  */
00587 #ifndef YYDEBUG
00588 # define YYDEBUG 0
00589 #endif
00590 
00591 /* Enabling verbose error messages.  */
00592 #ifdef YYERROR_VERBOSE
00593 # undef YYERROR_VERBOSE
00594 # define YYERROR_VERBOSE 1
00595 #else
00596 # define YYERROR_VERBOSE 1
00597 #endif
00598 
00599 /* Enabling the token table.  */
00600 #ifndef YYTOKEN_TABLE
00601 # define YYTOKEN_TABLE 1
00602 #endif
00603 
00604 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
00605 typedef int YYSTYPE;
00606 # define yystype YYSTYPE /* obsolescent; will be withdrawn */
00607 # define YYSTYPE_IS_DECLARED 1
00608 # define YYSTYPE_IS_TRIVIAL 1
00609 #endif
00610 
00611 
00612 
00613 /* Copy the second part of user declarations.  */
00614 
00615 
00616 /* Line 216 of yacc.c.  */
00617 #line 618 "parser.tab.cc"
00618 
00619 #ifdef short
00620 # undef short
00621 #endif
00622 
00623 #ifdef YYTYPE_UINT8
00624 typedef YYTYPE_UINT8 yytype_uint8;
00625 #else
00626 typedef unsigned char yytype_uint8;
00627 #endif
00628 
00629 #ifdef YYTYPE_INT8
00630 typedef YYTYPE_INT8 yytype_int8;
00631 #elif (defined __STDC__ || defined __C99__FUNC__ \
00632      || defined __cplusplus || defined _MSC_VER)
00633 typedef signed char yytype_int8;
00634 #else
00635 typedef short int yytype_int8;
00636 #endif
00637 
00638 #ifdef YYTYPE_UINT16
00639 typedef YYTYPE_UINT16 yytype_uint16;
00640 #else
00641 typedef unsigned short int yytype_uint16;
00642 #endif
00643 
00644 #ifdef YYTYPE_INT16
00645 typedef YYTYPE_INT16 yytype_int16;
00646 #else
00647 typedef short int yytype_int16;
00648 #endif
00649 
00650 #ifndef YYSIZE_T
00651 # ifdef __SIZE_TYPE__
00652 #  define YYSIZE_T __SIZE_TYPE__
00653 # elif defined size_t
00654 #  define YYSIZE_T size_t
00655 # elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \
00656      || defined __cplusplus || defined _MSC_VER)
00657 #  include <stddef.h> /* INFRINGES ON USER NAME SPACE */
00658 #  define YYSIZE_T size_t
00659 # else
00660 #  define YYSIZE_T unsigned int
00661 # endif
00662 #endif
00663 
00664 #define YYSIZE_MAXIMUM ((YYSIZE_T) -1)
00665 
00666 #ifndef YY_
00667 # if YYENABLE_NLS
00668 #  if ENABLE_NLS
00669 #   include <libintl.h> /* INFRINGES ON USER NAME SPACE */
00670 #   define YY_(msgid) dgettext ("bison-runtime", msgid)
00671 #  endif
00672 # endif
00673 # ifndef YY_
00674 #  define YY_(msgid) msgid
00675 # endif
00676 #endif
00677 
00678 /* Suppress unused-variable warnings by "using" E.  */
00679 #if ! defined lint || defined __GNUC__
00680 # define YYUSE(e) ((void) (e))
00681 #else
00682 # define YYUSE(e) /* empty */
00683 #endif
00684 
00685 /* Identity function, used to suppress warnings about constant conditions.  */
00686 #ifndef lint
00687 # define YYID(n) (n)
00688 #else
00689 #if (defined __STDC__ || defined __C99__FUNC__ \
00690      || defined __cplusplus || defined _MSC_VER)
00691 static int
00692 YYID (int i)
00693 #else
00694 static int
00695 YYID (i)
00696     int i;
00697 #endif
00698 {
00699   return i;
00700 }
00701 #endif
00702 
00703 #if ! defined yyoverflow || YYERROR_VERBOSE
00704 
00705 /* The parser invokes alloca or malloc; define the necessary symbols.  */
00706 
00707 # ifdef YYSTACK_USE_ALLOCA
00708 #  if YYSTACK_USE_ALLOCA
00709 #   ifdef __GNUC__
00710 #    define YYSTACK_ALLOC __builtin_alloca
00711 #   elif defined __BUILTIN_VA_ARG_INCR
00712 #    include <alloca.h> /* INFRINGES ON USER NAME SPACE */
00713 #   elif defined _AIX
00714 #    define YYSTACK_ALLOC __alloca
00715 #   elif defined _MSC_VER
00716 #    include <malloc.h> /* INFRINGES ON USER NAME SPACE */
00717 #    define alloca _alloca
00718 #   else
00719 #    define YYSTACK_ALLOC alloca
00720 #    if ! defined _ALLOCA_H && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
00721      || defined __cplusplus || defined _MSC_VER)
00722 #     include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
00723 #     ifndef _STDLIB_H
00724 #      define _STDLIB_H 1
00725 #     endif
00726 #    endif
00727 #   endif
00728 #  endif
00729 # endif
00730 
00731 # ifdef YYSTACK_ALLOC
00732    /* Pacify GCC's `empty if-body' warning.  */
00733 #  define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0))
00734 #  ifndef YYSTACK_ALLOC_MAXIMUM
00735     /* The OS might guarantee only one guard page at the bottom of the stack,
00736        and a page size can be as small as 4096 bytes.  So we cannot safely
00737        invoke alloca (N) if N exceeds 4096.  Use a slightly smaller number
00738        to allow for a few compiler-allocated temporary stack slots.  */
00739 #   define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */
00740 #  endif
00741 # else
00742 #  define YYSTACK_ALLOC YYMALLOC
00743 #  define YYSTACK_FREE YYFREE
00744 #  ifndef YYSTACK_ALLOC_MAXIMUM
00745 #   define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
00746 #  endif
00747 #  if (defined __cplusplus && ! defined _STDLIB_H \
00748        && ! ((defined YYMALLOC || defined malloc) \
00749              && (defined YYFREE || defined free)))
00750 #   include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
00751 #   ifndef _STDLIB_H
00752 #    define _STDLIB_H 1
00753 #   endif
00754 #  endif
00755 #  ifndef YYMALLOC
00756 #   define YYMALLOC malloc
00757 #   if ! defined malloc && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
00758      || defined __cplusplus || defined _MSC_VER)
00759 void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
00760 #   endif
00761 #  endif
00762 #  ifndef YYFREE
00763 #   define YYFREE free
00764 #   if ! defined free && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
00765      || defined __cplusplus || defined _MSC_VER)
00766 void free (void *); /* INFRINGES ON USER NAME SPACE */
00767 #   endif
00768 #  endif
00769 # endif
00770 #endif /* ! defined yyoverflow || YYERROR_VERBOSE */
00771 
00772 
00773 #if (! defined yyoverflow \
00774      && (! defined __cplusplus \
00775          || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
00776 
00777 /* A type that is properly aligned for any stack member.  */
00778 union yyalloc
00779 {
00780   yytype_int16 yyss;
00781   YYSTYPE yyvs;
00782   };
00783 
00784 /* The size of the maximum gap between one aligned stack and the next.  */
00785 # define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
00786 
00787 /* The size of an array large to enough to hold all stacks, each with
00788    N elements.  */
00789 # define YYSTACK_BYTES(N) \
00790      ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \
00791       + YYSTACK_GAP_MAXIMUM)
00792 
00793 /* Copy COUNT objects from FROM to TO.  The source and destination do
00794    not overlap.  */
00795 # ifndef YYCOPY
00796 #  if defined __GNUC__ && 1 < __GNUC__
00797 #   define YYCOPY(To, From, Count) \
00798       __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
00799 #  else
00800 #   define YYCOPY(To, From, Count)              \
00801       do                                        \
00802         {                                       \
00803           YYSIZE_T yyi;                         \
00804           for (yyi = 0; yyi < (Count); yyi++)   \
00805             (To)[yyi] = (From)[yyi];            \
00806         }                                       \
00807       while (YYID (0))
00808 #  endif
00809 # endif
00810 
00811 /* Relocate STACK from its old location to the new one.  The
00812    local variables YYSIZE and YYSTACKSIZE give the old and new number of
00813    elements in the stack, and YYPTR gives the new location of the
00814    stack.  Advance YYPTR to a properly aligned location for the next
00815    stack.  */
00816 # define YYSTACK_RELOCATE(Stack)                                        \
00817     do                                                                  \
00818       {                                                                 \
00819         YYSIZE_T yynewbytes;                                            \
00820         YYCOPY (&yyptr->Stack, Stack, yysize);                          \
00821         Stack = &yyptr->Stack;                                          \
00822         yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
00823         yyptr += yynewbytes / sizeof (*yyptr);                          \
00824       }                                                                 \
00825     while (YYID (0))
00826 
00827 #endif
00828 
00829 /* YYFINAL -- State number of the termination state.  */
00830 #define YYFINAL  223
00831 /* YYLAST -- Last index in YYTABLE.  */
00832 #define YYLAST   4645
00833 
00834 /* YYNTOKENS -- Number of terminals.  */
00835 #define YYNTOKENS  190
00836 /* YYNNTS -- Number of nonterminals.  */
00837 #define YYNNTS  242
00838 /* YYNRULES -- Number of rules.  */
00839 #define YYNRULES  746
00840 /* YYNRULES -- Number of states.  */
00841 #define YYNSTATES  1415
00842 
00843 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
00844 #define YYUNDEFTOK  2
00845 #define YYMAXUTOK   444
00846 
00847 #define YYTRANSLATE(YYX)                                                \
00848   ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
00849 
00850 /* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX.  */
00851 static const yytype_uint8 yytranslate[] =
00852 {
00853        0,     2,     2,     2,     2,     2,     2,     2,     2,     2,
00854        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
00855        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
00856        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
00857        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
00858        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
00859        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
00860        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
00861        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
00862        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
00863        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
00864        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
00865        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
00866        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
00867        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
00868        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
00869        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
00870        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
00871        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
00872        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
00873        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
00874        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
00875        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
00876        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
00877        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
00878        2,     2,     2,     2,     2,     2,     1,     2,     3,     4,
00879        5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
00880       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
00881       25,    26,    27,    28,    29,    30,    31,    32,    33,    34,
00882       35,    36,    37,    38,    39,    40,    41,    42,    43,    44,
00883       45,    46,    47,    48,    49,    50,    51,    52,    53,    54,
00884       55,    56,    57,    58,    59,    60,    61,    62,    63,    64,
00885       65,    66,    67,    68,    69,    70,    71,    72,    73,    74,
00886       75,    76,    77,    78,    79,    80,    81,    82,    83,    84,
00887       85,    86,    87,    88,    89,    90,    91,    92,    93,    94,
00888       95,    96,    97,    98,    99,   100,   101,   102,   103,   104,
00889      105,   106,   107,   108,   109,   110,   111,   112,   113,   114,
00890      115,   116,   117,   118,   119,   120,   121,   122,   123,   124,
00891      125,   126,   127,   128,   129,   130,   131,   132,   133,   134,
00892      135,   136,   137,   138,   139,   140,   141,   142,   143,   144,
00893      145,   146,   147,   148,   149,   150,   151,   152,   153,   154,
00894      155,   156,   157,   158,   159,   160,   161,   162,   163,   164,
00895      165,   166,   167,   168,   169,   170,   171,   172,   173,   174,
00896      175,   176,   177,   178,   179,   180,   181,   182,   183,   184,
00897      185,   186,   187,   188,   189
00898 };
00899 
00900 #if YYDEBUG
00901 /* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
00902    YYRHS.  */
00903 static const yytype_uint16 yyprhs[] =
00904 {
00905        0,     0,     3,     5,     7,     9,    11,    13,    15,    17,
00906       19,    20,    22,    24,    26,    28,    30,    32,    34,    36,
00907       38,    40,    42,    43,    45,    46,    48,    49,    52,    54,
00908       56,    61,    66,    71,    74,    77,    81,    84,    88,    92,
00909       96,   101,   105,   112,   116,   123,   126,   131,   134,   137,
00910      141,   145,   148,   154,   160,   166,   172,   178,   184,   190,
00911      193,   195,   198,   202,   205,   207,   210,   213,   217,   224,
00912      227,   231,   238,   241,   247,   249,   253,   255,   257,   260,
00913      270,   282,   293,   295,   297,   299,   305,   307,   313,   316,
00914      319,   321,   324,   327,   329,   331,   335,   338,   341,   345,
00915      349,   351,   359,   362,   364,   368,   370,   372,   374,   377,
00916      380,   383,   386,   388,   393,   396,   399,   402,   405,   408,
00917      413,   416,   418,   422,   424,   426,   430,   434,   438,   442,
00918      446,   450,   454,   458,   462,   466,   470,   472,   474,   480,
00919      482,   486,   488,   492,   494,   498,   500,   504,   506,   510,
00920      512,   516,   520,   522,   526,   530,   534,   538,   540,   544,
00921      548,   550,   554,   558,   560,   564,   568,   572,   574,   578,
00922      582,   584,   591,   593,   596,   599,   602,   605,   608,   611,
00923      614,   617,   622,   629,   631,   633,   637,   646,   651,   661,
00924      669,   680,   689,   701,   704,   708,   710,   713,   715,   719,
00925      724,   728,   734,   736,   738,   742,   746,   748,   750,   756,
00926      758,   763,   766,   769,   772,   775,   779,   783,   787,   791,
00927      794,   797,   805,   813,   821,   829,   836,   843,   848,   853,
00928      860,   862,   864,   866,   868,   870,   873,   876,   879,   882,
00929      886,   888,   892,   894,   896,   900,   904,   909,   914,   920,
00930      923,   927,   933,   935,   937,   939,   942,   944,   946,   948,
00931      950,   952,   955,   957,   960,   963,   967,   973,   975,   977,
00932      979,   981,   984,   986,   989,   992,   996,  1000,  1003,  1007,
00933     1012,  1016,  1023,  1026,  1030,  1032,  1035,  1039,  1041,  1043,
00934     1047,  1051,  1053,  1055,  1057,  1059,  1061,  1063,  1065,  1067,
00935     1069,  1071,  1073,  1075,  1077,  1079,  1081,  1083,  1085,  1087,
00936     1089,  1091,  1093,  1095,  1097,  1099,  1101,  1103,  1105,  1107,
00937     1109,  1111,  1113,  1115,  1117,  1119,  1121,  1123,  1126,  1129,
00938     1133,  1138,  1140,  1143,  1145,  1149,  1152,  1155,  1159,  1164,
00939     1169,  1175,  1177,  1179,  1181,  1184,  1187,  1189,  1191,  1193,
00940     1195,  1201,  1208,  1211,  1217,  1223,  1227,  1229,  1231,  1237,
00941     1243,  1245,  1250,  1254,  1256,  1262,  1268,  1270,  1275,  1279,
00942     1283,  1288,  1292,  1297,  1301,  1304,  1308,  1311,  1313,  1317,
00943     1319,  1321,  1323,  1325,  1327,  1330,  1333,  1335,  1338,  1341,
00944     1344,  1346,  1349,  1351,  1353,  1355,  1357,  1359,  1361,  1363,
00945     1365,  1367,  1369,  1371,  1373,  1375,  1377,  1379,  1381,  1383,
00946     1385,  1390,  1396,  1399,  1403,  1408,  1414,  1416,  1419,  1423,
00947     1425,  1427,  1429,  1431,  1433,  1435,  1437,  1439,  1441,  1443,
00948     1445,  1451,  1457,  1464,  1471,  1473,  1476,  1480,  1483,  1487,
00949     1492,  1498,  1502,  1508,  1513,  1520,  1522,  1524,  1526,  1529,
00950     1531,  1533,  1536,  1540,  1543,  1546,  1550,  1555,  1559,  1563,
00951     1570,  1572,  1574,  1576,  1578,  1580,  1582,  1584,  1586,  1588,
00952     1590,  1592,  1594,  1596,  1600,  1602,  1606,  1611,  1614,  1618,
00953     1620,  1622,  1627,  1633,  1640,  1642,  1644,  1646,  1648,  1650,
00954     1652,  1654,  1657,  1660,  1664,  1667,  1670,  1675,  1679,  1682,
00955     1686,  1690,  1692,  1696,  1698,  1701,  1705,  1707,  1710,  1712,
00956     1715,  1719,  1722,  1724,  1726,  1728,  1734,  1741,  1745,  1750,
00957     1757,  1759,  1761,  1764,  1766,  1770,  1773,  1775,  1779,  1781,
00958     1783,  1785,  1787,  1791,  1795,  1799,  1801,  1804,  1806,  1811,
00959     1813,  1817,  1821,  1825,  1827,  1829,  1833,  1836,  1840,  1844,
00960     1849,  1854,  1860,  1866,  1873,  1878,  1884,  1890,  1897,  1899,
00961     1901,  1903,  1905,  1907,  1909,  1911,  1913,  1917,  1921,  1925,
00962     1928,  1933,  1936,  1941,  1948,  1957,  1961,  1965,  1967,  1971,
00963     1975,  1979,  1981,  1985,  1987,  1991,  1997,  1999,  2001,  2003,
00964     2005,  2009,  2011,  2013,  2017,  2020,  2024,  2027,  2030,  2034,
00965     2037,  2041,  2043,  2045,  2048,  2051,  2054,  2059,  2063,  2068,
00966     2070,  2073,  2075,  2078,  2081,  2085,  2089,  2091,  2094,  2096,
00967     2099,  2101,  2106,  2112,  2115,  2119,  2121,  2123,  2125,  2128,
00968     2131,  2133,  2136,  2139,  2142,  2144,  2146,  2149,  2153,  2155,
00969     2158,  2160,  2163,  2165,  2167,  2169,  2171,  2173,  2176,  2180,
00970     2182,  2186,  2189,  2194,  2196,  2200,  2203,  2208,  2210,  2214,
00971     2216,  2218,  2221,  2224,  2227,  2231,  2234,  2236,  2239,  2245,
00972     2252,  2260,  2265,  2271,  2274,  2277,  2280,  2284,  2286,  2289,
00973     2292,  2296,  2298,  2301,  2303,  2308,  2311,  2316,  2319,  2322,
00974     2325,  2328,  2330,  2335,  2338,  2339,  2341,  2343,  2347,  2351,
00975     2355,  2358,  2362,  2368,  2370,  2373,  2376,  2378,  2380,  2383,
00976     2385,  2387,  2389,  2393,  2398,  2400,  2404,  2406,  2410,  2414,
00977     2418,  2422,  2426,  2430,  2434,  2438,  2442,  2446,  2450,  2452,
00978     2458,  2460,  2464,  2466,  2470,  2472,  2476,  2478,  2482,  2484,
00979     2488,  2490,  2494,  2498,  2500,  2504,  2508
00980 };
00981 
00982 /* YYRHS -- A `-1'-separated list of the rules' RHS.  */
00983 static const yytype_int16 yyrhs[] =
00984 {
00985      215,     0,    -1,   213,    -1,   213,    -1,   191,    -1,   191,
00986       -1,   191,    -1,   191,    -1,   191,    -1,   192,    -1,    -1,
00987      191,    -1,   191,    -1,   191,    -1,   191,    -1,   191,    -1,
00988      191,    -1,   191,    -1,   191,    -1,   191,    -1,   191,    -1,
00989      191,    -1,    -1,   192,    -1,    -1,   192,    -1,    -1,   107,
00990      218,    -1,   216,    -1,   217,    -1,   125,   159,   394,   158,
00991       -1,   126,   159,   398,   158,    -1,   121,   159,   273,   158,
00992       -1,   110,   299,    -1,   109,   295,    -1,   108,   245,   157,
00993       -1,   111,   219,    -1,   118,   245,   158,    -1,   119,   387,
00994      158,    -1,   122,   273,   158,    -1,   120,   387,   158,   260,
00995       -1,   112,   245,   158,    -1,   113,   388,   380,   160,   247,
00996      158,    -1,   114,   245,   157,    -1,   115,   388,   380,   160,
00997      247,   157,    -1,   116,   261,    -1,   117,   159,   387,   158,
00998       -1,   123,   423,    -1,   124,   387,    -1,   127,   365,   154,
00999       -1,   127,   365,   148,    -1,   128,   397,    -1,   129,   159,
01000      394,   158,    53,    -1,   129,   159,   394,   158,   320,    -1,
01001      129,   159,   394,   158,   161,    -1,   129,   159,   394,   158,
01002      156,    -1,   129,   159,   394,   158,    54,    -1,   129,   159,
01003      394,   158,   154,    -1,   129,   159,   394,   158,   157,    -1,
01004      133,   235,    -1,   289,    -1,   315,   161,    -1,     9,   246,
01005      161,    -1,    16,   161,    -1,   214,    -1,   186,   193,    -1,
01006      206,   214,    -1,   206,    83,   245,    -1,   206,    84,   388,
01007      371,   160,   247,    -1,   206,   135,    -1,   205,    81,   245,
01008       -1,   205,    82,   388,   371,   160,   247,    -1,   205,   134,
01009       -1,   224,   159,   222,   158,   201,    -1,    30,    -1,    80,
01010      219,   201,    -1,   214,    -1,   245,    -1,   228,   201,    -1,
01011      231,   159,   202,   157,   230,   221,   157,   226,   158,    -1,
01012      231,   159,   202,    77,   229,   157,   230,   221,   157,   226,
01013      158,    -1,   231,   159,   202,    79,   299,   230,   221,   157,
01014      226,   158,    -1,   245,    -1,   191,    -1,    27,    -1,   233,
01015      159,   222,   158,   201,    -1,    65,    -1,    50,   159,   222,
01016      158,   201,    -1,   201,   214,    -1,   201,   236,    -1,   241,
01017       -1,   236,   241,    -1,   238,   201,    -1,   413,    -1,   157,
01018       -1,    77,   245,   157,    -1,     8,   157,    -1,    15,   157,
01019       -1,    43,   226,   157,    -1,    29,   315,   157,    -1,   239,
01020       -1,    18,   241,    65,   159,   245,   158,   157,    -1,    78,
01021      295,    -1,   136,    -1,   240,   235,   155,    -1,   156,    -1,
01022      243,    -1,   242,    -1,   225,   242,    -1,   227,   242,    -1,
01023      232,   242,    -1,   234,   242,    -1,   237,    -1,   223,   242,
01024      244,   242,    -1,   225,   243,    -1,   227,   243,    -1,   232,
01025      243,    -1,   234,   243,    -1,   223,   241,    -1,   223,   242,
01026      244,   243,    -1,    21,   201,    -1,   247,    -1,   245,   154,
01027      247,    -1,   248,    -1,   248,    -1,   249,   160,   247,    -1,
01028      249,   185,   247,    -1,   249,   184,   247,    -1,   249,   183,
01029      247,    -1,   249,   182,   247,    -1,   249,   181,   247,    -1,
01030      249,   180,   247,    -1,   249,   179,   247,    -1,   249,   178,
01031      247,    -1,   249,   177,   247,    -1,   249,   176,   247,    -1,
01032      419,    -1,   249,    -1,   249,   153,   245,   161,   247,    -1,
01033      250,    -1,   249,   171,   250,    -1,   251,    -1,   250,   170,
01034      251,    -1,   252,    -1,   251,   152,   252,    -1,   253,    -1,
01035      252,   151,   253,    -1,   254,    -1,   253,   150,   254,    -1,
01036      255,    -1,   254,   169,   255,    -1,   254,   168,   255,    -1,
01037      256,    -1,   255,   149,   256,    -1,   255,   148,   256,    -1,
01038      255,   167,   256,    -1,   255,   166,   256,    -1,   257,    -1,
01039      256,   173,   257,    -1,   256,   172,   257,    -1,   258,    -1,
01040      257,   147,   258,    -1,   257,   146,   258,    -1,   259,    -1,
01041      258,   145,   259,    -1,   258,   144,   259,    -1,   258,   143,
01042      259,    -1,   260,    -1,   259,   165,   260,    -1,   259,   164,
01043      260,    -1,   261,    -1,   159,   203,    87,   387,   158,   260,
01044       -1,   268,    -1,   175,   260,    -1,   174,   260,    -1,   145,
01045      260,    -1,   150,   260,    -1,   147,   260,    -1,   146,   260,
01046       -1,   141,   260,    -1,   142,   260,    -1,    46,   207,    85,
01047      261,    -1,    46,   207,    86,   159,   387,   158,    -1,   262,
01048       -1,   266,    -1,   220,    36,   263,    -1,   220,    36,   159,
01049      208,    91,   273,   158,   263,    -1,   220,    36,   263,   272,
01050       -1,   220,    36,   159,   208,    91,   273,   158,   263,   272,
01051       -1,   220,    36,   159,   208,    89,   387,   158,    -1,   220,
01052       36,   159,   208,    91,   273,   158,   159,   387,   158,    -1,
01053      220,    36,   159,   208,    89,   387,   158,   272,    -1,   220,
01054       36,   159,   208,    91,   273,   158,   159,   387,   158,   272,
01055       -1,   388,   213,    -1,   388,   213,   264,    -1,   385,    -1,
01056      385,   265,    -1,   265,    -1,   140,   245,   139,    -1,   265,
01057      140,   246,   139,    -1,   220,    17,   260,    -1,   220,    17,
01058      140,   139,   260,    -1,   277,    -1,   378,    -1,    51,   196,
01059      277,    -1,    51,   196,   378,    -1,     4,    -1,    52,    -1,
01060      159,   203,    88,   245,   158,    -1,   279,    -1,   268,   140,
01061      245,   139,    -1,   268,   272,    -1,   324,   272,    -1,   322,
01062      272,    -1,   269,   272,    -1,   268,   138,   267,    -1,   268,
01063      163,   267,    -1,   268,   138,   275,    -1,   268,   163,   275,
01064       -1,   268,   175,    -1,   268,   174,    -1,    20,   149,   387,
01065      148,   159,   245,   158,    -1,    48,   149,   387,   148,   159,
01066      245,   158,    -1,    42,   149,   387,   148,   159,   245,   158,
01067       -1,    14,   149,   387,   148,   159,   245,   158,    -1,    56,
01068      159,   204,    88,   245,   158,    -1,    56,   159,   204,    89,
01069      387,   158,    -1,    57,   220,   281,   270,    -1,    57,   220,
01070      281,   271,    -1,    57,   220,   281,    51,   196,   271,    -1,
01071       74,    -1,    71,    -1,    69,    -1,    68,    -1,    67,    -1,
01072       72,   366,    -1,    73,   366,    -1,    70,   366,    -1,   159,
01073      158,    -1,   159,   273,   158,    -1,   247,    -1,   273,   154,
01074      247,    -1,    68,    -1,    67,    -1,   276,   142,   274,    -1,
01075      220,   142,   274,    -1,   220,   281,   142,   274,    -1,   220,
01076      274,   186,   200,    -1,   220,   281,   274,   186,   200,    -1,
01077      220,   278,    -1,   220,   281,   278,    -1,   220,   281,    51,
01078      196,   278,    -1,    69,    -1,    68,    -1,    67,    -1,    72,
01079      366,    -1,    72,    -1,    74,    -1,    71,    -1,    75,    -1,
01080      282,    -1,    73,   366,    -1,    73,    -1,    70,   366,    -1,
01081      220,   280,    -1,   220,   281,   280,    -1,   220,   281,    51,
01082      196,   280,    -1,    71,    -1,    74,    -1,   285,    -1,   282,
01083       -1,    73,   366,    -1,    73,    -1,    70,   366,    -1,    69,
01084      186,    -1,    72,   366,   186,    -1,    70,   366,   186,    -1,
01085       75,   186,    -1,   281,    69,   186,    -1,   281,    72,   366,
01086      186,    -1,   281,    75,   186,    -1,   281,    51,   196,    70,
01087      366,   186,    -1,   283,   103,    -1,   283,   102,   366,    -1,
01088      283,    -1,   283,   149,    -1,    37,   284,   199,    -1,    36,
01089       -1,    17,    -1,    36,   140,   139,    -1,    17,   140,   139,
01090       -1,   147,    -1,   146,    -1,   145,    -1,   144,    -1,   143,
01091       -1,   151,    -1,   150,    -1,   152,    -1,   142,    -1,   141,
01092       -1,   160,    -1,   185,    -1,   184,    -1,   183,    -1,   182,
01093       -1,   181,    -1,   180,    -1,   179,    -1,   178,    -1,   177,
01094       -1,   176,    -1,   149,    -1,   148,    -1,   167,    -1,   166,
01095       -1,   173,    -1,   172,    -1,   169,    -1,   168,    -1,   170,
01096       -1,   171,    -1,   175,    -1,   174,    -1,   154,    -1,   164,
01097       -1,   163,    -1,   159,   158,    -1,   140,   139,    -1,    37,
01098      199,   388,    -1,    37,   199,   388,   385,    -1,   214,    -1,
01099      161,   287,    -1,   288,    -1,   287,   154,   288,    -1,    71,
01100      272,    -1,    67,   272,    -1,   220,    69,   272,    -1,   220,
01101       72,   366,   272,    -1,   220,   281,    69,   272,    -1,   220,
01102      281,    72,   366,   272,    -1,   214,    -1,   290,    -1,   293,
01103       -1,   290,   293,    -1,   303,   192,    -1,   315,    -1,   294,
01104       -1,   403,    -1,   328,    -1,    51,   149,   363,   148,   293,
01105       -1,    24,    51,   149,   363,   148,   293,    -1,    51,   293,
01106       -1,    51,   149,   210,   148,   293,    -1,    25,     4,   156,
01107      289,   155,    -1,    25,     4,   293,    -1,   157,    -1,   298,
01108       -1,     5,   159,     4,   158,   157,    -1,    35,   315,   160,
01109      296,   157,    -1,   331,    -1,    60,    35,   296,   157,    -1,
01110      332,   292,   157,    -1,   299,    -1,     5,   159,     4,   158,
01111      157,    -1,    35,   315,   160,   296,   157,    -1,   331,    -1,
01112       60,    35,   296,   157,    -1,   332,   292,   157,    -1,   197,
01113      220,    75,    -1,   197,   220,   297,    75,    -1,    75,   186,
01114      197,    -1,   297,    75,   186,   197,    -1,   291,   369,   157,
01115       -1,   317,   157,    -1,   301,   369,   157,    -1,   317,   157,
01116       -1,   372,    -1,   300,   154,   372,    -1,   303,    -1,   303,
01117       -1,   304,    -1,   305,    -1,   307,    -1,   306,   307,    -1,
01118      304,   309,    -1,   308,    -1,   306,   308,    -1,   305,   308,
01119       -1,   305,   309,    -1,   309,    -1,   306,   309,    -1,   313,
01120       -1,   317,    -1,   324,    -1,   310,    -1,   320,    -1,   311,
01121       -1,    28,    -1,    55,    -1,     6,    -1,    41,    -1,    47,
01122       -1,    25,    -1,    34,    -1,    31,    -1,    61,    -1,    23,
01123       -1,    22,    -1,   322,    -1,   332,   186,   193,    69,    -1,
01124      332,   186,   193,   281,    69,    -1,   312,    68,    -1,   312,
01125      281,    68,    -1,   312,   186,   193,    68,    -1,   312,   186,
01126      193,   281,    68,    -1,   269,    -1,   332,    69,    -1,   332,
01127      281,    69,    -1,   214,    -1,   315,    -1,    74,    -1,    71,
01128       -1,    69,    -1,    68,    -1,    67,    -1,    73,    -1,    72,
01129       -1,    75,    -1,   191,    -1,   318,   156,   316,   133,   155,
01130       -1,   318,   156,   316,   334,   155,    -1,   312,   314,   156,
01131      316,   133,   155,    -1,   312,   314,   156,   316,   325,   155,
01132       -1,   319,    -1,   332,   214,    -1,   332,   161,   358,    -1,
01133      332,   315,    -1,   332,   281,   315,    -1,   332,   315,   161,
01134      358,    -1,   332,   281,   315,   161,   358,    -1,   332,    72,
01135      366,    -1,   332,    72,   366,   161,   358,    -1,   332,   281,
01136       72,   366,    -1,   332,   281,    72,   366,   161,   358,    -1,
01137       13,    -1,    63,    -1,   320,    -1,   321,   320,    -1,   323,
01138       -1,    62,    -1,   220,    69,    -1,   220,    72,   366,    -1,
01139      220,    68,    -1,   220,    67,    -1,   220,   281,    69,    -1,
01140      220,   281,    72,   366,    -1,   220,   281,    68,    -1,   220,
01141      281,    67,    -1,   220,   281,    51,   196,    70,   366,    -1,
01142       11,    -1,    64,    -1,     7,    -1,    44,    -1,    32,    -1,
01143       33,    -1,    45,    -1,    59,    -1,    26,    -1,    19,    -1,
01144      214,    -1,   326,    -1,   327,    -1,   326,   154,   327,    -1,
01145      315,    -1,   315,   160,   246,    -1,   329,   156,   289,   155,
01146       -1,    35,   315,    -1,    35,   214,   198,    -1,   278,    -1,
01147      285,    -1,    60,   220,   330,   157,    -1,    60,   220,   281,
01148      330,   157,    -1,    60,    57,   220,   281,   330,   157,    -1,
01149      333,    -1,    12,    -1,    49,    -1,    58,    -1,   214,    -1,
01150      335,    -1,   344,    -1,   361,   161,    -1,   335,   344,    -1,
01151      335,   361,   161,    -1,   303,   192,    -1,   339,   400,    -1,
01152      159,   341,   400,   158,    -1,   159,   337,   158,    -1,   340,
01153      400,    -1,   159,   338,   158,    -1,   159,   340,   158,    -1,
01154      341,    -1,   159,   340,   158,    -1,   342,    -1,   220,   343,
01155       -1,   220,   281,   343,    -1,    69,    -1,    72,   366,    -1,
01156      157,    -1,   346,   157,    -1,   336,   351,   157,    -1,   317,
01157      157,    -1,   404,    -1,   345,    -1,   331,    -1,    51,   149,
01158      363,   148,   344,    -1,    24,    51,   149,   363,   148,   344,
01159       -1,   332,   292,   157,    -1,   220,   281,   278,   157,    -1,
01160      220,   281,    51,   196,   278,   157,    -1,   347,    -1,   349,
01161       -1,   306,   349,    -1,   348,    -1,   348,   154,   300,    -1,
01162      336,   377,    -1,   350,    -1,   350,   154,   300,    -1,   337,
01163       -1,   373,    -1,   352,    -1,   355,    -1,   351,   154,   353,
01164       -1,   351,   154,   355,    -1,    99,   161,   246,    -1,   354,
01165       -1,   161,   246,    -1,   354,    -1,   220,   278,   161,   246,
01166       -1,   357,    -1,   356,   101,   246,    -1,   356,   100,     4,
01167       -1,   357,   160,   191,    -1,   382,    -1,   359,    -1,   358,
01168      154,   359,    -1,   220,    69,    -1,   220,    72,   366,    -1,
01169      220,   281,    69,    -1,   220,   281,    72,   366,    -1,    61,
01170      362,   220,    69,    -1,    61,   362,   220,    72,   366,    -1,
01171       61,   362,   220,   281,    69,    -1,    61,   362,   220,   281,
01172       72,   366,    -1,   361,   360,   220,    69,    -1,   361,   360,
01173      220,    72,   366,    -1,   361,   360,   220,   281,    69,    -1,
01174      361,   360,   220,   281,    72,   366,    -1,   214,    -1,    61,
01175       -1,    38,    -1,    39,    -1,    40,    -1,   214,    -1,   361,
01176       -1,   364,    -1,   363,   154,   364,    -1,   210,    96,   365,
01177       -1,   210,    97,   397,    -1,    12,   314,    -1,    12,   314,
01178      160,   387,    -1,    57,   314,    -1,    57,   314,   160,   387,
01179       -1,    51,   149,   363,   148,    12,   314,    -1,    51,   149,
01180      363,   148,    12,   314,   160,   277,    -1,   149,   209,   148,
01181       -1,   149,   367,   148,    -1,   368,    -1,   367,   154,   368,
01182       -1,   209,    92,   423,    -1,   209,    93,   387,    -1,   370,
01183       -1,   369,   154,   370,    -1,   371,    -1,   371,   160,   410,
01184       -1,   371,    90,   159,   273,   158,    -1,   380,    -1,   373,
01185       -1,   338,    -1,   374,    -1,   374,   160,     4,    -1,   376,
01186       -1,   378,    -1,   159,   375,   158,    -1,   375,   400,    -1,
01187      159,   376,   158,    -1,    98,   400,    -1,   220,   379,    -1,
01188      220,   281,   379,    -1,   142,    69,    -1,   142,    72,   366,
01189       -1,   285,    -1,   381,    -1,   385,   381,    -1,   277,   211,
01190       -1,   381,   159,    -1,   381,    94,   400,   211,    -1,   381,
01191      384,   211,    -1,   159,   382,   158,   211,    -1,   383,    -1,
01192      385,   383,    -1,   277,    -1,   383,   400,    -1,   383,   384,
01193       -1,   159,   382,   158,    -1,   140,   393,   139,    -1,   386,
01194       -1,   385,   386,    -1,   145,    -1,   145,   321,    -1,   150,
01195       -1,   220,   281,   145,   199,    -1,   220,   281,   145,   321,
01196      199,    -1,   388,   213,    -1,   388,   213,   391,    -1,   389,
01197       -1,   390,    -1,   313,    -1,   321,   313,    -1,   389,   320,
01198       -1,   324,    -1,   321,   324,    -1,   390,   320,    -1,   390,
01199      324,    -1,   392,    -1,   385,    -1,   385,   392,    -1,   159,
01200      391,   158,    -1,   384,    -1,   392,   384,    -1,   401,    -1,
01201      392,   401,    -1,   214,    -1,   246,    -1,   214,    -1,   162,
01202       -1,   395,    -1,   395,   162,    -1,   395,   154,   162,    -1,
01203      396,    -1,   395,   154,   396,    -1,   302,   398,    -1,   302,
01204      398,   160,   247,    -1,   302,    -1,   302,   160,   247,    -1,
01205      302,   398,    -1,   302,   398,   160,   423,    -1,   302,    -1,
01206      302,   160,   423,    -1,   399,    -1,   385,    -1,   385,   399,
01207       -1,   212,   159,    -1,   220,   278,    -1,   212,    94,   401,
01208       -1,   399,   401,    -1,   384,    -1,   399,   384,    -1,   212,
01209       95,   159,   398,   158,    -1,   159,   194,   394,   158,   195,
01210      420,    -1,   159,   194,   394,   158,   195,   321,   420,    -1,
01211      159,   394,   158,   420,    -1,   159,   394,   158,   321,   420,
01212       -1,   376,   406,    -1,   376,   414,    -1,   291,   408,    -1,
01213      291,   377,   407,    -1,   402,    -1,   306,   402,    -1,   336,
01214      409,    -1,   336,   377,   407,    -1,   402,    -1,   306,   402,
01215       -1,   191,    -1,   156,   405,   133,   155,    -1,   286,   406,
01216       -1,    54,   286,   406,   417,    -1,   371,   406,    -1,   371,
01217      414,    -1,   357,   406,    -1,   357,   414,    -1,   247,    -1,
01218      156,   412,   411,   155,    -1,   156,   155,    -1,    -1,   154,
01219       -1,   410,    -1,   412,   154,   410,    -1,    54,   239,   415,
01220       -1,    54,   406,   417,    -1,   416,   201,    -1,   415,   416,
01221      201,    -1,    10,   159,   418,   158,   239,    -1,   416,    -1,
01222      417,   416,    -1,   388,   398,    -1,   388,    -1,   162,    -1,
01223       53,   247,    -1,    53,    -1,   214,    -1,   421,    -1,    53,
01224      159,   158,    -1,    53,   159,   422,   158,    -1,   387,    -1,
01225      422,   154,   387,    -1,   424,    -1,   425,   160,   423,    -1,
01226      425,   185,   423,    -1,   425,   184,   423,    -1,   425,   183,
01227      423,    -1,   425,   182,   423,    -1,   425,   181,   423,    -1,
01228      425,   180,   423,    -1,   425,   179,   423,    -1,   425,   178,
01229      423,    -1,   425,   177,   423,    -1,   425,   176,   423,    -1,
01230      425,    -1,   425,   153,   245,   161,   423,    -1,   426,    -1,
01231      425,   171,   426,    -1,   427,    -1,   426,   170,   427,    -1,
01232      428,    -1,   427,   152,   428,    -1,   429,    -1,   428,   151,
01233      429,    -1,   430,    -1,   429,   150,   430,    -1,   431,    -1,
01234      430,   169,   431,    -1,   430,   168,   431,    -1,   256,    -1,
01235      431,   149,   256,    -1,   431,   167,   256,    -1,   431,   166,
01236      256,    -1
01237 };
01238 
01239 /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
01240 static const yytype_uint16 yyrline[] =
01241 {
01242        0,   411,   411,   419,   427,   432,   437,   442,   447,   453,
01243      462,   472,   479,   524,   538,   556,   569,   589,   608,   621,
01244      634,   648,   670,   690,   707,   722,   756,   761,   762,   763,
01245      767,   768,   769,   771,   772,   773,   774,   776,   777,   778,
01246      779,   781,   782,   784,   785,   787,   788,   790,   791,   794,
01247      795,   796,   798,   799,   800,   801,   802,   803,   804,   808,
01248      812,   817,   819,   821,   827,   829,   835,   837,   839,   844,
01249      852,   854,   859,   867,   875,   884,   889,   891,   896,   901,
01250      906,   911,   919,   927,   934,   942,   950,   958,   963,   965,
01251      970,   972,   977,   983,   989,   991,   997,   999,  1001,  1007,
01252     1009,  1011,  1013,  1015,  1023,  1031,  1039,  1041,  1046,  1048,
01253     1056,  1063,  1065,  1067,  1078,  1080,  1088,  1095,  1097,  1105,
01254     1116,  1125,  1127,  1133,  1139,  1141,  1143,  1145,  1147,  1149,
01255     1151,  1153,  1155,  1157,  1159,  1161,  1163,  1169,  1171,  1177,
01256     1179,  1185,  1187,  1193,  1195,  1201,  1203,  1209,  1211,  1217,
01257     1219,  1221,  1227,  1229,  1231,  1233,  1235,  1241,  1243,  1245,
01258     1251,  1253,  1255,  1261,  1263,  1265,  1267,  1273,  1275,  1277,
01259     1283,  1285,  1291,  1293,  1295,  1297,  1299,  1301,  1303,  1305,
01260     1307,  1309,  1311,  1313,  1315,  1321,  1323,  1325,  1327,  1330,
01261     1332,  1334,  1336,  1341,  1343,  1348,  1350,  1352,  1357,  1360,
01262     1365,  1367,  1372,  1374,  1376,  1378,  1386,  1388,  1390,  1392,
01263     1395,  1397,  1401,  1405,  1409,  1414,  1416,  1419,  1421,  1424,
01264     1426,  1429,  1431,  1433,  1435,  1438,  1440,  1448,  1450,  1452,
01265     1457,  1459,  1461,  1463,  1465,  1470,  1472,  1474,  1479,  1481,
01266     1486,  1488,  1493,  1495,  1501,  1507,  1509,  1514,  1516,  1521,
01267     1523,  1525,  1530,  1532,  1534,  1544,  1546,  1548,  1550,  1552,
01268     1554,  1556,  1558,  1560,  1565,  1567,  1569,  1574,  1576,  1582,
01269     1584,  1586,  1588,  1590,  1596,  1601,  1605,  1609,  1615,  1620,
01270     1624,  1629,  1636,  1639,  1644,  1649,  1654,  1673,  1674,  1675,
01271     1676,  1677,  1678,  1679,  1680,  1681,  1682,  1683,  1684,  1685,
01272     1686,  1687,  1688,  1689,  1690,  1691,  1692,  1693,  1694,  1695,
01273     1696,  1697,  1698,  1699,  1700,  1701,  1702,  1703,  1704,  1705,
01274     1706,  1707,  1708,  1709,  1710,  1711,  1712,  1713,  1714,  1718,
01275     1720,  1725,  1727,  1732,  1734,  1740,  1742,  1744,  1746,  1748,
01276     1750,  1757,  1759,  1764,  1766,  1775,  1787,  1792,  1794,  1796,
01277     1800,  1802,  1806,  1814,  1818,  1820,  1827,  1829,  1832,  1839,
01278     1844,  1850,  1853,  1871,  1874,  1881,  1886,  1892,  1895,  1901,
01279     1903,  1908,  1913,  1921,  1924,  1931,  1933,  1945,  1947,  1955,
01280     1964,  1972,  1974,  1996,  1999,  2002,  2011,  2013,  2016,  2018,
01281     2023,  2025,  2030,  2032,  2037,  2042,  2044,  2046,  2048,  2050,
01282     2057,  2059,  2061,  2063,  2065,  2072,  2074,  2076,  2081,  2096,
01283     2099,  2101,  2103,  2105,  2107,  2109,  2111,  2115,  2117,  2122,
01284     2124,  2129,  2131,  2133,  2135,  2137,  2139,  2141,  2143,  2162,
01285     2181,  2190,  2202,  2205,  2210,  2215,  2217,  2220,  2222,  2224,
01286     2226,  2229,  2231,  2233,  2235,  2253,  2255,  2262,  2264,  2271,
01287     2273,  2278,  2280,  2282,  2284,  2286,  2288,  2290,  2292,  2294,
01288     2299,  2301,  2303,  2305,  2307,  2309,  2311,  2313,  2315,  2317,
01289     2322,  2324,  2331,  2333,  2338,  2340,  2346,  2355,  2361,  2369,
01290     2371,  2376,  2378,  2380,  2387,  2392,  2394,  2396,  2401,  2403,
01291     2408,  2410,  2413,  2415,  2425,  2437,  2443,  2449,  2454,  2459,
01292     2464,  2469,  2471,  2476,  2482,  2485,  2491,  2493,  2498,  2502,
01293     2505,  2512,  2517,  2520,  2523,  2526,  2528,  2531,  2537,  2539,
01294     2544,  2546,  2548,  2553,  2555,  2560,  2583,  2585,  2590,  2592,
01295     2597,  2599,  2601,  2603,  2615,  2617,  2622,  2624,  2630,  2642,
01296     2644,  2650,  2656,  2673,  2682,  2684,  2689,  2691,  2693,  2695,
01297     2697,  2699,  2701,  2703,  2705,  2707,  2709,  2711,  2716,  2718,
01298     2723,  2725,  2727,  2732,  2734,  2741,  2743,  2748,  2750,  2755,
01299     2757,  2759,  2761,  2763,  2765,  2771,  2773,  2778,  2780,  2785,
01300     2787,  2796,  2798,  2812,  2817,  2823,  2831,  2840,  2842,  2848,
01301     2851,  2856,  2861,  2863,  2868,  2871,  2876,  2881,  2883,  2888,
01302     2890,  2892,  2897,  2899,  2910,  2916,  2918,  2920,  2922,  2927,
01303     2929,  2934,  2936,  2938,  2940,  2945,  2976,  2978,  2983,  2985,
01304     2987,  2990,  2992,  2999,  3001,  3006,  3012,  3021,  3023,  3030,
01305     3035,  3037,  3044,  3046,  3057,  3059,  3061,  3066,  3069,  3072,
01306     3075,  3078,  3083,  3085,  3092,  3094,  3096,  3098,  3100,  3105,
01307     3107,  3112,  3114,  3116,  3118,  3123,  3125,  3127,  3129,  3135,
01308     3137,  3139,  3144,  3148,  3163,  3166,  3169,  3172,  3175,  3181,
01309     3183,  3192,  3194,  3199,  3201,  3206,  3208,  3214,  3217,  3223,
01310     3225,  3230,  3233,  3239,  3250,  3255,  3257,  3262,  3281,  3286,
01311     3288,  3293,  3295,  3297,  3301,  3303,  3307,  3309,  3336,  3341,
01312     3346,  3348,  3353,  3359,  3361,  3366,  3368,  3371,  3376,  3378,
01313     3383,  3385,  3390,  3392,  3397,  3399,  3404,  3406,  3408,  3410,
01314     3412,  3414,  3416,  3418,  3420,  3422,  3424,  3426,  3434,  3439,
01315     3445,  3447,  3453,  3455,  3461,  3463,  3469,  3471,  3477,  3479,
01316     3485,  3487,  3489,  3495,  3497,  3502,  3504
01317 };
01318 #endif
01319 
01320 #if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE
01321 /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
01322    First, the terminals, then, starting at YYNTOKENS, nonterminals.  */
01323 static const char *const yytname[] =
01324 {
01325   "TOK_EOF", "error", "$undefined", "_LOWEST_PREC", "TOK_LITERAL",
01326   "TOK_ASM", "TOK_AUTO", "TOK_BOOL", "TOK_BREAK", "TOK_CASE", "TOK_CATCH",
01327   "TOK_CHAR", "TOK_CLASS", "TOK_CONST", "TOK_CONST_CAST", "TOK_CONTINUE",
01328   "TOK_DEFAULT", "TOK_DELETE", "TOK_DO", "TOK_DOUBLE", "TOK_DYNAMIC_CAST",
01329   "TOK_ELSE", "TOK_ENUM", "TOK_EXPLICIT", "TOK_EXPORT", "TOK_EXTERN",
01330   "TOK_FLOAT", "TOK_FOR", "TOK_FRIEND", "TOK_GOTO", "TOK_IF", "TOK_INLINE",
01331   "TOK_INT", "TOK_LONG", "TOK_MUTABLE", "TOK_NAMESPACE", "TOK_NEW",
01332   "TOK_OPERATOR", "TOK_PRIVATE", "TOK_PROTECTED", "TOK_PUBLIC",
01333   "TOK_REGISTER", "TOK_REINTERPRET_CAST", "TOK_RETURN", "TOK_SHORT",
01334   "TOK_SIGNED", "TOK_SIZEOF", "TOK_STATIC", "TOK_STATIC_CAST",
01335   "TOK_STRUCT", "TOK_SWITCH", "TOK_TEMPLATE", "TOK_THIS", "TOK_THROW",
01336   "TOK_TRY", "TOK_TYPEDEF", "TOK_TYPEID", "TOK_TYPENAME", "TOK_UNION",
01337   "TOK_UNSIGNED", "TOK_USING", "TOK_VIRTUAL", "TOK_VOID", "TOK_VOLATILE",
01338   "TOK_WCHAR_T", "TOK_WHILE", "TOK_IDENT", "_TYPEDEF_NAME_ID",
01339   "_ENUM_NAME_ID", "_CLASS_NAME_ID", "_TEMPL_FORCED", "_NONTYPE",
01340   "_TEMPL_TYPE", "_TEMPL_NONTYPE", "_UNKNOWN_ID", "_NMSPC_NAME",
01341   "_PAD_FIRST", "TOK_PAD_EXPR_STMT", "TOK_PAD_BLOCK_DECL",
01342   "TOK_PAD_SIMPLE_DECL", "TOK_PAD_LABEL", "TOK_PAD_COND_EXPR",
01343   "TOK_PAD_COND_DECL", "TOK_PAD_FOR_COND_EXPR", "TOK_PAD_FOR_COND_DECL",
01344   "TOK_PAD_SIZEOF_EXPR", "TOK_PAD_SIZEOF_TYPE_ID",
01345   "TOK_PAD_TYPE_ID_RPAR_CAST_EXPR", "TOK_PAD_EXPR_RPAR",
01346   "TOK_PAD_TYPE_ID_RPAR", "TOK_PAD_LPAR_EXPR_LIST_RPAR",
01347   "TOK_PAD_EXPR_LIST_RPAR", "TOK_PAD_TEMPL_ARG_EXPR",
01348   "TOK_PAD_TEMPL_ARG_TYPE_ID", "TOK_PAD_PARAM_DECL_CLAUSE",
01349   "TOK_PAD_PARAM_DCLTOR", "TOK_PAD_TEMPL_PARAM_TYPE",
01350   "TOK_PAD_TEMPL_PARAM_NONTYPE", "TOK_PAD_CTOR",
01351   "TOK_PAD_UNNAMED_BITFIELD", "TOK_PAD_MEMBER_FUNC",
01352   "TOK_PAD_MEMBER_OBJECT", "TOK_PAD_TEMPL_OP", "TOK_PAD_OP_NOT_TEMPL",
01353   "TOK_PAD_TO_BE_DISCARDED", "_PAD_LAST", "_START_FIRST",
01354   "TOK_START_PROGRAM", "TOK_START_EXPR_STMT", "TOK_START_BLOCK_DECL",
01355   "TOK_START_SIMPLE_DECL", "TOK_START_LABEL", "TOK_START_COND_EXPR",
01356   "TOK_START_COND_DECL", "TOK_START_FOR_COND_EXPR",
01357   "TOK_START_FOR_COND_DECL", "TOK_START_SIZEOF_EXPR",
01358   "TOK_START_SIZEOF_TYPE_ID", "TOK_START_EXPR_RPAR",
01359   "TOK_START_TYPE_ID_RPAR", "TOK_START_TYPE_ID_RPAR_CAST_EXPR",
01360   "TOK_START_LPAR_EXPR_LIST_RPAR", "TOK_START_EXPR_LIST_RPAR",
01361   "TOK_START_TEMPL_ARG_EXPR", "TOK_START_TEMPL_ARG_TYPE_ID",
01362   "TOK_START_PARAM_DECL_CLAUSE", "TOK_START_PARAM_DCLTOR",
01363   "TOK_START_TEMPL_PARAM_TYPE", "TOK_START_TEMPL_PARAM_NONTYPE",
01364   "TOK_START_CTOR", "TOK_START_TO_BE_DISCARDED", "_START_LAST",
01365   "_PACK_FIRST", "TOK_PACK_BODY", "TOK_PACK_ERROR_COND",
01366   "TOK_PACK_ERROR_FOR_COND", "TOK_PACK_ERROR_STMT", "_PACK_LAST",
01367   "TOK_DOT", "TOK_RIGHT_BRACKET", "TOK_LEFT_BRACKET", "TOK_EXCLAMATION",
01368   "TOK_TILDE", "TOK_PERCENT", "TOK_SLASH", "TOK_STAR", "TOK_MINUS",
01369   "TOK_PLUS", "TOK_GT", "TOK_LT", "TOK_AMP", "TOK_HAT", "TOK_VBAR",
01370   "TOK_QMARK", "TOK_COMMA", "TOK_RIGHT_BRACE", "TOK_LEFT_BRACE",
01371   "TOK_SEMICOLON", "TOK_RIGHT_PAR", "TOK_LEFT_PAR", "TOK_EQ", "TOK_COLON",
01372   "TOK_DOT_DOT_DOT", "TOK_MINUS_GT", "TOK_MINUS_GT_STAR", "TOK_DOT_STAR",
01373   "TOK_GT_EQ", "TOK_LT_EQ", "TOK_EXCLAMATION_EQ", "TOK_EQ_EQ",
01374   "TOK_AMP_AMP", "TOK_VBAR_VBAR", "TOK_GT_GT", "TOK_LT_LT",
01375   "TOK_MINUS_MINUS", "TOK_PLUS_PLUS", "TOK_LT_LT_EQ", "TOK_GT_GT_EQ",
01376   "TOK_VBAR_EQ", "TOK_AMP_EQ", "TOK_HAT_EQ", "TOK_PERCENT_EQ",
01377   "TOK_SLASH_EQ", "TOK_STAR_EQ", "TOK_MINUS_EQ", "TOK_PLUS_EQ",
01378   "TOK_COLON_COLON", "_HIGHEST_PREC", "TOK_ERROR", "TOK_TEXT", "$accept",
01379   "_lookahead_assert_empty", "_lookahead_assert_non_empty",
01380   "_hinter_to_root_scope", "_hinter_pdc_scope", "_hinter_pdc_scope_end",
01381   "_hinter_templ_id_follows", "_hinter_nmspc_name_follows",
01382   "_hinter_nmspc_name_clear", "_hinter_clear_qualification",
01383   "_hinter_descend_pseudo_destr",
01384   "_disambiguate_expr_stmt_vs_block_decl_vs_label",
01385   "_disambiguate_expr_stmt_vs_simple_decl",
01386   "_disambiguate_cast_expr_vs_expr_in_pars",
01387   "_disambiguate_expr_vs_type_id", "_disambiguate_condition",
01388   "_disambiguate_for_condition_opt", "_disambiguate_sizeof",
01389   "_disambiguate_expr_list_vs_type_id", "_disambiguate_templ_arg",
01390   "_disambiguate_templ_param",
01391   "_disambiguate_param_decl_clause_vs_expr_list",
01392   "_disambiguate_param_decl_clause_vs_param_dcltor", "_next_location",
01393   "_no_token", "start", "disambiguation", "packs", "program", "label",
01394   "coloncolon_opt", "condition_opt", "condition", "if_head", "_if_action",
01395   "_label_head", "expr_opt", "_for_head", "_for_head_real", "_for_expr",
01396   "_for_inner_action", "_for_action", "_while_head", "_while_action",
01397   "_switch_head", "stmt_seq_opt", "stmt_seq", "_non_if_stmt",
01398   "_non_if_stmt_real", "compound_stmt", "_enter_compound_action", "stmt",
01399   "stmt_else_can_follow", "stmt_else_cant_follow", "_else_action", "expr",
01400   "const_expr", "assign_expr", "cond_expr", "log_or_expr", "log_and_expr",
01401   "or_expr", "xor_expr", "and_expr", "eq_expr", "rel_expr", "shift_expr",
01402   "add_expr", "mul_expr", "pm_expr", "cast_expr", "un_expr", "new_expr",
01403   "new_type_id", "new_dcltor", "direct_new_dcltor", "delete_expr",
01404   "_member_access_suffix", "postfix_expr", "_typename_type_spec", "_tts1",
01405   "_tts2", "_expr_list_opt_in_pars", "expr_list",
01406   "_enum_or_typedef_name_id", "pseudo_destr_name", "_pdn1", "id_expr",
01407   "unqualified_id", "_id_expr_nontype", "_unqualified_id_nontype",
01408   "nested_name_spec", "op_func_id", "_op_func_id_orig", "op",
01409   "conv_func_id", "mem_inizer_list_opt", "mem_inizer_list", "mem_inizer",
01410   "_decl_seq_in_nmspc_scope_opt", "_decl_seq_in_nmspc_scope",
01411   "_decl_spec_seq_in_nmspc_scope", "_class_forward_id",
01412   "_decl_in_nmspc_scope", "_block_decl_in_nmspc_scope",
01413   "_block_decl_in_func_scope", "_nested_nmspc_name", "_nested_nmspc_spec",
01414   "_simple_decl_in_nmspc_scope", "_simple_decl_in_func_scope",
01415   "_next_member_dcltor_list_cdtc", "_decl_spec_seq_in_func_scope",
01416   "_decl_spec_seq_in_param_scope", "_decl_spec_seq_orig",
01417   "_decl_spec_seq_exclusive", "_decl_spec_seq_non_exclusive",
01418   "_decl_spec_seq_other", "_decl_spec_exclusive",
01419   "_decl_spec_non_exclusive", "_decl_spec_other", "storage_class_spec",
01420   "func_spec", "_enum", "_type_spec_not_declaring_class_enum_exclusive",
01421   "_anyid_opt", "_anyid", "_pack_body_in_disambiguation",
01422   "_type_spec_declaring_class_enum", "_class_specifier_action",
01423   "_class_specifier_head", "cv_qualifier", "cv_qualifier_seq",
01424   "_simple_type_spec_exclusive", "_simple_type_spec_exclusive_name",
01425   "_simple_type_spec_non_exclusive", "enumerator_list_opt",
01426   "enumerator_list", "enumerator_defn", "nmspc_defn", "_nmspc_defn_head",
01427   "_using_id", "using_decl", "class_key", "_class_key_real",
01428   "member_spfn_opt", "member_spfn", "_decl_spec_seq_in_class_scope",
01429   "_ctor_first_member_dcltor_in_par", "_ctor_next_member_dcltor",
01430   "_ctor_name_in_par", "_ctor_name_in_opt_par", "_ctor_name_in_no_par",
01431   "_ctor_type", "_ctor_unqualified_id", "member_decl", "_access_decl",
01432   "_cdtc_member_decl",
01433   "_cdtc_member_dcltor_list_starting_with_ctor_no_par",
01434   "_ctor_first_member_dcltor_no_par",
01435   "_cdtc_member_dcltor_list_not_starting_with_ctor_no_par",
01436   "_cdtc_first_member_dcltor", "member_dcltor_list",
01437   "_first_bitfield_member_dcltor", "_next_bitfield_member_dcltor",
01438   "_named_bitfield_member_dcltor", "_non_bitfield_member_dcltor",
01439   "_non_bitfield_member_dcltor_inizer_action", "_in_class_dcltor_action",
01440   "base_spec_list", "base_spec", "virtual_opt", "access_spec",
01441   "access_spec_opt", "templ_param_list", "templ_param", "type_param",
01442   "_templ_args", "templ_arg_list", "templ_arg", "init_dcltor_list",
01443   "init_dcltor", "_dcltor_action", "_cdtc_next_member_dcltor",
01444   "_dtc_member_dcltor", "_dtc_dcltor_action", "_id_expr_dtc_in_opt_par",
01445   "_dtc_dcltor", "_ctor_func_suffix", "_id_expr_dtc",
01446   "_dtc_unqualified_id", "dcltor", "direct_dcltor", "_inner_dcltor",
01447   "_inner_direct_dcltor", "_bracket_suffix", "_ptr_op_seq", "ptr_op",
01448   "type_id", "_type_spec_seq_not_declaring_class_enum",
01449   "_type_spec_seq_not_declaring_class_enum_exclusive",
01450   "_type_spec_seq_not_declaring_class_enum_non_exclusive", "abst_dcltor",
01451   "direct_abst_dcltor", "const_expr_opt", "param_decl_clause",
01452   "param_decl_list", "param_decl", "_param_decl_no_gt", "_param_dcltor",
01453   "_param_direct_dcltor", "_func_suffix_clean",
01454   "_func_suffix_clean_no_scope_change", "_func_defn_dtc",
01455   "_func_defn_in_nmspc_scope", "_func_defn_in_class_scope", "_pack_body",
01456   "_packed_compound_stmt", "_ctor_defn_tail", "_func_defn_tail",
01457   "_func_defn_in_class_tail", "inizer_clause", "comma_opt", "inizer_list",
01458   "try_block", "func_try_block", "handler_seq", "handler",
01459   "_func_handler_seq", "excptn_decl", "throw_expr", "excptn_spec_opt",
01460   "excptn_spec", "type_id_list", "_assign_expr_no_gt", "_cond_expr_no_gt",
01461   "_log_or_expr_no_gt", "_log_and_expr_no_gt", "_or_expr_no_gt",
01462   "_xor_expr_no_gt", "_and_expr_no_gt", "_eq_expr_no_gt",
01463   "_rel_expr_no_gt", 0
01464 };
01465 #endif
01466 
01467 # ifdef YYPRINT
01468 /* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to
01469    token YYLEX-NUM.  */
01470 static const yytype_uint16 yytoknum[] =
01471 {
01472        0,   256,   257,   258,   259,   260,   261,   262,   263,   264,
01473      265,   266,   267,   268,   269,   270,   271,   272,   273,   274,
01474      275,   276,   277,   278,   279,   280,   281,   282,   283,   284,
01475      285,   286,   287,   288,   289,   290,   291,   292,   293,   294,
01476      295,   296,   297,   298,   299,   300,   301,   302,   303,   304,
01477      305,   306,   307,   308,   309,   310,   311,   312,   313,   314,
01478      315,   316,   317,   318,   319,   320,   321,   322,   323,   324,
01479      325,   326,   327,   328,   329,   330,   331,   332,   333,   334,
01480      335,   336,   337,   338,   339,   340,   341,   342,   343,   344,
01481      345,   346,   347,   348,   349,   350,   351,   352,   353,   354,
01482      355,   356,   357,   358,   359,   360,   361,   362,   363,   364,
01483      365,   366,   367,   368,   369,   370,   371,   372,   373,   374,
01484      375,   376,   377,   378,   379,   380,   381,   382,   383,   384,
01485      385,   386,   387,   388,   389,   390,   391,   392,   393,   394,
01486      395,   396,   397,   398,   399,   400,   401,   402,   403,   404,
01487      405,   406,   407,   408,   409,   410,   411,   412,   413,   414,
01488      415,   416,   417,   418,   419,   420,   421,   422,   423,   424,
01489      425,   426,   427,   428,   429,   430,   431,   432,   433,   434,
01490      435,   436,   437,   438,   439,   440,   441,   442,   443,   444
01491 };
01492 # endif
01493 
01494 /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
01495 static const yytype_uint16 yyr1[] =
01496 {
01497        0,   190,   191,   192,   193,   194,   195,   196,   197,   198,
01498      199,   200,   201,   202,   203,   204,   205,   206,   207,   208,
01499      209,   210,   211,   212,   213,   214,   215,   215,   215,   215,
01500      216,   216,   216,   216,   216,   216,   216,   216,   216,   216,
01501      216,   216,   216,   216,   216,   216,   216,   216,   216,   216,
01502      216,   216,   216,   216,   216,   216,   216,   216,   216,   217,
01503      218,   219,   219,   219,   220,   220,   221,   221,   221,   221,
01504      222,   222,   222,   223,   224,   225,   226,   226,   227,   228,
01505      228,   228,   229,   230,   231,   232,   233,   234,   235,   235,
01506      236,   236,   237,   237,   238,   238,   238,   238,   238,   238,
01507      238,   238,   238,   238,   239,   240,   241,   241,   242,   242,
01508      242,   242,   242,   242,   243,   243,   243,   243,   243,   243,
01509      244,   245,   245,   246,   247,   247,   247,   247,   247,   247,
01510      247,   247,   247,   247,   247,   247,   247,   248,   248,   249,
01511      249,   250,   250,   251,   251,   252,   252,   253,   253,   254,
01512      254,   254,   255,   255,   255,   255,   255,   256,   256,   256,
01513      257,   257,   257,   258,   258,   258,   258,   259,   259,   259,
01514      260,   260,   261,   261,   261,   261,   261,   261,   261,   261,
01515      261,   261,   261,   261,   261,   262,   262,   262,   262,   262,
01516      262,   262,   262,   263,   263,   264,   264,   264,   265,   265,
01517      266,   266,   267,   267,   267,   267,   268,   268,   268,   268,
01518      268,   268,   268,   268,   268,   268,   268,   268,   268,   268,
01519      268,   268,   268,   268,   268,   268,   268,   269,   269,   269,
01520      270,   270,   270,   270,   270,   271,   271,   271,   272,   272,
01521      273,   273,   274,   274,   275,   275,   275,   276,   276,   277,
01522      277,   277,   278,   278,   278,   278,   278,   278,   278,   278,
01523      278,   278,   278,   278,   279,   279,   279,   280,   280,   280,
01524      280,   280,   280,   280,   281,   281,   281,   281,   281,   281,
01525      281,   281,   282,   282,   282,   282,   283,   284,   284,   284,
01526      284,   284,   284,   284,   284,   284,   284,   284,   284,   284,
01527      284,   284,   284,   284,   284,   284,   284,   284,   284,   284,
01528      284,   284,   284,   284,   284,   284,   284,   284,   284,   284,
01529      284,   284,   284,   284,   284,   284,   284,   284,   284,   285,
01530      285,   286,   286,   287,   287,   288,   288,   288,   288,   288,
01531      288,   289,   289,   290,   290,   291,   292,   293,   293,   293,
01532      293,   293,   293,   293,   293,   293,   294,   294,   294,   294,
01533      294,   294,   294,   295,   295,   295,   295,   295,   295,   296,
01534      296,   297,   297,   298,   298,   299,   299,   300,   300,   301,
01535      302,   303,   303,   304,   304,   304,   305,   305,   305,   305,
01536      306,   306,   307,   307,   308,   309,   309,   309,   309,   309,
01537      310,   310,   310,   310,   310,   311,   311,   311,   312,   313,
01538      313,   313,   313,   313,   313,   313,   313,   313,   313,   314,
01539      314,   315,   315,   315,   315,   315,   315,   315,   315,   316,
01540      317,   317,   317,   317,   318,   319,   319,   319,   319,   319,
01541      319,   319,   319,   319,   319,   320,   320,   321,   321,   322,
01542      322,   323,   323,   323,   323,   323,   323,   323,   323,   323,
01543      324,   324,   324,   324,   324,   324,   324,   324,   324,   324,
01544      325,   325,   326,   326,   327,   327,   328,   329,   329,   330,
01545      330,   331,   331,   331,   332,   333,   333,   333,   334,   334,
01546      335,   335,   335,   335,   336,   337,   337,   337,   338,   338,
01547      339,   340,   340,   341,   342,   342,   343,   343,   344,   344,
01548      344,   344,   344,   344,   344,   344,   344,   344,   345,   345,
01549      346,   346,   346,   347,   347,   348,   349,   349,   350,   350,
01550      351,   351,   351,   351,   352,   352,   353,   353,   354,   355,
01551      355,   355,   356,   357,   358,   358,   359,   359,   359,   359,
01552      359,   359,   359,   359,   359,   359,   359,   359,   360,   360,
01553      361,   361,   361,   362,   362,   363,   363,   364,   364,   365,
01554      365,   365,   365,   365,   365,   366,   366,   367,   367,   368,
01555      368,   369,   369,   370,   370,   370,   371,   372,   372,   373,
01556      373,   374,   375,   375,   376,   376,   377,   378,   378,   379,
01557      379,   379,   380,   380,   381,   381,   381,   381,   381,   382,
01558      382,   383,   383,   383,   383,   384,   385,   385,   386,   386,
01559      386,   386,   386,   387,   387,   388,   388,   389,   389,   389,
01560      390,   390,   390,   390,   391,   391,   391,   392,   392,   392,
01561      392,   392,   393,   393,   394,   394,   394,   394,   394,   395,
01562      395,   396,   396,   396,   396,   397,   397,   397,   397,   398,
01563      398,   398,   399,   399,   399,   399,   399,   399,   399,   400,
01564      400,   401,   401,   402,   402,   403,   403,   403,   403,   404,
01565      404,   404,   404,   405,   406,   407,   407,   408,   408,   409,
01566      409,   410,   410,   410,   411,   411,   412,   412,   413,   414,
01567      415,   415,   416,   417,   417,   418,   418,   418,   419,   419,
01568      420,   420,   421,   421,   422,   422,   423,   423,   423,   423,
01569      423,   423,   423,   423,   423,   423,   423,   423,   424,   424,
01570      425,   425,   426,   426,   427,   427,   428,   428,   429,   429,
01571      430,   430,   430,   431,   431,   431,   431
01572 };
01573 
01574 /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
01575 static const yytype_uint8 yyr2[] =
01576 {
01577        0,     2,     1,     1,     1,     1,     1,     1,     1,     1,
01578        0,     1,     1,     1,     1,     1,     1,     1,     1,     1,
01579        1,     1,     0,     1,     0,     1,     0,     2,     1,     1,
01580        4,     4,     4,     2,     2,     3,     2,     3,     3,     3,
01581        4,     3,     6,     3,     6,     2,     4,     2,     2,     3,
01582        3,     2,     5,     5,     5,     5,     5,     5,     5,     2,
01583        1,     2,     3,     2,     1,     2,     2,     3,     6,     2,
01584        3,     6,     2,     5,     1,     3,     1,     1,     2,     9,
01585       11,    10,     1,     1,     1,     5,     1,     5,     2,     2,
01586        1,     2,     2,     1,     1,     3,     2,     2,     3,     3,
01587        1,     7,     2,     1,     3,     1,     1,     1,     2,     2,
01588        2,     2,     1,     4,     2,     2,     2,     2,     2,     4,
01589        2,     1,     3,     1,     1,     3,     3,     3,     3,     3,
01590        3,     3,     3,     3,     3,     3,     1,     1,     5,     1,
01591        3,     1,     3,     1,     3,     1,     3,     1,     3,     1,
01592        3,     3,     1,     3,     3,     3,     3,     1,     3,     3,
01593        1,     3,     3,     1,     3,     3,     3,     1,     3,     3,
01594        1,     6,     1,     2,     2,     2,     2,     2,     2,     2,
01595        2,     4,     6,     1,     1,     3,     8,     4,     9,     7,
01596       10,     8,    11,     2,     3,     1,     2,     1,     3,     4,
01597        3,     5,     1,     1,     3,     3,     1,     1,     5,     1,
01598        4,     2,     2,     2,     2,     3,     3,     3,     3,     2,
01599        2,     7,     7,     7,     7,     6,     6,     4,     4,     6,
01600        1,     1,     1,     1,     1,     2,     2,     2,     2,     3,
01601        1,     3,     1,     1,     3,     3,     4,     4,     5,     2,
01602        3,     5,     1,     1,     1,     2,     1,     1,     1,     1,
01603        1,     2,     1,     2,     2,     3,     5,     1,     1,     1,
01604        1,     2,     1,     2,     2,     3,     3,     2,     3,     4,
01605        3,     6,     2,     3,     1,     2,     3,     1,     1,     3,
01606        3,     1,     1,     1,     1,     1,     1,     1,     1,     1,
01607        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
01608        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
01609        1,     1,     1,     1,     1,     1,     1,     2,     2,     3,
01610        4,     1,     2,     1,     3,     2,     2,     3,     4,     4,
01611        5,     1,     1,     1,     2,     2,     1,     1,     1,     1,
01612        5,     6,     2,     5,     5,     3,     1,     1,     5,     5,
01613        1,     4,     3,     1,     5,     5,     1,     4,     3,     3,
01614        4,     3,     4,     3,     2,     3,     2,     1,     3,     1,
01615        1,     1,     1,     1,     2,     2,     1,     2,     2,     2,
01616        1,     2,     1,     1,     1,     1,     1,     1,     1,     1,
01617        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
01618        4,     5,     2,     3,     4,     5,     1,     2,     3,     1,
01619        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
01620        5,     5,     6,     6,     1,     2,     3,     2,     3,     4,
01621        5,     3,     5,     4,     6,     1,     1,     1,     2,     1,
01622        1,     2,     3,     2,     2,     3,     4,     3,     3,     6,
01623        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
01624        1,     1,     1,     3,     1,     3,     4,     2,     3,     1,
01625        1,     4,     5,     6,     1,     1,     1,     1,     1,     1,
01626        1,     2,     2,     3,     2,     2,     4,     3,     2,     3,
01627        3,     1,     3,     1,     2,     3,     1,     2,     1,     2,
01628        3,     2,     1,     1,     1,     5,     6,     3,     4,     6,
01629        1,     1,     2,     1,     3,     2,     1,     3,     1,     1,
01630        1,     1,     3,     3,     3,     1,     2,     1,     4,     1,
01631        3,     3,     3,     1,     1,     3,     2,     3,     3,     4,
01632        4,     5,     5,     6,     4,     5,     5,     6,     1,     1,
01633        1,     1,     1,     1,     1,     1,     3,     3,     3,     2,
01634        4,     2,     4,     6,     8,     3,     3,     1,     3,     3,
01635        3,     1,     3,     1,     3,     5,     1,     1,     1,     1,
01636        3,     1,     1,     3,     2,     3,     2,     2,     3,     2,
01637        3,     1,     1,     2,     2,     2,     4,     3,     4,     1,
01638        2,     1,     2,     2,     3,     3,     1,     2,     1,     2,
01639        1,     4,     5,     2,     3,     1,     1,     1,     2,     2,
01640        1,     2,     2,     2,     1,     1,     2,     3,     1,     2,
01641        1,     2,     1,     1,     1,     1,     1,     2,     3,     1,
01642        3,     2,     4,     1,     3,     2,     4,     1,     3,     1,
01643        1,     2,     2,     2,     3,     2,     1,     2,     5,     6,
01644        7,     4,     5,     2,     2,     2,     3,     1,     2,     2,
01645        3,     1,     2,     1,     4,     2,     4,     2,     2,     2,
01646        2,     1,     4,     2,     0,     1,     1,     3,     3,     3,
01647        2,     3,     5,     1,     2,     2,     1,     1,     2,     1,
01648        1,     1,     3,     4,     1,     3,     1,     3,     3,     3,
01649        3,     3,     3,     3,     3,     3,     3,     3,     1,     5,
01650        1,     3,     1,     3,     1,     3,     1,     3,     1,     3,
01651        1,     3,     3,     1,     3,     3,     3
01652 };
01653 
01654 /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
01655    STATE-NUM when YYTABLE doesn't specify something else to do.  Zero
01656    means the default is an error.  */
01657 static const yytype_uint16 yydefact[] =
01658 {
01659       26,    24,    24,    24,    24,     0,    24,    24,    24,    24,
01660       24,     0,    24,    24,    24,     0,    24,    24,    24,     0,
01661        0,     0,    24,     0,    24,     0,    28,    29,     0,   400,
01662      462,   460,   485,   445,   469,   408,   407,     0,   403,   468,
01663      398,   405,   464,   465,   404,    24,   401,   463,   466,   402,
01664      486,    24,   399,    24,   487,   467,    24,   406,   450,   446,
01665      461,   356,    24,    24,    25,     3,    64,    27,     0,   416,
01666       60,    24,    24,   343,   347,   357,    24,   381,   382,    24,
01667      383,   386,   390,   395,   397,    24,   392,   393,     0,   434,
01668      396,   409,   449,   394,   349,     0,   360,    24,   484,     0,
01669        0,   592,   677,   348,   206,     0,     0,     0,    24,     0,
01670      207,    24,     0,    24,    24,    24,    24,    24,    24,    24,
01671       24,    24,    64,     0,     0,   121,   124,   137,   139,   141,
01672      143,   145,   147,   149,   152,   157,   160,   163,   167,   170,
01673      183,   184,   172,     0,   209,     0,     0,   136,     0,   403,
01674        0,    24,     0,    34,   363,    24,   379,    24,   393,   366,
01675       24,    33,    24,    24,     0,   425,   424,   423,   422,   427,
01676      426,   421,   428,    36,     0,     0,     0,   627,   447,    24,
01677      630,     0,    24,   625,   626,     0,    24,    24,    45,    24,
01678        0,     0,    24,     0,    24,   240,     0,   743,    47,   716,
01679      728,   730,   732,   734,   736,   738,   740,    48,    24,    24,
01680       24,     0,    24,     0,    24,   380,   393,    51,    24,    12,
01681       24,     2,    59,     1,     0,     0,    24,    24,   477,    24,
01682      352,     0,    24,    24,     0,     0,     0,     0,     4,    65,
01683       10,   454,   453,   451,     0,     0,     0,     0,     0,   601,
01684      597,   344,     0,   618,   620,    24,     0,    22,     0,   581,
01685      583,    24,   586,   602,    24,   616,   675,   345,   385,   388,
01686      389,   384,   387,   391,   678,   412,   423,   427,   428,    24,
01687      419,     0,     0,   420,   374,    24,    24,   417,   427,    24,
01688       24,   435,     0,     0,   346,    24,   594,     0,    24,   673,
01689      674,    24,    24,    24,    18,     0,    24,   708,    24,   179,
01690      180,   175,   178,   177,   176,    14,     0,   174,   173,    24,
01691       24,    10,     0,   267,   272,   268,   264,     0,   270,   284,
01692      269,    24,    35,    24,    24,    24,    24,    24,    24,    24,
01693       24,    24,    24,    24,    24,    24,    24,    24,    24,    24,
01694       24,    24,    24,    24,    24,    24,    24,    24,    24,    24,
01695       24,    24,    24,    24,    24,    24,    24,    24,    24,   220,
01696      219,   211,   214,   213,   212,     0,     0,    24,     0,     0,
01697      583,   376,     0,   437,     0,   123,   137,    63,    61,    41,
01698      412,     0,     0,   628,   448,   631,   417,     0,     0,   629,
01699      632,   633,    43,     0,     0,     0,    37,    38,    24,    24,
01700        0,    24,    39,    24,    24,    24,    24,    24,    24,    24,
01701       24,    24,    24,    24,    24,    24,    24,    24,    24,    24,
01702       24,    24,    24,    24,    24,   645,    64,    24,     0,   646,
01703      649,    24,    25,     0,     0,   666,    24,     0,   659,   569,
01704       24,   571,    50,    49,    24,   655,     0,     0,     0,     0,
01705       84,     0,    74,    24,     0,     0,    86,    24,    24,     0,
01706      103,   105,    94,    88,     0,     0,     0,     0,    24,     0,
01707        0,     0,     0,    89,   112,    24,   100,    24,    90,   107,
01708      106,    93,     0,    24,    24,   355,     9,   478,    24,    21,
01709        0,     0,   565,     0,     8,    24,     0,     0,   254,   253,
01710      252,     0,   258,   256,   262,   257,   259,   479,     0,   260,
01711      480,     0,     0,   593,   595,    24,   274,    24,     0,   452,
01712      277,   599,     0,    24,   458,   457,   455,     0,     0,   598,
01713      596,   619,    24,   611,     0,   609,    24,     0,   249,     0,
01714      604,    24,   373,     0,    24,   687,   688,    24,    24,   331,
01715        0,   676,     0,   605,    22,   603,   617,     0,     0,    24,
01716      413,     0,     0,    24,   429,    24,     0,   441,   560,   561,
01717      562,    24,     0,   436,   544,    24,     0,   418,   427,   428,
01718      438,   362,    24,     5,    24,     0,   683,     0,     0,     0,
01719        0,    24,     0,     0,    15,     0,    24,    24,     0,   200,
01720       24,   185,    24,   288,   287,     0,   300,   299,   295,   294,
01721      293,   292,   291,   313,   312,   297,   296,   298,   324,     0,
01722      301,   326,   325,   315,   314,   319,   318,   320,   321,   317,
01723      316,   323,   322,   311,   310,   309,   308,   307,   306,   305,
01724      304,   303,   302,    10,   273,   271,    24,     0,   265,     0,
01725      282,   285,   122,     0,   125,   140,   135,   134,   133,   132,
01726      131,   130,   129,   128,   127,   126,   142,   144,   146,   148,
01727      151,   150,   154,   153,   156,   155,   159,   158,   162,   161,
01728      166,   165,   164,   169,   168,    24,     0,   215,   217,     0,
01729      202,   203,     0,   238,     0,   216,   218,     0,    24,     0,
01730      375,   368,    62,   418,    24,    24,    46,    24,     0,   638,
01731       24,   624,   634,   640,    40,    32,   241,     0,   717,   731,
01732      727,   726,   725,   724,   723,   722,   721,   720,   719,   718,
01733      733,   735,   737,   739,   742,   741,   744,   746,   745,    24,
01734      651,    30,    24,   647,    64,   643,     0,     0,     0,   662,
01735      663,     0,   661,    31,    24,   667,   665,    24,     0,     0,
01736       24,   658,    24,     0,    96,    97,     0,     0,    64,     0,
01737       77,    24,     0,     0,   102,    24,   118,   107,    24,   108,
01738      114,   109,   115,    78,    24,   110,   116,    24,   111,   117,
01739       91,    92,     0,     0,     0,     0,     0,     0,    24,    24,
01740       24,    24,    24,   234,   233,   232,     0,   231,     0,     0,
01741      230,   227,   228,     0,   361,     0,   263,   255,   261,   252,
01742        0,   256,   259,     0,   481,   329,    20,     0,     0,   577,
01743      276,   275,   600,     7,     0,   278,   456,   280,     0,    22,
01744      613,   612,   610,    24,    10,   250,   582,    24,    24,   691,
01745      584,     0,     0,     0,     0,   332,   333,   685,    22,   607,
01746      414,     0,     0,     0,    24,     0,     0,    24,     0,   508,
01747       24,    64,     0,    24,    24,   393,   514,    24,     0,    24,
01748       24,   528,     0,   490,   513,     0,   520,   523,   521,   526,
01749        0,   529,   589,   591,   681,   512,   476,    24,   563,   564,
01750       24,   546,     0,     0,    24,   559,   558,    24,   410,     0,
01751      443,    24,   439,     0,     0,   703,   699,     0,     0,     0,
01752        0,   181,    24,     0,    24,    24,     0,     0,    24,    19,
01753        0,   187,   193,     0,     0,   328,   327,   286,     0,   273,
01754      283,    24,    24,   254,   253,     0,     0,     0,     0,   210,
01755      239,     0,     0,   367,     0,     0,     0,     0,     0,   636,
01756      639,   641,    24,   654,    24,   648,   650,   615,   664,    24,
01757      570,     0,   572,   656,    52,    56,    57,    55,    58,    54,
01758       53,     0,    99,    98,    16,     0,     0,   698,    24,    95,
01759       75,    24,     0,     0,    13,     0,     0,   104,   358,    24,
01760      354,   359,   567,   568,   353,   350,   566,     0,   237,   235,
01761      236,   369,     0,     0,   263,   255,   482,   330,    24,    24,
01762      575,   576,    24,     0,   279,   614,   608,     0,   621,    10,
01763        0,   693,   696,   694,     0,   336,   335,     0,     0,     0,
01764       24,   606,   415,     0,     0,   470,   474,     0,   471,   472,
01765        0,    24,   430,    24,     0,     0,     0,   501,   503,     0,
01766      494,   522,   682,   511,     0,   431,   492,     0,     0,     0,
01767        0,   530,   535,   531,     0,   539,   525,   543,   679,   495,
01768      509,    24,    24,   491,     0,   442,     0,   547,   548,     0,
01769      545,     0,   411,    24,   440,    24,    24,   704,   684,    24,
01770       24,    24,     0,    24,     0,     0,    24,   208,   201,    24,
01771       24,    24,   194,   197,   195,   290,   289,     0,   266,   138,
01772        0,   204,   205,   243,   242,   245,    24,     0,     0,   244,
01773      364,   365,    42,    44,     0,   637,    24,   729,   652,     0,
01774       24,    24,    24,    24,    72,    24,    24,   700,   120,   113,
01775      119,    24,    24,    24,    24,    24,   351,     0,     0,   229,
01776       24,   370,   483,   579,   580,     0,   578,   459,   252,     0,
01777      256,   259,   251,   622,   585,    24,     0,   686,   337,     0,
01778        0,     0,   334,     0,   432,    24,   433,     0,    24,     0,
01779        0,   506,     0,     0,   504,   497,   500,     0,    24,   458,
01780      457,   455,   256,     0,   517,   493,    24,   249,    24,   510,
01781        0,    24,    24,   689,   690,   680,    24,   524,   588,     0,
01782      501,   377,   587,   591,   527,   590,   550,     0,     0,   549,
01783      554,     0,     0,   444,     6,    24,   707,    24,     0,     0,
01784        0,     0,   182,     0,   225,   226,   171,     0,     0,     0,
01785       24,   196,   273,     0,    11,   247,   246,    24,     0,   710,
01786       24,   671,   711,   668,   573,     0,    70,    24,    87,   701,
01787       73,     0,    82,    24,    83,    24,    85,   237,   235,   371,
01788       24,   281,   263,   255,   697,   692,   338,   339,     0,   475,
01789      473,     0,    24,   500,   507,   506,     0,   505,   496,     0,
01790      456,   518,   534,    24,    24,   532,   537,   533,   539,   541,
01791      540,   542,     0,     0,    24,   498,   551,   552,     0,   555,
01792      556,     0,    24,   669,   705,     0,   224,   221,   223,   222,
01793      189,    24,   198,     0,   248,    24,   672,    24,     0,     0,
01794       24,    24,    17,    24,     0,   372,   340,    24,   515,   507,
01795        0,     0,   538,   536,   499,   502,   378,   553,   557,   670,
01796      702,   191,    24,   186,   199,   712,   714,     0,     0,   574,
01797      101,    24,    24,     0,    24,    24,    69,    66,    24,   516,
01798      459,   519,     0,   188,    24,   713,     0,    71,     0,    24,
01799       67,    24,     0,   190,   715,    24,     0,     0,    79,   192,
01800        0,    81,    24,    80,    68
01801 };
01802 
01803 /* YYDEFGOTO[NTERM-NUM].  */
01804 static const yytype_int16 yydefgoto[] =
01805 {
01806       -1,   219,    64,   239,   594,  1245,   844,   505,   497,   525,
01807     1265,   220,  1005,   316,   605,   995,  1353,   305,   940,   837,
01808      768,   550,   443,    65,   122,    25,    26,    27,    67,   173,
01809      123,  1354,   996,   474,   475,   476,   779,   477,   478,  1281,
01810     1285,   479,   480,   481,   482,   222,   483,   484,   485,   486,
01811      487,   488,   489,   490,  1002,   780,   384,   125,   126,   127,
01812      128,   129,   130,   131,   132,   133,   134,   135,   136,   137,
01813      138,   139,   140,   611,  1122,  1123,   141,   697,   142,   143,
01814      821,   822,   371,   196,   956,   698,   699,   257,   548,   144,
01815      326,   292,   519,   329,   653,   249,   560,   865,   866,    70,
01816       71,    72,   293,    73,    74,   153,   506,  1022,    75,   154,
01817     1227,   155,   437,    76,    77,    78,   157,    80,    81,    82,
01818       83,    84,    85,    86,   282,   283,   575,   216,    88,    89,
01819       90,   179,   145,    92,   146,  1057,  1058,  1059,    94,    95,
01820      521,    96,   181,    98,   888,   889,   890,   891,  1228,   892,
01821     1229,  1230,  1068,  1204,   893,   894,   895,   896,   897,   898,
01822      899,  1080,  1081,  1315,  1082,  1083,  1084,  1085,   583,   584,
01823      917,   585,   910,   501,   502,   213,   567,   838,   839,   258,
01824      259,   380,  1231,   901,   902,    99,   100,   261,   101,   250,
01825      262,   263,  1087,   545,   445,   264,   265,   191,   192,   183,
01826      184,   721,   722,   756,   968,   439,   440,   217,   447,   448,
01827      296,   723,   102,   103,   905,   597,   299,   561,   266,  1088,
01828      860,  1186,  1043,   491,   300,   997,   925,   926,  1248,   147,
01829     1271,  1272,  1377,   198,   199,   200,   201,   202,   203,   204,
01830      205,   206
01831 };
01832 
01833 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
01834    STATE-NUM.  */
01835 #define YYPACT_NINF -1172
01836 static const yytype_int16 yypact[] =
01837 {
01838     3606,  3646,  3128,  3751,  4291,  1475,  3128,  3429,  3128,  3429,
01839     3322,   -64,  3128,  3429,  3429,   -43,  3128,  3369,  3429,    -5,
01840       92,   198,  4291,   137, -1172,   167, -1172, -1172,   171, -1172,
01841    -1172, -1172, -1172, -1172, -1172, -1172, -1172,   341,   434, -1172,
01842    -1172, -1172, -1172, -1172, -1172,  1492, -1172, -1172, -1172, -1172,
01843    -1172,  3526, -1172,   275, -1172, -1172,    43, -1172, -1172, -1172,
01844    -1172, -1172,   -17, -1172, -1172, -1172,    41, -1172,   571, -1172,
01845    -1172,  2321,   737, -1172, -1172, -1172, -1172,  2889,  4581,  4035,
01846    -1172, -1172, -1172, -1172, -1172,  1595, -1172,   323,   334, -1172,
01847    -1172, -1172, -1172, -1172, -1172,   410, -1172,   385, -1172,   369,
01848       83, -1172, -1172, -1172, -1172,   447,   478,   523, -1172,   538,
01849    -1172,  2715,   552,  3369,  3369,  3369,  3369,  3369,  3369, -1172,
01850     3369,  3369, -1172,  2454,   532, -1172, -1172,  3065,   556,   590,
01851      613,   605,   449,   372,   488,   623,   432,   470, -1172, -1172,
01852    -1172, -1172,   325,   620, -1172,   620,   620, -1172,   643, -1172,
01853     1492,    79,  1155, -1172, -1172,   586, -1172,  4291,   632, -1172,
01854      385, -1172,   385,  3369,   664, -1172, -1172, -1172, -1172, -1172,
01855    -1172, -1172, -1172, -1172,   672,   218,   310, -1172, -1172,  3429,
01856    -1172,    77,   586,   125,  1666,   624,   586, -1172, -1172,  3429,
01857      360,   683, -1172,   696,  3128, -1172,   461,   488, -1172, -1172,
01858     3080,   710,   732,   749,   756,   512,   143, -1172,  2576,   387,
01859     1492,   760,  1492,   394,   289, -1172, -1172, -1172,  2576, -1172,
01860     1771, -1172, -1172, -1172,   915,   780,  3586, -1172,   771, -1172,
01861    -1172,   581, -1172,   275,  2642,   640,   652,   787, -1172, -1172,
01862    -1172, -1172, -1172,   752,   798,   798,   772,   751,   723, -1172,
01863    -1172, -1172,   369,   125, -1172,   762,  2979, -1172,   686, -1172,
01864       96,    72, -1172,   165,   586, -1172, -1172, -1172, -1172, -1172,
01865    -1172, -1172, -1172, -1172, -1172,   804,   752,   798,   772, -1172,
01866    -1172,   627,   807, -1172, -1172, -1172,  3646,   345,   798,   133,
01867    -1172, -1172,  1862,   808,   272, -1172, -1172,   814, -1172, -1172,
01868    -1172,  3429,  3429,  3429, -1172,   792,  3429, -1172, -1172, -1172,
01869    -1172, -1172, -1172, -1172, -1172, -1172,   908, -1172, -1172,  3175,
01870     2044,  4401,   798, -1172,   798, -1172, -1172,  2430, -1172,   135,
01871    -1172,  3128, -1172,  3128,  3128,  3369,  3128,  3128,  3128,  3128,
01872     3128,  3128,  3128,  3128,  3128,  3128,  3369,  3369,  3369,  3369,
01873     3369,  3369,  3369,  3369,  3369,  3369,  3369,  3369,  3369,  3369,
01874     3369,  3369,  3369,  3369,  3369,    11,  3128,  2406,    11, -1172,
01875    -1172, -1172, -1172, -1172, -1172,   970,   817, -1172,   986,   699,
01876       38, -1172,   823,   822,   824, -1172,   277, -1172, -1172, -1172,
01877    -1172,   752,   798, -1172, -1172, -1172,   752,   454,   827, -1172,
01878    -1172, -1172, -1172,   829,   928,   865, -1172, -1172,   534,  3369,
01879      479,  3128, -1172,  3128,  3369,  3369,  3369,  3369,  3369,  3369,
01880     3369,  3369,  3369,  3369,  3369,  3369,  3369,  3369,  3369,  3369,
01881     3369,  3369,  3369,  3369,  3369, -1172,   868,  1213,   876,   355,
01882    -1172,  3369,    49,   105,  2979, -1172,  1265,   878,   203,   882,
01883    -1172,   884, -1172, -1172,  3369,   892,   902,   907,   912,  1771,
01884    -1172,  1492, -1172,  3128,   922,   932, -1172,  3128,  3751,  1475,
01885    -1172, -1172, -1172, -1172,  1771,   949,  1771,  1771, -1172,   951,
01886     1771,   958,  1771,  1771, -1172, -1172, -1172, -1172, -1172, -1172,
01887    -1172, -1172,   973, -1172,  3646, -1172, -1172, -1172, -1172, -1172,
01888      210,   399, -1172,  2836, -1172,   275,   979,   581, -1172, -1172,
01889      752,   798, -1172,   798,   798, -1172,   772, -1172,  2575, -1172,
01890    -1172,   989,   677, -1172, -1172,  3429, -1172, -1172,   957,   962,
01891    -1172, -1172,   798, -1172, -1172, -1172,   964,   798,   968, -1172,
01892    -1172,   125,   762, -1172,   999,   282,   762,  4401, -1172,  1849,
01893    -1172,   586, -1172,  1004,  2981, -1172, -1172,   997,    62, -1172,
01894      814, -1172,   369, -1172, -1172,   165, -1172,   962,  1146, -1172,
01895    -1172,   964,   798, -1172, -1172,  3811,  1009,   126, -1172, -1172,
01896    -1172,  1053,   998,  1011, -1172,  1120,  1121,   228,   798,   968,
01897     1025, -1172,   133, -1172,  2576,  1182, -1172,  1054,  1049,  1050,
01898     1052,  3322,  1043,  1057, -1172,   866,  3429,  3128,  1068, -1172,
01899    -1172,   620, -1172,  1070,  1071,  1089, -1172, -1172, -1172, -1172,
01900    -1172, -1172, -1172, -1172, -1172, -1172, -1172, -1172, -1172,  1073,
01901    -1172, -1172, -1172, -1172, -1172, -1172, -1172, -1172, -1172, -1172,
01902    -1172, -1172, -1172, -1172, -1172, -1172, -1172, -1172, -1172, -1172,
01903    -1172, -1172, -1172, -1172,   957, -1172, -1172,   798, -1172,   798,
01904    -1172, -1172, -1172,   270, -1172,   556, -1172, -1172, -1172, -1172,
01905    -1172, -1172, -1172, -1172, -1172, -1172,   590,   613,   605,   449,
01906      372,   372,   488,   488,   488,   488,   623,   623,   432,   432,
01907      470,   470,   470, -1172, -1172, -1172,  2101, -1172, -1172,  1084,
01908    -1172, -1172,    21, -1172,   517, -1172, -1172,  1079, -1172,  1085,
01909    -1172, -1172, -1172,   964,  3128,  3128, -1172,  3941,   581, -1172,
01910     1300, -1172,   203, -1172, -1172, -1172, -1172,   436, -1172,   710,
01911    -1172, -1172, -1172, -1172, -1172, -1172, -1172, -1172, -1172, -1172,
01912      732,   749,   756,   512,   143,   143,   488,   488,   488,  3128,
01913     1081, -1172,  4165, -1172,  1104, -1172,  1109,  1094,  1105, -1172,
01914    -1172,   420,   203, -1172,  2576, -1172, -1172,  3429,   914,   403,
01915     3429, -1172,  3369,   509, -1172, -1172,  1194,  1110,   873,  1111,
01916     1112, -1172,  1182,   709, -1172, -1172, -1172,  1249, -1172, -1172,
01917    -1172, -1172, -1172, -1172, -1172, -1172, -1172, -1172, -1172, -1172,
01918    -1172, -1172,  1116,  1115,   444,  1122,  1119,   198,  4291,  3646,
01919     3646, -1172, -1172, -1172, -1172,   964,   798, -1172,   798,   798,
01920    -1172, -1172, -1172,  1203, -1172,  2575,   957,   962, -1172,   964,
01921      798,   798,   968,  1123, -1172,   246, -1172,    47,   455, -1172,
01922    -1172, -1172, -1172, -1172,  1211, -1172,  1098, -1172,  1127, -1172,
01923    -1172, -1172,   282, -1172,   125, -1172, -1172,  3128,  2787, -1172,
01924    -1172,   814,   620,   620,  1164,  1138, -1172, -1172, -1172, -1172,
01925    -1172,  1015,  1223,  1098,  1579,  1245,  1153,    61,  1148, -1172,
01926       81,  1149,   571, -1172,  4228,  1150, -1172,   385,  1154,  3870,
01927      409, -1172,   369, -1172, -1172,  1157, -1172,  1151, -1172,  1158,
01928     1156, -1172,  1159,    83, -1172, -1172, -1172,   133, -1172, -1172,
01929      275,   752,   798,   819,   133, -1172, -1172,   275,   752,   900,
01930      227,   133,  1011,  1163,  1152, -1172,  1182,  1161,  1165,  1170,
01931     1171, -1172,  3429,  1174,  3128,  3429,  1187,   580,  3369, -1172,
01932      630, -1172,   724,  1183,  1184, -1172, -1172, -1172,   515, -1172,
01933    -1172,  3128,   275,  1162,  1169,   925,  1173,  1970,   971, -1172,
01934    -1172,  1193,  1199, -1172,  1206,  1200,  1155,  1208,  1210,   203,
01935    -1172, -1172,  3369, -1172,  3128, -1172, -1172, -1172, -1172,   387,
01936    -1172,  1339, -1172, -1172, -1172, -1172, -1172, -1172, -1172, -1172,
01937    -1172,  1217, -1172, -1172, -1172,   124,  1212,  1182, -1172, -1172,
01938    -1172, -1172,  1771,  1214, -1172,   255,  1220, -1172, -1172,  3646,
01939    -1172, -1172, -1172, -1172, -1172, -1172, -1172,   628, -1172,  1098,
01940    -1172,  1196,  1294,  1227, -1172,  1098, -1172,   246,  3369,  3429,
01941    -1172, -1172, -1172,   798, -1172, -1172, -1172,  2991, -1172,   125,
01942      589, -1172, -1172,  1236,  1182, -1172, -1172,   109,   798,   931,
01943       62, -1172, -1172,   798,  1225, -1172,  1232,  1239,  1241, -1172,
01944     1247, -1172, -1172,    81,   867,  1251,  1253,   369, -1172,  2084,
01945    -1172, -1172, -1172, -1172,  1250, -1172, -1172,  1255,  1256,  2979,
01946      735, -1172, -1172, -1172,   947,    76,    65, -1172, -1172, -1172,
01947    -1172,   113,   113, -1172,  1408,  1011,  1177,   962,   964,   798,
01948    -1172,  1186,   964,   133,  1011, -1172,  4349, -1172, -1172,  3128,
01949     3128,  3128,  1266,  3128,   604,  1268,  3369, -1172, -1172,  3429,
01950     3128,  3128, -1172,  1288,   724, -1172, -1172,   798, -1172, -1172,
01951     2225, -1172, -1172, -1172, -1172, -1172, -1172,   925,  1252, -1172,
01952    -1172, -1172, -1172, -1172,   950, -1172,   318, -1172, -1172,  1278,
01953     1492,  3128,  3128,  3429, -1172, -1172, -1172, -1172, -1172, -1172,
01954    -1172, -1172,  3128,  4291, -1172, -1172, -1172,   798,   798, -1172,
01955    -1172,  1258, -1172, -1172, -1172,   982, -1172,  1260, -1172,   798,
01956      798, -1172, -1172, -1172, -1172,  2934,  1284,  1182, -1172,   154,
01957      214,   798, -1172,  1260, -1172,  3369, -1172,  1492, -1172,   456,
01958     1289,   752,   798,   930, -1172, -1172, -1172,  1297, -1172,  1285,
01959     1295,   -30,   798,  1299, -1172, -1172,  3369,  1296,   462, -1172,
01960     1456,  3369, -1172, -1172, -1172, -1172,   113,  1307, -1172,   369,
01961    -1172, -1172, -1172, -1172,  1307, -1172,   752,   798,  1060,  1098,
01962      752,   798,  1087,  1011, -1172,   318, -1172,   676,  1306,   607,
01963      622,   678, -1172,   721, -1172, -1172, -1172,  1308,   741,   149,
01964     3369,  1288,  1260,  2322, -1172, -1172, -1172, -1172,  1310, -1172,
01965      318, -1172, -1172, -1172,  1305,   764,  1112,   586, -1172, -1172,
01966    -1172,  1313,  1112, -1172, -1172, -1172, -1172,  1260, -1172, -1172,
01967    -1172, -1172,  1260, -1172, -1172, -1172, -1172, -1172,   249, -1172,
01968    -1172,   472,  4098,  1314,   962,   964,   798, -1172, -1172,  3030,
01969        6, -1172, -1172,  3369,  3369, -1172, -1172, -1172,  1317, -1172,
01970    -1172, -1172,  1315,   961,   113, -1172,   962,   964,   798,   962,
01971      964,   798,   318, -1172, -1172,   932, -1172, -1172, -1172, -1172,
01972      620,  4377, -1172,  1340, -1172,  4431, -1172,   275,  1323,  1321,
01973    -1172, -1172, -1172,   283,  1326, -1172, -1172,  4098, -1172,  1098,
01974      798,  1330, -1172, -1172, -1172, -1172, -1172,  1098,  1098, -1172,
01975    -1172, -1172,  3429,   620, -1172, -1172, -1172,   770,  2979, -1172,
01976    -1172,  3128, -1172,  1335,  3128,  3429, -1172, -1172,  3128, -1172,
01977       27, -1172,  1337, -1172,  3429, -1172,  2633, -1172,  1341,  3128,
01978     1112,   586,  1342,   620, -1172,  3128,  1343,  1344, -1172, -1172,
01979     1345, -1172,  3128, -1172, -1172
01980 };
01981 
01982 /* YYPGOTO[NTERM-NUM].  */
01983 static const yytype_int16 yypgoto[] =
01984 {
01985    -1172,  1454,   -44,   -78, -1172, -1172,  -467, -1076, -1172,  -597,
01986      230,  -304, -1172,  1318, -1172, -1172, -1172, -1172, -1172,   474,
01987     1282,  -481, -1172,  1405,    -1, -1172, -1172, -1172, -1172,  1038,
01988       36, -1116,  -471, -1172, -1172, -1172,  -902, -1172, -1172, -1172,
01989    -1171, -1172, -1172, -1172, -1172,  1027, -1172, -1172, -1172,  -459,
01990    -1172,    66,  -400,  -371, -1172,    57,  -412,    10,  -139,   -15,
01991     1180,  1166,  1172,  1175,  1176,   755,  1856,   768,   775,   736,
01992     1226,    23, -1172,   177, -1172,   396, -1172,  1160, -1172,   726,
01993    -1172,   505,   424,  -190,  -833,  1185, -1172,  -245,  -220, -1172,
01994     -296,   881,  -111, -1172, -1172,   -93,   969, -1172,   477,  -200,
01995    -1172, -1172,  -133,   -23, -1172,  1062,  -313, -1172, -1172,    -2,
01996      439, -1172,     0,   610, -1172, -1172,     4,   -60,   -12,   -26,
01997    -1172, -1172,   356,   402,  -194,    16,   959,   131, -1172, -1172,
01998      144,  -238,  1100, -1172,   465, -1172, -1172,   336, -1172, -1172,
01999     -461,     8,  1431, -1172, -1172, -1172, -1172,  -810,   311, -1172,
02000     -820,  -770, -1172,   337,  -866, -1172, -1172, -1172, -1172,   655,
02001    -1172, -1172, -1172, -1172,   333,   338, -1172,   339,  -502,   638,
02002    -1172,  -482, -1172,  -414,   730,   763,  1487, -1172,   526,  1414,
02003     1021,   -65,   250,  -988, -1172,   -49,   -42,   685,  -297,  -239,
02004      -18,  1312,  -182,  1032,  -162,  -167,  -226,   209,    -6, -1172,
02005    -1172,   862,   860, -1172,  -127, -1172,   830,   777,  -206,  1137,
02006     -135,  -363,   -62, -1172, -1172, -1172,  -225,   500, -1172, -1172,
02007     -824, -1172, -1172, -1172,  -235, -1172,  -736,   543, -1172, -1172,
02008    -1090, -1172, -1172,  -143, -1172, -1172,  1178,  1179,  1168,  1181,
02009     1167,   722
02010 };
02011 
02012 /* YYTABLE[YYPACT[STATE-NUM]].  What to do in state STATE-NUM.  If
02013    positive, shift that token.  If negative, reduce the rule which
02014    number is the opposite.  If zero, do what YYDEFACT says.
02015    If YYTABLE_NINF, syntax error.  */
02016 #define YYTABLE_NINF -710
02017 static const yytype_int16 yytable[] =
02018 {
02019       66,   182,   161,   186,   410,    79,   782,   260,   455,   539,
02020      543,   159,   328,   236,   517,   541,   449,   274,   451,   271,
02021      237,   174,   214,  1076,   385,   556,   195,   382,   230,   755,
02022      330,   658,   267,   188,  1042,   555,   769,    68,   566,   152,
02023      152,  -341,   446,   152,   227,   152,   998,   446,   251,   152,
02024      152,   268,   270,   273,   152,    79,   947,   833,   152,   124,
02025     1066,   228,   695,   175,   709,   185,   269,   272,   701,   190,
02026     1065,   701,   595,   544,   787,    79,   789,   791,   232,   804,
02027      795,   438,   798,   869,   280,   766,   576,    68,   546,   231,
02028      922,   456,   234,   900,  1289,   189,   291,   271,   235,   909,
02029      233,   564,   872,  1232,  1232,   790,   792,    68,   256,   796,
02030     1067,   799,  1351,   294,   377,    68,   194,   540,   233,   557,
02031      700,   307,  1135,   700,  1138,  1139,   557,  -252,   553,   862,
02032      297,   273,    87,   863,   158,   158,   233,   297,    33,  1028,
02033     1029,   520,    62,   -23,   -23,   272,   396,   244,   386,   392,
02034      297,   178,   246,   178,   208,  1333,   845,   178,   178,   291,
02035      959,   291,   178,  -255,   398,   442,   376,   223,   403,    63,
02036      442,   578,   579,   580,   793,   331,   294,   704,   383,  1382,
02037     1346,   801,    87,   496,  -263,   806,   553,   234,    59,   948,
02038     1107,   256,  1034,   152,   581,  1030,  -341,    63,   554,   757,
02039      758,   568,    87,   495,   195,  1152,  1153,   436,   -23,   280,
02040      210,   280,   586,  1291,  1355,   152,   328,   436,   256,   473,
02041      566,   -24,   256,   193,   760,   152,   558,   207,   952,    63,
02042       79,   750,   298,   558,   330,  1383,  1222,   659,   660,   298,
02043     1063,   720,  1369,  1200,   152,   444,   719,    63,    63,   211,
02044      444,   209,   298,  1065,   152,   212,   554,  1038,  1154,   562,
02045      559,  1156,    68,   290,   759,    63,  1398,    63,   367,   507,
02046      446,   728,  1226,   730,   731,   732,   733,   734,   735,   736,
02047      737,   738,   739,   539,   661,    66,   765,   907,  1342,  -657,
02048       79,   256,   432,  1067,   805,   526,   218,   543,   517,    63,
02049      256,   543,   385,   331,  1266,   441,   807,   808,   590,   433,
02050      434,   771,   841,   367,   612,   -24,   -24,  1003,   -24,    63,
02051      566,   -24,    68,   394,   563,   582,  1006,   399,   400,   855,
02052      224,    33,  1162,   178,  1163,   867,  1232,   152,   152,   152,
02053      841,   662,   152,   441,   664,  1017,   666,   667,   668,   669,
02054      670,   671,   672,   673,   674,   675,   152,    87,   809,   971,
02055      848,  1294,   764,   176,  1023,   176,  1384,  1385,  1036,   176,
02056      176,  1268,   331,   367,   176,   546,   389,   195,   390,   391,
02057      244,    59,   392,   850,  -423,   246,  1037,  1051,  1103,  -423,
02058      663,   253,   225,   442,   978,   962,   254,   178,   405,   766,
02059      845,   696,   442,   564,   696,  1095,  1323,  1077,   367,   177,
02060      851,   177,  1164,  1034,   845,   177,   177,    87,  1386,  1104,
02061      177,   726,   441,   702,   331,   520,   386,   868,  -437,   441,
02062      333,   951,    63,   592,   253,  1034,  1358,  -657,   226,   254,
02063      754,   295,  1183,  -657,   718,   178,   178,   178,   335,   454,
02064      178,  1107,   165,   166,   287,   244,   168,   288,   170,   171,
02065      278,    63,   778,   365,   178,   366,    93,   923,    93,    93,
02066      727,   569,   180,   444,   180,    63,   159,   777,   180,   180,
02067      284,  1000,   444,   180,   367,   174,  1402,    93,   368,   571,
02068      285,  1389,   572,    66,   566,   538,   279,  1406,    79,   369,
02069      370,  -423,  -423,  1410,   152,   569,  -423,   252,  1078,   752,
02070      598,   599,   600,   904,   331,   603,    93,   753,   406,   835,
02071      352,   353,    33,   713,   783,   776,   572,   441,   295,   538,
02072       68,   526,   253,   903,  -623,   176,    93,   254,   354,   355,
02073      786,   823,   452,    93,    93,   176,   289,   810,   453,   800,
02074      720,   981,   321,   811,   253,   719,   559,   811,   719,   254,
02075      970,   152,   984,   985,   859,   854,   286,   372,   542,   373,
02076      374,   290,    59,    63,   881,   360,   361,   362,   256,   884,
02077      908,   393,   256,   886,   916,  1127,   323,   256,   324,   325,
02078      331,   177,  1009,   436,   864,    63,   301,   972,   811,   158,
02079      765,  1243,  1159,  1031,  1302,   517,   971,   253,   240,  1032,
02080      811,   882,   254,   156,   156,   411,  1039,   350,   351,   412,
02081     1357,   542,    93,  1314,   931,    87,   811,   302,   582,   983,
02082      152,  1160,   215,   411,   363,   364,  1044,   725,   241,   242,
02083      243,   244,   152,   245,   395,   543,   246,  1199,    63,   401,
02084      391,   244,  1128,   392,   180,  1132,   246,   176,   176,   176,
02085      356,   357,   176,   986,   937,   987,   988,  1040,  1027,   178,
02086      989,   411,   303,    93,   441,   960,   176,   240,   569,   253,
02087      430,   431,  -623,    93,   254,   394,   331,   306,  -623,   332,
02088      850,    93,  -623,   717,  1157,   570,   571,  1158,  1167,   572,
02089     1168,   819,   538,   177,   177,   177,   885,  1131,   177,   391,
02090      244,   308,   392,   247,   240,   246,   436,   851,   539,  1119,
02091       63,  1120,   177,   546,   964,   965,   346,    69,   569,    69,
02092       69,   253,   520,    69,   331,    69,   254,   855,  1117,    69,
02093       69,  1309,   347,   411,    69,   255,   571,  1184,    69,   572,
02094      178,    93,   538,   966,  1074,   349,   718,  1089,   331,   973,
02095      240,   331,  1254,   436,   348,  1336,   180,   180,   180,   358,
02096      359,   180,    63,  1149,   533,  1124,   331,    69,   331,   367,
02097     1337,   402,   247,  1299,  1301,   180,  1014,  1015,   152,   381,
02098      534,   535,   536,   -24,   -24,   537,   -24,    69,   538,   -24,
02099      152,   566,   375,   152,  1312,    69,   152,   970,   214,  1320,
02100      523,   295,   446,    79,    79,   936,   441,  1182,   215,   247,
02101      531,   253,  1072,   532,   271,   387,   254,   904,   215,  1147,
02102      539,   236,   331,   388,  -706,   252,  1338,   328,   237,  1070,
02103      551,   407,   903,   552,   152,    68,    68,   903,  1343,  1213,
02104     1224,  1278,  1279,   551,   409,   330,   710,  1280,   273,  1217,
02105     1223,  1286,    63,   331,  1121,   247,   999,   195,   859,   253,
02106      569,   718,   272,  1055,   254,   331,  1370,   601,   602,  1339,
02107      426,   176,   253,    69,   427,  1173,   291,   254,  1098,  1218,
02108     1056,  1099,  1219,   884,   538,   411,   255,   886,   566,  1341,
02109      428,  1362,  1363,   294,   240,    69,   429,   253,  1270,   450,
02110       63,   178,   254,   234,   178,    69,  1064,   990,   331,   492,
02111       68,   542,  1348,    63,  1394,   882,  1079,   177,  1395,   493,
02112     1258,   498,  1207,    93,    69,   442,  1201,   244,   526,  1202,
02113       87,    87,   246,   582,    69,   524,  1096,   527,    63,   248,
02114      582,   569,    69,  1101,   934,   935,  1274,   582,   530,    93,
02115     -424,  1129,   176,   573,   539,   591,   281,   240,   152,  1102,
02116      298,   152,   572,   543,   707,   538,   980,   708,   718,   982,
02117      711,   569,   569,   592,  1148,   712,  1166,   714,  1130,   715,
02118      180,  1114,  1133,  1134,   531,   606,   607,   532,   178,  1305,
02119     1190,   533,  1306,  1191,   327,   538,   538,  1332,   177,   247,
02120      807,   808,    69,    79,   236,   444,   607,   534,   535,   536,
02121      885,   237,   537,   716,   539,   538,  -644,    69,    69,    69,
02122      -76,   -76,    69,   378,   751,   941,   763,   533,  1133,  1134,
02123       93,  1334,   767,   855,   770,    68,    69,  1220,  1221,  1233,
02124     1233,   546,   772,   534,   535,   536,   385,   281,   537,    93,
02125      773,   538,   397,   718,   774,   152,   569,   911,   244,   775,
02126      912,   180,   247,   246,  1028,  1029,   178,   385,   156,   178,
02127      446,   781,   385,  1052,   571,   559,   864,   572,   471,  1361,
02128      538,   578,   579,   580,  1325,   854,   690,   691,   692,  1064,
02129     1247,    91,  1379,    91,    91,   680,   681,    91,   788,    91,
02130      794,   569,   503,    91,    91,   518,   522,   797,    91,  1365,
02131      295,   385,    91,   176,   686,   687,   176,  1064,  1064,  1327,
02132      195,   803,  1328,   688,   689,   538,   824,   549,   569,   582,
02133       87,  1112,   152,   840,  1115,  1269,   834,  1277,   841,   280,
02134      845,    91,   744,   745,   847,   152,  1330,   849,   558,  1331,
02135      718,  1283,   538,   857,   906,   914,  1249,  1250,  1251,   177,
02136     1253,    91,   177,   178,   385,   385,   855,   236,  1259,    91,
02137      386,   915,    93,   394,   237,   883,   921,   927,  1325,   152,
02138      918,   244,   924,   392,    69,   859,   246,   928,   929,   152,
02139      930,   386,   932,   442,   215,   933,   386,   938,  1275,  1276,
02140      943,   944,  1349,  1056,   870,   391,   244,    93,   392,  1282,
02141       69,   246,   241,   242,   243,   244,   958,   245,   945,    93,
02142      246,   946,   180,  1047,   244,   180,  1048,   961,  1174,   246,
02143      904,   974,   963,  -642,  1269,   386,  1236,   244,   977,  1237,
02144      178,    69,   246,   764,  1079,  1240,   244,    91,  1241,   991,
02145      903,   246,  1064,   178,   979,  -660,   331,   992,   993,  1269,
02146     1001,  1007,  1008,    93,    93,    93,  1011,  1010,  1021,    91,
02147     1026,  1033,  1233,   444,  1034,  1035,  1045,  1046,   176,    91,
02148      178,   176,  1050,  1053,   158,   904,  1060,   178,   386,   386,
02149     -635,    69,  1061,  1062,  -488,  1091,   884,  1073,    91,  1075,
02150      886,  1106,  1092,   256,  1090,   903,  1108,  1093,    91,  1094,
02151       69,  1105,  1125,  1126,  1109,   761,    91,   215,  1257,  1110,
02152     1111,  1269,    69,  1113,   177,   612,  1407,   177,   882,   309,
02153      310,   311,   312,   313,   314,  1116,   317,   318,  -243,    93,
02154     1140,  1150,  1387,   441,    93,  -242,  1141,  1143,   253,  1136,
02155     1064,   884,   215,   254,  1142,   886,  1145,  -653,  1146,  1171,
02156     1155,  -653,  1161,   749,   215,  -653,  1151,   152,  1165,  1401,
02157     1194,   152,  1170,  1378,  1172,   176,    91,   778,   825,   178,
02158     1185,  1397,  1195,   882,  1196,  1197,  1198,   180,   778,    63,
02159      180,    91,    91,    91,   778,   441,    91,  1214,   152,  1205,
02160      253,  1206,  1235,  -660,   394,   254,  1215,  1216,   215,  -660,
02161       91,   152,  1414,  -660,  1252,  -660,  1255,  -660,  1260,   221,
02162      152,   177,    97,   885,   160,   162,  1273,   256,  1267,  1295,
02163      441,  1400,  -254,    69,  1290,   253,  1291,  1303,  -635,   871,
02164      254,    63,  -253,   162,  -635,  1308,  1311,  1313,  -635,   717,
02165     1319,  1324,   176,   913,  1335,  1347,  1340,   919,   221,  1345,
02166     1350,  1188,  -502,  1364,    93,   176,   394,  1222,    69,  1374,
02167     1380,  1381,    97,  1388,   163,   178,    63,  1391,   885,   178,
02168       69,   164,  1399,    69,   180,  1403,    69,  1344,  1405,   883,
02169     1408,  1411,    97,  1413,  1412,   404,  1175,   785,   177,   176,
02170      162,   500,   676,   221,   802,   665,   178,   238,  1373,   677,
02171     1261,   177,  1169,   678,   221,   679,   861,  1192,   705,   178,
02172      784,  1234,   874,  1300,    69,    69,    69,  1322,   178,  1071,
02173     1307,  1016,   165,   166,   167,   609,   168,   169,   170,   171,
02174      172,  1316,  1100,   706,  1376,   177,  1317,  1318,  1176,   165,
02175      166,   167,   304,   168,   169,   170,   171,   172,    91,   379,
02176     1012,   180,   856,   315,  1366,  1086,   565,   957,   852,   967,
02177      969,  1392,   976,   762,   180,  1013,  1225,  1187,   162,   693,
02178      694,     0,   221,   729,    91,   741,   743,   408,     0,   761,
02179        0,     0,     0,  1404,     0,   740,     0,     0,     0,   742,
02180       69,     0,     0,  1296,  1297,    69,     0,     0,   180,     0,
02181        0,     0,     0,     0,     0,    91,     0,     0,    93,     0,
02182        0,     0,     0,     0,   221,   724,     0,   221,     0,   162,
02183        0,   315,     0,     0,     0,     0,   165,   166,   167,   162,
02184      168,   169,   170,   171,   172,     0,     0,    97,    69,     0,
02185        0,    69,   165,   275,   276,   244,   168,   277,   170,   171,
02186      278,     0,     0,    30,     0,    91,     0,    31,     0,    33,
02187        0,     0,     0,   499,   221,    34,   504,     0,     0,     0,
02188      221,     0,    39,     0,    91,   221,     0,   176,    42,    43,
02189      221,   176,     0,   221,     0,     0,    91,     0,     0,     0,
02190       47,    48,  1054,   221,     0,     0,     0,    97,     0,     0,
02191        0,     0,  1356,     0,     0,    55,     0,     0,   176,    59,
02192       60,   528,   529,   238,     0,    69,     0,     0,     0,   574,
02193        0,   176,     0,   177,   238,  1049,     0,   177,     0,   593,
02194      176,     0,   596,     0,     0,    69,     0,     0,     0,     0,
02195        0,     0,   604,  1069,  1371,     0,     0,    93,     0,     0,
02196        0,     0,     0,   156,   177,   577,     0,     0,     0,   457,
02197        0,   279,   221,     0,     0,     0,   458,   177,     0,   459,
02198        0,     0,     0,     0,     0,     0,   177,  1393,   460,     0,
02199      461,   462,     0,     0,     0,     0,   180,     0,     0,   654,
02200      180,   655,     0,     0,   463,     0,     0,    91,     0,     0,
02201        0,   464,    93,     0,     0,   465,     0,  1409,     0,     0,
02202        0,   504,    69,     0,     0,     0,   466,   180,     0,     0,
02203        0,     0,     0,     0,     0,    69,     0,  1144,   467,   468,
02204      180,   469,    91,     0,     0,   221,     0,     0,     0,   180,
02205        0,     0,     0,     0,    91,     0,     0,    91,     0,     0,
02206       91,     0,     0,   197,     0,     0,     0,     0,     0,    69,
02207        0,     0,     0,   221,     0,     0,   547,     0,     0,    69,
02208      221,     0,   221,     0,     0,     0,     0,     0,   221,   160,
02209      853,     0,     0,   221,   499,     0,     0,   470,    91,    91,
02210       91,     0,   883,   569,     0,     0,   508,   509,   829,   830,
02211      512,   831,   514,   515,   832,    97,     0,   471,   472,   165,
02212      166,   587,   221,   168,   588,   170,   171,   589,   221,     0,
02213        0,     0,     0,     0,     0,  1203,     0,   499,     0,     0,
02214        0,     0,   504,     0,     0,     0,     0,     0,     0,     0,
02215      549,     0,     0,     0,     0,     0,     0,   883,     0,     0,
02216        0,     0,     0,     0,   221,     0,     0,  1238,   221,     0,
02217        0,   836,  1242,     0,    91,     0,     0,   843,     0,    91,
02218        0,     0,     0,     0,   854,     0,     0,     0,   826,     0,
02219      827,   828,     0,     0,     0,     0,   887,   321,     0,     0,
02220        0,  1263,     0,     0,     0,   221,     0,   942,     0,   842,
02221        0,   853,     0,   843,   846,   162,     0,   574,    69,     0,
02222        0,     0,    91,     0,     0,    91,     0,   953,   954,   829,
02223      830,   512,   831,   514,   515,   832,     0,     0,     0,     0,
02224        0,    30,     0,     0,     0,    31,    32,    33,     0,   873,
02225        0,   221,     0,    34,   939,     0,    35,    69,     0,     0,
02226       39,    69,     0,     0,     0,   920,    42,    43,     0,     0,
02227        0,     0,     0,    69,     0,     0,     0,     0,    47,    48,
02228        0,     0,     0,    50,     0,     0,     0,     0,    69,     0,
02229      221,    53,    54,    55,     0,     0,    58,    59,    60,    91,
02230      843,    69,  1137,   221,     0,     0,     0,     0,     0,     0,
02231       69,   321,     0,     0,     0,     0,     0,     0,     0,    91,
02232        0,     0,     0,     0,     0,  1208,     0,     0,   321,     0,
02233        0,     0,     0,     0,   949,     0,   950,     0,   162,   843,
02234        0,  1209,  1210,  1211,   830,   512,  1212,   514,   515,   832,
02235        0,     0,   504,     0,  1118,     0,     0,     0,   953,   954,
02236      510,   511,   512,   513,   514,   515,   516,     0,     0,     0,
02237        0,     0,     0,   162,     0,     0,   221,     0,     0,     0,
02238      221,     0,     0,   221,     0,   162,     0,     0,     0,   221,
02239        0,     0,   221,   610,     0,     0,    91,     0,   682,   683,
02240      684,   685,     0,     0,     0,     0,   221,   221,     0,    91,
02241        0,     0,     0,     0,     0,     0,   247,     0,     0,     0,
02242       63,     0,     0,     0,     0,   994,     0,     0,     0,   162,
02243       97,    97,   994,   955,     0,     0,     0,     0,  1004,     0,
02244        0,   994,     0,    91,     0,     0,     0,     0,   221,  1396,
02245        0,     0,   321,    91,     0,   499,   843,     0,     0,     0,
02246      197,   197,   197,   197,   197,   197,   197,   197,   197,   197,
02247      197,   197,   197,   197,   197,   197,   197,   197,   746,   747,
02248      748,     0,   508,   509,   510,   511,   512,   513,   514,   515,
02249      516,     0,     0,  1018,     0,  1019,  1020,   843,     0,     0,
02250      197,     0,     0,     0,     0,   162,     0,  1024,  1025,     0,
02251      887,  -342,     0,     0,     0,     0,    28,    29,    30,     0,
02252        0,     0,    31,    32,    33,     0,     0,     0,     0,     0,
02253       34,     0,  1256,    35,    36,    37,    38,    39,     0,    40,
02254        0,     0,    41,    42,    43,    44,    45,     0,     0,   321,
02255        0,     0,    46,     0,     0,    47,    48,   247,    49,     0,
02256       50,     0,    51,   853,     0,     0,    52,     0,    53,    54,
02257       55,    56,    57,    58,    59,    60,     0,     0,     0,   508,
02258      509,   829,   830,   512,   831,   514,   515,   832,     0,  1097,
02259        0,     0,    91,   221,     0,     0,   221,     0,     0,     0,
02260      104,     0,     0,    30,     0,     0,     0,    31,     0,     0,
02261      105,     0,     0,     0,     0,    34,   106,     0,     0,     0,
02262        0,     0,    39,     0,     0,     0,     0,   221,    42,    43,
02263       97,    91,     0,     0,     0,    91,     0,     0,   107,     0,
02264       47,    48,   108,     0,   109,     0,     0,    91,   110,   111,
02265        0,     0,   112,    53,   247,    55,   221,   321,    58,     0,
02266       60,   319,    91,     0,     0,     0,  -342,     0,    61,     0,
02267       62,   656,     0,     0,     0,    91,   836,     0,     0,     0,
02268      320,   321,     0,     0,    91,     0,     0,   534,   535,   536,
02269      657,   323,   537,   324,   325,   538,     0,    63,     0,     0,
02270      221,     0,     0,     0,     0,   499,     0,     0,     0,     0,
02271     1177,   241,   242,   243,   322,   323,   245,   324,   325,   246,
02272        0,     0,     0,     0,     0,  1189,     0,     0,     0,     0,
02273     1193,   221,     0,     0,     0,     0,     0,   113,   114,     0,
02274        0,   115,   116,   117,     0,     0,   118,     0,     0,  1244,
02275      221,   221,     0,     0,   703,   119,   221,     0,     0,   221,
02276      221,     0,     0,     0,     0,   221,     0,     0,     0,     0,
02277      120,   121,    29,    30,     0,     0,  1239,    31,    32,    33,
02278     1264,     0,    63,     0,   162,    34,     0,     0,    35,    36,
02279        0,   149,    39,   221,    40,     0,     0,    41,    42,    43,
02280       44,     0,   321,   221,  1262,     0,     0,    46,  1284,     0,
02281       47,    48,     0,    49,   504,    50,   569,   221,   197,     0,
02282        0,    52,     0,    53,    54,    55,     0,    57,    58,    59,
02283       60,     0,   508,   509,   829,   830,   512,   831,   514,   515,
02284      832,     0,   499,     0,  1287,  1288,     0,     0,     0,     0,
02285        0,     0,   843,     0,     0,     0,  1292,  1293,     0,     0,
02286      547,     0,   221,     0,     0,     0,  1321,     0,  1298,   321,
02287        0,     0,     0,     0,   853,     0,     0,     0,   221,  1304,
02288      221,     0,     0,     0,     0,   221,     0,     0,     0,  1310,
02289      508,   509,   829,   830,   512,   831,   514,   515,   832,   508,
02290      509,   510,   511,   512,   513,   514,   515,   516,     0,   104,
02291        0,  1264,    30,     0,  1326,     0,    31,     0,  1329,   105,
02292        0,     0,     0,   887,    34,   106,     0,  1284,   435,  1352,
02293        0,    39,     0,     0,   504,     0,     0,    42,    43,     0,
02294        0,     0,     0,     0,     0,   221,   221,   107,     0,    47,
02295       48,   108,    63,   109,     0,     0,     0,   110,   111,     0,
02296        0,   112,    53,     0,    55,     0,     0,    58,     0,    60,
02297        0,     0,     0,     0,     0,     0,     0,   221,   887,     0,
02298        0,   104,     0,  1359,    30,     0,     0,     0,    31,     0,
02299        0,   105,     0,     0,  1284,  1352,    34,   106,     0,     0,
02300        0,     0,     0,    39,     0,  1367,     0,     0,  1368,    42,
02301       43,     0,     0,     0,     0,     0,     0,     0,   197,   107,
02302        0,    47,    48,   108,     0,   109,  1352,     0,     0,   110,
02303      111,     0,     0,   112,    53,     0,    55,  1390,     0,    58,
02304        0,    60,     0,     0,  -709,     0,   113,   114,     0,     0,
02305      115,   116,   117,     0,     0,   118,     0,     0,     0,  -709,
02306     -709,     0,  -709,  -709,   119,     0,  -709,  -709,     0,     0,
02307        0,     0,     0,     0,   197,     0,     0,   812,     0,   120,
02308      121,     0,     0,     0,     0,    29,     0,     0,     0,     0,
02309        0,    63,    33,   813,   814,   815,   816,   817,   818,   819,
02310      820,   538,    36,     0,   149,     0,     0,    40,     0,     0,
02311       41,     0,     0,    44,     0,     0,     0,     0,   113,   114,
02312       46,     0,   115,   116,   117,     0,    49,   118,   104,     0,
02313        0,    30,  1041,   858,    52,    31,   119,     0,   105,     0,
02314       57,     0,    59,    34,   106,     0,     0,     0,     0,     0,
02315       39,   120,   121,     0,     0,     0,    42,    43,     0,     0,
02316        0,     0,     0,    63,     0,     0,   107,     0,    47,    48,
02317      108,     0,   109,     0,     0,   104,   110,   111,    30,     0,
02318      112,    53,    31,    55,     0,   105,    58,     0,    60,     0,
02319       34,   106,     0,     0,     0,     0,     0,    39,     0,     0,
02320        0,     0,     0,    42,    43,     0,   547,     0,     0,     0,
02321        0,     0,     0,   107,     0,    47,    48,   108,   547,   109,
02322        0,     0,     0,   110,   111,     0,     0,   112,    53,     0,
02323       55,     0,     0,    58,     0,    60,   508,   509,   510,   511,
02324      512,   513,   514,   515,   516,     0,     0,     0,   508,   509,
02325     1178,  1179,   512,  1180,   514,   515,  1181,   547,     0,     0,
02326        0,     0,     0,     0,     0,   113,   114,     0,     0,   115,
02327      116,   117,     0,     0,   118,     0,     0,     0,     0,  -695,
02328      858,     0,     0,   119,     0,     0,     0,   508,   509,  1178,
02329     1360,   512,  1180,   514,   515,  1181,     0,     0,   120,   121,
02330        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
02331       63,     0,   113,   114,     0,     0,   115,   116,   117,     0,
02332        0,   118,   104,     0,     0,    30,     0,   858,     0,    31,
02333      119,     0,   105,     0,     0,     0,     0,    34,   106,     0,
02334        0,     0,     0,     0,    39,   120,   121,     0,     0,     0,
02335       42,    43,     0,     0,     0,     0,     0,    63,     0,     0,
02336      107,     0,    47,    48,   108,     0,   109,     0,     0,   104,
02337      110,   111,    30,     0,   112,    53,    31,    55,     0,   105,
02338       58,     0,    60,     0,    34,   106,     0,     0,     0,     0,
02339        0,    39,     0,     0,     0,     0,     0,    42,    43,     0,
02340        0,     0,     0,     0,     0,     0,     0,   107,   333,    47,
02341       48,   108,     0,   109,     0,   334,     0,   110,     0,     0,
02342        0,   112,    53,   413,    55,     0,   335,    58,     0,    60,
02343      414,   336,   337,   338,   339,   340,   341,   342,   343,   344,
02344      345,   415,     0,     0,     0,     0,   416,   417,   418,   419,
02345      420,   421,   422,   423,   424,   425,     0,     0,     0,   113,
02346      114,     0,     0,   115,   116,   117,     0,     0,   118,     0,
02347        0,     0,     0,     0,     0,     0,     0,   119,     0,     0,
02348        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
02349        0,     0,   120,   121,     0,     0,     0,     0,     0,     0,
02350        0,     0,     0,     0,    63,   608,   113,   114,     0,     0,
02351      115,   116,   117,     0,     0,   118,   104,     0,     0,    30,
02352        0,     0,     0,    31,   119,     0,   105,     0,     0,     0,
02353        0,    34,   106,     0,     0,     0,     0,     0,    39,   120,
02354      121,     0,     0,     0,    42,    43,     0,     0,     0,     0,
02355        0,    63,     0,     0,   107,     0,    47,    48,   108,     0,
02356      109,     0,     0,   104,   110,     0,    30,     0,   112,    53,
02357       31,    55,     0,   105,    58,     0,    60,     0,    34,   106,
02358        0,     0,     0,     0,     0,    39,     0,     0,     0,     0,
02359        0,    42,    43,     0,     0,     0,     0,     0,     0,     0,
02360        0,   107,     0,    47,    48,   108,     0,   109,     0,     0,
02361        0,   110,     0,     0,     0,   112,    53,     0,    55,     0,
02362        0,    58,     0,    60,     0,     0,    30,     0,     0,     0,
02363       31,    32,    33,     0,     0,     0,     0,     0,    34,     0,
02364        0,    35,     0,     0,     0,    39,     0,     0,     0,     0,
02365        0,    42,    43,   113,   114,     0,     0,   115,   116,   117,
02366        0,     0,   118,    47,    48,     0,     0,     0,    50,     0,
02367        0,   187,     0,     0,     0,     0,    53,    54,    55,     0,
02368        0,    58,    59,    60,     0,     0,   120,   121,     0,     0,
02369        0,     0,     0,     0,     0,     0,     0,     0,    63,     0,
02370      113,   114,     0,     0,   115,   116,   117,     0,     0,   118,
02371        0,     0,     0,     0,     0,     0,     0,     0,   119,     0,
02372        0,    28,    29,    30,     0,     0,     0,    31,    32,    33,
02373        0,     0,     0,   120,   121,    34,     0,     0,    35,    36,
02374       37,    38,    39,     0,    40,    63,     0,    41,    42,    43,
02375       44,    45,     0,     0,     0,     0,     0,    46,     0,     0,
02376       47,    48,     0,    49,     0,    50,     0,    51,     0,     0,
02377        0,    52,     0,    53,    54,    55,    56,    57,    58,    59,
02378       60,    28,    29,    30,     0,     0,     0,    31,    32,    33,
02379        0,     0,     0,     0,     0,    34,     0,     0,    35,    36,
02380       37,    38,    39,     0,    40,    63,     0,    41,    42,    43,
02381       44,    45,     0,     0,     0,     0,     0,    46,     0,     0,
02382       47,    48,     0,    49,     0,    50,     0,    51,     0,     0,
02383        0,    52,     0,    53,    54,    55,    56,    57,    58,    59,
02384       60,    28,    29,    30,     0,     0,     0,    31,    32,    33,
02385        0,     0,     0,     0,     0,    34,     0,     0,    35,    36,
02386       37,    38,    39,     0,    40,   229,     0,    41,    42,    43,
02387       44,    45,     0,    61,     0,    62,     0,    46,     0,     0,
02388       47,    48,     0,    49,     0,    50,     0,    51,     0,     0,
02389        0,    52,     0,    53,    54,    55,    56,    57,    58,    59,
02390       60,     0,    63,     1,     2,     3,     4,     5,     6,     7,
02391        8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
02392       18,    19,    20,    21,    22,    23,     0,     0,     0,    24,
02393        0,     0,   494,    61,     0,    62,     0,     0,     0,     0,
02394        0,     0,     0,     0,     0,     0,   148,    29,    30,     0,
02395        0,     0,    31,    32,    33,     0,     0,     0,     0,     0,
02396       34,     0,    63,    35,    36,     0,   149,    39,     0,    40,
02397        0,     0,    41,    42,    43,    44,   150,     0,     0,     0,
02398        0,     0,    46,     0,     0,    47,    48,     0,    49,     0,
02399       50,     0,     0,    61,     0,    62,    52,     0,    53,    54,
02400       55,   151,    57,    58,    59,    60,     0,    29,    30,     0,
02401        0,     0,    31,    32,    33,     0,     0,     0,     0,     0,
02402       34,     0,    63,    35,    36,   875,   149,    39,     0,    40,
02403        0,     0,    41,    42,    43,    44,     0,     0,     0,   578,
02404      579,   580,    46,     0,     0,    47,    48,     0,    49,     0,
02405       50,     0,   876,     0,     0,     0,    52,     0,    53,    54,
02406       55,   877,    57,    58,    59,    60,    29,    30,     0,     0,
02407        0,    31,    32,    33,     0,     0,     0,     0,     0,    34,
02408        0,     0,    35,    36,   875,   149,    39,     0,    40,     0,
02409        0,    41,    42,    43,    44,     0,     0,     0,   578,   579,
02410      580,    46,     0,     0,    47,    48,     0,    49,     0,    50,
02411        0,   876,     0,     0,     0,    52,     0,    53,    54,    55,
02412      877,    57,    58,    59,    60,     0,     0,    63,     0,     0,
02413        0,     0,     0,     0,   878,     0,     0,    29,    30,     0,
02414        0,     0,    31,    32,    33,     0,     0,     0,     0,     0,
02415       34,     0,     0,    35,    36,     0,   149,    39,   879,    40,
02416      880,     0,    41,    42,    43,    44,     0,     0,     0,     0,
02417        0,     0,    46,     0,     0,    47,    48,     0,    49,     0,
02418       50,     0,     0,     0,     0,     0,    52,    63,    53,    54,
02419       55,     0,    57,    58,    59,    60,     0,     0,     0,     0,
02420        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
02421        0,     0,     0,     0,     0,  -489,     0,   879,     0,   880,
02422        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
02423        0,    29,    30,     0,     0,     0,    31,    32,    33,     0,
02424        0,     0,     0,     0,    34,     0,    63,    35,    36,     0,
02425      149,    39,     0,    40,     0,     0,    41,    42,    43,    44,
02426        0,     0,     0,     0,     0,     0,    46,     0,     0,    47,
02427       48,   441,    49,     0,    50,     0,   253,     0,     0,     0,
02428       52,   254,    53,    54,    55,     0,    57,    58,    59,    60,
02429      717,     0,     0,   435,    29,    30,     0,     0,     0,    31,
02430       32,    33,     0,     0,     0,     0,     0,    34,     0,     0,
02431       35,    36,   875,   149,    39,     0,    40,    63,     0,    41,
02432       42,    43,    44,     0,     0,     0,     0,     0,     0,    46,
02433        0,     0,    47,    48,     0,    49,     0,    50,     0,   876,
02434        0,     0,     0,    52,     0,    53,    54,    55,   877,    57,
02435       58,    59,    60,     0,     0,     0,     0,     0,     0,     0,
02436        0,    29,    30,     0,     0,     0,    31,    32,    33,     0,
02437        0,     0,     0,     0,    34,     0,     0,    35,    36,     0,
02438      149,    39,     0,    40,    62,     0,    41,    42,    43,    44,
02439        0,     0,     0,     0,     0,     0,    46,     0,     0,    47,
02440       48,     0,    49,     0,    50,     0,     0,     0,     0,     0,
02441       52,    63,    53,    54,    55,     0,    57,    58,    59,    60,
02442        0,     0,     0,     0,    29,    30,     0,     0,     0,    31,
02443       32,    33,     0,     0,     0,     0,     0,    34,     0,     0,
02444       35,    36,     0,   149,    39,   879,    40,   880,     0,    41,
02445       42,    43,    44,     0,     0,     0,     0,     0,     0,    46,
02446        0,     0,    47,    48,     0,    49,     0,    50,     0,     0,
02447        0,     0,     0,    52,    63,    53,    54,    55,     0,    57,
02448       58,    59,    60,     0,     0,     0,     0,    29,    30,     0,
02449        0,     0,    31,    32,    33,     0,     0,     0,     0,     0,
02450       34,     0,     0,    35,    36,     0,   149,    39,     0,    40,
02451        0,     0,    41,    42,    43,    44,     0,   975,     0,     0,
02452        0,     0,    46,     0,     0,    47,    48,     0,    49,     0,
02453       50,     0,     0,     0,     0,     0,    52,     0,    53,    54,
02454       55,    63,    57,    58,    59,    60,    30,     0,     0,     0,
02455       31,    32,    33,     0,     0,     0,     0,     0,    34,     0,
02456        0,    35,     0,     0,     0,    39,     0,     0,     0,     0,
02457        0,    42,    43,     0,    30,     0,     0,   880,    31,    32,
02458       33,     0,     0,    47,    48,     0,    34,     0,    50,    35,
02459        0,     0,     0,    39,     0,     0,    53,    54,    55,    42,
02460       43,    58,    59,    60,    63,     0,     0,     0,   613,     0,
02461        0,    47,    48,     0,     0,     0,    50,     0,     0,     0,
02462        0,     0,     0,     0,    53,    54,    55,   614,    30,    58,
02463       59,    60,    31,    32,    33,     0,     0,     0,     0,     0,
02464       34,     0,     0,    35,     0,     0,     0,    39,     0,     0,
02465        0,     0,     0,    42,    43,     0,     0,     0,     0,     0,
02466        0,     0,     0,     0,     0,    47,    48,    63,     0,     0,
02467       50,     0,     0,     0,     0,     0,     0,     0,    53,    54,
02468       55,     0,     0,    58,    59,    60,     0,     0,     0,     0,
02469        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
02470        0,  1246,     0,     0,     0,     0,     0,     0,     0,     0,
02471        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
02472        0,     0,     0,     0,     0,    63,  1372,     0,     0,     0,
02473        0,   615,   616,   617,   618,   619,   620,   621,   622,   623,
02474      624,   625,   626,   627,     0,   628,     0,     0,     0,     0,
02475      629,   630,     0,    63,   631,   632,     0,   633,   634,   635,
02476      636,   637,   638,   639,   640,   641,   642,   643,   644,   645,
02477      646,   647,   648,   649,   650,   651,   652,    29,    30,  1375,
02478        0,     0,    31,     0,    33,     0,     0,     0,     0,     0,
02479       34,     0,     0,     0,    36,     0,   149,    39,     0,    40,
02480        0,     0,    41,    42,    43,    44,     0,    63,     0,     0,
02481        0,     0,    46,     0,     0,    47,    48,     0,    49,     0,
02482        0,     0,     0,     0,     0,     0,    52,     0,     0,     0,
02483       55,     0,    57,     0,    59,    60
02484 };
02485 
02486 static const yytype_int16 yycheck[] =
02487 {
02488        1,     7,     4,     9,   194,     1,   465,    72,   214,   248,
02489      255,     3,   123,    62,   234,   253,   210,    79,   212,    79,
02490       62,     5,    22,   889,   163,   260,    16,   160,    51,   441,
02491      123,   327,    76,    10,   858,   260,   450,     1,   264,     3,
02492        4,     0,   209,     7,    45,     9,   782,   214,    71,    13,
02493       14,    77,    78,    79,    18,    51,   653,   518,    22,     2,
02494      880,    45,    51,     6,   377,     8,    78,    79,   365,    12,
02495      880,   368,   297,   255,   474,    71,   476,   477,    35,   493,
02496      480,   208,   482,   564,    85,   448,   286,    51,   255,    53,
02497      592,   218,    56,   575,  1170,   159,    97,   157,    62,   581,
02498       57,   263,   569,  1091,  1092,   476,   477,    71,    72,   480,
02499      880,   482,  1283,    97,    35,    79,   159,   252,    57,    54,
02500      365,   111,   955,   368,   957,   958,    54,   157,    90,    67,
02501       54,   157,     1,    71,     3,     4,    57,    54,    13,    92,
02502       93,   234,   159,    94,    95,   157,    69,    70,   163,    72,
02503       54,     7,    75,     9,   159,  1245,   186,    13,    14,   160,
02504      139,   162,    18,   157,   182,   209,   150,     0,   186,   186,
02505      214,    38,    39,    40,   478,   154,   160,   367,   162,  1350,
02506     1270,   485,    51,   227,   157,   498,    90,   151,    63,   656,
02507      926,   155,   186,   157,    61,   148,   155,   186,   160,    94,
02508       95,   279,    71,   226,   194,    81,    82,   208,   159,   210,
02509       12,   212,   290,   186,  1290,   179,   327,   218,   182,   220,
02510      446,   156,   186,    14,   444,   189,   161,    18,   695,   186,
02511      226,   437,   156,   161,   327,  1351,   160,   102,   103,   156,
02512      159,   408,  1332,  1063,   208,   209,   408,   186,   186,    51,
02513      214,   159,   156,  1063,   218,    57,   160,   854,   134,    94,
02514      261,   997,   226,   186,   159,   186,  1382,   186,   159,   233,
02515      437,   414,   159,   416,   417,   418,   419,   420,   421,   422,
02516      423,   424,   425,   522,   149,   286,   448,   161,   139,     0,
02517      286,   255,   149,  1063,   494,   186,   159,   542,   518,   186,
02518      264,   546,   441,   154,  1137,   140,    96,    97,   292,   166,
02519      167,   454,   186,   159,   320,    69,    70,   788,    72,   186,
02520      546,    75,   286,   179,   159,   289,   797,   183,   184,   549,
02521      159,    13,    77,   189,    79,   560,  1324,   301,   302,   303,
02522      186,   331,   306,   140,   334,   812,   336,   337,   338,   339,
02523      340,   341,   342,   343,   344,   345,   320,   226,   148,   722,
02524      542,  1185,   159,     7,   825,     9,    83,    84,   849,    13,
02525       14,    53,   154,   159,    18,   542,   158,   367,    68,    69,
02526       70,    63,    72,   545,   156,    75,   853,   868,   161,   161,
02527      333,   145,    51,   437,   757,   708,   150,   253,   189,   762,
02528      186,   365,   446,   565,   368,   907,  1226,   889,   159,     7,
02529      545,     9,   157,   186,   186,    13,    14,   286,   135,   921,
02530       18,   411,   140,   366,   154,   518,   441,   562,   156,   140,
02531      153,   161,   186,   161,   145,   186,  1302,   148,     4,   150,
02532      441,   159,  1039,   154,   408,   301,   302,   303,   171,   160,
02533      306,  1187,    67,    68,    69,    70,    71,    72,    73,    74,
02534       75,   186,   463,   138,   320,   140,     1,   594,     3,     4,
02535      413,    51,     7,   437,     9,   186,   468,   461,    13,    14,
02536      157,   785,   446,    18,   159,   469,  1388,    22,   163,    69,
02537      156,  1357,    72,   494,   720,    75,   186,  1399,   494,   174,
02538      175,   156,   157,  1405,   468,    51,   161,    98,    99,   154,
02539      301,   302,   303,   575,   154,   306,    51,   162,   158,   525,
02540      148,   149,    13,    69,   467,   459,    72,   140,   159,    75,
02541      494,   186,   145,   575,     0,   179,    71,   150,   166,   167,
02542      474,   505,   148,    78,    79,   189,   161,   148,   154,   483,
02543      717,   148,    37,   154,   145,   717,   557,   154,   720,   150,
02544      722,   525,    53,    54,   554,   145,   156,   143,   159,   145,
02545      146,   186,    63,   186,   575,   143,   144,   145,   542,   575,
02546      581,   179,   546,   575,   585,    70,    71,   551,    73,    74,
02547      154,   189,   148,   594,   558,   186,   149,   161,   154,   468,
02548      762,  1103,  1002,   148,   148,   825,   969,   145,    37,   154,
02549      154,   575,   150,     3,     4,   154,   854,   168,   169,   158,
02550      148,   159,   157,   161,   601,   494,   154,   149,   592,   772,
02551      594,  1002,    22,   154,   164,   165,   861,   158,    67,    68,
02552       69,    70,   606,    72,   179,   890,    75,  1061,   186,   184,
02553       69,    70,   948,    72,   189,   952,    75,   301,   302,   303,
02554      172,   173,   306,   154,   607,   156,   157,   857,   835,   525,
02555      161,   154,   149,   208,   140,   158,   320,    37,    51,   145,
02556      168,   169,   148,   218,   150,   541,   154,   149,   154,   157,
02557      852,   226,   158,   159,   998,    68,    69,  1001,    70,    72,
02558       72,    73,    75,   301,   302,   303,   575,   952,   306,    69,
02559       70,   159,    72,   142,    37,    75,   717,   852,   957,    89,
02560      186,    91,   320,   890,   714,   715,   170,     1,    51,     3,
02561        4,   145,   825,     7,   154,     9,   150,   957,   158,    13,
02562       14,  1208,   152,   154,    18,   159,    69,   158,    22,    72,
02563      606,   286,    75,   717,   887,   150,   720,   892,   154,   749,
02564       37,   154,   158,   764,   151,   158,   301,   302,   303,   146,
02565      147,   306,   186,   979,    51,   942,   154,    51,   154,   159,
02566      158,   157,   142,  1195,  1198,   320,   809,   810,   752,   157,
02567       67,    68,    69,    69,    70,    72,    72,    71,    75,    75,
02568      764,  1027,   159,   767,  1216,    79,   770,   969,   808,  1221,
02569      158,   159,   979,   809,   810,   606,   140,  1037,   208,   142,
02570       69,   145,   884,    72,   884,   161,   150,   889,   218,   972,
02571     1069,   880,   154,   161,   158,    98,   158,   948,   880,   883,
02572      154,   158,   884,   157,   808,   809,   810,   889,  1260,  1069,
02573     1085,  1155,  1156,   154,   158,   948,   157,  1161,   884,  1079,
02574     1085,  1165,   186,   154,   140,   142,   157,   857,   858,   145,
02575       51,   835,   884,   874,   150,   154,  1335,    85,    86,   158,
02576      170,   525,   145,   157,   152,  1028,   887,   150,    69,   154,
02577      874,    72,   157,   889,    75,   154,   159,   889,  1124,   158,
02578      151,  1313,  1314,   887,    37,   179,   150,   145,  1146,   149,
02579      186,   767,   150,   877,   770,   189,   880,   773,   154,     4,
02580      884,   159,   158,   186,   154,   889,   890,   525,   158,   149,
02581     1120,   160,  1067,   468,   208,   979,    69,    70,   186,    72,
02582      809,   810,    75,   907,   218,   158,   910,   149,   186,    68,
02583      914,    51,   226,   917,    88,    89,  1150,   921,   186,   494,
02584      156,   951,   606,   156,  1203,   157,    85,    37,   932,    69,
02585      156,   935,    72,  1218,     4,    75,   767,   160,   942,   770,
02586      157,    51,    51,   161,   974,   161,  1009,   160,   952,   160,
02587      525,   934,    67,    68,    69,    87,    88,    72,   854,    69,
02588       69,    51,    72,    72,   123,    75,    75,  1245,   606,   142,
02589       96,    97,   286,  1009,  1063,   979,    88,    67,    68,    69,
02590      889,  1063,    72,   158,  1263,    75,   158,   301,   302,   303,
02591      157,   158,   306,   152,   158,   611,   158,    51,    67,    68,
02592      575,  1247,   160,  1263,   160,  1009,   320,   100,   101,  1091,
02593     1092,  1218,   160,    67,    68,    69,  1195,   176,    72,   594,
02594      158,    75,   181,  1027,   157,  1029,    51,    69,    70,   157,
02595       72,   606,   142,    75,    92,    93,   932,  1216,   468,   935,
02596     1247,   159,  1221,    68,    69,  1086,  1050,    72,   156,  1309,
02597       75,    38,    39,    40,  1229,   145,   360,   361,   362,  1063,
02598     1106,     1,  1347,     3,     4,   350,   351,     7,   159,     9,
02599      159,    51,   231,    13,    14,   234,   235,   159,    18,   158,
02600      159,  1260,    22,   767,   356,   357,   770,  1091,  1092,    69,
02601     1120,   158,    72,   358,   359,    75,   157,   256,    51,  1103,
02602     1009,   932,  1106,   186,   935,  1146,   157,  1153,   186,  1150,
02603      186,    51,   430,   431,   186,  1119,    69,   158,   161,    72,
02604     1124,  1163,    75,   159,   155,   154,  1109,  1110,  1111,   767,
02605     1113,    71,   770,  1029,  1313,  1314,  1396,  1226,  1121,    79,
02606     1195,    61,   717,  1039,  1226,   575,   161,   133,  1323,  1153,
02607       69,    70,    10,    72,   468,  1185,    75,   148,   148,  1163,
02608      148,  1216,   159,  1247,   594,   148,  1221,   139,  1151,  1152,
02609      140,   140,  1277,  1197,    68,    69,    70,   752,    72,  1162,
02610      494,    75,    67,    68,    69,    70,   142,    72,   139,   764,
02611       75,   158,   767,    69,    70,   770,    72,   158,  1029,    75,
02612     1302,   160,   157,   139,  1245,  1260,    69,    70,   139,    72,
02613     1106,   525,    75,   159,  1218,    69,    70,   157,    72,    65,
02614     1302,    75,  1226,  1119,   159,     0,   154,   157,   157,  1270,
02615       21,   155,   157,   808,   809,   810,   157,   155,    75,   179,
02616      157,    70,  1324,  1247,   186,   158,   862,   863,   932,   189,
02617     1146,   935,   154,    70,  1163,  1357,    51,  1153,  1313,  1314,
02618        0,   575,   149,   155,   155,   154,  1302,   157,   208,   155,
02619     1302,   159,   154,  1277,   157,  1357,   155,   161,   218,   160,
02620      594,   158,   139,   139,   159,   444,   226,   717,  1119,   159,
02621      159,  1332,   606,   159,   932,  1341,  1401,   935,  1302,   113,
02622      114,   115,   116,   117,   118,   158,   120,   121,   186,   884,
02623      157,    12,  1353,   140,   889,   186,   157,   157,   145,   186,
02624     1324,  1357,   752,   150,   158,  1357,   158,   154,   158,    75,
02625      158,   158,   158,   160,   764,   162,   159,  1341,   158,  1385,
02626      155,  1345,   186,  1347,   157,  1029,   286,  1388,   507,  1245,
02627      154,  1381,   160,  1357,   155,   154,   149,   932,  1399,   186,
02628      935,   301,   302,   303,  1405,   140,   306,   157,  1372,   158,
02629      145,   158,     4,   148,  1270,   150,   161,   161,   808,   154,
02630      320,  1385,  1412,   158,   158,   160,   158,   162,   140,    24,
02631     1394,  1029,     1,  1302,     3,     4,   158,  1401,   186,   155,
02632      140,  1384,   157,   717,   186,   145,   186,   158,   148,   568,
02633      150,   186,   157,    22,   154,   158,   157,   161,   158,   159,
02634        4,   154,  1106,   582,   158,   160,   158,   586,    63,   159,
02635      157,  1047,   158,   158,  1009,  1119,  1332,   160,   752,   139,
02636      157,   160,    51,   157,     9,  1341,   186,   157,  1357,  1345,
02637      764,    16,   157,   767,  1029,   158,   770,  1267,   157,   889,
02638      158,   158,    71,   158,   160,   187,  1032,   469,  1106,  1153,
02639       79,   229,   346,   108,   487,   335,  1372,    63,  1341,   347,
02640     1124,  1119,  1017,   348,   119,   349,   557,  1050,   368,  1385,
02641      468,  1092,   573,  1197,   808,   809,   810,  1226,  1394,   884,
02642     1203,   811,    67,    68,    69,   319,    71,    72,    73,    74,
02643       75,  1218,   914,   368,  1345,  1153,  1218,  1218,  1032,    67,
02644       68,    69,   108,    71,    72,    73,    74,    75,   468,   155,
02645      807,  1106,   551,   119,  1324,   890,   264,   696,   546,   717,
02646      720,  1372,   752,   446,  1119,   808,  1086,  1044,   157,   363,
02647      364,    -1,   187,   415,   494,   427,   429,   192,    -1,   718,
02648       -1,    -1,    -1,  1394,    -1,   426,    -1,    -1,    -1,   428,
02649      884,    -1,    -1,  1189,  1190,   889,    -1,    -1,  1153,    -1,
02650       -1,    -1,    -1,    -1,    -1,   525,    -1,    -1,  1163,    -1,
02651       -1,    -1,    -1,    -1,   229,   409,    -1,   232,    -1,   208,
02652       -1,   187,    -1,    -1,    -1,    -1,    67,    68,    69,   218,
02653       71,    72,    73,    74,    75,    -1,    -1,   226,   932,    -1,
02654       -1,   935,    67,    68,    69,    70,    71,    72,    73,    74,
02655       75,    -1,    -1,     7,    -1,   575,    -1,    11,    -1,    13,
02656       -1,    -1,    -1,   229,   279,    19,   232,    -1,    -1,    -1,
02657      285,    -1,    26,    -1,   594,   290,    -1,  1341,    32,    33,
02658      295,  1345,    -1,   298,    -1,    -1,   606,    -1,    -1,    -1,
02659       44,    45,   133,   308,    -1,    -1,    -1,   286,    -1,    -1,
02660       -1,    -1,  1298,    -1,    -1,    59,    -1,    -1,  1372,    63,
02661       64,   244,   245,   279,    -1,  1009,    -1,    -1,    -1,   285,
02662       -1,  1385,    -1,  1341,   290,   864,    -1,  1345,    -1,   295,
02663     1394,    -1,   298,    -1,    -1,  1029,    -1,    -1,    -1,    -1,
02664       -1,    -1,   308,   882,  1340,    -1,    -1,  1302,    -1,    -1,
02665       -1,    -1,    -1,  1163,  1372,   288,    -1,    -1,    -1,     8,
02666       -1,   186,   377,    -1,    -1,    -1,    15,  1385,    -1,    18,
02667       -1,    -1,    -1,    -1,    -1,    -1,  1394,  1373,    27,    -1,
02668       29,    30,    -1,    -1,    -1,    -1,  1341,    -1,    -1,   322,
02669     1345,   324,    -1,    -1,    43,    -1,    -1,   717,    -1,    -1,
02670       -1,    50,  1357,    -1,    -1,    54,    -1,  1403,    -1,    -1,
02671       -1,   377,  1106,    -1,    -1,    -1,    65,  1372,    -1,    -1,
02672       -1,    -1,    -1,    -1,    -1,  1119,    -1,   966,    77,    78,
02673     1385,    80,   752,    -1,    -1,   450,    -1,    -1,    -1,  1394,
02674       -1,    -1,    -1,    -1,   764,    -1,    -1,   767,    -1,    -1,
02675      770,    -1,    -1,    17,    -1,    -1,    -1,    -1,    -1,  1153,
02676       -1,    -1,    -1,   478,    -1,    -1,    37,    -1,    -1,  1163,
02677      485,    -1,   487,    -1,    -1,    -1,    -1,    -1,   493,   468,
02678       51,    -1,    -1,   498,   450,    -1,    -1,   136,   808,   809,
02679      810,    -1,  1302,    51,    -1,    -1,    67,    68,    69,    70,
02680       71,    72,    73,    74,    75,   494,    -1,   156,   157,    67,
02681       68,    69,   527,    71,    72,    73,    74,    75,   533,    -1,
02682       -1,    -1,    -1,    -1,    -1,  1064,    -1,   493,    -1,    -1,
02683       -1,    -1,   498,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
02684     1079,    -1,    -1,    -1,    -1,    -1,    -1,  1357,    -1,    -1,
02685       -1,    -1,    -1,    -1,   569,    -1,    -1,  1096,   573,    -1,
02686       -1,   527,  1101,    -1,   884,    -1,    -1,   533,    -1,   889,
02687       -1,    -1,    -1,    -1,   145,    -1,    -1,    -1,   511,    -1,
02688      513,   514,    -1,    -1,    -1,    -1,   575,    37,    -1,    -1,
02689       -1,  1130,    -1,    -1,    -1,   610,    -1,   612,    -1,   532,
02690       -1,    51,    -1,   569,   537,   594,    -1,   573,  1302,    -1,
02691       -1,    -1,   932,    -1,    -1,   935,    -1,    67,    68,    69,
02692       70,    71,    72,    73,    74,    75,    -1,    -1,    -1,    -1,
02693       -1,     7,    -1,    -1,    -1,    11,    12,    13,    -1,   572,
02694       -1,   656,    -1,    19,   610,    -1,    22,  1341,    -1,    -1,
02695       26,  1345,    -1,    -1,    -1,   588,    32,    33,    -1,    -1,
02696       -1,    -1,    -1,  1357,    -1,    -1,    -1,    -1,    44,    45,
02697       -1,    -1,    -1,    49,    -1,    -1,    -1,    -1,  1372,    -1,
02698      695,    57,    58,    59,    -1,    -1,    62,    63,    64,  1009,
02699      656,  1385,   142,   708,    -1,    -1,    -1,    -1,    -1,    -1,
02700     1394,    37,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1029,
02701       -1,    -1,    -1,    -1,    -1,    51,    -1,    -1,    37,    -1,
02702       -1,    -1,    -1,    -1,   657,    -1,   659,    -1,   717,   695,
02703       -1,    67,    68,    69,    70,    71,    72,    73,    74,    75,
02704       -1,    -1,   708,    -1,   938,    -1,    -1,    -1,    67,    68,
02705       69,    70,    71,    72,    73,    74,    75,    -1,    -1,    -1,
02706       -1,    -1,    -1,   752,    -1,    -1,   781,    -1,    -1,    -1,
02707      785,    -1,    -1,   788,    -1,   764,    -1,    -1,    -1,   794,
02708       -1,    -1,   797,   159,    -1,    -1,  1106,    -1,   352,   353,
02709      354,   355,    -1,    -1,    -1,    -1,   811,   812,    -1,  1119,
02710       -1,    -1,    -1,    -1,    -1,    -1,   142,    -1,    -1,    -1,
02711      186,    -1,    -1,    -1,    -1,   781,    -1,    -1,    -1,   808,
02712      809,   810,   788,   142,    -1,    -1,    -1,    -1,   794,    -1,
02713       -1,   797,    -1,  1153,    -1,    -1,    -1,    -1,   853,  1378,
02714       -1,    -1,    37,  1163,    -1,   811,   812,    -1,    -1,    -1,
02715      414,   415,   416,   417,   418,   419,   420,   421,   422,   423,
02716      424,   425,   426,   427,   428,   429,   430,   431,   432,   433,
02717      434,    -1,    67,    68,    69,    70,    71,    72,    73,    74,
02718       75,    -1,    -1,   816,    -1,   818,   819,   853,    -1,    -1,
02719      454,    -1,    -1,    -1,    -1,   884,    -1,   830,   831,    -1,
02720      889,     0,    -1,    -1,    -1,    -1,     5,     6,     7,    -1,
02721       -1,    -1,    11,    12,    13,    -1,    -1,    -1,    -1,    -1,
02722       19,    -1,  1116,    22,    23,    24,    25,    26,    -1,    28,
02723       -1,    -1,    31,    32,    33,    34,    35,    -1,    -1,    37,
02724       -1,    -1,    41,    -1,    -1,    44,    45,   142,    47,    -1,
02725       49,    -1,    51,    51,    -1,    -1,    55,    -1,    57,    58,
02726       59,    60,    61,    62,    63,    64,    -1,    -1,    -1,    67,
02727       68,    69,    70,    71,    72,    73,    74,    75,    -1,   912,
02728       -1,    -1,  1302,   998,    -1,    -1,  1001,    -1,    -1,    -1,
02729        4,    -1,    -1,     7,    -1,    -1,    -1,    11,    -1,    -1,
02730       14,    -1,    -1,    -1,    -1,    19,    20,    -1,    -1,    -1,
02731       -1,    -1,    26,    -1,    -1,    -1,    -1,  1032,    32,    33,
02732     1009,  1341,    -1,    -1,    -1,  1345,    -1,    -1,    42,    -1,
02733       44,    45,    46,    -1,    48,    -1,    -1,  1357,    52,    53,
02734       -1,    -1,    56,    57,   142,    59,  1061,    37,    62,    -1,
02735       64,    17,  1372,    -1,    -1,    -1,   155,    -1,   157,    -1,
02736      159,    51,    -1,    -1,    -1,  1385,  1032,    -1,    -1,    -1,
02737       36,    37,    -1,    -1,  1394,    -1,    -1,    67,    68,    69,
02738       70,    71,    72,    73,    74,    75,    -1,   186,    -1,    -1,
02739     1105,    -1,    -1,    -1,    -1,  1061,    -1,    -1,    -1,    -1,
02740     1033,    67,    68,    69,    70,    71,    72,    73,    74,    75,
02741       -1,    -1,    -1,    -1,    -1,  1048,    -1,    -1,    -1,    -1,
02742     1053,  1136,    -1,    -1,    -1,    -1,    -1,   141,   142,    -1,
02743       -1,   145,   146,   147,    -1,    -1,   150,    -1,    -1,  1105,
02744     1155,  1156,    -1,    -1,   158,   159,  1161,    -1,    -1,  1164,
02745     1165,    -1,    -1,    -1,    -1,  1170,    -1,    -1,    -1,    -1,
02746      174,   175,     6,     7,    -1,    -1,  1099,    11,    12,    13,
02747     1136,    -1,   186,    -1,  1163,    19,    -1,    -1,    22,    23,
02748       -1,    25,    26,  1198,    28,    -1,    -1,    31,    32,    33,
02749       34,    -1,    37,  1208,  1127,    -1,    -1,    41,  1164,    -1,
02750       44,    45,    -1,    47,  1170,    49,    51,  1222,   772,    -1,
02751       -1,    55,    -1,    57,    58,    59,    -1,    61,    62,    63,
02752       64,    -1,    67,    68,    69,    70,    71,    72,    73,    74,
02753       75,    -1,  1198,    -1,  1167,  1168,    -1,    -1,    -1,    -1,
02754       -1,    -1,  1208,    -1,    -1,    -1,  1179,  1180,    -1,    -1,
02755       37,    -1,  1267,    -1,    -1,    -1,  1222,    -1,  1191,    37,
02756       -1,    -1,    -1,    -1,    51,    -1,    -1,    -1,  1283,  1202,
02757     1285,    -1,    -1,    -1,    -1,  1290,    -1,    -1,    -1,  1212,
02758       67,    68,    69,    70,    71,    72,    73,    74,    75,    67,
02759       68,    69,    70,    71,    72,    73,    74,    75,    -1,     4,
02760       -1,  1267,     7,    -1,  1237,    -1,    11,    -1,  1241,    14,
02761       -1,    -1,    -1,  1302,    19,    20,    -1,  1283,   162,  1285,
02762       -1,    26,    -1,    -1,  1290,    -1,    -1,    32,    33,    -1,
02763       -1,    -1,    -1,    -1,    -1,  1350,  1351,    42,    -1,    44,
02764       45,    46,   186,    48,    -1,    -1,    -1,    52,    53,    -1,
02765       -1,    56,    57,    -1,    59,    -1,    -1,    62,    -1,    64,
02766       -1,    -1,    -1,    -1,    -1,    -1,    -1,  1382,  1357,    -1,
02767       -1,     4,    -1,  1306,     7,    -1,    -1,    -1,    11,    -1,
02768       -1,    14,    -1,    -1,  1350,  1351,    19,    20,    -1,    -1,
02769       -1,    -1,    -1,    26,    -1,  1328,    -1,    -1,  1331,    32,
02770       33,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   972,    42,
02771       -1,    44,    45,    46,    -1,    48,  1382,    -1,    -1,    52,
02772       53,    -1,    -1,    56,    57,    -1,    59,  1360,    -1,    62,
02773       -1,    64,    -1,    -1,   139,    -1,   141,   142,    -1,    -1,
02774      145,   146,   147,    -1,    -1,   150,    -1,    -1,    -1,   154,
02775      155,    -1,   157,   158,   159,    -1,   161,   162,    -1,    -1,
02776       -1,    -1,    -1,    -1,  1028,    -1,    -1,    51,    -1,   174,
02777      175,    -1,    -1,    -1,    -1,     6,    -1,    -1,    -1,    -1,
02778       -1,   186,    13,    67,    68,    69,    70,    71,    72,    73,
02779       74,    75,    23,    -1,    25,    -1,    -1,    28,    -1,    -1,
02780       31,    -1,    -1,    34,    -1,    -1,    -1,    -1,   141,   142,
02781       41,    -1,   145,   146,   147,    -1,    47,   150,     4,    -1,
02782       -1,     7,   155,   156,    55,    11,   159,    -1,    14,    -1,
02783       61,    -1,    63,    19,    20,    -1,    -1,    -1,    -1,    -1,
02784       26,   174,   175,    -1,    -1,    -1,    32,    33,    -1,    -1,
02785       -1,    -1,    -1,   186,    -1,    -1,    42,    -1,    44,    45,
02786       46,    -1,    48,    -1,    -1,     4,    52,    53,     7,    -1,
02787       56,    57,    11,    59,    -1,    14,    62,    -1,    64,    -1,
02788       19,    20,    -1,    -1,    -1,    -1,    -1,    26,    -1,    -1,
02789       -1,    -1,    -1,    32,    33,    -1,    37,    -1,    -1,    -1,
02790       -1,    -1,    -1,    42,    -1,    44,    45,    46,    37,    48,
02791       -1,    -1,    -1,    52,    53,    -1,    -1,    56,    57,    -1,
02792       59,    -1,    -1,    62,    -1,    64,    67,    68,    69,    70,
02793       71,    72,    73,    74,    75,    -1,    -1,    -1,    67,    68,
02794       69,    70,    71,    72,    73,    74,    75,    37,    -1,    -1,
02795       -1,    -1,    -1,    -1,    -1,   141,   142,    -1,    -1,   145,
02796      146,   147,    -1,    -1,   150,    -1,    -1,    -1,    -1,   155,
02797      156,    -1,    -1,   159,    -1,    -1,    -1,    67,    68,    69,
02798       70,    71,    72,    73,    74,    75,    -1,    -1,   174,   175,
02799       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
02800      186,    -1,   141,   142,    -1,    -1,   145,   146,   147,    -1,
02801       -1,   150,     4,    -1,    -1,     7,    -1,   156,    -1,    11,
02802      159,    -1,    14,    -1,    -1,    -1,    -1,    19,    20,    -1,
02803       -1,    -1,    -1,    -1,    26,   174,   175,    -1,    -1,    -1,
02804       32,    33,    -1,    -1,    -1,    -1,    -1,   186,    -1,    -1,
02805       42,    -1,    44,    45,    46,    -1,    48,    -1,    -1,     4,
02806       52,    53,     7,    -1,    56,    57,    11,    59,    -1,    14,
02807       62,    -1,    64,    -1,    19,    20,    -1,    -1,    -1,    -1,
02808       -1,    26,    -1,    -1,    -1,    -1,    -1,    32,    33,    -1,
02809       -1,    -1,    -1,    -1,    -1,    -1,    -1,    42,   153,    44,
02810       45,    46,    -1,    48,    -1,   160,    -1,    52,    -1,    -1,
02811       -1,    56,    57,   153,    59,    -1,   171,    62,    -1,    64,
02812      160,   176,   177,   178,   179,   180,   181,   182,   183,   184,
02813      185,   171,    -1,    -1,    -1,    -1,   176,   177,   178,   179,
02814      180,   181,   182,   183,   184,   185,    -1,    -1,    -1,   141,
02815      142,    -1,    -1,   145,   146,   147,    -1,    -1,   150,    -1,
02816       -1,    -1,    -1,    -1,    -1,    -1,    -1,   159,    -1,    -1,
02817       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
02818       -1,    -1,   174,   175,    -1,    -1,    -1,    -1,    -1,    -1,
02819       -1,    -1,    -1,    -1,   186,   140,   141,   142,    -1,    -1,
02820      145,   146,   147,    -1,    -1,   150,     4,    -1,    -1,     7,
02821       -1,    -1,    -1,    11,   159,    -1,    14,    -1,    -1,    -1,
02822       -1,    19,    20,    -1,    -1,    -1,    -1,    -1,    26,   174,
02823      175,    -1,    -1,    -1,    32,    33,    -1,    -1,    -1,    -1,
02824       -1,   186,    -1,    -1,    42,    -1,    44,    45,    46,    -1,
02825       48,    -1,    -1,     4,    52,    -1,     7,    -1,    56,    57,
02826       11,    59,    -1,    14,    62,    -1,    64,    -1,    19,    20,
02827       -1,    -1,    -1,    -1,    -1,    26,    -1,    -1,    -1,    -1,
02828       -1,    32,    33,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
02829       -1,    42,    -1,    44,    45,    46,    -1,    48,    -1,    -1,
02830       -1,    52,    -1,    -1,    -1,    56,    57,    -1,    59,    -1,
02831       -1,    62,    -1,    64,    -1,    -1,     7,    -1,    -1,    -1,
02832       11,    12,    13,    -1,    -1,    -1,    -1,    -1,    19,    -1,
02833       -1,    22,    -1,    -1,    -1,    26,    -1,    -1,    -1,    -1,
02834       -1,    32,    33,   141,   142,    -1,    -1,   145,   146,   147,
02835       -1,    -1,   150,    44,    45,    -1,    -1,    -1,    49,    -1,
02836       -1,   159,    -1,    -1,    -1,    -1,    57,    58,    59,    -1,
02837       -1,    62,    63,    64,    -1,    -1,   174,   175,    -1,    -1,
02838       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   186,    -1,
02839      141,   142,    -1,    -1,   145,   146,   147,    -1,    -1,   150,
02840       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   159,    -1,
02841       -1,     5,     6,     7,    -1,    -1,    -1,    11,    12,    13,
02842       -1,    -1,    -1,   174,   175,    19,    -1,    -1,    22,    23,
02843       24,    25,    26,    -1,    28,   186,    -1,    31,    32,    33,
02844       34,    35,    -1,    -1,    -1,    -1,    -1,    41,    -1,    -1,
02845       44,    45,    -1,    47,    -1,    49,    -1,    51,    -1,    -1,
02846       -1,    55,    -1,    57,    58,    59,    60,    61,    62,    63,
02847       64,     5,     6,     7,    -1,    -1,    -1,    11,    12,    13,
02848       -1,    -1,    -1,    -1,    -1,    19,    -1,    -1,    22,    23,
02849       24,    25,    26,    -1,    28,   186,    -1,    31,    32,    33,
02850       34,    35,    -1,    -1,    -1,    -1,    -1,    41,    -1,    -1,
02851       44,    45,    -1,    47,    -1,    49,    -1,    51,    -1,    -1,
02852       -1,    55,    -1,    57,    58,    59,    60,    61,    62,    63,
02853       64,     5,     6,     7,    -1,    -1,    -1,    11,    12,    13,
02854       -1,    -1,    -1,    -1,    -1,    19,    -1,    -1,    22,    23,
02855       24,    25,    26,    -1,    28,   149,    -1,    31,    32,    33,
02856       34,    35,    -1,   157,    -1,   159,    -1,    41,    -1,    -1,
02857       44,    45,    -1,    47,    -1,    49,    -1,    51,    -1,    -1,
02858       -1,    55,    -1,    57,    58,    59,    60,    61,    62,    63,
02859       64,    -1,   186,   107,   108,   109,   110,   111,   112,   113,
02860      114,   115,   116,   117,   118,   119,   120,   121,   122,   123,
02861      124,   125,   126,   127,   128,   129,    -1,    -1,    -1,   133,
02862       -1,    -1,   156,   157,    -1,   159,    -1,    -1,    -1,    -1,
02863       -1,    -1,    -1,    -1,    -1,    -1,     5,     6,     7,    -1,
02864       -1,    -1,    11,    12,    13,    -1,    -1,    -1,    -1,    -1,
02865       19,    -1,   186,    22,    23,    -1,    25,    26,    -1,    28,
02866       -1,    -1,    31,    32,    33,    34,    35,    -1,    -1,    -1,
02867       -1,    -1,    41,    -1,    -1,    44,    45,    -1,    47,    -1,
02868       49,    -1,    -1,   157,    -1,   159,    55,    -1,    57,    58,
02869       59,    60,    61,    62,    63,    64,    -1,     6,     7,    -1,
02870       -1,    -1,    11,    12,    13,    -1,    -1,    -1,    -1,    -1,
02871       19,    -1,   186,    22,    23,    24,    25,    26,    -1,    28,
02872       -1,    -1,    31,    32,    33,    34,    -1,    -1,    -1,    38,
02873       39,    40,    41,    -1,    -1,    44,    45,    -1,    47,    -1,
02874       49,    -1,    51,    -1,    -1,    -1,    55,    -1,    57,    58,
02875       59,    60,    61,    62,    63,    64,     6,     7,    -1,    -1,
02876       -1,    11,    12,    13,    -1,    -1,    -1,    -1,    -1,    19,
02877       -1,    -1,    22,    23,    24,    25,    26,    -1,    28,    -1,
02878       -1,    31,    32,    33,    34,    -1,    -1,    -1,    38,    39,
02879       40,    41,    -1,    -1,    44,    45,    -1,    47,    -1,    49,
02880       -1,    51,    -1,    -1,    -1,    55,    -1,    57,    58,    59,
02881       60,    61,    62,    63,    64,    -1,    -1,   186,    -1,    -1,
02882       -1,    -1,    -1,    -1,   133,    -1,    -1,     6,     7,    -1,
02883       -1,    -1,    11,    12,    13,    -1,    -1,    -1,    -1,    -1,
02884       19,    -1,    -1,    22,    23,    -1,    25,    26,   157,    28,
02885      159,    -1,    31,    32,    33,    34,    -1,    -1,    -1,    -1,
02886       -1,    -1,    41,    -1,    -1,    44,    45,    -1,    47,    -1,
02887       49,    -1,    -1,    -1,    -1,    -1,    55,   186,    57,    58,
02888       59,    -1,    61,    62,    63,    64,    -1,    -1,    -1,    -1,
02889       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
02890       -1,    -1,    -1,    -1,    -1,   155,    -1,   157,    -1,   159,
02891       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
02892       -1,     6,     7,    -1,    -1,    -1,    11,    12,    13,    -1,
02893       -1,    -1,    -1,    -1,    19,    -1,   186,    22,    23,    -1,
02894       25,    26,    -1,    28,    -1,    -1,    31,    32,    33,    34,
02895       -1,    -1,    -1,    -1,    -1,    -1,    41,    -1,    -1,    44,
02896       45,   140,    47,    -1,    49,    -1,   145,    -1,    -1,    -1,
02897       55,   150,    57,    58,    59,    -1,    61,    62,    63,    64,
02898      159,    -1,    -1,   162,     6,     7,    -1,    -1,    -1,    11,
02899       12,    13,    -1,    -1,    -1,    -1,    -1,    19,    -1,    -1,
02900       22,    23,    24,    25,    26,    -1,    28,   186,    -1,    31,
02901       32,    33,    34,    -1,    -1,    -1,    -1,    -1,    -1,    41,
02902       -1,    -1,    44,    45,    -1,    47,    -1,    49,    -1,    51,
02903       -1,    -1,    -1,    55,    -1,    57,    58,    59,    60,    61,
02904       62,    63,    64,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
02905       -1,     6,     7,    -1,    -1,    -1,    11,    12,    13,    -1,
02906       -1,    -1,    -1,    -1,    19,    -1,    -1,    22,    23,    -1,
02907       25,    26,    -1,    28,   159,    -1,    31,    32,    33,    34,
02908       -1,    -1,    -1,    -1,    -1,    -1,    41,    -1,    -1,    44,
02909       45,    -1,    47,    -1,    49,    -1,    -1,    -1,    -1,    -1,
02910       55,   186,    57,    58,    59,    -1,    61,    62,    63,    64,
02911       -1,    -1,    -1,    -1,     6,     7,    -1,    -1,    -1,    11,
02912       12,    13,    -1,    -1,    -1,    -1,    -1,    19,    -1,    -1,
02913       22,    23,    -1,    25,    26,   157,    28,   159,    -1,    31,
02914       32,    33,    34,    -1,    -1,    -1,    -1,    -1,    -1,    41,
02915       -1,    -1,    44,    45,    -1,    47,    -1,    49,    -1,    -1,
02916       -1,    -1,    -1,    55,   186,    57,    58,    59,    -1,    61,
02917       62,    63,    64,    -1,    -1,    -1,    -1,     6,     7,    -1,
02918       -1,    -1,    11,    12,    13,    -1,    -1,    -1,    -1,    -1,
02919       19,    -1,    -1,    22,    23,    -1,    25,    26,    -1,    28,
02920       -1,    -1,    31,    32,    33,    34,    -1,   162,    -1,    -1,
02921       -1,    -1,    41,    -1,    -1,    44,    45,    -1,    47,    -1,
02922       49,    -1,    -1,    -1,    -1,    -1,    55,    -1,    57,    58,
02923       59,   186,    61,    62,    63,    64,     7,    -1,    -1,    -1,
02924       11,    12,    13,    -1,    -1,    -1,    -1,    -1,    19,    -1,
02925       -1,    22,    -1,    -1,    -1,    26,    -1,    -1,    -1,    -1,
02926       -1,    32,    33,    -1,     7,    -1,    -1,   159,    11,    12,
02927       13,    -1,    -1,    44,    45,    -1,    19,    -1,    49,    22,
02928       -1,    -1,    -1,    26,    -1,    -1,    57,    58,    59,    32,
02929       33,    62,    63,    64,   186,    -1,    -1,    -1,    17,    -1,
02930       -1,    44,    45,    -1,    -1,    -1,    49,    -1,    -1,    -1,
02931       -1,    -1,    -1,    -1,    57,    58,    59,    36,     7,    62,
02932       63,    64,    11,    12,    13,    -1,    -1,    -1,    -1,    -1,
02933       19,    -1,    -1,    22,    -1,    -1,    -1,    26,    -1,    -1,
02934       -1,    -1,    -1,    32,    33,    -1,    -1,    -1,    -1,    -1,
02935       -1,    -1,    -1,    -1,    -1,    44,    45,   186,    -1,    -1,
02936       49,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    57,    58,
02937       59,    -1,    -1,    62,    63,    64,    -1,    -1,    -1,    -1,
02938       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
02939       -1,   162,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
02940       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
02941       -1,    -1,    -1,    -1,    -1,   186,   159,    -1,    -1,    -1,
02942       -1,   140,   141,   142,   143,   144,   145,   146,   147,   148,
02943      149,   150,   151,   152,    -1,   154,    -1,    -1,    -1,    -1,
02944      159,   160,    -1,   186,   163,   164,    -1,   166,   167,   168,
02945      169,   170,   171,   172,   173,   174,   175,   176,   177,   178,
02946      179,   180,   181,   182,   183,   184,   185,     6,     7,   158,
02947       -1,    -1,    11,    -1,    13,    -1,    -1,    -1,    -1,    -1,
02948       19,    -1,    -1,    -1,    23,    -1,    25,    26,    -1,    28,
02949       -1,    -1,    31,    32,    33,    34,    -1,   186,    -1,    -1,
02950       -1,    -1,    41,    -1,    -1,    44,    45,    -1,    47,    -1,
02951       -1,    -1,    -1,    -1,    -1,    -1,    55,    -1,    -1,    -1,
02952       59,    -1,    61,    -1,    63,    64
02953 };
02954 
02955 /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
02956    symbol of state STATE-NUM.  */
02957 static const yytype_uint16 yystos[] =
02958 {
02959        0,   107,   108,   109,   110,   111,   112,   113,   114,   115,
02960      116,   117,   118,   119,   120,   121,   122,   123,   124,   125,
02961      126,   127,   128,   129,   133,   215,   216,   217,     5,     6,
02962        7,    11,    12,    13,    19,    22,    23,    24,    25,    26,
02963       28,    31,    32,    33,    34,    35,    41,    44,    45,    47,
02964       49,    51,    55,    57,    58,    59,    60,    61,    62,    63,
02965       64,   157,   159,   186,   192,   213,   214,   218,   220,   269,
02966      289,   290,   291,   293,   294,   298,   303,   304,   305,   306,
02967      307,   308,   309,   310,   311,   312,   313,   317,   318,   319,
02968      320,   322,   323,   324,   328,   329,   331,   332,   333,   375,
02969      376,   378,   402,   403,     4,    14,    20,    42,    46,    48,
02970       52,    53,    56,   141,   142,   145,   146,   147,   150,   159,
02971      174,   175,   214,   220,   245,   247,   248,   249,   250,   251,
02972      252,   253,   254,   255,   256,   257,   258,   259,   260,   261,
02973      262,   266,   268,   269,   279,   322,   324,   419,     5,    25,
02974       35,    60,   220,   295,   299,   301,   303,   306,   317,   331,
02975      332,   299,   332,     9,    16,    67,    68,    69,    71,    72,
02976       73,    74,    75,   219,   315,   245,   312,   313,   320,   321,
02977      324,   332,   388,   389,   390,   245,   388,   159,   261,   159,
02978      245,   387,   388,   387,   159,   247,   273,   256,   423,   424,
02979      425,   426,   427,   428,   429,   430,   431,   387,   159,   159,
02980       12,    51,    57,   365,   302,   303,   317,   397,   159,   191,
02981      201,   213,   235,     0,   159,    51,     4,   214,   315,   149,
02982      293,   220,    35,    57,   220,   220,   375,   376,   191,   193,
02983       37,    67,    68,    69,    70,    72,    75,   142,   281,   285,
02984      379,   293,    98,   145,   150,   159,   220,   277,   369,   370,
02985      371,   377,   380,   381,   385,   386,   408,   192,   309,   308,
02986      309,   307,   308,   309,   402,    68,    69,    72,    75,   186,
02987      214,   281,   314,   315,   157,   156,   156,    69,    72,   161,
02988      186,   214,   281,   292,   315,   159,   400,    54,   156,   406,
02989      414,   149,   149,   149,   191,   207,   149,   247,   159,   260,
02990      260,   260,   260,   260,   260,   191,   203,   260,   260,    17,
02991       36,    37,    70,    71,    73,    74,   280,   281,   282,   283,
02992      285,   154,   157,   153,   160,   171,   176,   177,   178,   179,
02993      180,   181,   182,   183,   184,   185,   170,   152,   151,   150,
02994      168,   169,   148,   149,   166,   167,   172,   173,   146,   147,
02995      143,   144,   145,   164,   165,   138,   140,   159,   163,   174,
02996      175,   272,   272,   272,   272,   159,   315,    35,   281,   369,
02997      371,   157,   292,   315,   246,   248,   249,   161,   161,   158,
02998       68,    69,    72,   313,   320,   324,    69,   281,   380,   320,
02999      320,   324,   157,   380,   203,   387,   158,   158,   213,   158,
03000      273,   154,   158,   153,   160,   171,   176,   177,   178,   179,
03001      180,   181,   182,   183,   184,   185,   170,   152,   151,   150,
03002      168,   169,   149,   166,   167,   162,   214,   302,   394,   395,
03003      396,   140,   192,   212,   220,   384,   385,   398,   399,   314,
03004      149,   314,   148,   154,   160,   398,   394,     8,    15,    18,
03005       27,    29,    30,    43,    50,    54,    65,    77,    78,    80,
03006      136,   156,   157,   214,   223,   224,   225,   227,   228,   231,
03007      232,   233,   234,   236,   237,   238,   239,   240,   241,   242,
03008      243,   413,     4,   149,   156,   293,   192,   198,   160,   191,
03009      210,   363,   364,   281,   191,   197,   296,   220,    67,    68,
03010       69,    70,    71,    72,    73,    74,    75,   278,   281,   282,
03011      285,   330,   281,   158,   158,   199,   186,   149,   366,   366,
03012      186,    69,    72,    51,    67,    68,    69,    72,    75,   379,
03013      400,   321,   159,   277,   382,   383,   385,    37,   278,   281,
03014      211,   154,   157,    90,   160,   406,   414,    54,   161,   214,
03015      286,   407,    94,   159,   384,   381,   386,   366,   193,    51,
03016       68,    69,    72,   156,   191,   316,   289,   366,    38,    39,
03017       40,    61,   220,   358,   359,   361,   193,    69,    72,    75,
03018      315,   157,   161,   191,   194,   406,   191,   405,   387,   387,
03019      387,    85,    86,   387,   191,   204,    87,    88,   140,   260,
03020      159,   263,   388,    17,    36,   140,   141,   142,   143,   144,
03021      145,   146,   147,   148,   149,   150,   151,   152,   154,   159,
03022      160,   163,   164,   166,   167,   168,   169,   170,   171,   172,
03023      173,   174,   175,   176,   177,   178,   179,   180,   181,   182,
03024      183,   184,   185,   284,   366,   366,    51,    70,   280,   102,
03025      103,   149,   247,   245,   247,   250,   247,   247,   247,   247,
03026      247,   247,   247,   247,   247,   247,   251,   252,   253,   254,
03027      255,   255,   256,   256,   256,   256,   257,   257,   258,   258,
03028      259,   259,   259,   260,   260,    51,   220,   267,   275,   276,
03029      277,   378,   245,   158,   273,   267,   275,     4,   160,   296,
03030      157,   157,   161,    69,   160,   160,   158,   159,   220,   384,
03031      385,   391,   392,   401,   260,   158,   247,   245,   423,   426,
03032      423,   423,   423,   423,   423,   423,   423,   423,   423,   423,
03033      427,   428,   429,   430,   431,   431,   256,   256,   256,   160,
03034      398,   158,   154,   162,   214,   246,   393,    94,    95,   159,
03035      278,   281,   399,   158,   159,   384,   401,   160,   210,   363,
03036      160,   423,   160,   158,   157,   157,   241,   315,   214,   226,
03037      245,   159,   239,   245,   295,   219,   241,   242,   159,   242,
03038      243,   242,   243,   201,   159,   242,   243,   159,   242,   243,
03039      241,   201,   235,   158,   363,   289,   296,    96,    97,   148,
03040      148,   154,    51,    67,    68,    69,    70,    71,    72,    73,
03041       74,   270,   271,   220,   157,   281,   366,   366,   366,    69,
03042       70,    72,    75,   330,   157,   388,   191,   209,   367,   368,
03043      186,   186,   366,   191,   196,   186,   366,   186,   382,   158,
03044      384,   400,   383,    51,   145,   278,   370,   159,   156,   247,
03045      410,   286,    67,    71,   220,   287,   288,   406,   400,   211,
03046       68,   281,   196,   366,   316,    24,    51,    60,   133,   157,
03047      159,   214,   220,   303,   306,   317,   331,   332,   334,   335,
03048      336,   337,   339,   344,   345,   346,   347,   348,   349,   350,
03049      361,   373,   374,   376,   402,   404,   155,   161,   214,   361,
03050      362,    69,    72,   281,   154,    61,   214,   360,    69,   281,
03051      366,   161,   358,   394,    10,   416,   417,   133,   148,   148,
03052      148,   261,   159,   148,    88,    89,   387,   245,   139,   191,
03053      208,   272,   213,   140,   140,   139,   158,   199,   196,   366,
03054      366,   161,   196,    67,    68,   142,   274,   281,   142,   139,
03055      158,   158,   296,   157,   247,   247,   220,   391,   394,   392,
03056      384,   401,   161,   247,   160,   162,   396,   139,   401,   159,
03057      387,   148,   387,   423,    53,    54,   154,   156,   157,   161,
03058      320,    65,   157,   157,   191,   205,   222,   415,   416,   157,
03059      201,    21,   244,   222,   191,   202,   222,   155,   157,   148,
03060      155,   157,   365,   397,   293,   293,   364,   196,   366,   366,
03061      366,    75,   297,   330,   366,   366,   157,   385,    92,    93,
03062      148,   148,   154,    70,   186,   158,   211,   196,   199,   321,
03063      273,   155,   410,   412,   406,   272,   272,    69,    72,   281,
03064      154,   211,    68,    70,   133,   214,   315,   325,   326,   327,
03065       51,   149,   155,   159,   220,   337,   340,   341,   342,   281,
03066      192,   349,   402,   157,   292,   155,   344,   361,    99,   220,
03067      351,   352,   354,   355,   356,   357,   377,   382,   409,   400,
03068      157,   154,   154,   161,   160,   358,   220,   366,    69,    72,
03069      359,   220,    69,   161,   358,   158,   159,   416,   155,   159,
03070      159,   159,   387,   159,   245,   387,   158,   158,   260,    89,
03071       91,   140,   264,   265,   385,   139,   139,    70,   280,   247,
03072      220,   277,   378,    67,    68,   274,   186,   142,   274,   274,
03073      157,   157,   158,   157,   281,   158,   158,   423,   247,   398,
03074       12,   159,    81,    82,   134,   158,   416,   201,   201,   242,
03075      243,   158,    77,    79,   157,   158,   293,    70,    72,   271,
03076      186,    75,   157,   423,   387,   209,   368,   366,    69,    70,
03077       72,    75,   278,   199,   158,   154,   411,   417,   272,   366,
03078       69,    72,   288,   366,   155,   160,   155,   154,   149,   363,
03079      340,    69,    72,   281,   343,   158,   158,   400,    51,    67,
03080       68,    69,    72,   278,   157,   161,   161,   278,   154,   157,
03081      100,   101,   160,   406,   414,   407,   159,   300,   338,   340,
03082      341,   372,   373,   376,   300,     4,    69,    72,   281,   366,
03083       69,    72,   281,   358,   191,   195,   162,   388,   418,   245,
03084      245,   245,   158,   245,   158,   158,   260,   387,   273,   245,
03085      140,   265,   366,   281,   191,   200,   274,   186,    53,   214,
03086      321,   420,   421,   158,   314,   245,   245,   388,   201,   201,
03087      201,   229,   245,   299,   191,   230,   201,   366,   366,   197,
03088      186,   186,   366,   366,   410,   155,   272,   272,   366,   246,
03089      327,   363,   148,   158,   366,    69,    72,   343,   158,   196,
03090      366,   157,   246,   161,   161,   353,   354,   355,   357,     4,
03091      246,   191,   338,   340,   154,   400,   366,    69,    72,   366,
03092       69,    72,   321,   420,   398,   158,   158,   158,   158,   158,
03093      158,   158,   139,   246,   200,   159,   420,   160,   158,   371,
03094      157,   230,   191,   206,   221,   197,   272,   148,   344,   366,
03095       70,   278,   246,   246,   158,   158,   372,   366,   366,   420,
03096      239,   272,   159,   263,   139,   158,   387,   422,   220,   277,
03097      157,   160,   230,   221,    83,    84,   135,   214,   157,   344,
03098      366,   157,   387,   272,   154,   158,   281,   247,   221,   157,
03099      245,   388,   226,   158,   387,   157,   226,   371,   158,   272,
03100      226,   158,   160,   158,   247
03101 };
03102 
03103 #define yyerrok         (yyerrstatus = 0)
03104 #define yyclearin       (yychar = YYEMPTY)
03105 #define YYEMPTY         (-2)
03106 #define YYEOF           0
03107 
03108 #define YYACCEPT        goto yyacceptlab
03109 #define YYABORT         goto yyabortlab
03110 #define YYERROR         goto yyerrorlab
03111 
03112 
03113 /* Like YYERROR except do call yyerror.  This remains here temporarily
03114    to ease the transition to the new meaning of YYERROR, for GCC.
03115    Once GCC version 2 has supplanted version 1, this can go.  */
03116 
03117 #define YYFAIL          goto yyerrlab
03118 
03119 #define YYRECOVERING()  (!!yyerrstatus)
03120 
03121 #define YYBACKUP(Token, Value)                                  \
03122 do                                                              \
03123   if (yychar == YYEMPTY && yylen == 1)                          \
03124     {                                                           \
03125       yychar = (Token);                                         \
03126       yylval = (Value);                                         \
03127       yytoken = YYTRANSLATE (yychar);                           \
03128       YYPOPSTACK (1);                                           \
03129       goto yybackup;                                            \
03130     }                                                           \
03131   else                                                          \
03132     {                                                           \
03133       yyerror (as_result, YY_("syntax error: cannot back up")); \
03134       YYERROR;                                                  \
03135     }                                                           \
03136 while (YYID (0))
03137 
03138 
03139 #define YYTERROR        1
03140 #define YYERRCODE       256
03141 
03142 
03143 /* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
03144    If N is 0, then set CURRENT to the empty location which ends
03145    the previous symbol: RHS[0] (always defined).  */
03146 
03147 #define YYRHSLOC(Rhs, K) ((Rhs)[K])
03148 #ifndef YYLLOC_DEFAULT
03149 # define YYLLOC_DEFAULT(Current, Rhs, N)                                \
03150     do                                                                  \
03151       if (YYID (N))                                                    \
03152         {                                                               \
03153           (Current).first_line   = YYRHSLOC (Rhs, 1).first_line;        \
03154           (Current).first_column = YYRHSLOC (Rhs, 1).first_column;      \
03155           (Current).last_line    = YYRHSLOC (Rhs, N).last_line;         \
03156           (Current).last_column  = YYRHSLOC (Rhs, N).last_column;       \
03157         }                                                               \
03158       else                                                              \
03159         {                                                               \
03160           (Current).first_line   = (Current).last_line   =              \
03161             YYRHSLOC (Rhs, 0).last_line;                                \
03162           (Current).first_column = (Current).last_column =              \
03163             YYRHSLOC (Rhs, 0).last_column;                              \
03164         }                                                               \
03165     while (YYID (0))
03166 #endif
03167 
03168 
03169 /* YY_LOCATION_PRINT -- Print the location on the stream.
03170    This macro was not mandated originally: define only if we know
03171    we won't break user code: when these are the locations we know.  */
03172 
03173 #ifndef YY_LOCATION_PRINT
03174 # if YYLTYPE_IS_TRIVIAL
03175 #  define YY_LOCATION_PRINT(File, Loc)                  \
03176      fprintf (File, "%d.%d-%d.%d",                      \
03177               (Loc).first_line, (Loc).first_column,     \
03178               (Loc).last_line,  (Loc).last_column)
03179 # else
03180 #  define YY_LOCATION_PRINT(File, Loc) ((void) 0)
03181 # endif
03182 #endif
03183 
03184 
03185 /* YYLEX -- calling `yylex' with the right arguments.  */
03186 
03187 #ifdef YYLEX_PARAM
03188 # define YYLEX yylex (&yylval, YYLEX_PARAM)
03189 #else
03190 # define YYLEX yylex (&yylval)
03191 #endif
03192 
03193 /* Enable debugging if requested.  */
03194 #if YYDEBUG
03195 
03196 # ifndef YYFPRINTF
03197 #  include <stdio.h> /* INFRINGES ON USER NAME SPACE */
03198 #  define YYFPRINTF fprintf
03199 # endif
03200 
03201 # define YYDPRINTF(Args)                        \
03202 do {                                            \
03203   if (yydebug)                                  \
03204     YYFPRINTF Args;                             \
03205 } while (YYID (0))
03206 
03207 # define YY_SYMBOL_PRINT(Title, Type, Value, Location)                    \
03208 do {                                                                      \
03209   if (yydebug)                                                            \
03210     {                                                                     \
03211       YYFPRINTF (stderr, "%s ", Title);                                   \
03212       yy_symbol_print (stderr,                                            \
03213                   Type, Value, as_result); \
03214       YYFPRINTF (stderr, "\n");                                           \
03215     }                                                                     \
03216 } while (YYID (0))
03217 
03218 
03219 /*--------------------------------.
03220 | Print this symbol on YYOUTPUT.  |
03221 `--------------------------------*/
03222 
03223 /*ARGSUSED*/
03224 #if (defined __STDC__ || defined __C99__FUNC__ \
03225      || defined __cplusplus || defined _MSC_VER)
03226 static void
03227 yy_symbol_value_print (FILE *yyoutput, int yytype, const YYSTYPE * const yyvaluep, ptr<as_base> & as_result)
03228 #else
03229 static void
03230 yy_symbol_value_print (yyoutput, yytype, yyvaluep, as_result)
03231     FILE *yyoutput;
03232     int yytype;
03233     const YYSTYPE * const yyvaluep;
03234     ptr<as_base> & as_result;
03235 #endif
03236 {
03237   if (!yyvaluep)
03238     return;
03239   YYUSE (as_result);
03240 # ifdef YYPRINT
03241   if (yytype < YYNTOKENS)
03242     YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
03243 # else
03244   YYUSE (yyoutput);
03245 # endif
03246   switch (yytype)
03247     {
03248       default:
03249         break;
03250     }
03251 }
03252 
03253 
03254 /*--------------------------------.
03255 | Print this symbol on YYOUTPUT.  |
03256 `--------------------------------*/
03257 
03258 #if (defined __STDC__ || defined __C99__FUNC__ \
03259      || defined __cplusplus || defined _MSC_VER)
03260 static void
03261 yy_symbol_print (FILE *yyoutput, int yytype, const YYSTYPE * const yyvaluep, ptr<as_base> & as_result)
03262 #else
03263 static void
03264 yy_symbol_print (yyoutput, yytype, yyvaluep, as_result)
03265     FILE *yyoutput;
03266     int yytype;
03267     const YYSTYPE * const yyvaluep;
03268     ptr<as_base> & as_result;
03269 #endif
03270 {
03271   if (yytype < YYNTOKENS)
03272     YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
03273   else
03274     YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
03275 
03276   yy_symbol_value_print (yyoutput, yytype, yyvaluep, as_result);
03277   YYFPRINTF (yyoutput, ")");
03278 }
03279 
03280 /*------------------------------------------------------------------.
03281 | yy_stack_print -- Print the state stack from its BOTTOM up to its |
03282 | TOP (included).                                                   |
03283 `------------------------------------------------------------------*/
03284 
03285 #if (defined __STDC__ || defined __C99__FUNC__ \
03286      || defined __cplusplus || defined _MSC_VER)
03287 static void
03288 yy_stack_print (yytype_int16 *bottom, yytype_int16 *top)
03289 #else
03290 static void
03291 yy_stack_print (bottom, top)
03292     yytype_int16 *bottom;
03293     yytype_int16 *top;
03294 #endif
03295 {
03296   YYFPRINTF (stderr, "Stack now");
03297   for (; bottom <= top; ++bottom)
03298     YYFPRINTF (stderr, " %d", *bottom);
03299   YYFPRINTF (stderr, "\n");
03300 }
03301 
03302 # define YY_STACK_PRINT(Bottom, Top)                            \
03303 do {                                                            \
03304   if (yydebug)                                                  \
03305     yy_stack_print ((Bottom), (Top));                           \
03306 } while (YYID (0))
03307 
03308 
03309 /*------------------------------------------------.
03310 | Report that the YYRULE is going to be reduced.  |
03311 `------------------------------------------------*/
03312 
03313 #if (defined __STDC__ || defined __C99__FUNC__ \
03314      || defined __cplusplus || defined _MSC_VER)
03315 static void
03316 yy_reduce_print (YYSTYPE *yyvsp, 
03317                    int yyrule, ptr<as_base> & as_result)
03318 #else
03319 static void
03320 yy_reduce_print (yyvsp, yyrule, as_result)
03321     YYSTYPE *yyvsp;
03322     
03323                    int yyrule;
03324     ptr<as_base> & as_result;
03325 #endif
03326 {
03327   int yynrhs = yyr2[yyrule];
03328   int yyi;
03329   unsigned long int yylno = yyrline[yyrule];
03330   YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n",
03331              yyrule - 1, yylno);
03332   /* The symbols being reduced.  */
03333   for (yyi = 0; yyi < yynrhs; yyi++)
03334     {
03335       fprintf (stderr, "   $%d = ", yyi + 1);
03336       yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi],
03337                        &(yyvsp[(yyi + 1) - (yynrhs)])
03338                                        , as_result);
03339       fprintf (stderr, "\n");
03340     }
03341 }
03342 
03343 # define YY_REDUCE_PRINT(Rule)          \
03344 do {                                    \
03345   if (yydebug)                          \
03346     yy_reduce_print (yyvsp, Rule, as_result); \
03347 } while (YYID (0))
03348 
03349 /* Nonzero means print parse trace.  It is left uninitialized so that
03350    multiple parsers can coexist.  */
03351 int yydebug;
03352 #else /* !YYDEBUG */
03353 # define YYDPRINTF(Args)
03354 # define YY_SYMBOL_PRINT(Title, Type, Value, Location)
03355 # define YY_STACK_PRINT(Bottom, Top)
03356 # define YY_REDUCE_PRINT(Rule)
03357 #endif /* !YYDEBUG */
03358 
03359 
03360 /* YYINITDEPTH -- initial size of the parser's stacks.  */
03361 #ifndef YYINITDEPTH
03362 # define YYINITDEPTH 200
03363 #endif
03364 
03365 /* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
03366    if the built-in stack extension method is used).
03367 
03368    Do not make this value too large; the results are undefined if
03369    YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH)
03370    evaluated with infinite-precision integer arithmetic.  */
03371 
03372 #ifndef YYMAXDEPTH
03373 # define YYMAXDEPTH 10000
03374 #endif
03375 
03376 
03377 
03378 #if YYERROR_VERBOSE
03379 
03380 # ifndef yystrlen
03381 #  if defined __GLIBC__ && defined _STRING_H
03382 #   define yystrlen strlen
03383 #  else
03384 /* Return the length of YYSTR.  */
03385 #if (defined __STDC__ || defined __C99__FUNC__ \
03386      || defined __cplusplus || defined _MSC_VER)
03387 static YYSIZE_T
03388 yystrlen (const char *yystr)
03389 #else
03390 static YYSIZE_T
03391 yystrlen (yystr)
03392     const char *yystr;
03393 #endif
03394 {
03395   YYSIZE_T yylen;
03396   for (yylen = 0; yystr[yylen]; yylen++)
03397     continue;
03398   return yylen;
03399 }
03400 #  endif
03401 # endif
03402 
03403 # ifndef yystpcpy
03404 #  if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
03405 #   define yystpcpy stpcpy
03406 #  else
03407 /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
03408    YYDEST.  */
03409 #if (defined __STDC__ || defined __C99__FUNC__ \
03410      || defined __cplusplus || defined _MSC_VER)
03411 static char *
03412 yystpcpy (char *yydest, const char *yysrc)
03413 #else
03414 static char *
03415 yystpcpy (yydest, yysrc)
03416     char *yydest;
03417     const char *yysrc;
03418 #endif
03419 {
03420   char *yyd = yydest;
03421   const char *yys = yysrc;
03422 
03423   while ((*yyd++ = *yys++) != '\0')
03424     continue;
03425 
03426   return yyd - 1;
03427 }
03428 #  endif
03429 # endif
03430 
03431 # ifndef yytnamerr
03432 /* Copy to YYRES the contents of YYSTR after stripping away unnecessary
03433    quotes and backslashes, so that it's suitable for yyerror.  The
03434    heuristic is that double-quoting is unnecessary unless the string
03435    contains an apostrophe, a comma, or backslash (other than
03436    backslash-backslash).  YYSTR is taken from yytname.  If YYRES is
03437    null, do not copy; instead, return the length of what the result
03438    would have been.  */
03439 static YYSIZE_T
03440 yytnamerr (char *yyres, const char *yystr)
03441 {
03442   if (*yystr == '"')
03443     {
03444       YYSIZE_T yyn = 0;
03445       char const *yyp = yystr;
03446 
03447       for (;;)
03448         switch (*++yyp)
03449           {
03450           case '\'':
03451           case ',':
03452             goto do_not_strip_quotes;
03453 
03454           case '\\':
03455             if (*++yyp != '\\')
03456               goto do_not_strip_quotes;
03457             /* Fall through.  */
03458           default:
03459             if (yyres)
03460               yyres[yyn] = *yyp;
03461             yyn++;
03462             break;
03463 
03464           case '"':
03465             if (yyres)
03466               yyres[yyn] = '\0';
03467             return yyn;
03468           }
03469     do_not_strip_quotes: ;
03470     }
03471 
03472   if (! yyres)
03473     return yystrlen (yystr);
03474 
03475   return yystpcpy (yyres, yystr) - yyres;
03476 }
03477 # endif
03478 
03479 /* Copy into YYRESULT an error message about the unexpected token
03480    YYCHAR while in state YYSTATE.  Return the number of bytes copied,
03481    including the terminating null byte.  If YYRESULT is null, do not
03482    copy anything; just return the number of bytes that would be
03483    copied.  As a special case, return 0 if an ordinary "syntax error"
03484    message will do.  Return YYSIZE_MAXIMUM if overflow occurs during
03485    size calculation.  */
03486 static YYSIZE_T
03487 yysyntax_error (char *yyresult, int yystate, int yychar)
03488 {
03489   int yyn = yypact[yystate];
03490 
03491   if (! (YYPACT_NINF < yyn && yyn <= YYLAST))
03492     return 0;
03493   else
03494     {
03495       int yytype = YYTRANSLATE (yychar);
03496       YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]);
03497       YYSIZE_T yysize = yysize0;
03498       YYSIZE_T yysize1;
03499       int yysize_overflow = 0;
03500       enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
03501       char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
03502       int yyx;
03503 
03504 # if 0
03505       /* This is so xgettext sees the translatable formats that are
03506          constructed on the fly.  */
03507       YY_("syntax error, unexpected %s");
03508       YY_("syntax error, unexpected %s, expecting %s");
03509       YY_("syntax error, unexpected %s, expecting %s or %s");
03510       YY_("syntax error, unexpected %s, expecting %s or %s or %s");
03511       YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s");
03512 # endif
03513       char *yyfmt;
03514       char const *yyf;
03515       static char const yyunexpected[] = "syntax error, unexpected %s";
03516       static char const yyexpecting[] = ", expecting %s";
03517       static char const yyor[] = " or %s";
03518       char yyformat[sizeof yyunexpected
03519                     + sizeof yyexpecting - 1
03520                     + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2)
03521                        * (sizeof yyor - 1))];
03522       char const *yyprefix = yyexpecting;
03523 
03524       /* Start YYX at -YYN if negative to avoid negative indexes in
03525          YYCHECK.  */
03526       int yyxbegin = yyn < 0 ? -yyn : 0;
03527 
03528       /* Stay within bounds of both yycheck and yytname.  */
03529       int yychecklim = YYLAST - yyn + 1;
03530       int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
03531       int yycount = 1;
03532 
03533       yyarg[0] = yytname[yytype];
03534       yyfmt = yystpcpy (yyformat, yyunexpected);
03535 
03536       for (yyx = yyxbegin; yyx < yyxend; ++yyx)
03537         if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
03538           {
03539             if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
03540               {
03541                 yycount = 1;
03542                 yysize = yysize0;
03543                 yyformat[sizeof yyunexpected - 1] = '\0';
03544                 break;
03545               }
03546             yyarg[yycount++] = yytname[yyx];
03547             yysize1 = yysize + yytnamerr (0, yytname[yyx]);
03548             yysize_overflow |= (yysize1 < yysize);
03549             yysize = yysize1;
03550             yyfmt = yystpcpy (yyfmt, yyprefix);
03551             yyprefix = yyor;
03552           }
03553 
03554       yyf = YY_(yyformat);
03555       yysize1 = yysize + yystrlen (yyf);
03556       yysize_overflow |= (yysize1 < yysize);
03557       yysize = yysize1;
03558 
03559       if (yysize_overflow)
03560         return YYSIZE_MAXIMUM;
03561 
03562       if (yyresult)
03563         {
03564           /* Avoid sprintf, as that infringes on the user's name space.
03565              Don't have undefined behavior even if the translation
03566              produced a string with the wrong number of "%s"s.  */
03567           char *yyp = yyresult;
03568           int yyi = 0;
03569           while ((*yyp = *yyf) != '\0')
03570             {
03571               if (*yyp == '%' && yyf[1] == 's' && yyi < yycount)
03572                 {
03573                   yyp += yytnamerr (yyp, yyarg[yyi++]);
03574                   yyf += 2;
03575                 }
03576               else
03577                 {
03578                   yyp++;
03579                   yyf++;
03580                 }
03581             }
03582         }
03583       return yysize;
03584     }
03585 }
03586 #endif /* YYERROR_VERBOSE */
03587 
03588 
03589 /*-----------------------------------------------.
03590 | Release the memory associated to this symbol.  |
03591 `-----------------------------------------------*/
03592 
03593 /*ARGSUSED*/
03594 #if (defined __STDC__ || defined __C99__FUNC__ \
03595      || defined __cplusplus || defined _MSC_VER)
03596 static void
03597 yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, ptr<as_base> & as_result)
03598 #else
03599 static void
03600 yydestruct (yymsg, yytype, yyvaluep, as_result)
03601     const char *yymsg;
03602     int yytype;
03603     YYSTYPE *yyvaluep;
03604     ptr<as_base> & as_result;
03605 #endif
03606 {
03607   YYUSE (yyvaluep);
03608   YYUSE (as_result);
03609 
03610   if (!yymsg)
03611     yymsg = "Deleting";
03612   YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
03613 
03614   switch (yytype)
03615     {
03616 
03617       default:
03618         break;
03619     }
03620 }
03621 
03622 
03623 /* Prevent warnings from -Wmissing-prototypes.  */
03624 
03625 #ifdef YYPARSE_PARAM
03626 #if defined __STDC__ || defined __cplusplus
03627 int yyparse (void *YYPARSE_PARAM);
03628 #else
03629 int yyparse ();
03630 #endif
03631 #else /* ! YYPARSE_PARAM */
03632 #if defined __STDC__ || defined __cplusplus
03633 int yyparse (ptr<as_base> & as_result);
03634 #else
03635 int yyparse ();
03636 #endif
03637 #endif /* ! YYPARSE_PARAM */
03638 
03639 
03640 
03641 
03642 
03643 
03644 /*----------.
03645 | yyparse.  |
03646 `----------*/
03647 
03648 #ifdef YYPARSE_PARAM
03649 #if (defined __STDC__ || defined __C99__FUNC__ \
03650      || defined __cplusplus || defined _MSC_VER)
03651 int
03652 yyparse (void *YYPARSE_PARAM)
03653 #else
03654 int
03655 yyparse (YYPARSE_PARAM)
03656     void *YYPARSE_PARAM;
03657 #endif
03658 #else /* ! YYPARSE_PARAM */
03659 #if (defined __STDC__ || defined __C99__FUNC__ \
03660      || defined __cplusplus || defined _MSC_VER)
03661 int
03662 yyparse (ptr<as_base> & as_result)
03663 #else
03664 int
03665 yyparse (as_result)
03666     ptr<as_base> & as_result;
03667 #endif
03668 #endif
03669 {
03670   /* The look-ahead symbol.  */
03671 int yychar;
03672 
03673 /* The semantic value of the look-ahead symbol.  */
03674 YYSTYPE yylval;
03675 
03676 /* Number of syntax errors so far.  */
03677 int yynerrs;
03678 
03679   int yystate;
03680   int yyn;
03681   int yyresult;
03682   /* Number of tokens to shift before error messages enabled.  */
03683   int yyerrstatus;
03684   /* Look-ahead token as an internal (translated) token number.  */
03685   int yytoken = 0;
03686 #if YYERROR_VERBOSE
03687   /* Buffer for error messages, and its allocated size.  */
03688   char yymsgbuf[128];
03689   char *yymsg = yymsgbuf;
03690   YYSIZE_T yymsg_alloc = sizeof yymsgbuf;
03691 #endif
03692 
03693   /* Three stacks and their tools:
03694      `yyss': related to states,
03695      `yyvs': related to semantic values,
03696      `yyls': related to locations.
03697 
03698      Refer to the stacks thru separate pointers, to allow yyoverflow
03699      to reallocate them elsewhere.  */
03700 
03701   /* The state stack.  */
03702   yytype_int16 yyssa[YYINITDEPTH];
03703   yytype_int16 *yyss = yyssa;
03704   yytype_int16 *yyssp;
03705 
03706   /* The semantic value stack.  */
03707   YYSTYPE yyvsa[YYINITDEPTH];
03708   YYSTYPE *yyvs = yyvsa;
03709   YYSTYPE *yyvsp;
03710 
03711 
03712 
03713 #define YYPOPSTACK(N)   (yyvsp -= (N), yyssp -= (N))
03714 
03715   YYSIZE_T yystacksize = YYINITDEPTH;
03716 
03717   /* The variables used to return semantic value and location from the
03718      action routines.  */
03719   YYSTYPE yyval;
03720 
03721 
03722   /* The number of symbols on the RHS of the reduced rule.
03723      Keep to zero when no symbol should be popped.  */
03724   int yylen = 0;
03725 
03726   YYDPRINTF ((stderr, "Starting parse\n"));
03727 
03728   yystate = 0;
03729   yyerrstatus = 0;
03730   yynerrs = 0;
03731   yychar = YYEMPTY;             /* Cause a token to be read.  */
03732 
03733   /* Initialize stack pointers.
03734      Waste one element of value and location stack
03735      so that they stay on the same level as the state stack.
03736      The wasted elements are never initialized.  */
03737 
03738   yyssp = yyss;
03739   yyvsp = yyvs;
03740 
03741   goto yysetstate;
03742 
03743 /*------------------------------------------------------------.
03744 | yynewstate -- Push a new state, which is found in yystate.  |
03745 `------------------------------------------------------------*/
03746  yynewstate:
03747   /* In all cases, when you get here, the value and location stacks
03748      have just been pushed.  So pushing a state here evens the stacks.  */
03749   yyssp++;
03750 
03751  yysetstate:
03752   *yyssp = yystate;
03753 
03754   if (yyss + yystacksize - 1 <= yyssp)
03755     {
03756       /* Get the current used size of the three stacks, in elements.  */
03757       YYSIZE_T yysize = yyssp - yyss + 1;
03758 
03759 #ifdef yyoverflow
03760       {
03761         /* Give user a chance to reallocate the stack.  Use copies of
03762            these so that the &'s don't force the real ones into
03763            memory.  */
03764         YYSTYPE *yyvs1 = yyvs;
03765         yytype_int16 *yyss1 = yyss;
03766 
03767 
03768         /* Each stack pointer address is followed by the size of the
03769            data in use in that stack, in bytes.  This used to be a
03770            conditional around just the two extra args, but that might
03771            be undefined if yyoverflow is a macro.  */
03772         yyoverflow (YY_("memory exhausted"),
03773                     &yyss1, yysize * sizeof (*yyssp),
03774                     &yyvs1, yysize * sizeof (*yyvsp),
03775 
03776                     &yystacksize);
03777 
03778         yyss = yyss1;
03779         yyvs = yyvs1;
03780       }
03781 #else /* no yyoverflow */
03782 # ifndef YYSTACK_RELOCATE
03783       goto yyexhaustedlab;
03784 # else
03785       /* Extend the stack our own way.  */
03786       if (YYMAXDEPTH <= yystacksize)
03787         goto yyexhaustedlab;
03788       yystacksize *= 2;
03789       if (YYMAXDEPTH < yystacksize)
03790         yystacksize = YYMAXDEPTH;
03791 
03792       {
03793         yytype_int16 *yyss1 = yyss;
03794         union yyalloc *yyptr =
03795           (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
03796         if (! yyptr)
03797           goto yyexhaustedlab;
03798         YYSTACK_RELOCATE (yyss);
03799         YYSTACK_RELOCATE (yyvs);
03800 
03801 #  undef YYSTACK_RELOCATE
03802         if (yyss1 != yyssa)
03803           YYSTACK_FREE (yyss1);
03804       }
03805 # endif
03806 #endif /* no yyoverflow */
03807 
03808       yyssp = yyss + yysize - 1;
03809       yyvsp = yyvs + yysize - 1;
03810 
03811 
03812       YYDPRINTF ((stderr, "Stack size increased to %lu\n",
03813                   (unsigned long int) yystacksize));
03814 
03815       if (yyss + yystacksize - 1 <= yyssp)
03816         YYABORT;
03817     }
03818 
03819   YYDPRINTF ((stderr, "Entering state %d\n", yystate));
03820 
03821   goto yybackup;
03822 
03823 /*-----------.
03824 | yybackup.  |
03825 `-----------*/
03826 yybackup:
03827 
03828   /* Do appropriate processing given the current state.  Read a
03829      look-ahead token if we need one and don't already have one.  */
03830 
03831   /* First try to decide what to do without reference to look-ahead token.  */
03832   yyn = yypact[yystate];
03833   if (yyn == YYPACT_NINF)
03834     goto yydefault;
03835 
03836   /* Not known => get a look-ahead token if don't already have one.  */
03837 
03838   /* YYCHAR is either YYEMPTY or YYEOF or a valid look-ahead symbol.  */
03839   if (yychar == YYEMPTY)
03840     {
03841       YYDPRINTF ((stderr, "Reading a token: "));
03842       yychar = YYLEX;
03843     }
03844 
03845   if (yychar <= YYEOF)
03846     {
03847       yychar = yytoken = YYEOF;
03848       YYDPRINTF ((stderr, "Now at end of input.\n"));
03849     }
03850   else
03851     {
03852       yytoken = YYTRANSLATE (yychar);
03853       YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
03854     }
03855 
03856   /* If the proper action on seeing token YYTOKEN is to reduce or to
03857      detect an error, take that action.  */
03858   yyn += yytoken;
03859   if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
03860     goto yydefault;
03861   yyn = yytable[yyn];
03862   if (yyn <= 0)
03863     {
03864       if (yyn == 0 || yyn == YYTABLE_NINF)
03865         goto yyerrlab;
03866       yyn = -yyn;
03867       goto yyreduce;
03868     }
03869 
03870   if (yyn == YYFINAL)
03871     YYACCEPT;
03872 
03873   /* Count tokens shifted since error; after three, turn off error
03874      status.  */
03875   if (yyerrstatus)
03876     yyerrstatus--;
03877 
03878   /* Shift the look-ahead token.  */
03879   YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
03880 
03881   /* Discard the shifted token unless it is eof.  */
03882   if (yychar != YYEOF)
03883     yychar = YYEMPTY;
03884 
03885   yystate = yyn;
03886   *++yyvsp = yylval;
03887 
03888   goto yynewstate;
03889 
03890 
03891 /*-----------------------------------------------------------.
03892 | yydefault -- do the default action for the current state.  |
03893 `-----------------------------------------------------------*/
03894 yydefault:
03895   yyn = yydefact[yystate];
03896   if (yyn == 0)
03897     goto yyerrlab;
03898   goto yyreduce;
03899 
03900 
03901 /*-----------------------------.
03902 | yyreduce -- Do a reduction.  |
03903 `-----------------------------*/
03904 yyreduce:
03905   /* yyn is the number of a rule to reduce with.  */
03906   yylen = yyr2[yyn];
03907 
03908   /* If YYLEN is nonzero, implement the default value of the action:
03909      `$$ = $1'.
03910 
03911      Otherwise, the following line sets YYVAL to garbage.
03912      This behavior is undocumented and Bison
03913      users should not rely upon it.  Assigning to YYVAL
03914      unconditionally makes the parser a bit smaller, and it avoids a
03915      GCC warning that YYVAL may be used uninitialized.  */
03916   yyval = yyvsp[1-yylen];
03917 
03918 
03919   YY_REDUCE_PRINT (yyn);
03920   switch (yyn)
03921     {
03922         case 2:
03923 #line 412 "parser.y"
03924     {
03925                 lassert3( yychar == YYEMPTY, "Lookahead is supposed to be empty.", loc((yyvsp[(1) - (1)].sel(as_no_token))) );
03926                 (yyval.sel(as_no_token)) = (yyvsp[(1) - (1)].sel(as_no_token));
03927           ;}
03928     break;
03929 
03930   case 3:
03931 #line 420 "parser.y"
03932     {
03933                 lassert3( yychar != YYEMPTY, "Lookahead is not supposed to be empty.", loc((yyvsp[(1) - (1)].sel(as_no_token))) );
03934                 (yyval.sel(as_no_token)) = (yyvsp[(1) - (1)].sel(as_no_token));
03935           ;}
03936     break;
03937 
03938   case 4:
03939 #line 428 "parser.y"
03940     { hinter::qual_scope_set_root(); ;}
03941     break;
03942 
03943   case 8:
03944 #line 448 "parser.y"
03945     { hinter::namespace_mode_set(true); ;}
03946     break;
03947 
03948   case 9:
03949 #line 454 "parser.y"
03950     { hinter::namespace_mode_set(false); ;}
03951     break;
03952 
03953   case 10:
03954 #line 462 "parser.y"
03955     {
03956                 // for simplicity, there is one nonterminal for both cases:
03957                 //   with and without the lookahead token read
03958                 if (yychar != YYEMPTY)
03959                         clear_lookahead();
03960                 hinter::qual_scope_set( NULL );
03961           ;}
03962     break;
03963 
03964   case 12:
03965 #line 480 "parser.y"
03966     {
03967                 int next_val = manager::peek()->type_get();
03968                 switch (next_val) {
03969                         case TOK_BREAK:
03970                         case TOK_CATCH:
03971                         case TOK_CONTINUE:
03972                         case TOK_DO:
03973                         case TOK_ELSE:
03974                         case TOK_FOR:
03975                         case TOK_GOTO:
03976                         case TOK_IF:
03977                         case TOK_RETURN:
03978                         case TOK_SWITCH:
03979                         case TOK_TRY:
03980                         case TOK_WHILE:
03981                         case TOK_SEMICOLON:
03982                         case TOK_EOF:
03983                         case TOK_LEFT_BRACE:
03984                         case TOK_RIGHT_BRACE:
03985                                 /* no ambiguity here */
03986                                 break;
03987                         case TOK_PAD_LABEL:
03988                         case TOK_PAD_BLOCK_DECL:
03989                         case TOK_PAD_EXPR_STMT:
03990                                 /* ambiguity already resolved */
03991                                 break;
03992                         default:
03993                                 /* pad tokens that are allowed in this context are handled above */
03994                                 lassert2( is_not_pad(next_val), "Illegal pad token." );
03995 
03996                                 try_begin( "expr_stmt_vs_block_decl_vs_label" );
03997                                 try_and_commit( TOK_START_LABEL, TOK_PAD_LABEL, r1 );
03998                                 try_and_commit( TOK_START_BLOCK_DECL, TOK_PAD_BLOCK_DECL, r2 );
03999                                 try_and_commit( TOK_START_EXPR_STMT, TOK_PAD_EXPR_STMT, r3 );
04000                                 /* all tries failed, report the errors */
04001                                 ptr<bison_pack_token> err_pack = manager::pack( TOK_PACK_ERROR_STMT, NULL );
04002                                 syntax_error::disa_stmt( err_pack, loc(r2->last_token_get()),
04003                                                 loc(r3->last_token_get()) );
04004                                 try_end_skip();
04005                 }
04006           ;}
04007     break;
04008 
04009   case 13:
04010 #line 525 "parser.y"
04011     {
04012                 int next_val = manager::peek()->type_get();
04013                 if (is_not_pad(next_val) && next_val != TOK_SEMICOLON ) {
04014                         try_begin( "expr_stmt_vs_simple_decl" );
04015                         /* [6.8/1] */
04016                         try_and_commit( TOK_START_SIMPLE_DECL, TOK_PAD_SIMPLE_DECL, r1 );
04017                         try_and_commit( TOK_START_EXPR_STMT, TOK_PAD_EXPR_STMT, r2 );
04018                         try_end_fail();
04019                 }
04020           ;}
04021     break;
04022 
04023   case 14:
04024 #line 539 "parser.y"
04025     {
04026                 if (is_not_pad(manager::peek()->type_get())) {
04027                         try_begin( "cast_expr_vs_expr_in_pars" );
04028                         /*
04029                          * [8.2/2] and examples therein
04030                          * "(T())+4" is a funny example.
04031                          * hint: [5.3.1/6], compare with "((T()))+4"
04032                          */
04033                         try_and_commit( TOK_START_TYPE_ID_RPAR_CAST_EXPR,
04034                                                 TOK_PAD_TYPE_ID_RPAR_CAST_EXPR, r1 );
04035                         try_and_commit( TOK_START_EXPR_RPAR, TOK_PAD_EXPR_RPAR, r2 );
04036                         try_end_fail();
04037                 }
04038           ;}
04039     break;
04040 
04041   case 15:
04042 #line 557 "parser.y"
04043     {
04044                 if (is_not_pad(manager::peek()->type_get())) {
04045                         try_begin( "expr_vs_type_id" );
04046                         /* [8.2/2] and examples therein */
04047                         try_and_commit( TOK_START_TYPE_ID_RPAR, TOK_PAD_TYPE_ID_RPAR, r1 );
04048                         try_and_commit( TOK_START_EXPR_RPAR, TOK_PAD_EXPR_RPAR, r2 );
04049                         try_end_fail();
04050                 }
04051           ;}
04052     break;
04053 
04054   case 16:
04055 #line 570 "parser.y"
04056     {
04057                 ptr<source_location> prev_loc = loc(manager::prev_yylex());
04058                 int next_val = manager::peek()->type_get();
04059                 if (is_not_pad(next_val)) {
04060                         try_begin( "condition" );
04061                         // [6.4/5]
04062                         try_and_commit( TOK_START_COND_DECL, TOK_PAD_COND_DECL, r1 );
04063                         try_and_commit( TOK_START_COND_EXPR, TOK_PAD_COND_EXPR, r2 );
04064                         /* error... */
04065                         ptr<bison_pack_token> err_pack =
04066                                 manager::pack( TOK_PACK_ERROR_COND, prev_loc );
04067                         syntax_error::condition( err_pack, loc(r1->last_token_get()),
04068                                         loc(r2->last_token_get()) );
04069                         try_end_skip();
04070                 }
04071           ;}
04072     break;
04073 
04074   case 17:
04075 #line 590 "parser.y"
04076     {
04077                 ptr<source_location> prev_loc = loc(manager::prev_yylex());
04078                 int next_val = manager::peek()->type_get();
04079                 if (is_not_pad(next_val) && next_val != TOK_SEMICOLON ) {
04080                         try_begin( "condition" );
04081                         try_and_commit( TOK_START_FOR_COND_DECL, TOK_PAD_FOR_COND_DECL, r1 );
04082                         try_and_commit( TOK_START_FOR_COND_EXPR, TOK_PAD_FOR_COND_EXPR, r2 );
04083                         /* error... */
04084                         ptr<bison_pack_token> err_pack =
04085                                 manager::pack( TOK_PACK_ERROR_FOR_COND, prev_loc );
04086                         syntax_error::condition( err_pack, loc(r1->last_token_get()),
04087                                         loc(r2->last_token_get()) );
04088                         try_end_skip();
04089                 }
04090           ;}
04091     break;
04092 
04093   case 18:
04094 #line 609 "parser.y"
04095     {
04096                 if (is_not_pad(manager::peek()->type_get())) {
04097                         try_begin( "sizeof" );
04098                         /* [8.2/2] and examples therein */
04099                         try_and_commit( TOK_START_SIZEOF_TYPE_ID, TOK_PAD_SIZEOF_TYPE_ID, r2 );
04100                         try_and_commit( TOK_START_SIZEOF_EXPR, TOK_PAD_SIZEOF_EXPR, r1 );
04101                         try_end_fail();
04102                 }
04103           ;}
04104     break;
04105 
04106   case 19:
04107 #line 622 "parser.y"
04108     {
04109                 if (is_not_pad(manager::peek()->type_get())) {
04110                         try_begin( "expr_list_vs_type_id" );
04111                         /* [8.2/2] and examples therein */
04112                         try_and_commit( TOK_START_TYPE_ID_RPAR, TOK_PAD_TYPE_ID_RPAR, r1 );
04113                         try_and_commit( TOK_START_EXPR_LIST_RPAR, TOK_PAD_EXPR_LIST_RPAR, r2 );
04114                         try_end_fail();
04115                 }
04116           ;}
04117     break;
04118 
04119   case 20:
04120 #line 635 "parser.y"
04121     {
04122                 int next_val = manager::peek()->type_get();
04123                 if (is_not_pad(next_val) && next_val != TOK_GT ) {
04124                         try_begin( "templ_arg" );
04125                         /* [8.2/2] and examples therein */
04126                         try_and_commit( TOK_START_TEMPL_ARG_TYPE_ID, TOK_PAD_TEMPL_ARG_TYPE_ID, r1 );
04127                         try_and_commit( TOK_START_TEMPL_ARG_EXPR, TOK_PAD_TEMPL_ARG_EXPR, r2 );
04128                         try_end_fail();
04129                 }
04130           ;}
04131     break;
04132 
04133   case 21:
04134 #line 649 "parser.y"
04135     {
04136                 int next_val = manager::peek()->type_get();
04137                 // when it is explicit specialization, do nothing
04138                 if (is_not_pad(next_val) && next_val != TOK_GT) {
04139                         try_begin( "templ_param" );
04140                         // [14.1/3]
04141                         try_and_commit( TOK_START_TEMPL_PARAM_TYPE, TOK_PAD_TEMPL_PARAM_TYPE, r1 );
04142                         try_and_commit( TOK_START_TEMPL_PARAM_NONTYPE, TOK_PAD_TEMPL_PARAM_NONTYPE, r2 );
04143                         try_end_fail();
04144                 }
04145           ;}
04146     break;
04147 
04148   case 22:
04149 #line 670 "parser.y"
04150     {
04151                 if (yychar != YYEMPTY)
04152                         clear_lookahead();
04153                 int next_val = manager::peek()->type_get();
04154                 if (next_val == TOK_LEFT_PAR) {
04155                         try_begin( "pdc_vs_expr_list" );
04156                         // [8.2/1]
04157                         try_and_commit( TOK_START_PARAM_DECL_CLAUSE, TOK_PAD_PARAM_DECL_CLAUSE, r1 );
04158                         try_and_commit( TOK_START_LPAR_EXPR_LIST_RPAR, TOK_PAD_LPAR_EXPR_LIST_RPAR, r2 );
04159                         try_end_fail();
04160                 } else {
04161                         /* if it is a pad, it must be one of those two */
04162                         lassert( is_not_pad(next_val) ||
04163                                 next_val == TOK_PAD_PARAM_DECL_CLAUSE ||
04164                                 next_val == TOK_PAD_LPAR_EXPR_LIST_RPAR );
04165                 }
04166         ;}
04167     break;
04168 
04169   case 23:
04170 #line 690 "parser.y"
04171     {
04172         // either the right pad, or '(' must be in the lookahead
04173         if (yychar == TOK_LEFT_PAR) {
04174                 clear_lookahead();
04175                 try_begin( "pdc_vs_param_dcltor" );
04176                 // [8.2/7]
04177                 try_and_commit( TOK_START_PARAM_DECL_CLAUSE, TOK_PAD_PARAM_DECL_CLAUSE, r1 );
04178                 try_and_commit( TOK_START_PARAM_DCLTOR, TOK_PAD_PARAM_DCLTOR, r2 );
04179                 try_end_fail();
04180         } else
04181                 lassert( yychar == TOK_PAD_PARAM_DECL_CLAUSE || yychar == TOK_PAD_PARAM_DCLTOR );
04182         ;}
04183     break;
04184 
04185   case 24:
04186 #line 707 "parser.y"
04187     {
04188                 if (yychar == YYEMPTY)
04189                         (yyval.sel(as_no_token)) = as_no_token::create( loc(manager::peek()) );
04190                 else {
04191                         /* we could use yylval and cast it, but this is cleaner probably */
04192                         (yyval.sel(as_no_token)) = as_no_token::create( loc(manager::prev_yylex()) );
04193                 }
04194           ;}
04195     break;
04196 
04197   case 25:
04198 #line 723 "parser.y"
04199     { (yyval.sel(as_no_token)) = (yyvsp[(1) - (1)].sel(as_no_token)); ;}
04200     break;
04201 
04202   case 26:
04203 #line 756 "parser.y"
04204     {
04205                 lassert2( false, "The parser should always see at least one token." );
04206                 /* an ugly hack to supress the warning; see parser.cc too */
04207                 goto yyerrlab1; // we never get here
04208           ;}
04209     break;
04210 
04211   case 27:
04212 #line 761 "parser.y"
04213     { as_result = (yyvsp[(2) - (2)].sel(as_declaration_seq)); ;}
04214     break;
04215 
04216   case 28:
04217 #line 762 "parser.y"
04218     { YYACCEPT; ;}
04219     break;
04220 
04221   case 59:
04222 #line 808 "parser.y"
04223     { as_result = (yyvsp[(2) - (2)].sel(as_statement_seq)); ;}
04224     break;
04225 
04226   case 60:
04227 #line 813 "parser.y"
04228     { (yyval.sel(as_declaration_seq)) = (yyvsp[(1) - (1)].sel(as_declaration_seq)); ;}
04229     break;
04230 
04231   case 61:
04232 #line 818 "parser.y"
04233     { (yyval.sel(as_labeled_statement)) = as_identifier_labeled_statement::create( loc((yyvsp[(1) - (2)].sel(as_identifier))), DUMMY_STMT, (yyvsp[(1) - (2)].sel(as_identifier)) ); ;}
04234     break;
04235 
04236   case 62:
04237 #line 820 "parser.y"
04238     { (yyval.sel(as_labeled_statement)) = as_case_labeled_statement::create( loc((yyvsp[(1) - (3)].sel(bison_token))), DUMMY_STMT, (yyvsp[(2) - (3)].sel(as_constant_expression)) ); ;}
04239     break;
04240 
04241   case 63:
04242 #line 822 "parser.y"
04243     { (yyval.sel(as_labeled_statement)) = as_default_labeled_statement::create( loc((yyvsp[(1) - (2)].sel(bison_token))), DUMMY_STMT ); ;}
04244     break;
04245 
04246   case 64:
04247 #line 828 "parser.y"
04248     { (yyval.sel(as_name)) = CURR_CTX( loc((yyvsp[(1) - (1)].sel(as_no_token))) ); ;}
04249     break;
04250 
04251   case 65:
04252 #line 830 "parser.y"
04253     { (yyval.sel(as_name)) = GLOB_CTX( loc((yyvsp[(1) - (2)].sel(bison_token))) ); ;}
04254     break;
04255 
04256   case 66:
04257 #line 836 "parser.y"
04258     { (yyval.sel(as_condition)) = as_empty_condition::create( loc((yyvsp[(2) - (2)].sel(as_no_token))) ); ;}
04259     break;
04260 
04261   case 67:
04262 #line 838 "parser.y"
04263     { (yyval.sel(as_condition)) = as_condition_expression::create( loc((yyvsp[(3) - (3)].sel(as_expression))), (yyvsp[(3) - (3)].sel(as_expression)) ); ;}
04264     break;
04265 
04266   case 68:
04267 #line 840 "parser.y"
04268     {
04269                 (yyval.sel(as_condition)) = as_condition_declaration::create( loc((yyvsp[(3) - (6)].sel(as_type_specifier_seq))), UNWRAP((yyvsp[(3) - (6)].sel(as_type_specifier_seq))), (yyvsp[(4) - (6)].sel(as_declarator)), (yyvsp[(6) - (6)].sel(as_expression)) );
04270                 sa_statements::instance()->condition_decl(loc((yyvsp[(3) - (6)].sel(as_type_specifier_seq))), (yyvsp[(6) - (6)].sel(as_expression)));
04271           ;}
04272     break;
04273 
04274   case 69:
04275 #line 845 "parser.y"
04276     {
04277                 // create empty expression instead of the invalid one
04278                 (yyval.sel(as_condition)) = as_empty_condition::create( loc((yyvsp[(2) - (2)].sel(bison_pack_token))) );
04279           ;}
04280     break;
04281 
04282   case 70:
04283 #line 853 "parser.y"
04284     { (yyval.sel(as_condition)) = as_condition_expression::create( loc((yyvsp[(3) - (3)].sel(as_expression))), (yyvsp[(3) - (3)].sel(as_expression)) ); ;}
04285     break;
04286 
04287   case 71:
04288 #line 855 "parser.y"
04289     {
04290                 (yyval.sel(as_condition)) = as_condition_declaration::create( loc((yyvsp[(3) - (6)].sel(as_type_specifier_seq))), UNWRAP((yyvsp[(3) - (6)].sel(as_type_specifier_seq))), (yyvsp[(4) - (6)].sel(as_declarator)), (yyvsp[(6) - (6)].sel(as_expression)) );
04291                 sa_statements::instance()->condition_decl(loc((yyvsp[(3) - (6)].sel(as_type_specifier_seq))), (yyvsp[(6) - (6)].sel(as_expression)));
04292           ;}
04293     break;
04294 
04295   case 72:
04296 #line 860 "parser.y"
04297     {
04298                 // create empty expression instead of the invalid one
04299                 (yyval.sel(as_condition)) = as_empty_condition::create( loc((yyvsp[(2) - (2)].sel(bison_pack_token))) );
04300           ;}
04301     break;
04302 
04303   case 73:
04304 #line 868 "parser.y"
04305     {
04306                 (yyval.sel(as_if_statement)) = as_if_statement::create( loc((yyvsp[(1) - (5)].sel(bison_token))), (yyvsp[(3) - (5)].sel(as_condition)), DUMMY_STMT, DUMMY_STMT );
04307                 sa_statements::instance()->if_head(loc((yyvsp[(1) - (5)].sel(bison_token))), (yyvsp[(3) - (5)].sel(as_condition)));
04308           ;}
04309     break;
04310 
04311   case 74:
04312 #line 876 "parser.y"
04313     {
04314                 (yyval.sel(bison_token)) = (yyvsp[(1) - (1)].sel(bison_token));
04315                 sa_statements::instance()->enter_scope(loc((yyvsp[(1) - (1)].sel(bison_token))));
04316           ;}
04317     break;
04318 
04319   case 75:
04320 #line 885 "parser.y"
04321     { (yyval.sel(as_labeled_statement)) = (yyvsp[(2) - (3)].sel(as_labeled_statement)); ;}
04322     break;
04323 
04324   case 76:
04325 #line 890 "parser.y"
04326     { (yyval.sel(as_expression)) = EMPTY_EXPR( loc((yyvsp[(1) - (1)].sel(as_no_token))) ); ;}
04327     break;
04328 
04329   case 77:
04330 #line 892 "parser.y"
04331     { (yyval.sel(as_expression)) = (yyvsp[(1) - (1)].sel(as_expression)); ;}
04332     break;
04333 
04334   case 78:
04335 #line 897 "parser.y"
04336     { (yyval.sel(as_iteration_statement)) = (yyvsp[(1) - (2)].sel(as_iteration_statement)); ;}
04337     break;
04338 
04339   case 79:
04340 #line 902 "parser.y"
04341     { // for ( ; cond; expr)
04342                 (yyval.sel(as_iteration_statement)) = as_for_statement::create( loc((yyvsp[(1) - (9)].sel(bison_token))), DUMMY_STMT, as_for_init_statement_expression::create(loc((yyvsp[(4) - (9)].sel(bison_token))),EXPR2STMT(EMPTY_EXPR(loc((yyvsp[(4) - (9)].sel(bison_token)))))), (yyvsp[(6) - (9)].sel(as_condition)), (yyvsp[(8) - (9)].sel(as_expression)) );
04343                 sa_statements::instance()->for_head(loc((yyvsp[(1) - (9)].sel(bison_token))), (yyvsp[(6) - (9)].sel(as_condition)), (yyvsp[(8) - (9)].sel(as_expression)));
04344           ;}
04345     break;
04346 
04347   case 80:
04348 #line 907 "parser.y"
04349     { // for ( expr; cond; expr)
04350                 (yyval.sel(as_iteration_statement)) = as_for_statement::create( loc((yyvsp[(1) - (11)].sel(bison_token))), DUMMY_STMT, as_for_init_statement_expression::create(loc((yyvsp[(5) - (11)].sel(as_expression))),EXPR2STMT((yyvsp[(5) - (11)].sel(as_expression)))), (yyvsp[(8) - (11)].sel(as_condition)), (yyvsp[(10) - (11)].sel(as_expression)) );
04351                 sa_statements::instance()->for_head(loc((yyvsp[(1) - (11)].sel(bison_token))), (yyvsp[(8) - (11)].sel(as_condition)), (yyvsp[(10) - (11)].sel(as_expression)));
04352           ;}
04353     break;
04354 
04355   case 81:
04356 #line 912 "parser.y"
04357     { // for( decl; cond; expr)
04358                 (yyval.sel(as_iteration_statement)) = as_for_statement::create( loc((yyvsp[(1) - (10)].sel(bison_token))), DUMMY_STMT, as_for_init_statement_declaration::create(loc((yyvsp[(5) - (10)].sel(as_simple_declaration))),(yyvsp[(5) - (10)].sel(as_simple_declaration))), (yyvsp[(7) - (10)].sel(as_condition)), (yyvsp[(9) - (10)].sel(as_expression)) );
04359                 sa_statements::instance()->for_head(loc((yyvsp[(1) - (10)].sel(bison_token))), (yyvsp[(7) - (10)].sel(as_condition)), (yyvsp[(9) - (10)].sel(as_expression)));
04360           ;}
04361     break;
04362 
04363   case 82:
04364 #line 920 "parser.y"
04365     {
04366                 (yyval.sel(as_expression)) = (yyvsp[(1) - (1)].sel(as_expression));
04367                 sa_statements::instance()->expression_stmt((yyvsp[(1) - (1)].sel(as_expression)));
04368           ;}
04369     break;
04370 
04371   case 83:
04372 #line 928 "parser.y"
04373     {
04374                 sa_statements::instance()->for_inner_action(loc((yyvsp[(1) - (1)].sel(as_no_token))));
04375           ;}
04376     break;
04377 
04378   case 84:
04379 #line 935 "parser.y"
04380     {
04381                 (yyval.sel(bison_token)) = (yyvsp[(1) - (1)].sel(bison_token));
04382                 sa_statements::instance()->enter_scope(loc((yyvsp[(1) - (1)].sel(bison_token))));
04383           ;}
04384     break;
04385 
04386   case 85:
04387 #line 943 "parser.y"
04388     {
04389                 (yyval.sel(as_iteration_statement)) = as_while_statement::create( loc((yyvsp[(1) - (5)].sel(bison_token))), DUMMY_STMT, (yyvsp[(3) - (5)].sel(as_condition)) );
04390                 sa_statements::instance()->while_head( loc((yyvsp[(1) - (5)].sel(bison_token))), (yyvsp[(3) - (5)].sel(as_condition)) );
04391           ;}
04392     break;
04393 
04394   case 86:
04395 #line 951 "parser.y"
04396     {
04397                 (yyval.sel(bison_token)) = (yyvsp[(1) - (1)].sel(bison_token));
04398                 sa_statements::instance()->enter_scope(loc((yyvsp[(1) - (1)].sel(bison_token))));
04399           ;}
04400     break;
04401 
04402   case 87:
04403 #line 959 "parser.y"
04404     { (yyval.sel(as_switch_statement)) = as_switch_statement::create( loc((yyvsp[(1) - (5)].sel(bison_token))), (yyvsp[(3) - (5)].sel(as_condition)), DUMMY_STMT ); ;}
04405     break;
04406 
04407   case 88:
04408 #line 964 "parser.y"
04409     { (yyval.sel(as_statement_seq)) = EMPTY_WRAPPER( as_statement_seq, loc((yyvsp[(2) - (2)].sel(as_no_token))), as_statement ); ;}
04410     break;
04411 
04412   case 89:
04413 #line 966 "parser.y"
04414     { (yyval.sel(as_statement_seq)) = (yyvsp[(2) - (2)].sel(as_statement_seq)); ;}
04415     break;
04416 
04417   case 90:
04418 #line 971 "parser.y"
04419     { NEW_WRAPPER_W1( (yyval.sel(as_statement_seq)), as_statement_seq, loc((yyvsp[(1) - (1)].sel(as_statement))), as_statement, (yyvsp[(1) - (1)].sel(as_statement)) ); ;}
04420     break;
04421 
04422   case 91:
04423 #line 973 "parser.y"
04424     { (yyval.sel(as_statement_seq)) = (yyvsp[(1) - (2)].sel(as_statement_seq)); WRAPPER_APPEND( (yyval.sel(as_statement_seq)), (yyvsp[(2) - (2)].sel(as_statement)) ); ;}
04425     break;
04426 
04427   case 92:
04428 #line 978 "parser.y"
04429     { (yyval.sel(as_statement)) = (yyvsp[(1) - (2)].sel(as_statement)); ;}
04430     break;
04431 
04432   case 93:
04433 #line 984 "parser.y"
04434     { (yyval.sel(as_statement)) = (yyvsp[(1) - (1)].sel(as_try_block_statement)); ;}
04435     break;
04436 
04437   case 94:
04438 #line 990 "parser.y"
04439     { (yyval.sel(as_statement)) = EXPR2STMT( EMPTY_EXPR(loc((yyvsp[(1) - (1)].sel(bison_token)))) ); ;}
04440     break;
04441 
04442   case 95:
04443 #line 992 "parser.y"
04444     {
04445                 ptr<as_expression_statement> as = as_expression_statement::create( loc((yyvsp[(2) - (3)].sel(as_expression))), (yyvsp[(2) - (3)].sel(as_expression)) );
04446                 sa_statements::instance()->expression_stmt(as->expression_get());
04447                 (yyval.sel(as_statement)) = as;
04448           ;}
04449     break;
04450 
04451   case 96:
04452 #line 998 "parser.y"
04453     { (yyval.sel(as_statement)) = as_break_statement::create( loc((yyvsp[(1) - (2)].sel(bison_token))) ); ;}
04454     break;
04455 
04456   case 97:
04457 #line 1000 "parser.y"
04458     { (yyval.sel(as_statement)) = as_continue_statement::create( loc((yyvsp[(1) - (2)].sel(bison_token))) ); ;}
04459     break;
04460 
04461   case 98:
04462 #line 1002 "parser.y"
04463     {
04464                 ptr<as_return_statement> as = as_return_statement::create( loc((yyvsp[(1) - (3)].sel(bison_token))), (yyvsp[(2) - (3)].sel(as_expression)) );
04465                 sa_statements::instance()->return_stmt(as);
04466                 (yyval.sel(as_statement)) = as;
04467           ;}
04468     break;
04469 
04470   case 99:
04471 #line 1008 "parser.y"
04472     { (yyval.sel(as_statement)) = as_goto_statement::create( loc((yyvsp[(1) - (3)].sel(bison_token))), (yyvsp[(2) - (3)].sel(as_identifier)) ); ;}
04473     break;
04474 
04475   case 100:
04476 #line 1010 "parser.y"
04477     { (yyval.sel(as_statement)) = (yyvsp[(1) - (1)].sel(as_compound_statement)); ;}
04478     break;
04479 
04480   case 101:
04481 #line 1012 "parser.y"
04482     { (yyval.sel(as_statement)) = as_do_statement::create( loc((yyvsp[(1) - (7)].sel(bison_token))), (yyvsp[(2) - (7)].sel(as_statement)), (yyvsp[(5) - (7)].sel(as_expression)) ); ;}
04483     break;
04484 
04485   case 102:
04486 #line 1014 "parser.y"
04487     { (yyval.sel(as_statement)) = as_declaration_statement::create( loc((yyvsp[(2) - (2)].sel(as_block_declaration))), (yyvsp[(2) - (2)].sel(as_block_declaration)) ); ;}
04488     break;
04489 
04490   case 103:
04491 #line 1016 "parser.y"
04492     {
04493                 /* create empty expression statement instead of the errorneous input */
04494                 (yyval.sel(as_statement)) = EXPR2STMT( EMPTY_EXPR(loc((yyvsp[(1) - (1)].sel(bison_pack_token)))) );
04495           ;}
04496     break;
04497 
04498   case 104:
04499 #line 1024 "parser.y"
04500     {
04501                 (yyval.sel(as_compound_statement)) = as_compound_statement::create( loc((yyvsp[(1) - (3)].sel(bison_token))), UNWRAP((yyvsp[(2) - (3)].sel(as_statement_seq))) );
04502                 sa_statements::instance()->leave_scope();
04503           ;}
04504     break;
04505 
04506   case 105:
04507 #line 1032 "parser.y"
04508     {
04509                 (yyval.sel(bison_token)) = (yyvsp[(1) - (1)].sel(bison_token));
04510                 sa_statements::instance()->enter_scope(loc((yyvsp[(1) - (1)].sel(bison_token))));
04511           ;}
04512     break;
04513 
04514   case 106:
04515 #line 1040 "parser.y"
04516     { (yyval.sel(as_statement)) = (yyvsp[(1) - (1)].sel(as_statement)); ;}
04517     break;
04518 
04519   case 107:
04520 #line 1042 "parser.y"
04521     { (yyval.sel(as_statement)) = (yyvsp[(1) - (1)].sel(as_statement)); ;}
04522     break;
04523 
04524   case 108:
04525 #line 1047 "parser.y"
04526     { (yyvsp[(1) - (2)].sel(as_labeled_statement))->statement_set( (yyvsp[(2) - (2)].sel(as_statement)) ); (yyval.sel(as_statement)) = (yyvsp[(1) - (2)].sel(as_labeled_statement)); ;}
04527     break;
04528 
04529   case 109:
04530 #line 1049 "parser.y"
04531     {
04532                 (yyvsp[(1) - (2)].sel(as_iteration_statement))->controlled_statement_set( (yyvsp[(2) - (2)].sel(as_statement)) );
04533                 (yyval.sel(as_statement)) = (yyvsp[(1) - (2)].sel(as_iteration_statement));
04534                 sa_statements::instance()->leave_scope(); // leave body compound statement
04535                 sa_statements::instance()->leave_scope(); // leave 'for' inner encapsulating compound
04536                 sa_statements::instance()->leave_scope(); // leave 'for' outer encapsulating compound
04537           ;}
04538     break;
04539 
04540   case 110:
04541 #line 1057 "parser.y"
04542     {
04543                 (yyvsp[(1) - (2)].sel(as_iteration_statement))->controlled_statement_set( (yyvsp[(2) - (2)].sel(as_statement)) );
04544                 (yyval.sel(as_statement)) = (yyvsp[(1) - (2)].sel(as_iteration_statement));
04545                 sa_statements::instance()->leave_scope(); // leave body compound statement
04546                 sa_statements::instance()->leave_scope(); // leave 'while' encapsulating compound
04547           ;}
04548     break;
04549 
04550   case 111:
04551 #line 1064 "parser.y"
04552     { (yyvsp[(1) - (2)].sel(as_switch_statement))->controlled_statement_set( (yyvsp[(2) - (2)].sel(as_statement)) ); (yyval.sel(as_statement)) = (yyvsp[(1) - (2)].sel(as_switch_statement)); ;}
04553     break;
04554 
04555   case 112:
04556 #line 1066 "parser.y"
04557     { (yyval.sel(as_statement)) = (yyvsp[(1) - (1)].sel(as_statement)); ;}
04558     break;
04559 
04560   case 113:
04561 #line 1068 "parser.y"
04562     {
04563                 (yyvsp[(1) - (4)].sel(as_if_statement))->then_statement_set( (yyvsp[(2) - (4)].sel(as_statement)) );
04564                 (yyvsp[(1) - (4)].sel(as_if_statement))->else_statement_set( (yyvsp[(4) - (4)].sel(as_statement)) );
04565                 (yyval.sel(as_statement)) = (yyvsp[(1) - (4)].sel(as_if_statement));
04566                 sa_statements::instance()->leave_scope(); // leave 'else' compound statement
04567                 sa_statements::instance()->leave_scope(); // leave 'if' encapsulating compoud
04568           ;}
04569     break;
04570 
04571   case 114:
04572 #line 1079 "parser.y"
04573     { (yyvsp[(1) - (2)].sel(as_labeled_statement))->statement_set( (yyvsp[(2) - (2)].sel(as_statement)) ); (yyval.sel(as_statement)) = (yyvsp[(1) - (2)].sel(as_labeled_statement)); ;}
04574     break;
04575 
04576   case 115:
04577 #line 1081 "parser.y"
04578     {
04579                 (yyvsp[(1) - (2)].sel(as_iteration_statement))->controlled_statement_set( (yyvsp[(2) - (2)].sel(as_statement)) );
04580                 (yyval.sel(as_statement)) = (yyvsp[(1) - (2)].sel(as_iteration_statement));
04581                 sa_statements::instance()->leave_scope(); // leave body compound statement
04582                 sa_statements::instance()->leave_scope(); // leave 'for' inner encapsulating compound
04583                 sa_statements::instance()->leave_scope(); // leave 'for' outer encapsulating compound
04584           ;}
04585     break;
04586 
04587   case 116:
04588 #line 1089 "parser.y"
04589     {
04590                 (yyvsp[(1) - (2)].sel(as_iteration_statement))->controlled_statement_set( (yyvsp[(2) - (2)].sel(as_statement)) );
04591                 (yyval.sel(as_statement)) = (yyvsp[(1) - (2)].sel(as_iteration_statement));
04592                 sa_statements::instance()->leave_scope(); // leave body compound statement
04593                 sa_statements::instance()->leave_scope(); // leave 'while' encapsulating compound
04594           ;}
04595     break;
04596 
04597   case 117:
04598 #line 1096 "parser.y"
04599     { (yyvsp[(1) - (2)].sel(as_switch_statement))->controlled_statement_set( (yyvsp[(2) - (2)].sel(as_statement)) ); (yyval.sel(as_statement)) = (yyvsp[(1) - (2)].sel(as_switch_statement)); ;}
04600     break;
04601 
04602   case 118:
04603 #line 1098 "parser.y"
04604     {
04605                 (yyvsp[(1) - (2)].sel(as_if_statement))->then_statement_set( (yyvsp[(2) - (2)].sel(as_statement)) );
04606                 (yyvsp[(1) - (2)].sel(as_if_statement))->else_statement_set( NULL );
04607                 (yyval.sel(as_statement)) = (yyvsp[(1) - (2)].sel(as_if_statement));
04608                 sa_statements::instance()->leave_scope(); // leave 'then' compound statement
04609                 sa_statements::instance()->leave_scope(); // leave 'if' encapsulating compound
04610           ;}
04611     break;
04612 
04613   case 119:
04614 #line 1106 "parser.y"
04615     {
04616                 (yyvsp[(1) - (4)].sel(as_if_statement))->then_statement_set( (yyvsp[(2) - (4)].sel(as_statement)) );
04617                 (yyvsp[(1) - (4)].sel(as_if_statement))->else_statement_set( (yyvsp[(4) - (4)].sel(as_statement)) );
04618                 (yyval.sel(as_statement)) = (yyvsp[(1) - (4)].sel(as_if_statement));
04619                 sa_statements::instance()->leave_scope(); // leave 'else' compound statement
04620                 sa_statements::instance()->leave_scope(); // leave 'if' encapsulating compound
04621           ;}
04622     break;
04623 
04624   case 120:
04625 #line 1117 "parser.y"
04626     {
04627                 sa_statements::instance()->leave_scope(); // leave 'then' compound statement
04628                 sa_statements::instance()->enter_else(); // enter 'else' compound statement
04629           ;}
04630     break;
04631 
04632   case 121:
04633 #line 1126 "parser.y"
04634     { (yyval.sel(as_expression)) = (yyvsp[(1) - (1)].sel(as_expression)); ;}
04635     break;
04636 
04637   case 122:
04638 #line 1128 "parser.y"
04639     { (yyval.sel(as_expression)) = as_expression_comma::create( loc((yyvsp[(2) - (3)].sel(bison_token))), (yyvsp[(1) - (3)].sel(as_expression)), (yyvsp[(3) - (3)].sel(as_expression)) ); ;}
04640     break;
04641 
04642   case 123:
04643 #line 1134 "parser.y"
04644     { (yyval.sel(as_constant_expression)) = as_constant_expression::create( loc((yyvsp[(1) - (1)].sel(as_expression))), (yyvsp[(1) - (1)].sel(as_expression)) ); ;}
04645     break;
04646 
04647   case 124:
04648 #line 1140 "parser.y"
04649     { (yyval.sel(as_expression)) = (yyvsp[(1) - (1)].sel(as_expression)); ;}
04650     break;
04651 
04652   case 125:
04653 #line 1142 "parser.y"
04654     { (yyval.sel(as_expression)) = as_expression_equal::create( loc((yyvsp[(2) - (3)].sel(bison_token))), (yyvsp[(1) - (3)].sel(as_expression)), (yyvsp[(3) - (3)].sel(as_expression)) ); ;}
04655     break;
04656 
04657   case 126:
04658 #line 1144 "parser.y"
04659     { (yyval.sel(as_expression)) = as_expression_plus_equal::create( loc((yyvsp[(2) - (3)].sel(bison_token))), (yyvsp[(1) - (3)].sel(as_expression)), (yyvsp[(3) - (3)].sel(as_expression)) ); ;}
04660     break;
04661 
04662   case 127:
04663 #line 1146 "parser.y"
04664     { (yyval.sel(as_expression)) = as_expression_minus_equal::create( loc((yyvsp[(2) - (3)].sel(bison_token))), (yyvsp[(1) - (3)].sel(as_expression)), (yyvsp[(3) - (3)].sel(as_expression)) ); ;}
04665     break;
04666 
04667   case 128:
04668 #line 1148 "parser.y"
04669     { (yyval.sel(as_expression)) = as_expression_star_equal::create( loc((yyvsp[(2) - (3)].sel(bison_token))), (yyvsp[(1) - (3)].sel(as_expression)), (yyvsp[(3) - (3)].sel(as_expression)) ); ;}
04670     break;
04671 
04672   case 129:
04673 #line 1150 "parser.y"
04674     { (yyval.sel(as_expression)) = as_expression_slash_equal::create( loc((yyvsp[(2) - (3)].sel(bison_token))), (yyvsp[(1) - (3)].sel(as_expression)), (yyvsp[(3) - (3)].sel(as_expression)) ); ;}
04675     break;
04676 
04677   case 130:
04678 #line 1152 "parser.y"
04679     { (yyval.sel(as_expression)) = as_expression_percent_equal::create( loc((yyvsp[(2) - (3)].sel(bison_token))), (yyvsp[(1) - (3)].sel(as_expression)), (yyvsp[(3) - (3)].sel(as_expression)) ); ;}
04680     break;
04681 
04682   case 131:
04683 #line 1154 "parser.y"
04684     { (yyval.sel(as_expression)) = as_expression_hat_equal::create( loc((yyvsp[(2) - (3)].sel(bison_token))), (yyvsp[(1) - (3)].sel(as_expression)), (yyvsp[(3) - (3)].sel(as_expression)) ); ;}
04685     break;
04686 
04687   case 132:
04688 #line 1156 "parser.y"
04689     { (yyval.sel(as_expression)) = as_expression_amp_equal::create( loc((yyvsp[(2) - (3)].sel(bison_token))), (yyvsp[(1) - (3)].sel(as_expression)), (yyvsp[(3) - (3)].sel(as_expression)) ); ;}
04690     break;
04691 
04692   case 133:
04693 #line 1158 "parser.y"
04694     { (yyval.sel(as_expression)) = as_expression_vbar_equal::create( loc((yyvsp[(2) - (3)].sel(bison_token))), (yyvsp[(1) - (3)].sel(as_expression)), (yyvsp[(3) - (3)].sel(as_expression)) ); ;}
04695     break;
04696 
04697   case 134:
04698 #line 1160 "parser.y"
04699     { (yyval.sel(as_expression)) = as_expression_greater_greater_equal::create( loc((yyvsp[(2) - (3)].sel(bison_token))), (yyvsp[(1) - (3)].sel(as_expression)), (yyvsp[(3) - (3)].sel(as_expression)) ); ;}
04700     break;
04701 
04702   case 135:
04703 #line 1162 "parser.y"
04704     { (yyval.sel(as_expression)) = as_expression_less_less_equal::create( loc((yyvsp[(2) - (3)].sel(bison_token))), (yyvsp[(1) - (3)].sel(as_expression)), (yyvsp[(3) - (3)].sel(as_expression)) ); ;}
04705     break;
04706 
04707   case 136:
04708 #line 1164 "parser.y"
04709     { (yyval.sel(as_expression)) = (yyvsp[(1) - (1)].sel(as_expression_throw)); ;}
04710     break;
04711 
04712   case 137:
04713 #line 1170 "parser.y"
04714     { (yyval.sel(as_expression)) = (yyvsp[(1) - (1)].sel(as_expression)); ;}
04715     break;
04716 
04717   case 138:
04718 #line 1172 "parser.y"
04719     { (yyval.sel(as_expression)) = as_expression_qmark::create( loc((yyvsp[(2) - (5)].sel(bison_token))), (yyvsp[(1) - (5)].sel(as_expression)), (yyvsp[(3) - (5)].sel(as_expression)), (yyvsp[(5) - (5)].sel(as_expression)) ); ;}
04720     break;
04721 
04722   case 139:
04723 #line 1178 "parser.y"
04724     { (yyval.sel(as_expression)) = (yyvsp[(1) - (1)].sel(as_expression)); ;}
04725     break;
04726 
04727   case 140:
04728 #line 1180 "parser.y"
04729     { (yyval.sel(as_expression)) = as_expression_vbar_vbar::create( loc((yyvsp[(2) - (3)].sel(bison_token))), (yyvsp[(1) - (3)].sel(as_expression)), (yyvsp[(3) - (3)].sel(as_expression)) ); ;}
04730     break;
04731 
04732   case 141:
04733 #line 1186 "parser.y"
04734     { (yyval.sel(as_expression)) = (yyvsp[(1) - (1)].sel(as_expression)); ;}
04735     break;
04736 
04737   case 142:
04738 #line 1188 "parser.y"
04739     { (yyval.sel(as_expression)) = as_expression_amp_amp::create( loc((yyvsp[(2) - (3)].sel(bison_token))), (yyvsp[(1) - (3)].sel(as_expression)), (yyvsp[(3) - (3)].sel(as_expression)) ); ;}
04740     break;
04741 
04742   case 143:
04743 #line 1194 "parser.y"
04744     { (yyval.sel(as_expression)) = (yyvsp[(1) - (1)].sel(as_expression)); ;}
04745     break;
04746 
04747   case 144:
04748 #line 1196 "parser.y"
04749     { (yyval.sel(as_expression)) = as_expression_vbar::create( loc((yyvsp[(2) - (3)].sel(bison_token))), (yyvsp[(1) - (3)].sel(as_expression)), (yyvsp[(3) - (3)].sel(as_expression)) ); ;}
04750     break;
04751 
04752   case 145:
04753 #line 1202 "parser.y"
04754     { (yyval.sel(as_expression)) = (yyvsp[(1) - (1)].sel(as_expression)); ;}
04755     break;
04756 
04757   case 146:
04758 #line 1204 "parser.y"
04759     { (yyval.sel(as_expression)) = as_expression_hat::create( loc((yyvsp[(2) - (3)].sel(bison_token))), (yyvsp[(1) - (3)].sel(as_expression)), (yyvsp[(3) - (3)].sel(as_expression)) ); ;}
04760     break;
04761 
04762   case 147:
04763 #line 1210 "parser.y"
04764     { (yyval.sel(as_expression)) = (yyvsp[(1) - (1)].sel(as_expression)); ;}
04765     break;
04766 
04767   case 148:
04768 #line 1212 "parser.y"
04769     { (yyval.sel(as_expression)) = as_expression_amp::create( loc((yyvsp[(2) - (3)].sel(bison_token))), (yyvsp[(1) - (3)].sel(as_expression)), (yyvsp[(3) - (3)].sel(as_expression)) ); ;}
04770     break;
04771 
04772   case 149:
04773 #line 1218 "parser.y"
04774     { (yyval.sel(as_expression)) = (yyvsp[(1) - (1)].sel(as_expression)); ;}
04775     break;
04776 
04777   case 150:
04778 #line 1220 "parser.y"
04779     { (yyval.sel(as_expression)) = as_expression_equal_equal::create( loc((yyvsp[(2) - (3)].sel(bison_token))), (yyvsp[(1) - (3)].sel(as_expression)), (yyvsp[(3) - (3)].sel(as_expression)) ); ;}
04780     break;
04781 
04782   case 151:
04783 #line 1222 "parser.y"
04784     { (yyval.sel(as_expression)) = as_expression_exclam_equal::create( loc((yyvsp[(2) - (3)].sel(bison_token))), (yyvsp[(1) - (3)].sel(as_expression)), (yyvsp[(3) - (3)].sel(as_expression)) ); ;}
04785     break;
04786 
04787   case 152:
04788 #line 1228 "parser.y"
04789     { (yyval.sel(as_expression)) = (yyvsp[(1) - (1)].sel(as_expression)); ;}
04790     break;
04791 
04792   case 153:
04793 #line 1230 "parser.y"
04794     { (yyval.sel(as_expression)) = as_expression_less::create( loc((yyvsp[(2) - (3)].sel(bison_token))), (yyvsp[(1) - (3)].sel(as_expression)), (yyvsp[(3) - (3)].sel(as_expression)) ); ;}
04795     break;
04796 
04797   case 154:
04798 #line 1232 "parser.y"
04799     { (yyval.sel(as_expression)) = as_expression_greater::create( loc((yyvsp[(2) - (3)].sel(bison_token))), (yyvsp[(1) - (3)].sel(as_expression)), (yyvsp[(3) - (3)].sel(as_expression)) ); ;}
04800     break;
04801 
04802   case 155:
04803 #line 1234 "parser.y"
04804     { (yyval.sel(as_expression)) = as_expression_less_equal::create( loc((yyvsp[(2) - (3)].sel(bison_token))), (yyvsp[(1) - (3)].sel(as_expression)), (yyvsp[(3) - (3)].sel(as_expression)) ); ;}
04805     break;
04806 
04807   case 156:
04808 #line 1236 "parser.y"
04809     { (yyval.sel(as_expression)) = as_expression_greater_equal::create( loc((yyvsp[(2) - (3)].sel(bison_token))), (yyvsp[(1) - (3)].sel(as_expression)), (yyvsp[(3) - (3)].sel(as_expression)) ); ;}
04810     break;
04811 
04812   case 157:
04813 #line 1242 "parser.y"
04814     { (yyval.sel(as_expression)) = (yyvsp[(1) - (1)].sel(as_expression)); ;}
04815     break;
04816 
04817   case 158:
04818 #line 1244 "parser.y"
04819     { (yyval.sel(as_expression)) = as_expression_less_less::create( loc((yyvsp[(2) - (3)].sel(bison_token))), (yyvsp[(1) - (3)].sel(as_expression)), (yyvsp[(3) - (3)].sel(as_expression)) ); ;}
04820     break;
04821 
04822   case 159:
04823 #line 1246 "parser.y"
04824     { (yyval.sel(as_expression)) = as_expression_greater_greater::create( loc((yyvsp[(2) - (3)].sel(bison_token))), (yyvsp[(1) - (3)].sel(as_expression)), (yyvsp[(3) - (3)].sel(as_expression)) ); ;}
04825     break;
04826 
04827   case 160:
04828 #line 1252 "parser.y"
04829     { (yyval.sel(as_expression)) = (yyvsp[(1) - (1)].sel(as_expression)); ;}
04830     break;
04831 
04832   case 161:
04833 #line 1254 "parser.y"
04834     { (yyval.sel(as_expression)) = as_expression_plus::create( loc((yyvsp[(2) - (3)].sel(bison_token))), (yyvsp[(1) - (3)].sel(as_expression)), (yyvsp[(3) - (3)].sel(as_expression)) ); ;}
04835     break;
04836 
04837   case 162:
04838 #line 1256 "parser.y"
04839     { (yyval.sel(as_expression)) = as_expression_minus::create( loc((yyvsp[(2) - (3)].sel(bison_token))), (yyvsp[(1) - (3)].sel(as_expression)), (yyvsp[(3) - (3)].sel(as_expression)) ); ;}
04840     break;
04841 
04842   case 163:
04843 #line 1262 "parser.y"
04844     { (yyval.sel(as_expression)) = (yyvsp[(1) - (1)].sel(as_expression)); ;}
04845     break;
04846 
04847   case 164:
04848 #line 1264 "parser.y"
04849     { (yyval.sel(as_expression)) = as_expression_star::create( loc((yyvsp[(2) - (3)].sel(bison_token))), (yyvsp[(1) - (3)].sel(as_expression)), (yyvsp[(3) - (3)].sel(as_expression)) ); ;}
04850     break;
04851 
04852   case 165:
04853 #line 1266 "parser.y"
04854     { (yyval.sel(as_expression)) = as_expression_slash::create( loc((yyvsp[(2) - (3)].sel(bison_token))), (yyvsp[(1) - (3)].sel(as_expression)), (yyvsp[(3) - (3)].sel(as_expression)) ); ;}
04855     break;
04856 
04857   case 166:
04858 #line 1268 "parser.y"
04859     { (yyval.sel(as_expression)) = as_expression_percent::create( loc((yyvsp[(2) - (3)].sel(bison_token))), (yyvsp[(1) - (3)].sel(as_expression)), (yyvsp[(3) - (3)].sel(as_expression)) ); ;}
04860     break;
04861 
04862   case 167:
04863 #line 1274 "parser.y"
04864     { (yyval.sel(as_expression)) = (yyvsp[(1) - (1)].sel(as_expression)); ;}
04865     break;
04866 
04867   case 168:
04868 #line 1276 "parser.y"
04869     { (yyval.sel(as_expression)) = as_expression_dot_star::create( loc((yyvsp[(2) - (3)].sel(bison_token))), (yyvsp[(1) - (3)].sel(as_expression)), (yyvsp[(3) - (3)].sel(as_expression)) ); ;}
04870     break;
04871 
04872   case 169:
04873 #line 1278 "parser.y"
04874     { (yyval.sel(as_expression)) = as_expression_minus_greater_star::create( loc((yyvsp[(2) - (3)].sel(bison_token))), (yyvsp[(1) - (3)].sel(as_expression)), (yyvsp[(3) - (3)].sel(as_expression)) ); ;}
04875     break;
04876 
04877   case 170:
04878 #line 1284 "parser.y"
04879     { (yyval.sel(as_expression)) = (yyvsp[(1) - (1)].sel(as_expression)); ;}
04880     break;
04881 
04882   case 171:
04883 #line 1286 "parser.y"
04884     { (yyval.sel(as_expression)) = as_expression_old_style_cast::create( loc((yyvsp[(1) - (6)].sel(bison_token))), (yyvsp[(4) - (6)].sel(as_type_id)), (yyvsp[(6) - (6)].sel(as_expression)) ); ;}
04885     break;
04886 
04887   case 172:
04888 #line 1292 "parser.y"
04889     { (yyval.sel(as_expression)) = (yyvsp[(1) - (1)].sel(as_expression)); ;}
04890     break;
04891 
04892   case 173:
04893 #line 1294 "parser.y"
04894     { (yyval.sel(as_expression)) = as_expression_plus_plus_pre::create( loc((yyvsp[(1) - (2)].sel(bison_token))), (yyvsp[(2) - (2)].sel(as_expression)) ); ;}
04895     break;
04896 
04897   case 174:
04898 #line 1296 "parser.y"
04899     { (yyval.sel(as_expression)) = as_expression_minus_minus_pre::create( loc((yyvsp[(1) - (2)].sel(bison_token))), (yyvsp[(2) - (2)].sel(as_expression)) ); ;}
04900     break;
04901 
04902   case 175:
04903 #line 1298 "parser.y"
04904     { (yyval.sel(as_expression)) = as_expression_unary_star::create( loc((yyvsp[(1) - (2)].sel(bison_token))), (yyvsp[(2) - (2)].sel(as_expression)) ); ;}
04905     break;
04906 
04907   case 176:
04908 #line 1300 "parser.y"
04909     { (yyval.sel(as_expression)) = as_expression_unary_amp::create( loc((yyvsp[(1) - (2)].sel(bison_token))), (yyvsp[(2) - (2)].sel(as_expression)) ); ;}
04910     break;
04911 
04912   case 177:
04913 #line 1302 "parser.y"
04914     { (yyval.sel(as_expression)) = as_expression_unary_plus::create( loc((yyvsp[(1) - (2)].sel(bison_token))), (yyvsp[(2) - (2)].sel(as_expression)) ); ;}
04915     break;
04916 
04917   case 178:
04918 #line 1304 "parser.y"
04919     { (yyval.sel(as_expression)) = as_expression_unary_minus::create( loc((yyvsp[(1) - (2)].sel(bison_token))), (yyvsp[(2) - (2)].sel(as_expression)) ); ;}
04920     break;
04921 
04922   case 179:
04923 #line 1306 "parser.y"
04924     { (yyval.sel(as_expression)) = as_expression_exclam::create( loc((yyvsp[(1) - (2)].sel(bison_token))), (yyvsp[(2) - (2)].sel(as_expression)) ); ;}
04925     break;
04926 
04927   case 180:
04928 #line 1308 "parser.y"
04929     { (yyval.sel(as_expression)) = as_expression_tilde::create( loc((yyvsp[(1) - (2)].sel(bison_token))), (yyvsp[(2) - (2)].sel(as_expression)) ); ;}
04930     break;
04931 
04932   case 181:
04933 #line 1310 "parser.y"
04934     { (yyval.sel(as_expression)) = as_expression_sizeof_expr::create( loc((yyvsp[(1) - (4)].sel(bison_token))), (yyvsp[(4) - (4)].sel(as_expression)) ); ;}
04935     break;
04936 
04937   case 182:
04938 #line 1312 "parser.y"
04939     { (yyval.sel(as_expression)) = as_expression_sizeof_type::create( loc((yyvsp[(1) - (6)].sel(bison_token))), (yyvsp[(5) - (6)].sel(as_type_id)) ); ;}
04940     break;
04941 
04942   case 183:
04943 #line 1314 "parser.y"
04944     { (yyval.sel(as_expression)) = (yyvsp[(1) - (1)].sel(as_expression)); ;}
04945     break;
04946 
04947   case 184:
04948 #line 1316 "parser.y"
04949     { (yyval.sel(as_expression)) = (yyvsp[(1) - (1)].sel(as_expression)); ;}
04950     break;
04951 
04952   case 185:
04953 #line 1322 "parser.y"
04954     { (yyval.sel(as_expression)) = as_expression_new::create( loc((yyvsp[(2) - (3)].sel(bison_token))), (yyvsp[(1) - (3)].sel(as_name)), NULL, (yyvsp[(3) - (3)].sel(as_type_id)), NULL ); ;}
04955     break;
04956 
04957   case 186:
04958 #line 1324 "parser.y"
04959     { (yyval.sel(as_expression)) = as_expression_new::create( loc((yyvsp[(2) - (8)].sel(bison_token))), (yyvsp[(1) - (8)].sel(as_name)), UNWRAP((yyvsp[(6) - (8)].sel(as_expression_list))), (yyvsp[(8) - (8)].sel(as_type_id)), NULL ); ;}
04960     break;
04961 
04962   case 187:
04963 #line 1326 "parser.y"
04964     { (yyval.sel(as_expression)) = as_expression_new::create( loc((yyvsp[(2) - (4)].sel(bison_token))), (yyvsp[(1) - (4)].sel(as_name)), NULL, (yyvsp[(3) - (4)].sel(as_type_id)), as_initializer_expression_list::create(loc((yyvsp[(4) - (4)].sel(as_expression_list))),UNWRAP((yyvsp[(4) - (4)].sel(as_expression_list)))) ); ;}
04965     break;
04966 
04967   case 188:
04968 #line 1328 "parser.y"
04969     { (yyval.sel(as_expression)) = as_expression_new::create( loc((yyvsp[(2) - (9)].sel(bison_token))), (yyvsp[(1) - (9)].sel(as_name)), UNWRAP((yyvsp[(6) - (9)].sel(as_expression_list))), (yyvsp[(8) - (9)].sel(as_type_id)), as_initializer_expression_list::create(loc((yyvsp[(9) - (9)].sel(as_expression_list))),UNWRAP((yyvsp[(9) - (9)].sel(as_expression_list)))) ); ;}
04970     break;
04971 
04972   case 189:
04973 #line 1331 "parser.y"
04974     { (yyval.sel(as_expression)) = as_expression_new::create( loc((yyvsp[(2) - (7)].sel(bison_token))), (yyvsp[(1) - (7)].sel(as_name)), NULL, (yyvsp[(6) - (7)].sel(as_type_id)), NULL ); ;}
04975     break;
04976 
04977   case 190:
04978 #line 1333 "parser.y"
04979     { (yyval.sel(as_expression)) = as_expression_new::create( loc((yyvsp[(2) - (10)].sel(bison_token))), (yyvsp[(1) - (10)].sel(as_name)), UNWRAP((yyvsp[(6) - (10)].sel(as_expression_list))), (yyvsp[(9) - (10)].sel(as_type_id)), NULL ); ;}
04980     break;
04981 
04982   case 191:
04983 #line 1335 "parser.y"
04984     { (yyval.sel(as_expression)) = as_expression_new::create( loc((yyvsp[(2) - (8)].sel(bison_token))), (yyvsp[(1) - (8)].sel(as_name)), NULL, (yyvsp[(6) - (8)].sel(as_type_id)), as_initializer_expression_list::create(loc((yyvsp[(8) - (8)].sel(as_expression_list))),UNWRAP((yyvsp[(8) - (8)].sel(as_expression_list)))) ); ;}
04985     break;
04986 
04987   case 192:
04988 #line 1337 "parser.y"
04989     { (yyval.sel(as_expression)) = as_expression_new::create( loc((yyvsp[(2) - (11)].sel(bison_token))), (yyvsp[(1) - (11)].sel(as_name)), UNWRAP((yyvsp[(6) - (11)].sel(as_expression_list))), (yyvsp[(9) - (11)].sel(as_type_id)), as_initializer_expression_list::create(loc((yyvsp[(11) - (11)].sel(as_expression_list))),UNWRAP((yyvsp[(11) - (11)].sel(as_expression_list)))) ); ;}
04990     break;
04991 
04992   case 193:
04993 #line 1342 "parser.y"
04994     { (yyval.sel(as_type_id)) = as_type_id::create( loc((yyvsp[(1) - (2)].sel(as_type_specifier_seq))), UNWRAP((yyvsp[(1) - (2)].sel(as_type_specifier_seq))), EMPTY_DCLTOR(loc((yyvsp[(2) - (2)].sel(as_no_token)))) ); ;}
04995     break;
04996 
04997   case 194:
04998 #line 1344 "parser.y"
04999     { (yyval.sel(as_type_id)) = as_type_id::create( loc((yyvsp[(1) - (3)].sel(as_type_specifier_seq))), UNWRAP((yyvsp[(1) - (3)].sel(as_type_specifier_seq))), (yyvsp[(3) - (3)].sel(as_declarator)) ); ;}
05000     break;
05001 
05002   case 195:
05003 #line 1349 "parser.y"
05004     { (yyval.sel(as_declarator)) = as_declarator::create( loc((yyvsp[(1) - (1)].sel(as_declarator_op_seq))), NULL, UNWRAP((yyvsp[(1) - (1)].sel(as_declarator_op_seq))) ); ;}
05005     break;
05006 
05007   case 196:
05008 #line 1351 "parser.y"
05009     { (yyval.sel(as_declarator)) = (yyvsp[(2) - (2)].sel(as_declarator)); LIST_APPEND_LIST( (yyval.sel(as_declarator))->declarator_ops_get(), UNWRAP((yyvsp[(1) - (2)].sel(as_declarator_op_seq))) ); ;}
05010     break;
05011 
05012   case 197:
05013 #line 1353 "parser.y"
05014     { (yyval.sel(as_declarator)) = (yyvsp[(1) - (1)].sel(as_declarator)); ;}
05015     break;
05016 
05017   case 198:
05018 #line 1358 "parser.y"
05019     { (yyval.sel(as_declarator)) = as_declarator::create( loc((yyvsp[(1) - (3)].sel(bison_token))), NULL, EMPTY_LIST(as_declarator_op) );
05020             LIST_APPEND( (yyval.sel(as_declarator))->declarator_ops_get(), as_declarator_op_non_constant_array::create(loc((yyvsp[(1) - (3)].sel(bison_token))),(yyvsp[(2) - (3)].sel(as_expression))) ); ;}
05021     break;
05022 
05023   case 199:
05024 #line 1361 "parser.y"
05025     { (yyval.sel(as_declarator)) = (yyvsp[(1) - (4)].sel(as_declarator)); LIST_APPEND( (yyval.sel(as_declarator))->declarator_ops_get(), as_declarator_op_array::create(loc((yyvsp[(2) - (4)].sel(bison_token))),(yyvsp[(3) - (4)].sel(as_constant_expression))) ); ;}
05026     break;
05027 
05028   case 200:
05029 #line 1366 "parser.y"
05030     { (yyval.sel(as_expression)) = as_expression_delete::create( loc((yyvsp[(2) - (3)].sel(bison_token))), (yyvsp[(3) - (3)].sel(as_expression)), (yyvsp[(1) - (3)].sel(as_name)) ); ;}
05031     break;
05032 
05033   case 201:
05034 #line 1368 "parser.y"
05035     { (yyval.sel(as_expression)) = as_expression_delete_array::create( loc((yyvsp[(2) - (5)].sel(bison_token))), (yyvsp[(5) - (5)].sel(as_expression)), (yyvsp[(1) - (5)].sel(as_name)) ); ;}
05036     break;
05037 
05038   case 202:
05039 #line 1373 "parser.y"
05040     { (yyval.sel(as_name)) = (yyvsp[(1) - (1)].sel(as_name)); ;}
05041     break;
05042 
05043   case 203:
05044 #line 1375 "parser.y"
05045     { (yyval.sel(as_name)) = (yyvsp[(1) - (1)].sel(as_name)) ;}
05046     break;
05047 
05048   case 204:
05049 #line 1377 "parser.y"
05050     { (yyval.sel(as_name)) = (yyvsp[(3) - (3)].sel(as_name)); ;}
05051     break;
05052 
05053   case 205:
05054 #line 1379 "parser.y"
05055     { (yyval.sel(as_name)) = (yyvsp[(3) - (3)].sel(as_name)); ;}
05056     break;
05057 
05058   case 206:
05059 #line 1387 "parser.y"
05060     { (yyval.sel(as_expression)) = as_literal::create( loc((yyvsp[(1) - (1)].sel(bison_token))), as_literal::UNKNOWN, UNWTOK((yyvsp[(1) - (1)].sel(bison_token))) ); ;}
05061     break;
05062 
05063   case 207:
05064 #line 1389 "parser.y"
05065     { (yyval.sel(as_expression)) = as_this_expression::create( loc((yyvsp[(1) - (1)].sel(bison_token))) ); ;}
05066     break;
05067 
05068   case 208:
05069 #line 1391 "parser.y"
05070     { (yyval.sel(as_expression)) = (yyvsp[(4) - (5)].sel(as_expression)); ;}
05071     break;
05072 
05073   case 209:
05074 #line 1393 "parser.y"
05075     { (yyval.sel(as_expression)) = as_name_expression::create( loc((yyvsp[(1) - (1)].sel(as_name))), (yyvsp[(1) - (1)].sel(as_name)) ); ;}
05076     break;
05077 
05078   case 210:
05079 #line 1396 "parser.y"
05080     { (yyval.sel(as_expression)) = as_expression_brackets::create( loc((yyvsp[(2) - (4)].sel(bison_token))), (yyvsp[(1) - (4)].sel(as_expression)), (yyvsp[(3) - (4)].sel(as_expression)) ); ;}
05081     break;
05082 
05083   case 211:
05084 #line 1398 "parser.y"
05085     { (yyval.sel(as_expression)) = as_expression_function_call::create( loc((yyvsp[(2) - (2)].sel(as_expression_list))), (yyvsp[(1) - (2)].sel(as_expression)), UNWRAP((yyvsp[(2) - (2)].sel(as_expression_list))) ); ;}
05086     break;
05087 
05088   case 212:
05089 #line 1402 "parser.y"
05090     { ptr<as_type_id> tid = EMPTY_TYPE_ID( loc((yyvsp[(1) - (2)].sel(as_builtin_simple_type_specifier))), loc((yyvsp[(2) - (2)].sel(as_expression_list))) );
05091             tid->type_specifiers_get()->push_back((yyvsp[(1) - (2)].sel(as_builtin_simple_type_specifier)));
05092             (yyval.sel(as_expression)) = as_expression_functional_style_cast::create( loc((yyvsp[(1) - (2)].sel(as_builtin_simple_type_specifier))), tid, UNWRAP((yyvsp[(2) - (2)].sel(as_expression_list))) ); ;}
05093     break;
05094 
05095   case 213:
05096 #line 1406 "parser.y"
05097     { ptr<as_type_id> tid = EMPTY_TYPE_ID( loc((yyvsp[(1) - (2)].sel(as_simple_type_specifier))), loc((yyvsp[(2) - (2)].sel(as_expression_list))) );
05098             tid->type_specifiers_get()->push_back((yyvsp[(1) - (2)].sel(as_simple_type_specifier)));
05099             (yyval.sel(as_expression)) = as_expression_functional_style_cast::create( loc((yyvsp[(1) - (2)].sel(as_simple_type_specifier))), tid, UNWRAP((yyvsp[(2) - (2)].sel(as_expression_list))) ); ;}
05100     break;
05101 
05102   case 214:
05103 #line 1410 "parser.y"
05104     { ptr<as_type_id> tid = EMPTY_TYPE_ID( loc((yyvsp[(1) - (2)].sel(as_type_specifier))), loc((yyvsp[(2) - (2)].sel(as_expression_list))) );
05105             tid->type_specifiers_get()->push_back((yyvsp[(1) - (2)].sel(as_type_specifier)));
05106             (yyval.sel(as_expression)) = as_expression_functional_style_cast::create( loc((yyvsp[(1) - (2)].sel(as_type_specifier))), tid, UNWRAP((yyvsp[(2) - (2)].sel(as_expression_list))) ); ;}
05107     break;
05108 
05109   case 215:
05110 #line 1415 "parser.y"
05111     { (yyval.sel(as_expression)) = as_expression_member_access_dot::create( loc((yyvsp[(2) - (3)].sel(bison_token))), (yyvsp[(1) - (3)].sel(as_expression)), (yyvsp[(3) - (3)].sel(as_name)) ); ;}
05112     break;
05113 
05114   case 216:
05115 #line 1417 "parser.y"
05116     { (yyval.sel(as_expression)) = as_expression_member_access_arrow::create( loc((yyvsp[(2) - (3)].sel(bison_token))), (yyvsp[(1) - (3)].sel(as_expression)), (yyvsp[(3) - (3)].sel(as_name)) ); ;}
05117     break;
05118 
05119   case 217:
05120 #line 1420 "parser.y"
05121     { (yyval.sel(as_expression)) = as_expression_pseudo_destruct_dot::create( loc((yyvsp[(1) - (3)].sel(as_expression))), (yyvsp[(1) - (3)].sel(as_expression)), (yyvsp[(3) - (3)].sel(as_name)) ); ;}
05122     break;
05123 
05124   case 218:
05125 #line 1422 "parser.y"
05126     { (yyval.sel(as_expression)) = as_expression_pseudo_destruct_arrow::create( loc((yyvsp[(1) - (3)].sel(as_expression))), (yyvsp[(1) - (3)].sel(as_expression)), (yyvsp[(3) - (3)].sel(as_name)) ); ;}
05127     break;
05128 
05129   case 219:
05130 #line 1425 "parser.y"
05131     { (yyval.sel(as_expression)) = as_expression_plus_plus_post::create( loc((yyvsp[(2) - (2)].sel(bison_token))), (yyvsp[(1) - (2)].sel(as_expression)) ); ;}
05132     break;
05133 
05134   case 220:
05135 #line 1427 "parser.y"
05136     { (yyval.sel(as_expression)) = as_expression_minus_minus_post::create( loc((yyvsp[(2) - (2)].sel(bison_token))), (yyvsp[(1) - (2)].sel(as_expression)) ); ;}
05137     break;
05138 
05139   case 221:
05140 #line 1430 "parser.y"
05141     { (yyval.sel(as_expression)) = as_expression_dynamic_cast::create( loc((yyvsp[(1) - (7)].sel(bison_token))), (yyvsp[(3) - (7)].sel(as_type_id)), (yyvsp[(6) - (7)].sel(as_expression)) ); ;}
05142     break;
05143 
05144   case 222:
05145 #line 1432 "parser.y"
05146     { (yyval.sel(as_expression)) = as_expression_static_cast::create( loc((yyvsp[(1) - (7)].sel(bison_token))), (yyvsp[(3) - (7)].sel(as_type_id)), (yyvsp[(6) - (7)].sel(as_expression)) ); ;}
05147     break;
05148 
05149   case 223:
05150 #line 1434 "parser.y"
05151     { (yyval.sel(as_expression)) = as_expression_reinterpret_cast::create( loc((yyvsp[(1) - (7)].sel(bison_token))), (yyvsp[(3) - (7)].sel(as_type_id)), (yyvsp[(6) - (7)].sel(as_expression)) ); ;}
05152     break;
05153 
05154   case 224:
05155 #line 1436 "parser.y"
05156     { (yyval.sel(as_expression)) = as_expression_const_cast::create( loc((yyvsp[(1) - (7)].sel(bison_token))), (yyvsp[(3) - (7)].sel(as_type_id)), (yyvsp[(6) - (7)].sel(as_expression)) ); ;}
05157     break;
05158 
05159   case 225:
05160 #line 1439 "parser.y"
05161     { (yyval.sel(as_expression)) = as_expression_typeid_expr::create( loc((yyvsp[(1) - (6)].sel(bison_token))), (yyvsp[(5) - (6)].sel(as_expression)) ); ;}
05162     break;
05163 
05164   case 226:
05165 #line 1441 "parser.y"
05166     { (yyval.sel(as_expression)) = as_expression_typeid_type::create( loc((yyvsp[(1) - (6)].sel(bison_token))), (yyvsp[(5) - (6)].sel(as_type_id)) ); ;}
05167     break;
05168 
05169   case 227:
05170 #line 1449 "parser.y"
05171     { (yyval.sel(as_type_specifier)) = as_elaborated_type_specifier_typename::create( loc((yyvsp[(1) - (4)].sel(bison_token))), as_name::create(loc((yyvsp[(2) - (4)].sel(as_name))),(yyvsp[(3) - (4)].sel(as_name)),(yyvsp[(4) - (4)].sel(as_identifier)),true) ); ;}
05172     break;
05173 
05174   case 228:
05175 #line 1451 "parser.y"
05176     { (yyval.sel(as_type_specifier)) = as_elaborated_type_specifier_typename::create( loc((yyvsp[(1) - (4)].sel(bison_token))), as_name::create(loc((yyvsp[(2) - (4)].sel(as_name))),(yyvsp[(3) - (4)].sel(as_name)),(yyvsp[(4) - (4)].sel(as_template_id)),true) ); ;}
05177     break;
05178 
05179   case 229:
05180 #line 1453 "parser.y"
05181     { (yyval.sel(as_type_specifier)) = as_elaborated_type_specifier_typename::create( loc((yyvsp[(1) - (6)].sel(bison_token))), as_name::create(loc((yyvsp[(2) - (6)].sel(as_name))),(yyvsp[(3) - (6)].sel(as_name)),(yyvsp[(6) - (6)].sel(as_template_id)),true) ); ;}
05182     break;
05183 
05184   case 230:
05185 #line 1458 "parser.y"
05186     { (yyval.sel(as_identifier)) = TOK2ID((yyvsp[(1) - (1)].sel(bison_id_token))); ;}
05187     break;
05188 
05189   case 231:
05190 #line 1460 "parser.y"
05191     { (yyval.sel(as_identifier)) = TOK2ID((yyvsp[(1) - (1)].sel(bison_id_token))); ;}
05192     break;
05193 
05194   case 232:
05195 #line 1462 "parser.y"
05196     { (yyval.sel(as_identifier)) = TOK2ID((yyvsp[(1) - (1)].sel(bison_id_token))); ;}
05197     break;
05198 
05199   case 233:
05200 #line 1464 "parser.y"
05201     { (yyval.sel(as_identifier)) = TOK2ID((yyvsp[(1) - (1)].sel(bison_id_token))); ;}
05202     break;
05203 
05204   case 234:
05205 #line 1466 "parser.y"
05206     { (yyval.sel(as_identifier)) = TOK2ID((yyvsp[(1) - (1)].sel(bison_id_token))); ;}
05207     break;
05208 
05209   case 235:
05210 #line 1471 "parser.y"
05211     { (yyval.sel(as_template_id)) = as_template_id::create( loc((yyvsp[(1) - (2)].sel(bison_id_token))), (yyvsp[(1) - (2)].sel(bison_id_token)), UNWRAP((yyvsp[(2) - (2)].sel(as_template_argument_list))) ); ;}
05212     break;
05213 
05214   case 236:
05215 #line 1473 "parser.y"
05216     { (yyval.sel(as_template_id)) = as_template_id::create( loc((yyvsp[(1) - (2)].sel(bison_id_token))), (yyvsp[(1) - (2)].sel(bison_id_token)), UNWRAP((yyvsp[(2) - (2)].sel(as_template_argument_list))) ); ;}
05217     break;
05218 
05219   case 237:
05220 #line 1475 "parser.y"
05221     { (yyval.sel(as_template_id)) = as_template_id::create( loc((yyvsp[(1) - (2)].sel(bison_id_token))), (yyvsp[(1) - (2)].sel(bison_id_token)), UNWRAP((yyvsp[(2) - (2)].sel(as_template_argument_list))) ); ;}
05222     break;
05223 
05224   case 238:
05225 #line 1480 "parser.y"
05226     { (yyval.sel(as_expression_list)) = EMPTY_WRAPPER( as_expression_list, loc((yyvsp[(1) - (2)].sel(bison_token))), as_expression ); ;}
05227     break;
05228 
05229   case 239:
05230 #line 1482 "parser.y"
05231     { (yyval.sel(as_expression_list)) = (yyvsp[(2) - (3)].sel(as_expression_list)); ;}
05232     break;
05233 
05234   case 240:
05235 #line 1487 "parser.y"
05236     { NEW_WRAPPER_W1( (yyval.sel(as_expression_list)), as_expression_list, loc((yyvsp[(1) - (1)].sel(as_expression))), as_expression, (yyvsp[(1) - (1)].sel(as_expression)) ); ;}
05237     break;
05238 
05239   case 241:
05240 #line 1489 "parser.y"
05241     { (yyval.sel(as_expression_list)) = (yyvsp[(1) - (3)].sel(as_expression_list)); WRAPPER_APPEND( (yyval.sel(as_expression_list)), (yyvsp[(3) - (3)].sel(as_expression)) ); ;}
05242     break;
05243 
05244   case 242:
05245 #line 1494 "parser.y"
05246     { (yyval.sel(as_identifier)) = TOK2ID((yyvsp[(1) - (1)].sel(bison_id_token))); ;}
05247     break;
05248 
05249   case 243:
05250 #line 1496 "parser.y"
05251     { (yyval.sel(as_identifier)) = TOK2ID((yyvsp[(1) - (1)].sel(bison_id_token))); ;}
05252     break;
05253 
05254   case 244:
05255 #line 1502 "parser.y"
05256     { (yyval.sel(as_name)) = (yyvsp[(1) - (3)].sel(as_name));
05257             // make_sure_these_types_are_equal( $$, as_name::create( loc($3), $$->qualification_get(), $3, $$->was_qualified_get() ) );
05258             // otherwise the program is ill-formed
05259           ;}
05260     break;
05261 
05262   case 245:
05263 #line 1508 "parser.y"
05264     { (yyval.sel(as_name)) = as_name::create( loc((yyvsp[(1) - (3)].sel(as_name))), (yyvsp[(1) - (3)].sel(as_name)), (yyvsp[(3) - (3)].sel(as_identifier)), (yyvsp[(1) - (3)].sel(as_name))->was_qualified_get() ); ;}
05265     break;
05266 
05267   case 246:
05268 #line 1510 "parser.y"
05269     { (yyval.sel(as_name)) = as_name::create( loc((yyvsp[(1) - (4)].sel(as_name))), (yyvsp[(2) - (4)].sel(as_name)), (yyvsp[(4) - (4)].sel(as_identifier)), true ); ;}
05270     break;
05271 
05272   case 247:
05273 #line 1515 "parser.y"
05274     { (yyval.sel(as_name)) = as_name::create( loc((yyvsp[(1) - (4)].sel(as_name))), (yyvsp[(1) - (4)].sel(as_name)), (yyvsp[(2) - (4)].sel(as_identifier)), (yyvsp[(1) - (4)].sel(as_name))->was_qualified_get() ); ;}
05275     break;
05276 
05277   case 248:
05278 #line 1517 "parser.y"
05279     { (yyval.sel(as_name)) = as_name::create( loc((yyvsp[(1) - (5)].sel(as_name))), (yyvsp[(2) - (5)].sel(as_name)), (yyvsp[(3) - (5)].sel(as_identifier)), true ); ;}
05280     break;
05281 
05282   case 249:
05283 #line 1522 "parser.y"
05284     { (yyvsp[(2) - (2)].sel(as_name))->was_qualified_set( (yyvsp[(1) - (2)].sel(as_name))->was_qualified_get() ); (yyval.sel(as_name)) = (yyvsp[(2) - (2)].sel(as_name)); ;}
05285     break;
05286 
05287   case 250:
05288 #line 1524 "parser.y"
05289     { (yyvsp[(3) - (3)].sel(as_name))->was_qualified_set(true); (yyval.sel(as_name)) = (yyvsp[(3) - (3)].sel(as_name)); ;}
05290     break;
05291 
05292   case 251:
05293 #line 1526 "parser.y"
05294     { (yyvsp[(5) - (5)].sel(as_name))->was_qualified_set(true); (yyval.sel(as_name)) = (yyvsp[(5) - (5)].sel(as_name)); ;}
05295     break;
05296 
05297   case 252:
05298 #line 1531 "parser.y"
05299     { (yyval.sel(as_name)) = as_name::create( loc((yyvsp[(1) - (1)].sel(bison_id_token))), CURR_CTX(loc((yyvsp[(1) - (1)].sel(bison_id_token)))), TOK2ID((yyvsp[(1) - (1)].sel(bison_id_token))) ); ;}
05300     break;
05301 
05302   case 253:
05303 #line 1533 "parser.y"
05304     { (yyval.sel(as_name)) = as_name::create( loc((yyvsp[(1) - (1)].sel(bison_id_token))), CURR_CTX(loc((yyvsp[(1) - (1)].sel(bison_id_token)))), TOK2ID((yyvsp[(1) - (1)].sel(bison_id_token))) ); ;}
05305     break;
05306 
05307   case 254:
05308 #line 1535 "parser.y"
05309     { (yyval.sel(as_name)) = as_name::create( loc((yyvsp[(1) - (1)].sel(bison_id_token))), CURR_CTX(loc((yyvsp[(1) - (1)].sel(bison_id_token)))), TOK2ID((yyvsp[(1) - (1)].sel(bison_id_token))) ); ;}
05310     break;
05311 
05312   case 255:
05313 #line 1545 "parser.y"
05314     { (yyval.sel(as_name)) = as_name::create( loc((yyvsp[(1) - (2)].sel(bison_id_token))), CURR_CTX(loc((yyvsp[(1) - (2)].sel(bison_id_token)))), as_template_id::create(loc((yyvsp[(1) - (2)].sel(bison_id_token))),(yyvsp[(1) - (2)].sel(bison_id_token)),UNWRAP((yyvsp[(2) - (2)].sel(as_template_argument_list)))) ); ;}
05315     break;
05316 
05317   case 256:
05318 #line 1547 "parser.y"
05319     { (yyval.sel(as_name)) = as_name::create( loc((yyvsp[(1) - (1)].sel(bison_id_token))), CURR_CTX(loc((yyvsp[(1) - (1)].sel(bison_id_token)))), as_template_id::create(loc((yyvsp[(1) - (1)].sel(bison_id_token))),(yyvsp[(1) - (1)].sel(bison_id_token)),NULL) ); ;}
05320     break;
05321 
05322   case 257:
05323 #line 1549 "parser.y"
05324     { (yyval.sel(as_name)) = as_name::create( loc((yyvsp[(1) - (1)].sel(bison_id_token))), CURR_CTX(loc((yyvsp[(1) - (1)].sel(bison_id_token)))), TOK2ID((yyvsp[(1) - (1)].sel(bison_id_token))) ); ;}
05325     break;
05326 
05327   case 258:
05328 #line 1551 "parser.y"
05329     { (yyval.sel(as_name)) = as_name::create( loc((yyvsp[(1) - (1)].sel(bison_id_token))), CURR_CTX(loc((yyvsp[(1) - (1)].sel(bison_id_token)))), TOK2ID((yyvsp[(1) - (1)].sel(bison_id_token))) ); ;}
05330     break;
05331 
05332   case 259:
05333 #line 1553 "parser.y"
05334     { (yyval.sel(as_name)) = as_name::create( loc((yyvsp[(1) - (1)].sel(bison_id_token))), CURR_CTX(loc((yyvsp[(1) - (1)].sel(bison_id_token)))), TOK2ID((yyvsp[(1) - (1)].sel(bison_id_token))) ); ;}
05335     break;
05336 
05337   case 260:
05338 #line 1555 "parser.y"
05339     { (yyval.sel(as_name)) = (yyvsp[(1) - (1)].sel(as_name)); ;}
05340     break;
05341 
05342   case 261:
05343 #line 1557 "parser.y"
05344     { (yyval.sel(as_name)) = as_name::create( loc((yyvsp[(1) - (2)].sel(bison_id_token))), CURR_CTX(loc((yyvsp[(1) - (2)].sel(bison_id_token)))), as_template_id::create(loc((yyvsp[(1) - (2)].sel(bison_id_token))),(yyvsp[(1) - (2)].sel(bison_id_token)),UNWRAP((yyvsp[(2) - (2)].sel(as_template_argument_list)))) ); ;}
05345     break;
05346 
05347   case 262:
05348 #line 1559 "parser.y"
05349     { (yyval.sel(as_name)) = as_name::create( loc((yyvsp[(1) - (1)].sel(bison_id_token))), CURR_CTX(loc((yyvsp[(1) - (1)].sel(bison_id_token)))), as_template_id::create(loc((yyvsp[(1) - (1)].sel(bison_id_token))),(yyvsp[(1) - (1)].sel(bison_id_token)),NULL) ); ;}
05350     break;
05351 
05352   case 263:
05353 #line 1561 "parser.y"
05354     { (yyval.sel(as_name)) = as_name::create( loc((yyvsp[(1) - (2)].sel(bison_id_token))), CURR_CTX(loc((yyvsp[(1) - (2)].sel(bison_id_token)))), as_template_id::create(loc((yyvsp[(1) - (2)].sel(bison_id_token))),(yyvsp[(1) - (2)].sel(bison_id_token)),UNWRAP((yyvsp[(2) - (2)].sel(as_template_argument_list)))) ); ;}
05355     break;
05356 
05357   case 264:
05358 #line 1566 "parser.y"
05359     { (yyvsp[(2) - (2)].sel(as_name))->was_qualified_set( (yyvsp[(1) - (2)].sel(as_name))->was_qualified_get() ); (yyval.sel(as_name)) = (yyvsp[(2) - (2)].sel(as_name)); ;}
05360     break;
05361 
05362   case 265:
05363 #line 1568 "parser.y"
05364     { (yyvsp[(3) - (3)].sel(as_name))->was_qualified_set(true); (yyval.sel(as_name)) = (yyvsp[(3) - (3)].sel(as_name)); ;}
05365     break;
05366 
05367   case 266:
05368 #line 1570 "parser.y"
05369     { (yyvsp[(5) - (5)].sel(as_name))->was_qualified_set(true); (yyval.sel(as_name)) = (yyvsp[(5) - (5)].sel(as_name)); ;}
05370     break;
05371 
05372   case 267:
05373 #line 1575 "parser.y"
05374     { (yyval.sel(as_name)) = as_name::create( loc((yyvsp[(1) - (1)].sel(bison_id_token))), CURR_CTX(loc((yyvsp[(1) - (1)].sel(bison_id_token)))), TOK2ID((yyvsp[(1) - (1)].sel(bison_id_token))) ); ;}
05375     break;
05376 
05377   case 268:
05378 #line 1577 "parser.y"
05379     {
05380                 /* ill-formed; error is reported in semantic analysis */
05381                 (yyval.sel(as_name)) = as_name::create( loc((yyvsp[(1) - (1)].sel(bison_id_token))), CURR_CTX(loc((yyvsp[(1) - (1)].sel(bison_id_token)))), TOK2ID((yyvsp[(1) - (1)].sel(bison_id_token))) );
05382           ;}
05383     break;
05384 
05385   case 269:
05386 #line 1583 "parser.y"
05387     { (yyval.sel(as_name)) = (yyvsp[(1) - (1)].sel(as_name)); ;}
05388     break;
05389 
05390   case 270:
05391 #line 1585 "parser.y"
05392     { (yyval.sel(as_name)) = (yyvsp[(1) - (1)].sel(as_name)); ;}
05393     break;
05394 
05395   case 271:
05396 #line 1587 "parser.y"
05397     { (yyval.sel(as_name)) = as_name::create( loc((yyvsp[(1) - (2)].sel(bison_id_token))), CURR_CTX(loc((yyvsp[(1) - (2)].sel(bison_id_token)))), as_template_id::create(loc((yyvsp[(1) - (2)].sel(bison_id_token))),(yyvsp[(1) - (2)].sel(bison_id_token)),UNWRAP((yyvsp[(2) - (2)].sel(as_template_argument_list)))) ); ;}
05398     break;
05399 
05400   case 272:
05401 #line 1589 "parser.y"
05402     { (yyval.sel(as_name)) = as_name::create( loc((yyvsp[(1) - (1)].sel(bison_id_token))), CURR_CTX(loc((yyvsp[(1) - (1)].sel(bison_id_token)))), as_template_id::create(loc((yyvsp[(1) - (1)].sel(bison_id_token))),(yyvsp[(1) - (1)].sel(bison_id_token)),NULL) ); ;}
05403     break;
05404 
05405   case 273:
05406 #line 1591 "parser.y"
05407     { (yyval.sel(as_name)) = as_name::create( loc((yyvsp[(1) - (2)].sel(bison_id_token))), CURR_CTX(loc((yyvsp[(1) - (2)].sel(bison_id_token)))), as_template_id::create(loc((yyvsp[(1) - (2)].sel(bison_id_token))),(yyvsp[(1) - (2)].sel(bison_id_token)),UNWRAP((yyvsp[(2) - (2)].sel(as_template_argument_list)))) ); ;}
05408     break;
05409 
05410   case 274:
05411 #line 1597 "parser.y"
05412     {
05413                 (yyval.sel(as_name)) = as_name::create( loc((yyvsp[(1) - (2)].sel(bison_id_token))), CURR_CTX(loc((yyvsp[(1) - (2)].sel(bison_id_token)))), TOK2ID((yyvsp[(1) - (2)].sel(bison_id_token))) );
05414                 hinter::qual_scope_set( (yyvsp[(1) - (2)].sel(bison_id_token))->found_decls_get()->begin()->dncast<ss_structure_declaration>()->body_get() );
05415           ;}
05416     break;
05417 
05418   case 275:
05419 #line 1602 "parser.y"
05420     {
05421                 (yyval.sel(as_name)) = as_name::create( loc((yyvsp[(1) - (3)].sel(bison_id_token))), CURR_CTX(loc((yyvsp[(1) - (3)].sel(bison_id_token)))), as_template_id::create(loc((yyvsp[(1) - (3)].sel(bison_id_token))),(yyvsp[(1) - (3)].sel(bison_id_token)),UNWRAP((yyvsp[(2) - (3)].sel(as_template_argument_list)))) );
05422           ;}
05423     break;
05424 
05425   case 276:
05426 #line 1606 "parser.y"
05427     {
05428                 (yyval.sel(as_name)) = as_name::create( loc((yyvsp[(1) - (3)].sel(bison_id_token))), CURR_CTX(loc((yyvsp[(1) - (3)].sel(bison_id_token)))), as_template_id::create(loc((yyvsp[(1) - (3)].sel(bison_id_token))),(yyvsp[(1) - (3)].sel(bison_id_token)),UNWRAP((yyvsp[(2) - (3)].sel(as_template_argument_list)))) );
05429           ;}
05430     break;
05431 
05432   case 277:
05433 #line 1610 "parser.y"
05434     {
05435                 (yyval.sel(as_name)) = as_name::create( loc((yyvsp[(1) - (2)].sel(bison_id_token))), CURR_CTX(loc((yyvsp[(1) - (2)].sel(bison_id_token)))), TOK2ID((yyvsp[(1) - (2)].sel(bison_id_token))) );
05436                 hinter::qual_scope_set( (yyvsp[(1) - (2)].sel(bison_id_token))->found_decls_get()->begin()->dncast<ss_namespace_definition>()->body_get() );
05437           ;}
05438     break;
05439 
05440   case 278:
05441 #line 1616 "parser.y"
05442     {
05443                 (yyval.sel(as_name)) = as_name::create( loc((yyvsp[(1) - (3)].sel(as_name))), (yyvsp[(1) - (3)].sel(as_name)), TOK2ID((yyvsp[(2) - (3)].sel(bison_id_token))), true );
05444                 hinter::qual_scope_set( (yyvsp[(2) - (3)].sel(bison_id_token))->found_decls_get()->begin()->dncast<ss_structure_declaration>()->body_get() );
05445           ;}
05446     break;
05447 
05448   case 279:
05449 #line 1621 "parser.y"
05450     {
05451                 (yyval.sel(as_name)) = as_name::create( loc((yyvsp[(1) - (4)].sel(as_name))), (yyvsp[(1) - (4)].sel(as_name)), as_template_id::create(loc((yyvsp[(2) - (4)].sel(bison_id_token))),(yyvsp[(2) - (4)].sel(bison_id_token)),UNWRAP((yyvsp[(3) - (4)].sel(as_template_argument_list)))), true );
05452           ;}
05453     break;
05454 
05455   case 280:
05456 #line 1625 "parser.y"
05457     {
05458                 (yyval.sel(as_name)) = as_name::create( loc((yyvsp[(1) - (3)].sel(as_name))), (yyvsp[(1) - (3)].sel(as_name)), TOK2ID((yyvsp[(2) - (3)].sel(bison_id_token))), true );
05459                 hinter::qual_scope_set( (yyvsp[(2) - (3)].sel(bison_id_token))->found_decls_get()->begin()->dncast<ss_namespace_definition>()->body_get() );
05460           ;}
05461     break;
05462 
05463   case 281:
05464 #line 1630 "parser.y"
05465     {
05466                 (yyval.sel(as_name)) = as_name::create( loc((yyvsp[(1) - (6)].sel(as_name))), (yyvsp[(1) - (6)].sel(as_name)), as_template_id::create(loc((yyvsp[(4) - (6)].sel(bison_id_token))),(yyvsp[(4) - (6)].sel(bison_id_token)),UNWRAP((yyvsp[(5) - (6)].sel(as_template_argument_list)))), true );
05467           ;}
05468     break;
05469 
05470   case 282:
05471 #line 1637 "parser.y"
05472     { (yyval.sel(as_name)) = as_name::create( loc((yyvsp[(1) - (2)].sel(as_op_function_id))), CURR_CTX(loc((yyvsp[(1) - (2)].sel(as_op_function_id)))), (yyvsp[(1) - (2)].sel(as_op_function_id)) ); ;}
05473     break;
05474 
05475   case 283:
05476 #line 1640 "parser.y"
05477     { (yyvsp[(1) - (3)].sel(as_op_function_id))->arguments_set( UNWRAP((yyvsp[(3) - (3)].sel(as_template_argument_list))) );
05478             (yyval.sel(as_name)) = as_name::create( loc((yyvsp[(1) - (3)].sel(as_op_function_id))), CURR_CTX(loc((yyvsp[(1) - (3)].sel(as_op_function_id)))), (yyvsp[(1) - (3)].sel(as_op_function_id)) ); ;}
05479     break;
05480 
05481   case 284:
05482 #line 1645 "parser.y"
05483     {
05484                 /* look-ahead was surely read, see the following rule :) */
05485                 NO_PAD_TOKEN_BUG( loc(manager::prev_yylex()) );
05486           ;}
05487     break;
05488 
05489   case 285:
05490 #line 1650 "parser.y"
05491     { NO_PAD_TOKEN_BUG( loc((yyvsp[(2) - (2)].sel(bison_token))) ); ;}
05492     break;
05493 
05494   case 286:
05495 #line 1655 "parser.y"
05496     { (yyval.sel(as_op_function_id)) = as_op_function_id::create( loc((yyvsp[(1) - (3)].sel(bison_token))), UNWTOK((yyvsp[(2) - (3)].sel(bison_token))), NULL );
05497             /* we cannot be sure about the lookahead token here, because
05498              * when parsing operator new, we have to look ahead for a bracket;
05499              * when parsing operator +, we do not
05500              */
05501             if (yychar != YYEMPTY)
05502                 clear_lookahead();
05503             int next_val = manager::peek()->type_get();
05504             manager::start( TOK_START_TO_BE_DISCARDED );
05505             /* TODO: inspect the operator whether it is templated, or not. change 'false' in the condition below then */
05506             if (false && next_val == TOK_LT)
05507                 manager::commit( TOK_PAD_TEMPL_OP );
05508             else
05509                 manager::commit( TOK_PAD_OP_NOT_TEMPL );
05510           ;}
05511     break;
05512 
05513   case 329:
05514 #line 1719 "parser.y"
05515     { (yyval.sel(as_name)) = as_name::create( loc((yyvsp[(1) - (3)].sel(bison_token))), CURR_CTX(loc((yyvsp[(3) - (3)].sel(as_type_specifier_seq)))), as_conv_function_id::create( loc((yyvsp[(1) - (3)].sel(bison_token))), UNWRAP((yyvsp[(3) - (3)].sel(as_type_specifier_seq))), EMPTY_LIST(as_declarator_op) ) ); ;}
05516     break;
05517 
05518   case 330:
05519 #line 1721 "parser.y"
05520     { (yyval.sel(as_name)) = as_name::create( loc((yyvsp[(1) - (4)].sel(bison_token))), CURR_CTX(loc((yyvsp[(3) - (4)].sel(as_type_specifier_seq)))), as_conv_function_id::create( loc((yyvsp[(1) - (4)].sel(bison_token))), UNWRAP((yyvsp[(3) - (4)].sel(as_type_specifier_seq))), UNWRAP((yyvsp[(4) - (4)].sel(as_declarator_op_seq))) ) ); ;}
05521     break;
05522 
05523   case 331:
05524 #line 1726 "parser.y"
05525     { (yyval.sel(as_mem_initializer_list)) = EMPTY_WRAPPER( as_mem_initializer_list, loc((yyvsp[(1) - (1)].sel(as_no_token))), as_mem_initializer ); ;}
05526     break;
05527 
05528   case 332:
05529 #line 1728 "parser.y"
05530     { (yyval.sel(as_mem_initializer_list)) = (yyvsp[(2) - (2)].sel(as_mem_initializer_list)); ;}
05531     break;
05532 
05533   case 333:
05534 #line 1733 "parser.y"
05535     { NEW_WRAPPER_W1( (yyval.sel(as_mem_initializer_list)), as_mem_initializer_list, loc((yyvsp[(1) - (1)].sel(as_mem_initializer))), as_mem_initializer, (yyvsp[(1) - (1)].sel(as_mem_initializer)) ); ;}
05536     break;
05537 
05538   case 334:
05539 #line 1735 "parser.y"
05540     { (yyval.sel(as_mem_initializer_list)) = (yyvsp[(1) - (3)].sel(as_mem_initializer_list)); WRAPPER_APPEND( (yyval.sel(as_mem_initializer_list)), (yyvsp[(3) - (3)].sel(as_mem_initializer)) ); ;}
05541     break;
05542 
05543   case 335:
05544 #line 1741 "parser.y"
05545     { (yyval.sel(as_mem_initializer)) = as_mem_initializer::create( loc((yyvsp[(1) - (2)].sel(bison_id_token))), as_name::create(loc((yyvsp[(1) - (2)].sel(bison_id_token))),CURR_CTX(loc((yyvsp[(1) - (2)].sel(bison_id_token)))),TOK2ID((yyvsp[(1) - (2)].sel(bison_id_token)))), UNWRAP((yyvsp[(2) - (2)].sel(as_expression_list))) ); ;}
05546     break;
05547 
05548   case 336:
05549 #line 1743 "parser.y"
05550     { (yyval.sel(as_mem_initializer)) = as_mem_initializer::create( loc((yyvsp[(1) - (2)].sel(bison_id_token))), as_name::create(loc((yyvsp[(1) - (2)].sel(bison_id_token))),CURR_CTX(loc((yyvsp[(1) - (2)].sel(bison_id_token)))),TOK2ID((yyvsp[(1) - (2)].sel(bison_id_token)))), UNWRAP((yyvsp[(2) - (2)].sel(as_expression_list))) ); ;}
05551     break;
05552 
05553   case 337:
05554 #line 1745 "parser.y"
05555     { (yyval.sel(as_mem_initializer)) = as_mem_initializer::create( loc((yyvsp[(1) - (3)].sel(as_name))), as_name::create(loc((yyvsp[(1) - (3)].sel(as_name))),(yyvsp[(1) - (3)].sel(as_name)),TOK2ID((yyvsp[(2) - (3)].sel(bison_id_token))),(yyvsp[(1) - (3)].sel(as_name))->was_qualified_get()), UNWRAP((yyvsp[(3) - (3)].sel(as_expression_list))) ); ;}
05556     break;
05557 
05558   case 338:
05559 #line 1747 "parser.y"
05560     { (yyval.sel(as_mem_initializer)) = as_mem_initializer::create( loc((yyvsp[(1) - (4)].sel(as_name))), as_name::create(loc((yyvsp[(1) - (4)].sel(as_name))),(yyvsp[(1) - (4)].sel(as_name)),as_template_id::create(loc((yyvsp[(2) - (4)].sel(bison_id_token))),(yyvsp[(2) - (4)].sel(bison_id_token)),UNWRAP((yyvsp[(3) - (4)].sel(as_template_argument_list)))),(yyvsp[(1) - (4)].sel(as_name))->was_qualified_get()), UNWRAP((yyvsp[(4) - (4)].sel(as_expression_list))) ); ;}
05561     break;
05562 
05563   case 339:
05564 #line 1749 "parser.y"
05565     { (yyval.sel(as_mem_initializer)) = as_mem_initializer::create( loc((yyvsp[(1) - (4)].sel(as_name))), as_name::create(loc((yyvsp[(1) - (4)].sel(as_name))),(yyvsp[(2) - (4)].sel(as_name)),TOK2ID((yyvsp[(3) - (4)].sel(bison_id_token))),true), UNWRAP((yyvsp[(4) - (4)].sel(as_expression_list))) ); ;}
05566     break;
05567 
05568   case 340:
05569 #line 1751 "parser.y"
05570     { (yyval.sel(as_mem_initializer)) = as_mem_initializer::create( loc((yyvsp[(1) - (5)].sel(as_name))), as_name::create(loc((yyvsp[(1) - (5)].sel(as_name))),(yyvsp[(2) - (5)].sel(as_name)),as_template_id::create(loc((yyvsp[(3) - (5)].sel(bison_id_token))),(yyvsp[(3) - (5)].sel(bison_id_token)),UNWRAP((yyvsp[(4) - (5)].sel(as_template_argument_list)))),true), UNWRAP((yyvsp[(5) - (5)].sel(as_expression_list))) ); ;}
05571     break;
05572 
05573   case 341:
05574 #line 1758 "parser.y"
05575     { (yyval.sel(as_declaration_seq)) = EMPTY_WRAPPER( as_declaration_seq, loc((yyvsp[(1) - (1)].sel(as_no_token))), as_declaration ); ;}
05576     break;
05577 
05578   case 342:
05579 #line 1760 "parser.y"
05580     { (yyval.sel(as_declaration_seq)) = (yyvsp[(1) - (1)].sel(as_declaration_seq)); ;}
05581     break;
05582 
05583   case 343:
05584 #line 1765 "parser.y"
05585     { NEW_WRAPPER_W1( (yyval.sel(as_declaration_seq)), as_declaration_seq, loc((yyvsp[(1) - (1)].sel(as_declaration))), as_declaration, (yyvsp[(1) - (1)].sel(as_declaration)) ); ;}
05586     break;
05587 
05588   case 344:
05589 #line 1767 "parser.y"
05590     { (yyval.sel(as_declaration_seq)) = (yyvsp[(1) - (2)].sel(as_declaration_seq)); WRAPPER_APPEND( (yyval.sel(as_declaration_seq)), (yyvsp[(2) - (2)].sel(as_declaration)) ); ;}
05591     break;
05592 
05593   case 345:
05594 #line 1776 "parser.y"
05595     {
05596                 clear_lookahead();
05597                 disambiguate_ctor_nmspc_scope( (yyvsp[(1) - (2)].sel(as_declaration_specifier_seq)) );
05598                 (yyval.sel(as_declaration_specifier_seq)) = (yyvsp[(1) - (2)].sel(as_declaration_specifier_seq));
05599                 sa_parser_action_logger << "decl spec seq in namespace scope\n" << msg::eolog;
05600                 sa_simple_declaration::instance()->save_declaration_specifiers((yyvsp[(1) - (2)].sel(as_declaration_specifier_seq)));
05601           ;}
05602     break;
05603 
05604   case 346:
05605 #line 1788 "parser.y"
05606     { (yyval.sel(as_identifier)) = (yyvsp[(1) - (1)].sel(as_identifier)); ;}
05607     break;
05608 
05609   case 347:
05610 #line 1793 "parser.y"
05611     { (yyval.sel(as_declaration)) = (yyvsp[(1) - (1)].sel(as_block_declaration)); ;}
05612     break;
05613 
05614   case 348:
05615 #line 1795 "parser.y"
05616     { (yyval.sel(as_declaration)) = (yyvsp[(1) - (1)].sel(as_function_definition)); ;}
05617     break;
05618 
05619   case 349:
05620 #line 1797 "parser.y"
05621     { (yyval.sel(as_declaration)) = (yyvsp[(1) - (1)].sel(as_namespace_definition)); ;}
05622     break;
05623 
05624   case 350:
05625 #line 1801 "parser.y"
05626     { (yyval.sel(as_declaration)) = as_template_declaration::create( loc((yyvsp[(1) - (5)].sel(bison_token))), NULL, UNWRAP((yyvsp[(3) - (5)].sel(as_template_param_list))), (yyvsp[(5) - (5)].sel(as_declaration)) ); ;}
05627     break;
05628 
05629   case 351:
05630 #line 1803 "parser.y"
05631     { (yyval.sel(as_declaration)) = as_template_declaration::create( loc((yyvsp[(2) - (6)].sel(bison_token))), UNWTOK((yyvsp[(1) - (6)].sel(bison_token))), UNWRAP((yyvsp[(4) - (6)].sel(as_template_param_list))), (yyvsp[(6) - (6)].sel(as_declaration)) ); ;}
05632     break;
05633 
05634   case 352:
05635 #line 1807 "parser.y"
05636     { (yyval.sel(as_declaration)) = as_explicit_instantiation::create( loc((yyvsp[(1) - (2)].sel(bison_token))), (yyvsp[(2) - (2)].sel(as_declaration)) ); ;}
05637     break;
05638 
05639   case 353:
05640 #line 1815 "parser.y"
05641     { (yyval.sel(as_declaration)) = as_explicit_specialization::create( loc((yyvsp[(1) - (5)].sel(bison_token))), (yyvsp[(5) - (5)].sel(as_declaration)) ); ;}
05642     break;
05643 
05644   case 354:
05645 #line 1819 "parser.y"
05646     { (yyval.sel(as_declaration)) = as_linkage_specification::create( loc((yyvsp[(1) - (5)].sel(bison_token))), UNWTOK((yyvsp[(2) - (5)].sel(bison_token))), UNWRAP((yyvsp[(4) - (5)].sel(as_declaration_seq))) ); ;}
05647     break;
05648 
05649   case 355:
05650 #line 1821 "parser.y"
05651     { ptr<as_linkage_specification> ls = as_linkage_specification::create( loc((yyvsp[(1) - (3)].sel(bison_token))), UNWTOK((yyvsp[(2) - (3)].sel(bison_token))), EMPTY_LIST(as_declaration) );
05652             LIST_APPEND( ls->declarations_get(), (yyvsp[(3) - (3)].sel(as_declaration)) );
05653             (yyval.sel(as_declaration)) = ls; ;}
05654     break;
05655 
05656   case 356:
05657 #line 1828 "parser.y"
05658     { (yyval.sel(as_block_declaration)) = as_simple_declaration::create( loc((yyvsp[(1) - (1)].sel(bison_token))), EMPTY_LIST(as_declaration_specifier), EMPTY_LIST(as_init_declarator) ); ;}
05659     break;
05660 
05661   case 357:
05662 #line 1830 "parser.y"
05663     { (yyval.sel(as_block_declaration)) = (yyvsp[(1) - (1)].sel(as_simple_declaration)); ;}
05664     break;
05665 
05666   case 358:
05667 #line 1833 "parser.y"
05668     { (yyval.sel(as_block_declaration)) = as_asm_declaration::create( loc((yyvsp[(1) - (5)].sel(bison_token))), UNWTOK((yyvsp[(3) - (5)].sel(bison_token))) ); ;}
05669     break;
05670 
05671   case 359:
05672 #line 1840 "parser.y"
05673     {
05674                 (yyval.sel(as_block_declaration)) = as_namespace_alias_declaration::create( loc((yyvsp[(2) - (5)].sel(as_identifier))), (yyvsp[(2) - (5)].sel(as_identifier)), (yyvsp[(4) - (5)].sel(as_name)) );
05675           ;}
05676     break;
05677 
05678   case 360:
05679 #line 1845 "parser.y"
05680     {
05681                 (yyval.sel(as_block_declaration)) = (yyvsp[(1) - (1)].sel(as_using_declaration));
05682                 sa_usings::instance()->process_declaration((yyvsp[(1) - (1)].sel(as_using_declaration)));
05683           ;}
05684     break;
05685 
05686   case 361:
05687 #line 1851 "parser.y"
05688     { (yyval.sel(as_block_declaration)) = as_using_directive::create( loc((yyvsp[(1) - (4)].sel(bison_token))), (yyvsp[(3) - (4)].sel(as_name)) ); ;}
05689     break;
05690 
05691   case 362:
05692 #line 1854 "parser.y"
05693     {
05694                 ptr<as_class_specifier> cs;
05695                 cs = as_class_specifier::create(
05696                         loc((yyvsp[(1) - (3)].sel(as_class_key))),
05697                         (yyvsp[(1) - (3)].sel(as_class_key)),
05698                         as_name::create(
05699                                 loc((yyvsp[(2) - (3)].sel(as_identifier))),
05700                                 CURR_CTX(loc((yyvsp[(2) - (3)].sel(as_identifier)))),
05701                                 (yyvsp[(2) - (3)].sel(as_identifier)) ),
05702                         EMPTY_LIST(as_base_specifier),
05703                         EMPTY_LIST(as_member_declaration));
05704                 (yyval.sel(as_block_declaration)) = as_class_forward_declaration::create( loc((yyvsp[(1) - (3)].sel(as_class_key))), (yyvsp[(1) - (3)].sel(as_class_key)), (yyvsp[(2) - (3)].sel(as_identifier)) );
05705                 sa_class_declaration::create()->process_forward_declaration(cs);
05706           ;}
05707     break;
05708 
05709   case 363:
05710 #line 1872 "parser.y"
05711     { (yyval.sel(as_block_declaration)) = (yyvsp[(1) - (1)].sel(as_simple_declaration)); ;}
05712     break;
05713 
05714   case 364:
05715 #line 1875 "parser.y"
05716     { (yyval.sel(as_block_declaration)) = as_asm_declaration::create( loc((yyvsp[(1) - (5)].sel(bison_token))), UNWTOK((yyvsp[(3) - (5)].sel(bison_token))) ); ;}
05717     break;
05718 
05719   case 365:
05720 #line 1882 "parser.y"
05721     {
05722                 (yyval.sel(as_block_declaration)) = as_namespace_alias_declaration::create( loc((yyvsp[(2) - (5)].sel(as_identifier))), (yyvsp[(2) - (5)].sel(as_identifier)), (yyvsp[(4) - (5)].sel(as_name)) );
05723           ;}
05724     break;
05725 
05726   case 366:
05727 #line 1887 "parser.y"
05728     {
05729                 (yyval.sel(as_block_declaration)) = (yyvsp[(1) - (1)].sel(as_using_declaration));
05730                 sa_usings::instance()->process_declaration((yyvsp[(1) - (1)].sel(as_using_declaration)));
05731           ;}
05732     break;
05733 
05734   case 367:
05735 #line 1893 "parser.y"
05736     { (yyval.sel(as_block_declaration)) = as_using_directive::create( loc((yyvsp[(1) - (4)].sel(bison_token))), (yyvsp[(3) - (4)].sel(as_name)) ); ;}
05737     break;
05738 
05739   case 368:
05740 #line 1896 "parser.y"
05741     { (yyval.sel(as_block_declaration)) = as_class_forward_declaration::create( loc((yyvsp[(1) - (3)].sel(as_class_key))), (yyvsp[(1) - (3)].sel(as_class_key)), (yyvsp[(2) - (3)].sel(as_identifier)) ); ;}
05742     break;
05743 
05744   case 369:
05745 #line 1902 "parser.y"
05746     { (yyval.sel(as_name)) = as_name::create( loc((yyvsp[(2) - (3)].sel(as_name))), (yyvsp[(2) - (3)].sel(as_name)), TOK2ID((yyvsp[(3) - (3)].sel(bison_id_token))), (yyvsp[(2) - (3)].sel(as_name))->was_qualified_get() ); ;}
05747     break;
05748 
05749   case 370:
05750 #line 1904 "parser.y"
05751     { (yyval.sel(as_name)) = as_name::create( loc((yyvsp[(2) - (4)].sel(as_name))), (yyvsp[(3) - (4)].sel(as_name)), TOK2ID((yyvsp[(4) - (4)].sel(bison_id_token))), true ); ;}
05752     break;
05753 
05754   case 371:
05755 #line 1909 "parser.y"
05756     {
05757                 (yyval.sel(as_name)) = as_name::create( loc((yyvsp[(1) - (3)].sel(bison_id_token))), CURR_CTX(loc((yyvsp[(1) - (3)].sel(bison_id_token)))), TOK2ID((yyvsp[(1) - (3)].sel(bison_id_token))) );
05758                 hinter::qual_scope_set( (yyvsp[(1) - (3)].sel(bison_id_token))->found_decls_get()->begin()->dncast<ss_namespace_definition>()->body_get() );
05759           ;}
05760     break;
05761 
05762   case 372:
05763 #line 1914 "parser.y"
05764     {
05765                 (yyval.sel(as_name)) = as_name::create( loc((yyvsp[(1) - (4)].sel(as_name))), (yyvsp[(1) - (4)].sel(as_name)), TOK2ID((yyvsp[(2) - (4)].sel(bison_id_token))), true );
05766                 hinter::qual_scope_set( (yyvsp[(2) - (4)].sel(bison_id_token))->found_decls_get()->begin()->dncast<ss_namespace_definition>()->body_get() );
05767           ;}
05768     break;
05769 
05770   case 373:
05771 #line 1922 "parser.y"
05772     { (yyval.sel(as_simple_declaration)) = as_simple_declaration::create( loc((yyvsp[(1) - (3)].sel(as_declaration_specifier_seq))), UNWRAP((yyvsp[(1) - (3)].sel(as_declaration_specifier_seq))), UNWRAP((yyvsp[(2) - (3)].sel(as_init_declarator_list))) ); ;}
05773     break;
05774 
05775   case 374:
05776 #line 1925 "parser.y"
05777     { ptr<as_simple_declaration> sd = as_simple_declaration::create( loc((yyvsp[(1) - (2)].sel(as_type_specifier))), EMPTY_LIST(as_declaration_specifier), EMPTY_LIST(as_init_declarator) );
05778             LIST_APPEND( sd->declaration_specifiers_get(), (yyvsp[(1) - (2)].sel(as_type_specifier)) );
05779             (yyval.sel(as_simple_declaration)) = sd; ;}
05780     break;
05781 
05782   case 375:
05783 #line 1932 "parser.y"
05784     { (yyval.sel(as_simple_declaration)) = as_simple_declaration::create( loc((yyvsp[(1) - (3)].sel(as_declaration_specifier_seq))), UNWRAP((yyvsp[(1) - (3)].sel(as_declaration_specifier_seq))), UNWRAP((yyvsp[(2) - (3)].sel(as_init_declarator_list))) ); ;}
05785     break;
05786 
05787   case 376:
05788 #line 1934 "parser.y"
05789     { ptr<as_simple_declaration> sd = as_simple_declaration::create( loc((yyvsp[(1) - (2)].sel(as_type_specifier))), EMPTY_LIST(as_declaration_specifier), EMPTY_LIST(as_init_declarator) );
05790             LIST_APPEND( sd->declaration_specifiers_get(), (yyvsp[(1) - (2)].sel(as_type_specifier)) );
05791             (yyval.sel(as_simple_declaration)) = sd; ;}
05792     break;
05793 
05794   case 377:
05795 #line 1946 "parser.y"
05796     { NEW_WRAPPER_W1( (yyval.sel(as_member_declarator_list)), as_member_declarator_list, loc((yyvsp[(1) - (1)].sel(as_ordinary_member_declarator))), as_member_declarator, (yyvsp[(1) - (1)].sel(as_ordinary_member_declarator)) ); ;}
05797     break;
05798 
05799   case 378:
05800 #line 1948 "parser.y"
05801     { (yyval.sel(as_member_declarator_list)) = (yyvsp[(1) - (3)].sel(as_member_declarator_list)); WRAPPER_APPEND( (yyval.sel(as_member_declarator_list)), (yyvsp[(3) - (3)].sel(as_ordinary_member_declarator)) ); ;}
05802     break;
05803 
05804   case 379:
05805 #line 1956 "parser.y"
05806     {
05807                 (yyval.sel(as_declaration_specifier_seq)) = (yyvsp[(1) - (1)].sel(as_declaration_specifier_seq));
05808                 sa_parser_action_logger << "decl spec seq in function scope\n" << msg::eolog;
05809                 sa_simple_declaration::instance()->save_declaration_specifiers((yyvsp[(1) - (1)].sel(as_declaration_specifier_seq)));
05810           ;}
05811     break;
05812 
05813   case 380:
05814 #line 1965 "parser.y"
05815     {
05816                 (yyval.sel(as_declaration_specifier_seq)) = (yyvsp[(1) - (1)].sel(as_declaration_specifier_seq));
05817           ;}
05818     break;
05819 
05820   case 381:
05821 #line 1973 "parser.y"
05822     { (yyval.sel(as_declaration_specifier_seq)) = (yyvsp[(1) - (1)].sel(as_declaration_specifier_seq)); ;}
05823     break;
05824 
05825   case 382:
05826 #line 1975 "parser.y"
05827     { (yyval.sel(as_declaration_specifier_seq)) = (yyvsp[(1) - (1)].sel(as_declaration_specifier_seq)); ;}
05828     break;
05829 
05830   case 383:
05831 #line 1997 "parser.y"
05832     { NEW_WRAPPER_W1( (yyval.sel(as_declaration_specifier_seq)), as_declaration_specifier_seq, loc((yyvsp[(1) - (1)].sel(as_declaration_specifier))), as_declaration_specifier, (yyvsp[(1) - (1)].sel(as_declaration_specifier)) ); ;}
05833     break;
05834 
05835   case 384:
05836 #line 2000 "parser.y"
05837     { (yyval.sel(as_declaration_specifier_seq)) = (yyvsp[(1) - (2)].sel(as_declaration_specifier_seq)); WRAPPER_APPEND( (yyval.sel(as_declaration_specifier_seq)), (yyvsp[(2) - (2)].sel(as_declaration_specifier)) ); ;}
05838     break;
05839 
05840   case 385:
05841 #line 2003 "parser.y"
05842     { (yyval.sel(as_declaration_specifier_seq)) = (yyvsp[(1) - (2)].sel(as_declaration_specifier_seq)); WRAPPER_APPEND( (yyval.sel(as_declaration_specifier_seq)), (yyvsp[(2) - (2)].sel(as_declaration_specifier)) ); ;}
05843     break;
05844 
05845   case 386:
05846 #line 2012 "parser.y"
05847     { NEW_WRAPPER_W1( (yyval.sel(as_declaration_specifier_seq)), as_declaration_specifier_seq, loc((yyvsp[(1) - (1)].sel(as_declaration_specifier))), as_declaration_specifier, (yyvsp[(1) - (1)].sel(as_declaration_specifier)) ); ;}
05848     break;
05849 
05850   case 387:
05851 #line 2014 "parser.y"
05852     { (yyval.sel(as_declaration_specifier_seq)) = (yyvsp[(1) - (2)].sel(as_declaration_specifier_seq)); WRAPPER_APPEND( (yyval.sel(as_declaration_specifier_seq)), (yyvsp[(2) - (2)].sel(as_declaration_specifier)) ); ;}
05853     break;
05854 
05855   case 388:
05856 #line 2017 "parser.y"
05857     { (yyval.sel(as_declaration_specifier_seq)) = (yyvsp[(1) - (2)].sel(as_declaration_specifier_seq)); WRAPPER_APPEND( (yyval.sel(as_declaration_specifier_seq)), (yyvsp[(2) - (2)].sel(as_declaration_specifier)) ); ;}
05858     break;
05859 
05860   case 389:
05861 #line 2019 "parser.y"
05862     { (yyval.sel(as_declaration_specifier_seq)) = (yyvsp[(1) - (2)].sel(as_declaration_specifier_seq)); WRAPPER_APPEND( (yyval.sel(as_declaration_specifier_seq)), (yyvsp[(2) - (2)].sel(as_declaration_specifier)) ); ;}
05863     break;
05864 
05865   case 390:
05866 #line 2024 "parser.y"
05867     { NEW_WRAPPER_W1( (yyval.sel(as_declaration_specifier_seq)), as_declaration_specifier_seq, loc((yyvsp[(1) - (1)].sel(as_declaration_specifier))), as_declaration_specifier, (yyvsp[(1) - (1)].sel(as_declaration_specifier)) ); ;}
05868     break;
05869 
05870   case 391:
05871 #line 2026 "parser.y"
05872     { (yyval.sel(as_declaration_specifier_seq)) = (yyvsp[(1) - (2)].sel(as_declaration_specifier_seq)); WRAPPER_APPEND( (yyval.sel(as_declaration_specifier_seq)), (yyvsp[(2) - (2)].sel(as_declaration_specifier)) ); ;}
05873     break;
05874 
05875   case 392:
05876 #line 2031 "parser.y"
05877     { (yyval.sel(as_declaration_specifier)) = (yyvsp[(1) - (1)].sel(as_type_specifier)); ;}
05878     break;
05879 
05880   case 393:
05881 #line 2033 "parser.y"
05882     { (yyval.sel(as_declaration_specifier)) = (yyvsp[(1) - (1)].sel(as_type_specifier)); ;}
05883     break;
05884 
05885   case 394:
05886 #line 2038 "parser.y"
05887     { (yyval.sel(as_declaration_specifier)) = (yyvsp[(1) - (1)].sel(as_builtin_simple_type_specifier)); ;}
05888     break;
05889 
05890   case 395:
05891 #line 2043 "parser.y"
05892     { (yyval.sel(as_declaration_specifier)) = (yyvsp[(1) - (1)].sel(as_storage_class_specifier)); ;}
05893     break;
05894 
05895   case 396:
05896 #line 2045 "parser.y"
05897     { (yyval.sel(as_declaration_specifier)) = (yyvsp[(1) - (1)].sel(as_cv_qualifier)); ;}
05898     break;
05899 
05900   case 397:
05901 #line 2047 "parser.y"
05902     { (yyval.sel(as_declaration_specifier)) = (yyvsp[(1) - (1)].sel(as_function_specifier)); ;}
05903     break;
05904 
05905   case 398:
05906 #line 2049 "parser.y"
05907     { (yyval.sel(as_declaration_specifier)) = as_friend_specifier::create( loc((yyvsp[(1) - (1)].sel(bison_token))) ); ;}
05908     break;
05909 
05910   case 399:
05911 #line 2051 "parser.y"
05912     { (yyval.sel(as_declaration_specifier)) = as_typedef_specifier::create( loc((yyvsp[(1) - (1)].sel(bison_token))) ); ;}
05913     break;
05914 
05915   case 400:
05916 #line 2058 "parser.y"
05917     { (yyval.sel(as_storage_class_specifier)) = as_storage_class_specifier_auto::create( loc((yyvsp[(1) - (1)].sel(bison_token))) ); ;}
05918     break;
05919 
05920   case 401:
05921 #line 2060 "parser.y"
05922     { (yyval.sel(as_storage_class_specifier)) = as_storage_class_specifier_register::create( loc((yyvsp[(1) - (1)].sel(bison_token))) ); ;}
05923     break;
05924 
05925   case 402:
05926 #line 2062 "parser.y"
05927     { (yyval.sel(as_storage_class_specifier)) = as_storage_class_specifier_static::create( loc((yyvsp[(1) - (1)].sel(bison_token))) ); ;}
05928     break;
05929 
05930   case 403:
05931 #line 2064 "parser.y"
05932     { (yyval.sel(as_storage_class_specifier)) = as_storage_class_specifier_extern::create( loc((yyvsp[(1) - (1)].sel(bison_token))) ); ;}
05933     break;
05934 
05935   case 404:
05936 #line 2066 "parser.y"
05937     { (yyval.sel(as_storage_class_specifier)) = as_storage_class_specifier_mutable::create( loc((yyvsp[(1) - (1)].sel(bison_token))) ); ;}
05938     break;
05939 
05940   case 405:
05941 #line 2073 "parser.y"
05942     { (yyval.sel(as_function_specifier)) = as_function_specifier_inline::create( loc((yyvsp[(1) - (1)].sel(bison_token))) ); ;}
05943     break;
05944 
05945   case 406:
05946 #line 2075 "parser.y"
05947     { (yyval.sel(as_function_specifier)) = as_function_specifier_virtual::create( loc((yyvsp[(1) - (1)].sel(bison_token))) ); ;}
05948     break;
05949 
05950   case 407:
05951 #line 2077 "parser.y"
05952     { (yyval.sel(as_function_specifier)) = as_function_specifier_explicit::create( loc((yyvsp[(1) - (1)].sel(bison_token))) ); ;}
05953     break;
05954 
05955   case 408:
05956 #line 2082 "parser.y"
05957     { (yyval.sel(bison_token)) = (yyvsp[(1) - (1)].sel(bison_token)); hinter::elab_spec_set( elab_spec_enum::create(loc((yyvsp[(1) - (1)].sel(bison_token)))) ); ;}
05958     break;
05959 
05960   case 409:
05961 #line 2097 "parser.y"
05962     { (yyval.sel(as_type_specifier)) = (yyvsp[(1) - (1)].sel(as_simple_type_specifier)); ;}
05963     break;
05964 
05965   case 410:
05966 #line 2100 "parser.y"
05967     { (yyval.sel(as_type_specifier)) = as_elaborated_type_specifier_class_key::create( loc((yyvsp[(1) - (4)].sel(as_class_key))), as_name::create(loc((yyvsp[(2) - (4)].sel(bison_token))),GLOB_CTX(loc((yyvsp[(2) - (4)].sel(bison_token)))),TOK2ID((yyvsp[(4) - (4)].sel(bison_id_token))),true), (yyvsp[(1) - (4)].sel(as_class_key)) ); ;}
05968     break;
05969 
05970   case 411:
05971 #line 2102 "parser.y"
05972     { (yyval.sel(as_type_specifier)) = as_elaborated_type_specifier_class_key::create( loc((yyvsp[(1) - (5)].sel(as_class_key))), as_name::create(loc((yyvsp[(2) - (5)].sel(bison_token))),(yyvsp[(4) - (5)].sel(as_name)),TOK2ID((yyvsp[(5) - (5)].sel(bison_id_token))),true), (yyvsp[(1) - (5)].sel(as_class_key)) ); ;}
05973     break;
05974 
05975   case 412:
05976 #line 2104 "parser.y"
05977     { (yyval.sel(as_type_specifier)) = as_elaborated_type_specifier_enum::create( loc((yyvsp[(1) - (2)].sel(bison_token))), as_name::create(loc((yyvsp[(2) - (2)].sel(bison_id_token))),CURR_CTX(loc((yyvsp[(2) - (2)].sel(bison_id_token)))),TOK2ID((yyvsp[(2) - (2)].sel(bison_id_token)))) ); ;}
05978     break;
05979 
05980   case 413:
05981 #line 2106 "parser.y"
05982     { (yyval.sel(as_type_specifier)) = as_elaborated_type_specifier_enum::create( loc((yyvsp[(1) - (3)].sel(bison_token))), as_name::create(loc((yyvsp[(2) - (3)].sel(as_name))),(yyvsp[(2) - (3)].sel(as_name)),TOK2ID((yyvsp[(3) - (3)].sel(bison_id_token))),true) ); ;}
05983     break;
05984 
05985   case 414:
05986 #line 2108 "parser.y"
05987     { (yyval.sel(as_type_specifier)) = as_elaborated_type_specifier_enum::create( loc((yyvsp[(1) - (4)].sel(bison_token))), as_name::create(loc((yyvsp[(2) - (4)].sel(bison_token))),GLOB_CTX(loc((yyvsp[(2) - (4)].sel(bison_token)))),TOK2ID((yyvsp[(4) - (4)].sel(bison_id_token))),true) ); ;}
05988     break;
05989 
05990   case 415:
05991 #line 2110 "parser.y"
05992     { (yyval.sel(as_type_specifier)) = as_elaborated_type_specifier_enum::create( loc((yyvsp[(1) - (5)].sel(bison_token))), as_name::create(loc((yyvsp[(2) - (5)].sel(bison_token))),(yyvsp[(4) - (5)].sel(as_name)),TOK2ID((yyvsp[(5) - (5)].sel(bison_id_token))),true) ); ;}
05993     break;
05994 
05995   case 416:
05996 #line 2112 "parser.y"
05997     { (yyval.sel(as_type_specifier)) = (yyvsp[(1) - (1)].sel(as_type_specifier)); ;}
05998     break;
05999 
06000   case 417:
06001 #line 2116 "parser.y"
06002     { (yyval.sel(as_type_specifier)) = as_elaborated_type_specifier_class_key::create( loc((yyvsp[(1) - (2)].sel(as_class_key))), as_name::create(loc((yyvsp[(2) - (2)].sel(bison_id_token))),CURR_CTX(loc((yyvsp[(2) - (2)].sel(bison_id_token)))),TOK2ID((yyvsp[(2) - (2)].sel(bison_id_token)))), (yyvsp[(1) - (2)].sel(as_class_key)) ); ;}
06003     break;
06004 
06005   case 418:
06006 #line 2118 "parser.y"
06007     { (yyval.sel(as_type_specifier)) = as_elaborated_type_specifier_class_key::create( loc((yyvsp[(1) - (3)].sel(as_class_key))), as_name::create(loc((yyvsp[(2) - (3)].sel(as_name))),(yyvsp[(2) - (3)].sel(as_name)),TOK2ID((yyvsp[(3) - (3)].sel(bison_id_token))),true), (yyvsp[(1) - (3)].sel(as_class_key)) ); ;}
06008     break;
06009 
06010   case 419:
06011 #line 2123 "parser.y"
06012     { (yyval.sel(as_anyid_opt_bearer)) = as_anyid_opt_bearer::create( loc((yyvsp[(1) - (1)].sel(as_no_token))), NULL ); ;}
06013     break;
06014 
06015   case 420:
06016 #line 2125 "parser.y"
06017     { (yyval.sel(as_anyid_opt_bearer)) = as_anyid_opt_bearer::create( loc((yyvsp[(1) - (1)].sel(as_identifier))), (yyvsp[(1) - (1)].sel(as_identifier)) ); ;}
06018     break;
06019 
06020   case 421:
06021 #line 2130 "parser.y"
06022     { (yyval.sel(as_identifier)) = TOK2ID((yyvsp[(1) - (1)].sel(bison_id_token))); ;}
06023     break;
06024 
06025   case 422:
06026 #line 2132 "parser.y"
06027     { (yyval.sel(as_identifier)) = TOK2ID((yyvsp[(1) - (1)].sel(bison_id_token))); ;}
06028     break;
06029 
06030   case 423:
06031 #line 2134 "parser.y"
06032     { (yyval.sel(as_identifier)) = TOK2ID((yyvsp[(1) - (1)].sel(bison_id_token))); ;}
06033     break;
06034 
06035   case 424:
06036 #line 2136 "parser.y"
06037     { (yyval.sel(as_identifier)) = TOK2ID((yyvsp[(1) - (1)].sel(bison_id_token))); ;}
06038     break;
06039 
06040   case 425:
06041 #line 2138 "parser.y"
06042     { (yyval.sel(as_identifier)) = TOK2ID((yyvsp[(1) - (1)].sel(bison_id_token))); ;}
06043     break;
06044 
06045   case 426:
06046 #line 2140 "parser.y"
06047     { (yyval.sel(as_identifier)) = TOK2ID((yyvsp[(1) - (1)].sel(bison_id_token))); ;}
06048     break;
06049 
06050   case 427:
06051 #line 2142 "parser.y"
06052     { (yyval.sel(as_identifier)) = TOK2ID((yyvsp[(1) - (1)].sel(bison_id_token))); ;}
06053     break;
06054 
06055   case 428:
06056 #line 2144 "parser.y"
06057     { (yyval.sel(as_identifier)) = TOK2ID((yyvsp[(1) - (1)].sel(bison_id_token))); ;}
06058     break;
06059 
06060   case 429:
06061 #line 2163 "parser.y"
06062     {
06063                 int next_type = manager::peek()->type_get();
06064                 if (manager::in_disambiguation()) {
06065                         lassert2( !is_pack(next_type),
06066                                 "Trying to pack a pack, forgot to unpack when rolling back?" );
06067                         manager::pack( TOK_PACK_BODY, loc(manager::prev_yylex()) );
06068                 } else if (is_pack(next_type)) {
06069                         // parsing for real, have to unpack the body
06070                         // another possibility _would_ be to spawn a manager on the pack
06071                         lassert2( next_type == TOK_PACK_BODY, "Different pack type found!" );
06072                         manager::unpack();
06073                 } else {
06074                         // parsing the body without previous disambiguation (which would imply packing). good.
06075                 }
06076           ;}
06077     break;
06078 
06079   case 430:
06080 #line 2182 "parser.y"
06081     {
06082                 /* always in disambiguation here */
06083                 (yyval.sel(as_type_specifier)) = (yyvsp[(1) - (5)].sel(as_class_specifier));
06084                 /* the actual value is irrelevant */
06085                 sa_parser_action_logger
06086                         << "after _class_specifier_action: disambiguating\n"
06087                         << ::lestes::msg::eolog;
06088           ;}
06089     break;
06090 
06091   case 431:
06092 #line 2191 "parser.y"
06093     {
06094                 /* never in disambiguation here */
06095                 ptr<as_class_specifier> cs = (yyvsp[(1) - (5)].sel(as_class_specifier));
06096                 LIST_APPEND_LIST( cs->member_declarations_get(), UNWRAP((yyvsp[(4) - (5)].sel(as_member_specification))) );
06097                 (yyval.sel(as_type_specifier)) = cs;
06098                 sa_parser_action_logger
06099                         << "after _class_specifier_action: parsing\n"
06100                         << ::lestes::msg::eolog;
06101                 sa_class_declaration::create()->process_end(loc((yyvsp[(5) - (5)].sel(bison_token))));
06102           ;}
06103     break;
06104 
06105   case 432:
06106 #line 2204 "parser.y"
06107     { (yyval.sel(as_type_specifier)) = as_enumeration_specifier::create( loc((yyvsp[(1) - (6)].sel(bison_token))), NULL, EMPTY_LIST(as_enumerator_definition) ); ;}
06108     break;
06109 
06110   case 433:
06111 #line 2206 "parser.y"
06112     { (yyval.sel(as_type_specifier)) = as_enumeration_specifier::create( loc((yyvsp[(1) - (6)].sel(bison_token))), (yyvsp[(2) - (6)].sel(as_anyid_opt_bearer))->value_get() ? as_name::create(loc((yyvsp[(2) - (6)].sel(as_anyid_opt_bearer))),CURR_CTX(loc((yyvsp[(2) - (6)].sel(as_anyid_opt_bearer)))),(yyvsp[(2) - (6)].sel(as_anyid_opt_bearer))->value_get()) : ptr<as_name>(NULL), UNWRAP((yyvsp[(5) - (6)].sel(as_enumerator_list))) ); ;}
06113     break;
06114 
06115   case 434:
06116 #line 2211 "parser.y"
06117     { (yyval.sel(as_class_specifier)) = (yyvsp[(1) - (1)].sel(as_class_specifier)); sa_class_declaration::create()->process((yyvsp[(1) - (1)].sel(as_class_specifier))); ;}
06118     break;
06119 
06120   case 435:
06121 #line 2216 "parser.y"
06122     { (yyval.sel(as_class_specifier)) = as_class_specifier::create( loc((yyvsp[(1) - (2)].sel(as_class_key))), (yyvsp[(1) - (2)].sel(as_class_key)), as_name::create( loc((yyvsp[(2) - (2)].sel(as_no_token))), CURR_CTX(loc((yyvsp[(2) - (2)].sel(as_no_token)))), EMPTY_ID(loc((yyvsp[(2) - (2)].sel(as_no_token)))) ), EMPTY_LIST(as_base_specifier), EMPTY_LIST(as_member_declaration) ); ;}
06123     break;
06124 
06125   case 436:
06126 #line 2218 "parser.y"
06127     { (yyval.sel(as_class_specifier)) = as_class_specifier::create( loc((yyvsp[(1) - (3)].sel(as_class_key))), (yyvsp[(1) - (3)].sel(as_class_key)), as_name::create( loc((yyvsp[(2) - (3)].sel(bison_token))), CURR_CTX(loc((yyvsp[(2) - (3)].sel(bison_token)))), EMPTY_ID(loc((yyvsp[(2) - (3)].sel(bison_token)))) ), UNWRAP((yyvsp[(3) - (3)].sel(as_base_specifier_list))), EMPTY_LIST(as_member_declaration) ); ;}
06128     break;
06129 
06130   case 437:
06131 #line 2221 "parser.y"
06132     { (yyval.sel(as_class_specifier)) = as_class_specifier::create( loc((yyvsp[(1) - (2)].sel(as_class_key))), (yyvsp[(1) - (2)].sel(as_class_key)), as_name::create( loc((yyvsp[(2) - (2)].sel(as_identifier))), CURR_CTX(loc((yyvsp[(2) - (2)].sel(as_identifier)))), (yyvsp[(2) - (2)].sel(as_identifier)) ), EMPTY_LIST(as_base_specifier), EMPTY_LIST(as_member_declaration) ); ;}
06133     break;
06134 
06135   case 438:
06136 #line 2223 "parser.y"
06137     { (yyval.sel(as_class_specifier)) = as_class_specifier::create( loc((yyvsp[(1) - (3)].sel(as_class_key))), (yyvsp[(1) - (3)].sel(as_class_key)), as_name::create( loc((yyvsp[(2) - (3)].sel(as_name))), (yyvsp[(2) - (3)].sel(as_name)), (yyvsp[(3) - (3)].sel(as_identifier)), true ), EMPTY_LIST(as_base_specifier), EMPTY_LIST(as_member_declaration) ); ;}
06138     break;
06139 
06140   case 439:
06141 #line 2225 "parser.y"
06142     { (yyval.sel(as_class_specifier)) = as_class_specifier::create( loc((yyvsp[(1) - (4)].sel(as_class_key))), (yyvsp[(1) - (4)].sel(as_class_key)), as_name::create( loc((yyvsp[(2) - (4)].sel(as_identifier))), CURR_CTX(loc((yyvsp[(2) - (4)].sel(as_identifier)))), (yyvsp[(2) - (4)].sel(as_identifier)) ), UNWRAP((yyvsp[(4) - (4)].sel(as_base_specifier_list))), EMPTY_LIST(as_member_declaration) ); ;}
06143     break;
06144 
06145   case 440:
06146 #line 2227 "parser.y"
06147     { (yyval.sel(as_class_specifier)) = as_class_specifier::create( loc((yyvsp[(1) - (5)].sel(as_class_key))), (yyvsp[(1) - (5)].sel(as_class_key)), as_name::create( loc((yyvsp[(2) - (5)].sel(as_name))), (yyvsp[(2) - (5)].sel(as_name)), (yyvsp[(3) - (5)].sel(as_identifier)), true ), UNWRAP((yyvsp[(5) - (5)].sel(as_base_specifier_list))), EMPTY_LIST(as_member_declaration) ); ;}
06148     break;
06149 
06150   case 441:
06151 #line 2230 "parser.y"
06152     { (yyval.sel(as_class_specifier)) = as_class_specifier::create( loc((yyvsp[(1) - (3)].sel(as_class_key))), (yyvsp[(1) - (3)].sel(as_class_key)), as_name::create( loc((yyvsp[(2) - (3)].sel(bison_id_token))), CURR_CTX(loc((yyvsp[(2) - (3)].sel(bison_id_token)))), as_template_id::create(loc((yyvsp[(2) - (3)].sel(bison_id_token))),(yyvsp[(2) - (3)].sel(bison_id_token)),UNWRAP((yyvsp[(3) - (3)].sel(as_template_argument_list)))) ), EMPTY_LIST(as_base_specifier), EMPTY_LIST(as_member_declaration) ); ;}
06153     break;
06154 
06155   case 442:
06156 #line 2232 "parser.y"
06157     { (yyval.sel(as_class_specifier)) = as_class_specifier::create( loc((yyvsp[(1) - (5)].sel(as_class_key))), (yyvsp[(1) - (5)].sel(as_class_key)), as_name::create( loc((yyvsp[(2) - (5)].sel(bison_id_token))), CURR_CTX(loc((yyvsp[(2) - (5)].sel(bison_id_token)))), as_template_id::create(loc((yyvsp[(2) - (5)].sel(bison_id_token))),(yyvsp[(2) - (5)].sel(bison_id_token)),UNWRAP((yyvsp[(3) - (5)].sel(as_template_argument_list)))) ), UNWRAP((yyvsp[(5) - (5)].sel(as_base_specifier_list))), EMPTY_LIST(as_member_declaration) ); ;}
06158     break;
06159 
06160   case 443:
06161 #line 2234 "parser.y"
06162     { (yyval.sel(as_class_specifier)) = as_class_specifier::create( loc((yyvsp[(1) - (4)].sel(as_class_key))), (yyvsp[(1) - (4)].sel(as_class_key)), as_name::create( loc((yyvsp[(2) - (4)].sel(as_name))), (yyvsp[(2) - (4)].sel(as_name)), as_template_id::create(loc((yyvsp[(3) - (4)].sel(bison_id_token))),(yyvsp[(3) - (4)].sel(bison_id_token)),UNWRAP((yyvsp[(4) - (4)].sel(as_template_argument_list)))), true ), EMPTY_LIST(as_base_specifier), EMPTY_LIST(as_member_declaration) ); ;}
06163     break;
06164 
06165   case 444:
06166 #line 2236 "parser.y"
06167     { (yyval.sel(as_class_specifier)) = as_class_specifier::create( loc((yyvsp[(1) - (6)].sel(as_class_key))), (yyvsp[(1) - (6)].sel(as_class_key)), as_name::create( loc((yyvsp[(2) - (6)].sel(as_name))), (yyvsp[(2) - (6)].sel(as_name)), as_template_id::create(loc((yyvsp[(3) - (6)].sel(bison_id_token))),(yyvsp[(3) - (6)].sel(bison_id_token)),UNWRAP((yyvsp[(4) - (6)].sel(as_template_argument_list)))), true ), UNWRAP((yyvsp[(6) - (6)].sel(as_base_specifier_list))), EMPTY_LIST(as_member_declaration) ); ;}
06168     break;
06169 
06170   case 445:
06171 #line 2254 "parser.y"
06172     { (yyval.sel(as_cv_qualifier)) = as_cv_qualifier_const::create( loc((yyvsp[(1) - (1)].sel(bison_token))) ); ;}
06173     break;
06174 
06175   case 446:
06176 #line 2256 "parser.y"
06177     { (yyval.sel(as_cv_qualifier)) = as_cv_qualifier_volatile::create( loc((yyvsp[(1) - (1)].sel(bison_token))) ); ;}
06178     break;
06179 
06180   case 447:
06181 #line 2263 "parser.y"
06182     { NEW_WRAPPER_W1( (yyval.sel(as_cv_qualifier_seq)), as_cv_qualifier_seq, loc((yyvsp[(1) - (1)].sel(as_cv_qualifier))), as_cv_qualifier, (yyvsp[(1) - (1)].sel(as_cv_qualifier)) ); ;}
06183     break;
06184 
06185   case 448:
06186 #line 2265 "parser.y"
06187     { (yyval.sel(as_cv_qualifier_seq)) = (yyvsp[(1) - (2)].sel(as_cv_qualifier_seq)); WRAPPER_APPEND( (yyval.sel(as_cv_qualifier_seq)), (yyvsp[(2) - (2)].sel(as_cv_qualifier)) ); ;}
06188     break;
06189 
06190   case 449:
06191 #line 2272 "parser.y"
06192     { (yyval.sel(as_simple_type_specifier)) = as_named_simple_type_specifier::create( loc((yyvsp[(1) - (1)].sel(as_name))), (yyvsp[(1) - (1)].sel(as_name)) ); ;}
06193     break;
06194 
06195   case 450:
06196 #line 2274 "parser.y"
06197     { (yyval.sel(as_simple_type_specifier)) = as_void_simple_type_specifier::create( loc((yyvsp[(1) - (1)].sel(bison_token))) ); ;}
06198     break;
06199 
06200   case 451:
06201 #line 2279 "parser.y"
06202     { (yyval.sel(as_name)) = as_name::create( loc((yyvsp[(1) - (2)].sel(as_name))), (yyvsp[(1) - (2)].sel(as_name)), TOK2ID((yyvsp[(2) - (2)].sel(bison_id_token))), (yyvsp[(1) - (2)].sel(as_name))->was_qualified_get() ); ;}
06203     break;
06204 
06205   case 452:
06206 #line 2281 "parser.y"
06207     { (yyval.sel(as_name)) = as_name::create( loc((yyvsp[(1) - (3)].sel(as_name))), (yyvsp[(1) - (3)].sel(as_name)), as_template_id::create(loc((yyvsp[(2) - (3)].sel(bison_id_token))),(yyvsp[(2) - (3)].sel(bison_id_token)),UNWRAP((yyvsp[(3) - (3)].sel(as_template_argument_list)))), (yyvsp[(1) - (3)].sel(as_name))->was_qualified_get() ); ;}
06208     break;
06209 
06210   case 453:
06211 #line 2283 "parser.y"
06212     { (yyval.sel(as_name)) = as_name::create( loc((yyvsp[(1) - (2)].sel(as_name))), (yyvsp[(1) - (2)].sel(as_name)), TOK2ID((yyvsp[(2) - (2)].sel(bison_id_token))), (yyvsp[(1) - (2)].sel(as_name))->was_qualified_get() ); ;}
06213     break;
06214 
06215   case 454:
06216 #line 2285 "parser.y"
06217     { (yyval.sel(as_name)) = as_name::create( loc((yyvsp[(1) - (2)].sel(as_name))), (yyvsp[(1) - (2)].sel(as_name)), TOK2ID((yyvsp[(2) - (2)].sel(bison_id_token))), (yyvsp[(1) - (2)].sel(as_name))->was_qualified_get() ); ;}
06218     break;
06219 
06220   case 455:
06221 #line 2287 "parser.y"
06222     { (yyval.sel(as_name)) = as_name::create( loc((yyvsp[(1) - (3)].sel(as_name))), (yyvsp[(2) - (3)].sel(as_name)), TOK2ID((yyvsp[(3) - (3)].sel(bison_id_token))), true ); ;}
06223     break;
06224 
06225   case 456:
06226 #line 2289 "parser.y"
06227     { (yyval.sel(as_name)) = as_name::create( loc((yyvsp[(1) - (4)].sel(as_name))), (yyvsp[(2) - (4)].sel(as_name)), as_template_id::create( loc((yyvsp[(3) - (4)].sel(bison_id_token))), (yyvsp[(3) - (4)].sel(bison_id_token)), UNWRAP((yyvsp[(4) - (4)].sel(as_template_argument_list))) ), true ); ;}
06228     break;
06229 
06230   case 457:
06231 #line 2291 "parser.y"
06232     { (yyval.sel(as_name)) = as_name::create( loc((yyvsp[(1) - (3)].sel(as_name))), (yyvsp[(2) - (3)].sel(as_name)), TOK2ID((yyvsp[(3) - (3)].sel(bison_id_token))), true ); ;}
06233     break;
06234 
06235   case 458:
06236 #line 2293 "parser.y"
06237     { (yyval.sel(as_name)) = as_name::create( loc((yyvsp[(1) - (3)].sel(as_name))), (yyvsp[(2) - (3)].sel(as_name)), TOK2ID((yyvsp[(3) - (3)].sel(bison_id_token))), true ); ;}
06238     break;
06239 
06240   case 459:
06241 #line 2295 "parser.y"
06242     { (yyval.sel(as_name)) = as_name::create( loc((yyvsp[(1) - (6)].sel(as_name))), (yyvsp[(2) - (6)].sel(as_name)), as_template_id::create( loc((yyvsp[(5) - (6)].sel(bison_id_token))), (yyvsp[(5) - (6)].sel(bison_id_token)), UNWRAP((yyvsp[(6) - (6)].sel(as_template_argument_list))) ), true ); ;}
06243     break;
06244 
06245   case 460:
06246 #line 2300 "parser.y"
06247     { (yyval.sel(as_builtin_simple_type_specifier)) = as_char_simple_type_specifier::create( loc((yyvsp[(1) - (1)].sel(bison_token))) ); ;}
06248     break;
06249 
06250   case 461:
06251 #line 2302 "parser.y"
06252     { (yyval.sel(as_builtin_simple_type_specifier)) = as_wchar_t_simple_type_specifier::create( loc((yyvsp[(1) - (1)].sel(bison_token))) ); ;}
06253     break;
06254 
06255   case 462:
06256 #line 2304 "parser.y"
06257     { (yyval.sel(as_builtin_simple_type_specifier)) = as_bool_simple_type_specifier::create( loc((yyvsp[(1) - (1)].sel(bison_token))) ); ;}
06258     break;
06259 
06260   case 463:
06261 #line 2306 "parser.y"
06262     { (yyval.sel(as_builtin_simple_type_specifier)) = as_short_simple_type_specifier::create( loc((yyvsp[(1) - (1)].sel(bison_token))) ); ;}
06263     break;
06264 
06265   case 464:
06266 #line 2308 "parser.y"
06267     { (yyval.sel(as_builtin_simple_type_specifier)) = as_int_simple_type_specifier::create( loc((yyvsp[(1) - (1)].sel(bison_token))) ); ;}
06268     break;
06269 
06270   case 465:
06271 #line 2310 "parser.y"
06272     { (yyval.sel(as_builtin_simple_type_specifier)) = as_long_simple_type_specifier::create( loc((yyvsp[(1) - (1)].sel(bison_token))) ); ;}
06273     break;
06274 
06275   case 466:
06276 #line 2312 "parser.y"
06277     { (yyval.sel(as_builtin_simple_type_specifier)) = as_signed_simple_type_specifier::create( loc((yyvsp[(1) - (1)].sel(bison_token))) ); ;}
06278     break;
06279 
06280   case 467:
06281 #line 2314 "parser.y"
06282     { (yyval.sel(as_builtin_simple_type_specifier)) = as_unsigned_simple_type_specifier::create( loc((yyvsp[(1) - (1)].sel(bison_token))) ); ;}
06283     break;
06284 
06285   case 468:
06286 #line 2316 "parser.y"
06287     { (yyval.sel(as_builtin_simple_type_specifier)) = as_float_simple_type_specifier::create( loc((yyvsp[(1) - (1)].sel(bison_token))) ); ;}
06288     break;
06289 
06290   case 469:
06291 #line 2318 "parser.y"
06292     { (yyval.sel(as_builtin_simple_type_specifier)) = as_double_simple_type_specifier::create( loc((yyvsp[(1) - (1)].sel(bison_token))) ); ;}
06293     break;
06294 
06295   case 470:
06296 #line 2323 "parser.y"
06297     { (yyval.sel(as_enumerator_list)) = EMPTY_WRAPPER( as_enumerator_list, loc((yyvsp[(1) - (1)].sel(as_no_token))), as_enumerator_definition ); ;}
06298     break;
06299 
06300   case 471:
06301 #line 2325 "parser.y"
06302     { (yyval.sel(as_enumerator_list)) = (yyvsp[(1) - (1)].sel(as_enumerator_list)); ;}
06303     break;
06304 
06305   case 472:
06306 #line 2332 "parser.y"
06307     { NEW_WRAPPER_W1( (yyval.sel(as_enumerator_list)), as_enumerator_list, loc((yyvsp[(1) - (1)].sel(as_enumerator_definition))), as_enumerator_definition, (yyvsp[(1) - (1)].sel(as_enumerator_definition)) ); ;}
06308     break;
06309 
06310   case 473:
06311 #line 2334 "parser.y"
06312     { (yyval.sel(as_enumerator_list)) = (yyvsp[(1) - (3)].sel(as_enumerator_list)); WRAPPER_APPEND( (yyval.sel(as_enumerator_list)), (yyvsp[(3) - (3)].sel(as_enumerator_definition)) ); ;}
06313     break;
06314 
06315   case 474:
06316 #line 2339 "parser.y"
06317     { (yyval.sel(as_enumerator_definition)) = as_enumerator_definition::create( loc((yyvsp[(1) - (1)].sel(as_identifier))), (yyvsp[(1) - (1)].sel(as_identifier)), as_constant_expression::create( loc((yyvsp[(1) - (1)].sel(as_identifier))), EMPTY_EXPR(loc((yyvsp[(1) - (1)].sel(as_identifier)))) ) ); ;}
06318     break;
06319 
06320   case 475:
06321 #line 2341 "parser.y"
06322     { (yyval.sel(as_enumerator_definition)) = as_enumerator_definition::create( loc((yyvsp[(1) - (3)].sel(as_identifier))), (yyvsp[(1) - (3)].sel(as_identifier)), (yyvsp[(3) - (3)].sel(as_constant_expression)) ); ;}
06323     break;
06324 
06325   case 476:
06326 #line 2347 "parser.y"
06327     {
06328                 LIST_APPEND_LIST( (yyvsp[(1) - (4)].sel(as_namespace_definition))->declarations_get(), UNWRAP((yyvsp[(3) - (4)].sel(as_declaration_seq))) );
06329                 (yyval.sel(as_namespace_definition)) = (yyvsp[(1) - (4)].sel(as_namespace_definition));
06330                 sa_namespace_definition::instance()->process_end();
06331           ;}
06332     break;
06333 
06334   case 477:
06335 #line 2356 "parser.y"
06336     {
06337                 ptr<as_namespace_definition> nd = as_namespace_definition::create( loc((yyvsp[(1) - (2)].sel(bison_token))), as_name::create(loc((yyvsp[(2) - (2)].sel(as_identifier))),CURR_CTX(loc((yyvsp[(1) - (2)].sel(bison_token)))),(yyvsp[(2) - (2)].sel(as_identifier))), EMPTY_LIST(as_declaration) );
06338                 sa_namespace_definition::instance()->process_named( nd->name_get() );
06339                 (yyval.sel(as_namespace_definition)) = nd;
06340           ;}
06341     break;
06342 
06343   case 478:
06344 #line 2362 "parser.y"
06345     {
06346                 (yyval.sel(as_namespace_definition)) = as_namespace_definition::create( loc((yyvsp[(1) - (3)].sel(bison_token))), as_name::create(loc((yyvsp[(1) - (3)].sel(bison_token))),CURR_CTX(loc((yyvsp[(1) - (3)].sel(bison_token)))),EMPTY_ID(loc((yyvsp[(2) - (3)].sel(as_no_token))))), EMPTY_LIST(as_declaration) );
06347                 sa_namespace_definition::instance()->process_unnamed( loc((yyvsp[(1) - (3)].sel(bison_token))) );
06348           ;}
06349     break;
06350 
06351   case 479:
06352 #line 2370 "parser.y"
06353     { (yyval.sel(as_name)) = (yyvsp[(1) - (1)].sel(as_name)); ;}
06354     break;
06355 
06356   case 480:
06357 #line 2372 "parser.y"
06358     { (yyval.sel(as_name)) = (yyvsp[(1) - (1)].sel(as_name)); ;}
06359     break;
06360 
06361   case 481:
06362 #line 2377 "parser.y"
06363     { (yyvsp[(3) - (4)].sel(as_name))->was_qualified_set( (yyvsp[(2) - (4)].sel(as_name))->was_qualified_get() ); (yyval.sel(as_using_declaration)) = as_using_declaration::create( loc((yyvsp[(1) - (4)].sel(bison_token))), (yyvsp[(3) - (4)].sel(as_name)) ); ;}
06364     break;
06365 
06366   case 482:
06367 #line 2379 "parser.y"
06368     { (yyvsp[(4) - (5)].sel(as_name))->was_qualified_set(true); (yyval.sel(as_using_declaration)) = as_using_declaration::create( loc((yyvsp[(1) - (5)].sel(bison_token))), (yyvsp[(4) - (5)].sel(as_name)) ); ;}
06369     break;
06370 
06371   case 483:
06372 #line 2381 "parser.y"
06373     { (yyvsp[(5) - (6)].sel(as_name))->was_qualified_set(true); (yyval.sel(as_using_declaration)) = as_using_declaration_with_typename::create( loc((yyvsp[(1) - (6)].sel(bison_token))), (yyvsp[(5) - (6)].sel(as_name)) ); ;}
06374     break;
06375 
06376   case 484:
06377 #line 2388 "parser.y"
06378     { (yyval.sel(as_class_key)) = (yyvsp[(1) - (1)].sel(as_class_key)); hinter::elab_spec_set( elab_spec_class_key::create(loc((yyvsp[(1) - (1)].sel(as_class_key))),(yyvsp[(1) - (1)].sel(as_class_key))) ); ;}
06379     break;
06380 
06381   case 485:
06382 #line 2393 "parser.y"
06383     { (yyval.sel(as_class_key)) = as_class_key_class::create( loc((yyvsp[(1) - (1)].sel(bison_token))) ); ;}
06384     break;
06385 
06386   case 486:
06387 #line 2395 "parser.y"
06388     { (yyval.sel(as_class_key)) = as_class_key_struct::create( loc((yyvsp[(1) - (1)].sel(bison_token))) ); ;}
06389     break;
06390 
06391   case 487:
06392 #line 2397 "parser.y"
06393     { (yyval.sel(as_class_key)) = as_class_key_union::create( loc((yyvsp[(1) - (1)].sel(bison_token))) ); ;}
06394     break;
06395 
06396   case 488:
06397 #line 2402 "parser.y"
06398     { (yyval.sel(as_member_specification)) = EMPTY_WRAPPER( as_member_specification, loc((yyvsp[(1) - (1)].sel(as_no_token))), as_member_declaration ); ;}
06399     break;
06400 
06401   case 489:
06402 #line 2404 "parser.y"
06403     { (yyval.sel(as_member_specification)) = (yyvsp[(1) - (1)].sel(as_member_specification)); ;}
06404     break;
06405 
06406   case 490:
06407 #line 2409 "parser.y"
06408     { NEW_WRAPPER_W1( (yyval.sel(as_member_specification)), as_member_specification, loc((yyvsp[(1) - (1)].sel(as_member_declaration))), as_member_declaration, (yyvsp[(1) - (1)].sel(as_member_declaration)) ); ;}
06409     break;
06410 
06411   case 491:
06412 #line 2411 "parser.y"
06413     { (yyval.sel(as_member_specification)) = EMPTY_WRAPPER( as_member_specification, loc((yyvsp[(1) - (2)].sel(as_access_specifier))), as_member_declaration );
06414             /* XXX change CURR_ACCESS_SPEC */ ;}
06415     break;
06416 
06417   case 492:
06418 #line 2414 "parser.y"
06419     { (yyval.sel(as_member_specification)) = (yyvsp[(1) - (2)].sel(as_member_specification)); WRAPPER_APPEND( (yyval.sel(as_member_specification)), (yyvsp[(2) - (2)].sel(as_member_declaration)) ); ;}
06420     break;
06421 
06422   case 493:
06423 #line 2416 "parser.y"
06424     { (yyval.sel(as_member_specification)) = (yyvsp[(1) - (3)].sel(as_member_specification)); /* access_spec at the end of member_spfn is ignored */ ;}
06425     break;
06426 
06427   case 494:
06428 #line 2426 "parser.y"
06429     {
06430                 clear_lookahead();
06431                 disambiguate_ctor_and_bitfield_class_scope( (yyvsp[(1) - (2)].sel(as_declaration_specifier_seq)) );
06432                 (yyval.sel(as_declaration_specifier_seq)) = (yyvsp[(1) - (2)].sel(as_declaration_specifier_seq));
06433                 sa_parser_action_logger << "decl spec seq in class scope\n" << msg::eolog;
06434                 sa_simple_declaration::instance()->save_declaration_specifiers((yyvsp[(1) - (2)].sel(as_declaration_specifier_seq)));
06435           ;}
06436     break;
06437 
06438   case 495:
06439 #line 2438 "parser.y"
06440     { ptr<as_declarator> ctor_dcltor = as_declarator::create( loc((yyvsp[(1) - (2)].sel(as_constructor_id))), as_name::create(loc((yyvsp[(2) - (2)].sel(as_declarator_op))),CURR_CTX(loc((yyvsp[(1) - (2)].sel(as_constructor_id)))),(yyvsp[(1) - (2)].sel(as_constructor_id))), EMPTY_LIST(as_declarator_op) );
06441             LIST_APPEND( ctor_dcltor->declarator_ops_get(), (yyvsp[(2) - (2)].sel(as_declarator_op)) );
06442             (yyval.sel(as_ordinary_member_declarator)) = as_ordinary_member_declarator::create( loc(ctor_dcltor), ctor_dcltor );
06443           ;}
06444     break;
06445 
06446   case 496:
06447 #line 2444 "parser.y"
06448     { ptr<as_declarator> ctor_dcltor = as_declarator::create( loc((yyvsp[(2) - (4)].sel(as_constructor_id))), as_name::create(loc((yyvsp[(3) - (4)].sel(as_declarator_op))),CURR_CTX(loc((yyvsp[(2) - (4)].sel(as_constructor_id)))),(yyvsp[(2) - (4)].sel(as_constructor_id))), EMPTY_LIST(as_declarator_op) );
06449             LIST_APPEND( ctor_dcltor->declarator_ops_get(), (yyvsp[(3) - (4)].sel(as_declarator_op)) );
06450             (yyval.sel(as_ordinary_member_declarator)) = as_ordinary_member_declarator::create( loc(ctor_dcltor), ctor_dcltor );
06451           ;}
06452     break;
06453 
06454   case 497:
06455 #line 2450 "parser.y"
06456     { (yyval.sel(as_ordinary_member_declarator)) = (yyvsp[(2) - (3)].sel(as_ordinary_member_declarator)); ;}
06457     break;
06458 
06459   case 498:
06460 #line 2455 "parser.y"
06461     { ptr<as_declarator> ctor_dcltor = as_declarator::create( loc((yyvsp[(1) - (2)].sel(as_constructor_id))), as_name::create(loc((yyvsp[(1) - (2)].sel(as_constructor_id))),CURR_CTX(loc((yyvsp[(1) - (2)].sel(as_constructor_id)))),(yyvsp[(1) - (2)].sel(as_constructor_id))), EMPTY_LIST(as_declarator_op) );
06462             LIST_APPEND( ctor_dcltor->declarator_ops_get(), (yyvsp[(2) - (2)].sel(as_declarator_op)) );
06463             (yyval.sel(as_ordinary_member_declarator)) = as_ordinary_member_declarator::create( loc(ctor_dcltor), ctor_dcltor );
06464           ;}
06465     break;
06466 
06467   case 499:
06468 #line 2460 "parser.y"
06469     { (yyval.sel(as_ordinary_member_declarator)) = (yyvsp[(2) - (3)].sel(as_ordinary_member_declarator)); ;}
06470     break;
06471 
06472   case 500:
06473 #line 2465 "parser.y"
06474     { (yyval.sel(as_constructor_id)) = (yyvsp[(2) - (3)].sel(as_constructor_id)); ;}
06475     break;
06476 
06477   case 501:
06478 #line 2470 "parser.y"
06479     { (yyval.sel(as_constructor_id)) = (yyvsp[(1) - (1)].sel(as_constructor_id)); ;}
06480     break;
06481 
06482   case 502:
06483 #line 2472 "parser.y"
06484     { (yyval.sel(as_constructor_id)) = (yyvsp[(2) - (3)].sel(as_constructor_id)); ;}
06485     break;
06486 
06487   case 503:
06488 #line 2477 "parser.y"
06489     { (yyval.sel(as_constructor_id)) = as_constructor_id::create( loc((yyvsp[(1) - (1)].sel(as_named_simple_type_specifier))), EMPTY_LIST(as_declaration_specifier) );
06490             LIST_APPEND( (yyval.sel(as_constructor_id))->declaration_specifiers_get(), (yyvsp[(1) - (1)].sel(as_named_simple_type_specifier)) ); ;}
06491     break;
06492 
06493   case 504:
06494 #line 2483 "parser.y"
06495     { (yyvsp[(2) - (2)].sel(as_name))->was_qualified_set( (yyvsp[(1) - (2)].sel(as_name))->was_qualified_get() );
06496             (yyval.sel(as_named_simple_type_specifier)) = as_named_simple_type_specifier::create( loc((yyvsp[(1) - (2)].sel(as_name))), (yyvsp[(2) - (2)].sel(as_name)) ); ;}
06497     break;
06498 
06499   case 505:
06500 #line 2486 "parser.y"
06501     { (yyvsp[(3) - (3)].sel(as_name))->was_qualified_set(true);
06502             (yyval.sel(as_named_simple_type_specifier)) = as_named_simple_type_specifier::create( loc((yyvsp[(1) - (3)].sel(as_name))), (yyvsp[(3) - (3)].sel(as_name)) ); ;}
06503     break;
06504 
06505   case 506:
06506 #line 2492 "parser.y"
06507     { (yyval.sel(as_name)) = as_name::create( loc((yyvsp[(1) - (1)].sel(bison_id_token))), CURR_CTX(loc((yyvsp[(1) - (1)].sel(bison_id_token)))), TOK2ID((yyvsp[(1) - (1)].sel(bison_id_token))) ); ;}
06508     break;
06509 
06510   case 507:
06511 #line 2494 "parser.y"
06512     { (yyval.sel(as_name)) = as_name::create( loc((yyvsp[(1) - (2)].sel(bison_id_token))), CURR_CTX(loc((yyvsp[(1) - (2)].sel(bison_id_token)))), as_template_id::create(loc((yyvsp[(1) - (2)].sel(bison_id_token))),(yyvsp[(1) - (2)].sel(bison_id_token)),UNWRAP((yyvsp[(2) - (2)].sel(as_template_argument_list)))) ) ; ;}
06513     break;
06514 
06515   case 508:
06516 #line 2499 "parser.y"
06517     { (yyval.sel(as_member_declaration)) = as_member_declaration_ordinary::create( loc((yyvsp[(1) - (1)].sel(bison_token))), CURR_ACCESS_SPEC(), EMPTY_LIST(as_declaration_specifier), EMPTY_LIST(as_member_declarator) ); ;}
06518     break;
06519 
06520   case 509:
06521 #line 2503 "parser.y"
06522     { (yyval.sel(as_member_declaration)) = (yyvsp[(1) - (2)].sel(as_member_declaration_ordinary)); ;}
06523     break;
06524 
06525   case 510:
06526 #line 2506 "parser.y"
06527     { (yyval.sel(as_member_declaration)) = as_member_declaration_ordinary::create( loc((yyvsp[(1) - (3)].sel(as_declaration_specifier_seq))), CURR_ACCESS_SPEC(), UNWRAP((yyvsp[(1) - (3)].sel(as_declaration_specifier_seq))), UNWRAP((yyvsp[(2) - (3)].sel(as_member_declarator_list))) ); ;}
06528     break;
06529 
06530   case 511:
06531 #line 2513 "parser.y"
06532     { ptr<as_member_declaration_ordinary> mdo = as_member_declaration_ordinary::create( loc((yyvsp[(1) - (2)].sel(as_type_specifier))), CURR_ACCESS_SPEC(), EMPTY_LIST(as_declaration_specifier), EMPTY_LIST(as_member_declarator) );
06533             LIST_APPEND( mdo->declaration_specifiers_get(), (yyvsp[(1) - (2)].sel(as_type_specifier)) );
06534             (yyval.sel(as_member_declaration)) = mdo; ;}
06535     break;
06536 
06537   case 512:
06538 #line 2518 "parser.y"
06539     { (yyval.sel(as_member_declaration)) = as_member_function_definition::create( loc((yyvsp[(1) - (1)].sel(as_function_definition))), CURR_ACCESS_SPEC(), (yyvsp[(1) - (1)].sel(as_function_definition)) ); ;}
06540     break;
06541 
06542   case 513:
06543 #line 2521 "parser.y"
06544     { (yyval.sel(as_member_declaration)) = as_member_using_declaration::create( loc((yyvsp[(1) - (1)].sel(as_using_declaration))), CURR_ACCESS_SPEC(), (yyvsp[(1) - (1)].sel(as_using_declaration)) ); ;}
06545     break;
06546 
06547   case 514:
06548 #line 2524 "parser.y"
06549     { (yyval.sel(as_member_declaration)) = as_member_using_declaration::create( loc((yyvsp[(1) - (1)].sel(as_using_declaration))), CURR_ACCESS_SPEC(), (yyvsp[(1) - (1)].sel(as_using_declaration)) ); ;}
06550     break;
06551 
06552   case 515:
06553 #line 2527 "parser.y"
06554     { (yyval.sel(as_member_declaration)) = as_member_template_declaration::create( loc((yyvsp[(1) - (5)].sel(bison_token))), CURR_ACCESS_SPEC(), NULL, UNWRAP((yyvsp[(3) - (5)].sel(as_template_param_list))), (yyvsp[(5) - (5)].sel(as_member_declaration)) ); ;}
06555     break;
06556 
06557   case 516:
06558 #line 2529 "parser.y"
06559     { (yyval.sel(as_member_declaration)) = as_member_template_declaration::create( loc((yyvsp[(2) - (6)].sel(bison_token))), CURR_ACCESS_SPEC(), UNWTOK((yyvsp[(1) - (6)].sel(bison_token))), UNWRAP((yyvsp[(4) - (6)].sel(as_template_param_list))), (yyvsp[(6) - (6)].sel(as_member_declaration)) ); ;}
06560     break;
06561 
06562   case 517:
06563 #line 2532 "parser.y"
06564     { (yyval.sel(as_member_declaration)) = as_class_forward_member_declaration::create( loc((yyvsp[(1) - (3)].sel(as_class_key))), CURR_ACCESS_SPEC(), (yyvsp[(1) - (3)].sel(as_class_key)), (yyvsp[(2) - (3)].sel(as_identifier)) ); ;}
06565     break;
06566 
06567   case 518:
06568 #line 2538 "parser.y"
06569     { (yyvsp[(3) - (4)].sel(as_name))->was_qualified_set(true); (yyval.sel(as_using_declaration)) = as_access_declaration::create( loc((yyvsp[(1) - (4)].sel(as_name))), (yyvsp[(3) - (4)].sel(as_name)) ); ;}
06570     break;
06571 
06572   case 519:
06573 #line 2540 "parser.y"
06574     { (yyvsp[(5) - (6)].sel(as_name))->was_qualified_set(true); (yyval.sel(as_using_declaration)) = as_access_declaration::create( loc((yyvsp[(1) - (6)].sel(as_name))), (yyvsp[(5) - (6)].sel(as_name)) ); ;}
06575     break;
06576 
06577   case 520:
06578 #line 2545 "parser.y"
06579     { (yyval.sel(as_member_declaration_ordinary)) = as_member_declaration_ordinary::create( loc((yyvsp[(1) - (1)].sel(as_member_declarator_list))), CURR_ACCESS_SPEC(), EMPTY_LIST(as_declaration_specifier), UNWRAP((yyvsp[(1) - (1)].sel(as_member_declarator_list))) ); ;}
06580     break;
06581 
06582   case 521:
06583 #line 2547 "parser.y"
06584     { (yyval.sel(as_member_declaration_ordinary)) = as_member_declaration_ordinary::create( loc((yyvsp[(1) - (1)].sel(as_member_declarator_list))), CURR_ACCESS_SPEC(), EMPTY_LIST(as_declaration_specifier), UNWRAP((yyvsp[(1) - (1)].sel(as_member_declarator_list))) ); ;}
06585     break;
06586 
06587   case 522:
06588 #line 2549 "parser.y"
06589     { (yyval.sel(as_member_declaration_ordinary)) = as_member_declaration_ordinary::create( loc((yyvsp[(1) - (2)].sel(as_declaration_specifier_seq))), CURR_ACCESS_SPEC(), UNWRAP((yyvsp[(1) - (2)].sel(as_declaration_specifier_seq))), UNWRAP((yyvsp[(2) - (2)].sel(as_member_declarator_list))) ); ;}
06590     break;
06591 
06592   case 523:
06593 #line 2554 "parser.y"
06594     { NEW_WRAPPER_W1( (yyval.sel(as_member_declarator_list)), as_member_declarator_list, loc((yyvsp[(1) - (1)].sel(as_ordinary_member_declarator))), as_member_declarator, (yyvsp[(1) - (1)].sel(as_ordinary_member_declarator)) ); ;}
06595     break;
06596 
06597   case 524:
06598 #line 2556 "parser.y"
06599     { (yyval.sel(as_member_declarator_list)) = (yyvsp[(3) - (3)].sel(as_member_declarator_list)); WRAPPER_PREPEND( (yyval.sel(as_member_declarator_list)), (yyvsp[(1) - (3)].sel(as_ordinary_member_declarator)) ); ;}
06600     break;
06601 
06602   case 525:
06603 #line 2576 "parser.y"
06604     { ptr<as_declarator> ctor_dcltor = as_declarator::create( loc((yyvsp[(2) - (2)].sel(as_declarator_op))), as_name::create(loc((yyvsp[(2) - (2)].sel(as_declarator_op))),CURR_CTX(loc((yyvsp[(2) - (2)].sel(as_declarator_op)))),as_constructor_id::create(loc((yyvsp[(2) - (2)].sel(as_declarator_op))),UNWRAP((yyvsp[(1) - (2)].sel(as_declaration_specifier_seq))))), EMPTY_LIST(as_declarator_op) );
06605             LIST_APPEND( ctor_dcltor->declarator_ops_get(), (yyvsp[(2) - (2)].sel(as_declarator_op)) );
06606             (yyval.sel(as_ordinary_member_declarator)) = as_ordinary_member_declarator::create( loc(ctor_dcltor), ctor_dcltor );
06607           ;}
06608     break;
06609 
06610   case 526:
06611 #line 2584 "parser.y"
06612     { NEW_WRAPPER_W1( (yyval.sel(as_member_declarator_list)), as_member_declarator_list, loc((yyvsp[(1) - (1)].sel(as_ordinary_member_declarator))), as_member_declarator, (yyvsp[(1) - (1)].sel(as_ordinary_member_declarator)) ); ;}
06613     break;
06614 
06615   case 527:
06616 #line 2586 "parser.y"
06617     { (yyval.sel(as_member_declarator_list)) = (yyvsp[(3) - (3)].sel(as_member_declarator_list)); WRAPPER_PREPEND( (yyval.sel(as_member_declarator_list)), (yyvsp[(1) - (3)].sel(as_ordinary_member_declarator)) ); ;}
06618     break;
06619 
06620   case 528:
06621 #line 2591 "parser.y"
06622     { (yyval.sel(as_ordinary_member_declarator)) = (yyvsp[(1) - (1)].sel(as_ordinary_member_declarator)); ;}
06623     break;
06624 
06625   case 529:
06626 #line 2593 "parser.y"
06627     { (yyval.sel(as_ordinary_member_declarator)) = (yyvsp[(1) - (1)].sel(as_ordinary_member_declarator)); ;}
06628     break;
06629 
06630   case 530:
06631 #line 2598 "parser.y"
06632     { NEW_WRAPPER_W1( (yyval.sel(as_member_declarator_list)), as_member_declarator_list, loc((yyvsp[(1) - (1)].sel(as_bitfield_member_declarator))), as_member_declarator, (yyvsp[(1) - (1)].sel(as_bitfield_member_declarator)) ); ;}
06633     break;
06634 
06635   case 531:
06636 #line 2600 "parser.y"
06637     { NEW_WRAPPER_W1( (yyval.sel(as_member_declarator_list)), as_member_declarator_list, loc((yyvsp[(1) - (1)].sel(as_ordinary_member_declarator))), as_member_declarator, (yyvsp[(1) - (1)].sel(as_ordinary_member_declarator)) ); ;}
06638     break;
06639 
06640   case 532:
06641 #line 2602 "parser.y"
06642     { (yyval.sel(as_member_declarator_list)) = (yyvsp[(1) - (3)].sel(as_member_declarator_list)); WRAPPER_APPEND( (yyval.sel(as_member_declarator_list)), (yyvsp[(3) - (3)].sel(as_bitfield_member_declarator)) ); ;}
06643     break;
06644 
06645   case 533:
06646 #line 2604 "parser.y"
06647     { (yyval.sel(as_member_declarator_list)) = (yyvsp[(1) - (3)].sel(as_member_declarator_list)); WRAPPER_APPEND( (yyval.sel(as_member_declarator_list)), (yyvsp[(3) - (3)].sel(as_ordinary_member_declarator)) ); ;}
06648     break;
06649 
06650   case 534:
06651 #line 2616 "parser.y"
06652     { (yyval.sel(as_bitfield_member_declarator)) = as_bitfield_member_declarator::create( loc((yyvsp[(2) - (3)].sel(bison_token))), NULL, (yyvsp[(3) - (3)].sel(as_constant_expression)) ); ;}
06653     break;
06654 
06655   case 535:
06656 #line 2618 "parser.y"
06657     { (yyval.sel(as_bitfield_member_declarator)) = (yyvsp[(1) - (1)].sel(as_bitfield_member_declarator)); ;}
06658     break;
06659 
06660   case 536:
06661 #line 2623 "parser.y"
06662     { (yyval.sel(as_bitfield_member_declarator)) = as_bitfield_member_declarator::create( loc((yyvsp[(1) - (2)].sel(bison_token))), NULL, (yyvsp[(2) - (2)].sel(as_constant_expression)) ); ;}
06663     break;
06664 
06665   case 537:
06666 #line 2625 "parser.y"
06667     { (yyval.sel(as_bitfield_member_declarator)) = (yyvsp[(1) - (1)].sel(as_bitfield_member_declarator)); ;}
06668     break;
06669 
06670   case 538:
06671 #line 2631 "parser.y"
06672     {
06673                 (yyval.sel(as_bitfield_member_declarator)) = as_bitfield_member_declarator::create( loc((yyvsp[(2) - (4)].sel(as_name))), (yyvsp[(2) - (4)].sel(as_name)), (yyvsp[(4) - (4)].sel(as_constant_expression)) );
06674                 // we only parse class bodies for real
06675                 lassert( !manager::in_disambiguation() );
06676                 // if the coloncolon _was_ there, report an error, but continue
06677                 if ((yyvsp[(1) - (4)].sel(as_name))->was_qualified_get())
06678                         report << bad_global_qual << loc((yyvsp[(1) - (4)].sel(as_name)));
06679           ;}
06680     break;
06681 
06682   case 539:
06683 #line 2643 "parser.y"
06684     { (yyval.sel(as_ordinary_member_declarator)) = as_ordinary_member_declarator::create( loc((yyvsp[(1) - (1)].sel(as_declarator))), (yyvsp[(1) - (1)].sel(as_declarator)) ); ;}
06685     break;
06686 
06687   case 540:
06688 #line 2645 "parser.y"
06689     { (yyval.sel(as_ordinary_member_declarator)) = as_initialized_member_declarator::create( loc((yyvsp[(1) - (3)].sel(as_declarator))), (yyvsp[(1) - (3)].sel(as_declarator)), (yyvsp[(3) - (3)].sel(as_constant_expression)) ); ;}
06690     break;
06691 
06692   case 541:
06693 #line 2651 "parser.y"
06694     { (yyval.sel(as_ordinary_member_declarator)) = as_pure_member_declarator::create( loc((yyvsp[(1) - (3)].sel(as_declarator))), (yyvsp[(1) - (3)].sel(as_declarator)), UNWTOK((yyvsp[(3) - (3)].sel(bison_token))) ); ;}
06695     break;
06696 
06697   case 542:
06698 #line 2656 "parser.y"
06699     {
06700                 ptr< list< srp<as_declarator_op> > > ops = (yyvsp[(1) - (3)].sel(as_declarator))->declarator_ops_get();
06701                 manager::start( TOK_START_TO_BE_DISCARDED );
06702                 // look at the first declarator operator (if any) to decide
06703                 if ( !ops->empty() &&
06704                                 as_declarator_op2op_func::instance()->process(ops->front()) )
06705                         manager::commit( TOK_PAD_MEMBER_FUNC );
06706                 else
06707                         manager::commit( TOK_PAD_MEMBER_OBJECT );
06708 
06709                 // the stored value is the same either way
06710                 (yyval.sel(as_declarator)) = (yyvsp[(1) - (3)].sel(as_declarator));
06711           ;}
06712     break;
06713 
06714   case 543:
06715 #line 2674 "parser.y"
06716     {
06717                 (yyval.sel(as_declarator)) = (yyvsp[(1) - (1)].sel(as_declarator));
06718                 sa_parser_action_logger << "processing in class declarator\n" << msg::eolog;
06719                 sa_simple_declaration::instance()->process((yyvsp[(1) - (1)].sel(as_declarator)));
06720           ;}
06721     break;
06722 
06723   case 544:
06724 #line 2683 "parser.y"
06725     { NEW_WRAPPER_W1( (yyval.sel(as_base_specifier_list)), as_base_specifier_list, loc((yyvsp[(1) - (1)].sel(as_base_specifier))), as_base_specifier, (yyvsp[(1) - (1)].sel(as_base_specifier)) ); ;}
06726     break;
06727 
06728   case 545:
06729 #line 2685 "parser.y"
06730     { (yyval.sel(as_base_specifier_list)) = (yyvsp[(1) - (3)].sel(as_base_specifier_list)); WRAPPER_APPEND( (yyvsp[(1) - (3)].sel(as_base_specifier_list)), (yyvsp[(3) - (3)].sel(as_base_specifier)) ); ;}
06731     break;
06732 
06733   case 546:
06734 #line 2690 "parser.y"
06735     { (yyval.sel(as_base_specifier)) = as_base_specifier::create( loc((yyvsp[(1) - (2)].sel(as_name))), NULL, NULL, as_name::create(loc((yyvsp[(1) - (2)].sel(as_name))),(yyvsp[(1) - (2)].sel(as_name)),TOK2ID((yyvsp[(2) - (2)].sel(bison_id_token))),(yyvsp[(1) - (2)].sel(as_name))->was_qualified_get()) ); ;}
06736     break;
06737 
06738   case 547:
06739 #line 2692 "parser.y"
06740     { (yyval.sel(as_base_specifier)) = as_base_specifier::create( loc((yyvsp[(1) - (3)].sel(as_name))), NULL, NULL, as_name::create( loc((yyvsp[(1) - (3)].sel(as_name))), (yyvsp[(1) - (3)].sel(as_name)), as_template_id::create(loc((yyvsp[(2) - (3)].sel(bison_id_token))),(yyvsp[(2) - (3)].sel(bison_id_token)),UNWRAP((yyvsp[(3) - (3)].sel(as_template_argument_list)))), (yyvsp[(1) - (3)].sel(as_name))->was_qualified_get() ) ); ;}
06741     break;
06742 
06743   case 548:
06744 #line 2694 "parser.y"
06745     { (yyval.sel(as_base_specifier)) = as_base_specifier::create( loc((yyvsp[(1) - (3)].sel(as_name))), NULL, NULL, as_name::create(loc((yyvsp[(1) - (3)].sel(as_name))),(yyvsp[(2) - (3)].sel(as_name)),TOK2ID((yyvsp[(3) - (3)].sel(bison_id_token))),true) ); ;}
06746     break;
06747 
06748   case 549:
06749 #line 2696 "parser.y"
06750     { (yyval.sel(as_base_specifier)) = as_base_specifier::create( loc((yyvsp[(1) - (4)].sel(as_name))), NULL, NULL, as_name::create( loc((yyvsp[(1) - (4)].sel(as_name))), (yyvsp[(1) - (4)].sel(as_name)), as_template_id::create(loc((yyvsp[(3) - (4)].sel(bison_id_token))),(yyvsp[(3) - (4)].sel(bison_id_token)),UNWRAP((yyvsp[(4) - (4)].sel(as_template_argument_list)))), true ) ); ;}
06751     break;
06752 
06753   case 550:
06754 #line 2698 "parser.y"
06755     { (yyval.sel(as_base_specifier)) = as_base_specifier::create( loc((yyvsp[(1) - (4)].sel(bison_token))), UNWTOK((yyvsp[(1) - (4)].sel(bison_token))), (yyvsp[(2) - (4)].sel(as_access_spec_opt_bearer))->value_get(), as_name::create(loc((yyvsp[(3) - (4)].sel(as_name))),(yyvsp[(3) - (4)].sel(as_name)),TOK2ID((yyvsp[(4) - (4)].sel(bison_id_token))),(yyvsp[(3) - (4)].sel(as_name))->was_qualified_get()) ); ;}
06756     break;
06757 
06758   case 551:
06759 #line 2700 "parser.y"
06760     { (yyval.sel(as_base_specifier)) = as_base_specifier::create( loc((yyvsp[(1) - (5)].sel(bison_token))), UNWTOK((yyvsp[(1) - (5)].sel(bison_token))), (yyvsp[(2) - (5)].sel(as_access_spec_opt_bearer))->value_get(), as_name::create( loc((yyvsp[(3) - (5)].sel(as_name))), (yyvsp[(3) - (5)].sel(as_name)), as_template_id::create(loc((yyvsp[(4) - (5)].sel(bison_id_token))),(yyvsp[(4) - (5)].sel(bison_id_token)),UNWRAP((yyvsp[(5) - (5)].sel(as_template_argument_list)))), (yyvsp[(3) - (5)].sel(as_name))->was_qualified_get() ) ); ;}
06761     break;
06762 
06763   case 552:
06764 #line 2702 "parser.y"
06765     { (yyval.sel(as_base_specifier)) = as_base_specifier::create( loc((yyvsp[(1) - (5)].sel(bison_token))), UNWTOK((yyvsp[(1) - (5)].sel(bison_token))), (yyvsp[(2) - (5)].sel(as_access_spec_opt_bearer))->value_get(), as_name::create(loc((yyvsp[(4) - (5)].sel(as_name))),(yyvsp[(4) - (5)].sel(as_name)),TOK2ID((yyvsp[(5) - (5)].sel(bison_id_token))),true) ); ;}
06766     break;
06767 
06768   case 553:
06769 #line 2704 "parser.y"
06770     { (yyval.sel(as_base_specifier)) = as_base_specifier::create( loc((yyvsp[(1) - (6)].sel(bison_token))), UNWTOK((yyvsp[(1) - (6)].sel(bison_token))), (yyvsp[(2) - (6)].sel(as_access_spec_opt_bearer))->value_get(), as_name::create( loc((yyvsp[(4) - (6)].sel(as_name))), (yyvsp[(4) - (6)].sel(as_name)), as_template_id::create(loc((yyvsp[(5) - (6)].sel(bison_id_token))),(yyvsp[(5) - (6)].sel(bison_id_token)),UNWRAP((yyvsp[(6) - (6)].sel(as_template_argument_list)))), true ) ); ;}
06771     break;
06772 
06773   case 554:
06774 #line 2706 "parser.y"
06775     { (yyval.sel(as_base_specifier)) = as_base_specifier::create( loc((yyvsp[(1) - (4)].sel(as_access_specifier))), (yyvsp[(2) - (4)].sel(as_virtual_opt_bearer))->value_get(), (yyvsp[(1) - (4)].sel(as_access_specifier)), as_name::create(loc((yyvsp[(3) - (4)].sel(as_name))),(yyvsp[(3) - (4)].sel(as_name)),TOK2ID((yyvsp[(4) - (4)].sel(bison_id_token))),(yyvsp[(3) - (4)].sel(as_name))->was_qualified_get()) ); ;}
06776     break;
06777 
06778   case 555:
06779 #line 2708 "parser.y"
06780     { (yyval.sel(as_base_specifier)) = as_base_specifier::create( loc((yyvsp[(1) - (5)].sel(as_access_specifier))), (yyvsp[(2) - (5)].sel(as_virtual_opt_bearer))->value_get(), (yyvsp[(1) - (5)].sel(as_access_specifier)), as_name::create( loc((yyvsp[(3) - (5)].sel(as_name))), (yyvsp[(3) - (5)].sel(as_name)), as_template_id::create(loc((yyvsp[(4) - (5)].sel(bison_id_token))),(yyvsp[(4) - (5)].sel(bison_id_token)),UNWRAP((yyvsp[(5) - (5)].sel(as_template_argument_list)))), (yyvsp[(3) - (5)].sel(as_name))->was_qualified_get() ) ); ;}
06781     break;
06782 
06783   case 556:
06784 #line 2710 "parser.y"
06785     { (yyval.sel(as_base_specifier)) = as_base_specifier::create( loc((yyvsp[(1) - (5)].sel(as_access_specifier))), (yyvsp[(2) - (5)].sel(as_virtual_opt_bearer))->value_get(), (yyvsp[(1) - (5)].sel(as_access_specifier)), as_name::create(loc((yyvsp[(4) - (5)].sel(as_name))),(yyvsp[(4) - (5)].sel(as_name)),TOK2ID((yyvsp[(5) - (5)].sel(bison_id_token))),true) ); ;}
06786     break;
06787 
06788   case 557:
06789 #line 2712 "parser.y"
06790     { (yyval.sel(as_base_specifier)) = as_base_specifier::create( loc((yyvsp[(1) - (6)].sel(as_access_specifier))), (yyvsp[(2) - (6)].sel(as_virtual_opt_bearer))->value_get(), (yyvsp[(1) - (6)].sel(as_access_specifier)), as_name::create( loc((yyvsp[(4) - (6)].sel(as_name))), (yyvsp[(4) - (6)].sel(as_name)), as_template_id::create(loc((yyvsp[(5) - (6)].sel(bison_id_token))),(yyvsp[(5) - (6)].sel(bison_id_token)),UNWRAP((yyvsp[(6) - (6)].sel(as_template_argument_list)))), true ) ); ;}
06791     break;
06792 
06793   case 558:
06794 #line 2717 "parser.y"
06795     { (yyval.sel(as_virtual_opt_bearer)) = as_virtual_opt_bearer::create( loc((yyvsp[(1) - (1)].sel(as_no_token))), NULL ); ;}
06796     break;
06797 
06798   case 559:
06799 #line 2719 "parser.y"
06800     { (yyval.sel(as_virtual_opt_bearer)) = as_virtual_opt_bearer::create( loc((yyvsp[(1) - (1)].sel(bison_token))), UNWTOK((yyvsp[(1) - (1)].sel(bison_token))) ); ;}
06801     break;
06802 
06803   case 560:
06804 #line 2724 "parser.y"
06805     { (yyval.sel(as_access_specifier)) = as_access_specifier_private::create( loc((yyvsp[(1) - (1)].sel(bison_token))) ); ;}
06806     break;
06807 
06808   case 561:
06809 #line 2726 "parser.y"
06810     { (yyval.sel(as_access_specifier)) = as_access_specifier_protected::create( loc((yyvsp[(1) - (1)].sel(bison_token))) ); ;}
06811     break;
06812 
06813   case 562:
06814 #line 2728 "parser.y"
06815     { (yyval.sel(as_access_specifier)) = as_access_specifier_public::create( loc((yyvsp[(1) - (1)].sel(bison_token))) ); ;}
06816     break;
06817 
06818   case 563:
06819 #line 2733 "parser.y"
06820     { (yyval.sel(as_access_spec_opt_bearer)) = as_access_spec_opt_bearer::create( loc((yyvsp[(1) - (1)].sel(as_no_token))), NULL ); ;}
06821     break;
06822 
06823   case 564:
06824 #line 2735 "parser.y"
06825     { (yyval.sel(as_access_spec_opt_bearer)) = as_access_spec_opt_bearer::create( loc((yyvsp[(1) - (1)].sel(as_access_specifier))), (yyvsp[(1) - (1)].sel(as_access_specifier)) ); ;}
06826     break;
06827 
06828   case 565:
06829 #line 2742 "parser.y"
06830     { NEW_WRAPPER_W1( (yyval.sel(as_template_param_list)), as_template_param_list, loc((yyvsp[(1) - (1)].sel(as_template_param))), as_template_param, (yyvsp[(1) - (1)].sel(as_template_param)) ); ;}
06831     break;
06832 
06833   case 566:
06834 #line 2744 "parser.y"
06835     { (yyval.sel(as_template_param_list)) = (yyvsp[(1) - (3)].sel(as_template_param_list)); WRAPPER_APPEND( (yyval.sel(as_template_param_list)), (yyvsp[(3) - (3)].sel(as_template_param)) ); ;}
06836     break;
06837 
06838   case 567:
06839 #line 2749 "parser.y"
06840     { (yyval.sel(as_template_param)) = (yyvsp[(3) - (3)].sel(as_template_type_param)); ;}
06841     break;
06842 
06843   case 568:
06844 #line 2751 "parser.y"
06845     { (yyval.sel(as_template_param)) = as_template_nontype_param::create( loc((yyvsp[(3) - (3)].sel(as_param_declaration))), (yyvsp[(3) - (3)].sel(as_param_declaration)) ); ;}
06846     break;
06847 
06848   case 569:
06849 #line 2756 "parser.y"
06850     { (yyval.sel(as_template_type_param)) = as_template_type_param_type::create( loc((yyvsp[(1) - (2)].sel(bison_token))), (yyvsp[(2) - (2)].sel(as_anyid_opt_bearer))->value_get(), NULL ); ;}
06851     break;
06852 
06853   case 570:
06854 #line 2758 "parser.y"
06855     { (yyval.sel(as_template_type_param)) = as_template_type_param_type::create( loc((yyvsp[(1) - (4)].sel(bison_token))), (yyvsp[(2) - (4)].sel(as_anyid_opt_bearer))->value_get(), (yyvsp[(4) - (4)].sel(as_type_id)) ); ;}
06856     break;
06857 
06858   case 571:
06859 #line 2760 "parser.y"
06860     { (yyval.sel(as_template_type_param)) = as_template_type_param_type::create( loc((yyvsp[(1) - (2)].sel(bison_token))), (yyvsp[(2) - (2)].sel(as_anyid_opt_bearer))->value_get(), NULL ); ;}
06861     break;
06862 
06863   case 572:
06864 #line 2762 "parser.y"
06865     { (yyval.sel(as_template_type_param)) = as_template_type_param_type::create( loc((yyvsp[(1) - (4)].sel(bison_token))), (yyvsp[(2) - (4)].sel(as_anyid_opt_bearer))->value_get(), (yyvsp[(4) - (4)].sel(as_type_id)) ); ;}
06866     break;
06867 
06868   case 573:
06869 #line 2764 "parser.y"
06870     { (yyval.sel(as_template_type_param)) = as_template_type_param_template::create( loc((yyvsp[(1) - (6)].sel(bison_token))), UNWRAP((yyvsp[(3) - (6)].sel(as_template_param_list))), (yyvsp[(6) - (6)].sel(as_anyid_opt_bearer))->value_get(), NULL ); ;}
06871     break;
06872 
06873   case 574:
06874 #line 2766 "parser.y"
06875     { (yyval.sel(as_template_type_param)) = as_template_type_param_template::create( loc((yyvsp[(1) - (8)].sel(bison_token))), UNWRAP((yyvsp[(3) - (8)].sel(as_template_param_list))), (yyvsp[(6) - (8)].sel(as_anyid_opt_bearer))->value_get(), (yyvsp[(8) - (8)].sel(as_name)) ); ;}
06876     break;
06877 
06878   case 575:
06879 #line 2772 "parser.y"
06880     { (yyval.sel(as_template_argument_list)) = EMPTY_WRAPPER( as_template_argument_list, loc((yyvsp[(3) - (3)].sel(bison_token))), as_template_argument ); ;}
06881     break;
06882 
06883   case 576:
06884 #line 2774 "parser.y"
06885     { (yyval.sel(as_template_argument_list)) = (yyvsp[(2) - (3)].sel(as_template_argument_list)); ;}
06886     break;
06887 
06888   case 577:
06889 #line 2779 "parser.y"
06890     { NEW_WRAPPER_W1( (yyval.sel(as_template_argument_list)), as_template_argument_list, loc((yyvsp[(1) - (1)].sel(as_template_argument))), as_template_argument, (yyvsp[(1) - (1)].sel(as_template_argument)) ); ;}
06891     break;
06892 
06893   case 578:
06894 #line 2781 "parser.y"
06895     { (yyval.sel(as_template_argument_list)) = (yyvsp[(1) - (3)].sel(as_template_argument_list)); WRAPPER_APPEND( (yyval.sel(as_template_argument_list)), (yyvsp[(3) - (3)].sel(as_template_argument)) ); ;}
06896     break;
06897 
06898   case 579:
06899 #line 2786 "parser.y"
06900     { (yyval.sel(as_template_argument)) = as_non_type_template_argument::create( loc((yyvsp[(3) - (3)].sel(as_expression))), (yyvsp[(3) - (3)].sel(as_expression)) ); ;}
06901     break;
06902 
06903   case 580:
06904 #line 2788 "parser.y"
06905     { (yyval.sel(as_template_argument)) = as_type_template_argument::create( loc((yyvsp[(3) - (3)].sel(as_type_id))), (yyvsp[(3) - (3)].sel(as_type_id)) ); ;}
06906     break;
06907 
06908   case 581:
06909 #line 2797 "parser.y"
06910     { NEW_WRAPPER_W1( (yyval.sel(as_init_declarator_list)), as_init_declarator_list, loc((yyvsp[(1) - (1)].sel(as_init_declarator))), as_init_declarator, (yyvsp[(1) - (1)].sel(as_init_declarator)) ); ;}
06911     break;
06912 
06913   case 582:
06914 #line 2799 "parser.y"
06915     { (yyval.sel(as_init_declarator_list)) = (yyvsp[(1) - (3)].sel(as_init_declarator_list)); WRAPPER_APPEND( (yyval.sel(as_init_declarator_list)), (yyvsp[(3) - (3)].sel(as_init_declarator)) ); ;}
06916     break;
06917 
06918   case 583:
06919 #line 2813 "parser.y"
06920     {
06921                 (yyval.sel(as_init_declarator)) = as_init_declarator::create( loc((yyvsp[(1) - (1)].sel(as_declarator))), (yyvsp[(1) - (1)].sel(as_declarator)), NULL );
06922                 sa_statements::instance()->declarator_simple(loc((yyvsp[(1) - (1)].sel(as_declarator))));
06923           ;}
06924     break;
06925 
06926   case 584:
06927 #line 2818 "parser.y"
06928     {
06929                 (yyval.sel(as_init_declarator)) = as_init_declarator::create( loc((yyvsp[(1) - (3)].sel(as_declarator))), (yyvsp[(1) - (3)].sel(as_declarator)), (yyvsp[(3) - (3)].sel(as_initializer_clause)) );
06930                 sa_statements::instance()->declarator_init(loc((yyvsp[(1) - (3)].sel(as_declarator))), (yyvsp[(3) - (3)].sel(as_initializer_clause)));
06931           ;}
06932     break;
06933 
06934   case 585:
06935 #line 2824 "parser.y"
06936     {
06937                 (yyval.sel(as_init_declarator)) = as_init_declarator::create( loc((yyvsp[(1) - (5)].sel(as_declarator))), (yyvsp[(1) - (5)].sel(as_declarator)), as_initializer_expression_list::create(loc((yyvsp[(4) - (5)].sel(as_expression_list))),UNWRAP((yyvsp[(4) - (5)].sel(as_expression_list)))) );
06938                 sa_statements::instance()->declarator_ctor(loc((yyvsp[(1) - (5)].sel(as_declarator))), (yyvsp[(4) - (5)].sel(as_expression_list)));
06939           ;}
06940     break;
06941 
06942   case 586:
06943 #line 2832 "parser.y"
06944     {
06945                 (yyval.sel(as_declarator)) = (yyvsp[(1) - (1)].sel(as_declarator));
06946                 sa_parser_action_logger << "processing declarator\n" << msg::eolog;
06947                 sa_simple_declaration::instance()->process((yyvsp[(1) - (1)].sel(as_declarator)));
06948           ;}
06949     break;
06950 
06951   case 587:
06952 #line 2841 "parser.y"
06953     { (yyval.sel(as_ordinary_member_declarator)) = (yyvsp[(1) - (1)].sel(as_ordinary_member_declarator)); ;}
06954     break;
06955 
06956   case 588:
06957 #line 2843 "parser.y"
06958     { (yyval.sel(as_ordinary_member_declarator)) = (yyvsp[(1) - (1)].sel(as_ordinary_member_declarator)); ;}
06959     break;
06960 
06961   case 589:
06962 #line 2849 "parser.y"
06963     { (yyval.sel(as_ordinary_member_declarator)) = as_ordinary_member_declarator::create( loc((yyvsp[(1) - (1)].sel(as_declarator))), (yyvsp[(1) - (1)].sel(as_declarator)) ); ;}
06964     break;
06965 
06966   case 590:
06967 #line 2852 "parser.y"
06968     { (yyval.sel(as_ordinary_member_declarator)) = as_pure_member_declarator::create( loc((yyvsp[(1) - (3)].sel(as_declarator))), (yyvsp[(1) - (3)].sel(as_declarator)), UNWTOK((yyvsp[(3) - (3)].sel(bison_token))) ); ;}
06969     break;
06970 
06971   case 591:
06972 #line 2857 "parser.y"
06973     { (yyval.sel(as_declarator)) = (yyvsp[(1) - (1)].sel(as_declarator)); /* XXX action */ ;}
06974     break;
06975 
06976   case 592:
06977 #line 2862 "parser.y"
06978     { (yyval.sel(as_name)) = (yyvsp[(1) - (1)].sel(as_name)); ;}
06979     break;
06980 
06981   case 593:
06982 #line 2864 "parser.y"
06983     { (yyval.sel(as_name)) = (yyvsp[(2) - (3)].sel(as_name)); ;}
06984     break;
06985 
06986   case 594:
06987 #line 2869 "parser.y"
06988     { (yyval.sel(as_declarator)) = as_declarator::create( loc((yyvsp[(1) - (2)].sel(as_name))), (yyvsp[(1) - (2)].sel(as_name)), EMPTY_LIST(as_declarator_op) );
06989             LIST_APPEND( (yyval.sel(as_declarator))->declarator_ops_get(), (yyvsp[(2) - (2)].sel(as_declarator_op)) ); ;}
06990     break;
06991 
06992   case 595:
06993 #line 2872 "parser.y"
06994     { (yyval.sel(as_declarator)) = (yyvsp[(2) - (3)].sel(as_declarator)); ;}
06995     break;
06996 
06997   case 596:
06998 #line 2877 "parser.y"
06999     { (yyval.sel(as_declarator_op)) = (yyvsp[(2) - (2)].sel(as_declarator_op)); ;}
07000     break;
07001 
07002   case 597:
07003 #line 2882 "parser.y"
07004     { (yyvsp[(2) - (2)].sel(as_name))->was_qualified_set( (yyvsp[(1) - (2)].sel(as_name))->was_qualified_get() ); (yyval.sel(as_name)) = (yyvsp[(2) - (2)].sel(as_name)); ;}
07005     break;
07006 
07007   case 598:
07008 #line 2884 "parser.y"
07009     { (yyvsp[(3) - (3)].sel(as_name))->was_qualified_set(true); (yyval.sel(as_name)) = (yyvsp[(3) - (3)].sel(as_name)); ;}
07010     break;
07011 
07012   case 599:
07013 #line 2889 "parser.y"
07014     { (yyval.sel(as_name)) = as_name::create( loc((yyvsp[(1) - (2)].sel(bison_token))), CURR_CTX(loc((yyvsp[(1) - (2)].sel(bison_token)))), as_destructor_id_token::create(loc((yyvsp[(1) - (2)].sel(bison_token))),(yyvsp[(2) - (2)].sel(bison_id_token))) ); ;}
07015     break;
07016 
07017   case 600:
07018 #line 2891 "parser.y"
07019     { (yyval.sel(as_name)) = as_name::create( loc((yyvsp[(1) - (3)].sel(bison_token))), CURR_CTX(loc((yyvsp[(1) - (3)].sel(bison_token)))), as_destructor_id_template::create(loc((yyvsp[(1) - (3)].sel(bison_token))),as_template_id::create(loc((yyvsp[(2) - (3)].sel(bison_id_token))),(yyvsp[(2) - (3)].sel(bison_id_token)),UNWRAP((yyvsp[(3) - (3)].sel(as_template_argument_list))))) ) ; ;}
07020     break;
07021 
07022   case 601:
07023 #line 2893 "parser.y"
07024     { (yyval.sel(as_name)) = (yyvsp[(1) - (1)].sel(as_name)); ;}
07025     break;
07026 
07027   case 602:
07028 #line 2898 "parser.y"
07029     { (yyval.sel(as_declarator)) = (yyvsp[(1) - (1)].sel(as_declarator)); ;}
07030     break;
07031 
07032   case 603:
07033 #line 2900 "parser.y"
07034     { (yyval.sel(as_declarator)) = (yyvsp[(2) - (2)].sel(as_declarator)); LIST_APPEND_LIST( (yyval.sel(as_declarator))->declarator_ops_get(), UNWRAP((yyvsp[(1) - (2)].sel(as_declarator_op_seq))) ); ;}
07035     break;
07036 
07037   case 604:
07038 #line 2911 "parser.y"
07039     { (yyval.sel(as_declarator)) = as_declarator::create( loc((yyvsp[(1) - (2)].sel(as_name))), (yyvsp[(1) - (2)].sel(as_name)), EMPTY_LIST(as_declarator_op) ); ;}
07040     break;
07041 
07042   case 605:
07043 #line 2917 "parser.y"
07044     { NO_PAD_TOKEN_BUG( loc((yyvsp[(2) - (2)].sel(bison_token))) ); ;}
07045     break;
07046 
07047   case 606:
07048 #line 2919 "parser.y"
07049     { (yyval.sel(as_declarator)) = (yyvsp[(1) - (4)].sel(as_declarator)); LIST_APPEND( (yyval.sel(as_declarator))->declarator_ops_get(), (yyvsp[(3) - (4)].sel(as_declarator_op)) ); ;}
07050     break;
07051 
07052   case 607:
07053 #line 2921 "parser.y"
07054     { (yyval.sel(as_declarator)) = (yyvsp[(1) - (3)].sel(as_declarator)); LIST_APPEND( (yyval.sel(as_declarator))->declarator_ops_get(), (yyvsp[(2) - (3)].sel(as_declarator_op)) ); ;}
07055     break;
07056 
07057   case 608:
07058 #line 2923 "parser.y"
07059     { (yyval.sel(as_declarator)) = (yyvsp[(2) - (4)].sel(as_declarator)); ;}
07060     break;
07061 
07062   case 609:
07063 #line 2928 "parser.y"
07064     { (yyval.sel(as_declarator)) = (yyvsp[(1) - (1)].sel(as_declarator)); ;}
07065     break;
07066 
07067   case 610:
07068 #line 2930 "parser.y"
07069     { (yyval.sel(as_declarator)) = (yyvsp[(2) - (2)].sel(as_declarator)); LIST_APPEND_LIST( (yyval.sel(as_declarator))->declarator_ops_get(), UNWRAP((yyvsp[(1) - (2)].sel(as_declarator_op_seq))) ); ;}
07070     break;
07071 
07072   case 611:
07073 #line 2935 "parser.y"
07074     { (yyval.sel(as_declarator)) = as_declarator::create( loc((yyvsp[(1) - (1)].sel(as_name))), (yyvsp[(1) - (1)].sel(as_name)), EMPTY_LIST(as_declarator_op) ); ;}
07075     break;
07076 
07077   case 612:
07078 #line 2937 "parser.y"
07079     { (yyval.sel(as_declarator)) = (yyvsp[(1) - (2)].sel(as_declarator)); LIST_APPEND( (yyval.sel(as_declarator))->declarator_ops_get(), (yyvsp[(2) - (2)].sel(as_declarator_op)) ); ;}
07080     break;
07081 
07082   case 613:
07083 #line 2939 "parser.y"
07084     { (yyval.sel(as_declarator)) = (yyvsp[(1) - (2)].sel(as_declarator)); LIST_APPEND( (yyval.sel(as_declarator))->declarator_ops_get(), (yyvsp[(2) - (2)].sel(as_declarator_op)) ); ;}
07085     break;
07086 
07087   case 614:
07088 #line 2941 "parser.y"
07089     { (yyval.sel(as_declarator)) = (yyvsp[(2) - (3)].sel(as_declarator)); ;}
07090     break;
07091 
07092   case 615:
07093 #line 2946 "parser.y"
07094     { (yyval.sel(as_declarator_op)) = as_declarator_op_array::create( loc((yyvsp[(1) - (3)].sel(bison_token))), (yyvsp[(2) - (3)].sel(as_constant_expression)) ); ;}
07095     break;
07096 
07097   case 616:
07098 #line 2977 "parser.y"
07099     { NEW_WRAPPER_W1( (yyval.sel(as_declarator_op_seq)), as_declarator_op_seq, loc((yyvsp[(1) - (1)].sel(as_declarator_op))), as_declarator_op, (yyvsp[(1) - (1)].sel(as_declarator_op)) ); ;}
07100     break;
07101 
07102   case 617:
07103 #line 2979 "parser.y"
07104     { (yyval.sel(as_declarator_op_seq)) = (yyvsp[(1) - (2)].sel(as_declarator_op_seq)); WRAPPER_PREPEND( (yyval.sel(as_declarator_op_seq)), (yyvsp[(2) - (2)].sel(as_declarator_op)) ); ;}
07105     break;
07106 
07107   case 618:
07108 #line 2984 "parser.y"
07109     { (yyval.sel(as_declarator_op)) = as_ptr_op_star::create( loc((yyvsp[(1) - (1)].sel(bison_token))), EMPTY_LIST(as_cv_qualifier) ); ;}
07110     break;
07111 
07112   case 619:
07113 #line 2986 "parser.y"
07114     { (yyval.sel(as_declarator_op)) = as_ptr_op_star::create( loc((yyvsp[(1) - (2)].sel(bison_token))), UNWRAP((yyvsp[(2) - (2)].sel(as_cv_qualifier_seq))) ); ;}
07115     break;
07116 
07117   case 620:
07118 #line 2988 "parser.y"
07119     { (yyval.sel(as_declarator_op)) = as_ptr_op_amp::create( loc((yyvsp[(1) - (1)].sel(bison_token))) ); ;}
07120     break;
07121 
07122   case 621:
07123 #line 2991 "parser.y"
07124     { (yyval.sel(as_declarator_op)) = as_ptr_op_member_ptr::create( loc((yyvsp[(1) - (4)].sel(as_name))), (yyvsp[(1) - (4)].sel(as_name)), EMPTY_LIST(as_cv_qualifier) ); ;}
07125     break;
07126 
07127   case 622:
07128 #line 2993 "parser.y"
07129     { (yyval.sel(as_declarator_op)) = as_ptr_op_member_ptr::create( loc((yyvsp[(1) - (5)].sel(as_name))), (yyvsp[(1) - (5)].sel(as_name)), UNWRAP((yyvsp[(4) - (5)].sel(as_cv_qualifier_seq))) ); ;}
07130     break;
07131 
07132   case 623:
07133 #line 3000 "parser.y"
07134     { (yyval.sel(as_type_id)) = as_type_id::create( loc((yyvsp[(1) - (2)].sel(as_type_specifier_seq))), UNWRAP((yyvsp[(1) - (2)].sel(as_type_specifier_seq))), EMPTY_DCLTOR(loc((yyvsp[(2) - (2)].sel(as_no_token)))) ); ;}
07135     break;
07136 
07137   case 624:
07138 #line 3002 "parser.y"
07139     { (yyval.sel(as_type_id)) = as_type_id::create( loc((yyvsp[(1) - (3)].sel(as_type_specifier_seq))), UNWRAP((yyvsp[(1) - (3)].sel(as_type_specifier_seq))), (yyvsp[(3) - (3)].sel(as_declarator)) ); ;}
07140     break;
07141 
07142   case 625:
07143 #line 3007 "parser.y"
07144     {
07145                 (yyval.sel(as_type_specifier_seq)) = (yyvsp[(1) - (1)].sel(as_type_specifier_seq));
07146                 sa_parser_action_logger << "type spec seq exclusive\n" << msg::eolog;
07147                 sa_simple_declaration::instance()->save_type_specifiers((yyvsp[(1) - (1)].sel(as_type_specifier_seq)));
07148           ;}
07149     break;
07150 
07151   case 626:
07152 #line 3013 "parser.y"
07153     {
07154                 (yyval.sel(as_type_specifier_seq)) = (yyvsp[(1) - (1)].sel(as_type_specifier_seq));
07155                 sa_parser_action_logger << "decl spec seq non exclusive\n" << msg::eolog;
07156                 sa_simple_declaration::instance()->save_type_specifiers((yyvsp[(1) - (1)].sel(as_type_specifier_seq)));
07157           ;}
07158     break;
07159 
07160   case 627:
07161 #line 3022 "parser.y"
07162     { NEW_WRAPPER_W1( (yyval.sel(as_type_specifier_seq)), as_type_specifier_seq, loc((yyvsp[(1) - (1)].sel(as_type_specifier))), as_type_specifier, (yyvsp[(1) - (1)].sel(as_type_specifier)) ); ;}
07163     break;
07164 
07165   case 628:
07166 #line 3024 "parser.y"
07167     { (yyval.sel(as_type_specifier_seq)) = EMPTY_WRAPPER( as_type_specifier_seq, loc((yyvsp[(1) - (2)].sel(as_cv_qualifier_seq))), as_type_specifier );
07168             // we have to copy, because the lists carry differently typed items
07169             // luckily, they are convertible (as_cv_qualifier is derived from as_type_specifier)
07170             ::std::copy( UNWRAP((yyvsp[(1) - (2)].sel(as_cv_qualifier_seq)))->begin(), UNWRAP((yyvsp[(1) - (2)].sel(as_cv_qualifier_seq)))->end(), ::std::back_inserter(*(UNWRAP((yyval.sel(as_type_specifier_seq))))) );
07171             WRAPPER_APPEND( (yyval.sel(as_type_specifier_seq)), (yyvsp[(2) - (2)].sel(as_type_specifier)) ); ;}
07172     break;
07173 
07174   case 629:
07175 #line 3031 "parser.y"
07176     { (yyval.sel(as_type_specifier_seq)) = (yyvsp[(1) - (2)].sel(as_type_specifier_seq)); WRAPPER_APPEND( (yyval.sel(as_type_specifier_seq)), (yyvsp[(2) - (2)].sel(as_cv_qualifier)) ); ;}
07177     break;
07178 
07179   case 630:
07180 #line 3036 "parser.y"
07181     { NEW_WRAPPER_W1( (yyval.sel(as_type_specifier_seq)), as_type_specifier_seq, loc((yyvsp[(1) - (1)].sel(as_builtin_simple_type_specifier))), as_type_specifier, (yyvsp[(1) - (1)].sel(as_builtin_simple_type_specifier)) ); ;}
07182     break;
07183 
07184   case 631:
07185 #line 3038 "parser.y"
07186     { (yyval.sel(as_type_specifier_seq)) = EMPTY_WRAPPER( as_type_specifier_seq, loc((yyvsp[(1) - (2)].sel(as_cv_qualifier_seq))), as_type_specifier );
07187             // we have to copy, because the lists carry differently typed items
07188             // luckily, they are convertible (as_cv_qualifier is derived from as_type_specifier)
07189             ::std::copy( UNWRAP((yyvsp[(1) - (2)].sel(as_cv_qualifier_seq)))->begin(), UNWRAP((yyvsp[(1) - (2)].sel(as_cv_qualifier_seq)))->end(), ::std::back_inserter(*(UNWRAP((yyval.sel(as_type_specifier_seq))))) );
07190             WRAPPER_APPEND( (yyval.sel(as_type_specifier_seq)), (yyvsp[(2) - (2)].sel(as_builtin_simple_type_specifier)) ); ;}
07191     break;
07192 
07193   case 632:
07194 #line 3045 "parser.y"
07195     { (yyval.sel(as_type_specifier_seq)) = (yyvsp[(1) - (2)].sel(as_type_specifier_seq)); WRAPPER_APPEND( (yyval.sel(as_type_specifier_seq)), (yyvsp[(2) - (2)].sel(as_cv_qualifier)) ); ;}
07196     break;
07197 
07198   case 633:
07199 #line 3047 "parser.y"
07200     { (yyval.sel(as_type_specifier_seq)) = (yyvsp[(1) - (2)].sel(as_type_specifier_seq)); WRAPPER_APPEND( (yyval.sel(as_type_specifier_seq)), (yyvsp[(2) - (2)].sel(as_builtin_simple_type_specifier)) ); ;}
07201     break;
07202 
07203   case 634:
07204 #line 3058 "parser.y"
07205     { (yyval.sel(as_declarator)) = (yyvsp[(1) - (1)].sel(as_declarator)); ;}
07206     break;
07207 
07208   case 635:
07209 #line 3060 "parser.y"
07210     { (yyval.sel(as_declarator)) = as_declarator::create( loc((yyvsp[(1) - (1)].sel(as_declarator_op_seq))), NULL, UNWRAP((yyvsp[(1) - (1)].sel(as_declarator_op_seq))) ); ;}
07211     break;
07212 
07213   case 636:
07214 #line 3062 "parser.y"
07215     { (yyval.sel(as_declarator)) = (yyvsp[(2) - (2)].sel(as_declarator)); LIST_APPEND_LIST( (yyval.sel(as_declarator))->declarator_ops_get(), UNWRAP((yyvsp[(1) - (2)].sel(as_declarator_op_seq))) ); ;}
07216     break;
07217 
07218   case 637:
07219 #line 3067 "parser.y"
07220     { (yyval.sel(as_declarator)) = (yyvsp[(2) - (3)].sel(as_declarator)); ;}
07221     break;
07222 
07223   case 638:
07224 #line 3070 "parser.y"
07225     { (yyval.sel(as_declarator)) = as_declarator::create( loc((yyvsp[(1) - (1)].sel(as_declarator_op))), NULL, EMPTY_LIST(as_declarator_op) );
07226             LIST_APPEND( (yyval.sel(as_declarator))->declarator_ops_get(), (yyvsp[(1) - (1)].sel(as_declarator_op)) ); ;}
07227     break;
07228 
07229   case 639:
07230 #line 3073 "parser.y"
07231     { (yyval.sel(as_declarator)) = (yyvsp[(1) - (2)].sel(as_declarator)); LIST_APPEND( (yyval.sel(as_declarator))->declarator_ops_get(), (yyvsp[(2) - (2)].sel(as_declarator_op)) ); ;}
07232     break;
07233 
07234   case 640:
07235 #line 3076 "parser.y"
07236     { (yyval.sel(as_declarator)) = as_declarator::create( loc((yyvsp[(1) - (1)].sel(as_declarator_op))), NULL, EMPTY_LIST(as_declarator_op) );
07237             LIST_APPEND( (yyval.sel(as_declarator))->declarator_ops_get(), (yyvsp[(1) - (1)].sel(as_declarator_op)) ); ;}
07238     break;
07239 
07240   case 641:
07241 #line 3079 "parser.y"
07242     { (yyval.sel(as_declarator)) = (yyvsp[(1) - (2)].sel(as_declarator)); LIST_APPEND( (yyval.sel(as_declarator))->declarator_ops_get(), (yyvsp[(2) - (2)].sel(as_declarator_op)) ); ;}
07243     break;
07244 
07245   case 642:
07246 #line 3084 "parser.y"
07247     { (yyval.sel(as_constant_expression)) = as_constant_expression::create( loc((yyvsp[(1) - (1)].sel(as_no_token))), EMPTY_EXPR(loc((yyvsp[(1) - (1)].sel(as_no_token)))) ); ;}
07248     break;
07249 
07250   case 643:
07251 #line 3086 "parser.y"
07252     { (yyval.sel(as_constant_expression)) = (yyvsp[(1) - (1)].sel(as_constant_expression)); ;}
07253     break;
07254 
07255   case 644:
07256 #line 3093 "parser.y"
07257     { (yyval.sel(as_param_decl_clause)) = as_param_decl_clause::create( loc((yyvsp[(1) - (1)].sel(as_no_token))), EMPTY_LIST(as_param_declaration), NULL ); ;}
07258     break;
07259 
07260   case 645:
07261 #line 3095 "parser.y"
07262     { (yyval.sel(as_param_decl_clause)) = as_param_decl_clause::create( loc((yyvsp[(1) - (1)].sel(bison_token))), EMPTY_LIST(as_param_declaration), UNWTOK((yyvsp[(1) - (1)].sel(bison_token))) ); ;}
07263     break;
07264 
07265   case 646:
07266 #line 3097 "parser.y"
07267     { (yyval.sel(as_param_decl_clause)) = as_param_decl_clause::create( loc((yyvsp[(1) - (1)].sel(as_param_declaration_list))), UNWRAP((yyvsp[(1) - (1)].sel(as_param_declaration_list))), NULL ); ;}
07268     break;
07269 
07270   case 647:
07271 #line 3099 "parser.y"
07272     { (yyval.sel(as_param_decl_clause)) = as_param_decl_clause::create( loc((yyvsp[(1) - (2)].sel(as_param_declaration_list))), UNWRAP((yyvsp[(1) - (2)].sel(as_param_declaration_list))), UNWTOK((yyvsp[(2) - (2)].sel(bison_token))) ); ;}
07273     break;
07274 
07275   case 648:
07276 #line 3101 "parser.y"
07277     { (yyval.sel(as_param_decl_clause)) = as_param_decl_clause::create( loc((yyvsp[(1) - (3)].sel(as_param_declaration_list))), UNWRAP((yyvsp[(1) - (3)].sel(as_param_declaration_list))), UNWTOK((yyvsp[(3) - (3)].sel(bison_token))) ); ;}
07278     break;
07279 
07280   case 649:
07281 #line 3106 "parser.y"
07282     { NEW_WRAPPER_W1( (yyval.sel(as_param_declaration_list)), as_param_declaration_list, loc((yyvsp[(1) - (1)].sel(as_param_declaration))), as_param_declaration, (yyvsp[(1) - (1)].sel(as_param_declaration)) ); ;}
07283     break;
07284 
07285   case 650:
07286 #line 3108 "parser.y"
07287     { (yyval.sel(as_param_declaration_list)) = (yyvsp[(1) - (3)].sel(as_param_declaration_list)); WRAPPER_APPEND( (yyval.sel(as_param_declaration_list)), (yyvsp[(3) - (3)].sel(as_param_declaration)) ); ;}
07288     break;
07289 
07290   case 651:
07291 #line 3113 "parser.y"
07292     { (yyval.sel(as_param_declaration)) = as_param_declaration::create( loc((yyvsp[(1) - (2)].sel(as_declaration_specifier_seq))), UNWRAP((yyvsp[(1) - (2)].sel(as_declaration_specifier_seq))), (yyvsp[(2) - (2)].sel(as_declarator)), EMPTY_EXPR(loc((yyvsp[(2) - (2)].sel(as_declarator)))) ); ;}
07293     break;
07294 
07295   case 652:
07296 #line 3115 "parser.y"
07297     { (yyval.sel(as_param_declaration)) = as_param_declaration::create( loc((yyvsp[(1) - (4)].sel(as_declaration_specifier_seq))), UNWRAP((yyvsp[(1) - (4)].sel(as_declaration_specifier_seq))), (yyvsp[(2) - (4)].sel(as_declarator)), (yyvsp[(4) - (4)].sel(as_expression)) ); ;}
07298     break;
07299 
07300   case 653:
07301 #line 3117 "parser.y"
07302     { (yyval.sel(as_param_declaration)) = as_param_declaration::create( loc((yyvsp[(1) - (1)].sel(as_declaration_specifier_seq))), UNWRAP((yyvsp[(1) - (1)].sel(as_declaration_specifier_seq))), DUMMY_DCLTOR, EMPTY_EXPR(loc((yyvsp[(1) - (1)].sel(as_declaration_specifier_seq)))) ); ;}
07303     break;
07304 
07305   case 654:
07306 #line 3119 "parser.y"
07307     { (yyval.sel(as_param_declaration)) = as_param_declaration::create( loc((yyvsp[(1) - (3)].sel(as_declaration_specifier_seq))), UNWRAP((yyvsp[(1) - (3)].sel(as_declaration_specifier_seq))), DUMMY_DCLTOR, (yyvsp[(3) - (3)].sel(as_expression)) ); ;}
07308     break;
07309 
07310   case 655:
07311 #line 3124 "parser.y"
07312     { (yyval.sel(as_param_declaration)) = as_param_declaration::create( loc((yyvsp[(1) - (2)].sel(as_declaration_specifier_seq))), UNWRAP((yyvsp[(1) - (2)].sel(as_declaration_specifier_seq))), (yyvsp[(2) - (2)].sel(as_declarator)), EMPTY_EXPR(loc((yyvsp[(2) - (2)].sel(as_declarator)))) ); ;}
07313     break;
07314 
07315   case 656:
07316 #line 3126 "parser.y"
07317     { (yyval.sel(as_param_declaration)) = as_param_declaration::create( loc((yyvsp[(1) - (4)].sel(as_declaration_specifier_seq))), UNWRAP((yyvsp[(1) - (4)].sel(as_declaration_specifier_seq))), (yyvsp[(2) - (4)].sel(as_declarator)), (yyvsp[(4) - (4)].sel(as_expression)) ); ;}
07318     break;
07319 
07320   case 657:
07321 #line 3128 "parser.y"
07322     { (yyval.sel(as_param_declaration)) = as_param_declaration::create( loc((yyvsp[(1) - (1)].sel(as_declaration_specifier_seq))), UNWRAP((yyvsp[(1) - (1)].sel(as_declaration_specifier_seq))), DUMMY_DCLTOR, EMPTY_EXPR(loc((yyvsp[(1) - (1)].sel(as_declaration_specifier_seq)))) ); ;}
07323     break;
07324 
07325   case 658:
07326 #line 3130 "parser.y"
07327     { (yyval.sel(as_param_declaration)) = as_param_declaration::create( loc((yyvsp[(1) - (3)].sel(as_declaration_specifier_seq))), UNWRAP((yyvsp[(1) - (3)].sel(as_declaration_specifier_seq))), DUMMY_DCLTOR, (yyvsp[(3) - (3)].sel(as_expression)) ); ;}
07328     break;
07329 
07330   case 659:
07331 #line 3136 "parser.y"
07332     { (yyval.sel(as_declarator)) = (yyvsp[(1) - (1)].sel(as_declarator)); ;}
07333     break;
07334 
07335   case 660:
07336 #line 3138 "parser.y"
07337     { (yyval.sel(as_declarator)) = as_declarator::create( loc((yyvsp[(1) - (1)].sel(as_declarator_op_seq))), NULL, UNWRAP((yyvsp[(1) - (1)].sel(as_declarator_op_seq))) ); ;}
07338     break;
07339 
07340   case 661:
07341 #line 3140 "parser.y"
07342     { (yyval.sel(as_declarator)) = (yyvsp[(2) - (2)].sel(as_declarator)); LIST_APPEND_LIST( (yyval.sel(as_declarator))->declarator_ops_get(), UNWRAP((yyvsp[(1) - (2)].sel(as_declarator_op_seq))) ); ;}
07343     break;
07344 
07345   case 662:
07346 #line 3145 "parser.y"
07347     { NO_PAD_TOKEN_BUG( loc((yyvsp[(2) - (2)].sel(bison_token))) ); ;}
07348     break;
07349 
07350   case 663:
07351 #line 3149 "parser.y"
07352     {
07353                 (yyval.sel(as_declarator)) = as_declarator::create( loc((yyvsp[(2) - (2)].sel(as_name))), (yyvsp[(2) - (2)].sel(as_name)), EMPTY_LIST(as_declarator_op) );
07354                 // when the coloncolon _was_ there...
07355                 if ((yyvsp[(1) - (2)].sel(as_name))->was_qualified_get()) {
07356                         // do not accept this alternative when disambiguating
07357                         // when not disambiguating, report an error, but continue
07358                         if (manager::in_disambiguation()) {
07359                                 llog(pl) << "qualified declarator-id, syntax error\n";
07360                                 YYABORT;        // returns from yyparse()
07361                         }
07362                         report << bad_global_qual << loc((yyvsp[(1) - (2)].sel(as_name)));
07363                 }
07364           ;}
07365     break;
07366 
07367   case 664:
07368 #line 3164 "parser.y"
07369     { (yyval.sel(as_declarator)) = as_declarator::create( loc((yyvsp[(3) - (3)].sel(as_declarator_op))), NULL, EMPTY_LIST(as_declarator_op) );
07370             LIST_APPEND( (yyval.sel(as_declarator))->declarator_ops_get(), (yyvsp[(3) - (3)].sel(as_declarator_op)) ); ;}
07371     break;
07372 
07373   case 665:
07374 #line 3167 "parser.y"
07375     { (yyval.sel(as_declarator)) = (yyvsp[(1) - (2)].sel(as_declarator)); LIST_APPEND( (yyval.sel(as_declarator))->declarator_ops_get(), (yyvsp[(2) - (2)].sel(as_declarator_op)) ); ;}
07376     break;
07377 
07378   case 666:
07379 #line 3170 "parser.y"
07380     { (yyval.sel(as_declarator)) = as_declarator::create( loc((yyvsp[(1) - (1)].sel(as_declarator_op))), NULL, EMPTY_LIST(as_declarator_op) );
07381             LIST_APPEND( (yyval.sel(as_declarator))->declarator_ops_get(), (yyvsp[(1) - (1)].sel(as_declarator_op)) ); ;}
07382     break;
07383 
07384   case 667:
07385 #line 3173 "parser.y"
07386     { (yyval.sel(as_declarator)) = (yyvsp[(1) - (2)].sel(as_declarator)); LIST_APPEND( (yyval.sel(as_declarator))->declarator_ops_get(), (yyvsp[(2) - (2)].sel(as_declarator_op)) ); ;}
07387     break;
07388 
07389   case 668:
07390 #line 3176 "parser.y"
07391     { (yyval.sel(as_declarator)) = (yyvsp[(4) - (5)].sel(as_declarator)); ;}
07392     break;
07393 
07394   case 669:
07395 #line 3182 "parser.y"
07396     { (yyval.sel(as_declarator_op)) = as_declarator_op_func::create( loc((yyvsp[(1) - (6)].sel(bison_token))), (yyvsp[(3) - (6)].sel(as_param_decl_clause)), EMPTY_LIST(as_cv_qualifier), (yyvsp[(6) - (6)].sel(as_excptn_spec_opt_bearer))->value_get() ); ;}
07397     break;
07398 
07399   case 670:
07400 #line 3184 "parser.y"
07401     { (yyval.sel(as_declarator_op)) = as_declarator_op_func::create( loc((yyvsp[(1) - (7)].sel(bison_token))), (yyvsp[(3) - (7)].sel(as_param_decl_clause)), UNWRAP((yyvsp[(6) - (7)].sel(as_cv_qualifier_seq))), (yyvsp[(7) - (7)].sel(as_excptn_spec_opt_bearer))->value_get() ); ;}
07402     break;
07403 
07404   case 671:
07405 #line 3193 "parser.y"
07406     { (yyval.sel(as_declarator_op)) = as_declarator_op_func::create( loc((yyvsp[(1) - (4)].sel(bison_token))), (yyvsp[(2) - (4)].sel(as_param_decl_clause)), EMPTY_LIST(as_cv_qualifier), (yyvsp[(4) - (4)].sel(as_excptn_spec_opt_bearer))->value_get() ); ;}
07407     break;
07408 
07409   case 672:
07410 #line 3195 "parser.y"
07411     { (yyval.sel(as_declarator_op)) = as_declarator_op_func::create( loc((yyvsp[(1) - (5)].sel(bison_token))), (yyvsp[(2) - (5)].sel(as_param_decl_clause)), UNWRAP((yyvsp[(4) - (5)].sel(as_cv_qualifier_seq))), (yyvsp[(5) - (5)].sel(as_excptn_spec_opt_bearer))->value_get() ); ;}
07412     break;
07413 
07414   case 673:
07415 #line 3200 "parser.y"
07416     { (yyval.sel(as_function_definition)) = as_function_definition::create( loc((yyvsp[(1) - (2)].sel(as_declarator))), EMPTY_LIST(as_declaration_specifier), (yyvsp[(1) - (2)].sel(as_declarator)), EMPTY_LIST(as_mem_initializer), (yyvsp[(2) - (2)].sel(bison_pack_token)), EMPTY_LIST(as_handler) ); ;}
07417     break;
07418 
07419   case 674:
07420 #line 3202 "parser.y"
07421     { (yyval.sel(as_function_definition)) = (yyvsp[(2) - (2)].sel(as_function_definition)); (yyval.sel(as_function_definition))->declarator_set((yyvsp[(1) - (2)].sel(as_declarator))); ;}
07422     break;
07423 
07424   case 675:
07425 #line 3207 "parser.y"
07426     { (yyval.sel(as_function_definition)) = (yyvsp[(2) - (2)].sel(as_function_definition)); LIST_APPEND_LIST( (yyval.sel(as_function_definition))->declaration_specifiers_get(), UNWRAP((yyvsp[(1) - (2)].sel(as_declaration_specifier_seq))) ); ;}
07427     break;
07428 
07429   case 676:
07430 #line 3210 "parser.y"
07431     { ptr<as_declarator> ctor_dcltor = as_declarator::create( loc((yyvsp[(2) - (3)].sel(as_declarator_op))), as_name::create(loc((yyvsp[(2) - (3)].sel(as_declarator_op))),CURR_CTX(loc((yyvsp[(2) - (3)].sel(as_declarator_op)))),as_constructor_id::create(loc((yyvsp[(2) - (3)].sel(as_declarator_op))),UNWRAP((yyvsp[(1) - (3)].sel(as_declaration_specifier_seq))))), EMPTY_LIST(as_declarator_op) );
07432             LIST_APPEND( ctor_dcltor->declarator_ops_get(), (yyvsp[(2) - (3)].sel(as_declarator_op)) );
07433             (yyvsp[(3) - (3)].sel(as_function_definition))->declarator_set( ctor_dcltor );
07434             (yyval.sel(as_function_definition)) = (yyvsp[(3) - (3)].sel(as_function_definition)); ;}
07435     break;
07436 
07437   case 677:
07438 #line 3215 "parser.y"
07439     { (yyval.sel(as_function_definition)) = (yyvsp[(1) - (1)].sel(as_function_definition)); ;}
07440     break;
07441 
07442   case 678:
07443 #line 3218 "parser.y"
07444     { LIST_PREPEND_LIST( (yyvsp[(2) - (2)].sel(as_function_definition))->declaration_specifiers_get(), UNWRAP((yyvsp[(1) - (2)].sel(as_declaration_specifier_seq))) );
07445             (yyval.sel(as_function_definition)) = (yyvsp[(2) - (2)].sel(as_function_definition)); ;}
07446     break;
07447 
07448   case 679:
07449 #line 3224 "parser.y"
07450     { (yyval.sel(as_function_definition)) = (yyvsp[(2) - (2)].sel(as_function_definition)); LIST_APPEND_LIST( (yyval.sel(as_function_definition))->declaration_specifiers_get(), UNWRAP((yyvsp[(1) - (2)].sel(as_declaration_specifier_seq))) ); ;}
07451     break;
07452 
07453   case 680:
07454 #line 3226 "parser.y"
07455     { ptr<as_declarator> ctor_dcltor = as_declarator::create( loc((yyvsp[(2) - (3)].sel(as_declarator_op))), as_name::create(loc((yyvsp[(2) - (3)].sel(as_declarator_op))),CURR_CTX(loc((yyvsp[(2) - (3)].sel(as_declarator_op)))),as_constructor_id::create(loc((yyvsp[(2) - (3)].sel(as_declarator_op))),UNWRAP((yyvsp[(1) - (3)].sel(as_declaration_specifier_seq))))), EMPTY_LIST(as_declarator_op) );
07456             LIST_APPEND( ctor_dcltor->declarator_ops_get(), (yyvsp[(2) - (3)].sel(as_declarator_op)) );
07457             (yyvsp[(3) - (3)].sel(as_function_definition))->declarator_set( ctor_dcltor );
07458             (yyval.sel(as_function_definition)) = (yyvsp[(3) - (3)].sel(as_function_definition)); ;}
07459     break;
07460 
07461   case 681:
07462 #line 3231 "parser.y"
07463     { (yyval.sel(as_function_definition)) = (yyvsp[(1) - (1)].sel(as_function_definition)); ;}
07464     break;
07465 
07466   case 682:
07467 #line 3234 "parser.y"
07468     { LIST_PREPEND_LIST( (yyvsp[(2) - (2)].sel(as_function_definition))->declaration_specifiers_get(), UNWRAP((yyvsp[(1) - (2)].sel(as_declaration_specifier_seq))) );
07469             (yyval.sel(as_function_definition)) = (yyvsp[(2) - (2)].sel(as_function_definition)); ;}
07470     break;
07471 
07472   case 683:
07473 #line 3240 "parser.y"
07474     {
07475                 int next_val = manager::peek()->type_get();
07476                 if (is_pack(next_val))
07477                         lassert2( next_val == TOK_PACK_BODY, "Pack already done, but the type differs!" );
07478                 else
07479                         manager::pack( TOK_PACK_BODY, loc(manager::prev_yylex()) );
07480           ;}
07481     break;
07482 
07483   case 684:
07484 #line 3251 "parser.y"
07485     { (yyval.sel(bison_pack_token)) = (yyvsp[(3) - (4)].sel(bison_pack_token)); (yyval.sel(bison_pack_token))->location_set( loc((yyvsp[(1) - (4)].sel(bison_token))) ); ;}
07486     break;
07487 
07488   case 685:
07489 #line 3256 "parser.y"
07490     { (yyval.sel(as_function_definition)) = as_function_definition::create( loc((yyvsp[(1) - (2)].sel(as_mem_initializer_list))), EMPTY_LIST(as_declaration_specifier), DUMMY_DCLTOR, UNWRAP((yyvsp[(1) - (2)].sel(as_mem_initializer_list))), (yyvsp[(2) - (2)].sel(bison_pack_token)), EMPTY_LIST(as_handler) ); ;}
07491     break;
07492 
07493   case 686:
07494 #line 3258 "parser.y"
07495     { (yyval.sel(as_function_definition)) = as_function_definition::create( loc((yyvsp[(1) - (4)].sel(bison_token))), EMPTY_LIST(as_declaration_specifier), DUMMY_DCLTOR, UNWRAP((yyvsp[(2) - (4)].sel(as_mem_initializer_list))), (yyvsp[(3) - (4)].sel(bison_pack_token)), UNWRAP((yyvsp[(4) - (4)].sel(as_handler_seq))) ); ;}
07496     break;
07497 
07498   case 687:
07499 #line 3263 "parser.y"
07500     {
07501                 ptr<as_function_definition> as_func = as_function_definition::create( loc((yyvsp[(1) - (2)].sel(as_declarator))), EMPTY_LIST(as_declaration_specifier), (yyvsp[(1) - (2)].sel(as_declarator)), EMPTY_LIST(as_mem_initializer), (yyvsp[(2) - (2)].sel(bison_pack_token)), EMPTY_LIST(as_handler) );
07502                 (yyval.sel(as_function_definition)) = as_func;
07503 
07504                 // FIXME: [rudo] this is here just for testing purposes
07505                 sa_statements::instance()->enter_function(loc((yyvsp[(1) - (2)].sel(as_declarator))),as_func);
07506                 manager::spawn((yyvsp[(2) - (2)].sel(bison_pack_token)));
07507 //F//           hinter::forced_scope_set( ss_decl_seq::root_instance() );
07508                 ptr<parse_result_type> parse_result = parser::parse();
07509                 bool ok = parse_result->success_get();
07510                 manager::close();
07511                 if (ok) {
07512                         // store the parsed tree (for dumping, mainly)
07513                         as_func->parsed_body_set( parse_result->as_result_get() );
07514                 }
07515                 sa_statements::instance()->leave_function();
07516           ;}
07517     break;
07518 
07519   case 688:
07520 #line 3282 "parser.y"
07521     { (yyval.sel(as_function_definition)) = (yyvsp[(2) - (2)].sel(as_function_definition)); (yyval.sel(as_function_definition))->declarator_set((yyvsp[(1) - (2)].sel(as_declarator))); ;}
07522     break;
07523 
07524   case 689:
07525 #line 3287 "parser.y"
07526     { (yyval.sel(as_function_definition)) = as_function_definition::create( loc((yyvsp[(1) - (2)].sel(as_declarator))), EMPTY_LIST(as_declaration_specifier), (yyvsp[(1) - (2)].sel(as_declarator)), EMPTY_LIST(as_mem_initializer), (yyvsp[(2) - (2)].sel(bison_pack_token)), EMPTY_LIST(as_handler) ); ;}
07527     break;
07528 
07529   case 690:
07530 #line 3289 "parser.y"
07531     { (yyval.sel(as_function_definition)) = (yyvsp[(2) - (2)].sel(as_function_definition)); (yyval.sel(as_function_definition))->declarator_set((yyvsp[(1) - (2)].sel(as_declarator))); ;}
07532     break;
07533 
07534   case 691:
07535 #line 3294 "parser.y"
07536     { (yyval.sel(as_initializer_clause)) = as_initializer_clause_expression::create( loc((yyvsp[(1) - (1)].sel(as_expression))), (yyvsp[(1) - (1)].sel(as_expression)) ); ;}
07537     break;
07538 
07539   case 692:
07540 #line 3296 "parser.y"
07541     { (yyval.sel(as_initializer_clause)) = as_initializer_clause_braced::create( loc((yyvsp[(1) - (4)].sel(bison_token))), UNWRAP((yyvsp[(2) - (4)].sel(as_initializer_list))) ); ;}
07542     break;
07543 
07544   case 693:
07545 #line 3298 "parser.y"
07546     { (yyval.sel(as_initializer_clause)) = as_initializer_clause_braced::create( loc((yyvsp[(1) - (2)].sel(bison_token))), EMPTY_LIST(as_initializer_clause) ); ;}
07547     break;
07548 
07549   case 696:
07550 #line 3308 "parser.y"
07551     { NEW_WRAPPER_W1( (yyval.sel(as_initializer_list)), as_initializer_list, loc((yyvsp[(1) - (1)].sel(as_initializer_clause))), as_initializer_clause, (yyvsp[(1) - (1)].sel(as_initializer_clause)) ); ;}
07552     break;
07553 
07554   case 697:
07555 #line 3310 "parser.y"
07556     { (yyval.sel(as_initializer_list)) = (yyvsp[(1) - (3)].sel(as_initializer_list)); WRAPPER_APPEND( (yyval.sel(as_initializer_list)), (yyvsp[(3) - (3)].sel(as_initializer_clause)) ); ;}
07557     break;
07558 
07559   case 698:
07560 #line 3337 "parser.y"
07561     { (yyval.sel(as_try_block_statement)) = as_try_block_statement::create( loc((yyvsp[(1) - (3)].sel(bison_token))), (yyvsp[(2) - (3)].sel(as_compound_statement)), UNWRAP((yyvsp[(3) - (3)].sel(as_handler_seq))) ); ;}
07562     break;
07563 
07564   case 699:
07565 #line 3342 "parser.y"
07566     { (yyval.sel(as_function_definition)) = as_function_definition::create( loc((yyvsp[(1) - (3)].sel(bison_token))), EMPTY_LIST(as_declaration_specifier), DUMMY_DCLTOR, EMPTY_LIST(as_mem_initializer), (yyvsp[(2) - (3)].sel(bison_pack_token)), UNWRAP((yyvsp[(3) - (3)].sel(as_handler_seq))) ); ;}
07567     break;
07568 
07569   case 700:
07570 #line 3347 "parser.y"
07571     { NEW_WRAPPER_W1( (yyval.sel(as_handler_seq)), as_handler_seq, loc((yyvsp[(1) - (2)].sel(as_handler))), as_handler, (yyvsp[(1) - (2)].sel(as_handler)) ); ;}
07572     break;
07573 
07574   case 701:
07575 #line 3349 "parser.y"
07576     { (yyval.sel(as_handler_seq)) = (yyvsp[(1) - (3)].sel(as_handler_seq)); WRAPPER_APPEND( (yyval.sel(as_handler_seq)), (yyvsp[(2) - (3)].sel(as_handler)) ); ;}
07577     break;
07578 
07579   case 702:
07580 #line 3354 "parser.y"
07581     { (yyval.sel(as_handler)) = as_handler::create( loc((yyvsp[(1) - (5)].sel(bison_token))), (yyvsp[(3) - (5)].sel(as_exception_declaration)), (yyvsp[(5) - (5)].sel(as_compound_statement)) ); ;}
07582     break;
07583 
07584   case 703:
07585 #line 3360 "parser.y"
07586     { NEW_WRAPPER_W1( (yyval.sel(as_handler_seq)), as_handler_seq, loc((yyvsp[(1) - (1)].sel(as_handler))), as_handler, (yyvsp[(1) - (1)].sel(as_handler)) ); ;}
07587     break;
07588 
07589   case 704:
07590 #line 3362 "parser.y"
07591     { (yyval.sel(as_handler_seq)) = (yyvsp[(1) - (2)].sel(as_handler_seq)); WRAPPER_APPEND( (yyval.sel(as_handler_seq)), (yyvsp[(2) - (2)].sel(as_handler)) ); ;}
07592     break;
07593 
07594   case 705:
07595 #line 3367 "parser.y"
07596     { (yyval.sel(as_exception_declaration)) = as_exception_declaration_single_type_with_variable::create( loc((yyvsp[(1) - (2)].sel(as_type_specifier_seq))), UNWRAP((yyvsp[(1) - (2)].sel(as_type_specifier_seq))), (yyvsp[(2) - (2)].sel(as_declarator)) ); ;}
07597     break;
07598 
07599   case 706:
07600 #line 3369 "parser.y"
07601     { (yyval.sel(as_exception_declaration)) = as_exception_declaration_single_type::create( loc((yyvsp[(1) - (1)].sel(as_type_specifier_seq))), UNWRAP((yyvsp[(1) - (1)].sel(as_type_specifier_seq))) ); ;}
07602     break;
07603 
07604   case 707:
07605 #line 3372 "parser.y"
07606     { (yyval.sel(as_exception_declaration)) = as_exception_declaration_any_type::create( loc((yyvsp[(1) - (1)].sel(bison_token))) ); ;}
07607     break;
07608 
07609   case 708:
07610 #line 3377 "parser.y"
07611     { (yyval.sel(as_expression_throw)) = as_expression_throw::create( loc((yyvsp[(1) - (2)].sel(bison_token))), (yyvsp[(2) - (2)].sel(as_expression)) ); ;}
07612     break;
07613 
07614   case 709:
07615 #line 3379 "parser.y"
07616     { (yyval.sel(as_expression_throw)) = as_expression_throw::create( loc((yyvsp[(1) - (1)].sel(bison_token))), EMPTY_EXPR(loc((yyvsp[(1) - (1)].sel(bison_token)))) ); ;}
07617     break;
07618 
07619   case 710:
07620 #line 3384 "parser.y"
07621     { (yyval.sel(as_excptn_spec_opt_bearer)) = as_excptn_spec_opt_bearer::create( loc((yyvsp[(1) - (1)].sel(as_no_token))), NULL ); ;}
07622     break;
07623 
07624   case 711:
07625 #line 3386 "parser.y"
07626     { (yyval.sel(as_excptn_spec_opt_bearer)) = as_excptn_spec_opt_bearer::create( loc((yyvsp[(1) - (1)].sel(as_exception_specification))), (yyvsp[(1) - (1)].sel(as_exception_specification)) ); ;}
07627     break;
07628 
07629   case 712:
07630 #line 3391 "parser.y"
07631     { (yyval.sel(as_exception_specification)) = as_exception_specification::create( loc((yyvsp[(1) - (3)].sel(bison_token))), EMPTY_LIST(as_type_id) ); ;}
07632     break;
07633 
07634   case 713:
07635 #line 3393 "parser.y"
07636     { (yyval.sel(as_exception_specification)) = as_exception_specification::create( loc((yyvsp[(1) - (4)].sel(bison_token))), UNWRAP((yyvsp[(3) - (4)].sel(as_type_id_list))) ); ;}
07637     break;
07638 
07639   case 714:
07640 #line 3398 "parser.y"
07641     { NEW_WRAPPER_W1( (yyval.sel(as_type_id_list)), as_type_id_list, loc((yyvsp[(1) - (1)].sel(as_type_id))), as_type_id, (yyvsp[(1) - (1)].sel(as_type_id)) ); ;}
07642     break;
07643 
07644   case 715:
07645 #line 3400 "parser.y"
07646     { (yyval.sel(as_type_id_list)) = (yyvsp[(1) - (3)].sel(as_type_id_list)); WRAPPER_APPEND( (yyval.sel(as_type_id_list)), (yyvsp[(3) - (3)].sel(as_type_id)) ); ;}
07647     break;
07648 
07649   case 716:
07650 #line 3405 "parser.y"
07651     { (yyval.sel(as_expression)) = (yyvsp[(1) - (1)].sel(as_expression)); ;}
07652     break;
07653 
07654   case 717:
07655 #line 3407 "parser.y"
07656     { (yyval.sel(as_expression)) = as_expression_equal::create( loc((yyvsp[(2) - (3)].sel(bison_token))), (yyvsp[(1) - (3)].sel(as_expression)), (yyvsp[(3) - (3)].sel(as_expression)) ); ;}
07657     break;
07658 
07659   case 718:
07660 #line 3409 "parser.y"
07661     { (yyval.sel(as_expression)) = as_expression_plus_equal::create( loc((yyvsp[(2) - (3)].sel(bison_token))), (yyvsp[(1) - (3)].sel(as_expression)), (yyvsp[(3) - (3)].sel(as_expression)) ); ;}
07662     break;
07663 
07664   case 719:
07665 #line 3411 "parser.y"
07666     { (yyval.sel(as_expression)) = as_expression_minus_equal::create( loc((yyvsp[(2) - (3)].sel(bison_token))), (yyvsp[(1) - (3)].sel(as_expression)), (yyvsp[(3) - (3)].sel(as_expression)) ); ;}
07667     break;
07668 
07669   case 720:
07670 #line 3413 "parser.y"
07671     { (yyval.sel(as_expression)) = as_expression_star_equal::create( loc((yyvsp[(2) - (3)].sel(bison_token))), (yyvsp[(1) - (3)].sel(as_expression)), (yyvsp[(3) - (3)].sel(as_expression)) ); ;}
07672     break;
07673 
07674   case 721:
07675 #line 3415 "parser.y"
07676     { (yyval.sel(as_expression)) = as_expression_slash_equal::create( loc((yyvsp[(2) - (3)].sel(bison_token))), (yyvsp[(1) - (3)].sel(as_expression)), (yyvsp[(3) - (3)].sel(as_expression)) ); ;}
07677     break;
07678 
07679   case 722:
07680 #line 3417 "parser.y"
07681     { (yyval.sel(as_expression)) = as_expression_percent_equal::create( loc((yyvsp[(2) - (3)].sel(bison_token))), (yyvsp[(1) - (3)].sel(as_expression)), (yyvsp[(3) - (3)].sel(as_expression)) ); ;}
07682     break;
07683 
07684   case 723:
07685 #line 3419 "parser.y"
07686     { (yyval.sel(as_expression)) = as_expression_hat_equal::create( loc((yyvsp[(2) - (3)].sel(bison_token))), (yyvsp[(1) - (3)].sel(as_expression)), (yyvsp[(3) - (3)].sel(as_expression)) ); ;}
07687     break;
07688 
07689   case 724:
07690 #line 3421 "parser.y"
07691     { (yyval.sel(as_expression)) = as_expression_amp_equal::create( loc((yyvsp[(2) - (3)].sel(bison_token))), (yyvsp[(1) - (3)].sel(as_expression)), (yyvsp[(3) - (3)].sel(as_expression)) ); ;}
07692     break;
07693 
07694   case 725:
07695 #line 3423 "parser.y"
07696     { (yyval.sel(as_expression)) = as_expression_vbar_equal::create( loc((yyvsp[(2) - (3)].sel(bison_token))), (yyvsp[(1) - (3)].sel(as_expression)), (yyvsp[(3) - (3)].sel(as_expression)) ); ;}
07697     break;
07698 
07699   case 726:
07700 #line 3425 "parser.y"
07701     { (yyval.sel(as_expression)) = as_expression_greater_greater_equal::create( loc((yyvsp[(2) - (3)].sel(bison_token))), (yyvsp[(1) - (3)].sel(as_expression)), (yyvsp[(3) - (3)].sel(as_expression)) ); ;}
07702     break;
07703 
07704   case 727:
07705 #line 3427 "parser.y"
07706     { (yyval.sel(as_expression)) = as_expression_less_less_equal::create( loc((yyvsp[(2) - (3)].sel(bison_token))), (yyvsp[(1) - (3)].sel(as_expression)), (yyvsp[(3) - (3)].sel(as_expression)) ); ;}
07707     break;
07708 
07709   case 728:
07710 #line 3435 "parser.y"
07711     { (yyval.sel(as_expression)) = (yyvsp[(1) - (1)].sel(as_expression)); ;}
07712     break;
07713 
07714   case 729:
07715 #line 3440 "parser.y"
07716     { (yyval.sel(as_expression)) = as_expression_qmark::create( loc((yyvsp[(2) - (5)].sel(bison_token))), (yyvsp[(1) - (5)].sel(as_expression)), (yyvsp[(3) - (5)].sel(as_expression)), (yyvsp[(5) - (5)].sel(as_expression)) ); ;}
07717     break;
07718 
07719   case 730:
07720 #line 3446 "parser.y"
07721     { (yyval.sel(as_expression)) = (yyvsp[(1) - (1)].sel(as_expression)); ;}
07722     break;
07723 
07724   case 731:
07725 #line 3448 "parser.y"
07726     { (yyval.sel(as_expression)) = as_expression_vbar_vbar::create( loc((yyvsp[(2) - (3)].sel(bison_token))), (yyvsp[(1) - (3)].sel(as_expression)), (yyvsp[(3) - (3)].sel(as_expression)) ); ;}
07727     break;
07728 
07729   case 732:
07730 #line 3454 "parser.y"
07731     { (yyval.sel(as_expression)) = (yyvsp[(1) - (1)].sel(as_expression)); ;}
07732     break;
07733 
07734   case 733:
07735 #line 3456 "parser.y"
07736     { (yyval.sel(as_expression)) = as_expression_amp_amp::create( loc((yyvsp[(2) - (3)].sel(bison_token))), (yyvsp[(1) - (3)].sel(as_expression)), (yyvsp[(3) - (3)].sel(as_expression)) ); ;}
07737     break;
07738 
07739   case 734:
07740 #line 3462 "parser.y"
07741     { (yyval.sel(as_expression)) = (yyvsp[(1) - (1)].sel(as_expression)); ;}
07742     break;
07743 
07744   case 735:
07745 #line 3464 "parser.y"
07746     { (yyval.sel(as_expression)) = as_expression_vbar::create( loc((yyvsp[(2) - (3)].sel(bison_token))), (yyvsp[(1) - (3)].sel(as_expression)), (yyvsp[(3) - (3)].sel(as_expression)) ); ;}
07747     break;
07748 
07749   case 736:
07750 #line 3470 "parser.y"
07751     { (yyval.sel(as_expression)) = (yyvsp[(1) - (1)].sel(as_expression)); ;}
07752     break;
07753 
07754   case 737:
07755 #line 3472 "parser.y"
07756     { (yyval.sel(as_expression)) = as_expression_hat::create( loc((yyvsp[(2) - (3)].sel(bison_token))), (yyvsp[(1) - (3)].sel(as_expression)), (yyvsp[(3) - (3)].sel(as_expression)) ); ;}
07757     break;
07758 
07759   case 738:
07760 #line 3478 "parser.y"
07761     { (yyval.sel(as_expression)) = (yyvsp[(1) - (1)].sel(as_expression)); ;}
07762     break;
07763 
07764   case 739:
07765 #line 3480 "parser.y"
07766     { (yyval.sel(as_expression)) = as_expression_amp::create( loc((yyvsp[(2) - (3)].sel(bison_token))), (yyvsp[(1) - (3)].sel(as_expression)), (yyvsp[(3) - (3)].sel(as_expression)) ); ;}
07767     break;
07768 
07769   case 740:
07770 #line 3486 "parser.y"
07771     { (yyval.sel(as_expression)) = (yyvsp[(1) - (1)].sel(as_expression)); ;}
07772     break;
07773 
07774   case 741:
07775 #line 3488 "parser.y"
07776     { (yyval.sel(as_expression)) = as_expression_equal_equal::create( loc((yyvsp[(2) - (3)].sel(bison_token))), (yyvsp[(1) - (3)].sel(as_expression)), (yyvsp[(3) - (3)].sel(as_expression)) ); ;}
07777     break;
07778 
07779   case 742:
07780 #line 3490 "parser.y"
07781     { (yyval.sel(as_expression)) = as_expression_exclam_equal::create( loc((yyvsp[(2) - (3)].sel(bison_token))), (yyvsp[(1) - (3)].sel(as_expression)), (yyvsp[(3) - (3)].sel(as_expression)) ); ;}
07782     break;
07783 
07784   case 743:
07785 #line 3496 "parser.y"
07786     { (yyval.sel(as_expression)) = (yyvsp[(1) - (1)].sel(as_expression)); ;}
07787     break;
07788 
07789   case 744:
07790 #line 3498 "parser.y"
07791     { (yyval.sel(as_expression)) = as_expression_less::create( loc((yyvsp[(2) - (3)].sel(bison_token))), (yyvsp[(1) - (3)].sel(as_expression)), (yyvsp[(3) - (3)].sel(as_expression)) ); ;}
07792     break;
07793 
07794   case 745:
07795 #line 3503 "parser.y"
07796     { (yyval.sel(as_expression)) = as_expression_less_equal::create( loc((yyvsp[(2) - (3)].sel(bison_token))), (yyvsp[(1) - (3)].sel(as_expression)), (yyvsp[(3) - (3)].sel(as_expression)) ); ;}
07797     break;
07798 
07799   case 746:
07800 #line 3505 "parser.y"
07801     { (yyval.sel(as_expression)) = as_expression_greater_equal::create( loc((yyvsp[(2) - (3)].sel(bison_token))), (yyvsp[(1) - (3)].sel(as_expression)), (yyvsp[(3) - (3)].sel(as_expression)) ); ;}
07802     break;
07803 
07804 
07805 /* Line 1267 of yacc.c.  */
07806 #line 7807 "parser.tab.cc"
07807       default: break;
07808     }
07809   YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
07810 
07811   YYPOPSTACK (yylen);
07812   yylen = 0;
07813   YY_STACK_PRINT (yyss, yyssp);
07814 
07815   *++yyvsp = yyval;
07816 
07817 
07818   /* Now `shift' the result of the reduction.  Determine what state
07819      that goes to, based on the state we popped back to and the rule
07820      number reduced by.  */
07821 
07822   yyn = yyr1[yyn];
07823 
07824   yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
07825   if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
07826     yystate = yytable[yystate];
07827   else
07828     yystate = yydefgoto[yyn - YYNTOKENS];
07829 
07830   goto yynewstate;
07831 
07832 
07833 /*------------------------------------.
07834 | yyerrlab -- here on detecting error |
07835 `------------------------------------*/
07836 yyerrlab:
07837   /* If not already recovering from an error, report this error.  */
07838   if (!yyerrstatus)
07839     {
07840       ++yynerrs;
07841 #if ! YYERROR_VERBOSE
07842       yyerror (as_result, YY_("syntax error"));
07843 #else
07844       {
07845         YYSIZE_T yysize = yysyntax_error (0, yystate, yychar);
07846         if (yymsg_alloc < yysize && yymsg_alloc < YYSTACK_ALLOC_MAXIMUM)
07847           {
07848             YYSIZE_T yyalloc = 2 * yysize;
07849             if (! (yysize <= yyalloc && yyalloc <= YYSTACK_ALLOC_MAXIMUM))
07850               yyalloc = YYSTACK_ALLOC_MAXIMUM;
07851             if (yymsg != yymsgbuf)
07852               YYSTACK_FREE (yymsg);
07853             yymsg = (char *) YYSTACK_ALLOC (yyalloc);
07854             if (yymsg)
07855               yymsg_alloc = yyalloc;
07856             else
07857               {
07858                 yymsg = yymsgbuf;
07859                 yymsg_alloc = sizeof yymsgbuf;
07860               }
07861           }
07862 
07863         if (0 < yysize && yysize <= yymsg_alloc)
07864           {
07865             (void) yysyntax_error (yymsg, yystate, yychar);
07866             yyerror (as_result, yymsg);
07867           }
07868         else
07869           {
07870             yyerror (as_result, YY_("syntax error"));
07871             if (yysize != 0)
07872               goto yyexhaustedlab;
07873           }
07874       }
07875 #endif
07876     }
07877 
07878 
07879 
07880   if (yyerrstatus == 3)
07881     {
07882       /* If just tried and failed to reuse look-ahead token after an
07883          error, discard it.  */
07884 
07885       if (yychar <= YYEOF)
07886         {
07887           /* Return failure if at end of input.  */
07888           if (yychar == YYEOF)
07889             YYABORT;
07890         }
07891       else
07892         {
07893           yydestruct ("Error: discarding",
07894                       yytoken, &yylval, as_result);
07895           yychar = YYEMPTY;
07896         }
07897     }
07898 
07899   /* Else will try to reuse look-ahead token after shifting the error
07900      token.  */
07901   goto yyerrlab1;
07902 
07903 
07904 /*---------------------------------------------------.
07905 | yyerrorlab -- error raised explicitly by YYERROR.  |
07906 `---------------------------------------------------*/
07907 yyerrorlab:
07908 
07909   /* Pacify compilers like GCC when the user code never invokes
07910      YYERROR and the label yyerrorlab therefore never appears in user
07911      code.  */
07912   if (/*CONSTCOND*/ 0)
07913      goto yyerrorlab;
07914 
07915   /* Do not reclaim the symbols of the rule which action triggered
07916      this YYERROR.  */
07917   YYPOPSTACK (yylen);
07918   yylen = 0;
07919   YY_STACK_PRINT (yyss, yyssp);
07920   yystate = *yyssp;
07921   goto yyerrlab1;
07922 
07923 
07924 /*-------------------------------------------------------------.
07925 | yyerrlab1 -- common code for both syntax error and YYERROR.  |
07926 `-------------------------------------------------------------*/
07927 yyerrlab1:
07928   yyerrstatus = 3;      /* Each real token shifted decrements this.  */
07929 
07930   for (;;)
07931     {
07932       yyn = yypact[yystate];
07933       if (yyn != YYPACT_NINF)
07934         {
07935           yyn += YYTERROR;
07936           if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
07937             {
07938               yyn = yytable[yyn];
07939               if (0 < yyn)
07940                 break;
07941             }
07942         }
07943 
07944       /* Pop the current state because it cannot handle the error token.  */
07945       if (yyssp == yyss)
07946         YYABORT;
07947 
07948 
07949       yydestruct ("Error: popping",
07950                   yystos[yystate], yyvsp, as_result);
07951       YYPOPSTACK (1);
07952       yystate = *yyssp;
07953       YY_STACK_PRINT (yyss, yyssp);
07954     }
07955 
07956   if (yyn == YYFINAL)
07957     YYACCEPT;
07958 
07959   *++yyvsp = yylval;
07960 
07961 
07962   /* Shift the error token.  */
07963   YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp);
07964 
07965   yystate = yyn;
07966   goto yynewstate;
07967 
07968 
07969 /*-------------------------------------.
07970 | yyacceptlab -- YYACCEPT comes here.  |
07971 `-------------------------------------*/
07972 yyacceptlab:
07973   yyresult = 0;
07974   goto yyreturn;
07975 
07976 /*-----------------------------------.
07977 | yyabortlab -- YYABORT comes here.  |
07978 `-----------------------------------*/
07979 yyabortlab:
07980   yyresult = 1;
07981   goto yyreturn;
07982 
07983 #ifndef yyoverflow
07984 /*-------------------------------------------------.
07985 | yyexhaustedlab -- memory exhaustion comes here.  |
07986 `-------------------------------------------------*/
07987 yyexhaustedlab:
07988   yyerror (as_result, YY_("memory exhausted"));
07989   yyresult = 2;
07990   /* Fall through.  */
07991 #endif
07992 
07993 yyreturn:
07994   if (yychar != YYEOF && yychar != YYEMPTY)
07995      yydestruct ("Cleanup: discarding lookahead",
07996                  yytoken, &yylval, as_result);
07997   /* Do not reclaim the symbols of the rule which action triggered
07998      this YYABORT or YYACCEPT.  */
07999   YYPOPSTACK (yylen);
08000   YY_STACK_PRINT (yyss, yyssp);
08001   while (yyssp != yyss)
08002     {
08003       yydestruct ("Cleanup: popping",
08004                   yystos[*yyssp], yyvsp, as_result);
08005       YYPOPSTACK (1);
08006     }
08007 #ifndef yyoverflow
08008   if (yyss != yyssa)
08009     YYSTACK_FREE (yyss);
08010 #endif
08011 #if YYERROR_VERBOSE
08012   if (yymsg != yymsgbuf)
08013     YYSTACK_FREE (yymsg);
08014 #endif
08015   return yyresult;
08016 }
08017 
08018 
08019 #line 3508 "parser.y"
08020 
08021 
08022 static void try_ctor( ptr<as_declaration_specifier_seq> const type, ptr<bison_token> const next )
08023 {
08024         (void)type;
08025         // XXX in real world, we will ask about the passed type
08026         bison_token::hint_type hint = next->user_hint_get();
08027         if (hint == bison_token::HINT_NONE) {
08028                 llog(pl) << "unhinted left parenthesis, asuming no ctor\n";
08029         } else if (hint == bison_token::HINT_CTOR) {
08030                 try_begin( "ctor" );
08031                 try_and_commit( TOK_START_CTOR, TOK_PAD_CTOR, r );
08032                 try_end_skip();
08033         } else {
08034                 lassert( hint == bison_token::HINT_NO_CTOR );
08035         }
08036 }
08037 
08038 static void disambiguate_ctor_and_bitfield_class_scope( ptr<as_declaration_specifier_seq> const type )
08039 {
08040         ptr<bison_token> next = manager::peek();
08041         bison_token::hint_type hint = next->user_hint_get();
08042         switch (next->type_get()) {
08043         case TOK_LEFT_PAR:
08044                 // XXX  in real world, we will ask about the passed type
08045                 //      from it, we might be able to say when the declaration *is not* a ctor
08046                 //      in some cases, we will still have to run the disambiguation
08047                 try_ctor( type, next );
08048                 break;
08049         case TOK_COLON:
08050                 // XXX in real world, we will ask about the passed type
08051                 if (hint == bison_token::HINT_NONE) {
08052                         llog(pl) << "unhinted colon, asuming no bitfield\n";
08053                 } else if (hint == bison_token::HINT_BITFIELD) {
08054                         manager::start( TOK_START_TO_BE_DISCARDED );
08055                         manager::commit( TOK_PAD_UNNAMED_BITFIELD );
08056                 } else {
08057                         lassert( hint == bison_token::HINT_NO_BITFIELD );
08058                 }
08059                 break;
08060         }
08061 }
08062 
08063 static void disambiguate_ctor_nmspc_scope( ptr<as_declaration_specifier_seq> const type )
08064 {
08065         ptr<bison_token> next = manager::peek();
08066         // XXX  in real world, we will ask about the passed type
08067         //      from it, we might be able to say when the declaration *is not* a ctor
08068         //      in some cases, we will still have to run the disambiguation
08069         if (next->type_get() == TOK_LEFT_PAR)
08070                 try_ctor( type, next );
08071 }
08072 

Generated on Mon Feb 12 18:22:55 2007 for lestes by doxygen 1.5.1-20070107