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