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