xref: /netbsd-src/external/gpl3/binutils.old/dist/binutils/rcparse.c (revision 53b02e147d4ed531c0d2a5ca9b3e8026ba3e99b5)
1 /* A Bison parser, made by GNU Bison 3.0.4.  */
2 
3 /* Bison implementation for Yacc-like parsers in C
4 
5    Copyright (C) 1984, 1989-1990, 2000-2015 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.4"
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-2018 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       YYCASE_(0, YY_("syntax error"));
1655       YYCASE_(1, YY_("syntax error, unexpected %s"));
1656       YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s"));
1657       YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s"));
1658       YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s"));
1659       YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"));
1660 # undef YYCASE_
1661     }
1662 
1663   {
1664     YYSIZE_T yysize1 = yysize + yystrlen (yyformat);
1665     if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
1666       return 2;
1667     yysize = yysize1;
1668   }
1669 
1670   if (*yymsg_alloc < yysize)
1671     {
1672       *yymsg_alloc = 2 * yysize;
1673       if (! (yysize <= *yymsg_alloc
1674              && *yymsg_alloc <= YYSTACK_ALLOC_MAXIMUM))
1675         *yymsg_alloc = YYSTACK_ALLOC_MAXIMUM;
1676       return 1;
1677     }
1678 
1679   /* Avoid sprintf, as that infringes on the user's name space.
1680      Don't have undefined behavior even if the translation
1681      produced a string with the wrong number of "%s"s.  */
1682   {
1683     char *yyp = *yymsg;
1684     int yyi = 0;
1685     while ((*yyp = *yyformat) != '\0')
1686       if (*yyp == '%' && yyformat[1] == 's' && yyi < yycount)
1687         {
1688           yyp += yytnamerr (yyp, yyarg[yyi++]);
1689           yyformat += 2;
1690         }
1691       else
1692         {
1693           yyp++;
1694           yyformat++;
1695         }
1696   }
1697   return 0;
1698 }
1699 #endif /* YYERROR_VERBOSE */
1700 
1701 /*-----------------------------------------------.
1702 | Release the memory associated to this symbol.  |
1703 `-----------------------------------------------*/
1704 
1705 static void
1706 yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep)
1707 {
1708   YYUSE (yyvaluep);
1709   if (!yymsg)
1710     yymsg = "Deleting";
1711   YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
1712 
1713   YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
1714   YYUSE (yytype);
1715   YY_IGNORE_MAYBE_UNINITIALIZED_END
1716 }
1717 
1718 
1719 
1720 
1721 /* The lookahead symbol.  */
1722 int yychar;
1723 
1724 /* The semantic value of the lookahead symbol.  */
1725 YYSTYPE yylval;
1726 /* Number of syntax errors so far.  */
1727 int yynerrs;
1728 
1729 
1730 /*----------.
1731 | yyparse.  |
1732 `----------*/
1733 
1734 int
1735 yyparse (void)
1736 {
1737     int yystate;
1738     /* Number of tokens to shift before error messages enabled.  */
1739     int yyerrstatus;
1740 
1741     /* The stacks and their tools:
1742        'yyss': related to states.
1743        'yyvs': related to semantic values.
1744 
1745        Refer to the stacks through separate pointers, to allow yyoverflow
1746        to reallocate them elsewhere.  */
1747 
1748     /* The state stack.  */
1749     yytype_int16 yyssa[YYINITDEPTH];
1750     yytype_int16 *yyss;
1751     yytype_int16 *yyssp;
1752 
1753     /* The semantic value stack.  */
1754     YYSTYPE yyvsa[YYINITDEPTH];
1755     YYSTYPE *yyvs;
1756     YYSTYPE *yyvsp;
1757 
1758     YYSIZE_T yystacksize;
1759 
1760   int yyn;
1761   int yyresult;
1762   /* Lookahead token as an internal (translated) token number.  */
1763   int yytoken = 0;
1764   /* The variables used to return semantic value and location from the
1765      action routines.  */
1766   YYSTYPE yyval;
1767 
1768 #if YYERROR_VERBOSE
1769   /* Buffer for error messages, and its allocated size.  */
1770   char yymsgbuf[128];
1771   char *yymsg = yymsgbuf;
1772   YYSIZE_T yymsg_alloc = sizeof yymsgbuf;
1773 #endif
1774 
1775 #define YYPOPSTACK(N)   (yyvsp -= (N), yyssp -= (N))
1776 
1777   /* The number of symbols on the RHS of the reduced rule.
1778      Keep to zero when no symbol should be popped.  */
1779   int yylen = 0;
1780 
1781   yyssp = yyss = yyssa;
1782   yyvsp = yyvs = yyvsa;
1783   yystacksize = YYINITDEPTH;
1784 
1785   YYDPRINTF ((stderr, "Starting parse\n"));
1786 
1787   yystate = 0;
1788   yyerrstatus = 0;
1789   yynerrs = 0;
1790   yychar = YYEMPTY; /* Cause a token to be read.  */
1791   goto yysetstate;
1792 
1793 /*------------------------------------------------------------.
1794 | yynewstate -- Push a new state, which is found in yystate.  |
1795 `------------------------------------------------------------*/
1796  yynewstate:
1797   /* In all cases, when you get here, the value and location stacks
1798      have just been pushed.  So pushing a state here evens the stacks.  */
1799   yyssp++;
1800 
1801  yysetstate:
1802   *yyssp = yystate;
1803 
1804   if (yyss + yystacksize - 1 <= yyssp)
1805     {
1806       /* Get the current used size of the three stacks, in elements.  */
1807       YYSIZE_T yysize = yyssp - yyss + 1;
1808 
1809 #ifdef yyoverflow
1810       {
1811         /* Give user a chance to reallocate the stack.  Use copies of
1812            these so that the &'s don't force the real ones into
1813            memory.  */
1814         YYSTYPE *yyvs1 = yyvs;
1815         yytype_int16 *yyss1 = yyss;
1816 
1817         /* Each stack pointer address is followed by the size of the
1818            data in use in that stack, in bytes.  This used to be a
1819            conditional around just the two extra args, but that might
1820            be undefined if yyoverflow is a macro.  */
1821         yyoverflow (YY_("memory exhausted"),
1822                     &yyss1, yysize * sizeof (*yyssp),
1823                     &yyvs1, yysize * sizeof (*yyvsp),
1824                     &yystacksize);
1825 
1826         yyss = yyss1;
1827         yyvs = yyvs1;
1828       }
1829 #else /* no yyoverflow */
1830 # ifndef YYSTACK_RELOCATE
1831       goto yyexhaustedlab;
1832 # else
1833       /* Extend the stack our own way.  */
1834       if (YYMAXDEPTH <= yystacksize)
1835         goto yyexhaustedlab;
1836       yystacksize *= 2;
1837       if (YYMAXDEPTH < yystacksize)
1838         yystacksize = YYMAXDEPTH;
1839 
1840       {
1841         yytype_int16 *yyss1 = yyss;
1842         union yyalloc *yyptr =
1843           (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
1844         if (! yyptr)
1845           goto yyexhaustedlab;
1846         YYSTACK_RELOCATE (yyss_alloc, yyss);
1847         YYSTACK_RELOCATE (yyvs_alloc, yyvs);
1848 #  undef YYSTACK_RELOCATE
1849         if (yyss1 != yyssa)
1850           YYSTACK_FREE (yyss1);
1851       }
1852 # endif
1853 #endif /* no yyoverflow */
1854 
1855       yyssp = yyss + yysize - 1;
1856       yyvsp = yyvs + yysize - 1;
1857 
1858       YYDPRINTF ((stderr, "Stack size increased to %lu\n",
1859                   (unsigned long int) yystacksize));
1860 
1861       if (yyss + yystacksize - 1 <= yyssp)
1862         YYABORT;
1863     }
1864 
1865   YYDPRINTF ((stderr, "Entering state %d\n", yystate));
1866 
1867   if (yystate == YYFINAL)
1868     YYACCEPT;
1869 
1870   goto yybackup;
1871 
1872 /*-----------.
1873 | yybackup.  |
1874 `-----------*/
1875 yybackup:
1876 
1877   /* Do appropriate processing given the current state.  Read a
1878      lookahead token if we need one and don't already have one.  */
1879 
1880   /* First try to decide what to do without reference to lookahead token.  */
1881   yyn = yypact[yystate];
1882   if (yypact_value_is_default (yyn))
1883     goto yydefault;
1884 
1885   /* Not known => get a lookahead token if don't already have one.  */
1886 
1887   /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol.  */
1888   if (yychar == YYEMPTY)
1889     {
1890       YYDPRINTF ((stderr, "Reading a token: "));
1891       yychar = yylex ();
1892     }
1893 
1894   if (yychar <= YYEOF)
1895     {
1896       yychar = yytoken = YYEOF;
1897       YYDPRINTF ((stderr, "Now at end of input.\n"));
1898     }
1899   else
1900     {
1901       yytoken = YYTRANSLATE (yychar);
1902       YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
1903     }
1904 
1905   /* If the proper action on seeing token YYTOKEN is to reduce or to
1906      detect an error, take that action.  */
1907   yyn += yytoken;
1908   if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
1909     goto yydefault;
1910   yyn = yytable[yyn];
1911   if (yyn <= 0)
1912     {
1913       if (yytable_value_is_error (yyn))
1914         goto yyerrlab;
1915       yyn = -yyn;
1916       goto yyreduce;
1917     }
1918 
1919   /* Count tokens shifted since error; after three, turn off error
1920      status.  */
1921   if (yyerrstatus)
1922     yyerrstatus--;
1923 
1924   /* Shift the lookahead token.  */
1925   YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
1926 
1927   /* Discard the shifted token.  */
1928   yychar = YYEMPTY;
1929 
1930   yystate = yyn;
1931   YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
1932   *++yyvsp = yylval;
1933   YY_IGNORE_MAYBE_UNINITIALIZED_END
1934 
1935   goto yynewstate;
1936 
1937 
1938 /*-----------------------------------------------------------.
1939 | yydefault -- do the default action for the current state.  |
1940 `-----------------------------------------------------------*/
1941 yydefault:
1942   yyn = yydefact[yystate];
1943   if (yyn == 0)
1944     goto yyerrlab;
1945   goto yyreduce;
1946 
1947 
1948 /*-----------------------------.
1949 | yyreduce -- Do a reduction.  |
1950 `-----------------------------*/
1951 yyreduce:
1952   /* yyn is the number of a rule to reduce with.  */
1953   yylen = yyr2[yyn];
1954 
1955   /* If YYLEN is nonzero, implement the default value of the action:
1956      '$$ = $1'.
1957 
1958      Otherwise, the following line sets YYVAL to garbage.
1959      This behavior is undocumented and Bison
1960      users should not rely upon it.  Assigning to YYVAL
1961      unconditionally makes the parser a bit smaller, and it avoids a
1962      GCC warning that YYVAL may be used uninitialized.  */
1963   yyval = yyvsp[1-yylen];
1964 
1965 
1966   YY_REDUCE_PRINT (yyn);
1967   switch (yyn)
1968     {
1969         case 18:
1970 #line 201 "rcparse.y" /* yacc.c:1646  */
1971     {
1972 	    define_accelerator ((yyvsp[-5].id), &(yyvsp[-3].res_info), (yyvsp[-1].pacc));
1973 	    if (yychar != YYEMPTY)
1974 	      YYERROR;
1975 	    rcparse_discard_strings ();
1976 	  }
1977 #line 1978 "rcparse.c" /* yacc.c:1646  */
1978     break;
1979 
1980   case 19:
1981 #line 211 "rcparse.y" /* yacc.c:1646  */
1982     {
1983 	    (yyval.pacc) = NULL;
1984 	  }
1985 #line 1986 "rcparse.c" /* yacc.c:1646  */
1986     break;
1987 
1988   case 20:
1989 #line 215 "rcparse.y" /* yacc.c:1646  */
1990     {
1991 	    rc_accelerator *a;
1992 
1993 	    a = (rc_accelerator *) res_alloc (sizeof *a);
1994 	    *a = (yyvsp[0].acc);
1995 	    if ((yyvsp[-1].pacc) == NULL)
1996 	      (yyval.pacc) = a;
1997 	    else
1998 	      {
1999 		rc_accelerator **pp;
2000 
2001 		for (pp = &(yyvsp[-1].pacc)->next; *pp != NULL; pp = &(*pp)->next)
2002 		  ;
2003 		*pp = a;
2004 		(yyval.pacc) = (yyvsp[-1].pacc);
2005 	      }
2006 	  }
2007 #line 2008 "rcparse.c" /* yacc.c:1646  */
2008     break;
2009 
2010   case 21:
2011 #line 236 "rcparse.y" /* yacc.c:1646  */
2012     {
2013 	    (yyval.acc) = (yyvsp[-1].acc);
2014 	    (yyval.acc).id = (yyvsp[0].il);
2015 	  }
2016 #line 2017 "rcparse.c" /* yacc.c:1646  */
2017     break;
2018 
2019   case 22:
2020 #line 241 "rcparse.y" /* yacc.c:1646  */
2021     {
2022 	    (yyval.acc) = (yyvsp[-3].acc);
2023 	    (yyval.acc).id = (yyvsp[-2].il);
2024 	    (yyval.acc).flags |= (yyvsp[0].is);
2025 	    if (((yyval.acc).flags & ACC_VIRTKEY) == 0
2026 		&& ((yyval.acc).flags & (ACC_SHIFT | ACC_CONTROL)) != 0)
2027 	      rcparse_warning (_("inappropriate modifiers for non-VIRTKEY"));
2028 	  }
2029 #line 2030 "rcparse.c" /* yacc.c:1646  */
2030     break;
2031 
2032   case 23:
2033 #line 253 "rcparse.y" /* yacc.c:1646  */
2034     {
2035 	    const char *s = (yyvsp[0].s);
2036 	    char ch;
2037 
2038 	    (yyval.acc).next = NULL;
2039 	    (yyval.acc).id = 0;
2040 	    ch = *s;
2041 	    if (ch != '^')
2042 	      (yyval.acc).flags = 0;
2043 	    else
2044 	      {
2045 		(yyval.acc).flags = ACC_CONTROL | ACC_VIRTKEY;
2046 		++s;
2047 		ch = TOUPPER (s[0]);
2048 	      }
2049 	    (yyval.acc).key = ch;
2050 	    if (s[1] != '\0')
2051 	      rcparse_warning (_("accelerator should only be one character"));
2052 	  }
2053 #line 2054 "rcparse.c" /* yacc.c:1646  */
2054     break;
2055 
2056   case 24:
2057 #line 273 "rcparse.y" /* yacc.c:1646  */
2058     {
2059 	    (yyval.acc).next = NULL;
2060 	    (yyval.acc).flags = 0;
2061 	    (yyval.acc).id = 0;
2062 	    (yyval.acc).key = (yyvsp[0].il);
2063 	  }
2064 #line 2065 "rcparse.c" /* yacc.c:1646  */
2065     break;
2066 
2067   case 25:
2068 #line 283 "rcparse.y" /* yacc.c:1646  */
2069     {
2070 	    (yyval.is) = (yyvsp[0].is);
2071 	  }
2072 #line 2073 "rcparse.c" /* yacc.c:1646  */
2073     break;
2074 
2075   case 26:
2076 #line 287 "rcparse.y" /* yacc.c:1646  */
2077     {
2078 	    (yyval.is) = (yyvsp[-2].is) | (yyvsp[0].is);
2079 	  }
2080 #line 2081 "rcparse.c" /* yacc.c:1646  */
2081     break;
2082 
2083   case 27:
2084 #line 292 "rcparse.y" /* yacc.c:1646  */
2085     {
2086 	    (yyval.is) = (yyvsp[-1].is) | (yyvsp[0].is);
2087 	  }
2088 #line 2089 "rcparse.c" /* yacc.c:1646  */
2089     break;
2090 
2091   case 28:
2092 #line 299 "rcparse.y" /* yacc.c:1646  */
2093     {
2094 	    (yyval.is) = ACC_VIRTKEY;
2095 	  }
2096 #line 2097 "rcparse.c" /* yacc.c:1646  */
2097     break;
2098 
2099   case 29:
2100 #line 303 "rcparse.y" /* yacc.c:1646  */
2101     {
2102 	    /* This is just the absence of VIRTKEY.  */
2103 	    (yyval.is) = 0;
2104 	  }
2105 #line 2106 "rcparse.c" /* yacc.c:1646  */
2106     break;
2107 
2108   case 30:
2109 #line 308 "rcparse.y" /* yacc.c:1646  */
2110     {
2111 	    (yyval.is) = ACC_NOINVERT;
2112 	  }
2113 #line 2114 "rcparse.c" /* yacc.c:1646  */
2114     break;
2115 
2116   case 31:
2117 #line 312 "rcparse.y" /* yacc.c:1646  */
2118     {
2119 	    (yyval.is) = ACC_SHIFT;
2120 	  }
2121 #line 2122 "rcparse.c" /* yacc.c:1646  */
2122     break;
2123 
2124   case 32:
2125 #line 316 "rcparse.y" /* yacc.c:1646  */
2126     {
2127 	    (yyval.is) = ACC_CONTROL;
2128 	  }
2129 #line 2130 "rcparse.c" /* yacc.c:1646  */
2130     break;
2131 
2132   case 33:
2133 #line 320 "rcparse.y" /* yacc.c:1646  */
2134     {
2135 	    (yyval.is) = ACC_ALT;
2136 	  }
2137 #line 2138 "rcparse.c" /* yacc.c:1646  */
2138     break;
2139 
2140   case 34:
2141 #line 329 "rcparse.y" /* yacc.c:1646  */
2142     {
2143 	    define_bitmap ((yyvsp[-3].id), &(yyvsp[-1].res_info), (yyvsp[0].s));
2144 	    if (yychar != YYEMPTY)
2145 	      YYERROR;
2146 	    rcparse_discard_strings ();
2147 	  }
2148 #line 2149 "rcparse.c" /* yacc.c:1646  */
2149     break;
2150 
2151   case 35:
2152 #line 341 "rcparse.y" /* yacc.c:1646  */
2153     {
2154 	    define_cursor ((yyvsp[-3].id), &(yyvsp[-1].res_info), (yyvsp[0].s));
2155 	    if (yychar != YYEMPTY)
2156 	      YYERROR;
2157 	    rcparse_discard_strings ();
2158 	  }
2159 #line 2160 "rcparse.c" /* yacc.c:1646  */
2160     break;
2161 
2162   case 36:
2163 #line 354 "rcparse.y" /* yacc.c:1646  */
2164     {
2165 	      memset (&dialog, 0, sizeof dialog);
2166 	      dialog.x = (yyvsp[-3].il);
2167 	      dialog.y = (yyvsp[-2].il);
2168 	      dialog.width = (yyvsp[-1].il);
2169 	      dialog.height = (yyvsp[0].il);
2170 	      dialog.style = WS_POPUP | WS_BORDER | WS_SYSMENU;
2171 	      dialog.exstyle = (yyvsp[-4].il);
2172 	      dialog.menu.named = 1;
2173 	      dialog.class.named = 1;
2174 	      dialog.font = NULL;
2175 	      dialog.ex = NULL;
2176 	      dialog.controls = NULL;
2177 	      sub_res_info = (yyvsp[-5].res_info);
2178 	      style = 0;
2179 	    }
2180 #line 2181 "rcparse.c" /* yacc.c:1646  */
2181     break;
2182 
2183   case 37:
2184 #line 371 "rcparse.y" /* yacc.c:1646  */
2185     {
2186 	    define_dialog ((yyvsp[-12].id), &sub_res_info, &dialog);
2187 	    if (yychar != YYEMPTY)
2188 	      YYERROR;
2189 	    rcparse_discard_strings ();
2190 	  }
2191 #line 2192 "rcparse.c" /* yacc.c:1646  */
2192     break;
2193 
2194   case 38:
2195 #line 379 "rcparse.y" /* yacc.c:1646  */
2196     {
2197 	      memset (&dialog, 0, sizeof dialog);
2198 	      dialog.x = (yyvsp[-3].il);
2199 	      dialog.y = (yyvsp[-2].il);
2200 	      dialog.width = (yyvsp[-1].il);
2201 	      dialog.height = (yyvsp[0].il);
2202 	      dialog.style = WS_POPUP | WS_BORDER | WS_SYSMENU;
2203 	      dialog.exstyle = (yyvsp[-4].il);
2204 	      dialog.menu.named = 1;
2205 	      dialog.class.named = 1;
2206 	      dialog.font = NULL;
2207 	      dialog.ex = ((rc_dialog_ex *)
2208 			   res_alloc (sizeof (rc_dialog_ex)));
2209 	      memset (dialog.ex, 0, sizeof (rc_dialog_ex));
2210 	      dialog.controls = NULL;
2211 	      sub_res_info = (yyvsp[-5].res_info);
2212 	      style = 0;
2213 	    }
2214 #line 2215 "rcparse.c" /* yacc.c:1646  */
2215     break;
2216 
2217   case 39:
2218 #line 398 "rcparse.y" /* yacc.c:1646  */
2219     {
2220 	    define_dialog ((yyvsp[-12].id), &sub_res_info, &dialog);
2221 	    if (yychar != YYEMPTY)
2222 	      YYERROR;
2223 	    rcparse_discard_strings ();
2224 	  }
2225 #line 2226 "rcparse.c" /* yacc.c:1646  */
2226     break;
2227 
2228   case 40:
2229 #line 406 "rcparse.y" /* yacc.c:1646  */
2230     {
2231 	      memset (&dialog, 0, sizeof dialog);
2232 	      dialog.x = (yyvsp[-4].il);
2233 	      dialog.y = (yyvsp[-3].il);
2234 	      dialog.width = (yyvsp[-2].il);
2235 	      dialog.height = (yyvsp[-1].il);
2236 	      dialog.style = WS_POPUP | WS_BORDER | WS_SYSMENU;
2237 	      dialog.exstyle = (yyvsp[-5].il);
2238 	      dialog.menu.named = 1;
2239 	      dialog.class.named = 1;
2240 	      dialog.font = NULL;
2241 	      dialog.ex = ((rc_dialog_ex *)
2242 			   res_alloc (sizeof (rc_dialog_ex)));
2243 	      memset (dialog.ex, 0, sizeof (rc_dialog_ex));
2244 	      dialog.ex->help = (yyvsp[0].il);
2245 	      dialog.controls = NULL;
2246 	      sub_res_info = (yyvsp[-6].res_info);
2247 	      style = 0;
2248 	    }
2249 #line 2250 "rcparse.c" /* yacc.c:1646  */
2250     break;
2251 
2252   case 41:
2253 #line 426 "rcparse.y" /* yacc.c:1646  */
2254     {
2255 	    define_dialog ((yyvsp[-13].id), &sub_res_info, &dialog);
2256 	    if (yychar != YYEMPTY)
2257 	      YYERROR;
2258 	    rcparse_discard_strings ();
2259 	  }
2260 #line 2261 "rcparse.c" /* yacc.c:1646  */
2261     break;
2262 
2263   case 42:
2264 #line 436 "rcparse.y" /* yacc.c:1646  */
2265     {
2266 	    (yyval.il) = 0;
2267 	  }
2268 #line 2269 "rcparse.c" /* yacc.c:1646  */
2269     break;
2270 
2271   case 43:
2272 #line 440 "rcparse.y" /* yacc.c:1646  */
2273     {
2274 	    (yyval.il) = (yyvsp[0].il);
2275 	  }
2276 #line 2277 "rcparse.c" /* yacc.c:1646  */
2277     break;
2278 
2279   case 45:
2280 #line 448 "rcparse.y" /* yacc.c:1646  */
2281     {
2282 	    dialog.style |= WS_CAPTION;
2283 	    style |= WS_CAPTION;
2284 	    dialog.caption = (yyvsp[0].uni);
2285 	  }
2286 #line 2287 "rcparse.c" /* yacc.c:1646  */
2287     break;
2288 
2289   case 46:
2290 #line 454 "rcparse.y" /* yacc.c:1646  */
2291     {
2292 	    dialog.class = (yyvsp[0].id);
2293 	  }
2294 #line 2295 "rcparse.c" /* yacc.c:1646  */
2295     break;
2296 
2297   case 47:
2298 #line 459 "rcparse.y" /* yacc.c:1646  */
2299     {
2300 	    dialog.style = style;
2301 	  }
2302 #line 2303 "rcparse.c" /* yacc.c:1646  */
2303     break;
2304 
2305   case 48:
2306 #line 463 "rcparse.y" /* yacc.c:1646  */
2307     {
2308 	    dialog.exstyle = (yyvsp[0].il);
2309 	  }
2310 #line 2311 "rcparse.c" /* yacc.c:1646  */
2311     break;
2312 
2313   case 49:
2314 #line 467 "rcparse.y" /* yacc.c:1646  */
2315     {
2316 	    res_unistring_to_id (& dialog.class, (yyvsp[0].uni));
2317 	  }
2318 #line 2319 "rcparse.c" /* yacc.c:1646  */
2319     break;
2320 
2321   case 50:
2322 #line 471 "rcparse.y" /* yacc.c:1646  */
2323     {
2324 	    dialog.style |= DS_SETFONT;
2325 	    style |= DS_SETFONT;
2326 	    dialog.pointsize = (yyvsp[-2].il);
2327 	    dialog.font = (yyvsp[0].uni);
2328 	    if (dialog.ex != NULL)
2329 	      {
2330 		dialog.ex->weight = 0;
2331 		dialog.ex->italic = 0;
2332 		dialog.ex->charset = 1;
2333 	      }
2334 	  }
2335 #line 2336 "rcparse.c" /* yacc.c:1646  */
2336     break;
2337 
2338   case 51:
2339 #line 484 "rcparse.y" /* yacc.c:1646  */
2340     {
2341 	    dialog.style |= DS_SETFONT;
2342 	    style |= DS_SETFONT;
2343 	    dialog.pointsize = (yyvsp[-3].il);
2344 	    dialog.font = (yyvsp[-1].uni);
2345 	    if (dialog.ex == NULL)
2346 	      rcparse_warning (_("extended FONT requires DIALOGEX"));
2347 	    else
2348 	      {
2349 		dialog.ex->weight = (yyvsp[0].il);
2350 		dialog.ex->italic = 0;
2351 		dialog.ex->charset = 1;
2352 	      }
2353 	  }
2354 #line 2355 "rcparse.c" /* yacc.c:1646  */
2355     break;
2356 
2357   case 52:
2358 #line 499 "rcparse.y" /* yacc.c:1646  */
2359     {
2360 	    dialog.style |= DS_SETFONT;
2361 	    style |= DS_SETFONT;
2362 	    dialog.pointsize = (yyvsp[-4].il);
2363 	    dialog.font = (yyvsp[-2].uni);
2364 	    if (dialog.ex == NULL)
2365 	      rcparse_warning (_("extended FONT requires DIALOGEX"));
2366 	    else
2367 	      {
2368 		dialog.ex->weight = (yyvsp[-1].il);
2369 		dialog.ex->italic = (yyvsp[0].il);
2370 		dialog.ex->charset = 1;
2371 	      }
2372 	  }
2373 #line 2374 "rcparse.c" /* yacc.c:1646  */
2374     break;
2375 
2376   case 53:
2377 #line 514 "rcparse.y" /* yacc.c:1646  */
2378     {
2379 	    dialog.style |= DS_SETFONT;
2380 	    style |= DS_SETFONT;
2381 	    dialog.pointsize = (yyvsp[-5].il);
2382 	    dialog.font = (yyvsp[-3].uni);
2383 	    if (dialog.ex == NULL)
2384 	      rcparse_warning (_("extended FONT requires DIALOGEX"));
2385 	    else
2386 	      {
2387 		dialog.ex->weight = (yyvsp[-2].il);
2388 		dialog.ex->italic = (yyvsp[-1].il);
2389 		dialog.ex->charset = (yyvsp[0].il);
2390 	      }
2391 	  }
2392 #line 2393 "rcparse.c" /* yacc.c:1646  */
2393     break;
2394 
2395   case 54:
2396 #line 529 "rcparse.y" /* yacc.c:1646  */
2397     {
2398 	    dialog.menu = (yyvsp[0].id);
2399 	  }
2400 #line 2401 "rcparse.c" /* yacc.c:1646  */
2401     break;
2402 
2403   case 55:
2404 #line 533 "rcparse.y" /* yacc.c:1646  */
2405     {
2406 	    sub_res_info.characteristics = (yyvsp[0].il);
2407 	  }
2408 #line 2409 "rcparse.c" /* yacc.c:1646  */
2409     break;
2410 
2411   case 56:
2412 #line 537 "rcparse.y" /* yacc.c:1646  */
2413     {
2414 	    sub_res_info.language = (yyvsp[-1].il) | ((yyvsp[0].il) << SUBLANG_SHIFT);
2415 	  }
2416 #line 2417 "rcparse.c" /* yacc.c:1646  */
2417     break;
2418 
2419   case 57:
2420 #line 541 "rcparse.y" /* yacc.c:1646  */
2421     {
2422 	    sub_res_info.version = (yyvsp[0].il);
2423 	  }
2424 #line 2425 "rcparse.c" /* yacc.c:1646  */
2425     break;
2426 
2427   case 59:
2428 #line 549 "rcparse.y" /* yacc.c:1646  */
2429     {
2430 	    rc_dialog_control **pp;
2431 
2432 	    for (pp = &dialog.controls; *pp != NULL; pp = &(*pp)->next)
2433 	      ;
2434 	    *pp = (yyvsp[0].dialog_control);
2435 	  }
2436 #line 2437 "rcparse.c" /* yacc.c:1646  */
2437     break;
2438 
2439   case 60:
2440 #line 560 "rcparse.y" /* yacc.c:1646  */
2441     {
2442 	      default_style = BS_AUTO3STATE | WS_TABSTOP;
2443 	      base_style = BS_AUTO3STATE;
2444 	      class.named = 0;
2445 	      class.u.id = CTL_BUTTON;
2446 	      res_text_field = (yyvsp[0].id);
2447 	    }
2448 #line 2449 "rcparse.c" /* yacc.c:1646  */
2449     break;
2450 
2451   case 61:
2452 #line 568 "rcparse.y" /* yacc.c:1646  */
2453     {
2454 	    (yyval.dialog_control) = (yyvsp[0].dialog_control);
2455 	  }
2456 #line 2457 "rcparse.c" /* yacc.c:1646  */
2457     break;
2458 
2459   case 62:
2460 #line 572 "rcparse.y" /* yacc.c:1646  */
2461     {
2462 	      default_style = BS_AUTOCHECKBOX | WS_TABSTOP;
2463 	      base_style = BS_AUTOCHECKBOX;
2464 	      class.named = 0;
2465 	      class.u.id = CTL_BUTTON;
2466 	      res_text_field = (yyvsp[0].id);
2467 	    }
2468 #line 2469 "rcparse.c" /* yacc.c:1646  */
2469     break;
2470 
2471   case 63:
2472 #line 580 "rcparse.y" /* yacc.c:1646  */
2473     {
2474 	    (yyval.dialog_control) = (yyvsp[0].dialog_control);
2475 	  }
2476 #line 2477 "rcparse.c" /* yacc.c:1646  */
2477     break;
2478 
2479   case 64:
2480 #line 584 "rcparse.y" /* yacc.c:1646  */
2481     {
2482 	      default_style = BS_AUTORADIOBUTTON | WS_TABSTOP;
2483 	      base_style = BS_AUTORADIOBUTTON;
2484 	      class.named = 0;
2485 	      class.u.id = CTL_BUTTON;
2486 	      res_text_field = (yyvsp[0].id);
2487 	    }
2488 #line 2489 "rcparse.c" /* yacc.c:1646  */
2489     break;
2490 
2491   case 65:
2492 #line 592 "rcparse.y" /* yacc.c:1646  */
2493     {
2494 	    (yyval.dialog_control) = (yyvsp[0].dialog_control);
2495 	  }
2496 #line 2497 "rcparse.c" /* yacc.c:1646  */
2497     break;
2498 
2499   case 66:
2500 #line 596 "rcparse.y" /* yacc.c:1646  */
2501     {
2502 	      default_style = ES_LEFT | WS_BORDER | WS_TABSTOP;
2503 	      base_style = ES_LEFT | WS_BORDER | WS_TABSTOP;
2504 	      class.named = 0;
2505 	      class.u.id = CTL_EDIT;
2506 	      res_text_field = (yyvsp[0].id);
2507 	    }
2508 #line 2509 "rcparse.c" /* yacc.c:1646  */
2509     break;
2510 
2511   case 67:
2512 #line 604 "rcparse.y" /* yacc.c:1646  */
2513     {
2514 	    (yyval.dialog_control) = (yyvsp[0].dialog_control);
2515 	    if (dialog.ex == NULL)
2516 	      rcparse_warning (_("BEDIT requires DIALOGEX"));
2517 	    res_string_to_id (&(yyval.dialog_control)->class, "BEDIT");
2518 	  }
2519 #line 2520 "rcparse.c" /* yacc.c:1646  */
2520     break;
2521 
2522   case 68:
2523 #line 611 "rcparse.y" /* yacc.c:1646  */
2524     {
2525 	      default_style = BS_CHECKBOX | WS_TABSTOP;
2526 	      base_style = BS_CHECKBOX | WS_TABSTOP;
2527 	      class.named = 0;
2528 	      class.u.id = CTL_BUTTON;
2529 	      res_text_field = (yyvsp[0].id);
2530 	    }
2531 #line 2532 "rcparse.c" /* yacc.c:1646  */
2532     break;
2533 
2534   case 69:
2535 #line 619 "rcparse.y" /* yacc.c:1646  */
2536     {
2537 	    (yyval.dialog_control) = (yyvsp[0].dialog_control);
2538 	  }
2539 #line 2540 "rcparse.c" /* yacc.c:1646  */
2540     break;
2541 
2542   case 70:
2543 #line 623 "rcparse.y" /* yacc.c:1646  */
2544     {
2545 	      /* This is as per MSDN documentation.  With some (???)
2546 		 versions of MS rc.exe their is no default style.  */
2547 	      default_style = CBS_SIMPLE | WS_TABSTOP;
2548 	      base_style = 0;
2549 	      class.named = 0;
2550 	      class.u.id = CTL_COMBOBOX;
2551 	      res_text_field = res_null_text;
2552 	    }
2553 #line 2554 "rcparse.c" /* yacc.c:1646  */
2554     break;
2555 
2556   case 71:
2557 #line 633 "rcparse.y" /* yacc.c:1646  */
2558     {
2559 	    (yyval.dialog_control) = (yyvsp[0].dialog_control);
2560 	  }
2561 #line 2562 "rcparse.c" /* yacc.c:1646  */
2562     break;
2563 
2564   case 72:
2565 #line 638 "rcparse.y" /* yacc.c:1646  */
2566     {
2567 	    (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));
2568 	    if ((yyvsp[0].rcdata_item) != NULL)
2569 	      {
2570 		if (dialog.ex == NULL)
2571 		  rcparse_warning (_("control data requires DIALOGEX"));
2572 		(yyval.dialog_control)->data = (yyvsp[0].rcdata_item);
2573 	      }
2574 	  }
2575 #line 2576 "rcparse.c" /* yacc.c:1646  */
2576     break;
2577 
2578   case 73:
2579 #line 649 "rcparse.y" /* yacc.c:1646  */
2580     {
2581 	    (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));
2582 	    if (dialog.ex == NULL)
2583 	      rcparse_warning (_("help ID requires DIALOGEX"));
2584 	    (yyval.dialog_control)->help = (yyvsp[-1].il);
2585 	    (yyval.dialog_control)->data = (yyvsp[0].rcdata_item);
2586 	  }
2587 #line 2588 "rcparse.c" /* yacc.c:1646  */
2588     break;
2589 
2590   case 74:
2591 #line 657 "rcparse.y" /* yacc.c:1646  */
2592     {
2593 	      default_style = SS_CENTER | WS_GROUP;
2594 	      base_style = SS_CENTER;
2595 	      class.named = 0;
2596 	      class.u.id = CTL_STATIC;
2597 	      res_text_field = (yyvsp[0].id);
2598 	    }
2599 #line 2600 "rcparse.c" /* yacc.c:1646  */
2600     break;
2601 
2602   case 75:
2603 #line 665 "rcparse.y" /* yacc.c:1646  */
2604     {
2605 	    (yyval.dialog_control) = (yyvsp[0].dialog_control);
2606 	  }
2607 #line 2608 "rcparse.c" /* yacc.c:1646  */
2608     break;
2609 
2610   case 76:
2611 #line 669 "rcparse.y" /* yacc.c:1646  */
2612     {
2613 	      default_style = BS_DEFPUSHBUTTON | WS_TABSTOP;
2614 	      base_style = BS_DEFPUSHBUTTON | WS_TABSTOP;
2615 	      class.named = 0;
2616 	      class.u.id = CTL_BUTTON;
2617 	      res_text_field = (yyvsp[0].id);
2618 	    }
2619 #line 2620 "rcparse.c" /* yacc.c:1646  */
2620     break;
2621 
2622   case 77:
2623 #line 677 "rcparse.y" /* yacc.c:1646  */
2624     {
2625 	    (yyval.dialog_control) = (yyvsp[0].dialog_control);
2626 	  }
2627 #line 2628 "rcparse.c" /* yacc.c:1646  */
2628     break;
2629 
2630   case 78:
2631 #line 681 "rcparse.y" /* yacc.c:1646  */
2632     {
2633 	      default_style = ES_LEFT | WS_BORDER | WS_TABSTOP;
2634 	      base_style = ES_LEFT | WS_BORDER | WS_TABSTOP;
2635 	      class.named = 0;
2636 	      class.u.id = CTL_EDIT;
2637 	      res_text_field = res_null_text;
2638 	    }
2639 #line 2640 "rcparse.c" /* yacc.c:1646  */
2640     break;
2641 
2642   case 79:
2643 #line 689 "rcparse.y" /* yacc.c:1646  */
2644     {
2645 	    (yyval.dialog_control) = (yyvsp[0].dialog_control);
2646 	  }
2647 #line 2648 "rcparse.c" /* yacc.c:1646  */
2648     break;
2649 
2650   case 80:
2651 #line 693 "rcparse.y" /* yacc.c:1646  */
2652     {
2653 	      default_style = BS_GROUPBOX;
2654 	      base_style = BS_GROUPBOX;
2655 	      class.named = 0;
2656 	      class.u.id = CTL_BUTTON;
2657 	      res_text_field = (yyvsp[0].id);
2658 	    }
2659 #line 2660 "rcparse.c" /* yacc.c:1646  */
2660     break;
2661 
2662   case 81:
2663 #line 701 "rcparse.y" /* yacc.c:1646  */
2664     {
2665 	    (yyval.dialog_control) = (yyvsp[0].dialog_control);
2666 	  }
2667 #line 2668 "rcparse.c" /* yacc.c:1646  */
2668     break;
2669 
2670   case 82:
2671 #line 705 "rcparse.y" /* yacc.c:1646  */
2672     {
2673 	      default_style = ES_LEFT | WS_BORDER | WS_TABSTOP;
2674 	      base_style = ES_LEFT | WS_BORDER | WS_TABSTOP;
2675 	      class.named = 0;
2676 	      class.u.id = CTL_EDIT;
2677 	      res_text_field = (yyvsp[0].id);
2678 	    }
2679 #line 2680 "rcparse.c" /* yacc.c:1646  */
2680     break;
2681 
2682   case 83:
2683 #line 713 "rcparse.y" /* yacc.c:1646  */
2684     {
2685 	    (yyval.dialog_control) = (yyvsp[0].dialog_control);
2686 	    if (dialog.ex == NULL)
2687 	      rcparse_warning (_("IEDIT requires DIALOGEX"));
2688 	    res_string_to_id (&(yyval.dialog_control)->class, "HEDIT");
2689 	  }
2690 #line 2691 "rcparse.c" /* yacc.c:1646  */
2691     break;
2692 
2693   case 84:
2694 #line 720 "rcparse.y" /* yacc.c:1646  */
2695     {
2696 	    (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),
2697 				      dialog.ex);
2698           }
2699 #line 2700 "rcparse.c" /* yacc.c:1646  */
2700     break;
2701 
2702   case 85:
2703 #line 726 "rcparse.y" /* yacc.c:1646  */
2704     {
2705 	    (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),
2706 				      dialog.ex);
2707           }
2708 #line 2709 "rcparse.c" /* yacc.c:1646  */
2709     break;
2710 
2711   case 86:
2712 #line 732 "rcparse.y" /* yacc.c:1646  */
2713     {
2714 	    (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),
2715 				      dialog.ex);
2716           }
2717 #line 2718 "rcparse.c" /* yacc.c:1646  */
2718     break;
2719 
2720   case 87:
2721 #line 738 "rcparse.y" /* yacc.c:1646  */
2722     {
2723 	    (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),
2724 				      dialog.ex);
2725           }
2726 #line 2727 "rcparse.c" /* yacc.c:1646  */
2727     break;
2728 
2729   case 88:
2730 #line 743 "rcparse.y" /* yacc.c:1646  */
2731     {
2732 	      default_style = ES_LEFT | WS_BORDER | WS_TABSTOP;
2733 	      base_style = ES_LEFT | WS_BORDER | WS_TABSTOP;
2734 	      class.named = 0;
2735 	      class.u.id = CTL_EDIT;
2736 	      res_text_field = (yyvsp[0].id);
2737 	    }
2738 #line 2739 "rcparse.c" /* yacc.c:1646  */
2739     break;
2740 
2741   case 89:
2742 #line 751 "rcparse.y" /* yacc.c:1646  */
2743     {
2744 	    (yyval.dialog_control) = (yyvsp[0].dialog_control);
2745 	    if (dialog.ex == NULL)
2746 	      rcparse_warning (_("IEDIT requires DIALOGEX"));
2747 	    res_string_to_id (&(yyval.dialog_control)->class, "IEDIT");
2748 	  }
2749 #line 2750 "rcparse.c" /* yacc.c:1646  */
2750     break;
2751 
2752   case 90:
2753 #line 758 "rcparse.y" /* yacc.c:1646  */
2754     {
2755 	      default_style = LBS_NOTIFY | WS_BORDER;
2756 	      base_style = LBS_NOTIFY | WS_BORDER;
2757 	      class.named = 0;
2758 	      class.u.id = CTL_LISTBOX;
2759 	      res_text_field = res_null_text;
2760 	    }
2761 #line 2762 "rcparse.c" /* yacc.c:1646  */
2762     break;
2763 
2764   case 91:
2765 #line 766 "rcparse.y" /* yacc.c:1646  */
2766     {
2767 	    (yyval.dialog_control) = (yyvsp[0].dialog_control);
2768 	  }
2769 #line 2770 "rcparse.c" /* yacc.c:1646  */
2770     break;
2771 
2772   case 92:
2773 #line 770 "rcparse.y" /* yacc.c:1646  */
2774     {
2775 	      default_style = SS_LEFT | WS_GROUP;
2776 	      base_style = SS_LEFT;
2777 	      class.named = 0;
2778 	      class.u.id = CTL_STATIC;
2779 	      res_text_field = (yyvsp[0].id);
2780 	    }
2781 #line 2782 "rcparse.c" /* yacc.c:1646  */
2782     break;
2783 
2784   case 93:
2785 #line 778 "rcparse.y" /* yacc.c:1646  */
2786     {
2787 	    (yyval.dialog_control) = (yyvsp[0].dialog_control);
2788 	  }
2789 #line 2790 "rcparse.c" /* yacc.c:1646  */
2790     break;
2791 
2792   case 94:
2793 #line 782 "rcparse.y" /* yacc.c:1646  */
2794     {
2795 	      default_style = BS_PUSHBOX | WS_TABSTOP;
2796 	      base_style = BS_PUSHBOX;
2797 	      class.named = 0;
2798 	      class.u.id = CTL_BUTTON;
2799 	    }
2800 #line 2801 "rcparse.c" /* yacc.c:1646  */
2801     break;
2802 
2803   case 95:
2804 #line 789 "rcparse.y" /* yacc.c:1646  */
2805     {
2806 	    (yyval.dialog_control) = (yyvsp[0].dialog_control);
2807 	  }
2808 #line 2809 "rcparse.c" /* yacc.c:1646  */
2809     break;
2810 
2811   case 96:
2812 #line 793 "rcparse.y" /* yacc.c:1646  */
2813     {
2814 	      default_style = BS_PUSHBUTTON | WS_TABSTOP;
2815 	      base_style = BS_PUSHBUTTON | WS_TABSTOP;
2816 	      class.named = 0;
2817 	      class.u.id = CTL_BUTTON;
2818 	      res_text_field = (yyvsp[0].id);
2819 	    }
2820 #line 2821 "rcparse.c" /* yacc.c:1646  */
2821     break;
2822 
2823   case 97:
2824 #line 801 "rcparse.y" /* yacc.c:1646  */
2825     {
2826 	    (yyval.dialog_control) = (yyvsp[0].dialog_control);
2827 	  }
2828 #line 2829 "rcparse.c" /* yacc.c:1646  */
2829     break;
2830 
2831   case 98:
2832 #line 805 "rcparse.y" /* yacc.c:1646  */
2833     {
2834 	      default_style = BS_RADIOBUTTON | WS_TABSTOP;
2835 	      base_style = BS_RADIOBUTTON;
2836 	      class.named = 0;
2837 	      class.u.id = CTL_BUTTON;
2838 	      res_text_field = (yyvsp[0].id);
2839 	    }
2840 #line 2841 "rcparse.c" /* yacc.c:1646  */
2841     break;
2842 
2843   case 99:
2844 #line 813 "rcparse.y" /* yacc.c:1646  */
2845     {
2846 	    (yyval.dialog_control) = (yyvsp[0].dialog_control);
2847 	  }
2848 #line 2849 "rcparse.c" /* yacc.c:1646  */
2849     break;
2850 
2851   case 100:
2852 #line 817 "rcparse.y" /* yacc.c:1646  */
2853     {
2854 	      default_style = SS_RIGHT | WS_GROUP;
2855 	      base_style = SS_RIGHT;
2856 	      class.named = 0;
2857 	      class.u.id = CTL_STATIC;
2858 	      res_text_field = (yyvsp[0].id);
2859 	    }
2860 #line 2861 "rcparse.c" /* yacc.c:1646  */
2861     break;
2862 
2863   case 101:
2864 #line 825 "rcparse.y" /* yacc.c:1646  */
2865     {
2866 	    (yyval.dialog_control) = (yyvsp[0].dialog_control);
2867 	  }
2868 #line 2869 "rcparse.c" /* yacc.c:1646  */
2869     break;
2870 
2871   case 102:
2872 #line 829 "rcparse.y" /* yacc.c:1646  */
2873     {
2874 	      default_style = SBS_HORZ;
2875 	      base_style = 0;
2876 	      class.named = 0;
2877 	      class.u.id = CTL_SCROLLBAR;
2878 	      res_text_field = res_null_text;
2879 	    }
2880 #line 2881 "rcparse.c" /* yacc.c:1646  */
2881     break;
2882 
2883   case 103:
2884 #line 837 "rcparse.y" /* yacc.c:1646  */
2885     {
2886 	    (yyval.dialog_control) = (yyvsp[0].dialog_control);
2887 	  }
2888 #line 2889 "rcparse.c" /* yacc.c:1646  */
2889     break;
2890 
2891   case 104:
2892 #line 841 "rcparse.y" /* yacc.c:1646  */
2893     {
2894 	      default_style = BS_3STATE | WS_TABSTOP;
2895 	      base_style = BS_3STATE;
2896 	      class.named = 0;
2897 	      class.u.id = CTL_BUTTON;
2898 	      res_text_field = (yyvsp[0].id);
2899 	    }
2900 #line 2901 "rcparse.c" /* yacc.c:1646  */
2901     break;
2902 
2903   case 105:
2904 #line 849 "rcparse.y" /* yacc.c:1646  */
2905     {
2906 	    (yyval.dialog_control) = (yyvsp[0].dialog_control);
2907 	  }
2908 #line 2909 "rcparse.c" /* yacc.c:1646  */
2909     break;
2910 
2911   case 106:
2912 #line 854 "rcparse.y" /* yacc.c:1646  */
2913     { style = WS_CHILD | WS_VISIBLE; }
2914 #line 2915 "rcparse.c" /* yacc.c:1646  */
2915     break;
2916 
2917   case 107:
2918 #line 856 "rcparse.y" /* yacc.c:1646  */
2919     {
2920 	    rc_res_id cid;
2921 	    cid.named = 0;
2922 	    cid.u.id = CTL_BUTTON;
2923 	    (yyval.dialog_control) = define_control ((yyvsp[-13].id), (yyvsp[-12].il), (yyvsp[-10].il), (yyvsp[-8].il), (yyvsp[-6].il), (yyvsp[-4].il), cid,
2924 				 style, (yyvsp[0].il));
2925 	  }
2926 #line 2927 "rcparse.c" /* yacc.c:1646  */
2927     break;
2928 
2929   case 108:
2930 #line 874 "rcparse.y" /* yacc.c:1646  */
2931     {
2932 	    (yyval.dialog_control) = define_control (res_text_field, (yyvsp[-5].il), (yyvsp[-4].il), (yyvsp[-3].il), (yyvsp[-2].il), (yyvsp[-1].il), class,
2933 				 default_style | WS_CHILD | WS_VISIBLE, 0);
2934 	    if ((yyvsp[0].rcdata_item) != NULL)
2935 	      {
2936 		if (dialog.ex == NULL)
2937 		  rcparse_warning (_("control data requires DIALOGEX"));
2938 		(yyval.dialog_control)->data = (yyvsp[0].rcdata_item);
2939 	      }
2940 	  }
2941 #line 2942 "rcparse.c" /* yacc.c:1646  */
2942     break;
2943 
2944   case 109:
2945 #line 886 "rcparse.y" /* yacc.c:1646  */
2946     {
2947 	    (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));
2948 	    if ((yyvsp[0].rcdata_item) != NULL)
2949 	      {
2950 		if (dialog.ex == NULL)
2951 		  rcparse_warning (_("control data requires DIALOGEX"));
2952 		(yyval.dialog_control)->data = (yyvsp[0].rcdata_item);
2953 	      }
2954 	  }
2955 #line 2956 "rcparse.c" /* yacc.c:1646  */
2956     break;
2957 
2958   case 110:
2959 #line 897 "rcparse.y" /* yacc.c:1646  */
2960     {
2961 	    (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));
2962 	    if (dialog.ex == NULL)
2963 	      rcparse_warning (_("help ID requires DIALOGEX"));
2964 	    (yyval.dialog_control)->help = (yyvsp[-1].il);
2965 	    (yyval.dialog_control)->data = (yyvsp[0].rcdata_item);
2966 	  }
2967 #line 2968 "rcparse.c" /* yacc.c:1646  */
2968     break;
2969 
2970   case 111:
2971 #line 908 "rcparse.y" /* yacc.c:1646  */
2972     {
2973 	    if ((yyvsp[0].id).named)
2974 	      res_unistring_to_id (&(yyval.id), (yyvsp[0].id).u.n.name);
2975 	    else
2976 	      (yyval.id)=(yyvsp[0].id);
2977 	  }
2978 #line 2979 "rcparse.c" /* yacc.c:1646  */
2979     break;
2980 
2981   case 112:
2982 #line 918 "rcparse.y" /* yacc.c:1646  */
2983     {
2984 	    res_string_to_id (&(yyval.id), "");
2985 	  }
2986 #line 2987 "rcparse.c" /* yacc.c:1646  */
2987     break;
2988 
2989   case 113:
2990 #line 921 "rcparse.y" /* yacc.c:1646  */
2991     { (yyval.id)=(yyvsp[-1].id); }
2992 #line 2993 "rcparse.c" /* yacc.c:1646  */
2993     break;
2994 
2995   case 114:
2996 #line 926 "rcparse.y" /* yacc.c:1646  */
2997     {
2998 	    (yyval.id).named = 0;
2999 	    (yyval.id).u.id = (yyvsp[0].il);
3000 	  }
3001 #line 3002 "rcparse.c" /* yacc.c:1646  */
3002     break;
3003 
3004   case 115:
3005 #line 931 "rcparse.y" /* yacc.c:1646  */
3006     {
3007 	    (yyval.id).named = 1;
3008 	    (yyval.id).u.n.name = (yyvsp[0].uni);
3009 	    (yyval.id).u.n.length = unichar_len ((yyvsp[0].uni));
3010 	  }
3011 #line 3012 "rcparse.c" /* yacc.c:1646  */
3012     break;
3013 
3014   case 116:
3015 #line 940 "rcparse.y" /* yacc.c:1646  */
3016     {
3017 	    (yyval.rcdata_item) = NULL;
3018 	  }
3019 #line 3020 "rcparse.c" /* yacc.c:1646  */
3020     break;
3021 
3022   case 117:
3023 #line 944 "rcparse.y" /* yacc.c:1646  */
3024     {
3025 	    (yyval.rcdata_item) = (yyvsp[-1].rcdata).first;
3026 	  }
3027 #line 3028 "rcparse.c" /* yacc.c:1646  */
3028     break;
3029 
3030   case 118:
3031 #line 953 "rcparse.y" /* yacc.c:1646  */
3032     { style = WS_CHILD | WS_VISIBLE; }
3033 #line 3034 "rcparse.c" /* yacc.c:1646  */
3034     break;
3035 
3036   case 120:
3037 #line 959 "rcparse.y" /* yacc.c:1646  */
3038     { style = SS_ICON | WS_CHILD | WS_VISIBLE; }
3039 #line 3040 "rcparse.c" /* yacc.c:1646  */
3040     break;
3041 
3042   case 122:
3043 #line 965 "rcparse.y" /* yacc.c:1646  */
3044     { style = base_style | WS_CHILD | WS_VISIBLE; }
3045 #line 3046 "rcparse.c" /* yacc.c:1646  */
3046     break;
3047 
3048   case 124:
3049 #line 973 "rcparse.y" /* yacc.c:1646  */
3050     {
3051 	    define_font ((yyvsp[-3].id), &(yyvsp[-1].res_info), (yyvsp[0].s));
3052 	    if (yychar != YYEMPTY)
3053 	      YYERROR;
3054 	    rcparse_discard_strings ();
3055 	  }
3056 #line 3057 "rcparse.c" /* yacc.c:1646  */
3057     break;
3058 
3059   case 125:
3060 #line 985 "rcparse.y" /* yacc.c:1646  */
3061     {
3062 	    define_icon ((yyvsp[-3].id), &(yyvsp[-1].res_info), (yyvsp[0].s));
3063 	    if (yychar != YYEMPTY)
3064 	      YYERROR;
3065 	    rcparse_discard_strings ();
3066 	  }
3067 #line 3068 "rcparse.c" /* yacc.c:1646  */
3068     break;
3069 
3070   case 126:
3071 #line 998 "rcparse.y" /* yacc.c:1646  */
3072     {
3073 	    language = (yyvsp[-1].il) | ((yyvsp[0].il) << SUBLANG_SHIFT);
3074 	  }
3075 #line 3076 "rcparse.c" /* yacc.c:1646  */
3076     break;
3077 
3078   case 127:
3079 #line 1007 "rcparse.y" /* yacc.c:1646  */
3080     {
3081 	    define_menu ((yyvsp[-5].id), &(yyvsp[-3].res_info), (yyvsp[-1].menuitem));
3082 	    if (yychar != YYEMPTY)
3083 	      YYERROR;
3084 	    rcparse_discard_strings ();
3085 	  }
3086 #line 3087 "rcparse.c" /* yacc.c:1646  */
3087     break;
3088 
3089   case 128:
3090 #line 1017 "rcparse.y" /* yacc.c:1646  */
3091     {
3092 	    (yyval.menuitem) = NULL;
3093 	  }
3094 #line 3095 "rcparse.c" /* yacc.c:1646  */
3095     break;
3096 
3097   case 129:
3098 #line 1021 "rcparse.y" /* yacc.c:1646  */
3099     {
3100 	    if ((yyvsp[-1].menuitem) == NULL)
3101 	      (yyval.menuitem) = (yyvsp[0].menuitem);
3102 	    else
3103 	      {
3104 		rc_menuitem **pp;
3105 
3106 		for (pp = &(yyvsp[-1].menuitem)->next; *pp != NULL; pp = &(*pp)->next)
3107 		  ;
3108 		*pp = (yyvsp[0].menuitem);
3109 		(yyval.menuitem) = (yyvsp[-1].menuitem);
3110 	      }
3111 	  }
3112 #line 3113 "rcparse.c" /* yacc.c:1646  */
3113     break;
3114 
3115   case 130:
3116 #line 1038 "rcparse.y" /* yacc.c:1646  */
3117     {
3118 	    (yyval.menuitem) = define_menuitem ((yyvsp[-2].uni), (yyvsp[-1].il), (yyvsp[0].is), 0, 0, NULL);
3119 	  }
3120 #line 3121 "rcparse.c" /* yacc.c:1646  */
3121     break;
3122 
3123   case 131:
3124 #line 1042 "rcparse.y" /* yacc.c:1646  */
3125     {
3126 	    (yyval.menuitem) = define_menuitem (NULL, 0, 0, 0, 0, NULL);
3127 	  }
3128 #line 3129 "rcparse.c" /* yacc.c:1646  */
3129     break;
3130 
3131   case 132:
3132 #line 1046 "rcparse.y" /* yacc.c:1646  */
3133     {
3134 	    (yyval.menuitem) = define_menuitem ((yyvsp[-4].uni), 0, (yyvsp[-3].is), 0, 0, (yyvsp[-1].menuitem));
3135 	  }
3136 #line 3137 "rcparse.c" /* yacc.c:1646  */
3137     break;
3138 
3139   case 133:
3140 #line 1053 "rcparse.y" /* yacc.c:1646  */
3141     {
3142 	    (yyval.is) = 0;
3143 	  }
3144 #line 3145 "rcparse.c" /* yacc.c:1646  */
3145     break;
3146 
3147   case 134:
3148 #line 1057 "rcparse.y" /* yacc.c:1646  */
3149     {
3150 	    (yyval.is) = (yyvsp[-2].is) | (yyvsp[0].is);
3151 	  }
3152 #line 3153 "rcparse.c" /* yacc.c:1646  */
3153     break;
3154 
3155   case 135:
3156 #line 1061 "rcparse.y" /* yacc.c:1646  */
3157     {
3158 	    (yyval.is) = (yyvsp[-1].is) | (yyvsp[0].is);
3159 	  }
3160 #line 3161 "rcparse.c" /* yacc.c:1646  */
3161     break;
3162 
3163   case 136:
3164 #line 1068 "rcparse.y" /* yacc.c:1646  */
3165     {
3166 	    (yyval.is) = MENUITEM_CHECKED;
3167 	  }
3168 #line 3169 "rcparse.c" /* yacc.c:1646  */
3169     break;
3170 
3171   case 137:
3172 #line 1072 "rcparse.y" /* yacc.c:1646  */
3173     {
3174 	    (yyval.is) = MENUITEM_GRAYED;
3175 	  }
3176 #line 3177 "rcparse.c" /* yacc.c:1646  */
3177     break;
3178 
3179   case 138:
3180 #line 1076 "rcparse.y" /* yacc.c:1646  */
3181     {
3182 	    (yyval.is) = MENUITEM_HELP;
3183 	  }
3184 #line 3185 "rcparse.c" /* yacc.c:1646  */
3185     break;
3186 
3187   case 139:
3188 #line 1080 "rcparse.y" /* yacc.c:1646  */
3189     {
3190 	    (yyval.is) = MENUITEM_INACTIVE;
3191 	  }
3192 #line 3193 "rcparse.c" /* yacc.c:1646  */
3193     break;
3194 
3195   case 140:
3196 #line 1084 "rcparse.y" /* yacc.c:1646  */
3197     {
3198 	    (yyval.is) = MENUITEM_MENUBARBREAK;
3199 	  }
3200 #line 3201 "rcparse.c" /* yacc.c:1646  */
3201     break;
3202 
3203   case 141:
3204 #line 1088 "rcparse.y" /* yacc.c:1646  */
3205     {
3206 	    (yyval.is) = MENUITEM_MENUBREAK;
3207 	  }
3208 #line 3209 "rcparse.c" /* yacc.c:1646  */
3209     break;
3210 
3211   case 142:
3212 #line 1097 "rcparse.y" /* yacc.c:1646  */
3213     {
3214 	    define_menu ((yyvsp[-5].id), &(yyvsp[-3].res_info), (yyvsp[-1].menuitem));
3215 	    if (yychar != YYEMPTY)
3216 	      YYERROR;
3217 	    rcparse_discard_strings ();
3218 	  }
3219 #line 3220 "rcparse.c" /* yacc.c:1646  */
3220     break;
3221 
3222   case 143:
3223 #line 1107 "rcparse.y" /* yacc.c:1646  */
3224     {
3225 	    (yyval.menuitem) = NULL;
3226 	  }
3227 #line 3228 "rcparse.c" /* yacc.c:1646  */
3228     break;
3229 
3230   case 144:
3231 #line 1111 "rcparse.y" /* yacc.c:1646  */
3232     {
3233 	    if ((yyvsp[-1].menuitem) == NULL)
3234 	      (yyval.menuitem) = (yyvsp[0].menuitem);
3235 	    else
3236 	      {
3237 		rc_menuitem **pp;
3238 
3239 		for (pp = &(yyvsp[-1].menuitem)->next; *pp != NULL; pp = &(*pp)->next)
3240 		  ;
3241 		*pp = (yyvsp[0].menuitem);
3242 		(yyval.menuitem) = (yyvsp[-1].menuitem);
3243 	      }
3244 	  }
3245 #line 3246 "rcparse.c" /* yacc.c:1646  */
3246     break;
3247 
3248   case 145:
3249 #line 1128 "rcparse.y" /* yacc.c:1646  */
3250     {
3251 	    (yyval.menuitem) = define_menuitem ((yyvsp[0].uni), 0, 0, 0, 0, NULL);
3252 	  }
3253 #line 3254 "rcparse.c" /* yacc.c:1646  */
3254     break;
3255 
3256   case 146:
3257 #line 1132 "rcparse.y" /* yacc.c:1646  */
3258     {
3259 	    (yyval.menuitem) = define_menuitem ((yyvsp[-1].uni), (yyvsp[0].il), 0, 0, 0, NULL);
3260 	  }
3261 #line 3262 "rcparse.c" /* yacc.c:1646  */
3262     break;
3263 
3264   case 147:
3265 #line 1136 "rcparse.y" /* yacc.c:1646  */
3266     {
3267 	    (yyval.menuitem) = define_menuitem ((yyvsp[-3].uni), (yyvsp[-2].il), (yyvsp[-1].il), (yyvsp[0].il), 0, NULL);
3268 	  }
3269 #line 3270 "rcparse.c" /* yacc.c:1646  */
3270     break;
3271 
3272   case 148:
3273 #line 1140 "rcparse.y" /* yacc.c:1646  */
3274     {
3275  	    (yyval.menuitem) = define_menuitem (NULL, 0, 0, 0, 0, NULL);
3276  	  }
3277 #line 3278 "rcparse.c" /* yacc.c:1646  */
3278     break;
3279 
3280   case 149:
3281 #line 1144 "rcparse.y" /* yacc.c:1646  */
3282     {
3283 	    (yyval.menuitem) = define_menuitem ((yyvsp[-3].uni), 0, 0, 0, 0, (yyvsp[-1].menuitem));
3284 	  }
3285 #line 3286 "rcparse.c" /* yacc.c:1646  */
3286     break;
3287 
3288   case 150:
3289 #line 1148 "rcparse.y" /* yacc.c:1646  */
3290     {
3291 	    (yyval.menuitem) = define_menuitem ((yyvsp[-4].uni), (yyvsp[-3].il), 0, 0, 0, (yyvsp[-1].menuitem));
3292 	  }
3293 #line 3294 "rcparse.c" /* yacc.c:1646  */
3294     break;
3295 
3296   case 151:
3297 #line 1152 "rcparse.y" /* yacc.c:1646  */
3298     {
3299 	    (yyval.menuitem) = define_menuitem ((yyvsp[-5].uni), (yyvsp[-4].il), (yyvsp[-3].il), 0, 0, (yyvsp[-1].menuitem));
3300 	  }
3301 #line 3302 "rcparse.c" /* yacc.c:1646  */
3302     break;
3303 
3304   case 152:
3305 #line 1157 "rcparse.y" /* yacc.c:1646  */
3306     {
3307 	    (yyval.menuitem) = define_menuitem ((yyvsp[-7].uni), (yyvsp[-6].il), (yyvsp[-5].il), (yyvsp[-4].il), (yyvsp[-3].il), (yyvsp[-1].menuitem));
3308 	  }
3309 #line 3310 "rcparse.c" /* yacc.c:1646  */
3310     break;
3311 
3312   case 153:
3313 #line 1166 "rcparse.y" /* yacc.c:1646  */
3314     {
3315 	    define_messagetable ((yyvsp[-3].id), &(yyvsp[-1].res_info), (yyvsp[0].s));
3316 	    if (yychar != YYEMPTY)
3317 	      YYERROR;
3318 	    rcparse_discard_strings ();
3319 	  }
3320 #line 3321 "rcparse.c" /* yacc.c:1646  */
3321     break;
3322 
3323   case 154:
3324 #line 1178 "rcparse.y" /* yacc.c:1646  */
3325     {
3326 	    rcparse_rcdata ();
3327 	  }
3328 #line 3329 "rcparse.c" /* yacc.c:1646  */
3329     break;
3330 
3331   case 155:
3332 #line 1182 "rcparse.y" /* yacc.c:1646  */
3333     {
3334 	    rcparse_normal ();
3335 	    (yyval.rcdata) = (yyvsp[0].rcdata);
3336 	  }
3337 #line 3338 "rcparse.c" /* yacc.c:1646  */
3338     break;
3339 
3340   case 156:
3341 #line 1190 "rcparse.y" /* yacc.c:1646  */
3342     {
3343 	    (yyval.rcdata).first = NULL;
3344 	    (yyval.rcdata).last = NULL;
3345 	  }
3346 #line 3347 "rcparse.c" /* yacc.c:1646  */
3347     break;
3348 
3349   case 157:
3350 #line 1195 "rcparse.y" /* yacc.c:1646  */
3351     {
3352 	    (yyval.rcdata) = (yyvsp[0].rcdata);
3353 	  }
3354 #line 3355 "rcparse.c" /* yacc.c:1646  */
3355     break;
3356 
3357   case 158:
3358 #line 1202 "rcparse.y" /* yacc.c:1646  */
3359     {
3360 	    rc_rcdata_item *ri;
3361 
3362 	    ri = define_rcdata_string ((yyvsp[0].ss).s, (yyvsp[0].ss).length);
3363 	    (yyval.rcdata).first = ri;
3364 	    (yyval.rcdata).last = ri;
3365 	  }
3366 #line 3367 "rcparse.c" /* yacc.c:1646  */
3367     break;
3368 
3369   case 159:
3370 #line 1210 "rcparse.y" /* yacc.c:1646  */
3371     {
3372 	    rc_rcdata_item *ri;
3373 
3374 	    ri = define_rcdata_unistring ((yyvsp[0].suni).s, (yyvsp[0].suni).length);
3375 	    (yyval.rcdata).first = ri;
3376 	    (yyval.rcdata).last = ri;
3377 	  }
3378 #line 3379 "rcparse.c" /* yacc.c:1646  */
3379     break;
3380 
3381   case 160:
3382 #line 1218 "rcparse.y" /* yacc.c:1646  */
3383     {
3384 	    rc_rcdata_item *ri;
3385 
3386 	    ri = define_rcdata_number ((yyvsp[0].i).val, (yyvsp[0].i).dword);
3387 	    (yyval.rcdata).first = ri;
3388 	    (yyval.rcdata).last = ri;
3389 	  }
3390 #line 3391 "rcparse.c" /* yacc.c:1646  */
3391     break;
3392 
3393   case 161:
3394 #line 1226 "rcparse.y" /* yacc.c:1646  */
3395     {
3396 	    rc_rcdata_item *ri;
3397 
3398 	    ri = define_rcdata_string ((yyvsp[0].ss).s, (yyvsp[0].ss).length);
3399 	    (yyval.rcdata).first = (yyvsp[-2].rcdata).first;
3400 	    (yyvsp[-2].rcdata).last->next = ri;
3401 	    (yyval.rcdata).last = ri;
3402 	  }
3403 #line 3404 "rcparse.c" /* yacc.c:1646  */
3404     break;
3405 
3406   case 162:
3407 #line 1235 "rcparse.y" /* yacc.c:1646  */
3408     {
3409 	    rc_rcdata_item *ri;
3410 
3411 	    ri = define_rcdata_unistring ((yyvsp[0].suni).s, (yyvsp[0].suni).length);
3412 	    (yyval.rcdata).first = (yyvsp[-2].rcdata).first;
3413 	    (yyvsp[-2].rcdata).last->next = ri;
3414 	    (yyval.rcdata).last = ri;
3415 	  }
3416 #line 3417 "rcparse.c" /* yacc.c:1646  */
3417     break;
3418 
3419   case 163:
3420 #line 1244 "rcparse.y" /* yacc.c:1646  */
3421     {
3422 	    rc_rcdata_item *ri;
3423 
3424 	    ri = define_rcdata_number ((yyvsp[0].i).val, (yyvsp[0].i).dword);
3425 	    (yyval.rcdata).first = (yyvsp[-2].rcdata).first;
3426 	    (yyvsp[-2].rcdata).last->next = ri;
3427 	    (yyval.rcdata).last = ri;
3428 	  }
3429 #line 3430 "rcparse.c" /* yacc.c:1646  */
3430     break;
3431 
3432   case 164:
3433 #line 1253 "rcparse.y" /* yacc.c:1646  */
3434     {
3435 	    (yyval.rcdata)=(yyvsp[-1].rcdata);
3436 	  }
3437 #line 3438 "rcparse.c" /* yacc.c:1646  */
3438     break;
3439 
3440   case 165:
3441 #line 1262 "rcparse.y" /* yacc.c:1646  */
3442     { sub_res_info = (yyvsp[-1].res_info); rcparse_rcdata (); }
3443 #line 3444 "rcparse.c" /* yacc.c:1646  */
3444     break;
3445 
3446   case 166:
3447 #line 1263 "rcparse.y" /* yacc.c:1646  */
3448     { rcparse_normal (); }
3449 #line 3450 "rcparse.c" /* yacc.c:1646  */
3450     break;
3451 
3452   case 168:
3453 #line 1269 "rcparse.y" /* yacc.c:1646  */
3454     {
3455 	    define_stringtable (&sub_res_info, (yyvsp[-1].il), (yyvsp[0].suni).s, (yyvsp[0].suni).length);
3456 	    rcparse_discard_strings ();
3457 	  }
3458 #line 3459 "rcparse.c" /* yacc.c:1646  */
3459     break;
3460 
3461   case 169:
3462 #line 1274 "rcparse.y" /* yacc.c:1646  */
3463     {
3464 	    define_stringtable (&sub_res_info, (yyvsp[-2].il), (yyvsp[0].suni).s, (yyvsp[0].suni).length);
3465 	    rcparse_discard_strings ();
3466 	  }
3467 #line 3468 "rcparse.c" /* yacc.c:1646  */
3468     break;
3469 
3470   case 170:
3471 #line 1279 "rcparse.y" /* yacc.c:1646  */
3472     {
3473 	    rcparse_warning (_("invalid stringtable resource."));
3474 	    abort ();
3475 	  }
3476 #line 3477 "rcparse.c" /* yacc.c:1646  */
3477     break;
3478 
3479   case 171:
3480 #line 1287 "rcparse.y" /* yacc.c:1646  */
3481     {
3482 	    (yyval.id)=(yyvsp[0].id);
3483 	  }
3484 #line 3485 "rcparse.c" /* yacc.c:1646  */
3485     break;
3486 
3487   case 172:
3488 #line 1291 "rcparse.y" /* yacc.c:1646  */
3489     {
3490 	  (yyval.id).named = 0;
3491 	  (yyval.id).u.id = 23;
3492 	}
3493 #line 3494 "rcparse.c" /* yacc.c:1646  */
3494     break;
3495 
3496   case 173:
3497 #line 1296 "rcparse.y" /* yacc.c:1646  */
3498     {
3499           (yyval.id).named = 0;
3500           (yyval.id).u.id = RT_RCDATA;
3501         }
3502 #line 3503 "rcparse.c" /* yacc.c:1646  */
3503     break;
3504 
3505   case 174:
3506 #line 1301 "rcparse.y" /* yacc.c:1646  */
3507     {
3508           (yyval.id).named = 0;
3509           (yyval.id).u.id = RT_MANIFEST;
3510         }
3511 #line 3512 "rcparse.c" /* yacc.c:1646  */
3512     break;
3513 
3514   case 175:
3515 #line 1306 "rcparse.y" /* yacc.c:1646  */
3516     {
3517           (yyval.id).named = 0;
3518           (yyval.id).u.id = RT_PLUGPLAY;
3519         }
3520 #line 3521 "rcparse.c" /* yacc.c:1646  */
3521     break;
3522 
3523   case 176:
3524 #line 1311 "rcparse.y" /* yacc.c:1646  */
3525     {
3526           (yyval.id).named = 0;
3527           (yyval.id).u.id = RT_VXD;
3528         }
3529 #line 3530 "rcparse.c" /* yacc.c:1646  */
3530     break;
3531 
3532   case 177:
3533 #line 1316 "rcparse.y" /* yacc.c:1646  */
3534     {
3535           (yyval.id).named = 0;
3536           (yyval.id).u.id = RT_DLGINCLUDE;
3537         }
3538 #line 3539 "rcparse.c" /* yacc.c:1646  */
3539     break;
3540 
3541   case 178:
3542 #line 1321 "rcparse.y" /* yacc.c:1646  */
3543     {
3544           (yyval.id).named = 0;
3545           (yyval.id).u.id = RT_DLGINIT;
3546         }
3547 #line 3548 "rcparse.c" /* yacc.c:1646  */
3548     break;
3549 
3550   case 179:
3551 #line 1326 "rcparse.y" /* yacc.c:1646  */
3552     {
3553           (yyval.id).named = 0;
3554           (yyval.id).u.id = RT_ANICURSOR;
3555         }
3556 #line 3557 "rcparse.c" /* yacc.c:1646  */
3557     break;
3558 
3559   case 180:
3560 #line 1331 "rcparse.y" /* yacc.c:1646  */
3561     {
3562           (yyval.id).named = 0;
3563           (yyval.id).u.id = RT_ANIICON;
3564         }
3565 #line 3566 "rcparse.c" /* yacc.c:1646  */
3566     break;
3567 
3568   case 181:
3569 #line 1342 "rcparse.y" /* yacc.c:1646  */
3570     {
3571 	    define_user_data ((yyvsp[-5].id), (yyvsp[-4].id), &(yyvsp[-3].res_info), (yyvsp[-1].rcdata).first);
3572 	    if (yychar != YYEMPTY)
3573 	      YYERROR;
3574 	    rcparse_discard_strings ();
3575 	  }
3576 #line 3577 "rcparse.c" /* yacc.c:1646  */
3577     break;
3578 
3579   case 182:
3580 #line 1349 "rcparse.y" /* yacc.c:1646  */
3581     {
3582 	    define_user_file ((yyvsp[-3].id), (yyvsp[-2].id), &(yyvsp[-1].res_info), (yyvsp[0].s));
3583 	    if (yychar != YYEMPTY)
3584 	      YYERROR;
3585 	    rcparse_discard_strings ();
3586 	  }
3587 #line 3588 "rcparse.c" /* yacc.c:1646  */
3588     break;
3589 
3590   case 183:
3591 #line 1359 "rcparse.y" /* yacc.c:1646  */
3592     {
3593 	  define_toolbar ((yyvsp[-7].id), &(yyvsp[-5].res_info), (yyvsp[-4].il), (yyvsp[-3].il), (yyvsp[-1].toobar_item));
3594 	}
3595 #line 3596 "rcparse.c" /* yacc.c:1646  */
3596     break;
3597 
3598   case 184:
3599 #line 1364 "rcparse.y" /* yacc.c:1646  */
3600     { (yyval.toobar_item)= NULL; }
3601 #line 3602 "rcparse.c" /* yacc.c:1646  */
3602     break;
3603 
3604   case 185:
3605 #line 1366 "rcparse.y" /* yacc.c:1646  */
3606     {
3607 	  rc_toolbar_item *c,*n;
3608 	  c = (yyvsp[-2].toobar_item);
3609 	  n= (rc_toolbar_item *)
3610 	      res_alloc (sizeof (rc_toolbar_item));
3611 	  if (c != NULL)
3612 	    while (c->next != NULL)
3613 	      c = c->next;
3614 	  n->prev = c;
3615 	  n->next = NULL;
3616 	  if (c != NULL)
3617 	    c->next = n;
3618 	  n->id = (yyvsp[0].id);
3619 	  if ((yyvsp[-2].toobar_item) == NULL)
3620 	    (yyval.toobar_item) = n;
3621 	  else
3622 	    (yyval.toobar_item) = (yyvsp[-2].toobar_item);
3623 	}
3624 #line 3625 "rcparse.c" /* yacc.c:1646  */
3625     break;
3626 
3627   case 186:
3628 #line 1385 "rcparse.y" /* yacc.c:1646  */
3629     {
3630 	  rc_toolbar_item *c,*n;
3631 	  c = (yyvsp[-1].toobar_item);
3632 	  n= (rc_toolbar_item *)
3633 	      res_alloc (sizeof (rc_toolbar_item));
3634 	  if (c != NULL)
3635 	    while (c->next != NULL)
3636 	      c = c->next;
3637 	  n->prev = c;
3638 	  n->next = NULL;
3639 	  if (c != NULL)
3640 	    c->next = n;
3641 	  n->id.named = 0;
3642 	  n->id.u.id = 0;
3643 	  if ((yyvsp[-1].toobar_item) == NULL)
3644 	    (yyval.toobar_item) = n;
3645 	  else
3646 	    (yyval.toobar_item) = (yyvsp[-1].toobar_item);
3647 	}
3648 #line 3649 "rcparse.c" /* yacc.c:1646  */
3649     break;
3650 
3651   case 187:
3652 #line 1410 "rcparse.y" /* yacc.c:1646  */
3653     {
3654 	    define_versioninfo ((yyvsp[-5].id), language, (yyvsp[-3].fixver), (yyvsp[-1].verinfo));
3655 	    if (yychar != YYEMPTY)
3656 	      YYERROR;
3657 	    rcparse_discard_strings ();
3658 	  }
3659 #line 3660 "rcparse.c" /* yacc.c:1646  */
3660     break;
3661 
3662   case 188:
3663 #line 1420 "rcparse.y" /* yacc.c:1646  */
3664     {
3665 	    (yyval.fixver) = ((rc_fixed_versioninfo *)
3666 		  res_alloc (sizeof (rc_fixed_versioninfo)));
3667 	    memset ((yyval.fixver), 0, sizeof (rc_fixed_versioninfo));
3668 	  }
3669 #line 3670 "rcparse.c" /* yacc.c:1646  */
3670     break;
3671 
3672   case 189:
3673 #line 1427 "rcparse.y" /* yacc.c:1646  */
3674     {
3675 	    (yyvsp[-5].fixver)->file_version_ms = ((yyvsp[-3].il) << 16) | ((yyvsp[-2].il) & 0xffff);
3676 	    (yyvsp[-5].fixver)->file_version_ls = ((yyvsp[-1].il) << 16) | ((yyvsp[0].il) & 0xffff);
3677 	    (yyval.fixver) = (yyvsp[-5].fixver);
3678 	  }
3679 #line 3680 "rcparse.c" /* yacc.c:1646  */
3680     break;
3681 
3682   case 190:
3683 #line 1434 "rcparse.y" /* yacc.c:1646  */
3684     {
3685 	    (yyvsp[-5].fixver)->product_version_ms = ((yyvsp[-3].il) << 16) | ((yyvsp[-2].il) & 0xffff);
3686 	    (yyvsp[-5].fixver)->product_version_ls = ((yyvsp[-1].il) << 16) | ((yyvsp[0].il) & 0xffff);
3687 	    (yyval.fixver) = (yyvsp[-5].fixver);
3688 	  }
3689 #line 3690 "rcparse.c" /* yacc.c:1646  */
3690     break;
3691 
3692   case 191:
3693 #line 1440 "rcparse.y" /* yacc.c:1646  */
3694     {
3695 	    (yyvsp[-2].fixver)->file_flags_mask = (yyvsp[0].il);
3696 	    (yyval.fixver) = (yyvsp[-2].fixver);
3697 	  }
3698 #line 3699 "rcparse.c" /* yacc.c:1646  */
3699     break;
3700 
3701   case 192:
3702 #line 1445 "rcparse.y" /* yacc.c:1646  */
3703     {
3704 	    (yyvsp[-2].fixver)->file_flags = (yyvsp[0].il);
3705 	    (yyval.fixver) = (yyvsp[-2].fixver);
3706 	  }
3707 #line 3708 "rcparse.c" /* yacc.c:1646  */
3708     break;
3709 
3710   case 193:
3711 #line 1450 "rcparse.y" /* yacc.c:1646  */
3712     {
3713 	    (yyvsp[-2].fixver)->file_os = (yyvsp[0].il);
3714 	    (yyval.fixver) = (yyvsp[-2].fixver);
3715 	  }
3716 #line 3717 "rcparse.c" /* yacc.c:1646  */
3717     break;
3718 
3719   case 194:
3720 #line 1455 "rcparse.y" /* yacc.c:1646  */
3721     {
3722 	    (yyvsp[-2].fixver)->file_type = (yyvsp[0].il);
3723 	    (yyval.fixver) = (yyvsp[-2].fixver);
3724 	  }
3725 #line 3726 "rcparse.c" /* yacc.c:1646  */
3726     break;
3727 
3728   case 195:
3729 #line 1460 "rcparse.y" /* yacc.c:1646  */
3730     {
3731 	    (yyvsp[-2].fixver)->file_subtype = (yyvsp[0].il);
3732 	    (yyval.fixver) = (yyvsp[-2].fixver);
3733 	  }
3734 #line 3735 "rcparse.c" /* yacc.c:1646  */
3735     break;
3736 
3737   case 196:
3738 #line 1474 "rcparse.y" /* yacc.c:1646  */
3739     {
3740 	    (yyval.verinfo) = NULL;
3741 	  }
3742 #line 3743 "rcparse.c" /* yacc.c:1646  */
3743     break;
3744 
3745   case 197:
3746 #line 1478 "rcparse.y" /* yacc.c:1646  */
3747     {
3748 	    (yyval.verinfo) = append_ver_stringfileinfo ((yyvsp[-4].verinfo), (yyvsp[-1].verstringtable));
3749 	  }
3750 #line 3751 "rcparse.c" /* yacc.c:1646  */
3751     break;
3752 
3753   case 198:
3754 #line 1482 "rcparse.y" /* yacc.c:1646  */
3755     {
3756 	    (yyval.verinfo) = append_ver_varfileinfo ((yyvsp[-6].verinfo), (yyvsp[-2].uni), (yyvsp[-1].vervar));
3757 	  }
3758 #line 3759 "rcparse.c" /* yacc.c:1646  */
3759     break;
3760 
3761   case 199:
3762 #line 1489 "rcparse.y" /* yacc.c:1646  */
3763     {
3764 	    (yyval.verstringtable) = NULL;
3765 	  }
3766 #line 3767 "rcparse.c" /* yacc.c:1646  */
3767     break;
3768 
3769   case 200:
3770 #line 1493 "rcparse.y" /* yacc.c:1646  */
3771     {
3772 	    (yyval.verstringtable) = append_ver_stringtable ((yyvsp[-4].verstringtable), (yyvsp[-3].s), (yyvsp[-1].verstring));
3773 	  }
3774 #line 3775 "rcparse.c" /* yacc.c:1646  */
3775     break;
3776 
3777   case 201:
3778 #line 1500 "rcparse.y" /* yacc.c:1646  */
3779     {
3780 	    (yyval.verstring) = NULL;
3781 	  }
3782 #line 3783 "rcparse.c" /* yacc.c:1646  */
3783     break;
3784 
3785   case 202:
3786 #line 1504 "rcparse.y" /* yacc.c:1646  */
3787     {
3788 	    (yyval.verstring) = append_verval ((yyvsp[-4].verstring), (yyvsp[-2].uni), (yyvsp[0].uni));
3789 	  }
3790 #line 3791 "rcparse.c" /* yacc.c:1646  */
3791     break;
3792 
3793   case 203:
3794 #line 1511 "rcparse.y" /* yacc.c:1646  */
3795     {
3796 	    (yyval.vervar) = NULL;
3797 	  }
3798 #line 3799 "rcparse.c" /* yacc.c:1646  */
3799     break;
3800 
3801   case 204:
3802 #line 1515 "rcparse.y" /* yacc.c:1646  */
3803     {
3804 	    (yyval.vervar) = append_vertrans ((yyvsp[-2].vervar), (yyvsp[-1].il), (yyvsp[0].il));
3805 	  }
3806 #line 3807 "rcparse.c" /* yacc.c:1646  */
3807     break;
3808 
3809   case 205:
3810 #line 1524 "rcparse.y" /* yacc.c:1646  */
3811     {
3812 	    (yyval.id).named = 0;
3813 	    (yyval.id).u.id = (yyvsp[0].il);
3814 	  }
3815 #line 3816 "rcparse.c" /* yacc.c:1646  */
3816     break;
3817 
3818   case 206:
3819 #line 1529 "rcparse.y" /* yacc.c:1646  */
3820     {
3821 	    res_unistring_to_id (&(yyval.id), (yyvsp[0].uni));
3822 	  }
3823 #line 3824 "rcparse.c" /* yacc.c:1646  */
3824     break;
3825 
3826   case 207:
3827 #line 1538 "rcparse.y" /* yacc.c:1646  */
3828     {
3829 	    (yyval.uni) = (yyvsp[0].uni);
3830 	  }
3831 #line 3832 "rcparse.c" /* yacc.c:1646  */
3832     break;
3833 
3834   case 208:
3835 #line 1542 "rcparse.y" /* yacc.c:1646  */
3836     {
3837 	    unichar *h = NULL;
3838 	    unicode_from_ascii ((rc_uint_type *) NULL, &h, (yyvsp[0].s));
3839 	    (yyval.uni) = h;
3840 	  }
3841 #line 3842 "rcparse.c" /* yacc.c:1646  */
3842     break;
3843 
3844   case 209:
3845 #line 1552 "rcparse.y" /* yacc.c:1646  */
3846     {
3847 	    (yyval.id).named = 0;
3848 	    (yyval.id).u.id = (yyvsp[-1].il);
3849 	  }
3850 #line 3851 "rcparse.c" /* yacc.c:1646  */
3851     break;
3852 
3853   case 210:
3854 #line 1557 "rcparse.y" /* yacc.c:1646  */
3855     {
3856 	    res_unistring_to_id (&(yyval.id), (yyvsp[0].uni));
3857 	  }
3858 #line 3859 "rcparse.c" /* yacc.c:1646  */
3859     break;
3860 
3861   case 211:
3862 #line 1561 "rcparse.y" /* yacc.c:1646  */
3863     {
3864 	    res_unistring_to_id (&(yyval.id), (yyvsp[-1].uni));
3865 	  }
3866 #line 3867 "rcparse.c" /* yacc.c:1646  */
3867     break;
3868 
3869   case 212:
3870 #line 1571 "rcparse.y" /* yacc.c:1646  */
3871     {
3872 	    memset (&(yyval.res_info), 0, sizeof (rc_res_res_info));
3873 	    (yyval.res_info).language = language;
3874 	    /* FIXME: Is this the right default?  */
3875 	    (yyval.res_info).memflags = MEMFLAG_MOVEABLE | MEMFLAG_PURE | MEMFLAG_DISCARDABLE;
3876 	  }
3877 #line 3878 "rcparse.c" /* yacc.c:1646  */
3878     break;
3879 
3880   case 213:
3881 #line 1578 "rcparse.y" /* yacc.c:1646  */
3882     {
3883 	    (yyval.res_info) = (yyvsp[-1].res_info);
3884 	    (yyval.res_info).memflags |= (yyvsp[0].memflags).on;
3885 	    (yyval.res_info).memflags &=~ (yyvsp[0].memflags).off;
3886 	  }
3887 #line 3888 "rcparse.c" /* yacc.c:1646  */
3888     break;
3889 
3890   case 214:
3891 #line 1584 "rcparse.y" /* yacc.c:1646  */
3892     {
3893 	    (yyval.res_info) = (yyvsp[-2].res_info);
3894 	    (yyval.res_info).characteristics = (yyvsp[0].il);
3895 	  }
3896 #line 3897 "rcparse.c" /* yacc.c:1646  */
3897     break;
3898 
3899   case 215:
3900 #line 1589 "rcparse.y" /* yacc.c:1646  */
3901     {
3902 	    (yyval.res_info) = (yyvsp[-3].res_info);
3903 	    (yyval.res_info).language = (yyvsp[-1].il) | ((yyvsp[0].il) << SUBLANG_SHIFT);
3904 	  }
3905 #line 3906 "rcparse.c" /* yacc.c:1646  */
3906     break;
3907 
3908   case 216:
3909 #line 1594 "rcparse.y" /* yacc.c:1646  */
3910     {
3911 	    (yyval.res_info) = (yyvsp[-2].res_info);
3912 	    (yyval.res_info).version = (yyvsp[0].il);
3913 	  }
3914 #line 3915 "rcparse.c" /* yacc.c:1646  */
3915     break;
3916 
3917   case 217:
3918 #line 1604 "rcparse.y" /* yacc.c:1646  */
3919     {
3920 	    memset (&(yyval.res_info), 0, sizeof (rc_res_res_info));
3921 	    (yyval.res_info).language = language;
3922 	    (yyval.res_info).memflags = MEMFLAG_MOVEABLE | MEMFLAG_DISCARDABLE;
3923 	  }
3924 #line 3925 "rcparse.c" /* yacc.c:1646  */
3925     break;
3926 
3927   case 218:
3928 #line 1610 "rcparse.y" /* yacc.c:1646  */
3929     {
3930 	    (yyval.res_info) = (yyvsp[-1].res_info);
3931 	    (yyval.res_info).memflags |= (yyvsp[0].memflags).on;
3932 	    (yyval.res_info).memflags &=~ (yyvsp[0].memflags).off;
3933 	  }
3934 #line 3935 "rcparse.c" /* yacc.c:1646  */
3935     break;
3936 
3937   case 219:
3938 #line 1621 "rcparse.y" /* yacc.c:1646  */
3939     {
3940 	    memset (&(yyval.res_info), 0, sizeof (rc_res_res_info));
3941 	    (yyval.res_info).language = language;
3942 	    (yyval.res_info).memflags = MEMFLAG_MOVEABLE | MEMFLAG_PURE | MEMFLAG_DISCARDABLE;
3943 	  }
3944 #line 3945 "rcparse.c" /* yacc.c:1646  */
3945     break;
3946 
3947   case 220:
3948 #line 1627 "rcparse.y" /* yacc.c:1646  */
3949     {
3950 	    (yyval.res_info) = (yyvsp[-1].res_info);
3951 	    (yyval.res_info).memflags |= (yyvsp[0].memflags).on;
3952 	    (yyval.res_info).memflags &=~ (yyvsp[0].memflags).off;
3953 	  }
3954 #line 3955 "rcparse.c" /* yacc.c:1646  */
3955     break;
3956 
3957   case 221:
3958 #line 1639 "rcparse.y" /* yacc.c:1646  */
3959     {
3960 	    (yyval.memflags).on = MEMFLAG_MOVEABLE;
3961 	    (yyval.memflags).off = 0;
3962 	  }
3963 #line 3964 "rcparse.c" /* yacc.c:1646  */
3964     break;
3965 
3966   case 222:
3967 #line 1644 "rcparse.y" /* yacc.c:1646  */
3968     {
3969 	    (yyval.memflags).on = 0;
3970 	    (yyval.memflags).off = MEMFLAG_MOVEABLE;
3971 	  }
3972 #line 3973 "rcparse.c" /* yacc.c:1646  */
3973     break;
3974 
3975   case 223:
3976 #line 1649 "rcparse.y" /* yacc.c:1646  */
3977     {
3978 	    (yyval.memflags).on = MEMFLAG_PURE;
3979 	    (yyval.memflags).off = 0;
3980 	  }
3981 #line 3982 "rcparse.c" /* yacc.c:1646  */
3982     break;
3983 
3984   case 224:
3985 #line 1654 "rcparse.y" /* yacc.c:1646  */
3986     {
3987 	    (yyval.memflags).on = 0;
3988 	    (yyval.memflags).off = MEMFLAG_PURE;
3989 	  }
3990 #line 3991 "rcparse.c" /* yacc.c:1646  */
3991     break;
3992 
3993   case 225:
3994 #line 1659 "rcparse.y" /* yacc.c:1646  */
3995     {
3996 	    (yyval.memflags).on = MEMFLAG_PRELOAD;
3997 	    (yyval.memflags).off = 0;
3998 	  }
3999 #line 4000 "rcparse.c" /* yacc.c:1646  */
4000     break;
4001 
4002   case 226:
4003 #line 1664 "rcparse.y" /* yacc.c:1646  */
4004     {
4005 	    (yyval.memflags).on = 0;
4006 	    (yyval.memflags).off = MEMFLAG_PRELOAD;
4007 	  }
4008 #line 4009 "rcparse.c" /* yacc.c:1646  */
4009     break;
4010 
4011   case 227:
4012 #line 1669 "rcparse.y" /* yacc.c:1646  */
4013     {
4014 	    (yyval.memflags).on = MEMFLAG_DISCARDABLE;
4015 	    (yyval.memflags).off = 0;
4016 	  }
4017 #line 4018 "rcparse.c" /* yacc.c:1646  */
4018     break;
4019 
4020   case 228:
4021 #line 1679 "rcparse.y" /* yacc.c:1646  */
4022     {
4023 	    (yyval.s) = (yyvsp[0].s);
4024 	  }
4025 #line 4026 "rcparse.c" /* yacc.c:1646  */
4026     break;
4027 
4028   case 229:
4029 #line 1683 "rcparse.y" /* yacc.c:1646  */
4030     {
4031 	    (yyval.s) = (yyvsp[0].s);
4032 	  }
4033 #line 4034 "rcparse.c" /* yacc.c:1646  */
4034     break;
4035 
4036   case 230:
4037 #line 1691 "rcparse.y" /* yacc.c:1646  */
4038     {
4039 	    (yyval.uni) = (yyvsp[0].uni);
4040 	  }
4041 #line 4042 "rcparse.c" /* yacc.c:1646  */
4042     break;
4043 
4044   case 231:
4045 #line 1696 "rcparse.y" /* yacc.c:1646  */
4046     {
4047 	    rc_uint_type l1 = unichar_len ((yyvsp[-1].uni));
4048 	    rc_uint_type l2 = unichar_len ((yyvsp[0].uni));
4049 	    unichar *h = (unichar *) res_alloc ((l1 + l2 + 1) * sizeof (unichar));
4050 	    if (l1 != 0)
4051 	      memcpy (h, (yyvsp[-1].uni), l1 * sizeof (unichar));
4052 	    if (l2 != 0)
4053 	      memcpy (h + l1, (yyvsp[0].uni), l2  * sizeof (unichar));
4054 	    h[l1 + l2] = 0;
4055 	    (yyval.uni) = h;
4056 	  }
4057 #line 4058 "rcparse.c" /* yacc.c:1646  */
4058     break;
4059 
4060   case 232:
4061 #line 1711 "rcparse.y" /* yacc.c:1646  */
4062     {
4063 	    (yyval.uni) = unichar_dup ((yyvsp[0].uni));
4064 	  }
4065 #line 4066 "rcparse.c" /* yacc.c:1646  */
4066     break;
4067 
4068   case 233:
4069 #line 1715 "rcparse.y" /* yacc.c:1646  */
4070     {
4071 	    unichar *h = NULL;
4072 	    unicode_from_ascii ((rc_uint_type *) NULL, &h, (yyvsp[0].s));
4073 	    (yyval.uni) = h;
4074 	  }
4075 #line 4076 "rcparse.c" /* yacc.c:1646  */
4076     break;
4077 
4078   case 234:
4079 #line 1724 "rcparse.y" /* yacc.c:1646  */
4080     {
4081 	    (yyval.suni) = (yyvsp[0].suni);
4082 	  }
4083 #line 4084 "rcparse.c" /* yacc.c:1646  */
4084     break;
4085 
4086   case 235:
4087 #line 1728 "rcparse.y" /* yacc.c:1646  */
4088     {
4089 	    unichar *h = NULL;
4090 	    rc_uint_type l = 0;
4091 	    unicode_from_ascii_len (&l, &h, (yyvsp[0].ss).s, (yyvsp[0].ss).length);
4092 	    (yyval.suni).s = h;
4093 	    (yyval.suni).length = l;
4094 	  }
4095 #line 4096 "rcparse.c" /* yacc.c:1646  */
4096     break;
4097 
4098   case 236:
4099 #line 1740 "rcparse.y" /* yacc.c:1646  */
4100     {
4101 	    (yyval.suni) = (yyvsp[0].suni);
4102 	  }
4103 #line 4104 "rcparse.c" /* yacc.c:1646  */
4104     break;
4105 
4106   case 237:
4107 #line 1745 "rcparse.y" /* yacc.c:1646  */
4108     {
4109 	    rc_uint_type l1 = (yyvsp[-1].suni).length;
4110 	    rc_uint_type l2 = (yyvsp[0].suni).length;
4111 	    unichar *h = (unichar *) res_alloc ((l1 + l2 + 1) * sizeof (unichar));
4112 	    if (l1 != 0)
4113 	      memcpy (h, (yyvsp[-1].suni).s, l1 * sizeof (unichar));
4114 	    if (l2 != 0)
4115 	      memcpy (h + l1, (yyvsp[0].suni).s, l2  * sizeof (unichar));
4116 	    h[l1 + l2] = 0;
4117 	    (yyval.suni).length = l1 + l2;
4118 	    (yyval.suni).s = h;
4119 	  }
4120 #line 4121 "rcparse.c" /* yacc.c:1646  */
4121     break;
4122 
4123   case 238:
4124 #line 1761 "rcparse.y" /* yacc.c:1646  */
4125     {
4126 	    (yyval.ss) = (yyvsp[0].ss);
4127 	  }
4128 #line 4129 "rcparse.c" /* yacc.c:1646  */
4129     break;
4130 
4131   case 239:
4132 #line 1765 "rcparse.y" /* yacc.c:1646  */
4133     {
4134 	    rc_uint_type l = (yyvsp[-1].ss).length + (yyvsp[0].ss).length;
4135 	    char *h = (char *) res_alloc (l);
4136 	    memcpy (h, (yyvsp[-1].ss).s, (yyvsp[-1].ss).length);
4137 	    memcpy (h + (yyvsp[-1].ss).length, (yyvsp[0].ss).s, (yyvsp[0].ss).length);
4138 	    (yyval.ss).s = h;
4139 	    (yyval.ss).length = l;
4140 	  }
4141 #line 4142 "rcparse.c" /* yacc.c:1646  */
4142     break;
4143 
4144   case 240:
4145 #line 1777 "rcparse.y" /* yacc.c:1646  */
4146     {
4147 	    (yyval.suni) = (yyvsp[0].suni);
4148 	  }
4149 #line 4150 "rcparse.c" /* yacc.c:1646  */
4150     break;
4151 
4152   case 241:
4153 #line 1781 "rcparse.y" /* yacc.c:1646  */
4154     {
4155 	    rc_uint_type l = (yyvsp[-1].suni).length + (yyvsp[0].suni).length;
4156 	    unichar *h = (unichar *) res_alloc (l * sizeof (unichar));
4157 	    memcpy (h, (yyvsp[-1].suni).s, (yyvsp[-1].suni).length * sizeof (unichar));
4158 	    memcpy (h + (yyvsp[-1].suni).length, (yyvsp[0].suni).s, (yyvsp[0].suni).length  * sizeof (unichar));
4159 	    (yyval.suni).s = h;
4160 	    (yyval.suni).length = l;
4161 	  }
4162 #line 4163 "rcparse.c" /* yacc.c:1646  */
4163     break;
4164 
4165   case 242:
4166 #line 1803 "rcparse.y" /* yacc.c:1646  */
4167     {
4168 	    style |= (yyvsp[0].il);
4169 	  }
4170 #line 4171 "rcparse.c" /* yacc.c:1646  */
4171     break;
4172 
4173   case 243:
4174 #line 1807 "rcparse.y" /* yacc.c:1646  */
4175     {
4176 	    style &=~ (yyvsp[0].il);
4177 	  }
4178 #line 4179 "rcparse.c" /* yacc.c:1646  */
4179     break;
4180 
4181   case 244:
4182 #line 1811 "rcparse.y" /* yacc.c:1646  */
4183     {
4184 	    style |= (yyvsp[0].il);
4185 	  }
4186 #line 4187 "rcparse.c" /* yacc.c:1646  */
4187     break;
4188 
4189   case 245:
4190 #line 1815 "rcparse.y" /* yacc.c:1646  */
4191     {
4192 	    style &=~ (yyvsp[0].il);
4193 	  }
4194 #line 4195 "rcparse.c" /* yacc.c:1646  */
4195     break;
4196 
4197   case 246:
4198 #line 1822 "rcparse.y" /* yacc.c:1646  */
4199     {
4200 	    (yyval.il) = (yyvsp[0].i).val;
4201 	  }
4202 #line 4203 "rcparse.c" /* yacc.c:1646  */
4203     break;
4204 
4205   case 247:
4206 #line 1826 "rcparse.y" /* yacc.c:1646  */
4207     {
4208 	    (yyval.il) = (yyvsp[-1].il);
4209 	  }
4210 #line 4211 "rcparse.c" /* yacc.c:1646  */
4211     break;
4212 
4213   case 248:
4214 #line 1835 "rcparse.y" /* yacc.c:1646  */
4215     {
4216 	    (yyval.il) = 0;
4217 	  }
4218 #line 4219 "rcparse.c" /* yacc.c:1646  */
4219     break;
4220 
4221   case 249:
4222 #line 1839 "rcparse.y" /* yacc.c:1646  */
4223     {
4224 	    (yyval.il) = (yyvsp[0].il);
4225 	  }
4226 #line 4227 "rcparse.c" /* yacc.c:1646  */
4227     break;
4228 
4229   case 250:
4230 #line 1848 "rcparse.y" /* yacc.c:1646  */
4231     {
4232 	    (yyval.il) = (yyvsp[0].il);
4233 	  }
4234 #line 4235 "rcparse.c" /* yacc.c:1646  */
4235     break;
4236 
4237   case 251:
4238 #line 1857 "rcparse.y" /* yacc.c:1646  */
4239     {
4240 	    (yyval.il) = (yyvsp[0].i).val;
4241 	  }
4242 #line 4243 "rcparse.c" /* yacc.c:1646  */
4243     break;
4244 
4245   case 252:
4246 #line 1866 "rcparse.y" /* yacc.c:1646  */
4247     {
4248 	    (yyval.i) = (yyvsp[0].i);
4249 	  }
4250 #line 4251 "rcparse.c" /* yacc.c:1646  */
4251     break;
4252 
4253   case 253:
4254 #line 1870 "rcparse.y" /* yacc.c:1646  */
4255     {
4256 	    (yyval.i) = (yyvsp[-1].i);
4257 	  }
4258 #line 4259 "rcparse.c" /* yacc.c:1646  */
4259     break;
4260 
4261   case 254:
4262 #line 1874 "rcparse.y" /* yacc.c:1646  */
4263     {
4264 	    (yyval.i).val = ~ (yyvsp[0].i).val;
4265 	    (yyval.i).dword = (yyvsp[0].i).dword;
4266 	  }
4267 #line 4268 "rcparse.c" /* yacc.c:1646  */
4268     break;
4269 
4270   case 255:
4271 #line 1879 "rcparse.y" /* yacc.c:1646  */
4272     {
4273 	    (yyval.i).val = - (yyvsp[0].i).val;
4274 	    (yyval.i).dword = (yyvsp[0].i).dword;
4275 	  }
4276 #line 4277 "rcparse.c" /* yacc.c:1646  */
4277     break;
4278 
4279   case 256:
4280 #line 1884 "rcparse.y" /* yacc.c:1646  */
4281     {
4282 	    (yyval.i).val = (yyvsp[-2].i).val * (yyvsp[0].i).val;
4283 	    (yyval.i).dword = (yyvsp[-2].i).dword || (yyvsp[0].i).dword;
4284 	  }
4285 #line 4286 "rcparse.c" /* yacc.c:1646  */
4286     break;
4287 
4288   case 257:
4289 #line 1889 "rcparse.y" /* yacc.c:1646  */
4290     {
4291 	    (yyval.i).val = (yyvsp[-2].i).val / ((yyvsp[0].i).val ? (yyvsp[0].i).val : 1);
4292 	    (yyval.i).dword = (yyvsp[-2].i).dword || (yyvsp[0].i).dword;
4293 	  }
4294 #line 4295 "rcparse.c" /* yacc.c:1646  */
4295     break;
4296 
4297   case 258:
4298 #line 1894 "rcparse.y" /* yacc.c:1646  */
4299     {
4300 	    (yyval.i).val = (yyvsp[-2].i).val % ((yyvsp[0].i).val ? (yyvsp[0].i).val : 1);
4301 	    (yyval.i).dword = (yyvsp[-2].i).dword || (yyvsp[0].i).dword;
4302 	  }
4303 #line 4304 "rcparse.c" /* yacc.c:1646  */
4304     break;
4305 
4306   case 259:
4307 #line 1899 "rcparse.y" /* yacc.c:1646  */
4308     {
4309 	    (yyval.i).val = (yyvsp[-2].i).val + (yyvsp[0].i).val;
4310 	    (yyval.i).dword = (yyvsp[-2].i).dword || (yyvsp[0].i).dword;
4311 	  }
4312 #line 4313 "rcparse.c" /* yacc.c:1646  */
4313     break;
4314 
4315   case 260:
4316 #line 1904 "rcparse.y" /* yacc.c:1646  */
4317     {
4318 	    (yyval.i).val = (yyvsp[-2].i).val - (yyvsp[0].i).val;
4319 	    (yyval.i).dword = (yyvsp[-2].i).dword || (yyvsp[0].i).dword;
4320 	  }
4321 #line 4322 "rcparse.c" /* yacc.c:1646  */
4322     break;
4323 
4324   case 261:
4325 #line 1909 "rcparse.y" /* yacc.c:1646  */
4326     {
4327 	    (yyval.i).val = (yyvsp[-2].i).val & (yyvsp[0].i).val;
4328 	    (yyval.i).dword = (yyvsp[-2].i).dword || (yyvsp[0].i).dword;
4329 	  }
4330 #line 4331 "rcparse.c" /* yacc.c:1646  */
4331     break;
4332 
4333   case 262:
4334 #line 1914 "rcparse.y" /* yacc.c:1646  */
4335     {
4336 	    (yyval.i).val = (yyvsp[-2].i).val ^ (yyvsp[0].i).val;
4337 	    (yyval.i).dword = (yyvsp[-2].i).dword || (yyvsp[0].i).dword;
4338 	  }
4339 #line 4340 "rcparse.c" /* yacc.c:1646  */
4340     break;
4341 
4342   case 263:
4343 #line 1919 "rcparse.y" /* yacc.c:1646  */
4344     {
4345 	    (yyval.i).val = (yyvsp[-2].i).val | (yyvsp[0].i).val;
4346 	    (yyval.i).dword = (yyvsp[-2].i).dword || (yyvsp[0].i).dword;
4347 	  }
4348 #line 4349 "rcparse.c" /* yacc.c:1646  */
4349     break;
4350 
4351   case 264:
4352 #line 1930 "rcparse.y" /* yacc.c:1646  */
4353     {
4354 	    (yyval.il) = (yyvsp[0].il);
4355 	  }
4356 #line 4357 "rcparse.c" /* yacc.c:1646  */
4357     break;
4358 
4359   case 265:
4360 #line 1939 "rcparse.y" /* yacc.c:1646  */
4361     {
4362 	    (yyval.il) = (yyvsp[0].i).val;
4363 	  }
4364 #line 4365 "rcparse.c" /* yacc.c:1646  */
4365     break;
4366 
4367   case 266:
4368 #line 1950 "rcparse.y" /* yacc.c:1646  */
4369     {
4370 	    (yyval.i) = (yyvsp[0].i);
4371 	  }
4372 #line 4373 "rcparse.c" /* yacc.c:1646  */
4373     break;
4374 
4375   case 267:
4376 #line 1954 "rcparse.y" /* yacc.c:1646  */
4377     {
4378 	    (yyval.i) = (yyvsp[-1].i);
4379 	  }
4380 #line 4381 "rcparse.c" /* yacc.c:1646  */
4381     break;
4382 
4383   case 268:
4384 #line 1958 "rcparse.y" /* yacc.c:1646  */
4385     {
4386 	    (yyval.i).val = ~ (yyvsp[0].i).val;
4387 	    (yyval.i).dword = (yyvsp[0].i).dword;
4388 	  }
4389 #line 4390 "rcparse.c" /* yacc.c:1646  */
4390     break;
4391 
4392   case 269:
4393 #line 1963 "rcparse.y" /* yacc.c:1646  */
4394     {
4395 	    (yyval.i).val = (yyvsp[-2].i).val * (yyvsp[0].i).val;
4396 	    (yyval.i).dword = (yyvsp[-2].i).dword || (yyvsp[0].i).dword;
4397 	  }
4398 #line 4399 "rcparse.c" /* yacc.c:1646  */
4399     break;
4400 
4401   case 270:
4402 #line 1968 "rcparse.y" /* yacc.c:1646  */
4403     {
4404 	    (yyval.i).val = (yyvsp[-2].i).val / ((yyvsp[0].i).val ? (yyvsp[0].i).val : 1);
4405 	    (yyval.i).dword = (yyvsp[-2].i).dword || (yyvsp[0].i).dword;
4406 	  }
4407 #line 4408 "rcparse.c" /* yacc.c:1646  */
4408     break;
4409 
4410   case 271:
4411 #line 1973 "rcparse.y" /* yacc.c:1646  */
4412     {
4413 	    /* PR 17512: file: 89105a25.  */
4414 	    (yyval.i).val = (yyvsp[-2].i).val % ((yyvsp[0].i).val ? (yyvsp[0].i).val : 1);
4415 	    (yyval.i).dword = (yyvsp[-2].i).dword || (yyvsp[0].i).dword;
4416 	  }
4417 #line 4418 "rcparse.c" /* yacc.c:1646  */
4418     break;
4419 
4420   case 272:
4421 #line 1979 "rcparse.y" /* yacc.c:1646  */
4422     {
4423 	    (yyval.i).val = (yyvsp[-2].i).val + (yyvsp[0].i).val;
4424 	    (yyval.i).dword = (yyvsp[-2].i).dword || (yyvsp[0].i).dword;
4425 	  }
4426 #line 4427 "rcparse.c" /* yacc.c:1646  */
4427     break;
4428 
4429   case 273:
4430 #line 1984 "rcparse.y" /* yacc.c:1646  */
4431     {
4432 	    (yyval.i).val = (yyvsp[-2].i).val - (yyvsp[0].i).val;
4433 	    (yyval.i).dword = (yyvsp[-2].i).dword || (yyvsp[0].i).dword;
4434 	  }
4435 #line 4436 "rcparse.c" /* yacc.c:1646  */
4436     break;
4437 
4438   case 274:
4439 #line 1989 "rcparse.y" /* yacc.c:1646  */
4440     {
4441 	    (yyval.i).val = (yyvsp[-2].i).val & (yyvsp[0].i).val;
4442 	    (yyval.i).dword = (yyvsp[-2].i).dword || (yyvsp[0].i).dword;
4443 	  }
4444 #line 4445 "rcparse.c" /* yacc.c:1646  */
4445     break;
4446 
4447   case 275:
4448 #line 1994 "rcparse.y" /* yacc.c:1646  */
4449     {
4450 	    (yyval.i).val = (yyvsp[-2].i).val ^ (yyvsp[0].i).val;
4451 	    (yyval.i).dword = (yyvsp[-2].i).dword || (yyvsp[0].i).dword;
4452 	  }
4453 #line 4454 "rcparse.c" /* yacc.c:1646  */
4454     break;
4455 
4456   case 276:
4457 #line 1999 "rcparse.y" /* yacc.c:1646  */
4458     {
4459 	    (yyval.i).val = (yyvsp[-2].i).val | (yyvsp[0].i).val;
4460 	    (yyval.i).dword = (yyvsp[-2].i).dword || (yyvsp[0].i).dword;
4461 	  }
4462 #line 4463 "rcparse.c" /* yacc.c:1646  */
4463     break;
4464 
4465 
4466 #line 4467 "rcparse.c" /* yacc.c:1646  */
4467       default: break;
4468     }
4469   /* User semantic actions sometimes alter yychar, and that requires
4470      that yytoken be updated with the new translation.  We take the
4471      approach of translating immediately before every use of yytoken.
4472      One alternative is translating here after every semantic action,
4473      but that translation would be missed if the semantic action invokes
4474      YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or
4475      if it invokes YYBACKUP.  In the case of YYABORT or YYACCEPT, an
4476      incorrect destructor might then be invoked immediately.  In the
4477      case of YYERROR or YYBACKUP, subsequent parser actions might lead
4478      to an incorrect destructor call or verbose syntax error message
4479      before the lookahead is translated.  */
4480   YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
4481 
4482   YYPOPSTACK (yylen);
4483   yylen = 0;
4484   YY_STACK_PRINT (yyss, yyssp);
4485 
4486   *++yyvsp = yyval;
4487 
4488   /* Now 'shift' the result of the reduction.  Determine what state
4489      that goes to, based on the state we popped back to and the rule
4490      number reduced by.  */
4491 
4492   yyn = yyr1[yyn];
4493 
4494   yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
4495   if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
4496     yystate = yytable[yystate];
4497   else
4498     yystate = yydefgoto[yyn - YYNTOKENS];
4499 
4500   goto yynewstate;
4501 
4502 
4503 /*--------------------------------------.
4504 | yyerrlab -- here on detecting error.  |
4505 `--------------------------------------*/
4506 yyerrlab:
4507   /* Make sure we have latest lookahead translation.  See comments at
4508      user semantic actions for why this is necessary.  */
4509   yytoken = yychar == YYEMPTY ? YYEMPTY : YYTRANSLATE (yychar);
4510 
4511   /* If not already recovering from an error, report this error.  */
4512   if (!yyerrstatus)
4513     {
4514       ++yynerrs;
4515 #if ! YYERROR_VERBOSE
4516       yyerror (YY_("syntax error"));
4517 #else
4518 # define YYSYNTAX_ERROR yysyntax_error (&yymsg_alloc, &yymsg, \
4519                                         yyssp, yytoken)
4520       {
4521         char const *yymsgp = YY_("syntax error");
4522         int yysyntax_error_status;
4523         yysyntax_error_status = YYSYNTAX_ERROR;
4524         if (yysyntax_error_status == 0)
4525           yymsgp = yymsg;
4526         else if (yysyntax_error_status == 1)
4527           {
4528             if (yymsg != yymsgbuf)
4529               YYSTACK_FREE (yymsg);
4530             yymsg = (char *) YYSTACK_ALLOC (yymsg_alloc);
4531             if (!yymsg)
4532               {
4533                 yymsg = yymsgbuf;
4534                 yymsg_alloc = sizeof yymsgbuf;
4535                 yysyntax_error_status = 2;
4536               }
4537             else
4538               {
4539                 yysyntax_error_status = YYSYNTAX_ERROR;
4540                 yymsgp = yymsg;
4541               }
4542           }
4543         yyerror (yymsgp);
4544         if (yysyntax_error_status == 2)
4545           goto yyexhaustedlab;
4546       }
4547 # undef YYSYNTAX_ERROR
4548 #endif
4549     }
4550 
4551 
4552 
4553   if (yyerrstatus == 3)
4554     {
4555       /* If just tried and failed to reuse lookahead token after an
4556          error, discard it.  */
4557 
4558       if (yychar <= YYEOF)
4559         {
4560           /* Return failure if at end of input.  */
4561           if (yychar == YYEOF)
4562             YYABORT;
4563         }
4564       else
4565         {
4566           yydestruct ("Error: discarding",
4567                       yytoken, &yylval);
4568           yychar = YYEMPTY;
4569         }
4570     }
4571 
4572   /* Else will try to reuse lookahead token after shifting the error
4573      token.  */
4574   goto yyerrlab1;
4575 
4576 
4577 /*---------------------------------------------------.
4578 | yyerrorlab -- error raised explicitly by YYERROR.  |
4579 `---------------------------------------------------*/
4580 yyerrorlab:
4581 
4582   /* Pacify compilers like GCC when the user code never invokes
4583      YYERROR and the label yyerrorlab therefore never appears in user
4584      code.  */
4585   if (/*CONSTCOND*/ 0)
4586      goto yyerrorlab;
4587 
4588   /* Do not reclaim the symbols of the rule whose action triggered
4589      this YYERROR.  */
4590   YYPOPSTACK (yylen);
4591   yylen = 0;
4592   YY_STACK_PRINT (yyss, yyssp);
4593   yystate = *yyssp;
4594   goto yyerrlab1;
4595 
4596 
4597 /*-------------------------------------------------------------.
4598 | yyerrlab1 -- common code for both syntax error and YYERROR.  |
4599 `-------------------------------------------------------------*/
4600 yyerrlab1:
4601   yyerrstatus = 3;      /* Each real token shifted decrements this.  */
4602 
4603   for (;;)
4604     {
4605       yyn = yypact[yystate];
4606       if (!yypact_value_is_default (yyn))
4607         {
4608           yyn += YYTERROR;
4609           if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
4610             {
4611               yyn = yytable[yyn];
4612               if (0 < yyn)
4613                 break;
4614             }
4615         }
4616 
4617       /* Pop the current state because it cannot handle the error token.  */
4618       if (yyssp == yyss)
4619         YYABORT;
4620 
4621 
4622       yydestruct ("Error: popping",
4623                   yystos[yystate], yyvsp);
4624       YYPOPSTACK (1);
4625       yystate = *yyssp;
4626       YY_STACK_PRINT (yyss, yyssp);
4627     }
4628 
4629   YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
4630   *++yyvsp = yylval;
4631   YY_IGNORE_MAYBE_UNINITIALIZED_END
4632 
4633 
4634   /* Shift the error token.  */
4635   YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp);
4636 
4637   yystate = yyn;
4638   goto yynewstate;
4639 
4640 
4641 /*-------------------------------------.
4642 | yyacceptlab -- YYACCEPT comes here.  |
4643 `-------------------------------------*/
4644 yyacceptlab:
4645   yyresult = 0;
4646   goto yyreturn;
4647 
4648 /*-----------------------------------.
4649 | yyabortlab -- YYABORT comes here.  |
4650 `-----------------------------------*/
4651 yyabortlab:
4652   yyresult = 1;
4653   goto yyreturn;
4654 
4655 #if !defined yyoverflow || YYERROR_VERBOSE
4656 /*-------------------------------------------------.
4657 | yyexhaustedlab -- memory exhaustion comes here.  |
4658 `-------------------------------------------------*/
4659 yyexhaustedlab:
4660   yyerror (YY_("memory exhausted"));
4661   yyresult = 2;
4662   /* Fall through.  */
4663 #endif
4664 
4665 yyreturn:
4666   if (yychar != YYEMPTY)
4667     {
4668       /* Make sure we have latest lookahead translation.  See comments at
4669          user semantic actions for why this is necessary.  */
4670       yytoken = YYTRANSLATE (yychar);
4671       yydestruct ("Cleanup: discarding lookahead",
4672                   yytoken, &yylval);
4673     }
4674   /* Do not reclaim the symbols of the rule whose action triggered
4675      this YYABORT or YYACCEPT.  */
4676   YYPOPSTACK (yylen);
4677   YY_STACK_PRINT (yyss, yyssp);
4678   while (yyssp != yyss)
4679     {
4680       yydestruct ("Cleanup: popping",
4681                   yystos[*yyssp], yyvsp);
4682       YYPOPSTACK (1);
4683     }
4684 #ifndef yyoverflow
4685   if (yyss != yyssa)
4686     YYSTACK_FREE (yyss);
4687 #endif
4688 #if YYERROR_VERBOSE
4689   if (yymsg != yymsgbuf)
4690     YYSTACK_FREE (yymsg);
4691 #endif
4692   return yyresult;
4693 }
4694 #line 2005 "rcparse.y" /* yacc.c:1906  */
4695 
4696 
4697 /* Set the language from the command line.  */
4698 
4699 void
4700 rcparse_set_language (int lang)
4701 {
4702   language = lang;
4703 }
4704