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 *
yysymbol_name(yysymbol_kind_t yysymbol)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
yy_symbol_value_print(FILE * yyo,yysymbol_kind_t yykind,YYSTYPE const * const yyvaluep)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
yy_symbol_print(FILE * yyo,yysymbol_kind_t yykind,YYSTYPE const * const yyvaluep)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
yy_stack_print(yy_state_t * yybottom,yy_state_t * yytop)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
yy_reduce_print(yy_state_t * yyssp,YYSTYPE * yyvsp,int yyrule)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
yydestruct(const char * yymsg,yysymbol_kind_t yykind,YYSTYPE * yyvaluep)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
yyparse(void)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
rcparse_set_language(int lang)4793 rcparse_set_language (int lang)
4794 {
4795 language = lang;
4796 }
4797