1 /* A Bison parser, made by GNU Bison 2.3. */ 2 3 /* Skeleton implementation for Bison's Yacc-like parsers in C 4 5 Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006 6 Free Software Foundation, Inc. 7 8 This program is free software; you can redistribute it and/or modify 9 it under the terms of the GNU General Public License as published by 10 the Free Software Foundation; either version 2, or (at your option) 11 any later version. 12 13 This program is distributed in the hope that it will be useful, 14 but WITHOUT ANY WARRANTY; without even the implied warranty of 15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 GNU General Public License for more details. 17 18 You should have received a copy of the GNU General Public License 19 along with this program; if not, write to the Free Software 20 Foundation, Inc., 51 Franklin Street, Fifth Floor, 21 Boston, MA 02110-1301, USA. */ 22 23 /* As a special exception, you may create a larger work that contains 24 part or all of the Bison parser skeleton and distribute that work 25 under terms of your choice, so long as that work isn't itself a 26 parser generator using the skeleton or a modified version thereof 27 as a parser skeleton. Alternatively, if you modify or redistribute 28 the parser skeleton itself, you may (at your option) remove this 29 special exception, which will cause the skeleton and the resulting 30 Bison output files to be licensed under the GNU General Public 31 License without this special exception. 32 33 This special exception was added by the Free Software Foundation in 34 version 2.2 of Bison. */ 35 36 /* C LALR(1) parser skeleton written by Richard Stallman, by 37 simplifying the original so-called "semantic" parser. */ 38 39 /* All symbols defined below should begin with yy or YY, to avoid 40 infringing on user name space. This should be done even for local 41 variables, as they might otherwise be expanded by user macros. 42 There are some unavoidable exceptions within include files to 43 define necessary library symbols; they are noted "INFRINGES ON 44 USER NAME SPACE" below. */ 45 46 /* Identify Bison output. */ 47 #define YYBISON 1 48 49 /* Bison version. */ 50 #define YYBISON_VERSION "2.3" 51 52 /* Skeleton name. */ 53 #define YYSKELETON_NAME "yacc.c" 54 55 /* Pure parsers. */ 56 #define YYPURE 0 57 58 /* Using locations. */ 59 #define YYLSP_NEEDED 0 60 61 62 63 /* Tokens. */ 64 #ifndef YYTOKENTYPE 65 # define YYTOKENTYPE 66 /* Put the tokens into the symbol table, so that GDB and other debuggers 67 know about them. */ 68 enum yytokentype { 69 BEG = 258, 70 END = 259, 71 ACCELERATORS = 260, 72 VIRTKEY = 261, 73 ASCII = 262, 74 NOINVERT = 263, 75 SHIFT = 264, 76 CONTROL = 265, 77 ALT = 266, 78 BITMAP = 267, 79 CURSOR = 268, 80 DIALOG = 269, 81 DIALOGEX = 270, 82 EXSTYLE = 271, 83 CAPTION = 272, 84 CLASS = 273, 85 STYLE = 274, 86 AUTO3STATE = 275, 87 AUTOCHECKBOX = 276, 88 AUTORADIOBUTTON = 277, 89 CHECKBOX = 278, 90 COMBOBOX = 279, 91 CTEXT = 280, 92 DEFPUSHBUTTON = 281, 93 EDITTEXT = 282, 94 GROUPBOX = 283, 95 LISTBOX = 284, 96 LTEXT = 285, 97 PUSHBOX = 286, 98 PUSHBUTTON = 287, 99 RADIOBUTTON = 288, 100 RTEXT = 289, 101 SCROLLBAR = 290, 102 STATE3 = 291, 103 USERBUTTON = 292, 104 BEDIT = 293, 105 HEDIT = 294, 106 IEDIT = 295, 107 FONT = 296, 108 ICON = 297, 109 ANICURSOR = 298, 110 ANIICON = 299, 111 DLGINCLUDE = 300, 112 DLGINIT = 301, 113 FONTDIR = 302, 114 HTML = 303, 115 MANIFEST = 304, 116 PLUGPLAY = 305, 117 VXD = 306, 118 TOOLBAR = 307, 119 BUTTON = 308, 120 LANGUAGE = 309, 121 CHARACTERISTICS = 310, 122 VERSIONK = 311, 123 MENU = 312, 124 MENUEX = 313, 125 MENUITEM = 314, 126 SEPARATOR = 315, 127 POPUP = 316, 128 CHECKED = 317, 129 GRAYED = 318, 130 HELP = 319, 131 INACTIVE = 320, 132 MENUBARBREAK = 321, 133 MENUBREAK = 322, 134 MESSAGETABLE = 323, 135 RCDATA = 324, 136 STRINGTABLE = 325, 137 VERSIONINFO = 326, 138 FILEVERSION = 327, 139 PRODUCTVERSION = 328, 140 FILEFLAGSMASK = 329, 141 FILEFLAGS = 330, 142 FILEOS = 331, 143 FILETYPE = 332, 144 FILESUBTYPE = 333, 145 BLOCKSTRINGFILEINFO = 334, 146 BLOCKVARFILEINFO = 335, 147 VALUE = 336, 148 BLOCK = 337, 149 MOVEABLE = 338, 150 FIXED = 339, 151 PURE = 340, 152 IMPURE = 341, 153 PRELOAD = 342, 154 LOADONCALL = 343, 155 DISCARDABLE = 344, 156 NOT = 345, 157 QUOTEDUNISTRING = 346, 158 QUOTEDSTRING = 347, 159 STRING = 348, 160 NUMBER = 349, 161 SIZEDUNISTRING = 350, 162 SIZEDSTRING = 351, 163 IGNORED_TOKEN = 352, 164 NEG = 353 165 }; 166 #endif 167 /* Tokens. */ 168 #define BEG 258 169 #define END 259 170 #define ACCELERATORS 260 171 #define VIRTKEY 261 172 #define ASCII 262 173 #define NOINVERT 263 174 #define SHIFT 264 175 #define CONTROL 265 176 #define ALT 266 177 #define BITMAP 267 178 #define CURSOR 268 179 #define DIALOG 269 180 #define DIALOGEX 270 181 #define EXSTYLE 271 182 #define CAPTION 272 183 #define CLASS 273 184 #define STYLE 274 185 #define AUTO3STATE 275 186 #define AUTOCHECKBOX 276 187 #define AUTORADIOBUTTON 277 188 #define CHECKBOX 278 189 #define COMBOBOX 279 190 #define CTEXT 280 191 #define DEFPUSHBUTTON 281 192 #define EDITTEXT 282 193 #define GROUPBOX 283 194 #define LISTBOX 284 195 #define LTEXT 285 196 #define PUSHBOX 286 197 #define PUSHBUTTON 287 198 #define RADIOBUTTON 288 199 #define RTEXT 289 200 #define SCROLLBAR 290 201 #define STATE3 291 202 #define USERBUTTON 292 203 #define BEDIT 293 204 #define HEDIT 294 205 #define IEDIT 295 206 #define FONT 296 207 #define ICON 297 208 #define ANICURSOR 298 209 #define ANIICON 299 210 #define DLGINCLUDE 300 211 #define DLGINIT 301 212 #define FONTDIR 302 213 #define HTML 303 214 #define MANIFEST 304 215 #define PLUGPLAY 305 216 #define VXD 306 217 #define TOOLBAR 307 218 #define BUTTON 308 219 #define LANGUAGE 309 220 #define CHARACTERISTICS 310 221 #define VERSIONK 311 222 #define MENU 312 223 #define MENUEX 313 224 #define MENUITEM 314 225 #define SEPARATOR 315 226 #define POPUP 316 227 #define CHECKED 317 228 #define GRAYED 318 229 #define HELP 319 230 #define INACTIVE 320 231 #define MENUBARBREAK 321 232 #define MENUBREAK 322 233 #define MESSAGETABLE 323 234 #define RCDATA 324 235 #define STRINGTABLE 325 236 #define VERSIONINFO 326 237 #define FILEVERSION 327 238 #define PRODUCTVERSION 328 239 #define FILEFLAGSMASK 329 240 #define FILEFLAGS 330 241 #define FILEOS 331 242 #define FILETYPE 332 243 #define FILESUBTYPE 333 244 #define BLOCKSTRINGFILEINFO 334 245 #define BLOCKVARFILEINFO 335 246 #define VALUE 336 247 #define BLOCK 337 248 #define MOVEABLE 338 249 #define FIXED 339 250 #define PURE 340 251 #define IMPURE 341 252 #define PRELOAD 342 253 #define LOADONCALL 343 254 #define DISCARDABLE 344 255 #define NOT 345 256 #define QUOTEDUNISTRING 346 257 #define QUOTEDSTRING 347 258 #define STRING 348 259 #define NUMBER 349 260 #define SIZEDUNISTRING 350 261 #define SIZEDSTRING 351 262 #define IGNORED_TOKEN 352 263 #define NEG 353 264 265 266 267 268 /* Copy the first part of user declarations. */ 269 #line 1 "rcparse.y" 270 /* rcparse.y -- parser for Windows rc files 271 Copyright 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2005, 2007, 2008, 272 2011 Free Software Foundation, Inc. 273 Written by Ian Lance Taylor, Cygnus Support. 274 Extended by Kai Tietz, Onevision. 275 276 This file is part of GNU Binutils. 277 278 This program is free software; you can redistribute it and/or modify 279 it under the terms of the GNU General Public License as published by 280 the Free Software Foundation; either version 3 of the License, or 281 (at your option) any later version. 282 283 This program is distributed in the hope that it will be useful, 284 but WITHOUT ANY WARRANTY; without even the implied warranty of 285 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 286 GNU General Public License for more details. 287 288 You should have received a copy of the GNU General Public License 289 along with this program; if not, write to the Free Software 290 Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 291 02110-1301, USA. */ 292 293 294 /* This is a parser for Windows rc files. It is based on the parser 295 by Gunther Ebert <gunther.ebert@ixos-leipzig.de>. */ 296 297 #include "sysdep.h" 298 #include "bfd.h" 299 #include "bucomm.h" 300 #include "libiberty.h" 301 #include "windres.h" 302 #include "safe-ctype.h" 303 304 /* The current language. */ 305 306 static unsigned short language; 307 308 /* The resource information during a sub statement. */ 309 310 static rc_res_res_info sub_res_info; 311 312 /* Dialog information. This is built by the nonterminals styles and 313 controls. */ 314 315 static rc_dialog dialog; 316 317 /* This is used when building a style. It is modified by the 318 nonterminal styleexpr. */ 319 320 static unsigned long style; 321 322 /* These are used when building a control. They are set before using 323 control_params. */ 324 325 static rc_uint_type base_style; 326 static rc_uint_type default_style; 327 static rc_res_id class; 328 static rc_res_id res_text_field; 329 static unichar null_unichar; 330 331 /* This is used for COMBOBOX, LISTBOX and EDITTEXT which 332 do not allow resource 'text' field in control definition. */ 333 static const rc_res_id res_null_text = { 1, {{0, &null_unichar}}}; 334 335 336 337 /* Enabling traces. */ 338 #ifndef YYDEBUG 339 # define YYDEBUG 0 340 #endif 341 342 /* Enabling verbose error messages. */ 343 #ifdef YYERROR_VERBOSE 344 # undef YYERROR_VERBOSE 345 # define YYERROR_VERBOSE 1 346 #else 347 # define YYERROR_VERBOSE 0 348 #endif 349 350 /* Enabling the token table. */ 351 #ifndef YYTOKEN_TABLE 352 # define YYTOKEN_TABLE 0 353 #endif 354 355 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED 356 typedef union YYSTYPE 357 #line 69 "rcparse.y" 358 { 359 rc_accelerator acc; 360 rc_accelerator *pacc; 361 rc_dialog_control *dialog_control; 362 rc_menuitem *menuitem; 363 struct 364 { 365 rc_rcdata_item *first; 366 rc_rcdata_item *last; 367 } rcdata; 368 rc_rcdata_item *rcdata_item; 369 rc_fixed_versioninfo *fixver; 370 rc_ver_info *verinfo; 371 rc_ver_stringtable *verstringtable; 372 rc_ver_stringinfo *verstring; 373 rc_ver_varinfo *vervar; 374 rc_toolbar_item *toobar_item; 375 rc_res_id id; 376 rc_res_res_info res_info; 377 struct 378 { 379 rc_uint_type on; 380 rc_uint_type off; 381 } memflags; 382 struct 383 { 384 rc_uint_type val; 385 /* Nonzero if this number was explicitly specified as long. */ 386 int dword; 387 } i; 388 rc_uint_type il; 389 rc_uint_type is; 390 const char *s; 391 struct 392 { 393 rc_uint_type length; 394 const char *s; 395 } ss; 396 unichar *uni; 397 struct 398 { 399 rc_uint_type length; 400 const unichar *s; 401 } suni; 402 } 403 /* Line 193 of yacc.c. */ 404 #line 405 "rcparse.c" 405 YYSTYPE; 406 # define yystype YYSTYPE /* obsolescent; will be withdrawn */ 407 # define YYSTYPE_IS_DECLARED 1 408 # define YYSTYPE_IS_TRIVIAL 1 409 #endif 410 411 412 413 /* Copy the second part of user declarations. */ 414 415 416 /* Line 216 of yacc.c. */ 417 #line 418 "rcparse.c" 418 419 #ifdef short 420 # undef short 421 #endif 422 423 #ifdef YYTYPE_UINT8 424 typedef YYTYPE_UINT8 yytype_uint8; 425 #else 426 typedef unsigned char yytype_uint8; 427 #endif 428 429 #ifdef YYTYPE_INT8 430 typedef YYTYPE_INT8 yytype_int8; 431 #elif (defined __STDC__ || defined __C99__FUNC__ \ 432 || defined __cplusplus || defined _MSC_VER) 433 typedef signed char yytype_int8; 434 #else 435 typedef short int yytype_int8; 436 #endif 437 438 #ifdef YYTYPE_UINT16 439 typedef YYTYPE_UINT16 yytype_uint16; 440 #else 441 typedef unsigned short int yytype_uint16; 442 #endif 443 444 #ifdef YYTYPE_INT16 445 typedef YYTYPE_INT16 yytype_int16; 446 #else 447 typedef short int yytype_int16; 448 #endif 449 450 #ifndef YYSIZE_T 451 # ifdef __SIZE_TYPE__ 452 # define YYSIZE_T __SIZE_TYPE__ 453 # elif defined size_t 454 # define YYSIZE_T size_t 455 # elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \ 456 || defined __cplusplus || defined _MSC_VER) 457 # include <stddef.h> /* INFRINGES ON USER NAME SPACE */ 458 # define YYSIZE_T size_t 459 # else 460 # define YYSIZE_T unsigned int 461 # endif 462 #endif 463 464 #define YYSIZE_MAXIMUM ((YYSIZE_T) -1) 465 466 #ifndef YY_ 467 # if defined YYENABLE_NLS && YYENABLE_NLS 468 # if ENABLE_NLS 469 # include <libintl.h> /* INFRINGES ON USER NAME SPACE */ 470 # define YY_(msgid) dgettext ("bison-runtime", msgid) 471 # endif 472 # endif 473 # ifndef YY_ 474 # define YY_(msgid) msgid 475 # endif 476 #endif 477 478 /* Suppress unused-variable warnings by "using" E. */ 479 #if ! defined lint || defined __GNUC__ 480 # define YYUSE(e) ((void) (e)) 481 #else 482 # define YYUSE(e) /* empty */ 483 #endif 484 485 /* Identity function, used to suppress warnings about constant conditions. */ 486 #ifndef lint 487 # define YYID(n) (n) 488 #else 489 #if (defined __STDC__ || defined __C99__FUNC__ \ 490 || defined __cplusplus || defined _MSC_VER) 491 static int 492 YYID (int i) 493 #else 494 static int 495 YYID (i) 496 int i; 497 #endif 498 { 499 return i; 500 } 501 #endif 502 503 #if ! defined yyoverflow || YYERROR_VERBOSE 504 505 /* The parser invokes alloca or malloc; define the necessary symbols. */ 506 507 # ifdef YYSTACK_USE_ALLOCA 508 # if YYSTACK_USE_ALLOCA 509 # ifdef __GNUC__ 510 # define YYSTACK_ALLOC __builtin_alloca 511 # elif defined __BUILTIN_VA_ARG_INCR 512 # include <alloca.h> /* INFRINGES ON USER NAME SPACE */ 513 # elif defined _AIX 514 # define YYSTACK_ALLOC __alloca 515 # elif defined _MSC_VER 516 # include <malloc.h> /* INFRINGES ON USER NAME SPACE */ 517 # define alloca _alloca 518 # else 519 # define YYSTACK_ALLOC alloca 520 # if ! defined _ALLOCA_H && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ 521 || defined __cplusplus || defined _MSC_VER) 522 # include <stdlib.h> /* INFRINGES ON USER NAME SPACE */ 523 # ifndef _STDLIB_H 524 # define _STDLIB_H 1 525 # endif 526 # endif 527 # endif 528 # endif 529 # endif 530 531 # ifdef YYSTACK_ALLOC 532 /* Pacify GCC's `empty if-body' warning. */ 533 # define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0)) 534 # ifndef YYSTACK_ALLOC_MAXIMUM 535 /* The OS might guarantee only one guard page at the bottom of the stack, 536 and a page size can be as small as 4096 bytes. So we cannot safely 537 invoke alloca (N) if N exceeds 4096. Use a slightly smaller number 538 to allow for a few compiler-allocated temporary stack slots. */ 539 # define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */ 540 # endif 541 # else 542 # define YYSTACK_ALLOC YYMALLOC 543 # define YYSTACK_FREE YYFREE 544 # ifndef YYSTACK_ALLOC_MAXIMUM 545 # define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM 546 # endif 547 # if (defined __cplusplus && ! defined _STDLIB_H \ 548 && ! ((defined YYMALLOC || defined malloc) \ 549 && (defined YYFREE || defined free))) 550 # include <stdlib.h> /* INFRINGES ON USER NAME SPACE */ 551 # ifndef _STDLIB_H 552 # define _STDLIB_H 1 553 # endif 554 # endif 555 # ifndef YYMALLOC 556 # define YYMALLOC malloc 557 # if ! defined malloc && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ 558 || defined __cplusplus || defined _MSC_VER) 559 void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */ 560 # endif 561 # endif 562 # ifndef YYFREE 563 # define YYFREE free 564 # if ! defined free && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ 565 || defined __cplusplus || defined _MSC_VER) 566 void free (void *); /* INFRINGES ON USER NAME SPACE */ 567 # endif 568 # endif 569 # endif 570 #endif /* ! defined yyoverflow || YYERROR_VERBOSE */ 571 572 573 #if (! defined yyoverflow \ 574 && (! defined __cplusplus \ 575 || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL))) 576 577 /* A type that is properly aligned for any stack member. */ 578 union yyalloc 579 { 580 yytype_int16 yyss; 581 YYSTYPE yyvs; 582 }; 583 584 /* The size of the maximum gap between one aligned stack and the next. */ 585 # define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1) 586 587 /* The size of an array large to enough to hold all stacks, each with 588 N elements. */ 589 # define YYSTACK_BYTES(N) \ 590 ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \ 591 + YYSTACK_GAP_MAXIMUM) 592 593 /* Copy COUNT objects from FROM to TO. The source and destination do 594 not overlap. */ 595 # ifndef YYCOPY 596 # if defined __GNUC__ && 1 < __GNUC__ 597 # define YYCOPY(To, From, Count) \ 598 __builtin_memcpy (To, From, (Count) * sizeof (*(From))) 599 # else 600 # define YYCOPY(To, From, Count) \ 601 do \ 602 { \ 603 YYSIZE_T yyi; \ 604 for (yyi = 0; yyi < (Count); yyi++) \ 605 (To)[yyi] = (From)[yyi]; \ 606 } \ 607 while (YYID (0)) 608 # endif 609 # endif 610 611 /* Relocate STACK from its old location to the new one. The 612 local variables YYSIZE and YYSTACKSIZE give the old and new number of 613 elements in the stack, and YYPTR gives the new location of the 614 stack. Advance YYPTR to a properly aligned location for the next 615 stack. */ 616 # define YYSTACK_RELOCATE(Stack) \ 617 do \ 618 { \ 619 YYSIZE_T yynewbytes; \ 620 YYCOPY (&yyptr->Stack, Stack, yysize); \ 621 Stack = &yyptr->Stack; \ 622 yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \ 623 yyptr += yynewbytes / sizeof (*yyptr); \ 624 } \ 625 while (YYID (0)) 626 627 #endif 628 629 /* YYFINAL -- State number of the termination state. */ 630 #define YYFINAL 2 631 /* YYLAST -- Last index in YYTABLE. */ 632 #define YYLAST 810 633 634 /* YYNTOKENS -- Number of terminals. */ 635 #define YYNTOKENS 112 636 /* YYNNTS -- Number of nonterminals. */ 637 #define YYNNTS 102 638 /* YYNRULES -- Number of rules. */ 639 #define YYNRULES 276 640 /* YYNRULES -- Number of states. */ 641 #define YYNSTATES 520 642 643 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ 644 #define YYUNDEFTOK 2 645 #define YYMAXUTOK 353 646 647 #define YYTRANSLATE(YYX) \ 648 ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) 649 650 /* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX. */ 651 static const yytype_uint8 yytranslate[] = 652 { 653 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 654 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 655 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 656 2, 2, 2, 2, 2, 2, 2, 105, 100, 2, 657 110, 111, 103, 101, 108, 102, 2, 104, 2, 2, 658 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 659 2, 109, 2, 2, 2, 2, 2, 2, 2, 2, 660 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 661 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 662 2, 2, 2, 2, 99, 2, 2, 2, 2, 2, 663 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 664 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 665 2, 2, 2, 2, 98, 2, 106, 2, 2, 2, 666 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 667 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 668 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 669 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 670 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 671 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 672 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 673 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 674 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 675 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 676 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 677 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 678 2, 2, 2, 2, 2, 2, 1, 2, 3, 4, 679 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 680 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 681 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 682 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 683 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 684 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 685 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 686 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 687 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 688 95, 96, 97, 107 689 }; 690 691 #if YYDEBUG 692 /* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in 693 YYRHS. */ 694 static const yytype_uint16 yyprhs[] = 695 { 696 0, 0, 3, 4, 7, 10, 13, 16, 19, 22, 697 25, 28, 31, 34, 37, 40, 43, 46, 49, 56, 698 57, 60, 63, 68, 70, 72, 74, 78, 81, 83, 699 85, 87, 89, 91, 93, 98, 103, 104, 118, 119, 700 133, 134, 149, 150, 154, 155, 159, 163, 167, 171, 701 175, 181, 188, 196, 205, 209, 213, 218, 222, 223, 702 226, 227, 232, 233, 238, 239, 244, 245, 250, 251, 703 256, 257, 261, 273, 286, 287, 292, 293, 298, 299, 704 303, 304, 309, 310, 315, 322, 331, 342, 354, 355, 705 360, 361, 365, 366, 371, 372, 377, 378, 383, 384, 706 389, 390, 395, 396, 400, 401, 406, 407, 423, 430, 707 439, 449, 452, 453, 456, 458, 460, 461, 465, 466, 708 470, 471, 475, 476, 480, 485, 490, 494, 501, 502, 709 505, 510, 513, 520, 521, 525, 528, 530, 532, 534, 710 536, 538, 540, 547, 548, 551, 554, 558, 564, 567, 711 573, 580, 588, 598, 603, 604, 607, 608, 610, 612, 712 614, 616, 620, 624, 628, 631, 632, 639, 640, 644, 713 649, 652, 654, 656, 658, 660, 662, 664, 666, 668, 714 670, 672, 679, 684, 693, 694, 698, 701, 708, 709, 715 716, 723, 727, 731, 735, 739, 743, 744, 750, 758, 716 759, 765, 766, 772, 773, 777, 779, 781, 783, 785, 717 788, 790, 793, 794, 797, 801, 806, 810, 811, 814, 718 815, 818, 820, 822, 824, 826, 828, 830, 832, 834, 719 836, 838, 841, 843, 845, 847, 849, 851, 854, 856, 720 859, 861, 864, 866, 869, 873, 878, 880, 884, 885, 721 887, 890, 892, 894, 898, 901, 904, 908, 912, 916, 722 920, 924, 928, 932, 936, 939, 941, 943, 947, 950, 723 954, 958, 962, 966, 970, 974, 978 724 }; 725 726 /* YYRHS -- A `-1'-separated list of the rules' RHS. */ 727 static const yytype_int16 yyrhs[] = 728 { 729 113, 0, -1, -1, 113, 114, -1, 113, 120, -1, 730 113, 121, -1, 113, 122, -1, 113, 162, -1, 113, 731 163, -1, 113, 164, -1, 113, 165, -1, 113, 170, 732 -1, 113, 173, -1, 113, 178, -1, 113, 183, -1, 733 113, 182, -1, 113, 185, -1, 113, 97, -1, 191, 734 5, 194, 3, 115, 4, -1, -1, 115, 116, -1, 735 117, 211, -1, 117, 211, 108, 118, -1, 92, -1, 736 212, -1, 119, -1, 118, 108, 119, -1, 118, 119, 737 -1, 6, -1, 7, -1, 8, -1, 9, -1, 10, 738 -1, 11, -1, 191, 12, 196, 198, -1, 191, 13, 739 195, 198, -1, -1, 191, 14, 196, 126, 212, 208, 740 208, 208, 123, 127, 3, 128, 4, -1, -1, 191, 741 15, 196, 126, 212, 208, 208, 208, 124, 127, 3, 742 128, 4, -1, -1, 191, 15, 196, 126, 212, 208, 743 208, 208, 208, 125, 127, 3, 128, 4, -1, -1, 744 16, 109, 209, -1, -1, 127, 17, 199, -1, 127, 745 18, 191, -1, 127, 19, 205, -1, 127, 16, 209, 746 -1, 127, 18, 199, -1, 127, 41, 209, 108, 199, 747 -1, 127, 41, 209, 108, 199, 208, -1, 127, 41, 748 209, 108, 199, 208, 208, -1, 127, 41, 209, 108, 749 199, 208, 208, 208, -1, 127, 57, 191, -1, 127, 750 55, 209, -1, 127, 54, 209, 208, -1, 127, 56, 751 209, -1, -1, 128, 129, -1, -1, 20, 153, 130, 752 151, -1, -1, 21, 153, 131, 151, -1, -1, 22, 753 153, 132, 151, -1, -1, 38, 153, 133, 151, -1, 754 -1, 23, 153, 134, 151, -1, -1, 24, 135, 151, 755 -1, 10, 153, 209, 152, 156, 208, 208, 208, 208, 756 207, 155, -1, 10, 153, 209, 152, 156, 208, 208, 757 208, 208, 208, 208, 155, -1, -1, 25, 153, 136, 758 151, -1, -1, 26, 153, 137, 151, -1, -1, 27, 759 138, 151, -1, -1, 28, 153, 139, 151, -1, -1, 760 39, 153, 140, 151, -1, 42, 193, 209, 208, 208, 761 155, -1, 42, 193, 209, 208, 208, 208, 208, 155, 762 -1, 42, 193, 209, 208, 208, 208, 208, 158, 207, 763 155, -1, 42, 193, 209, 208, 208, 208, 208, 158, 764 208, 208, 155, -1, -1, 40, 153, 141, 151, -1, 765 -1, 29, 142, 151, -1, -1, 30, 153, 143, 151, 766 -1, -1, 31, 153, 144, 151, -1, -1, 32, 153, 767 145, 151, -1, -1, 33, 153, 146, 151, -1, -1, 768 34, 153, 147, 151, -1, -1, 35, 148, 151, -1, 769 -1, 36, 153, 149, 151, -1, -1, 37, 193, 209, 770 108, 209, 108, 209, 108, 209, 108, 209, 108, 150, 771 205, 207, -1, 209, 208, 208, 208, 208, 155, -1, 772 209, 208, 208, 208, 208, 160, 207, 155, -1, 209, 773 208, 208, 208, 208, 160, 208, 208, 155, -1, 108, 774 154, -1, -1, 154, 108, -1, 212, -1, 199, -1, 775 -1, 3, 174, 4, -1, -1, 108, 157, 205, -1, 776 -1, 108, 159, 205, -1, -1, 108, 161, 205, -1, 777 191, 41, 195, 198, -1, 191, 42, 195, 198, -1, 778 54, 209, 208, -1, 191, 57, 194, 3, 166, 4, 779 -1, -1, 166, 167, -1, 59, 199, 208, 168, -1, 780 59, 60, -1, 61, 199, 168, 3, 166, 4, -1, 781 -1, 168, 108, 169, -1, 168, 169, -1, 62, -1, 782 63, -1, 64, -1, 65, -1, 66, -1, 67, -1, 783 191, 58, 194, 3, 171, 4, -1, -1, 171, 172, 784 -1, 59, 199, -1, 59, 199, 208, -1, 59, 199, 785 208, 208, 207, -1, 59, 60, -1, 61, 199, 3, 786 171, 4, -1, 61, 199, 208, 3, 171, 4, -1, 787 61, 199, 208, 208, 3, 171, 4, -1, 61, 199, 788 208, 208, 208, 207, 3, 171, 4, -1, 191, 68, 789 196, 198, -1, -1, 175, 176, -1, -1, 177, -1, 790 203, -1, 204, -1, 210, -1, 177, 108, 203, -1, 791 177, 108, 204, -1, 177, 108, 210, -1, 177, 108, 792 -1, -1, 70, 194, 3, 179, 180, 4, -1, -1, 793 180, 209, 202, -1, 180, 209, 108, 202, -1, 180, 794 1, -1, 191, -1, 48, -1, 69, -1, 49, -1, 795 50, -1, 51, -1, 45, -1, 46, -1, 43, -1, 796 44, -1, 191, 181, 194, 3, 174, 4, -1, 191, 797 181, 194, 198, -1, 191, 52, 194, 209, 208, 3, 798 184, 4, -1, -1, 184, 53, 191, -1, 184, 60, 799 -1, 191, 71, 186, 3, 187, 4, -1, -1, 186, 800 72, 209, 208, 208, 208, -1, 186, 73, 209, 208, 801 208, 208, -1, 186, 74, 209, -1, 186, 75, 209, 802 -1, 186, 76, 209, -1, 186, 77, 209, -1, 186, 803 78, 209, -1, -1, 187, 79, 3, 188, 4, -1, 804 187, 80, 3, 81, 199, 190, 4, -1, -1, 188, 805 82, 3, 189, 4, -1, -1, 189, 81, 199, 108, 806 199, -1, -1, 190, 208, 208, -1, 212, -1, 192, 807 -1, 200, -1, 93, -1, 212, 108, -1, 192, -1, 808 192, 108, -1, -1, 194, 197, -1, 194, 55, 209, 809 -1, 194, 54, 209, 208, -1, 194, 56, 209, -1, 810 -1, 195, 197, -1, -1, 196, 197, -1, 83, -1, 811 84, -1, 85, -1, 86, -1, 87, -1, 88, -1, 812 89, -1, 92, -1, 93, -1, 200, -1, 199, 200, 813 -1, 91, -1, 92, -1, 204, -1, 203, -1, 201, 814 -1, 202, 201, -1, 96, -1, 203, 96, -1, 95, 815 -1, 204, 95, -1, 206, -1, 90, 206, -1, 205, 816 98, 206, -1, 205, 98, 90, 206, -1, 94, -1, 817 110, 209, 111, -1, -1, 208, -1, 108, 209, -1, 818 210, -1, 94, -1, 110, 210, 111, -1, 106, 210, 819 -1, 102, 210, -1, 210, 103, 210, -1, 210, 104, 820 210, -1, 210, 105, 210, -1, 210, 101, 210, -1, 821 210, 102, 210, -1, 210, 100, 210, -1, 210, 99, 822 210, -1, 210, 98, 210, -1, 108, 212, -1, 213, 823 -1, 94, -1, 110, 210, 111, -1, 106, 210, -1, 824 213, 103, 210, -1, 213, 104, 210, -1, 213, 105, 825 210, -1, 213, 101, 210, -1, 213, 102, 210, -1, 826 213, 100, 210, -1, 213, 99, 210, -1, 213, 98, 827 210, -1 828 }; 829 830 /* YYRLINE[YYN] -- source line where rule number YYN was defined. */ 831 static const yytype_uint16 yyrline[] = 832 { 833 0, 179, 179, 181, 182, 183, 184, 185, 186, 187, 834 188, 189, 190, 191, 192, 193, 194, 195, 201, 212, 835 215, 236, 241, 253, 273, 283, 287, 292, 299, 303, 836 308, 312, 316, 320, 329, 341, 355, 353, 380, 378, 837 407, 405, 437, 440, 446, 448, 454, 458, 463, 467, 838 471, 484, 499, 514, 529, 533, 537, 541, 547, 549, 839 561, 560, 573, 572, 585, 584, 597, 596, 612, 611, 840 624, 623, 637, 648, 658, 657, 670, 669, 682, 681, 841 694, 693, 706, 705, 720, 725, 731, 737, 744, 743, 842 759, 758, 771, 770, 783, 782, 794, 793, 806, 805, 843 818, 817, 830, 829, 842, 841, 855, 853, 874, 885, 844 896, 908, 919, 922, 926, 931, 941, 944, 954, 953, 845 960, 959, 966, 965, 973, 985, 998, 1007, 1018, 1021, 846 1038, 1042, 1046, 1054, 1057, 1061, 1068, 1072, 1076, 1080, 847 1084, 1088, 1097, 1108, 1111, 1128, 1132, 1136, 1140, 1144, 848 1148, 1152, 1156, 1166, 1179, 1179, 1191, 1195, 1202, 1210, 849 1218, 1226, 1235, 1244, 1253, 1263, 1262, 1267, 1269, 1274, 850 1279, 1287, 1291, 1296, 1301, 1306, 1311, 1316, 1321, 1326, 851 1331, 1342, 1349, 1359, 1365, 1366, 1385, 1410, 1421, 1426, 852 1432, 1438, 1443, 1448, 1453, 1458, 1473, 1476, 1480, 1488, 853 1491, 1499, 1502, 1510, 1513, 1522, 1527, 1536, 1540, 1550, 854 1555, 1559, 1570, 1576, 1582, 1587, 1592, 1603, 1608, 1620, 855 1625, 1637, 1642, 1647, 1652, 1657, 1662, 1667, 1677, 1681, 856 1689, 1694, 1709, 1713, 1722, 1726, 1738, 1743, 1759, 1763, 857 1775, 1779, 1801, 1805, 1809, 1813, 1820, 1824, 1834, 1837, 858 1846, 1855, 1864, 1868, 1872, 1877, 1882, 1887, 1892, 1897, 859 1902, 1907, 1912, 1917, 1928, 1937, 1948, 1952, 1956, 1961, 860 1966, 1971, 1976, 1981, 1986, 1991, 1996 861 }; 862 #endif 863 864 #if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE 865 /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM. 866 First, the terminals, then, starting at YYNTOKENS, nonterminals. */ 867 static const char *const yytname[] = 868 { 869 "$end", "error", "$undefined", "BEG", "END", "ACCELERATORS", "VIRTKEY", 870 "ASCII", "NOINVERT", "SHIFT", "CONTROL", "ALT", "BITMAP", "CURSOR", 871 "DIALOG", "DIALOGEX", "EXSTYLE", "CAPTION", "CLASS", "STYLE", 872 "AUTO3STATE", "AUTOCHECKBOX", "AUTORADIOBUTTON", "CHECKBOX", "COMBOBOX", 873 "CTEXT", "DEFPUSHBUTTON", "EDITTEXT", "GROUPBOX", "LISTBOX", "LTEXT", 874 "PUSHBOX", "PUSHBUTTON", "RADIOBUTTON", "RTEXT", "SCROLLBAR", "STATE3", 875 "USERBUTTON", "BEDIT", "HEDIT", "IEDIT", "FONT", "ICON", "ANICURSOR", 876 "ANIICON", "DLGINCLUDE", "DLGINIT", "FONTDIR", "HTML", "MANIFEST", 877 "PLUGPLAY", "VXD", "TOOLBAR", "BUTTON", "LANGUAGE", "CHARACTERISTICS", 878 "VERSIONK", "MENU", "MENUEX", "MENUITEM", "SEPARATOR", "POPUP", 879 "CHECKED", "GRAYED", "HELP", "INACTIVE", "MENUBARBREAK", "MENUBREAK", 880 "MESSAGETABLE", "RCDATA", "STRINGTABLE", "VERSIONINFO", "FILEVERSION", 881 "PRODUCTVERSION", "FILEFLAGSMASK", "FILEFLAGS", "FILEOS", "FILETYPE", 882 "FILESUBTYPE", "BLOCKSTRINGFILEINFO", "BLOCKVARFILEINFO", "VALUE", 883 "BLOCK", "MOVEABLE", "FIXED", "PURE", "IMPURE", "PRELOAD", "LOADONCALL", 884 "DISCARDABLE", "NOT", "QUOTEDUNISTRING", "QUOTEDSTRING", "STRING", 885 "NUMBER", "SIZEDUNISTRING", "SIZEDSTRING", "IGNORED_TOKEN", "'|'", "'^'", 886 "'&'", "'+'", "'-'", "'*'", "'/'", "'%'", "'~'", "NEG", "','", "'='", 887 "'('", "')'", "$accept", "input", "accelerator", "acc_entries", 888 "acc_entry", "acc_event", "acc_options", "acc_option", "bitmap", 889 "cursor", "dialog", "@1", "@2", "@3", "exstyle", "styles", "controls", 890 "control", "@4", "@5", "@6", "@7", "@8", "@9", "@10", "@11", "@12", 891 "@13", "@14", "@15", "@16", "@17", "@18", "@19", "@20", "@21", "@22", 892 "@23", "@24", "control_params", "cresid", "optresidc", "resid", 893 "opt_control_data", "control_styleexpr", "@25", "icon_styleexpr", "@26", 894 "control_params_styleexpr", "@27", "font", "icon", "language", "menu", 895 "menuitems", "menuitem", "menuitem_flags", "menuitem_flag", "menuex", 896 "menuexitems", "menuexitem", "messagetable", "optrcdata_data", "@28", 897 "optrcdata_data_int", "rcdata_data", "stringtable", "@29", "string_data", 898 "rcdata_id", "user", "toolbar", "toolbar_data", "versioninfo", 899 "fixedverinfo", "verblocks", "verstringtables", "vervals", "vertrans", 900 "id", "resname", "resref", "suboptions", "memflags_move_discard", 901 "memflags_move", "memflag", "file_name", "res_unicode_string_concat", 902 "res_unicode_string", "res_unicode_sizedstring", 903 "res_unicode_sizedstring_concat", "sizedstring", "sizedunistring", 904 "styleexpr", "parennumber", "optcnumexpr", "cnumexpr", "numexpr", 905 "sizednumexpr", "cposnumexpr", "posnumexpr", "sizedposnumexpr", 0 906 }; 907 #endif 908 909 # ifdef YYPRINT 910 /* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to 911 token YYLEX-NUM. */ 912 static const yytype_uint16 yytoknum[] = 913 { 914 0, 256, 257, 258, 259, 260, 261, 262, 263, 264, 915 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 916 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 917 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 918 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 919 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 920 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 921 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 922 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 923 345, 346, 347, 348, 349, 350, 351, 352, 124, 94, 924 38, 43, 45, 42, 47, 37, 126, 353, 44, 61, 925 40, 41 926 }; 927 # endif 928 929 /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ 930 static const yytype_uint8 yyr1[] = 931 { 932 0, 112, 113, 113, 113, 113, 113, 113, 113, 113, 933 113, 113, 113, 113, 113, 113, 113, 113, 114, 115, 934 115, 116, 116, 117, 117, 118, 118, 118, 119, 119, 935 119, 119, 119, 119, 120, 121, 123, 122, 124, 122, 936 125, 122, 126, 126, 127, 127, 127, 127, 127, 127, 937 127, 127, 127, 127, 127, 127, 127, 127, 128, 128, 938 130, 129, 131, 129, 132, 129, 133, 129, 134, 129, 939 135, 129, 129, 129, 136, 129, 137, 129, 138, 129, 940 139, 129, 140, 129, 129, 129, 129, 129, 141, 129, 941 142, 129, 143, 129, 144, 129, 145, 129, 146, 129, 942 147, 129, 148, 129, 149, 129, 150, 129, 151, 151, 943 151, 152, 153, 153, 154, 154, 155, 155, 157, 156, 944 159, 158, 161, 160, 162, 163, 164, 165, 166, 166, 945 167, 167, 167, 168, 168, 168, 169, 169, 169, 169, 946 169, 169, 170, 171, 171, 172, 172, 172, 172, 172, 947 172, 172, 172, 173, 175, 174, 176, 176, 177, 177, 948 177, 177, 177, 177, 177, 179, 178, 180, 180, 180, 949 180, 181, 181, 181, 181, 181, 181, 181, 181, 181, 950 181, 182, 182, 183, 184, 184, 184, 185, 186, 186, 951 186, 186, 186, 186, 186, 186, 187, 187, 187, 188, 952 188, 189, 189, 190, 190, 191, 191, 192, 192, 193, 953 193, 193, 194, 194, 194, 194, 194, 195, 195, 196, 954 196, 197, 197, 197, 197, 197, 197, 197, 198, 198, 955 199, 199, 200, 200, 201, 201, 202, 202, 203, 203, 956 204, 204, 205, 205, 205, 205, 206, 206, 207, 207, 957 208, 209, 210, 210, 210, 210, 210, 210, 210, 210, 958 210, 210, 210, 210, 211, 212, 213, 213, 213, 213, 959 213, 213, 213, 213, 213, 213, 213 960 }; 961 962 /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ 963 static const yytype_uint8 yyr2[] = 964 { 965 0, 2, 0, 2, 2, 2, 2, 2, 2, 2, 966 2, 2, 2, 2, 2, 2, 2, 2, 6, 0, 967 2, 2, 4, 1, 1, 1, 3, 2, 1, 1, 968 1, 1, 1, 1, 4, 4, 0, 13, 0, 13, 969 0, 14, 0, 3, 0, 3, 3, 3, 3, 3, 970 5, 6, 7, 8, 3, 3, 4, 3, 0, 2, 971 0, 4, 0, 4, 0, 4, 0, 4, 0, 4, 972 0, 3, 11, 12, 0, 4, 0, 4, 0, 3, 973 0, 4, 0, 4, 6, 8, 10, 11, 0, 4, 974 0, 3, 0, 4, 0, 4, 0, 4, 0, 4, 975 0, 4, 0, 3, 0, 4, 0, 15, 6, 8, 976 9, 2, 0, 2, 1, 1, 0, 3, 0, 3, 977 0, 3, 0, 3, 4, 4, 3, 6, 0, 2, 978 4, 2, 6, 0, 3, 2, 1, 1, 1, 1, 979 1, 1, 6, 0, 2, 2, 3, 5, 2, 5, 980 6, 7, 9, 4, 0, 2, 0, 1, 1, 1, 981 1, 3, 3, 3, 2, 0, 6, 0, 3, 4, 982 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 983 1, 6, 4, 8, 0, 3, 2, 6, 0, 6, 984 6, 3, 3, 3, 3, 3, 0, 5, 7, 0, 985 5, 0, 5, 0, 3, 1, 1, 1, 1, 2, 986 1, 2, 0, 2, 3, 4, 3, 0, 2, 0, 987 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 988 1, 2, 1, 1, 1, 1, 1, 2, 1, 2, 989 1, 2, 1, 2, 3, 4, 1, 3, 0, 1, 990 2, 1, 1, 3, 2, 2, 3, 3, 3, 3, 991 3, 3, 3, 3, 2, 1, 1, 3, 2, 3, 992 3, 3, 3, 3, 3, 3, 3 993 }; 994 995 /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state 996 STATE-NUM when YYTABLE doesn't specify something else to do. Zero 997 means the default is an error. */ 998 static const yytype_uint16 yydefact[] = 999 { 1000 2, 0, 1, 0, 212, 232, 233, 208, 266, 17, 1001 0, 0, 3, 4, 5, 6, 7, 8, 9, 10, 1002 11, 12, 13, 15, 14, 16, 0, 206, 207, 205, 1003 265, 252, 0, 0, 0, 0, 251, 0, 268, 0, 1004 212, 219, 217, 219, 219, 217, 217, 179, 180, 177, 1005 178, 172, 174, 175, 176, 212, 212, 212, 219, 173, 1006 188, 212, 171, 0, 0, 0, 0, 0, 0, 0, 1007 0, 255, 254, 0, 0, 126, 0, 0, 0, 0, 1008 0, 0, 0, 0, 165, 0, 0, 0, 221, 222, 1009 223, 224, 225, 226, 227, 213, 267, 0, 0, 0, 1010 42, 42, 0, 0, 0, 0, 0, 0, 0, 0, 1011 276, 275, 274, 272, 273, 269, 270, 271, 253, 250, 1012 263, 262, 261, 259, 260, 256, 257, 258, 167, 0, 1013 214, 216, 19, 228, 229, 220, 34, 218, 35, 0, 1014 0, 0, 124, 125, 0, 128, 143, 153, 196, 0, 1015 0, 0, 0, 0, 0, 0, 154, 182, 0, 215, 1016 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1017 191, 192, 193, 194, 195, 0, 156, 170, 166, 0, 1018 18, 23, 20, 0, 24, 43, 0, 0, 184, 127, 1019 0, 0, 129, 142, 0, 0, 144, 187, 0, 0, 1020 0, 0, 181, 240, 238, 155, 157, 158, 159, 160, 1021 0, 236, 168, 235, 234, 0, 21, 0, 0, 0, 1022 131, 0, 230, 133, 148, 145, 0, 199, 0, 0, 1023 0, 164, 239, 241, 169, 237, 264, 0, 36, 38, 1024 183, 0, 186, 231, 133, 0, 146, 143, 0, 0, 1025 0, 189, 190, 161, 162, 163, 28, 29, 30, 31, 1026 32, 33, 22, 25, 44, 44, 40, 185, 130, 128, 1027 136, 137, 138, 139, 140, 141, 0, 135, 248, 0, 1028 143, 0, 197, 0, 203, 0, 27, 0, 0, 44, 1029 0, 134, 147, 249, 149, 0, 143, 248, 201, 0, 1030 26, 58, 0, 0, 0, 0, 0, 0, 0, 0, 1031 0, 58, 0, 132, 150, 0, 0, 0, 198, 0, 1032 0, 48, 45, 46, 49, 207, 0, 246, 0, 47, 1033 242, 0, 0, 55, 57, 54, 0, 58, 151, 143, 1034 200, 0, 204, 37, 112, 112, 112, 112, 112, 70, 1035 112, 112, 78, 112, 90, 112, 112, 112, 112, 112, 1036 102, 112, 0, 112, 112, 112, 0, 59, 243, 0, 1037 0, 0, 56, 39, 0, 0, 0, 0, 0, 115, 1038 114, 60, 62, 64, 68, 0, 74, 76, 0, 80, 1039 0, 92, 94, 96, 98, 100, 0, 104, 210, 0, 1040 0, 66, 82, 88, 0, 247, 0, 244, 50, 41, 1041 152, 0, 0, 113, 0, 0, 0, 0, 71, 0, 1042 0, 0, 79, 0, 91, 0, 0, 0, 0, 0, 1043 103, 0, 211, 0, 209, 0, 0, 0, 0, 245, 1044 51, 202, 0, 0, 61, 63, 65, 69, 0, 75, 1045 77, 81, 93, 95, 97, 99, 101, 105, 0, 67, 1046 83, 89, 0, 52, 111, 118, 0, 0, 0, 116, 1047 53, 0, 0, 0, 0, 154, 84, 0, 119, 0, 1048 116, 0, 0, 116, 0, 122, 108, 248, 0, 117, 1049 120, 85, 248, 248, 0, 116, 249, 0, 0, 116, 1050 249, 116, 249, 123, 109, 116, 0, 121, 86, 116, 1051 72, 116, 110, 0, 87, 73, 106, 0, 248, 107 1052 }; 1053 1054 /* YYDEFGOTO[NTERM-NUM]. */ 1055 static const yytype_int16 yydefgoto[] = 1056 { 1057 -1, 1, 12, 160, 182, 183, 262, 263, 13, 14, 1058 15, 264, 265, 289, 140, 287, 320, 367, 414, 415, 1059 416, 435, 417, 385, 420, 421, 388, 423, 436, 437, 1060 390, 425, 426, 427, 428, 429, 396, 431, 517, 418, 1061 443, 377, 378, 476, 466, 471, 492, 498, 487, 494, 1062 16, 17, 18, 19, 165, 192, 245, 277, 20, 166, 1063 196, 21, 175, 176, 205, 206, 22, 128, 158, 61, 1064 23, 24, 219, 25, 108, 167, 249, 317, 299, 26, 1065 27, 399, 37, 99, 98, 95, 136, 379, 222, 211, 1066 212, 213, 214, 329, 330, 292, 293, 419, 36, 216, 1067 380, 30 1068 }; 1069 1070 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing 1071 STATE-NUM. */ 1072 #define YYPACT_NINF -283 1073 static const yytype_int16 yypact[] = 1074 { 1075 -283, 34, -283, 191, -283, -283, -283, -283, -283, -283, 1076 191, 191, -283, -283, -283, -283, -283, -283, -283, -283, 1077 -283, -283, -283, -283, -283, -283, 463, -283, -283, -283, 1078 589, -283, 191, 191, 191, -61, 626, 264, -283, 437, 1079 -283, -283, -283, -283, -283, -283, -283, -283, -283, -283, 1080 -283, -283, -283, -283, -283, -283, -283, -283, -283, -283, 1081 -283, -283, -283, 191, 191, 191, 191, 191, 191, 191, 1082 191, -283, -283, 526, 191, -283, 191, 191, 191, 191, 1083 191, 191, 191, 191, -283, 191, 191, 191, -283, -283, 1084 -283, -283, -283, -283, -283, -283, -283, 279, 694, 694, 1085 137, 137, 694, 694, 491, 404, 441, 694, 166, 253, 1086 699, 379, 301, 109, 109, -283, -283, -283, -283, -283, 1087 699, 379, 301, 109, 109, -283, -283, -283, -283, -61, 1088 -283, -283, -283, -283, -283, -283, -283, -283, -283, -42, 1089 218, 218, -283, -283, -61, -283, -283, -283, -283, 191, 1090 191, 191, 191, 191, 191, 191, -283, -283, 0, -283, 1091 -1, 191, -61, -61, 67, 76, 170, 17, -61, -61, 1092 -283, -283, -283, -283, -283, 99, 325, -283, -283, 111, 1093 -283, -283, -283, 37, -283, -283, -61, -61, -283, -283, 1094 -40, -2, -283, -283, 94, -2, -283, -283, 162, 165, 1095 -61, -61, -283, -283, -283, -283, 73, 98, 106, 626, 1096 88, -283, 88, 98, 106, 218, 100, -61, -61, 32, 1097 -283, -53, -283, -2, -283, -53, 16, -283, 134, -61, 1098 -61, 325, -283, -283, 88, -283, -283, 552, -283, -61, 1099 -283, 265, -283, -283, -283, 53, -61, -283, 13, 18, 1100 -2, -283, -283, 98, 106, 626, -283, -283, -283, -283, 1101 -283, -283, 3, -283, -283, -283, -283, -283, -22, -283, 1102 -283, -283, -283, -283, -283, -283, 743, -283, -61, 186, 1103 -283, 14, -283, 243, -2, 552, -283, 259, 548, -283, 1104 193, -283, -283, -283, -283, 194, -283, -61, -283, 33, 1105 -283, -283, 191, -2, 265, 70, 191, 191, 191, 191, 1106 265, -283, 565, -283, -283, 198, 247, 31, -283, -61, 1107 639, -283, -2, -283, -2, 203, 65, -283, 191, 163, 1108 -283, 160, -61, -283, -283, -283, 676, -283, -283, -283, 1109 -283, -2, -283, -283, 288, 288, 288, 288, 288, -283, 1110 288, 288, -283, 288, -283, 288, 288, 288, 288, 288, 1111 -283, 288, 265, 288, 288, 288, 265, -283, -283, 168, 1112 83, -2, -283, -283, 713, 199, 180, 191, 173, -2, 1113 -283, -283, -283, -283, -283, 191, -283, -283, 191, -283, 1114 191, -283, -283, -283, -283, -283, 191, -283, 179, 191, 1115 182, -283, -283, -283, 191, -283, 65, -283, -53, -283, 1116 -283, -2, 184, -283, 191, 191, 191, 191, -283, -61, 1117 191, 191, -283, 191, -283, 191, 191, 191, 191, 191, 1118 -283, 191, -283, 188, -283, 191, 191, 191, -61, -283, 1119 -61, -2, 288, 202, -283, -283, -283, -283, -61, -283, 1120 -283, -283, -283, -283, -283, -283, -283, -283, 191, -283, 1121 -283, -283, -61, -61, -283, -283, -61, -61, 215, 15, 1122 -283, 70, -61, -61, 191, -283, -283, -61, 163, -61, 1123 21, 222, 269, 28, -61, -283, -283, -61, 191, -283, 1124 -283, -283, -61, -61, 70, 324, -61, 235, 70, 324, 1125 -61, 324, -61, 163, -283, 324, 191, 163, -283, 324, 1126 -283, 324, -283, 236, -283, -283, -283, 70, 81, -283 1127 }; 1128 1129 /* YYPGOTO[NTERM-NUM]. */ 1130 static const yytype_int16 yypgoto[] = 1131 { 1132 -283, -283, -283, -283, -283, -283, -283, -235, -283, -283, 1133 -283, -283, -283, -283, 254, -240, -242, -283, -283, -283, 1134 -283, -283, -283, -283, -283, -283, -283, -283, -283, -283, 1135 -283, -283, -283, -283, -283, -283, -283, -283, -283, 219, 1136 -283, 411, -82, -71, -283, -283, -283, -283, -283, -283, 1137 -283, -283, -283, -283, 92, -283, 126, 96, -283, -104, 1138 -283, -283, -99, -283, -283, -283, -283, -283, -283, -283, 1139 -283, -283, -283, -283, -283, -283, -283, -283, -283, -24, 1140 -232, 19, 209, 276, 240, 690, 489, -137, 7, -166, 1141 177, -150, -144, -117, -228, -282, -30, -3, -4, -283, 1142 22, -283 1143 }; 1144 1145 /* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If 1146 positive, shift that token. If negative, reduce the rule which 1147 number is the opposite. If zero, do what YYDEFACT says. 1148 If YYTABLE_NINF, syntax error. */ 1149 #define YYTABLE_NINF -231 1150 static const yytype_int16 yytable[] = 1151 { 1152 35, 177, 62, 180, 178, 75, 38, 39, 28, 256, 1153 257, 258, 259, 260, 261, 316, 280, 296, 475, 247, 1154 220, 197, 282, 29, 475, 288, 207, 286, 71, 72, 1155 73, 475, 208, 28, 2, 340, 240, 318, 5, 6, 1156 270, 271, 272, 273, 274, 275, 235, 74, 29, 312, 1157 300, 5, 6, 221, 223, 74, 269, 225, 226, 110, 1158 111, 112, 113, 114, 115, 116, 117, 161, 235, 336, 1159 188, 119, 120, 121, 122, 123, 124, 125, 126, 127, 1160 189, 253, 129, 130, 131, 241, 276, 254, 3, 5, 1161 6, 181, 242, 8, 31, 374, 198, 199, 368, 159, 1162 283, 144, 32, 202, 4, 10, 33, 5, 6, 11, 1163 34, 285, 341, 284, 164, 270, 271, 272, 273, 274, 1164 275, 74, 74, 74, 74, 5, 6, 7, 8, 485, 1165 398, 9, 186, 187, 398, 190, 490, 191, 200, 201, 1166 10, 74, 407, 279, 11, 215, 168, 169, 170, 171, 1167 172, 173, 174, 139, 224, 179, 217, 218, 185, 327, 1168 326, 276, 162, 163, 327, 227, 322, 324, 228, 148, 1169 229, 230, 209, 406, 193, 328, 295, 327, 439, 370, 1170 328, 231, 184, 203, 204, 5, 6, 238, 239, 74, 1171 294, 244, 315, 328, 232, 246, 248, 313, 314, 251, 1172 252, 233, 338, 410, 376, 495, 203, 204, 237, 266, 1173 499, 501, 81, 82, 83, 250, 278, 267, 281, 210, 1174 88, 89, 90, 91, 92, 93, 94, 255, 243, 194, 1175 243, 195, 243, 243, 408, 375, 519, 236, 149, 150, 1176 151, 152, 153, 154, 155, 194, 298, 195, 28, 97, 1177 339, 297, 190, 194, 191, 195, 156, 194, 194, 195, 1178 195, 370, 301, 29, 104, 105, 106, 84, 371, 319, 1179 109, 5, 6, 489, 441, 302, 303, 304, 305, 405, 1180 323, 413, 132, 100, 101, 31, 335, 432, 411, 342, 1181 434, 243, 442, 32, -230, -230, 458, 33, 107, 321, 1182 306, 34, 372, 331, 332, 333, 334, 85, 86, 87, 1183 465, 325, 8, 307, 308, 309, 310, 28, 85, 86, 1184 87, 102, 103, 474, 10, 369, 29, 475, 11, 243, 1185 488, 243, 29, 85, 86, 87, 88, 89, 90, 91, 1186 92, 93, 94, 506, 516, 133, 134, 88, 89, 90, 1187 91, 92, 93, 94, 478, 141, 5, 6, 7, 8, 1188 464, 290, 88, 89, 90, 91, 92, 93, 94, 28, 1189 268, 10, 291, 28, 412, 11, 482, 503, 440, 5, 1190 6, 507, 8, 243, 400, 404, 243, 234, 400, 448, 1191 0, 0, 0, 0, 10, 0, 433, 0, 11, 0, 1192 518, 438, 79, 80, 81, 82, 83, 145, 462, 486, 1193 463, 0, 491, 0, 0, 243, 0, 0, 467, 31, 1194 203, 204, 0, 0, 504, 0, 0, 32, 508, 0, 1195 510, 33, 469, 470, 512, 34, 472, 473, 514, 477, 1196 515, 0, 479, 480, 146, 0, 0, 483, 243, 484, 1197 0, 0, 0, 0, 493, 468, 0, 496, 85, 86, 1198 87, 0, 500, 502, 0, 0, 505, 0, 40, 0, 1199 509, 481, 511, 0, 0, 41, 42, 43, 44, 78, 1200 79, 80, 81, 82, 83, 497, 0, 88, 89, 90, 1201 91, 92, 93, 94, 0, 85, 86, 87, 0, 0, 1202 0, 0, 0, 513, 45, 46, 47, 48, 49, 50, 1203 0, 51, 52, 53, 54, 55, 0, 0, 0, 0, 1204 56, 57, 0, 0, 88, 89, 90, 91, 92, 93, 1205 94, 58, 59, 0, 60, 76, 77, 78, 79, 80, 1206 81, 82, 83, 0, 0, 85, 86, 87, 96, 0, 1207 0, 311, 0, 0, 5, 6, 7, 8, 256, 257, 1208 258, 259, 260, 261, 302, 303, 304, 305, 337, 10, 1209 0, 0, 0, 11, 88, 89, 90, 91, 92, 93, 1210 94, 302, 303, 304, 305, 31, 0, 0, 138, 306, 1211 0, 142, 143, 32, 0, 0, 147, 33, 157, 0, 1212 0, 34, 307, 308, 309, 310, 306, 422, 0, 424, 1213 0, 0, 0, 0, 0, 430, 0, 0, 0, 307, 1214 308, 309, 310, 0, 76, 77, 78, 79, 80, 81, 1215 82, 83, 0, 444, 445, 446, 447, 118, 0, 449, 1216 450, 0, 451, 343, 452, 453, 454, 455, 456, 344, 1217 457, 0, 0, 0, 459, 460, 461, 0, 0, 345, 1218 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 1219 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 1220 373, 366, 0, 0, 0, 0, 344, 63, 64, 65, 1221 66, 67, 68, 69, 70, 0, 345, 346, 347, 348, 1222 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 1223 359, 360, 361, 362, 363, 364, 365, 409, 366, 0, 1224 0, 0, 0, 344, 76, 77, 78, 79, 80, 81, 1225 82, 83, 0, 345, 346, 347, 348, 349, 350, 351, 1226 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 1227 362, 363, 364, 365, 0, 366, 381, 382, 383, 384, 1228 0, 386, 387, 0, 389, 0, 391, 392, 393, 394, 1229 395, 0, 397, 0, 401, 402, 403, 88, 89, 90, 1230 91, 92, 93, 94, 0, 0, 133, 134, 135, 137, 1231 135, 135, 137, 137, 0, 0, 0, 135, 77, 78, 1232 79, 80, 81, 82, 83, 270, 271, 272, 273, 274, 1233 275 1234 }; 1235 1236 static const yytype_int16 yycheck[] = 1237 { 1238 3, 1, 26, 4, 4, 35, 10, 11, 1, 6, 1239 7, 8, 9, 10, 11, 297, 3, 3, 3, 3, 1240 60, 4, 4, 1, 3, 265, 176, 262, 32, 33, 1241 34, 3, 176, 26, 0, 4, 4, 4, 91, 92, 1242 62, 63, 64, 65, 66, 67, 212, 108, 26, 289, 1243 285, 91, 92, 190, 191, 108, 3, 194, 195, 63, 1244 64, 65, 66, 67, 68, 69, 70, 109, 234, 311, 1245 3, 74, 76, 77, 78, 79, 80, 81, 82, 83, 1246 4, 231, 85, 86, 87, 53, 108, 231, 54, 91, 1247 92, 92, 60, 94, 94, 337, 79, 80, 326, 129, 1248 82, 104, 102, 4, 70, 106, 106, 91, 92, 110, 1249 110, 108, 81, 250, 144, 62, 63, 64, 65, 66, 1250 67, 108, 108, 108, 108, 91, 92, 93, 94, 108, 1251 362, 97, 162, 163, 366, 59, 108, 61, 168, 169, 1252 106, 108, 370, 247, 110, 108, 149, 150, 151, 152, 1253 153, 154, 155, 16, 60, 158, 186, 187, 161, 94, 1254 90, 108, 140, 141, 94, 3, 303, 304, 3, 3, 1255 200, 201, 176, 90, 4, 110, 280, 94, 406, 98, 1256 110, 108, 160, 95, 96, 91, 92, 217, 218, 108, 1257 4, 221, 296, 110, 96, 225, 226, 4, 4, 229, 1258 230, 95, 4, 4, 341, 487, 95, 96, 108, 239, 1259 492, 493, 103, 104, 105, 81, 246, 241, 248, 108, 1260 83, 84, 85, 86, 87, 88, 89, 231, 221, 59, 1261 223, 61, 225, 226, 371, 339, 518, 215, 72, 73, 1262 74, 75, 76, 77, 78, 59, 3, 61, 241, 40, 1263 3, 281, 59, 59, 61, 61, 3, 59, 59, 61, 1264 61, 98, 3, 241, 55, 56, 57, 3, 108, 299, 1265 61, 91, 92, 4, 411, 16, 17, 18, 19, 111, 1266 304, 108, 3, 43, 44, 94, 310, 108, 108, 319, 1267 108, 284, 108, 102, 91, 92, 108, 106, 58, 302, 1268 41, 110, 332, 306, 307, 308, 309, 54, 55, 56, 1269 108, 304, 94, 54, 55, 56, 57, 310, 54, 55, 1270 56, 45, 46, 108, 106, 328, 304, 3, 110, 322, 1271 108, 324, 310, 54, 55, 56, 83, 84, 85, 86, 1272 87, 88, 89, 108, 108, 92, 93, 83, 84, 85, 1273 86, 87, 88, 89, 471, 101, 91, 92, 93, 94, 1274 442, 269, 83, 84, 85, 86, 87, 88, 89, 362, 1275 244, 106, 276, 366, 377, 110, 475, 494, 408, 91, 1276 92, 498, 94, 376, 362, 366, 379, 210, 366, 419, 1277 -1, -1, -1, -1, 106, -1, 399, -1, 110, -1, 1278 517, 404, 101, 102, 103, 104, 105, 3, 438, 480, 1279 440, -1, 483, -1, -1, 408, -1, -1, 448, 94, 1280 95, 96, -1, -1, 495, -1, -1, 102, 499, -1, 1281 501, 106, 462, 463, 505, 110, 466, 467, 509, 469, 1282 511, -1, 472, 473, 3, -1, -1, 477, 441, 479, 1283 -1, -1, -1, -1, 484, 458, -1, 487, 54, 55, 1284 56, -1, 492, 493, -1, -1, 496, -1, 5, -1, 1285 500, 474, 502, -1, -1, 12, 13, 14, 15, 100, 1286 101, 102, 103, 104, 105, 488, -1, 83, 84, 85, 1287 86, 87, 88, 89, -1, 54, 55, 56, -1, -1, 1288 -1, -1, -1, 506, 41, 42, 43, 44, 45, 46, 1289 -1, 48, 49, 50, 51, 52, -1, -1, -1, -1, 1290 57, 58, -1, -1, 83, 84, 85, 86, 87, 88, 1291 89, 68, 69, -1, 71, 98, 99, 100, 101, 102, 1292 103, 104, 105, -1, -1, 54, 55, 56, 111, -1, 1293 -1, 3, -1, -1, 91, 92, 93, 94, 6, 7, 1294 8, 9, 10, 11, 16, 17, 18, 19, 3, 106, 1295 -1, -1, -1, 110, 83, 84, 85, 86, 87, 88, 1296 89, 16, 17, 18, 19, 94, -1, -1, 99, 41, 1297 -1, 102, 103, 102, -1, -1, 107, 106, 109, -1, 1298 -1, 110, 54, 55, 56, 57, 41, 388, -1, 390, 1299 -1, -1, -1, -1, -1, 396, -1, -1, -1, 54, 1300 55, 56, 57, -1, 98, 99, 100, 101, 102, 103, 1301 104, 105, -1, 414, 415, 416, 417, 111, -1, 420, 1302 421, -1, 423, 4, 425, 426, 427, 428, 429, 10, 1303 431, -1, -1, -1, 435, 436, 437, -1, -1, 20, 1304 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 1305 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 1306 4, 42, -1, -1, -1, -1, 10, 98, 99, 100, 1307 101, 102, 103, 104, 105, -1, 20, 21, 22, 23, 1308 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 1309 34, 35, 36, 37, 38, 39, 40, 4, 42, -1, 1310 -1, -1, -1, 10, 98, 99, 100, 101, 102, 103, 1311 104, 105, -1, 20, 21, 22, 23, 24, 25, 26, 1312 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 1313 37, 38, 39, 40, -1, 42, 345, 346, 347, 348, 1314 -1, 350, 351, -1, 353, -1, 355, 356, 357, 358, 1315 359, -1, 361, -1, 363, 364, 365, 83, 84, 85, 1316 86, 87, 88, 89, -1, -1, 92, 93, 98, 99, 1317 100, 101, 102, 103, -1, -1, -1, 107, 99, 100, 1318 101, 102, 103, 104, 105, 62, 63, 64, 65, 66, 1319 67 1320 }; 1321 1322 /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing 1323 symbol of state STATE-NUM. */ 1324 static const yytype_uint8 yystos[] = 1325 { 1326 0, 113, 0, 54, 70, 91, 92, 93, 94, 97, 1327 106, 110, 114, 120, 121, 122, 162, 163, 164, 165, 1328 170, 173, 178, 182, 183, 185, 191, 192, 200, 212, 1329 213, 94, 102, 106, 110, 209, 210, 194, 210, 210, 1330 5, 12, 13, 14, 15, 41, 42, 43, 44, 45, 1331 46, 48, 49, 50, 51, 52, 57, 58, 68, 69, 1332 71, 181, 191, 98, 99, 100, 101, 102, 103, 104, 1333 105, 210, 210, 210, 108, 208, 98, 99, 100, 101, 1334 102, 103, 104, 105, 3, 54, 55, 56, 83, 84, 1335 85, 86, 87, 88, 89, 197, 111, 194, 196, 195, 1336 196, 196, 195, 195, 194, 194, 194, 196, 186, 194, 1337 210, 210, 210, 210, 210, 210, 210, 210, 111, 209, 1338 210, 210, 210, 210, 210, 210, 210, 210, 179, 209, 1339 209, 209, 3, 92, 93, 197, 198, 197, 198, 16, 1340 126, 126, 198, 198, 209, 3, 3, 198, 3, 72, 1341 73, 74, 75, 76, 77, 78, 3, 198, 180, 208, 1342 115, 109, 212, 212, 208, 166, 171, 187, 209, 209, 1343 209, 209, 209, 209, 209, 174, 175, 1, 4, 209, 1344 4, 92, 116, 117, 212, 209, 208, 208, 3, 4, 1345 59, 61, 167, 4, 59, 61, 172, 4, 79, 80, 1346 208, 208, 4, 95, 96, 176, 177, 203, 204, 210, 1347 108, 201, 202, 203, 204, 108, 211, 208, 208, 184, 1348 60, 199, 200, 199, 60, 199, 199, 3, 3, 208, 1349 208, 108, 96, 95, 202, 201, 212, 108, 208, 208, 1350 4, 53, 60, 200, 208, 168, 208, 3, 208, 188, 1351 81, 208, 208, 203, 204, 210, 6, 7, 8, 9, 1352 10, 11, 118, 119, 123, 124, 208, 191, 168, 3, 1353 62, 63, 64, 65, 66, 67, 108, 169, 208, 171, 1354 3, 208, 4, 82, 199, 108, 119, 127, 127, 125, 1355 166, 169, 207, 208, 4, 171, 3, 208, 3, 190, 1356 119, 3, 16, 17, 18, 19, 41, 54, 55, 56, 1357 57, 3, 127, 4, 4, 171, 207, 189, 4, 208, 1358 128, 209, 199, 191, 199, 200, 90, 94, 110, 205, 1359 206, 209, 209, 209, 209, 191, 128, 3, 4, 3, 1360 4, 81, 208, 4, 10, 20, 21, 22, 23, 24, 1361 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 1362 35, 36, 37, 38, 39, 40, 42, 129, 206, 209, 1363 98, 108, 208, 4, 128, 171, 199, 153, 154, 199, 1364 212, 153, 153, 153, 153, 135, 153, 153, 138, 153, 1365 142, 153, 153, 153, 153, 153, 148, 153, 192, 193, 1366 212, 153, 153, 153, 193, 111, 90, 206, 199, 4, 1367 4, 108, 209, 108, 130, 131, 132, 134, 151, 209, 1368 136, 137, 151, 139, 151, 143, 144, 145, 146, 147, 1369 151, 149, 108, 209, 108, 133, 140, 141, 209, 206, 1370 208, 199, 108, 152, 151, 151, 151, 151, 208, 151, 1371 151, 151, 151, 151, 151, 151, 151, 151, 108, 151, 1372 151, 151, 208, 208, 154, 108, 156, 208, 209, 208, 1373 208, 157, 208, 208, 108, 3, 155, 208, 205, 208, 1374 208, 209, 174, 208, 208, 108, 155, 160, 108, 4, 1375 108, 155, 158, 208, 161, 207, 208, 209, 159, 207, 1376 208, 207, 208, 205, 155, 208, 108, 205, 155, 208, 1377 155, 208, 155, 209, 155, 155, 108, 150, 205, 207 1378 }; 1379 1380 #define yyerrok (yyerrstatus = 0) 1381 #define yyclearin (yychar = YYEMPTY) 1382 #define YYEMPTY (-2) 1383 #define YYEOF 0 1384 1385 #define YYACCEPT goto yyacceptlab 1386 #define YYABORT goto yyabortlab 1387 #define YYERROR goto yyerrorlab 1388 1389 1390 /* Like YYERROR except do call yyerror. This remains here temporarily 1391 to ease the transition to the new meaning of YYERROR, for GCC. 1392 Once GCC version 2 has supplanted version 1, this can go. */ 1393 1394 #define YYFAIL goto yyerrlab 1395 1396 #define YYRECOVERING() (!!yyerrstatus) 1397 1398 #define YYBACKUP(Token, Value) \ 1399 do \ 1400 if (yychar == YYEMPTY && yylen == 1) \ 1401 { \ 1402 yychar = (Token); \ 1403 yylval = (Value); \ 1404 yytoken = YYTRANSLATE (yychar); \ 1405 YYPOPSTACK (1); \ 1406 goto yybackup; \ 1407 } \ 1408 else \ 1409 { \ 1410 yyerror (YY_("syntax error: cannot back up")); \ 1411 YYERROR; \ 1412 } \ 1413 while (YYID (0)) 1414 1415 1416 #define YYTERROR 1 1417 #define YYERRCODE 256 1418 1419 1420 /* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N]. 1421 If N is 0, then set CURRENT to the empty location which ends 1422 the previous symbol: RHS[0] (always defined). */ 1423 1424 #define YYRHSLOC(Rhs, K) ((Rhs)[K]) 1425 #ifndef YYLLOC_DEFAULT 1426 # define YYLLOC_DEFAULT(Current, Rhs, N) \ 1427 do \ 1428 if (YYID (N)) \ 1429 { \ 1430 (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \ 1431 (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \ 1432 (Current).last_line = YYRHSLOC (Rhs, N).last_line; \ 1433 (Current).last_column = YYRHSLOC (Rhs, N).last_column; \ 1434 } \ 1435 else \ 1436 { \ 1437 (Current).first_line = (Current).last_line = \ 1438 YYRHSLOC (Rhs, 0).last_line; \ 1439 (Current).first_column = (Current).last_column = \ 1440 YYRHSLOC (Rhs, 0).last_column; \ 1441 } \ 1442 while (YYID (0)) 1443 #endif 1444 1445 1446 /* YY_LOCATION_PRINT -- Print the location on the stream. 1447 This macro was not mandated originally: define only if we know 1448 we won't break user code: when these are the locations we know. */ 1449 1450 #ifndef YY_LOCATION_PRINT 1451 # if defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL 1452 # define YY_LOCATION_PRINT(File, Loc) \ 1453 fprintf (File, "%d.%d-%d.%d", \ 1454 (Loc).first_line, (Loc).first_column, \ 1455 (Loc).last_line, (Loc).last_column) 1456 # else 1457 # define YY_LOCATION_PRINT(File, Loc) ((void) 0) 1458 # endif 1459 #endif 1460 1461 1462 /* YYLEX -- calling `yylex' with the right arguments. */ 1463 1464 #ifdef YYLEX_PARAM 1465 # define YYLEX yylex (YYLEX_PARAM) 1466 #else 1467 # define YYLEX yylex () 1468 #endif 1469 1470 /* Enable debugging if requested. */ 1471 #if YYDEBUG 1472 1473 # ifndef YYFPRINTF 1474 # include <stdio.h> /* INFRINGES ON USER NAME SPACE */ 1475 # define YYFPRINTF fprintf 1476 # endif 1477 1478 # define YYDPRINTF(Args) \ 1479 do { \ 1480 if (yydebug) \ 1481 YYFPRINTF Args; \ 1482 } while (YYID (0)) 1483 1484 # define YY_SYMBOL_PRINT(Title, Type, Value, Location) \ 1485 do { \ 1486 if (yydebug) \ 1487 { \ 1488 YYFPRINTF (stderr, "%s ", Title); \ 1489 yy_symbol_print (stderr, \ 1490 Type, Value); \ 1491 YYFPRINTF (stderr, "\n"); \ 1492 } \ 1493 } while (YYID (0)) 1494 1495 1496 /*--------------------------------. 1497 | Print this symbol on YYOUTPUT. | 1498 `--------------------------------*/ 1499 1500 /*ARGSUSED*/ 1501 #if (defined __STDC__ || defined __C99__FUNC__ \ 1502 || defined __cplusplus || defined _MSC_VER) 1503 static void 1504 yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep) 1505 #else 1506 static void 1507 yy_symbol_value_print (yyoutput, yytype, yyvaluep) 1508 FILE *yyoutput; 1509 int yytype; 1510 YYSTYPE const * const yyvaluep; 1511 #endif 1512 { 1513 if (!yyvaluep) 1514 return; 1515 # ifdef YYPRINT 1516 if (yytype < YYNTOKENS) 1517 YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep); 1518 # else 1519 YYUSE (yyoutput); 1520 # endif 1521 switch (yytype) 1522 { 1523 default: 1524 break; 1525 } 1526 } 1527 1528 1529 /*--------------------------------. 1530 | Print this symbol on YYOUTPUT. | 1531 `--------------------------------*/ 1532 1533 #if (defined __STDC__ || defined __C99__FUNC__ \ 1534 || defined __cplusplus || defined _MSC_VER) 1535 static void 1536 yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep) 1537 #else 1538 static void 1539 yy_symbol_print (yyoutput, yytype, yyvaluep) 1540 FILE *yyoutput; 1541 int yytype; 1542 YYSTYPE const * const yyvaluep; 1543 #endif 1544 { 1545 if (yytype < YYNTOKENS) 1546 YYFPRINTF (yyoutput, "token %s (", yytname[yytype]); 1547 else 1548 YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]); 1549 1550 yy_symbol_value_print (yyoutput, yytype, yyvaluep); 1551 YYFPRINTF (yyoutput, ")"); 1552 } 1553 1554 /*------------------------------------------------------------------. 1555 | yy_stack_print -- Print the state stack from its BOTTOM up to its | 1556 | TOP (included). | 1557 `------------------------------------------------------------------*/ 1558 1559 #if (defined __STDC__ || defined __C99__FUNC__ \ 1560 || defined __cplusplus || defined _MSC_VER) 1561 static void 1562 yy_stack_print (yytype_int16 *bottom, yytype_int16 *top) 1563 #else 1564 static void 1565 yy_stack_print (bottom, top) 1566 yytype_int16 *bottom; 1567 yytype_int16 *top; 1568 #endif 1569 { 1570 YYFPRINTF (stderr, "Stack now"); 1571 for (; bottom <= top; ++bottom) 1572 YYFPRINTF (stderr, " %d", *bottom); 1573 YYFPRINTF (stderr, "\n"); 1574 } 1575 1576 # define YY_STACK_PRINT(Bottom, Top) \ 1577 do { \ 1578 if (yydebug) \ 1579 yy_stack_print ((Bottom), (Top)); \ 1580 } while (YYID (0)) 1581 1582 1583 /*------------------------------------------------. 1584 | Report that the YYRULE is going to be reduced. | 1585 `------------------------------------------------*/ 1586 1587 #if (defined __STDC__ || defined __C99__FUNC__ \ 1588 || defined __cplusplus || defined _MSC_VER) 1589 static void 1590 yy_reduce_print (YYSTYPE *yyvsp, int yyrule) 1591 #else 1592 static void 1593 yy_reduce_print (yyvsp, yyrule) 1594 YYSTYPE *yyvsp; 1595 int yyrule; 1596 #endif 1597 { 1598 int yynrhs = yyr2[yyrule]; 1599 int yyi; 1600 unsigned long int yylno = yyrline[yyrule]; 1601 YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n", 1602 yyrule - 1, yylno); 1603 /* The symbols being reduced. */ 1604 for (yyi = 0; yyi < yynrhs; yyi++) 1605 { 1606 fprintf (stderr, " $%d = ", yyi + 1); 1607 yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi], 1608 &(yyvsp[(yyi + 1) - (yynrhs)]) 1609 ); 1610 fprintf (stderr, "\n"); 1611 } 1612 } 1613 1614 # define YY_REDUCE_PRINT(Rule) \ 1615 do { \ 1616 if (yydebug) \ 1617 yy_reduce_print (yyvsp, Rule); \ 1618 } while (YYID (0)) 1619 1620 /* Nonzero means print parse trace. It is left uninitialized so that 1621 multiple parsers can coexist. */ 1622 int yydebug; 1623 #else /* !YYDEBUG */ 1624 # define YYDPRINTF(Args) 1625 # define YY_SYMBOL_PRINT(Title, Type, Value, Location) 1626 # define YY_STACK_PRINT(Bottom, Top) 1627 # define YY_REDUCE_PRINT(Rule) 1628 #endif /* !YYDEBUG */ 1629 1630 1631 /* YYINITDEPTH -- initial size of the parser's stacks. */ 1632 #ifndef YYINITDEPTH 1633 # define YYINITDEPTH 200 1634 #endif 1635 1636 /* YYMAXDEPTH -- maximum size the stacks can grow to (effective only 1637 if the built-in stack extension method is used). 1638 1639 Do not make this value too large; the results are undefined if 1640 YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH) 1641 evaluated with infinite-precision integer arithmetic. */ 1642 1643 #ifndef YYMAXDEPTH 1644 # define YYMAXDEPTH 10000 1645 #endif 1646 1647 1648 1649 #if YYERROR_VERBOSE 1650 1651 # ifndef yystrlen 1652 # if defined __GLIBC__ && defined _STRING_H 1653 # define yystrlen strlen 1654 # else 1655 /* Return the length of YYSTR. */ 1656 #if (defined __STDC__ || defined __C99__FUNC__ \ 1657 || defined __cplusplus || defined _MSC_VER) 1658 static YYSIZE_T 1659 yystrlen (const char *yystr) 1660 #else 1661 static YYSIZE_T 1662 yystrlen (yystr) 1663 const char *yystr; 1664 #endif 1665 { 1666 YYSIZE_T yylen; 1667 for (yylen = 0; yystr[yylen]; yylen++) 1668 continue; 1669 return yylen; 1670 } 1671 # endif 1672 # endif 1673 1674 # ifndef yystpcpy 1675 # if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE 1676 # define yystpcpy stpcpy 1677 # else 1678 /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in 1679 YYDEST. */ 1680 #if (defined __STDC__ || defined __C99__FUNC__ \ 1681 || defined __cplusplus || defined _MSC_VER) 1682 static char * 1683 yystpcpy (char *yydest, const char *yysrc) 1684 #else 1685 static char * 1686 yystpcpy (yydest, yysrc) 1687 char *yydest; 1688 const char *yysrc; 1689 #endif 1690 { 1691 char *yyd = yydest; 1692 const char *yys = yysrc; 1693 1694 while ((*yyd++ = *yys++) != '\0') 1695 continue; 1696 1697 return yyd - 1; 1698 } 1699 # endif 1700 # endif 1701 1702 # ifndef yytnamerr 1703 /* Copy to YYRES the contents of YYSTR after stripping away unnecessary 1704 quotes and backslashes, so that it's suitable for yyerror. The 1705 heuristic is that double-quoting is unnecessary unless the string 1706 contains an apostrophe, a comma, or backslash (other than 1707 backslash-backslash). YYSTR is taken from yytname. If YYRES is 1708 null, do not copy; instead, return the length of what the result 1709 would have been. */ 1710 static YYSIZE_T 1711 yytnamerr (char *yyres, const char *yystr) 1712 { 1713 if (*yystr == '"') 1714 { 1715 YYSIZE_T yyn = 0; 1716 char const *yyp = yystr; 1717 1718 for (;;) 1719 switch (*++yyp) 1720 { 1721 case '\'': 1722 case ',': 1723 goto do_not_strip_quotes; 1724 1725 case '\\': 1726 if (*++yyp != '\\') 1727 goto do_not_strip_quotes; 1728 /* Fall through. */ 1729 default: 1730 if (yyres) 1731 yyres[yyn] = *yyp; 1732 yyn++; 1733 break; 1734 1735 case '"': 1736 if (yyres) 1737 yyres[yyn] = '\0'; 1738 return yyn; 1739 } 1740 do_not_strip_quotes: ; 1741 } 1742 1743 if (! yyres) 1744 return yystrlen (yystr); 1745 1746 return yystpcpy (yyres, yystr) - yyres; 1747 } 1748 # endif 1749 1750 /* Copy into YYRESULT an error message about the unexpected token 1751 YYCHAR while in state YYSTATE. Return the number of bytes copied, 1752 including the terminating null byte. If YYRESULT is null, do not 1753 copy anything; just return the number of bytes that would be 1754 copied. As a special case, return 0 if an ordinary "syntax error" 1755 message will do. Return YYSIZE_MAXIMUM if overflow occurs during 1756 size calculation. */ 1757 static YYSIZE_T 1758 yysyntax_error (char *yyresult, int yystate, int yychar) 1759 { 1760 int yyn = yypact[yystate]; 1761 1762 if (! (YYPACT_NINF < yyn && yyn <= YYLAST)) 1763 return 0; 1764 else 1765 { 1766 int yytype = YYTRANSLATE (yychar); 1767 YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]); 1768 YYSIZE_T yysize = yysize0; 1769 YYSIZE_T yysize1; 1770 int yysize_overflow = 0; 1771 enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 }; 1772 char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM]; 1773 int yyx; 1774 1775 # if 0 1776 /* This is so xgettext sees the translatable formats that are 1777 constructed on the fly. */ 1778 YY_("syntax error, unexpected %s"); 1779 YY_("syntax error, unexpected %s, expecting %s"); 1780 YY_("syntax error, unexpected %s, expecting %s or %s"); 1781 YY_("syntax error, unexpected %s, expecting %s or %s or %s"); 1782 YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"); 1783 # endif 1784 char *yyfmt; 1785 char const *yyf; 1786 static char const yyunexpected[] = "syntax error, unexpected %s"; 1787 static char const yyexpecting[] = ", expecting %s"; 1788 static char const yyor[] = " or %s"; 1789 char yyformat[sizeof yyunexpected 1790 + sizeof yyexpecting - 1 1791 + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2) 1792 * (sizeof yyor - 1))]; 1793 char const *yyprefix = yyexpecting; 1794 1795 /* Start YYX at -YYN if negative to avoid negative indexes in 1796 YYCHECK. */ 1797 int yyxbegin = yyn < 0 ? -yyn : 0; 1798 1799 /* Stay within bounds of both yycheck and yytname. */ 1800 int yychecklim = YYLAST - yyn + 1; 1801 int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS; 1802 int yycount = 1; 1803 1804 yyarg[0] = yytname[yytype]; 1805 yyfmt = yystpcpy (yyformat, yyunexpected); 1806 1807 for (yyx = yyxbegin; yyx < yyxend; ++yyx) 1808 if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR) 1809 { 1810 if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM) 1811 { 1812 yycount = 1; 1813 yysize = yysize0; 1814 yyformat[sizeof yyunexpected - 1] = '\0'; 1815 break; 1816 } 1817 yyarg[yycount++] = yytname[yyx]; 1818 yysize1 = yysize + yytnamerr (0, yytname[yyx]); 1819 yysize_overflow |= (yysize1 < yysize); 1820 yysize = yysize1; 1821 yyfmt = yystpcpy (yyfmt, yyprefix); 1822 yyprefix = yyor; 1823 } 1824 1825 yyf = YY_(yyformat); 1826 yysize1 = yysize + yystrlen (yyf); 1827 yysize_overflow |= (yysize1 < yysize); 1828 yysize = yysize1; 1829 1830 if (yysize_overflow) 1831 return YYSIZE_MAXIMUM; 1832 1833 if (yyresult) 1834 { 1835 /* Avoid sprintf, as that infringes on the user's name space. 1836 Don't have undefined behavior even if the translation 1837 produced a string with the wrong number of "%s"s. */ 1838 char *yyp = yyresult; 1839 int yyi = 0; 1840 while ((*yyp = *yyf) != '\0') 1841 { 1842 if (*yyp == '%' && yyf[1] == 's' && yyi < yycount) 1843 { 1844 yyp += yytnamerr (yyp, yyarg[yyi++]); 1845 yyf += 2; 1846 } 1847 else 1848 { 1849 yyp++; 1850 yyf++; 1851 } 1852 } 1853 } 1854 return yysize; 1855 } 1856 } 1857 #endif /* YYERROR_VERBOSE */ 1858 1859 1860 /*-----------------------------------------------. 1861 | Release the memory associated to this symbol. | 1862 `-----------------------------------------------*/ 1863 1864 /*ARGSUSED*/ 1865 #if (defined __STDC__ || defined __C99__FUNC__ \ 1866 || defined __cplusplus || defined _MSC_VER) 1867 static void 1868 yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep) 1869 #else 1870 static void 1871 yydestruct (yymsg, yytype, yyvaluep) 1872 const char *yymsg; 1873 int yytype; 1874 YYSTYPE *yyvaluep; 1875 #endif 1876 { 1877 YYUSE (yyvaluep); 1878 1879 if (!yymsg) 1880 yymsg = "Deleting"; 1881 YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp); 1882 1883 switch (yytype) 1884 { 1885 1886 default: 1887 break; 1888 } 1889 } 1890 1891 1892 /* Prevent warnings from -Wmissing-prototypes. */ 1893 1894 #ifdef YYPARSE_PARAM 1895 #if defined __STDC__ || defined __cplusplus 1896 int yyparse (void *YYPARSE_PARAM); 1897 #else 1898 int yyparse (); 1899 #endif 1900 #else /* ! YYPARSE_PARAM */ 1901 #if defined __STDC__ || defined __cplusplus 1902 int yyparse (void); 1903 #else 1904 int yyparse (); 1905 #endif 1906 #endif /* ! YYPARSE_PARAM */ 1907 1908 1909 1910 /* The look-ahead symbol. */ 1911 int yychar; 1912 1913 /* The semantic value of the look-ahead symbol. */ 1914 YYSTYPE yylval; 1915 1916 /* Number of syntax errors so far. */ 1917 int yynerrs; 1918 1919 1920 1921 /*----------. 1922 | yyparse. | 1923 `----------*/ 1924 1925 #ifdef YYPARSE_PARAM 1926 #if (defined __STDC__ || defined __C99__FUNC__ \ 1927 || defined __cplusplus || defined _MSC_VER) 1928 int 1929 yyparse (void *YYPARSE_PARAM) 1930 #else 1931 int 1932 yyparse (YYPARSE_PARAM) 1933 void *YYPARSE_PARAM; 1934 #endif 1935 #else /* ! YYPARSE_PARAM */ 1936 #if (defined __STDC__ || defined __C99__FUNC__ \ 1937 || defined __cplusplus || defined _MSC_VER) 1938 int 1939 yyparse (void) 1940 #else 1941 int 1942 yyparse () 1943 1944 #endif 1945 #endif 1946 { 1947 1948 int yystate; 1949 int yyn; 1950 int yyresult; 1951 /* Number of tokens to shift before error messages enabled. */ 1952 int yyerrstatus; 1953 /* Look-ahead token as an internal (translated) token number. */ 1954 int yytoken = 0; 1955 #if YYERROR_VERBOSE 1956 /* Buffer for error messages, and its allocated size. */ 1957 char yymsgbuf[128]; 1958 char *yymsg = yymsgbuf; 1959 YYSIZE_T yymsg_alloc = sizeof yymsgbuf; 1960 #endif 1961 1962 /* Three stacks and their tools: 1963 `yyss': related to states, 1964 `yyvs': related to semantic values, 1965 `yyls': related to locations. 1966 1967 Refer to the stacks thru separate pointers, to allow yyoverflow 1968 to reallocate them elsewhere. */ 1969 1970 /* The state stack. */ 1971 yytype_int16 yyssa[YYINITDEPTH]; 1972 yytype_int16 *yyss = yyssa; 1973 yytype_int16 *yyssp; 1974 1975 /* The semantic value stack. */ 1976 YYSTYPE yyvsa[YYINITDEPTH]; 1977 YYSTYPE *yyvs = yyvsa; 1978 YYSTYPE *yyvsp; 1979 1980 1981 1982 #define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N)) 1983 1984 YYSIZE_T yystacksize = YYINITDEPTH; 1985 1986 /* The variables used to return semantic value and location from the 1987 action routines. */ 1988 YYSTYPE yyval; 1989 1990 1991 /* The number of symbols on the RHS of the reduced rule. 1992 Keep to zero when no symbol should be popped. */ 1993 int yylen = 0; 1994 1995 YYDPRINTF ((stderr, "Starting parse\n")); 1996 1997 yystate = 0; 1998 yyerrstatus = 0; 1999 yynerrs = 0; 2000 yychar = YYEMPTY; /* Cause a token to be read. */ 2001 2002 /* Initialize stack pointers. 2003 Waste one element of value and location stack 2004 so that they stay on the same level as the state stack. 2005 The wasted elements are never initialized. */ 2006 2007 yyssp = yyss; 2008 yyvsp = yyvs; 2009 2010 goto yysetstate; 2011 2012 /*------------------------------------------------------------. 2013 | yynewstate -- Push a new state, which is found in yystate. | 2014 `------------------------------------------------------------*/ 2015 yynewstate: 2016 /* In all cases, when you get here, the value and location stacks 2017 have just been pushed. So pushing a state here evens the stacks. */ 2018 yyssp++; 2019 2020 yysetstate: 2021 *yyssp = yystate; 2022 2023 if (yyss + yystacksize - 1 <= yyssp) 2024 { 2025 /* Get the current used size of the three stacks, in elements. */ 2026 YYSIZE_T yysize = yyssp - yyss + 1; 2027 2028 #ifdef yyoverflow 2029 { 2030 /* Give user a chance to reallocate the stack. Use copies of 2031 these so that the &'s don't force the real ones into 2032 memory. */ 2033 YYSTYPE *yyvs1 = yyvs; 2034 yytype_int16 *yyss1 = yyss; 2035 2036 2037 /* Each stack pointer address is followed by the size of the 2038 data in use in that stack, in bytes. This used to be a 2039 conditional around just the two extra args, but that might 2040 be undefined if yyoverflow is a macro. */ 2041 yyoverflow (YY_("memory exhausted"), 2042 &yyss1, yysize * sizeof (*yyssp), 2043 &yyvs1, yysize * sizeof (*yyvsp), 2044 2045 &yystacksize); 2046 2047 yyss = yyss1; 2048 yyvs = yyvs1; 2049 } 2050 #else /* no yyoverflow */ 2051 # ifndef YYSTACK_RELOCATE 2052 goto yyexhaustedlab; 2053 # else 2054 /* Extend the stack our own way. */ 2055 if (YYMAXDEPTH <= yystacksize) 2056 goto yyexhaustedlab; 2057 yystacksize *= 2; 2058 if (YYMAXDEPTH < yystacksize) 2059 yystacksize = YYMAXDEPTH; 2060 2061 { 2062 yytype_int16 *yyss1 = yyss; 2063 union yyalloc *yyptr = 2064 (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize)); 2065 if (! yyptr) 2066 goto yyexhaustedlab; 2067 YYSTACK_RELOCATE (yyss); 2068 YYSTACK_RELOCATE (yyvs); 2069 2070 # undef YYSTACK_RELOCATE 2071 if (yyss1 != yyssa) 2072 YYSTACK_FREE (yyss1); 2073 } 2074 # endif 2075 #endif /* no yyoverflow */ 2076 2077 yyssp = yyss + yysize - 1; 2078 yyvsp = yyvs + yysize - 1; 2079 2080 2081 YYDPRINTF ((stderr, "Stack size increased to %lu\n", 2082 (unsigned long int) yystacksize)); 2083 2084 if (yyss + yystacksize - 1 <= yyssp) 2085 YYABORT; 2086 } 2087 2088 YYDPRINTF ((stderr, "Entering state %d\n", yystate)); 2089 2090 goto yybackup; 2091 2092 /*-----------. 2093 | yybackup. | 2094 `-----------*/ 2095 yybackup: 2096 2097 /* Do appropriate processing given the current state. Read a 2098 look-ahead token if we need one and don't already have one. */ 2099 2100 /* First try to decide what to do without reference to look-ahead token. */ 2101 yyn = yypact[yystate]; 2102 if (yyn == YYPACT_NINF) 2103 goto yydefault; 2104 2105 /* Not known => get a look-ahead token if don't already have one. */ 2106 2107 /* YYCHAR is either YYEMPTY or YYEOF or a valid look-ahead symbol. */ 2108 if (yychar == YYEMPTY) 2109 { 2110 YYDPRINTF ((stderr, "Reading a token: ")); 2111 yychar = YYLEX; 2112 } 2113 2114 if (yychar <= YYEOF) 2115 { 2116 yychar = yytoken = YYEOF; 2117 YYDPRINTF ((stderr, "Now at end of input.\n")); 2118 } 2119 else 2120 { 2121 yytoken = YYTRANSLATE (yychar); 2122 YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc); 2123 } 2124 2125 /* If the proper action on seeing token YYTOKEN is to reduce or to 2126 detect an error, take that action. */ 2127 yyn += yytoken; 2128 if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken) 2129 goto yydefault; 2130 yyn = yytable[yyn]; 2131 if (yyn <= 0) 2132 { 2133 if (yyn == 0 || yyn == YYTABLE_NINF) 2134 goto yyerrlab; 2135 yyn = -yyn; 2136 goto yyreduce; 2137 } 2138 2139 if (yyn == YYFINAL) 2140 YYACCEPT; 2141 2142 /* Count tokens shifted since error; after three, turn off error 2143 status. */ 2144 if (yyerrstatus) 2145 yyerrstatus--; 2146 2147 /* Shift the look-ahead token. */ 2148 YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc); 2149 2150 /* Discard the shifted token unless it is eof. */ 2151 if (yychar != YYEOF) 2152 yychar = YYEMPTY; 2153 2154 yystate = yyn; 2155 *++yyvsp = yylval; 2156 2157 goto yynewstate; 2158 2159 2160 /*-----------------------------------------------------------. 2161 | yydefault -- do the default action for the current state. | 2162 `-----------------------------------------------------------*/ 2163 yydefault: 2164 yyn = yydefact[yystate]; 2165 if (yyn == 0) 2166 goto yyerrlab; 2167 goto yyreduce; 2168 2169 2170 /*-----------------------------. 2171 | yyreduce -- Do a reduction. | 2172 `-----------------------------*/ 2173 yyreduce: 2174 /* yyn is the number of a rule to reduce with. */ 2175 yylen = yyr2[yyn]; 2176 2177 /* If YYLEN is nonzero, implement the default value of the action: 2178 `$$ = $1'. 2179 2180 Otherwise, the following line sets YYVAL to garbage. 2181 This behavior is undocumented and Bison 2182 users should not rely upon it. Assigning to YYVAL 2183 unconditionally makes the parser a bit smaller, and it avoids a 2184 GCC warning that YYVAL may be used uninitialized. */ 2185 yyval = yyvsp[1-yylen]; 2186 2187 2188 YY_REDUCE_PRINT (yyn); 2189 switch (yyn) 2190 { 2191 case 18: 2192 #line 202 "rcparse.y" 2193 { 2194 define_accelerator ((yyvsp[(1) - (6)].id), &(yyvsp[(3) - (6)].res_info), (yyvsp[(5) - (6)].pacc)); 2195 if (yychar != YYEMPTY) 2196 YYERROR; 2197 rcparse_discard_strings (); 2198 } 2199 break; 2200 2201 case 19: 2202 #line 212 "rcparse.y" 2203 { 2204 (yyval.pacc) = NULL; 2205 } 2206 break; 2207 2208 case 20: 2209 #line 216 "rcparse.y" 2210 { 2211 rc_accelerator *a; 2212 2213 a = (rc_accelerator *) res_alloc (sizeof *a); 2214 *a = (yyvsp[(2) - (2)].acc); 2215 if ((yyvsp[(1) - (2)].pacc) == NULL) 2216 (yyval.pacc) = a; 2217 else 2218 { 2219 rc_accelerator **pp; 2220 2221 for (pp = &(yyvsp[(1) - (2)].pacc)->next; *pp != NULL; pp = &(*pp)->next) 2222 ; 2223 *pp = a; 2224 (yyval.pacc) = (yyvsp[(1) - (2)].pacc); 2225 } 2226 } 2227 break; 2228 2229 case 21: 2230 #line 237 "rcparse.y" 2231 { 2232 (yyval.acc) = (yyvsp[(1) - (2)].acc); 2233 (yyval.acc).id = (yyvsp[(2) - (2)].il); 2234 } 2235 break; 2236 2237 case 22: 2238 #line 242 "rcparse.y" 2239 { 2240 (yyval.acc) = (yyvsp[(1) - (4)].acc); 2241 (yyval.acc).id = (yyvsp[(2) - (4)].il); 2242 (yyval.acc).flags |= (yyvsp[(4) - (4)].is); 2243 if (((yyval.acc).flags & ACC_VIRTKEY) == 0 2244 && ((yyval.acc).flags & (ACC_SHIFT | ACC_CONTROL)) != 0) 2245 rcparse_warning (_("inappropriate modifiers for non-VIRTKEY")); 2246 } 2247 break; 2248 2249 case 23: 2250 #line 254 "rcparse.y" 2251 { 2252 const char *s = (yyvsp[(1) - (1)].s); 2253 char ch; 2254 2255 (yyval.acc).next = NULL; 2256 (yyval.acc).id = 0; 2257 ch = *s; 2258 if (ch != '^') 2259 (yyval.acc).flags = 0; 2260 else 2261 { 2262 (yyval.acc).flags = ACC_CONTROL | ACC_VIRTKEY; 2263 ++s; 2264 ch = TOUPPER (s[0]); 2265 } 2266 (yyval.acc).key = ch; 2267 if (s[1] != '\0') 2268 rcparse_warning (_("accelerator should only be one character")); 2269 } 2270 break; 2271 2272 case 24: 2273 #line 274 "rcparse.y" 2274 { 2275 (yyval.acc).next = NULL; 2276 (yyval.acc).flags = 0; 2277 (yyval.acc).id = 0; 2278 (yyval.acc).key = (yyvsp[(1) - (1)].il); 2279 } 2280 break; 2281 2282 case 25: 2283 #line 284 "rcparse.y" 2284 { 2285 (yyval.is) = (yyvsp[(1) - (1)].is); 2286 } 2287 break; 2288 2289 case 26: 2290 #line 288 "rcparse.y" 2291 { 2292 (yyval.is) = (yyvsp[(1) - (3)].is) | (yyvsp[(3) - (3)].is); 2293 } 2294 break; 2295 2296 case 27: 2297 #line 293 "rcparse.y" 2298 { 2299 (yyval.is) = (yyvsp[(1) - (2)].is) | (yyvsp[(2) - (2)].is); 2300 } 2301 break; 2302 2303 case 28: 2304 #line 300 "rcparse.y" 2305 { 2306 (yyval.is) = ACC_VIRTKEY; 2307 } 2308 break; 2309 2310 case 29: 2311 #line 304 "rcparse.y" 2312 { 2313 /* This is just the absence of VIRTKEY. */ 2314 (yyval.is) = 0; 2315 } 2316 break; 2317 2318 case 30: 2319 #line 309 "rcparse.y" 2320 { 2321 (yyval.is) = ACC_NOINVERT; 2322 } 2323 break; 2324 2325 case 31: 2326 #line 313 "rcparse.y" 2327 { 2328 (yyval.is) = ACC_SHIFT; 2329 } 2330 break; 2331 2332 case 32: 2333 #line 317 "rcparse.y" 2334 { 2335 (yyval.is) = ACC_CONTROL; 2336 } 2337 break; 2338 2339 case 33: 2340 #line 321 "rcparse.y" 2341 { 2342 (yyval.is) = ACC_ALT; 2343 } 2344 break; 2345 2346 case 34: 2347 #line 330 "rcparse.y" 2348 { 2349 define_bitmap ((yyvsp[(1) - (4)].id), &(yyvsp[(3) - (4)].res_info), (yyvsp[(4) - (4)].s)); 2350 if (yychar != YYEMPTY) 2351 YYERROR; 2352 rcparse_discard_strings (); 2353 } 2354 break; 2355 2356 case 35: 2357 #line 342 "rcparse.y" 2358 { 2359 define_cursor ((yyvsp[(1) - (4)].id), &(yyvsp[(3) - (4)].res_info), (yyvsp[(4) - (4)].s)); 2360 if (yychar != YYEMPTY) 2361 YYERROR; 2362 rcparse_discard_strings (); 2363 } 2364 break; 2365 2366 case 36: 2367 #line 355 "rcparse.y" 2368 { 2369 memset (&dialog, 0, sizeof dialog); 2370 dialog.x = (yyvsp[(5) - (8)].il); 2371 dialog.y = (yyvsp[(6) - (8)].il); 2372 dialog.width = (yyvsp[(7) - (8)].il); 2373 dialog.height = (yyvsp[(8) - (8)].il); 2374 dialog.style = WS_POPUP | WS_BORDER | WS_SYSMENU; 2375 dialog.exstyle = (yyvsp[(4) - (8)].il); 2376 dialog.menu.named = 1; 2377 dialog.class.named = 1; 2378 dialog.font = NULL; 2379 dialog.ex = NULL; 2380 dialog.controls = NULL; 2381 sub_res_info = (yyvsp[(3) - (8)].res_info); 2382 style = 0; 2383 } 2384 break; 2385 2386 case 37: 2387 #line 372 "rcparse.y" 2388 { 2389 define_dialog ((yyvsp[(1) - (13)].id), &sub_res_info, &dialog); 2390 if (yychar != YYEMPTY) 2391 YYERROR; 2392 rcparse_discard_strings (); 2393 } 2394 break; 2395 2396 case 38: 2397 #line 380 "rcparse.y" 2398 { 2399 memset (&dialog, 0, sizeof dialog); 2400 dialog.x = (yyvsp[(5) - (8)].il); 2401 dialog.y = (yyvsp[(6) - (8)].il); 2402 dialog.width = (yyvsp[(7) - (8)].il); 2403 dialog.height = (yyvsp[(8) - (8)].il); 2404 dialog.style = WS_POPUP | WS_BORDER | WS_SYSMENU; 2405 dialog.exstyle = (yyvsp[(4) - (8)].il); 2406 dialog.menu.named = 1; 2407 dialog.class.named = 1; 2408 dialog.font = NULL; 2409 dialog.ex = ((rc_dialog_ex *) 2410 res_alloc (sizeof (rc_dialog_ex))); 2411 memset (dialog.ex, 0, sizeof (rc_dialog_ex)); 2412 dialog.controls = NULL; 2413 sub_res_info = (yyvsp[(3) - (8)].res_info); 2414 style = 0; 2415 } 2416 break; 2417 2418 case 39: 2419 #line 399 "rcparse.y" 2420 { 2421 define_dialog ((yyvsp[(1) - (13)].id), &sub_res_info, &dialog); 2422 if (yychar != YYEMPTY) 2423 YYERROR; 2424 rcparse_discard_strings (); 2425 } 2426 break; 2427 2428 case 40: 2429 #line 407 "rcparse.y" 2430 { 2431 memset (&dialog, 0, sizeof dialog); 2432 dialog.x = (yyvsp[(5) - (9)].il); 2433 dialog.y = (yyvsp[(6) - (9)].il); 2434 dialog.width = (yyvsp[(7) - (9)].il); 2435 dialog.height = (yyvsp[(8) - (9)].il); 2436 dialog.style = WS_POPUP | WS_BORDER | WS_SYSMENU; 2437 dialog.exstyle = (yyvsp[(4) - (9)].il); 2438 dialog.menu.named = 1; 2439 dialog.class.named = 1; 2440 dialog.font = NULL; 2441 dialog.ex = ((rc_dialog_ex *) 2442 res_alloc (sizeof (rc_dialog_ex))); 2443 memset (dialog.ex, 0, sizeof (rc_dialog_ex)); 2444 dialog.ex->help = (yyvsp[(9) - (9)].il); 2445 dialog.controls = NULL; 2446 sub_res_info = (yyvsp[(3) - (9)].res_info); 2447 style = 0; 2448 } 2449 break; 2450 2451 case 41: 2452 #line 427 "rcparse.y" 2453 { 2454 define_dialog ((yyvsp[(1) - (14)].id), &sub_res_info, &dialog); 2455 if (yychar != YYEMPTY) 2456 YYERROR; 2457 rcparse_discard_strings (); 2458 } 2459 break; 2460 2461 case 42: 2462 #line 437 "rcparse.y" 2463 { 2464 (yyval.il) = 0; 2465 } 2466 break; 2467 2468 case 43: 2469 #line 441 "rcparse.y" 2470 { 2471 (yyval.il) = (yyvsp[(3) - (3)].il); 2472 } 2473 break; 2474 2475 case 45: 2476 #line 449 "rcparse.y" 2477 { 2478 dialog.style |= WS_CAPTION; 2479 style |= WS_CAPTION; 2480 dialog.caption = (yyvsp[(3) - (3)].uni); 2481 } 2482 break; 2483 2484 case 46: 2485 #line 455 "rcparse.y" 2486 { 2487 dialog.class = (yyvsp[(3) - (3)].id); 2488 } 2489 break; 2490 2491 case 47: 2492 #line 460 "rcparse.y" 2493 { 2494 dialog.style = style; 2495 } 2496 break; 2497 2498 case 48: 2499 #line 464 "rcparse.y" 2500 { 2501 dialog.exstyle = (yyvsp[(3) - (3)].il); 2502 } 2503 break; 2504 2505 case 49: 2506 #line 468 "rcparse.y" 2507 { 2508 res_unistring_to_id (& dialog.class, (yyvsp[(3) - (3)].uni)); 2509 } 2510 break; 2511 2512 case 50: 2513 #line 472 "rcparse.y" 2514 { 2515 dialog.style |= DS_SETFONT; 2516 style |= DS_SETFONT; 2517 dialog.pointsize = (yyvsp[(3) - (5)].il); 2518 dialog.font = (yyvsp[(5) - (5)].uni); 2519 if (dialog.ex != NULL) 2520 { 2521 dialog.ex->weight = 0; 2522 dialog.ex->italic = 0; 2523 dialog.ex->charset = 1; 2524 } 2525 } 2526 break; 2527 2528 case 51: 2529 #line 485 "rcparse.y" 2530 { 2531 dialog.style |= DS_SETFONT; 2532 style |= DS_SETFONT; 2533 dialog.pointsize = (yyvsp[(3) - (6)].il); 2534 dialog.font = (yyvsp[(5) - (6)].uni); 2535 if (dialog.ex == NULL) 2536 rcparse_warning (_("extended FONT requires DIALOGEX")); 2537 else 2538 { 2539 dialog.ex->weight = (yyvsp[(6) - (6)].il); 2540 dialog.ex->italic = 0; 2541 dialog.ex->charset = 1; 2542 } 2543 } 2544 break; 2545 2546 case 52: 2547 #line 500 "rcparse.y" 2548 { 2549 dialog.style |= DS_SETFONT; 2550 style |= DS_SETFONT; 2551 dialog.pointsize = (yyvsp[(3) - (7)].il); 2552 dialog.font = (yyvsp[(5) - (7)].uni); 2553 if (dialog.ex == NULL) 2554 rcparse_warning (_("extended FONT requires DIALOGEX")); 2555 else 2556 { 2557 dialog.ex->weight = (yyvsp[(6) - (7)].il); 2558 dialog.ex->italic = (yyvsp[(7) - (7)].il); 2559 dialog.ex->charset = 1; 2560 } 2561 } 2562 break; 2563 2564 case 53: 2565 #line 515 "rcparse.y" 2566 { 2567 dialog.style |= DS_SETFONT; 2568 style |= DS_SETFONT; 2569 dialog.pointsize = (yyvsp[(3) - (8)].il); 2570 dialog.font = (yyvsp[(5) - (8)].uni); 2571 if (dialog.ex == NULL) 2572 rcparse_warning (_("extended FONT requires DIALOGEX")); 2573 else 2574 { 2575 dialog.ex->weight = (yyvsp[(6) - (8)].il); 2576 dialog.ex->italic = (yyvsp[(7) - (8)].il); 2577 dialog.ex->charset = (yyvsp[(8) - (8)].il); 2578 } 2579 } 2580 break; 2581 2582 case 54: 2583 #line 530 "rcparse.y" 2584 { 2585 dialog.menu = (yyvsp[(3) - (3)].id); 2586 } 2587 break; 2588 2589 case 55: 2590 #line 534 "rcparse.y" 2591 { 2592 sub_res_info.characteristics = (yyvsp[(3) - (3)].il); 2593 } 2594 break; 2595 2596 case 56: 2597 #line 538 "rcparse.y" 2598 { 2599 sub_res_info.language = (yyvsp[(3) - (4)].il) | ((yyvsp[(4) - (4)].il) << SUBLANG_SHIFT); 2600 } 2601 break; 2602 2603 case 57: 2604 #line 542 "rcparse.y" 2605 { 2606 sub_res_info.version = (yyvsp[(3) - (3)].il); 2607 } 2608 break; 2609 2610 case 59: 2611 #line 550 "rcparse.y" 2612 { 2613 rc_dialog_control **pp; 2614 2615 for (pp = &dialog.controls; *pp != NULL; pp = &(*pp)->next) 2616 ; 2617 *pp = (yyvsp[(2) - (2)].dialog_control); 2618 } 2619 break; 2620 2621 case 60: 2622 #line 561 "rcparse.y" 2623 { 2624 default_style = BS_AUTO3STATE | WS_TABSTOP; 2625 base_style = BS_AUTO3STATE; 2626 class.named = 0; 2627 class.u.id = CTL_BUTTON; 2628 res_text_field = (yyvsp[(2) - (2)].id); 2629 } 2630 break; 2631 2632 case 61: 2633 #line 569 "rcparse.y" 2634 { 2635 (yyval.dialog_control) = (yyvsp[(4) - (4)].dialog_control); 2636 } 2637 break; 2638 2639 case 62: 2640 #line 573 "rcparse.y" 2641 { 2642 default_style = BS_AUTOCHECKBOX | WS_TABSTOP; 2643 base_style = BS_AUTOCHECKBOX; 2644 class.named = 0; 2645 class.u.id = CTL_BUTTON; 2646 res_text_field = (yyvsp[(2) - (2)].id); 2647 } 2648 break; 2649 2650 case 63: 2651 #line 581 "rcparse.y" 2652 { 2653 (yyval.dialog_control) = (yyvsp[(4) - (4)].dialog_control); 2654 } 2655 break; 2656 2657 case 64: 2658 #line 585 "rcparse.y" 2659 { 2660 default_style = BS_AUTORADIOBUTTON | WS_TABSTOP; 2661 base_style = BS_AUTORADIOBUTTON; 2662 class.named = 0; 2663 class.u.id = CTL_BUTTON; 2664 res_text_field = (yyvsp[(2) - (2)].id); 2665 } 2666 break; 2667 2668 case 65: 2669 #line 593 "rcparse.y" 2670 { 2671 (yyval.dialog_control) = (yyvsp[(4) - (4)].dialog_control); 2672 } 2673 break; 2674 2675 case 66: 2676 #line 597 "rcparse.y" 2677 { 2678 default_style = ES_LEFT | WS_BORDER | WS_TABSTOP; 2679 base_style = ES_LEFT | WS_BORDER | WS_TABSTOP; 2680 class.named = 0; 2681 class.u.id = CTL_EDIT; 2682 res_text_field = (yyvsp[(2) - (2)].id); 2683 } 2684 break; 2685 2686 case 67: 2687 #line 605 "rcparse.y" 2688 { 2689 (yyval.dialog_control) = (yyvsp[(4) - (4)].dialog_control); 2690 if (dialog.ex == NULL) 2691 rcparse_warning (_("BEDIT requires DIALOGEX")); 2692 res_string_to_id (&(yyval.dialog_control)->class, "BEDIT"); 2693 } 2694 break; 2695 2696 case 68: 2697 #line 612 "rcparse.y" 2698 { 2699 default_style = BS_CHECKBOX | WS_TABSTOP; 2700 base_style = BS_CHECKBOX | WS_TABSTOP; 2701 class.named = 0; 2702 class.u.id = CTL_BUTTON; 2703 res_text_field = (yyvsp[(2) - (2)].id); 2704 } 2705 break; 2706 2707 case 69: 2708 #line 620 "rcparse.y" 2709 { 2710 (yyval.dialog_control) = (yyvsp[(4) - (4)].dialog_control); 2711 } 2712 break; 2713 2714 case 70: 2715 #line 624 "rcparse.y" 2716 { 2717 /* This is as per MSDN documentation. With some (???) 2718 versions of MS rc.exe their is no default style. */ 2719 default_style = CBS_SIMPLE | WS_TABSTOP; 2720 base_style = 0; 2721 class.named = 0; 2722 class.u.id = CTL_COMBOBOX; 2723 res_text_field = res_null_text; 2724 } 2725 break; 2726 2727 case 71: 2728 #line 634 "rcparse.y" 2729 { 2730 (yyval.dialog_control) = (yyvsp[(3) - (3)].dialog_control); 2731 } 2732 break; 2733 2734 case 72: 2735 #line 639 "rcparse.y" 2736 { 2737 (yyval.dialog_control) = define_control ((yyvsp[(2) - (11)].id), (yyvsp[(3) - (11)].il), (yyvsp[(6) - (11)].il), (yyvsp[(7) - (11)].il), (yyvsp[(8) - (11)].il), (yyvsp[(9) - (11)].il), (yyvsp[(4) - (11)].id), style, (yyvsp[(10) - (11)].il)); 2738 if ((yyvsp[(11) - (11)].rcdata_item) != NULL) 2739 { 2740 if (dialog.ex == NULL) 2741 rcparse_warning (_("control data requires DIALOGEX")); 2742 (yyval.dialog_control)->data = (yyvsp[(11) - (11)].rcdata_item); 2743 } 2744 } 2745 break; 2746 2747 case 73: 2748 #line 650 "rcparse.y" 2749 { 2750 (yyval.dialog_control) = define_control ((yyvsp[(2) - (12)].id), (yyvsp[(3) - (12)].il), (yyvsp[(6) - (12)].il), (yyvsp[(7) - (12)].il), (yyvsp[(8) - (12)].il), (yyvsp[(9) - (12)].il), (yyvsp[(4) - (12)].id), style, (yyvsp[(10) - (12)].il)); 2751 if (dialog.ex == NULL) 2752 rcparse_warning (_("help ID requires DIALOGEX")); 2753 (yyval.dialog_control)->help = (yyvsp[(11) - (12)].il); 2754 (yyval.dialog_control)->data = (yyvsp[(12) - (12)].rcdata_item); 2755 } 2756 break; 2757 2758 case 74: 2759 #line 658 "rcparse.y" 2760 { 2761 default_style = SS_CENTER | WS_GROUP; 2762 base_style = SS_CENTER; 2763 class.named = 0; 2764 class.u.id = CTL_STATIC; 2765 res_text_field = (yyvsp[(2) - (2)].id); 2766 } 2767 break; 2768 2769 case 75: 2770 #line 666 "rcparse.y" 2771 { 2772 (yyval.dialog_control) = (yyvsp[(4) - (4)].dialog_control); 2773 } 2774 break; 2775 2776 case 76: 2777 #line 670 "rcparse.y" 2778 { 2779 default_style = BS_DEFPUSHBUTTON | WS_TABSTOP; 2780 base_style = BS_DEFPUSHBUTTON | WS_TABSTOP; 2781 class.named = 0; 2782 class.u.id = CTL_BUTTON; 2783 res_text_field = (yyvsp[(2) - (2)].id); 2784 } 2785 break; 2786 2787 case 77: 2788 #line 678 "rcparse.y" 2789 { 2790 (yyval.dialog_control) = (yyvsp[(4) - (4)].dialog_control); 2791 } 2792 break; 2793 2794 case 78: 2795 #line 682 "rcparse.y" 2796 { 2797 default_style = ES_LEFT | WS_BORDER | WS_TABSTOP; 2798 base_style = ES_LEFT | WS_BORDER | WS_TABSTOP; 2799 class.named = 0; 2800 class.u.id = CTL_EDIT; 2801 res_text_field = res_null_text; 2802 } 2803 break; 2804 2805 case 79: 2806 #line 690 "rcparse.y" 2807 { 2808 (yyval.dialog_control) = (yyvsp[(3) - (3)].dialog_control); 2809 } 2810 break; 2811 2812 case 80: 2813 #line 694 "rcparse.y" 2814 { 2815 default_style = BS_GROUPBOX; 2816 base_style = BS_GROUPBOX; 2817 class.named = 0; 2818 class.u.id = CTL_BUTTON; 2819 res_text_field = (yyvsp[(2) - (2)].id); 2820 } 2821 break; 2822 2823 case 81: 2824 #line 702 "rcparse.y" 2825 { 2826 (yyval.dialog_control) = (yyvsp[(4) - (4)].dialog_control); 2827 } 2828 break; 2829 2830 case 82: 2831 #line 706 "rcparse.y" 2832 { 2833 default_style = ES_LEFT | WS_BORDER | WS_TABSTOP; 2834 base_style = ES_LEFT | WS_BORDER | WS_TABSTOP; 2835 class.named = 0; 2836 class.u.id = CTL_EDIT; 2837 res_text_field = (yyvsp[(2) - (2)].id); 2838 } 2839 break; 2840 2841 case 83: 2842 #line 714 "rcparse.y" 2843 { 2844 (yyval.dialog_control) = (yyvsp[(4) - (4)].dialog_control); 2845 if (dialog.ex == NULL) 2846 rcparse_warning (_("IEDIT requires DIALOGEX")); 2847 res_string_to_id (&(yyval.dialog_control)->class, "HEDIT"); 2848 } 2849 break; 2850 2851 case 84: 2852 #line 721 "rcparse.y" 2853 { 2854 (yyval.dialog_control) = define_icon_control ((yyvsp[(2) - (6)].id), (yyvsp[(3) - (6)].il), (yyvsp[(4) - (6)].il), (yyvsp[(5) - (6)].il), 0, 0, 0, (yyvsp[(6) - (6)].rcdata_item), 2855 dialog.ex); 2856 } 2857 break; 2858 2859 case 85: 2860 #line 727 "rcparse.y" 2861 { 2862 (yyval.dialog_control) = define_icon_control ((yyvsp[(2) - (8)].id), (yyvsp[(3) - (8)].il), (yyvsp[(4) - (8)].il), (yyvsp[(5) - (8)].il), 0, 0, 0, (yyvsp[(8) - (8)].rcdata_item), 2863 dialog.ex); 2864 } 2865 break; 2866 2867 case 86: 2868 #line 733 "rcparse.y" 2869 { 2870 (yyval.dialog_control) = define_icon_control ((yyvsp[(2) - (10)].id), (yyvsp[(3) - (10)].il), (yyvsp[(4) - (10)].il), (yyvsp[(5) - (10)].il), style, (yyvsp[(9) - (10)].il), 0, (yyvsp[(10) - (10)].rcdata_item), 2871 dialog.ex); 2872 } 2873 break; 2874 2875 case 87: 2876 #line 739 "rcparse.y" 2877 { 2878 (yyval.dialog_control) = define_icon_control ((yyvsp[(2) - (11)].id), (yyvsp[(3) - (11)].il), (yyvsp[(4) - (11)].il), (yyvsp[(5) - (11)].il), style, (yyvsp[(9) - (11)].il), (yyvsp[(10) - (11)].il), (yyvsp[(11) - (11)].rcdata_item), 2879 dialog.ex); 2880 } 2881 break; 2882 2883 case 88: 2884 #line 744 "rcparse.y" 2885 { 2886 default_style = ES_LEFT | WS_BORDER | WS_TABSTOP; 2887 base_style = ES_LEFT | WS_BORDER | WS_TABSTOP; 2888 class.named = 0; 2889 class.u.id = CTL_EDIT; 2890 res_text_field = (yyvsp[(2) - (2)].id); 2891 } 2892 break; 2893 2894 case 89: 2895 #line 752 "rcparse.y" 2896 { 2897 (yyval.dialog_control) = (yyvsp[(4) - (4)].dialog_control); 2898 if (dialog.ex == NULL) 2899 rcparse_warning (_("IEDIT requires DIALOGEX")); 2900 res_string_to_id (&(yyval.dialog_control)->class, "IEDIT"); 2901 } 2902 break; 2903 2904 case 90: 2905 #line 759 "rcparse.y" 2906 { 2907 default_style = LBS_NOTIFY | WS_BORDER; 2908 base_style = LBS_NOTIFY | WS_BORDER; 2909 class.named = 0; 2910 class.u.id = CTL_LISTBOX; 2911 res_text_field = res_null_text; 2912 } 2913 break; 2914 2915 case 91: 2916 #line 767 "rcparse.y" 2917 { 2918 (yyval.dialog_control) = (yyvsp[(3) - (3)].dialog_control); 2919 } 2920 break; 2921 2922 case 92: 2923 #line 771 "rcparse.y" 2924 { 2925 default_style = SS_LEFT | WS_GROUP; 2926 base_style = SS_LEFT; 2927 class.named = 0; 2928 class.u.id = CTL_STATIC; 2929 res_text_field = (yyvsp[(2) - (2)].id); 2930 } 2931 break; 2932 2933 case 93: 2934 #line 779 "rcparse.y" 2935 { 2936 (yyval.dialog_control) = (yyvsp[(4) - (4)].dialog_control); 2937 } 2938 break; 2939 2940 case 94: 2941 #line 783 "rcparse.y" 2942 { 2943 default_style = BS_PUSHBOX | WS_TABSTOP; 2944 base_style = BS_PUSHBOX; 2945 class.named = 0; 2946 class.u.id = CTL_BUTTON; 2947 } 2948 break; 2949 2950 case 95: 2951 #line 790 "rcparse.y" 2952 { 2953 (yyval.dialog_control) = (yyvsp[(4) - (4)].dialog_control); 2954 } 2955 break; 2956 2957 case 96: 2958 #line 794 "rcparse.y" 2959 { 2960 default_style = BS_PUSHBUTTON | WS_TABSTOP; 2961 base_style = BS_PUSHBUTTON | WS_TABSTOP; 2962 class.named = 0; 2963 class.u.id = CTL_BUTTON; 2964 res_text_field = (yyvsp[(2) - (2)].id); 2965 } 2966 break; 2967 2968 case 97: 2969 #line 802 "rcparse.y" 2970 { 2971 (yyval.dialog_control) = (yyvsp[(4) - (4)].dialog_control); 2972 } 2973 break; 2974 2975 case 98: 2976 #line 806 "rcparse.y" 2977 { 2978 default_style = BS_RADIOBUTTON | WS_TABSTOP; 2979 base_style = BS_RADIOBUTTON; 2980 class.named = 0; 2981 class.u.id = CTL_BUTTON; 2982 res_text_field = (yyvsp[(2) - (2)].id); 2983 } 2984 break; 2985 2986 case 99: 2987 #line 814 "rcparse.y" 2988 { 2989 (yyval.dialog_control) = (yyvsp[(4) - (4)].dialog_control); 2990 } 2991 break; 2992 2993 case 100: 2994 #line 818 "rcparse.y" 2995 { 2996 default_style = SS_RIGHT | WS_GROUP; 2997 base_style = SS_RIGHT; 2998 class.named = 0; 2999 class.u.id = CTL_STATIC; 3000 res_text_field = (yyvsp[(2) - (2)].id); 3001 } 3002 break; 3003 3004 case 101: 3005 #line 826 "rcparse.y" 3006 { 3007 (yyval.dialog_control) = (yyvsp[(4) - (4)].dialog_control); 3008 } 3009 break; 3010 3011 case 102: 3012 #line 830 "rcparse.y" 3013 { 3014 default_style = SBS_HORZ; 3015 base_style = 0; 3016 class.named = 0; 3017 class.u.id = CTL_SCROLLBAR; 3018 res_text_field = res_null_text; 3019 } 3020 break; 3021 3022 case 103: 3023 #line 838 "rcparse.y" 3024 { 3025 (yyval.dialog_control) = (yyvsp[(3) - (3)].dialog_control); 3026 } 3027 break; 3028 3029 case 104: 3030 #line 842 "rcparse.y" 3031 { 3032 default_style = BS_3STATE | WS_TABSTOP; 3033 base_style = BS_3STATE; 3034 class.named = 0; 3035 class.u.id = CTL_BUTTON; 3036 res_text_field = (yyvsp[(2) - (2)].id); 3037 } 3038 break; 3039 3040 case 105: 3041 #line 850 "rcparse.y" 3042 { 3043 (yyval.dialog_control) = (yyvsp[(4) - (4)].dialog_control); 3044 } 3045 break; 3046 3047 case 106: 3048 #line 855 "rcparse.y" 3049 { style = WS_CHILD | WS_VISIBLE; } 3050 break; 3051 3052 case 107: 3053 #line 857 "rcparse.y" 3054 { 3055 rc_res_id cid; 3056 cid.named = 0; 3057 cid.u.id = CTL_BUTTON; 3058 (yyval.dialog_control) = define_control ((yyvsp[(2) - (15)].id), (yyvsp[(3) - (15)].il), (yyvsp[(5) - (15)].il), (yyvsp[(7) - (15)].il), (yyvsp[(9) - (15)].il), (yyvsp[(11) - (15)].il), cid, 3059 style, (yyvsp[(15) - (15)].il)); 3060 } 3061 break; 3062 3063 case 108: 3064 #line 875 "rcparse.y" 3065 { 3066 (yyval.dialog_control) = define_control (res_text_field, (yyvsp[(1) - (6)].il), (yyvsp[(2) - (6)].il), (yyvsp[(3) - (6)].il), (yyvsp[(4) - (6)].il), (yyvsp[(5) - (6)].il), class, 3067 default_style | WS_CHILD | WS_VISIBLE, 0); 3068 if ((yyvsp[(6) - (6)].rcdata_item) != NULL) 3069 { 3070 if (dialog.ex == NULL) 3071 rcparse_warning (_("control data requires DIALOGEX")); 3072 (yyval.dialog_control)->data = (yyvsp[(6) - (6)].rcdata_item); 3073 } 3074 } 3075 break; 3076 3077 case 109: 3078 #line 887 "rcparse.y" 3079 { 3080 (yyval.dialog_control) = define_control (res_text_field, (yyvsp[(1) - (8)].il), (yyvsp[(2) - (8)].il), (yyvsp[(3) - (8)].il), (yyvsp[(4) - (8)].il), (yyvsp[(5) - (8)].il), class, style, (yyvsp[(7) - (8)].il)); 3081 if ((yyvsp[(8) - (8)].rcdata_item) != NULL) 3082 { 3083 if (dialog.ex == NULL) 3084 rcparse_warning (_("control data requires DIALOGEX")); 3085 (yyval.dialog_control)->data = (yyvsp[(8) - (8)].rcdata_item); 3086 } 3087 } 3088 break; 3089 3090 case 110: 3091 #line 898 "rcparse.y" 3092 { 3093 (yyval.dialog_control) = define_control (res_text_field, (yyvsp[(1) - (9)].il), (yyvsp[(2) - (9)].il), (yyvsp[(3) - (9)].il), (yyvsp[(4) - (9)].il), (yyvsp[(5) - (9)].il), class, style, (yyvsp[(7) - (9)].il)); 3094 if (dialog.ex == NULL) 3095 rcparse_warning (_("help ID requires DIALOGEX")); 3096 (yyval.dialog_control)->help = (yyvsp[(8) - (9)].il); 3097 (yyval.dialog_control)->data = (yyvsp[(9) - (9)].rcdata_item); 3098 } 3099 break; 3100 3101 case 111: 3102 #line 909 "rcparse.y" 3103 { 3104 if ((yyvsp[(2) - (2)].id).named) 3105 res_unistring_to_id (&(yyval.id), (yyvsp[(2) - (2)].id).u.n.name); 3106 else 3107 (yyval.id)=(yyvsp[(2) - (2)].id); 3108 } 3109 break; 3110 3111 case 112: 3112 #line 919 "rcparse.y" 3113 { 3114 res_string_to_id (&(yyval.id), ""); 3115 } 3116 break; 3117 3118 case 113: 3119 #line 922 "rcparse.y" 3120 { (yyval.id)=(yyvsp[(1) - (2)].id); } 3121 break; 3122 3123 case 114: 3124 #line 927 "rcparse.y" 3125 { 3126 (yyval.id).named = 0; 3127 (yyval.id).u.id = (yyvsp[(1) - (1)].il); 3128 } 3129 break; 3130 3131 case 115: 3132 #line 932 "rcparse.y" 3133 { 3134 (yyval.id).named = 1; 3135 (yyval.id).u.n.name = (yyvsp[(1) - (1)].uni); 3136 (yyval.id).u.n.length = unichar_len ((yyvsp[(1) - (1)].uni)); 3137 } 3138 break; 3139 3140 case 116: 3141 #line 941 "rcparse.y" 3142 { 3143 (yyval.rcdata_item) = NULL; 3144 } 3145 break; 3146 3147 case 117: 3148 #line 945 "rcparse.y" 3149 { 3150 (yyval.rcdata_item) = (yyvsp[(2) - (3)].rcdata).first; 3151 } 3152 break; 3153 3154 case 118: 3155 #line 954 "rcparse.y" 3156 { style = WS_CHILD | WS_VISIBLE; } 3157 break; 3158 3159 case 120: 3160 #line 960 "rcparse.y" 3161 { style = SS_ICON | WS_CHILD | WS_VISIBLE; } 3162 break; 3163 3164 case 122: 3165 #line 966 "rcparse.y" 3166 { style = base_style | WS_CHILD | WS_VISIBLE; } 3167 break; 3168 3169 case 124: 3170 #line 974 "rcparse.y" 3171 { 3172 define_font ((yyvsp[(1) - (4)].id), &(yyvsp[(3) - (4)].res_info), (yyvsp[(4) - (4)].s)); 3173 if (yychar != YYEMPTY) 3174 YYERROR; 3175 rcparse_discard_strings (); 3176 } 3177 break; 3178 3179 case 125: 3180 #line 986 "rcparse.y" 3181 { 3182 define_icon ((yyvsp[(1) - (4)].id), &(yyvsp[(3) - (4)].res_info), (yyvsp[(4) - (4)].s)); 3183 if (yychar != YYEMPTY) 3184 YYERROR; 3185 rcparse_discard_strings (); 3186 } 3187 break; 3188 3189 case 126: 3190 #line 999 "rcparse.y" 3191 { 3192 language = (yyvsp[(2) - (3)].il) | ((yyvsp[(3) - (3)].il) << SUBLANG_SHIFT); 3193 } 3194 break; 3195 3196 case 127: 3197 #line 1008 "rcparse.y" 3198 { 3199 define_menu ((yyvsp[(1) - (6)].id), &(yyvsp[(3) - (6)].res_info), (yyvsp[(5) - (6)].menuitem)); 3200 if (yychar != YYEMPTY) 3201 YYERROR; 3202 rcparse_discard_strings (); 3203 } 3204 break; 3205 3206 case 128: 3207 #line 1018 "rcparse.y" 3208 { 3209 (yyval.menuitem) = NULL; 3210 } 3211 break; 3212 3213 case 129: 3214 #line 1022 "rcparse.y" 3215 { 3216 if ((yyvsp[(1) - (2)].menuitem) == NULL) 3217 (yyval.menuitem) = (yyvsp[(2) - (2)].menuitem); 3218 else 3219 { 3220 rc_menuitem **pp; 3221 3222 for (pp = &(yyvsp[(1) - (2)].menuitem)->next; *pp != NULL; pp = &(*pp)->next) 3223 ; 3224 *pp = (yyvsp[(2) - (2)].menuitem); 3225 (yyval.menuitem) = (yyvsp[(1) - (2)].menuitem); 3226 } 3227 } 3228 break; 3229 3230 case 130: 3231 #line 1039 "rcparse.y" 3232 { 3233 (yyval.menuitem) = define_menuitem ((yyvsp[(2) - (4)].uni), (yyvsp[(3) - (4)].il), (yyvsp[(4) - (4)].is), 0, 0, NULL); 3234 } 3235 break; 3236 3237 case 131: 3238 #line 1043 "rcparse.y" 3239 { 3240 (yyval.menuitem) = define_menuitem (NULL, 0, 0, 0, 0, NULL); 3241 } 3242 break; 3243 3244 case 132: 3245 #line 1047 "rcparse.y" 3246 { 3247 (yyval.menuitem) = define_menuitem ((yyvsp[(2) - (6)].uni), 0, (yyvsp[(3) - (6)].is), 0, 0, (yyvsp[(5) - (6)].menuitem)); 3248 } 3249 break; 3250 3251 case 133: 3252 #line 1054 "rcparse.y" 3253 { 3254 (yyval.is) = 0; 3255 } 3256 break; 3257 3258 case 134: 3259 #line 1058 "rcparse.y" 3260 { 3261 (yyval.is) = (yyvsp[(1) - (3)].is) | (yyvsp[(3) - (3)].is); 3262 } 3263 break; 3264 3265 case 135: 3266 #line 1062 "rcparse.y" 3267 { 3268 (yyval.is) = (yyvsp[(1) - (2)].is) | (yyvsp[(2) - (2)].is); 3269 } 3270 break; 3271 3272 case 136: 3273 #line 1069 "rcparse.y" 3274 { 3275 (yyval.is) = MENUITEM_CHECKED; 3276 } 3277 break; 3278 3279 case 137: 3280 #line 1073 "rcparse.y" 3281 { 3282 (yyval.is) = MENUITEM_GRAYED; 3283 } 3284 break; 3285 3286 case 138: 3287 #line 1077 "rcparse.y" 3288 { 3289 (yyval.is) = MENUITEM_HELP; 3290 } 3291 break; 3292 3293 case 139: 3294 #line 1081 "rcparse.y" 3295 { 3296 (yyval.is) = MENUITEM_INACTIVE; 3297 } 3298 break; 3299 3300 case 140: 3301 #line 1085 "rcparse.y" 3302 { 3303 (yyval.is) = MENUITEM_MENUBARBREAK; 3304 } 3305 break; 3306 3307 case 141: 3308 #line 1089 "rcparse.y" 3309 { 3310 (yyval.is) = MENUITEM_MENUBREAK; 3311 } 3312 break; 3313 3314 case 142: 3315 #line 1098 "rcparse.y" 3316 { 3317 define_menu ((yyvsp[(1) - (6)].id), &(yyvsp[(3) - (6)].res_info), (yyvsp[(5) - (6)].menuitem)); 3318 if (yychar != YYEMPTY) 3319 YYERROR; 3320 rcparse_discard_strings (); 3321 } 3322 break; 3323 3324 case 143: 3325 #line 1108 "rcparse.y" 3326 { 3327 (yyval.menuitem) = NULL; 3328 } 3329 break; 3330 3331 case 144: 3332 #line 1112 "rcparse.y" 3333 { 3334 if ((yyvsp[(1) - (2)].menuitem) == NULL) 3335 (yyval.menuitem) = (yyvsp[(2) - (2)].menuitem); 3336 else 3337 { 3338 rc_menuitem **pp; 3339 3340 for (pp = &(yyvsp[(1) - (2)].menuitem)->next; *pp != NULL; pp = &(*pp)->next) 3341 ; 3342 *pp = (yyvsp[(2) - (2)].menuitem); 3343 (yyval.menuitem) = (yyvsp[(1) - (2)].menuitem); 3344 } 3345 } 3346 break; 3347 3348 case 145: 3349 #line 1129 "rcparse.y" 3350 { 3351 (yyval.menuitem) = define_menuitem ((yyvsp[(2) - (2)].uni), 0, 0, 0, 0, NULL); 3352 } 3353 break; 3354 3355 case 146: 3356 #line 1133 "rcparse.y" 3357 { 3358 (yyval.menuitem) = define_menuitem ((yyvsp[(2) - (3)].uni), (yyvsp[(3) - (3)].il), 0, 0, 0, NULL); 3359 } 3360 break; 3361 3362 case 147: 3363 #line 1137 "rcparse.y" 3364 { 3365 (yyval.menuitem) = define_menuitem ((yyvsp[(2) - (5)].uni), (yyvsp[(3) - (5)].il), (yyvsp[(4) - (5)].il), (yyvsp[(5) - (5)].il), 0, NULL); 3366 } 3367 break; 3368 3369 case 148: 3370 #line 1141 "rcparse.y" 3371 { 3372 (yyval.menuitem) = define_menuitem (NULL, 0, 0, 0, 0, NULL); 3373 } 3374 break; 3375 3376 case 149: 3377 #line 1145 "rcparse.y" 3378 { 3379 (yyval.menuitem) = define_menuitem ((yyvsp[(2) - (5)].uni), 0, 0, 0, 0, (yyvsp[(4) - (5)].menuitem)); 3380 } 3381 break; 3382 3383 case 150: 3384 #line 1149 "rcparse.y" 3385 { 3386 (yyval.menuitem) = define_menuitem ((yyvsp[(2) - (6)].uni), (yyvsp[(3) - (6)].il), 0, 0, 0, (yyvsp[(5) - (6)].menuitem)); 3387 } 3388 break; 3389 3390 case 151: 3391 #line 1153 "rcparse.y" 3392 { 3393 (yyval.menuitem) = define_menuitem ((yyvsp[(2) - (7)].uni), (yyvsp[(3) - (7)].il), (yyvsp[(4) - (7)].il), 0, 0, (yyvsp[(6) - (7)].menuitem)); 3394 } 3395 break; 3396 3397 case 152: 3398 #line 1158 "rcparse.y" 3399 { 3400 (yyval.menuitem) = define_menuitem ((yyvsp[(2) - (9)].uni), (yyvsp[(3) - (9)].il), (yyvsp[(4) - (9)].il), (yyvsp[(5) - (9)].il), (yyvsp[(6) - (9)].il), (yyvsp[(8) - (9)].menuitem)); 3401 } 3402 break; 3403 3404 case 153: 3405 #line 1167 "rcparse.y" 3406 { 3407 define_messagetable ((yyvsp[(1) - (4)].id), &(yyvsp[(3) - (4)].res_info), (yyvsp[(4) - (4)].s)); 3408 if (yychar != YYEMPTY) 3409 YYERROR; 3410 rcparse_discard_strings (); 3411 } 3412 break; 3413 3414 case 154: 3415 #line 1179 "rcparse.y" 3416 { 3417 rcparse_rcdata (); 3418 } 3419 break; 3420 3421 case 155: 3422 #line 1183 "rcparse.y" 3423 { 3424 rcparse_normal (); 3425 (yyval.rcdata) = (yyvsp[(2) - (2)].rcdata); 3426 } 3427 break; 3428 3429 case 156: 3430 #line 1191 "rcparse.y" 3431 { 3432 (yyval.rcdata).first = NULL; 3433 (yyval.rcdata).last = NULL; 3434 } 3435 break; 3436 3437 case 157: 3438 #line 1196 "rcparse.y" 3439 { 3440 (yyval.rcdata) = (yyvsp[(1) - (1)].rcdata); 3441 } 3442 break; 3443 3444 case 158: 3445 #line 1203 "rcparse.y" 3446 { 3447 rc_rcdata_item *ri; 3448 3449 ri = define_rcdata_string ((yyvsp[(1) - (1)].ss).s, (yyvsp[(1) - (1)].ss).length); 3450 (yyval.rcdata).first = ri; 3451 (yyval.rcdata).last = ri; 3452 } 3453 break; 3454 3455 case 159: 3456 #line 1211 "rcparse.y" 3457 { 3458 rc_rcdata_item *ri; 3459 3460 ri = define_rcdata_unistring ((yyvsp[(1) - (1)].suni).s, (yyvsp[(1) - (1)].suni).length); 3461 (yyval.rcdata).first = ri; 3462 (yyval.rcdata).last = ri; 3463 } 3464 break; 3465 3466 case 160: 3467 #line 1219 "rcparse.y" 3468 { 3469 rc_rcdata_item *ri; 3470 3471 ri = define_rcdata_number ((yyvsp[(1) - (1)].i).val, (yyvsp[(1) - (1)].i).dword); 3472 (yyval.rcdata).first = ri; 3473 (yyval.rcdata).last = ri; 3474 } 3475 break; 3476 3477 case 161: 3478 #line 1227 "rcparse.y" 3479 { 3480 rc_rcdata_item *ri; 3481 3482 ri = define_rcdata_string ((yyvsp[(3) - (3)].ss).s, (yyvsp[(3) - (3)].ss).length); 3483 (yyval.rcdata).first = (yyvsp[(1) - (3)].rcdata).first; 3484 (yyvsp[(1) - (3)].rcdata).last->next = ri; 3485 (yyval.rcdata).last = ri; 3486 } 3487 break; 3488 3489 case 162: 3490 #line 1236 "rcparse.y" 3491 { 3492 rc_rcdata_item *ri; 3493 3494 ri = define_rcdata_unistring ((yyvsp[(3) - (3)].suni).s, (yyvsp[(3) - (3)].suni).length); 3495 (yyval.rcdata).first = (yyvsp[(1) - (3)].rcdata).first; 3496 (yyvsp[(1) - (3)].rcdata).last->next = ri; 3497 (yyval.rcdata).last = ri; 3498 } 3499 break; 3500 3501 case 163: 3502 #line 1245 "rcparse.y" 3503 { 3504 rc_rcdata_item *ri; 3505 3506 ri = define_rcdata_number ((yyvsp[(3) - (3)].i).val, (yyvsp[(3) - (3)].i).dword); 3507 (yyval.rcdata).first = (yyvsp[(1) - (3)].rcdata).first; 3508 (yyvsp[(1) - (3)].rcdata).last->next = ri; 3509 (yyval.rcdata).last = ri; 3510 } 3511 break; 3512 3513 case 164: 3514 #line 1254 "rcparse.y" 3515 { 3516 (yyval.rcdata)=(yyvsp[(1) - (2)].rcdata); 3517 } 3518 break; 3519 3520 case 165: 3521 #line 1263 "rcparse.y" 3522 { sub_res_info = (yyvsp[(2) - (3)].res_info); rcparse_rcdata (); } 3523 break; 3524 3525 case 166: 3526 #line 1264 "rcparse.y" 3527 { rcparse_normal (); } 3528 break; 3529 3530 case 168: 3531 #line 1270 "rcparse.y" 3532 { 3533 define_stringtable (&sub_res_info, (yyvsp[(2) - (3)].il), (yyvsp[(3) - (3)].suni).s, (yyvsp[(3) - (3)].suni).length); 3534 rcparse_discard_strings (); 3535 } 3536 break; 3537 3538 case 169: 3539 #line 1275 "rcparse.y" 3540 { 3541 define_stringtable (&sub_res_info, (yyvsp[(2) - (4)].il), (yyvsp[(4) - (4)].suni).s, (yyvsp[(4) - (4)].suni).length); 3542 rcparse_discard_strings (); 3543 } 3544 break; 3545 3546 case 170: 3547 #line 1280 "rcparse.y" 3548 { 3549 rcparse_warning (_("invalid stringtable resource.")); 3550 abort (); 3551 } 3552 break; 3553 3554 case 171: 3555 #line 1288 "rcparse.y" 3556 { 3557 (yyval.id)=(yyvsp[(1) - (1)].id); 3558 } 3559 break; 3560 3561 case 172: 3562 #line 1292 "rcparse.y" 3563 { 3564 (yyval.id).named = 0; 3565 (yyval.id).u.id = 23; 3566 } 3567 break; 3568 3569 case 173: 3570 #line 1297 "rcparse.y" 3571 { 3572 (yyval.id).named = 0; 3573 (yyval.id).u.id = RT_RCDATA; 3574 } 3575 break; 3576 3577 case 174: 3578 #line 1302 "rcparse.y" 3579 { 3580 (yyval.id).named = 0; 3581 (yyval.id).u.id = RT_MANIFEST; 3582 } 3583 break; 3584 3585 case 175: 3586 #line 1307 "rcparse.y" 3587 { 3588 (yyval.id).named = 0; 3589 (yyval.id).u.id = RT_PLUGPLAY; 3590 } 3591 break; 3592 3593 case 176: 3594 #line 1312 "rcparse.y" 3595 { 3596 (yyval.id).named = 0; 3597 (yyval.id).u.id = RT_VXD; 3598 } 3599 break; 3600 3601 case 177: 3602 #line 1317 "rcparse.y" 3603 { 3604 (yyval.id).named = 0; 3605 (yyval.id).u.id = RT_DLGINCLUDE; 3606 } 3607 break; 3608 3609 case 178: 3610 #line 1322 "rcparse.y" 3611 { 3612 (yyval.id).named = 0; 3613 (yyval.id).u.id = RT_DLGINIT; 3614 } 3615 break; 3616 3617 case 179: 3618 #line 1327 "rcparse.y" 3619 { 3620 (yyval.id).named = 0; 3621 (yyval.id).u.id = RT_ANICURSOR; 3622 } 3623 break; 3624 3625 case 180: 3626 #line 1332 "rcparse.y" 3627 { 3628 (yyval.id).named = 0; 3629 (yyval.id).u.id = RT_ANIICON; 3630 } 3631 break; 3632 3633 case 181: 3634 #line 1343 "rcparse.y" 3635 { 3636 define_user_data ((yyvsp[(1) - (6)].id), (yyvsp[(2) - (6)].id), &(yyvsp[(3) - (6)].res_info), (yyvsp[(5) - (6)].rcdata).first); 3637 if (yychar != YYEMPTY) 3638 YYERROR; 3639 rcparse_discard_strings (); 3640 } 3641 break; 3642 3643 case 182: 3644 #line 1350 "rcparse.y" 3645 { 3646 define_user_file ((yyvsp[(1) - (4)].id), (yyvsp[(2) - (4)].id), &(yyvsp[(3) - (4)].res_info), (yyvsp[(4) - (4)].s)); 3647 if (yychar != YYEMPTY) 3648 YYERROR; 3649 rcparse_discard_strings (); 3650 } 3651 break; 3652 3653 case 183: 3654 #line 1360 "rcparse.y" 3655 { 3656 define_toolbar ((yyvsp[(1) - (8)].id), &(yyvsp[(3) - (8)].res_info), (yyvsp[(4) - (8)].il), (yyvsp[(5) - (8)].il), (yyvsp[(7) - (8)].toobar_item)); 3657 } 3658 break; 3659 3660 case 184: 3661 #line 1365 "rcparse.y" 3662 { (yyval.toobar_item)= NULL; } 3663 break; 3664 3665 case 185: 3666 #line 1367 "rcparse.y" 3667 { 3668 rc_toolbar_item *c,*n; 3669 c = (yyvsp[(1) - (3)].toobar_item); 3670 n= (rc_toolbar_item *) 3671 res_alloc (sizeof (rc_toolbar_item)); 3672 if (c != NULL) 3673 while (c->next != NULL) 3674 c = c->next; 3675 n->prev = c; 3676 n->next = NULL; 3677 if (c != NULL) 3678 c->next = n; 3679 n->id = (yyvsp[(3) - (3)].id); 3680 if ((yyvsp[(1) - (3)].toobar_item) == NULL) 3681 (yyval.toobar_item) = n; 3682 else 3683 (yyval.toobar_item) = (yyvsp[(1) - (3)].toobar_item); 3684 } 3685 break; 3686 3687 case 186: 3688 #line 1386 "rcparse.y" 3689 { 3690 rc_toolbar_item *c,*n; 3691 c = (yyvsp[(1) - (2)].toobar_item); 3692 n= (rc_toolbar_item *) 3693 res_alloc (sizeof (rc_toolbar_item)); 3694 if (c != NULL) 3695 while (c->next != NULL) 3696 c = c->next; 3697 n->prev = c; 3698 n->next = NULL; 3699 if (c != NULL) 3700 c->next = n; 3701 n->id.named = 0; 3702 n->id.u.id = 0; 3703 if ((yyvsp[(1) - (2)].toobar_item) == NULL) 3704 (yyval.toobar_item) = n; 3705 else 3706 (yyval.toobar_item) = (yyvsp[(1) - (2)].toobar_item); 3707 } 3708 break; 3709 3710 case 187: 3711 #line 1411 "rcparse.y" 3712 { 3713 define_versioninfo ((yyvsp[(1) - (6)].id), language, (yyvsp[(3) - (6)].fixver), (yyvsp[(5) - (6)].verinfo)); 3714 if (yychar != YYEMPTY) 3715 YYERROR; 3716 rcparse_discard_strings (); 3717 } 3718 break; 3719 3720 case 188: 3721 #line 1421 "rcparse.y" 3722 { 3723 (yyval.fixver) = ((rc_fixed_versioninfo *) 3724 res_alloc (sizeof (rc_fixed_versioninfo))); 3725 memset ((yyval.fixver), 0, sizeof (rc_fixed_versioninfo)); 3726 } 3727 break; 3728 3729 case 189: 3730 #line 1427 "rcparse.y" 3731 { 3732 (yyvsp[(1) - (6)].fixver)->file_version_ms = ((yyvsp[(3) - (6)].il) << 16) | (yyvsp[(4) - (6)].il); 3733 (yyvsp[(1) - (6)].fixver)->file_version_ls = ((yyvsp[(5) - (6)].il) << 16) | (yyvsp[(6) - (6)].il); 3734 (yyval.fixver) = (yyvsp[(1) - (6)].fixver); 3735 } 3736 break; 3737 3738 case 190: 3739 #line 1433 "rcparse.y" 3740 { 3741 (yyvsp[(1) - (6)].fixver)->product_version_ms = ((yyvsp[(3) - (6)].il) << 16) | (yyvsp[(4) - (6)].il); 3742 (yyvsp[(1) - (6)].fixver)->product_version_ls = ((yyvsp[(5) - (6)].il) << 16) | (yyvsp[(6) - (6)].il); 3743 (yyval.fixver) = (yyvsp[(1) - (6)].fixver); 3744 } 3745 break; 3746 3747 case 191: 3748 #line 1439 "rcparse.y" 3749 { 3750 (yyvsp[(1) - (3)].fixver)->file_flags_mask = (yyvsp[(3) - (3)].il); 3751 (yyval.fixver) = (yyvsp[(1) - (3)].fixver); 3752 } 3753 break; 3754 3755 case 192: 3756 #line 1444 "rcparse.y" 3757 { 3758 (yyvsp[(1) - (3)].fixver)->file_flags = (yyvsp[(3) - (3)].il); 3759 (yyval.fixver) = (yyvsp[(1) - (3)].fixver); 3760 } 3761 break; 3762 3763 case 193: 3764 #line 1449 "rcparse.y" 3765 { 3766 (yyvsp[(1) - (3)].fixver)->file_os = (yyvsp[(3) - (3)].il); 3767 (yyval.fixver) = (yyvsp[(1) - (3)].fixver); 3768 } 3769 break; 3770 3771 case 194: 3772 #line 1454 "rcparse.y" 3773 { 3774 (yyvsp[(1) - (3)].fixver)->file_type = (yyvsp[(3) - (3)].il); 3775 (yyval.fixver) = (yyvsp[(1) - (3)].fixver); 3776 } 3777 break; 3778 3779 case 195: 3780 #line 1459 "rcparse.y" 3781 { 3782 (yyvsp[(1) - (3)].fixver)->file_subtype = (yyvsp[(3) - (3)].il); 3783 (yyval.fixver) = (yyvsp[(1) - (3)].fixver); 3784 } 3785 break; 3786 3787 case 196: 3788 #line 1473 "rcparse.y" 3789 { 3790 (yyval.verinfo) = NULL; 3791 } 3792 break; 3793 3794 case 197: 3795 #line 1477 "rcparse.y" 3796 { 3797 (yyval.verinfo) = append_ver_stringfileinfo ((yyvsp[(1) - (5)].verinfo), (yyvsp[(4) - (5)].verstringtable)); 3798 } 3799 break; 3800 3801 case 198: 3802 #line 1481 "rcparse.y" 3803 { 3804 (yyval.verinfo) = append_ver_varfileinfo ((yyvsp[(1) - (7)].verinfo), (yyvsp[(5) - (7)].uni), (yyvsp[(6) - (7)].vervar)); 3805 } 3806 break; 3807 3808 case 199: 3809 #line 1488 "rcparse.y" 3810 { 3811 (yyval.verstringtable) = NULL; 3812 } 3813 break; 3814 3815 case 200: 3816 #line 1492 "rcparse.y" 3817 { 3818 (yyval.verstringtable) = append_ver_stringtable ((yyvsp[(1) - (5)].verstringtable), (yyvsp[(2) - (5)].s), (yyvsp[(4) - (5)].verstring)); 3819 } 3820 break; 3821 3822 case 201: 3823 #line 1499 "rcparse.y" 3824 { 3825 (yyval.verstring) = NULL; 3826 } 3827 break; 3828 3829 case 202: 3830 #line 1503 "rcparse.y" 3831 { 3832 (yyval.verstring) = append_verval ((yyvsp[(1) - (5)].verstring), (yyvsp[(3) - (5)].uni), (yyvsp[(5) - (5)].uni)); 3833 } 3834 break; 3835 3836 case 203: 3837 #line 1510 "rcparse.y" 3838 { 3839 (yyval.vervar) = NULL; 3840 } 3841 break; 3842 3843 case 204: 3844 #line 1514 "rcparse.y" 3845 { 3846 (yyval.vervar) = append_vertrans ((yyvsp[(1) - (3)].vervar), (yyvsp[(2) - (3)].il), (yyvsp[(3) - (3)].il)); 3847 } 3848 break; 3849 3850 case 205: 3851 #line 1523 "rcparse.y" 3852 { 3853 (yyval.id).named = 0; 3854 (yyval.id).u.id = (yyvsp[(1) - (1)].il); 3855 } 3856 break; 3857 3858 case 206: 3859 #line 1528 "rcparse.y" 3860 { 3861 res_unistring_to_id (&(yyval.id), (yyvsp[(1) - (1)].uni)); 3862 } 3863 break; 3864 3865 case 207: 3866 #line 1537 "rcparse.y" 3867 { 3868 (yyval.uni) = (yyvsp[(1) - (1)].uni); 3869 } 3870 break; 3871 3872 case 208: 3873 #line 1541 "rcparse.y" 3874 { 3875 unichar *h = NULL; 3876 unicode_from_ascii ((rc_uint_type *) NULL, &h, (yyvsp[(1) - (1)].s)); 3877 (yyval.uni) = h; 3878 } 3879 break; 3880 3881 case 209: 3882 #line 1551 "rcparse.y" 3883 { 3884 (yyval.id).named = 0; 3885 (yyval.id).u.id = (yyvsp[(1) - (2)].il); 3886 } 3887 break; 3888 3889 case 210: 3890 #line 1556 "rcparse.y" 3891 { 3892 res_unistring_to_id (&(yyval.id), (yyvsp[(1) - (1)].uni)); 3893 } 3894 break; 3895 3896 case 211: 3897 #line 1560 "rcparse.y" 3898 { 3899 res_unistring_to_id (&(yyval.id), (yyvsp[(1) - (2)].uni)); 3900 } 3901 break; 3902 3903 case 212: 3904 #line 1570 "rcparse.y" 3905 { 3906 memset (&(yyval.res_info), 0, sizeof (rc_res_res_info)); 3907 (yyval.res_info).language = language; 3908 /* FIXME: Is this the right default? */ 3909 (yyval.res_info).memflags = MEMFLAG_MOVEABLE | MEMFLAG_PURE | MEMFLAG_DISCARDABLE; 3910 } 3911 break; 3912 3913 case 213: 3914 #line 1577 "rcparse.y" 3915 { 3916 (yyval.res_info) = (yyvsp[(1) - (2)].res_info); 3917 (yyval.res_info).memflags |= (yyvsp[(2) - (2)].memflags).on; 3918 (yyval.res_info).memflags &=~ (yyvsp[(2) - (2)].memflags).off; 3919 } 3920 break; 3921 3922 case 214: 3923 #line 1583 "rcparse.y" 3924 { 3925 (yyval.res_info) = (yyvsp[(1) - (3)].res_info); 3926 (yyval.res_info).characteristics = (yyvsp[(3) - (3)].il); 3927 } 3928 break; 3929 3930 case 215: 3931 #line 1588 "rcparse.y" 3932 { 3933 (yyval.res_info) = (yyvsp[(1) - (4)].res_info); 3934 (yyval.res_info).language = (yyvsp[(3) - (4)].il) | ((yyvsp[(4) - (4)].il) << SUBLANG_SHIFT); 3935 } 3936 break; 3937 3938 case 216: 3939 #line 1593 "rcparse.y" 3940 { 3941 (yyval.res_info) = (yyvsp[(1) - (3)].res_info); 3942 (yyval.res_info).version = (yyvsp[(3) - (3)].il); 3943 } 3944 break; 3945 3946 case 217: 3947 #line 1603 "rcparse.y" 3948 { 3949 memset (&(yyval.res_info), 0, sizeof (rc_res_res_info)); 3950 (yyval.res_info).language = language; 3951 (yyval.res_info).memflags = MEMFLAG_MOVEABLE | MEMFLAG_DISCARDABLE; 3952 } 3953 break; 3954 3955 case 218: 3956 #line 1609 "rcparse.y" 3957 { 3958 (yyval.res_info) = (yyvsp[(1) - (2)].res_info); 3959 (yyval.res_info).memflags |= (yyvsp[(2) - (2)].memflags).on; 3960 (yyval.res_info).memflags &=~ (yyvsp[(2) - (2)].memflags).off; 3961 } 3962 break; 3963 3964 case 219: 3965 #line 1620 "rcparse.y" 3966 { 3967 memset (&(yyval.res_info), 0, sizeof (rc_res_res_info)); 3968 (yyval.res_info).language = language; 3969 (yyval.res_info).memflags = MEMFLAG_MOVEABLE | MEMFLAG_PURE | MEMFLAG_DISCARDABLE; 3970 } 3971 break; 3972 3973 case 220: 3974 #line 1626 "rcparse.y" 3975 { 3976 (yyval.res_info) = (yyvsp[(1) - (2)].res_info); 3977 (yyval.res_info).memflags |= (yyvsp[(2) - (2)].memflags).on; 3978 (yyval.res_info).memflags &=~ (yyvsp[(2) - (2)].memflags).off; 3979 } 3980 break; 3981 3982 case 221: 3983 #line 1638 "rcparse.y" 3984 { 3985 (yyval.memflags).on = MEMFLAG_MOVEABLE; 3986 (yyval.memflags).off = 0; 3987 } 3988 break; 3989 3990 case 222: 3991 #line 1643 "rcparse.y" 3992 { 3993 (yyval.memflags).on = 0; 3994 (yyval.memflags).off = MEMFLAG_MOVEABLE; 3995 } 3996 break; 3997 3998 case 223: 3999 #line 1648 "rcparse.y" 4000 { 4001 (yyval.memflags).on = MEMFLAG_PURE; 4002 (yyval.memflags).off = 0; 4003 } 4004 break; 4005 4006 case 224: 4007 #line 1653 "rcparse.y" 4008 { 4009 (yyval.memflags).on = 0; 4010 (yyval.memflags).off = MEMFLAG_PURE; 4011 } 4012 break; 4013 4014 case 225: 4015 #line 1658 "rcparse.y" 4016 { 4017 (yyval.memflags).on = MEMFLAG_PRELOAD; 4018 (yyval.memflags).off = 0; 4019 } 4020 break; 4021 4022 case 226: 4023 #line 1663 "rcparse.y" 4024 { 4025 (yyval.memflags).on = 0; 4026 (yyval.memflags).off = MEMFLAG_PRELOAD; 4027 } 4028 break; 4029 4030 case 227: 4031 #line 1668 "rcparse.y" 4032 { 4033 (yyval.memflags).on = MEMFLAG_DISCARDABLE; 4034 (yyval.memflags).off = 0; 4035 } 4036 break; 4037 4038 case 228: 4039 #line 1678 "rcparse.y" 4040 { 4041 (yyval.s) = (yyvsp[(1) - (1)].s); 4042 } 4043 break; 4044 4045 case 229: 4046 #line 1682 "rcparse.y" 4047 { 4048 (yyval.s) = (yyvsp[(1) - (1)].s); 4049 } 4050 break; 4051 4052 case 230: 4053 #line 1690 "rcparse.y" 4054 { 4055 (yyval.uni) = (yyvsp[(1) - (1)].uni); 4056 } 4057 break; 4058 4059 case 231: 4060 #line 1695 "rcparse.y" 4061 { 4062 rc_uint_type l1 = unichar_len ((yyvsp[(1) - (2)].uni)); 4063 rc_uint_type l2 = unichar_len ((yyvsp[(2) - (2)].uni)); 4064 unichar *h = (unichar *) res_alloc ((l1 + l2 + 1) * sizeof (unichar)); 4065 if (l1 != 0) 4066 memcpy (h, (yyvsp[(1) - (2)].uni), l1 * sizeof (unichar)); 4067 if (l2 != 0) 4068 memcpy (h + l1, (yyvsp[(2) - (2)].uni), l2 * sizeof (unichar)); 4069 h[l1 + l2] = 0; 4070 (yyval.uni) = h; 4071 } 4072 break; 4073 4074 case 232: 4075 #line 1710 "rcparse.y" 4076 { 4077 (yyval.uni) = unichar_dup ((yyvsp[(1) - (1)].uni)); 4078 } 4079 break; 4080 4081 case 233: 4082 #line 1714 "rcparse.y" 4083 { 4084 unichar *h = NULL; 4085 unicode_from_ascii ((rc_uint_type *) NULL, &h, (yyvsp[(1) - (1)].s)); 4086 (yyval.uni) = h; 4087 } 4088 break; 4089 4090 case 234: 4091 #line 1723 "rcparse.y" 4092 { 4093 (yyval.suni) = (yyvsp[(1) - (1)].suni); 4094 } 4095 break; 4096 4097 case 235: 4098 #line 1727 "rcparse.y" 4099 { 4100 unichar *h = NULL; 4101 rc_uint_type l = 0; 4102 unicode_from_ascii_len (&l, &h, (yyvsp[(1) - (1)].ss).s, (yyvsp[(1) - (1)].ss).length); 4103 (yyval.suni).s = h; 4104 (yyval.suni).length = l; 4105 } 4106 break; 4107 4108 case 236: 4109 #line 1739 "rcparse.y" 4110 { 4111 (yyval.suni) = (yyvsp[(1) - (1)].suni); 4112 } 4113 break; 4114 4115 case 237: 4116 #line 1744 "rcparse.y" 4117 { 4118 rc_uint_type l1 = (yyvsp[(1) - (2)].suni).length; 4119 rc_uint_type l2 = (yyvsp[(2) - (2)].suni).length; 4120 unichar *h = (unichar *) res_alloc ((l1 + l2 + 1) * sizeof (unichar)); 4121 if (l1 != 0) 4122 memcpy (h, (yyvsp[(1) - (2)].suni).s, l1 * sizeof (unichar)); 4123 if (l2 != 0) 4124 memcpy (h + l1, (yyvsp[(2) - (2)].suni).s, l2 * sizeof (unichar)); 4125 h[l1 + l2] = 0; 4126 (yyval.suni).length = l1 + l2; 4127 (yyval.suni).s = h; 4128 } 4129 break; 4130 4131 case 238: 4132 #line 1760 "rcparse.y" 4133 { 4134 (yyval.ss) = (yyvsp[(1) - (1)].ss); 4135 } 4136 break; 4137 4138 case 239: 4139 #line 1764 "rcparse.y" 4140 { 4141 rc_uint_type l = (yyvsp[(1) - (2)].ss).length + (yyvsp[(2) - (2)].ss).length; 4142 char *h = (char *) res_alloc (l); 4143 memcpy (h, (yyvsp[(1) - (2)].ss).s, (yyvsp[(1) - (2)].ss).length); 4144 memcpy (h + (yyvsp[(1) - (2)].ss).length, (yyvsp[(2) - (2)].ss).s, (yyvsp[(2) - (2)].ss).length); 4145 (yyval.ss).s = h; 4146 (yyval.ss).length = l; 4147 } 4148 break; 4149 4150 case 240: 4151 #line 1776 "rcparse.y" 4152 { 4153 (yyval.suni) = (yyvsp[(1) - (1)].suni); 4154 } 4155 break; 4156 4157 case 241: 4158 #line 1780 "rcparse.y" 4159 { 4160 rc_uint_type l = (yyvsp[(1) - (2)].suni).length + (yyvsp[(2) - (2)].suni).length; 4161 unichar *h = (unichar *) res_alloc (l * sizeof (unichar)); 4162 memcpy (h, (yyvsp[(1) - (2)].suni).s, (yyvsp[(1) - (2)].suni).length * sizeof (unichar)); 4163 memcpy (h + (yyvsp[(1) - (2)].suni).length, (yyvsp[(2) - (2)].suni).s, (yyvsp[(2) - (2)].suni).length * sizeof (unichar)); 4164 (yyval.suni).s = h; 4165 (yyval.suni).length = l; 4166 } 4167 break; 4168 4169 case 242: 4170 #line 1802 "rcparse.y" 4171 { 4172 style |= (yyvsp[(1) - (1)].il); 4173 } 4174 break; 4175 4176 case 243: 4177 #line 1806 "rcparse.y" 4178 { 4179 style &=~ (yyvsp[(2) - (2)].il); 4180 } 4181 break; 4182 4183 case 244: 4184 #line 1810 "rcparse.y" 4185 { 4186 style |= (yyvsp[(3) - (3)].il); 4187 } 4188 break; 4189 4190 case 245: 4191 #line 1814 "rcparse.y" 4192 { 4193 style &=~ (yyvsp[(4) - (4)].il); 4194 } 4195 break; 4196 4197 case 246: 4198 #line 1821 "rcparse.y" 4199 { 4200 (yyval.il) = (yyvsp[(1) - (1)].i).val; 4201 } 4202 break; 4203 4204 case 247: 4205 #line 1825 "rcparse.y" 4206 { 4207 (yyval.il) = (yyvsp[(2) - (3)].il); 4208 } 4209 break; 4210 4211 case 248: 4212 #line 1834 "rcparse.y" 4213 { 4214 (yyval.il) = 0; 4215 } 4216 break; 4217 4218 case 249: 4219 #line 1838 "rcparse.y" 4220 { 4221 (yyval.il) = (yyvsp[(1) - (1)].il); 4222 } 4223 break; 4224 4225 case 250: 4226 #line 1847 "rcparse.y" 4227 { 4228 (yyval.il) = (yyvsp[(2) - (2)].il); 4229 } 4230 break; 4231 4232 case 251: 4233 #line 1856 "rcparse.y" 4234 { 4235 (yyval.il) = (yyvsp[(1) - (1)].i).val; 4236 } 4237 break; 4238 4239 case 252: 4240 #line 1865 "rcparse.y" 4241 { 4242 (yyval.i) = (yyvsp[(1) - (1)].i); 4243 } 4244 break; 4245 4246 case 253: 4247 #line 1869 "rcparse.y" 4248 { 4249 (yyval.i) = (yyvsp[(2) - (3)].i); 4250 } 4251 break; 4252 4253 case 254: 4254 #line 1873 "rcparse.y" 4255 { 4256 (yyval.i).val = ~ (yyvsp[(2) - (2)].i).val; 4257 (yyval.i).dword = (yyvsp[(2) - (2)].i).dword; 4258 } 4259 break; 4260 4261 case 255: 4262 #line 1878 "rcparse.y" 4263 { 4264 (yyval.i).val = - (yyvsp[(2) - (2)].i).val; 4265 (yyval.i).dword = (yyvsp[(2) - (2)].i).dword; 4266 } 4267 break; 4268 4269 case 256: 4270 #line 1883 "rcparse.y" 4271 { 4272 (yyval.i).val = (yyvsp[(1) - (3)].i).val * (yyvsp[(3) - (3)].i).val; 4273 (yyval.i).dword = (yyvsp[(1) - (3)].i).dword || (yyvsp[(3) - (3)].i).dword; 4274 } 4275 break; 4276 4277 case 257: 4278 #line 1888 "rcparse.y" 4279 { 4280 (yyval.i).val = (yyvsp[(1) - (3)].i).val / (yyvsp[(3) - (3)].i).val; 4281 (yyval.i).dword = (yyvsp[(1) - (3)].i).dword || (yyvsp[(3) - (3)].i).dword; 4282 } 4283 break; 4284 4285 case 258: 4286 #line 1893 "rcparse.y" 4287 { 4288 (yyval.i).val = (yyvsp[(1) - (3)].i).val % (yyvsp[(3) - (3)].i).val; 4289 (yyval.i).dword = (yyvsp[(1) - (3)].i).dword || (yyvsp[(3) - (3)].i).dword; 4290 } 4291 break; 4292 4293 case 259: 4294 #line 1898 "rcparse.y" 4295 { 4296 (yyval.i).val = (yyvsp[(1) - (3)].i).val + (yyvsp[(3) - (3)].i).val; 4297 (yyval.i).dword = (yyvsp[(1) - (3)].i).dword || (yyvsp[(3) - (3)].i).dword; 4298 } 4299 break; 4300 4301 case 260: 4302 #line 1903 "rcparse.y" 4303 { 4304 (yyval.i).val = (yyvsp[(1) - (3)].i).val - (yyvsp[(3) - (3)].i).val; 4305 (yyval.i).dword = (yyvsp[(1) - (3)].i).dword || (yyvsp[(3) - (3)].i).dword; 4306 } 4307 break; 4308 4309 case 261: 4310 #line 1908 "rcparse.y" 4311 { 4312 (yyval.i).val = (yyvsp[(1) - (3)].i).val & (yyvsp[(3) - (3)].i).val; 4313 (yyval.i).dword = (yyvsp[(1) - (3)].i).dword || (yyvsp[(3) - (3)].i).dword; 4314 } 4315 break; 4316 4317 case 262: 4318 #line 1913 "rcparse.y" 4319 { 4320 (yyval.i).val = (yyvsp[(1) - (3)].i).val ^ (yyvsp[(3) - (3)].i).val; 4321 (yyval.i).dword = (yyvsp[(1) - (3)].i).dword || (yyvsp[(3) - (3)].i).dword; 4322 } 4323 break; 4324 4325 case 263: 4326 #line 1918 "rcparse.y" 4327 { 4328 (yyval.i).val = (yyvsp[(1) - (3)].i).val | (yyvsp[(3) - (3)].i).val; 4329 (yyval.i).dword = (yyvsp[(1) - (3)].i).dword || (yyvsp[(3) - (3)].i).dword; 4330 } 4331 break; 4332 4333 case 264: 4334 #line 1929 "rcparse.y" 4335 { 4336 (yyval.il) = (yyvsp[(2) - (2)].il); 4337 } 4338 break; 4339 4340 case 265: 4341 #line 1938 "rcparse.y" 4342 { 4343 (yyval.il) = (yyvsp[(1) - (1)].i).val; 4344 } 4345 break; 4346 4347 case 266: 4348 #line 1949 "rcparse.y" 4349 { 4350 (yyval.i) = (yyvsp[(1) - (1)].i); 4351 } 4352 break; 4353 4354 case 267: 4355 #line 1953 "rcparse.y" 4356 { 4357 (yyval.i) = (yyvsp[(2) - (3)].i); 4358 } 4359 break; 4360 4361 case 268: 4362 #line 1957 "rcparse.y" 4363 { 4364 (yyval.i).val = ~ (yyvsp[(2) - (2)].i).val; 4365 (yyval.i).dword = (yyvsp[(2) - (2)].i).dword; 4366 } 4367 break; 4368 4369 case 269: 4370 #line 1962 "rcparse.y" 4371 { 4372 (yyval.i).val = (yyvsp[(1) - (3)].i).val * (yyvsp[(3) - (3)].i).val; 4373 (yyval.i).dword = (yyvsp[(1) - (3)].i).dword || (yyvsp[(3) - (3)].i).dword; 4374 } 4375 break; 4376 4377 case 270: 4378 #line 1967 "rcparse.y" 4379 { 4380 (yyval.i).val = (yyvsp[(1) - (3)].i).val / (yyvsp[(3) - (3)].i).val; 4381 (yyval.i).dword = (yyvsp[(1) - (3)].i).dword || (yyvsp[(3) - (3)].i).dword; 4382 } 4383 break; 4384 4385 case 271: 4386 #line 1972 "rcparse.y" 4387 { 4388 (yyval.i).val = (yyvsp[(1) - (3)].i).val % (yyvsp[(3) - (3)].i).val; 4389 (yyval.i).dword = (yyvsp[(1) - (3)].i).dword || (yyvsp[(3) - (3)].i).dword; 4390 } 4391 break; 4392 4393 case 272: 4394 #line 1977 "rcparse.y" 4395 { 4396 (yyval.i).val = (yyvsp[(1) - (3)].i).val + (yyvsp[(3) - (3)].i).val; 4397 (yyval.i).dword = (yyvsp[(1) - (3)].i).dword || (yyvsp[(3) - (3)].i).dword; 4398 } 4399 break; 4400 4401 case 273: 4402 #line 1982 "rcparse.y" 4403 { 4404 (yyval.i).val = (yyvsp[(1) - (3)].i).val - (yyvsp[(3) - (3)].i).val; 4405 (yyval.i).dword = (yyvsp[(1) - (3)].i).dword || (yyvsp[(3) - (3)].i).dword; 4406 } 4407 break; 4408 4409 case 274: 4410 #line 1987 "rcparse.y" 4411 { 4412 (yyval.i).val = (yyvsp[(1) - (3)].i).val & (yyvsp[(3) - (3)].i).val; 4413 (yyval.i).dword = (yyvsp[(1) - (3)].i).dword || (yyvsp[(3) - (3)].i).dword; 4414 } 4415 break; 4416 4417 case 275: 4418 #line 1992 "rcparse.y" 4419 { 4420 (yyval.i).val = (yyvsp[(1) - (3)].i).val ^ (yyvsp[(3) - (3)].i).val; 4421 (yyval.i).dword = (yyvsp[(1) - (3)].i).dword || (yyvsp[(3) - (3)].i).dword; 4422 } 4423 break; 4424 4425 case 276: 4426 #line 1997 "rcparse.y" 4427 { 4428 (yyval.i).val = (yyvsp[(1) - (3)].i).val | (yyvsp[(3) - (3)].i).val; 4429 (yyval.i).dword = (yyvsp[(1) - (3)].i).dword || (yyvsp[(3) - (3)].i).dword; 4430 } 4431 break; 4432 4433 4434 /* Line 1267 of yacc.c. */ 4435 #line 4436 "rcparse.c" 4436 default: break; 4437 } 4438 YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc); 4439 4440 YYPOPSTACK (yylen); 4441 yylen = 0; 4442 YY_STACK_PRINT (yyss, yyssp); 4443 4444 *++yyvsp = yyval; 4445 4446 4447 /* Now `shift' the result of the reduction. Determine what state 4448 that goes to, based on the state we popped back to and the rule 4449 number reduced by. */ 4450 4451 yyn = yyr1[yyn]; 4452 4453 yystate = yypgoto[yyn - YYNTOKENS] + *yyssp; 4454 if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp) 4455 yystate = yytable[yystate]; 4456 else 4457 yystate = yydefgoto[yyn - YYNTOKENS]; 4458 4459 goto yynewstate; 4460 4461 4462 /*------------------------------------. 4463 | yyerrlab -- here on detecting error | 4464 `------------------------------------*/ 4465 yyerrlab: 4466 /* If not already recovering from an error, report this error. */ 4467 if (!yyerrstatus) 4468 { 4469 ++yynerrs; 4470 #if ! YYERROR_VERBOSE 4471 yyerror (YY_("syntax error")); 4472 #else 4473 { 4474 YYSIZE_T yysize = yysyntax_error (0, yystate, yychar); 4475 if (yymsg_alloc < yysize && yymsg_alloc < YYSTACK_ALLOC_MAXIMUM) 4476 { 4477 YYSIZE_T yyalloc = 2 * yysize; 4478 if (! (yysize <= yyalloc && yyalloc <= YYSTACK_ALLOC_MAXIMUM)) 4479 yyalloc = YYSTACK_ALLOC_MAXIMUM; 4480 if (yymsg != yymsgbuf) 4481 YYSTACK_FREE (yymsg); 4482 yymsg = (char *) YYSTACK_ALLOC (yyalloc); 4483 if (yymsg) 4484 yymsg_alloc = yyalloc; 4485 else 4486 { 4487 yymsg = yymsgbuf; 4488 yymsg_alloc = sizeof yymsgbuf; 4489 } 4490 } 4491 4492 if (0 < yysize && yysize <= yymsg_alloc) 4493 { 4494 (void) yysyntax_error (yymsg, yystate, yychar); 4495 yyerror (yymsg); 4496 } 4497 else 4498 { 4499 yyerror (YY_("syntax error")); 4500 if (yysize != 0) 4501 goto yyexhaustedlab; 4502 } 4503 } 4504 #endif 4505 } 4506 4507 4508 4509 if (yyerrstatus == 3) 4510 { 4511 /* If just tried and failed to reuse look-ahead token after an 4512 error, discard it. */ 4513 4514 if (yychar <= YYEOF) 4515 { 4516 /* Return failure if at end of input. */ 4517 if (yychar == YYEOF) 4518 YYABORT; 4519 } 4520 else 4521 { 4522 yydestruct ("Error: discarding", 4523 yytoken, &yylval); 4524 yychar = YYEMPTY; 4525 } 4526 } 4527 4528 /* Else will try to reuse look-ahead token after shifting the error 4529 token. */ 4530 goto yyerrlab1; 4531 4532 4533 /*---------------------------------------------------. 4534 | yyerrorlab -- error raised explicitly by YYERROR. | 4535 `---------------------------------------------------*/ 4536 yyerrorlab: 4537 4538 /* Pacify compilers like GCC when the user code never invokes 4539 YYERROR and the label yyerrorlab therefore never appears in user 4540 code. */ 4541 if (/*CONSTCOND*/ 0) 4542 goto yyerrorlab; 4543 4544 /* Do not reclaim the symbols of the rule which action triggered 4545 this YYERROR. */ 4546 YYPOPSTACK (yylen); 4547 yylen = 0; 4548 YY_STACK_PRINT (yyss, yyssp); 4549 yystate = *yyssp; 4550 goto yyerrlab1; 4551 4552 4553 /*-------------------------------------------------------------. 4554 | yyerrlab1 -- common code for both syntax error and YYERROR. | 4555 `-------------------------------------------------------------*/ 4556 yyerrlab1: 4557 yyerrstatus = 3; /* Each real token shifted decrements this. */ 4558 4559 for (;;) 4560 { 4561 yyn = yypact[yystate]; 4562 if (yyn != YYPACT_NINF) 4563 { 4564 yyn += YYTERROR; 4565 if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR) 4566 { 4567 yyn = yytable[yyn]; 4568 if (0 < yyn) 4569 break; 4570 } 4571 } 4572 4573 /* Pop the current state because it cannot handle the error token. */ 4574 if (yyssp == yyss) 4575 YYABORT; 4576 4577 4578 yydestruct ("Error: popping", 4579 yystos[yystate], yyvsp); 4580 YYPOPSTACK (1); 4581 yystate = *yyssp; 4582 YY_STACK_PRINT (yyss, yyssp); 4583 } 4584 4585 if (yyn == YYFINAL) 4586 YYACCEPT; 4587 4588 *++yyvsp = yylval; 4589 4590 4591 /* Shift the error token. */ 4592 YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp); 4593 4594 yystate = yyn; 4595 goto yynewstate; 4596 4597 4598 /*-------------------------------------. 4599 | yyacceptlab -- YYACCEPT comes here. | 4600 `-------------------------------------*/ 4601 yyacceptlab: 4602 yyresult = 0; 4603 goto yyreturn; 4604 4605 /*-----------------------------------. 4606 | yyabortlab -- YYABORT comes here. | 4607 `-----------------------------------*/ 4608 yyabortlab: 4609 yyresult = 1; 4610 goto yyreturn; 4611 4612 #ifndef yyoverflow 4613 /*-------------------------------------------------. 4614 | yyexhaustedlab -- memory exhaustion comes here. | 4615 `-------------------------------------------------*/ 4616 yyexhaustedlab: 4617 yyerror (YY_("memory exhausted")); 4618 yyresult = 2; 4619 /* Fall through. */ 4620 #endif 4621 4622 yyreturn: 4623 if (yychar != YYEOF && yychar != YYEMPTY) 4624 yydestruct ("Cleanup: discarding lookahead", 4625 yytoken, &yylval); 4626 /* Do not reclaim the symbols of the rule which action triggered 4627 this YYABORT or YYACCEPT. */ 4628 YYPOPSTACK (yylen); 4629 YY_STACK_PRINT (yyss, yyssp); 4630 while (yyssp != yyss) 4631 { 4632 yydestruct ("Cleanup: popping", 4633 yystos[*yyssp], yyvsp); 4634 YYPOPSTACK (1); 4635 } 4636 #ifndef yyoverflow 4637 if (yyss != yyssa) 4638 YYSTACK_FREE (yyss); 4639 #endif 4640 #if YYERROR_VERBOSE 4641 if (yymsg != yymsgbuf) 4642 YYSTACK_FREE (yymsg); 4643 #endif 4644 /* Make sure YYID is used. */ 4645 return YYID (yyresult); 4646 } 4647 4648 4649 #line 2003 "rcparse.y" 4650 4651 4652 /* Set the language from the command line. */ 4653 4654 void 4655 rcparse_set_language (int lang) 4656 { 4657 language = lang; 4658 } 4659 4660