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