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