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