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