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-2017 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
101static unsigned short language;
102
103/* The resource information during a sub statement.  */
104
105static rc_res_res_info sub_res_info;
106
107/* Dialog information.  This is built by the nonterminals styles and
108   controls.  */
109
110static rc_dialog dialog;
111
112/* This is used when building a style.  It is modified by the
113   nonterminal styleexpr.  */
114
115static unsigned long style;
116
117/* These are used when building a control.  They are set before using
118   control_params.  */
119
120static rc_uint_type base_style;
121static rc_uint_type default_style;
122static rc_res_id class;
123static rc_res_id res_text_field;
124static unichar null_unichar;
125
126/* This is used for COMBOBOX, LISTBOX and EDITTEXT which
127   do not allow resource 'text' field in control definition. */
128static 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
158extern 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
364typedef union YYSTYPE YYSTYPE;
365union 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
420extern YYSTYPE yylval;
421
422int 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
435typedef YYTYPE_UINT8 yytype_uint8;
436#else
437typedef unsigned char yytype_uint8;
438#endif
439
440#ifdef YYTYPE_INT8
441typedef YYTYPE_INT8 yytype_int8;
442#else
443typedef signed char yytype_int8;
444#endif
445
446#ifdef YYTYPE_UINT16
447typedef YYTYPE_UINT16 yytype_uint16;
448#else
449typedef unsigned short int yytype_uint16;
450#endif
451
452#ifdef YYTYPE_INT16
453typedef YYTYPE_INT16 yytype_int16;
454#else
455typedef 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
575void *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
581void 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.  */
593union 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.  */
672static 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.  */
714static 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.  */
750static 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).  */
796static 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.  */
825static 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.  */
884static 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].  */
941static 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].  */
957static 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.  */
975static 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
1063static 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.  */
1153static 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.  */
1210static 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.  */
1243static 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)                                  \
1289do                                                              \
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    }                                                           \
1303while (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)                        \
1320do {                                            \
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)                    \
1332do {                                                                      \
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
1347static void
1348yy_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
1366static void
1367yy_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
1381static void
1382yy_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)                            \
1394do {                                                            \
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
1404static void
1405yy_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)          \
1425do {                                    \
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.  */
1432int 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.  */
1465static YYSIZE_T
1466yystrlen (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.  */
1482static char *
1483yystpcpy (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.  */
1504static YYSIZE_T
1505yytnamerr (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.  */
1552static int
1553yysyntax_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
1684static void
1685yydestruct (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.  */
1701int yychar;
1702
1703/* The semantic value of the lookahead symbol.  */
1704YYSTYPE yylval;
1705/* Number of syntax errors so far.  */
1706int yynerrs;
1707
1708
1709/*----------.
1710| yyparse.  |
1711`----------*/
1712
1713int
1714yyparse (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`-----------*/
1854yybackup:
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`-----------------------------------------------------------*/
1920yydefault:
1921  yyn = yydefact[yystate];
1922  if (yyn == 0)
1923    goto yyerrlab;
1924  goto yyreduce;
1925
1926
1927/*-----------------------------.
1928| yyreduce -- Do a reduction.  |
1929`-----------------------------*/
1930yyreduce:
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`--------------------------------------*/
4485yyerrlab:
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`---------------------------------------------------*/
4559yyerrorlab:
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`-------------------------------------------------------------*/
4579yyerrlab1:
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`-------------------------------------*/
4623yyacceptlab:
4624  yyresult = 0;
4625  goto yyreturn;
4626
4627/*-----------------------------------.
4628| yyabortlab -- YYABORT comes here.  |
4629`-----------------------------------*/
4630yyabortlab:
4631  yyresult = 1;
4632  goto yyreturn;
4633
4634#if !defined yyoverflow || YYERROR_VERBOSE
4635/*-------------------------------------------------.
4636| yyexhaustedlab -- memory exhaustion comes here.  |
4637`-------------------------------------------------*/
4638yyexhaustedlab:
4639  yyerror (YY_("memory exhausted"));
4640  yyresult = 2;
4641  /* Fall through.  */
4642#endif
4643
4644yyreturn:
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
4678void
4679rcparse_set_language (int lang)
4680{
4681  language = lang;
4682}
4683