
/*  A Bison parser, made from rcparse.y
    by GNU Bison version 1.28  */

#define YYBISON 1  /* Identify Bison output.  */

#define	BEG	257
#define	END	258
#define	ACCELERATORS	259
#define	VIRTKEY	260
#define	ASCII	261
#define	NOINVERT	262
#define	SHIFT	263
#define	CONTROL	264
#define	ALT	265
#define	BITMAP	266
#define	CURSOR	267
#define	DIALOG	268
#define	DIALOGEX	269
#define	EXSTYLE	270
#define	CAPTION	271
#define	CLASS	272
#define	STYLE	273
#define	AUTO3STATE	274
#define	AUTOCHECKBOX	275
#define	AUTORADIOBUTTON	276
#define	CHECKBOX	277
#define	COMBOBOX	278
#define	CTEXT	279
#define	DEFPUSHBUTTON	280
#define	EDITTEXT	281
#define	GROUPBOX	282
#define	LISTBOX	283
#define	LTEXT	284
#define	PUSHBOX	285
#define	PUSHBUTTON	286
#define	RADIOBUTTON	287
#define	RTEXT	288
#define	SCROLLBAR	289
#define	STATE3	290
#define	USERBUTTON	291
#define	BEDIT	292
#define	HEDIT	293
#define	IEDIT	294
#define	FONT	295
#define	ICON	296
#define	LANGUAGE	297
#define	CHARACTERISTICS	298
#define	VERSIONK	299
#define	MENU	300
#define	MENUEX	301
#define	MENUITEM	302
#define	SEPARATOR	303
#define	POPUP	304
#define	CHECKED	305
#define	GRAYED	306
#define	HELP	307
#define	INACTIVE	308
#define	MENUBARBREAK	309
#define	MENUBREAK	310
#define	MESSAGETABLE	311
#define	RCDATA	312
#define	STRINGTABLE	313
#define	VERSIONINFO	314
#define	FILEVERSION	315
#define	PRODUCTVERSION	316
#define	FILEFLAGSMASK	317
#define	FILEFLAGS	318
#define	FILEOS	319
#define	FILETYPE	320
#define	FILESUBTYPE	321
#define	BLOCKSTRINGFILEINFO	322
#define	BLOCKVARFILEINFO	323
#define	VALUE	324
#define	BLOCK	325
#define	MOVEABLE	326
#define	FIXED	327
#define	PURE	328
#define	IMPURE	329
#define	PRELOAD	330
#define	LOADONCALL	331
#define	DISCARDABLE	332
#define	NOT	333
#define	QUOTEDSTRING	334
#define	STRING	335
#define	NUMBER	336
#define	SIZEDSTRING	337
#define	IGNORED_TOKEN	338
#define	NEG	339

#line 1 "rcparse.y"
 /* rcparse.y -- parser for Windows rc files
   Copyright 1997, 1998 Free Software Foundation, Inc.
   Written by Ian Lance Taylor, Cygnus Support.

   This file is part of GNU Binutils.

   This program is free software; you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
   the Free Software Foundation; either version 2 of the License, or
   (at your option) any later version.

   This program is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   GNU General Public License for more details.

   You should have received a copy of the GNU General Public License
   along with this program; if not, write to the Free Software
   Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
   02111-1307, USA.  */

/* This is a parser for Windows rc files.  It is based on the parser
   by Gunther Ebert <gunther.ebert@ixos-leipzig.de>.  */

#include "bfd.h"
#include "bucomm.h"
#include "libiberty.h"
#include "windres.h"

#include <ctype.h>

/* The current language.  */

static unsigned short language;

/* The resource information during a sub statement.  */

static struct res_res_info sub_res_info;

/* Dialog information.  This is built by the nonterminals styles and
   controls.  */

static struct dialog dialog;

/* This is used when building a style.  It is modified by the
   nonterminal styleexpr.  */

static unsigned long style;

/* These are used when building a control.  They are set before using
   control_params.  */

static unsigned long base_style;
static unsigned long default_style;
static unsigned long class;


#line 59 "rcparse.y"
typedef union
{
  struct accelerator acc;
  struct accelerator *pacc;
  struct dialog_control *dialog_control;
  struct menuitem *menuitem;
  struct
  {
    struct rcdata_item *first;
    struct rcdata_item *last;
  } rcdata;
  struct rcdata_item *rcdata_item;
  struct stringtable_data *stringtable;
  struct fixed_versioninfo *fixver;
  struct ver_info *verinfo;
  struct ver_stringinfo *verstring;
  struct ver_varinfo *vervar;
  struct res_id id;
  struct res_res_info res_info;
  struct
  {
    unsigned short on;
    unsigned short off;
  } memflags;
  struct
  {
    unsigned long val;
    /* Nonzero if this number was explicitly specified as long.  */
    int dword;
  } i;
  unsigned long il;
  unsigned short is;
  const char *s;
  struct
  {
    unsigned long length;
    const char *s;
  } ss;
} YYSTYPE;
#include <stdio.h>

#ifndef __cplusplus
#ifndef __STDC__
#define const
#endif
#endif



#define	YYFINAL		475
#define	YYFLAG		-32768
#define	YYNTBASE	99

#define YYTRANSLATE(x) ((unsigned)(x) <= 339 ? yytranslate[x] : 189)

static const char yytranslate[] = {     0,
     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     2,     2,     2,     2,     2,     2,    92,    87,     2,    97,
    98,    90,    88,    95,    89,     2,    91,     2,     2,     2,
     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    96,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     2,     2,     2,    86,     2,     2,     2,     2,     2,     2,
     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     2,     2,     2,    85,     2,    93,     2,     2,     2,     2,
     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     2,     2,     2,     2,     2,     1,     3,     4,     5,     6,
     7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
    27,    28,    29,    30,    31,    32,    33,    34,    35,    36,
    37,    38,    39,    40,    41,    42,    43,    44,    45,    46,
    47,    48,    49,    50,    51,    52,    53,    54,    55,    56,
    57,    58,    59,    60,    61,    62,    63,    64,    65,    66,
    67,    68,    69,    70,    71,    72,    73,    74,    75,    76,
    77,    78,    79,    80,    81,    82,    83,    84,    94
};

#if YYDEBUG != 0
static const short yyprhs[] = {     0,
     0,     1,     5,     9,    13,    17,    21,    25,    29,    33,
    37,    41,    45,    49,    53,    57,    61,    62,    69,    70,
    73,    76,    81,    83,    85,    87,    91,    94,    96,    98,
   100,   102,   104,   106,   111,   116,   117,   131,   132,   146,
   147,   162,   163,   167,   168,   172,   176,   177,   182,   186,
   192,   200,   204,   208,   213,   217,   218,   221,   222,   226,
   227,   231,   232,   236,   237,   241,   242,   246,   247,   251,
   263,   276,   289,   303,   304,   308,   309,   313,   314,   318,
   319,   323,   324,   328,   335,   346,   358,   359,   363,   364,
   368,   369,   373,   374,   378,   379,   383,   384,   388,   389,
   393,   394,   398,   399,   403,   404,   421,   429,   439,   450,
   451,   454,   455,   459,   460,   464,   465,   469,   470,   474,
   479,   484,   488,   495,   496,   499,   504,   507,   514,   515,
   519,   522,   524,   526,   528,   530,   532,   534,   541,   542,
   545,   548,   552,   558,   561,   567,   574,   582,   592,   597,
   604,   605,   608,   609,   611,   613,   615,   619,   623,   624,
   631,   632,   636,   641,   648,   653,   660,   661,   668,   675,
   679,   683,   687,   691,   695,   696,   705,   713,   714,   720,
   721,   725,   727,   729,   730,   733,   737,   742,   746,   747,
   750,   751,   754,   756,   758,   760,   762,   764,   766,   768,
   770,   772,   774,   777,   781,   786,   788,   792,   793,   795,
   798,   800,   802,   806,   809,   812,   816,   820,   824,   828,
   832,   836,   840,   844,   847,   849,   851,   855,   858,   862,
   866,   870,   874,   878,   882,   886
};

static const short yyrhs[] = {    -1,
    99,   100,   101,     0,    99,   100,   107,     0,    99,   100,
   108,     0,    99,   100,   109,     0,    99,   100,   148,     0,
    99,   100,   149,     0,    99,   100,   150,     0,    99,   100,
   151,     0,    99,   100,   156,     0,    99,   100,   159,     0,
    99,   100,   160,     0,    99,   100,   165,     0,    99,   100,
   168,     0,    99,   100,   169,     0,    99,   100,    84,     0,
     0,   174,     5,   175,     3,   102,     4,     0,     0,   102,
   103,     0,   104,   186,     0,   104,   186,    95,   105,     0,
    80,     0,   187,     0,   106,     0,   105,    95,   106,     0,
   105,   106,     0,     6,     0,     7,     0,     8,     0,     9,
     0,    10,     0,    11,     0,   174,    12,   177,   179,     0,
   174,    13,   176,   179,     0,     0,   174,    14,   177,   113,
   187,   183,   183,   183,   110,   114,     3,   116,     4,     0,
     0,   174,    15,   177,   113,   187,   183,   183,   183,   111,
   114,     3,   116,     4,     0,     0,   174,    15,   177,   113,
   187,   183,   183,   183,   183,   112,   114,     3,   116,     4,
     0,     0,    16,    96,   184,     0,     0,   114,    17,    80,
     0,   114,    18,   174,     0,     0,   114,    19,   115,   180,
     0,   114,    16,   184,     0,   114,    41,   184,    95,    80,
     0,   114,    41,   184,    95,    80,   183,   183,     0,   114,
    46,   174,     0,   114,    44,   184,     0,   114,    43,   184,
   183,     0,   114,    45,   184,     0,     0,   116,   117,     0,
     0,    20,   118,   139,     0,     0,    21,   119,   139,     0,
     0,    22,   120,   139,     0,     0,    38,   121,   139,     0,
     0,    23,   122,   139,     0,     0,    24,   123,   139,     0,
    10,   140,   184,   183,   142,   183,   183,   183,   183,   182,
   141,     0,    10,   140,   184,   183,   142,   183,   183,   183,
   183,   183,   183,   141,     0,    10,   140,   184,    95,    80,
   142,   183,   183,   183,   183,   182,   141,     0,    10,   140,
   184,    95,    80,   142,   183,   183,   183,   183,   183,   183,
   141,     0,     0,    25,   124,   139,     0,     0,    26,   125,
   139,     0,     0,    27,   126,   139,     0,     0,    28,   127,
   139,     0,     0,    39,   128,   139,     0,    42,   140,   184,
   183,   183,   141,     0,    42,   140,   184,   183,   183,   183,
   183,   144,   182,   141,     0,    42,   140,   184,   183,   183,
   183,   183,   144,   183,   183,   141,     0,     0,    40,   129,
   139,     0,     0,    29,   130,   139,     0,     0,    30,   131,
   139,     0,     0,    31,   132,   139,     0,     0,    32,   133,
   139,     0,     0,    33,   134,   139,     0,     0,    34,   135,
   139,     0,     0,    35,   136,   139,     0,     0,    36,   137,
   139,     0,     0,    37,    80,    95,   184,    95,   184,    95,
   184,    95,   184,    95,   184,    95,   138,   180,   182,     0,
   140,   184,   183,   183,   183,   183,   141,     0,   140,   184,
   183,   183,   183,   183,   146,   182,   141,     0,   140,   184,
   183,   183,   183,   183,   146,   183,   183,   141,     0,     0,
    80,    95,     0,     0,     3,   161,     4,     0,     0,    95,
   143,   180,     0,     0,    95,   145,   180,     0,     0,    95,
   147,   180,     0,   174,    41,   176,   179,     0,   174,    42,
   176,   179,     0,    43,   184,   183,     0,   174,    46,   175,
     3,   152,     4,     0,     0,   152,   153,     0,    48,    80,
   183,   154,     0,    48,    49,     0,    50,    80,   154,     3,
   152,     4,     0,     0,   154,    95,   155,     0,   154,   155,
     0,    51,     0,    52,     0,    53,     0,    54,     0,    55,
     0,    56,     0,   174,    47,   175,     3,   157,     4,     0,
     0,   157,   158,     0,    48,    80,     0,    48,    80,   183,
     0,    48,    80,   183,   183,   182,     0,    48,    49,     0,
    50,    80,     3,   157,     4,     0,    50,    80,   183,     3,
   157,     4,     0,    50,    80,   183,   183,     3,   157,     4,
     0,    50,    80,   183,   183,   183,   182,     3,   157,     4,
     0,   174,    57,   177,   179,     0,   174,    58,   175,     3,
   161,     4,     0,     0,   162,   163,     0,     0,   164,     0,
    83,     0,   185,     0,   164,    95,    83,     0,   164,    95,
   185,     0,     0,    59,   175,     3,   166,   167,     4,     0,
     0,   167,   184,    80,     0,   167,   184,    95,    80,     0,
   174,   174,   175,     3,   161,     4,     0,   174,   174,   175,
   179,     0,   174,    60,   170,     3,   171,     4,     0,     0,
   170,    61,   184,   183,   183,   183,     0,   170,    62,   184,
   183,   183,   183,     0,   170,    63,   184,     0,   170,    64,
   184,     0,   170,    65,   184,     0,   170,    66,   184,     0,
   170,    67,   184,     0,     0,   171,    68,     3,    71,     3,
   172,     4,     4,     0,   171,    69,     3,    70,    80,   173,
     4,     0,     0,   172,    70,    80,    95,    80,     0,     0,
   173,   183,   183,     0,   187,     0,    81,     0,     0,   175,
   178,     0,   175,    44,   184,     0,   175,    43,   184,   183,
     0,   175,    45,   184,     0,     0,   176,   178,     0,     0,
   177,   178,     0,    72,     0,    73,     0,    74,     0,    75,
     0,    76,     0,    77,     0,    78,     0,    80,     0,    81,
     0,   181,     0,    79,   181,     0,   180,    85,   181,     0,
   180,    85,    79,   181,     0,    82,     0,    97,   184,    98,
     0,     0,   183,     0,    95,   184,     0,   185,     0,    82,
     0,    97,   185,    98,     0,    93,   185,     0,    89,   185,
     0,   185,    90,   185,     0,   185,    91,   185,     0,   185,
    92,   185,     0,   185,    88,   185,     0,   185,    89,   185,
     0,   185,    87,   185,     0,   185,    86,   185,     0,   185,
    85,   185,     0,    95,   187,     0,   188,     0,    82,     0,
    97,   185,    98,     0,    93,   185,     0,   188,    90,   185,
     0,   188,    91,   185,     0,   188,    92,   185,     0,   188,
    88,   185,     0,   188,    89,   185,     0,   188,    87,   185,
     0,   188,    86,   185,     0,   188,    85,   185,     0
};

#endif

#if YYDEBUG != 0
static const short yyrline[] = { 0,
   155,   157,   158,   159,   160,   161,   162,   163,   164,   165,
   166,   167,   168,   169,   170,   171,   174,   183,   190,   195,
   215,   221,   232,   254,   263,   268,   273,   279,   284,   289,
   293,   297,   301,   309,   318,   327,   345,   349,   368,   372,
   392,   398,   403,   409,   411,   415,   419,   422,   425,   429,
   435,   448,   452,   456,   460,   466,   468,   478,   486,   489,
   496,   499,   506,   509,   516,   522,   529,   532,   539,   542,
   553,   562,   575,   586,   593,   596,   603,   606,   613,   616,
   623,   626,   633,   639,   650,   662,   672,   679,   685,   692,
   695,   702,   705,   712,   715,   722,   725,   732,   735,   742,
   745,   752,   755,   762,   765,   768,   782,   795,   806,   817,
   822,   828,   833,   841,   845,   847,   851,   853,   857,   861,
   870,   880,   889,   896,   901,   917,   922,   926,   932,   937,
   941,   947,   952,   956,   960,   964,   968,   976,   983,   988,
  1004,  1009,  1013,  1017,  1021,  1025,  1029,  1033,  1042,  1051,
  1061,  1066,  1072,  1078,  1084,  1093,  1101,  1110,  1123,  1126,
  1129,  1131,  1135,  1144,  1149,  1157,  1164,  1171,  1177,  1183,
  1188,  1193,  1198,  1203,  1216,  1221,  1225,  1231,  1236,  1242,
  1247,  1255,  1261,  1278,  1286,  1292,  1297,  1302,  1311,  1318,
  1328,  1335,  1346,  1352,  1357,  1362,  1367,  1372,  1377,  1386,
  1391,  1407,  1412,  1416,  1420,  1426,  1431,  1439,  1444,  1452,
  1461,  1470,  1475,  1479,  1484,  1489,  1494,  1499,  1504,  1509,
  1514,  1519,  1524,  1534,  1543,  1554,  1559,  1563,  1568,  1573,
  1578,  1583,  1588,  1593,  1598,  1603
};
#endif


#if YYDEBUG != 0 || defined (YYERROR_VERBOSE)

static const char * const yytname[] = {   "$","error","$undefined.","BEG","END",
"ACCELERATORS","VIRTKEY","ASCII","NOINVERT","SHIFT","CONTROL","ALT","BITMAP",
"CURSOR","DIALOG","DIALOGEX","EXSTYLE","CAPTION","CLASS","STYLE","AUTO3STATE",
"AUTOCHECKBOX","AUTORADIOBUTTON","CHECKBOX","COMBOBOX","CTEXT","DEFPUSHBUTTON",
"EDITTEXT","GROUPBOX","LISTBOX","LTEXT","PUSHBOX","PUSHBUTTON","RADIOBUTTON",
"RTEXT","SCROLLBAR","STATE3","USERBUTTON","BEDIT","HEDIT","IEDIT","FONT","ICON",
"LANGUAGE","CHARACTERISTICS","VERSIONK","MENU","MENUEX","MENUITEM","SEPARATOR",
"POPUP","CHECKED","GRAYED","HELP","INACTIVE","MENUBARBREAK","MENUBREAK","MESSAGETABLE",
"RCDATA","STRINGTABLE","VERSIONINFO","FILEVERSION","PRODUCTVERSION","FILEFLAGSMASK",
"FILEFLAGS","FILEOS","FILETYPE","FILESUBTYPE","BLOCKSTRINGFILEINFO","BLOCKVARFILEINFO",
"VALUE","BLOCK","MOVEABLE","FIXED","PURE","IMPURE","PRELOAD","LOADONCALL","DISCARDABLE",
"NOT","QUOTEDSTRING","STRING","NUMBER","SIZEDSTRING","IGNORED_TOKEN","'|'","'^'",
"'&'","'+'","'-'","'*'","'/'","'%'","'~'","NEG","','","'='","'('","')'","input",
"newcmd","accelerator","acc_entries","acc_entry","acc_event","acc_options","acc_option",
"bitmap","cursor","dialog","@1","@2","@3","exstyle","styles","@4","controls",
"control","@5","@6","@7","@8","@9","@10","@11","@12","@13","@14","@15","@16",
"@17","@18","@19","@20","@21","@22","@23","@24","@25","control_params","optstringc",
"opt_control_data","control_styleexpr","@26","icon_styleexpr","@27","control_params_styleexpr",
"@28","font","icon","language","menu","menuitems","menuitem","menuitem_flags",
"menuitem_flag","menuex","menuexitems","menuexitem","messagetable","rcdata",
"optrcdata_data","@29","optrcdata_data_int","rcdata_data","stringtable","@30",
"string_data","user","versioninfo","fixedverinfo","verblocks","vervals","vertrans",
"id","suboptions","memflags_move_discard","memflags_move","memflag","file_name",
"styleexpr","parennumber","optcnumexpr","cnumexpr","numexpr","sizednumexpr",
"cposnumexpr","posnumexpr","sizedposnumexpr", NULL
};
#endif

static const short yyr1[] = {     0,
    99,    99,    99,    99,    99,    99,    99,    99,    99,    99,
    99,    99,    99,    99,    99,    99,   100,   101,   102,   102,
   103,   103,   104,   104,   105,   105,   105,   106,   106,   106,
   106,   106,   106,   107,   108,   110,   109,   111,   109,   112,
   109,   113,   113,   114,   114,   114,   115,   114,   114,   114,
   114,   114,   114,   114,   114,   116,   116,   118,   117,   119,
   117,   120,   117,   121,   117,   122,   117,   123,   117,   117,
   117,   117,   117,   124,   117,   125,   117,   126,   117,   127,
   117,   128,   117,   117,   117,   117,   129,   117,   130,   117,
   131,   117,   132,   117,   133,   117,   134,   117,   135,   117,
   136,   117,   137,   117,   138,   117,   139,   139,   139,   140,
   140,   141,   141,   143,   142,   145,   144,   147,   146,   148,
   149,   150,   151,   152,   152,   153,   153,   153,   154,   154,
   154,   155,   155,   155,   155,   155,   155,   156,   157,   157,
   158,   158,   158,   158,   158,   158,   158,   158,   159,   160,
   162,   161,   163,   163,   164,   164,   164,   164,   166,   165,
   167,   167,   167,   168,   168,   169,   170,   170,   170,   170,
   170,   170,   170,   170,   171,   171,   171,   172,   172,   173,
   173,   174,   174,   175,   175,   175,   175,   175,   176,   176,
   177,   177,   178,   178,   178,   178,   178,   178,   178,   179,
   179,   180,   180,   180,   180,   181,   181,   182,   182,   183,
   184,   185,   185,   185,   185,   185,   185,   185,   185,   185,
   185,   185,   185,   186,   187,   188,   188,   188,   188,   188,
   188,   188,   188,   188,   188,   188
};

static const short yyr2[] = {     0,
     0,     3,     3,     3,     3,     3,     3,     3,     3,     3,
     3,     3,     3,     3,     3,     3,     0,     6,     0,     2,
     2,     4,     1,     1,     1,     3,     2,     1,     1,     1,
     1,     1,     1,     4,     4,     0,    13,     0,    13,     0,
    14,     0,     3,     0,     3,     3,     0,     4,     3,     5,
     7,     3,     3,     4,     3,     0,     2,     0,     3,     0,
     3,     0,     3,     0,     3,     0,     3,     0,     3,    11,
    12,    12,    13,     0,     3,     0,     3,     0,     3,     0,
     3,     0,     3,     6,    10,    11,     0,     3,     0,     3,
     0,     3,     0,     3,     0,     3,     0,     3,     0,     3,
     0,     3,     0,     3,     0,    16,     7,     9,    10,     0,
     2,     0,     3,     0,     3,     0,     3,     0,     3,     4,
     4,     3,     6,     0,     2,     4,     2,     6,     0,     3,
     2,     1,     1,     1,     1,     1,     1,     6,     0,     2,
     2,     3,     5,     2,     5,     6,     7,     9,     4,     6,
     0,     2,     0,     1,     1,     1,     3,     3,     0,     6,
     0,     3,     4,     6,     4,     6,     0,     6,     6,     3,
     3,     3,     3,     3,     0,     8,     7,     0,     5,     0,
     3,     1,     1,     0,     2,     3,     4,     3,     0,     2,
     0,     2,     1,     1,     1,     1,     1,     1,     1,     1,
     1,     1,     2,     3,     4,     1,     3,     0,     1,     2,
     1,     1,     3,     2,     2,     3,     3,     3,     3,     3,
     3,     3,     3,     2,     1,     1,     3,     2,     3,     3,
     3,     3,     3,     3,     3,     3
};

static const short yydefact[] = {     1,
    17,     0,     0,   184,   183,   226,    16,     0,     0,     2,
     3,     4,     5,     6,     7,     8,     9,    10,    11,    12,
    13,    14,    15,     0,   182,   225,   212,     0,     0,     0,
     0,   211,     0,   228,     0,   184,   191,   189,   191,   191,
   189,   189,   184,   184,   191,   184,   167,   184,     0,     0,
     0,     0,     0,     0,     0,     0,   215,   214,     0,     0,
   122,     0,     0,     0,     0,     0,     0,     0,     0,   159,
     0,     0,     0,   193,   194,   195,   196,   197,   198,   199,
   185,   227,     0,     0,     0,    42,    42,     0,     0,     0,
     0,     0,     0,     0,     0,   236,   235,   234,   232,   233,
   229,   230,   231,   213,   210,   223,   222,   221,   219,   220,
   216,   217,   218,   161,     0,   186,   188,    19,   200,   201,
   192,    34,   190,    35,     0,     0,     0,   120,   121,   124,
   139,   149,   151,   175,     0,     0,     0,     0,     0,     0,
     0,   151,   165,     0,   187,     0,     0,     0,     0,     0,
     0,     0,   153,     0,     0,     0,   170,   171,   172,   173,
   174,     0,   160,     0,    18,    23,    20,     0,    24,    43,
     0,     0,   123,     0,     0,   125,   138,     0,     0,   140,
   150,   155,   152,   154,   156,   166,     0,     0,     0,     0,
   164,   162,     0,     0,    21,     0,     0,   127,     0,   129,
   144,   141,     0,     0,     0,     0,     0,     0,   163,   224,
     0,    36,    38,   129,     0,   142,   139,     0,   157,   158,
     0,     0,   168,   169,    28,    29,    30,    31,    32,    33,
    22,    25,    44,    44,    40,   126,   124,   132,   133,   134,
   135,   136,   137,     0,   131,   208,     0,   139,     0,   178,
   180,     0,    27,     0,     0,    44,     0,   130,   143,   209,
   145,     0,   139,   208,     0,     0,    26,    56,     0,     0,
     0,    47,     0,     0,     0,     0,     0,    56,     0,   128,
   146,     0,     0,     0,     0,   177,     0,     0,    49,    45,
    46,     0,     0,     0,    53,    55,    52,     0,    56,   147,
   139,   176,     0,   181,    37,   110,    58,    60,    62,    66,
    68,    74,    76,    78,    80,    89,    91,    93,    95,    97,
    99,   101,   103,     0,    64,    82,    87,   110,    57,     0,
   206,     0,    48,   202,     0,    54,    39,     0,     0,     0,
     0,     0,   110,   110,   110,   110,   110,   110,   110,   110,
   110,   110,   110,   110,   110,   110,   110,   110,   110,     0,
   110,   110,   110,     0,   203,     0,     0,    50,    41,   148,
   179,   111,     0,    59,     0,    61,    63,    67,    69,    75,
    77,    79,    81,    90,    92,    94,    96,    98,   100,   102,
   104,     0,    65,    83,    88,     0,   207,     0,   204,     0,
     0,     0,     0,     0,     0,   205,    51,     0,   114,     0,
     0,     0,   112,     0,     0,     0,     0,     0,   151,    84,
     0,     0,   115,     0,     0,     0,     0,     0,     0,     0,
   112,     0,   113,   116,   208,     0,   208,   118,   107,   208,
     0,     0,   112,   209,   208,   112,   209,     0,   112,   209,
     0,   117,    85,   112,   112,   209,    70,   112,   119,   108,
   112,     0,    86,    72,   112,    71,   109,     0,    73,   105,
     0,   208,   106,     0,     0
};

static const short yydefgoto[] = {     1,
     2,    10,   146,   167,   168,   231,   232,    11,    12,    13,
   233,   234,   256,   126,   254,   292,   288,   329,   343,   344,
   345,   361,   346,   347,   348,   349,   350,   351,   362,   363,
   352,   353,   354,   355,   356,   357,   358,   359,   471,   374,
   375,   420,   410,   415,   435,   442,   440,   448,    14,    15,
    16,    17,   150,   176,   215,   245,    18,   151,   180,    19,
    20,   152,   153,   183,   184,    21,   114,   144,    22,    23,
    94,   154,   265,   266,    24,    33,    85,    84,    81,   122,
   333,   334,   259,   260,   105,    32,   195,    25,    26
};

static const short yypact[] = {-32768,
    39,   284,   231,-32768,-32768,-32768,-32768,   231,   231,-32768,
-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
-32768,-32768,-32768,   233,-32768,   601,-32768,   231,   231,   231,
   -60,   609,    35,-32768,   314,-32768,-32768,-32768,-32768,-32768,
-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,   231,   231,
   231,   231,   231,   231,   231,   231,-32768,-32768,   577,   231,
-32768,   231,   231,   231,   231,   231,   231,   231,   231,-32768,
   231,   231,   231,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
-32768,-32768,   209,   604,   604,   234,   234,   604,   604,   259,
   273,   604,   319,   169,   113,   616,   152,   386,   -33,   -33,
-32768,-32768,-32768,-32768,-32768,   616,   152,   386,   -33,   -33,
-32768,-32768,-32768,-32768,   -60,-32768,-32768,-32768,-32768,-32768,
-32768,-32768,-32768,-32768,    -1,    99,    99,-32768,-32768,-32768,
-32768,-32768,-32768,-32768,   231,   231,   231,   231,   231,   231,
   231,-32768,-32768,     0,-32768,     1,   231,   -60,   -60,    92,
    95,   110,   337,    52,   -60,   -60,-32768,-32768,-32768,-32768,
-32768,   124,-32768,    59,-32768,-32768,-32768,    32,-32768,-32768,
   -60,   -60,-32768,   -36,    51,-32768,-32768,    42,    68,-32768,
-32768,-32768,-32768,    54,   609,-32768,   150,   161,   -60,   -60,
-32768,-32768,    75,    99,    66,   -60,   -60,-32768,   -60,-32768,
-32768,   -60,     5,   527,   107,   136,   -60,   -60,-32768,-32768,
   703,-32768,   -60,-32768,    20,   -60,-32768,     6,-32768,   609,
   212,   137,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
    23,-32768,-32768,-32768,-32768,   303,-32768,-32768,-32768,-32768,
-32768,-32768,-32768,   664,-32768,   -60,   102,-32768,     7,-32768,
-32768,   703,-32768,   446,   454,-32768,   115,-32768,-32768,-32768,
-32768,   120,-32768,   -60,    15,    10,-32768,-32768,   231,   141,
   123,-32768,   231,   231,   231,   231,   123,-32768,   463,-32768,
-32768,   121,   219,   221,   143,-32768,   -60,   492,-32768,-32768,
-32768,   -57,   131,   -60,-32768,-32768,-32768,   529,-32768,-32768,
-32768,-32768,   133,-32768,-32768,   157,-32768,-32768,-32768,-32768,
-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
-32768,-32768,-32768,   177,-32768,-32768,-32768,   157,-32768,    65,
-32768,   231,   171,-32768,   184,-32768,-32768,   566,   125,   185,
   172,   231,   157,   157,   157,   157,   157,   157,   157,   157,
   157,   157,   157,   157,   157,   157,   157,   157,   157,   173,
   157,   157,   157,   231,-32768,   190,    98,   -60,-32768,-32768,
-32768,-32768,   174,-32768,   231,-32768,-32768,-32768,-32768,-32768,
-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
-32768,   231,-32768,-32768,-32768,   -60,-32768,    65,-32768,   -60,
   289,   194,   -60,   197,   -60,-32768,-32768,   194,-32768,   -60,
   -60,   231,     8,   -60,   -57,   -60,   -60,   199,-32768,-32768,
   -60,   -60,   171,   -60,   -60,   231,   291,   201,   -60,   -60,
     9,   202,-32768,-32768,   -60,   -60,   -60,-32768,-32768,   -60,
   231,   -57,   296,   -60,   -60,   296,   -60,   -57,   296,   -60,
   205,   171,-32768,   296,   296,   -60,-32768,   296,   171,-32768,
   296,   231,-32768,-32768,   296,-32768,-32768,   206,-32768,-32768,
   -57,   114,-32768,   321,-32768
};

static const short yypgoto[] = {-32768,
-32768,-32768,-32768,-32768,-32768,-32768,  -211,-32768,-32768,-32768,
-32768,-32768,-32768,   232,  -219,-32768,  -254,-32768,-32768,-32768,
-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,   298,
  -285,   176,   -85,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
-32768,-32768,    88,-32768,   126,    94,-32768,  -171,-32768,-32768,
-32768,  -141,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
-32768,-32768,-32768,-32768,   -22,   215,    46,   158,   493,   452,
  -325,  -312,  -261,    11,    -3,    -2,-32768,  -110,-32768
};


#define	YYLAST		720


static const short yytable[] = {    31,
   162,    48,   283,   163,   165,    34,    35,   217,   248,   263,
   419,   419,   198,   286,   255,   148,   149,   365,   284,   253,
   342,   330,   237,   298,   331,    57,    58,    59,   225,   226,
   227,   228,   229,   230,    60,   169,   279,    70,   474,   332,
   267,    61,   364,   199,   338,   247,    96,    97,    98,    99,
   100,   101,   102,   103,   399,   186,    67,    68,    69,   106,
   107,   108,   109,   110,   111,   112,   113,   115,   116,   117,
   238,   239,   240,   241,   242,   243,   262,    71,    72,    73,
   166,    27,     6,   210,   285,   406,    88,    89,    28,   423,
   201,   282,    29,     8,   147,   173,    30,     9,   177,    60,
    60,    60,    60,   438,    60,   261,    74,    75,    76,    77,
    78,    79,    80,   181,   244,   142,   452,   252,   280,   187,
   188,   202,   459,   281,   300,   145,   194,   191,   370,   339,
   200,   155,   156,   157,   158,   159,   160,   161,   192,   174,
   164,   175,   178,   170,   179,   472,   331,   203,   204,   178,
   185,   179,   205,   193,   209,    71,    72,    73,   171,   172,
   211,   332,   174,   206,   175,   189,   190,   178,   178,   179,
   179,   134,   178,   443,   179,   446,   398,   221,   449,   331,
     6,   196,   197,   455,    74,    75,    76,    77,    78,    79,
    80,     8,   119,   120,   332,     9,    86,    87,   367,   207,
   208,   220,    92,     5,     6,   222,   212,   213,    60,   214,
   473,   118,   216,   218,   250,     8,   251,   223,   224,     9,
   290,   301,   303,   235,   302,   335,   246,   340,   249,   135,
   136,   137,   138,   139,   140,   141,   341,    36,    64,    65,
    66,    67,    68,    69,    37,    38,    39,    40,   291,   125,
    83,    71,    72,    73,   297,   367,   360,    90,    91,   264,
    93,   130,    95,   368,   371,   289,   372,   392,   401,   293,
   294,   295,   296,    41,    42,   131,   287,   427,    43,    44,
    74,    75,    76,    77,    78,    79,    80,   397,   409,    45,
    46,   412,    47,   426,   433,   434,   441,   304,   419,   462,
   470,    71,    72,    73,   336,    74,    75,    76,    77,    78,
    79,    80,    27,     5,     6,    71,    72,    73,   127,    28,
   475,   133,   414,    29,   257,     8,     3,    30,   366,     9,
    74,    75,    76,    77,    78,    79,    80,   258,   373,   236,
     0,     0,     4,     0,    74,    75,    76,    77,    78,    79,
    80,     0,     0,   238,   239,   240,   241,   242,   243,     0,
   396,    71,    72,    73,     5,     6,     0,     7,   408,     0,
    27,   403,     0,     0,     0,     0,     8,    28,   400,     0,
     9,    29,     0,   402,     0,    30,     0,     0,   404,     0,
    74,    75,    76,    77,    78,    79,    80,   244,    62,    63,
    64,    65,    66,    67,    68,    69,   405,     0,   418,     0,
   407,    82,     0,   411,     0,   413,     0,     0,    27,   182,
   416,   417,   432,   421,   422,    28,   424,   425,     0,    29,
     0,   428,   429,    30,   430,   431,     0,   451,     0,   436,
   437,     0,     0,     0,     0,   444,   445,   447,   268,     0,
   450,     0,     0,     0,   454,   456,   278,   458,   468,     0,
   461,   269,   270,   271,   272,   299,   465,     0,     0,   269,
   270,   271,   272,    65,    66,    67,    68,    69,   269,   270,
   271,   272,     0,     0,     0,     0,   273,     0,   274,   275,
   276,   277,     0,     0,   273,   305,   274,   275,   276,   277,
     0,   306,     0,   273,     0,   274,   275,   276,   277,     0,
     0,   307,   308,   309,   310,   311,   312,   313,   314,   315,
   316,   317,   318,   319,   320,   321,   322,   323,   324,   325,
   326,   327,   337,   328,     0,     0,   124,     0,   306,   128,
   129,     0,     0,   132,     0,     0,   143,     0,   307,   308,
   309,   310,   311,   312,   313,   314,   315,   316,   317,   318,
   319,   320,   321,   322,   323,   324,   325,   326,   327,   369,
   328,     0,     0,     0,     0,   306,   121,   123,   121,   121,
   123,   123,     0,     0,   121,   307,   308,   309,   310,   311,
   312,   313,   314,   315,   316,   317,   318,   319,   320,   321,
   322,   323,   324,   325,   326,   327,   439,   328,    27,   219,
     0,     0,     0,     0,     0,    28,     0,     0,   453,    29,
     0,   457,     0,    30,   460,     0,     0,     0,     0,   463,
   464,     0,     0,   466,     0,     0,   467,     0,     0,     0,
   469,   376,   377,   378,   379,   380,   381,   382,   383,   384,
   385,   386,   387,   388,   389,   390,   391,     0,   393,   394,
   395,    62,    63,    64,    65,    66,    67,    68,    69,     0,
     0,     0,     0,     0,   104,    74,    75,    76,    77,    78,
    79,    80,     0,   119,   120,    49,    50,    51,    52,    53,
    54,    55,    56,    62,    63,    64,    65,    66,    67,    68,
    69,    63,    64,    65,    66,    67,    68,    69,   225,   226,
   227,   228,   229,   230,   238,   239,   240,   241,   242,   243
};

static const short yycheck[] = {     3,
   142,    24,   264,     4,     4,     8,     9,     3,     3,     3,
     3,     3,    49,     4,   234,   126,   127,   330,     4,   231,
   306,    79,     3,   278,    82,    28,    29,    30,     6,     7,
     8,     9,    10,    11,    95,   146,   256,     3,     0,    97,
   252,    31,   328,    80,   299,   217,    49,    50,    51,    52,
    53,    54,    55,    56,   367,     4,    90,    91,    92,    62,
    63,    64,    65,    66,    67,    68,    69,    71,    72,    73,
    51,    52,    53,    54,    55,    56,   248,    43,    44,    45,
    80,    82,    82,   194,    70,   398,    41,    42,    89,   415,
    49,   263,    93,    93,    96,     4,    97,    97,     4,    95,
    95,    95,    95,    95,    95,     4,    72,    73,    74,    75,
    76,    77,    78,     4,    95,     3,   442,    95,     4,    68,
    69,    80,   448,     4,     4,   115,    95,     4,     4,   301,
    80,   135,   136,   137,   138,   139,   140,   141,    80,    48,
   144,    50,    48,   147,    50,   471,    82,    80,    95,    48,
   153,    50,     3,    95,    80,    43,    44,    45,   148,   149,
    95,    97,    48,     3,    50,   155,   156,    48,    48,    50,
    50,     3,    48,   435,    50,   437,    79,    71,   440,    82,
    82,   171,   172,   445,    72,    73,    74,    75,    76,    77,
    78,    93,    80,    81,    97,    97,    39,    40,    85,   189,
   190,   204,    45,    81,    82,    70,   196,   197,    95,   199,
   472,     3,   202,   203,     3,    93,    80,   207,   208,    97,
    80,     3,    80,   213,     4,    95,   216,    95,   218,    61,
    62,    63,    64,    65,    66,    67,    80,     5,    87,    88,
    89,    90,    91,    92,    12,    13,    14,    15,   271,    16,
    36,    43,    44,    45,   277,    85,    80,    43,    44,   249,
    46,     3,    48,    80,    80,   269,    95,    95,    95,   273,
   274,   275,   276,    41,    42,     3,   266,   419,    46,    47,
    72,    73,    74,    75,    76,    77,    78,    98,    95,    57,
    58,    95,    60,    95,     4,    95,    95,   287,     3,    95,
    95,    43,    44,    45,   294,    72,    73,    74,    75,    76,
    77,    78,    82,    81,    82,    43,    44,    45,    87,    89,
     0,     3,   408,    93,   237,    93,    43,    97,   332,    97,
    72,    73,    74,    75,    76,    77,    78,   244,   342,   214,
    -1,    -1,    59,    -1,    72,    73,    74,    75,    76,    77,
    78,    -1,    -1,    51,    52,    53,    54,    55,    56,    -1,
   364,    43,    44,    45,    81,    82,    -1,    84,    80,    -1,
    82,   375,    -1,    -1,    -1,    -1,    93,    89,   368,    -1,
    97,    93,    -1,   373,    -1,    97,    -1,    -1,   392,    -1,
    72,    73,    74,    75,    76,    77,    78,    95,    85,    86,
    87,    88,    89,    90,    91,    92,   396,    -1,   412,    -1,
   400,    98,    -1,   403,    -1,   405,    -1,    -1,    82,    83,
   410,   411,   426,   413,   414,    89,   416,   417,    -1,    93,
    -1,   421,   422,    97,   424,   425,    -1,   441,    -1,   429,
   430,    -1,    -1,    -1,    -1,   435,   436,   437,     3,    -1,
   440,    -1,    -1,    -1,   444,   445,     3,   447,   462,    -1,
   450,    16,    17,    18,    19,     3,   456,    -1,    -1,    16,
    17,    18,    19,    88,    89,    90,    91,    92,    16,    17,
    18,    19,    -1,    -1,    -1,    -1,    41,    -1,    43,    44,
    45,    46,    -1,    -1,    41,     4,    43,    44,    45,    46,
    -1,    10,    -1,    41,    -1,    43,    44,    45,    46,    -1,
    -1,    20,    21,    22,    23,    24,    25,    26,    27,    28,
    29,    30,    31,    32,    33,    34,    35,    36,    37,    38,
    39,    40,     4,    42,    -1,    -1,    85,    -1,    10,    88,
    89,    -1,    -1,    92,    -1,    -1,    95,    -1,    20,    21,
    22,    23,    24,    25,    26,    27,    28,    29,    30,    31,
    32,    33,    34,    35,    36,    37,    38,    39,    40,     4,
    42,    -1,    -1,    -1,    -1,    10,    84,    85,    86,    87,
    88,    89,    -1,    -1,    92,    20,    21,    22,    23,    24,
    25,    26,    27,    28,    29,    30,    31,    32,    33,    34,
    35,    36,    37,    38,    39,    40,   431,    42,    82,    83,
    -1,    -1,    -1,    -1,    -1,    89,    -1,    -1,   443,    93,
    -1,   446,    -1,    97,   449,    -1,    -1,    -1,    -1,   454,
   455,    -1,    -1,   458,    -1,    -1,   461,    -1,    -1,    -1,
   465,   344,   345,   346,   347,   348,   349,   350,   351,   352,
   353,   354,   355,   356,   357,   358,   359,    -1,   361,   362,
   363,    85,    86,    87,    88,    89,    90,    91,    92,    -1,
    -1,    -1,    -1,    -1,    98,    72,    73,    74,    75,    76,
    77,    78,    -1,    80,    81,    85,    86,    87,    88,    89,
    90,    91,    92,    85,    86,    87,    88,    89,    90,    91,
    92,    86,    87,    88,    89,    90,    91,    92,     6,     7,
     8,     9,    10,    11,    51,    52,    53,    54,    55,    56
};
/* -*-C-*-  Note some compilers choke on comments on `#line' lines.  */
#line 3 "/usr/share/misc/bison.simple"
/* This file comes from bison-1.28.  */

/* Skeleton output parser for bison,
   Copyright (C) 1984, 1989, 1990 Free Software Foundation, Inc.

   This program is free software; you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
   the Free Software Foundation; either version 2, or (at your option)
   any later version.

   This program is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   GNU General Public License for more details.

   You should have received a copy of the GNU General Public License
   along with this program; if not, write to the Free Software
   Foundation, Inc., 59 Temple Place - Suite 330,
   Boston, MA 02111-1307, USA.  */

/* As a special exception, when this file is copied by Bison into a
   Bison output file, you may use that output file without restriction.
   This special exception was added by the Free Software Foundation
   in version 1.24 of Bison.  */

/* This is the parser code that is written into each bison parser
  when the %semantic_parser declaration is not specified in the grammar.
  It was written by Richard Stallman by simplifying the hairy parser
  used when %semantic_parser is specified.  */

#ifndef YYSTACK_USE_ALLOCA
#ifdef alloca
#define YYSTACK_USE_ALLOCA
#else /* alloca not defined */
#ifdef __GNUC__
#define YYSTACK_USE_ALLOCA
#define alloca __builtin_alloca
#else /* not GNU C.  */
#if (!defined (__STDC__) && defined (sparc)) || defined (__sparc__) || defined (__sparc) || defined (__sgi) || (defined (__sun) && defined (__i386))
#define YYSTACK_USE_ALLOCA
#include <alloca.h>
#else /* not sparc */
/* We think this test detects Watcom and Microsoft C.  */
/* This used to test MSDOS, but that is a bad idea
   since that symbol is in the user namespace.  */
#if (defined (_MSDOS) || defined (_MSDOS_)) && !defined (__TURBOC__)
#if 0 /* No need for malloc.h, which pollutes the namespace;
	 instead, just don't use alloca.  */
#include <malloc.h>
#endif
#else /* not MSDOS, or __TURBOC__ */
#if defined(_AIX)
/* I don't know what this was needed for, but it pollutes the namespace.
   So I turned it off.   rms, 2 May 1997.  */
/* #include <malloc.h>  */
 #pragma alloca
#define YYSTACK_USE_ALLOCA
#else /* not MSDOS, or __TURBOC__, or _AIX */
#if 0
#ifdef __hpux /* haible@ilog.fr says this works for HPUX 9.05 and up,
		 and on HPUX 10.  Eventually we can turn this on.  */
#define YYSTACK_USE_ALLOCA
#define alloca __builtin_alloca
#endif /* __hpux */
#endif
#endif /* not _AIX */
#endif /* not MSDOS, or __TURBOC__ */
#endif /* not sparc */
#endif /* not GNU C */
#endif /* alloca not defined */
#endif /* YYSTACK_USE_ALLOCA not defined */

#ifdef YYSTACK_USE_ALLOCA
#define YYSTACK_ALLOC alloca
#else
#define YYSTACK_ALLOC malloc
#endif

/* Note: there must be only one dollar sign in this file.
   It is replaced by the list of actions, each action
   as one case of the switch.  */

#define yyerrok		(yyerrstatus = 0)
#define yyclearin	(yychar = YYEMPTY)
#define YYEMPTY		-2
#define YYEOF		0
#define YYACCEPT	goto yyacceptlab
#define YYABORT 	goto yyabortlab
#define YYERROR		goto yyerrlab1
/* Like YYERROR except do call yyerror.
   This remains here temporarily to ease the
   transition to the new meaning of YYERROR, for GCC.
   Once GCC version 2 has supplanted version 1, this can go.  */
#define YYFAIL		goto yyerrlab
#define YYRECOVERING()  (!!yyerrstatus)
#define YYBACKUP(token, value) \
do								\
  if (yychar == YYEMPTY && yylen == 1)				\
    { yychar = (token), yylval = (value);			\
      yychar1 = YYTRANSLATE (yychar);				\
      YYPOPSTACK;						\
      goto yybackup;						\
    }								\
  else								\
    { yyerror ("syntax error: cannot back up"); YYERROR; }	\
while (0)

#define YYTERROR	1
#define YYERRCODE	256

#ifndef YYPURE
#define YYLEX		yylex()
#endif

#ifdef YYPURE
#ifdef YYLSP_NEEDED
#ifdef YYLEX_PARAM
#define YYLEX		yylex(&yylval, &yylloc, YYLEX_PARAM)
#else
#define YYLEX		yylex(&yylval, &yylloc)
#endif
#else /* not YYLSP_NEEDED */
#ifdef YYLEX_PARAM
#define YYLEX		yylex(&yylval, YYLEX_PARAM)
#else
#define YYLEX		yylex(&yylval)
#endif
#endif /* not YYLSP_NEEDED */
#endif

/* If nonreentrant, generate the variables here */

#ifndef YYPURE

int	yychar;			/*  the lookahead symbol		*/
YYSTYPE	yylval;			/*  the semantic value of the		*/
				/*  lookahead symbol			*/

#ifdef YYLSP_NEEDED
YYLTYPE yylloc;			/*  location data for the lookahead	*/
				/*  symbol				*/
#endif

int yynerrs;			/*  number of parse errors so far       */
#endif  /* not YYPURE */

#if YYDEBUG != 0
int yydebug;			/*  nonzero means print parse trace	*/
/* Since this is uninitialized, it does not stop multiple parsers
   from coexisting.  */
#endif

/*  YYINITDEPTH indicates the initial size of the parser's stacks	*/

#ifndef	YYINITDEPTH
#define YYINITDEPTH 200
#endif

/*  YYMAXDEPTH is the maximum size the stacks can grow to
    (effective only if the built-in stack extension method is used).  */

#if YYMAXDEPTH == 0
#undef YYMAXDEPTH
#endif

#ifndef YYMAXDEPTH
#define YYMAXDEPTH 10000
#endif

/* Define __yy_memcpy.  Note that the size argument
   should be passed with type unsigned int, because that is what the non-GCC
   definitions require.  With GCC, __builtin_memcpy takes an arg
   of type size_t, but it can handle unsigned int.  */

#if __GNUC__ > 1		/* GNU C and GNU C++ define this.  */
#define __yy_memcpy(TO,FROM,COUNT)	__builtin_memcpy(TO,FROM,COUNT)
#else				/* not GNU C or C++ */
#ifndef __cplusplus

/* This is the most reliable way to avoid incompatibilities
   in available built-in functions on various systems.  */
static void
__yy_memcpy (to, from, count)
     char *to;
     char *from;
     unsigned int count;
{
  register char *f = from;
  register char *t = to;
  register int i = count;

  while (i-- > 0)
    *t++ = *f++;
}

#else /* __cplusplus */

/* This is the most reliable way to avoid incompatibilities
   in available built-in functions on various systems.  */
static void
__yy_memcpy (char *to, char *from, unsigned int count)
{
  register char *t = to;
  register char *f = from;
  register int i = count;

  while (i-- > 0)
    *t++ = *f++;
}

#endif
#endif

#line 217 "/usr/share/misc/bison.simple"

/* The user can define YYPARSE_PARAM as the name of an argument to be passed
   into yyparse.  The argument should have type void *.
   It should actually point to an object.
   Grammar actions can access the variable by casting it
   to the proper pointer type.  */

#ifdef YYPARSE_PARAM
#ifdef __cplusplus
#define YYPARSE_PARAM_ARG void *YYPARSE_PARAM
#define YYPARSE_PARAM_DECL
#else /* not __cplusplus */
#define YYPARSE_PARAM_ARG YYPARSE_PARAM
#define YYPARSE_PARAM_DECL void *YYPARSE_PARAM;
#endif /* not __cplusplus */
#else /* not YYPARSE_PARAM */
#define YYPARSE_PARAM_ARG
#define YYPARSE_PARAM_DECL
#endif /* not YYPARSE_PARAM */

/* Prevent warning if -Wstrict-prototypes.  */
#ifdef __GNUC__
#ifdef YYPARSE_PARAM
int yyparse (void *);
#else
int yyparse (void);
#endif
#endif

int
yyparse(YYPARSE_PARAM_ARG)
     YYPARSE_PARAM_DECL
{
  register int yystate;
  register int yyn;
  register short *yyssp;
  register YYSTYPE *yyvsp;
  int yyerrstatus;	/*  number of tokens to shift before error messages enabled */
  int yychar1 = 0;		/*  lookahead token as an internal (translated) token number */

  short	yyssa[YYINITDEPTH];	/*  the state stack			*/
  YYSTYPE yyvsa[YYINITDEPTH];	/*  the semantic value stack		*/

  short *yyss = yyssa;		/*  refer to the stacks thru separate pointers */
  YYSTYPE *yyvs = yyvsa;	/*  to allow yyoverflow to reallocate them elsewhere */

#ifdef YYLSP_NEEDED
  YYLTYPE yylsa[YYINITDEPTH];	/*  the location stack			*/
  YYLTYPE *yyls = yylsa;
  YYLTYPE *yylsp;

#define YYPOPSTACK   (yyvsp--, yyssp--, yylsp--)
#else
#define YYPOPSTACK   (yyvsp--, yyssp--)
#endif

  int yystacksize = YYINITDEPTH;
  int yyfree_stacks = 0;

#ifdef YYPURE
  int yychar;
  YYSTYPE yylval;
  int yynerrs;
#ifdef YYLSP_NEEDED
  YYLTYPE yylloc;
#endif
#endif

  YYSTYPE yyval;		/*  the variable used to return		*/
				/*  semantic values from the action	*/
				/*  routines				*/

  int yylen;

#if YYDEBUG != 0
  if (yydebug)
    fprintf(stderr, "Starting parse\n");
#endif

  yystate = 0;
  yyerrstatus = 0;
  yynerrs = 0;
  yychar = YYEMPTY;		/* Cause a token to be read.  */

  /* Initialize stack pointers.
     Waste one element of value and location stack
     so that they stay on the same level as the state stack.
     The wasted elements are never initialized.  */

  yyssp = yyss - 1;
  yyvsp = yyvs;
#ifdef YYLSP_NEEDED
  yylsp = yyls;
#endif

/* Push a new state, which is found in  yystate  .  */
/* In all cases, when you get here, the value and location stacks
   have just been pushed. so pushing a state here evens the stacks.  */
yynewstate:

  *++yyssp = yystate;

  if (yyssp >= yyss + yystacksize - 1)
    {
      /* Give user a chance to reallocate the stack */
      /* Use copies of these so that the &'s don't force the real ones into memory. */
      YYSTYPE *yyvs1 = yyvs;
      short *yyss1 = yyss;
#ifdef YYLSP_NEEDED
      YYLTYPE *yyls1 = yyls;
#endif

      /* Get the current used size of the three stacks, in elements.  */
      int size = yyssp - yyss + 1;

#ifdef yyoverflow
      /* Each stack pointer address is followed by the size of
	 the data in use in that stack, in bytes.  */
#ifdef YYLSP_NEEDED
      /* This used to be a conditional around just the two extra args,
	 but that might be undefined if yyoverflow is a macro.  */
      yyoverflow("parser stack overflow",
		 &yyss1, size * sizeof (*yyssp),
		 &yyvs1, size * sizeof (*yyvsp),
		 &yyls1, size * sizeof (*yylsp),
		 &yystacksize);
#else
      yyoverflow("parser stack overflow",
		 &yyss1, size * sizeof (*yyssp),
		 &yyvs1, size * sizeof (*yyvsp),
		 &yystacksize);
#endif

      yyss = yyss1; yyvs = yyvs1;
#ifdef YYLSP_NEEDED
      yyls = yyls1;
#endif
#else /* no yyoverflow */
      /* Extend the stack our own way.  */
      if (yystacksize >= YYMAXDEPTH)
	{
	  yyerror("parser stack overflow");
	  if (yyfree_stacks)
	    {
	      free (yyss);
	      free (yyvs);
#ifdef YYLSP_NEEDED
	      free (yyls);
#endif
	    }
	  return 2;
	}
      yystacksize *= 2;
      if (yystacksize > YYMAXDEPTH)
	yystacksize = YYMAXDEPTH;
#ifndef YYSTACK_USE_ALLOCA
      yyfree_stacks = 1;
#endif
      yyss = (short *) YYSTACK_ALLOC (yystacksize * sizeof (*yyssp));
      __yy_memcpy ((char *)yyss, (char *)yyss1,
		   size * (unsigned int) sizeof (*yyssp));
      yyvs = (YYSTYPE *) YYSTACK_ALLOC (yystacksize * sizeof (*yyvsp));
      __yy_memcpy ((char *)yyvs, (char *)yyvs1,
		   size * (unsigned int) sizeof (*yyvsp));
#ifdef YYLSP_NEEDED
      yyls = (YYLTYPE *) YYSTACK_ALLOC (yystacksize * sizeof (*yylsp));
      __yy_memcpy ((char *)yyls, (char *)yyls1,
		   size * (unsigned int) sizeof (*yylsp));
#endif
#endif /* no yyoverflow */

      yyssp = yyss + size - 1;
      yyvsp = yyvs + size - 1;
#ifdef YYLSP_NEEDED
      yylsp = yyls + size - 1;
#endif

#if YYDEBUG != 0
      if (yydebug)
	fprintf(stderr, "Stack size increased to %d\n", yystacksize);
#endif

      if (yyssp >= yyss + yystacksize - 1)
	YYABORT;
    }

#if YYDEBUG != 0
  if (yydebug)
    fprintf(stderr, "Entering state %d\n", yystate);
#endif

  goto yybackup;
 yybackup:

/* Do appropriate processing given the current state.  */
/* Read a lookahead token if we need one and don't already have one.  */
/* yyresume: */

  /* First try to decide what to do without reference to lookahead token.  */

  yyn = yypact[yystate];
  if (yyn == YYFLAG)
    goto yydefault;

  /* Not known => get a lookahead token if don't already have one.  */

  /* yychar is either YYEMPTY or YYEOF
     or a valid token in external form.  */

  if (yychar == YYEMPTY)
    {
#if YYDEBUG != 0
      if (yydebug)
	fprintf(stderr, "Reading a token: ");
#endif
      yychar = YYLEX;
    }

  /* Convert token to internal form (in yychar1) for indexing tables with */

  if (yychar <= 0)		/* This means end of input. */
    {
      yychar1 = 0;
      yychar = YYEOF;		/* Don't call YYLEX any more */

#if YYDEBUG != 0
      if (yydebug)
	fprintf(stderr, "Now at end of input.\n");
#endif
    }
  else
    {
      yychar1 = YYTRANSLATE(yychar);

#if YYDEBUG != 0
      if (yydebug)
	{
	  fprintf (stderr, "Next token is %d (%s", yychar, yytname[yychar1]);
	  /* Give the individual parser a way to print the precise meaning
	     of a token, for further debugging info.  */
#ifdef YYPRINT
	  YYPRINT (stderr, yychar, yylval);
#endif
	  fprintf (stderr, ")\n");
	}
#endif
    }

  yyn += yychar1;
  if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != yychar1)
    goto yydefault;

  yyn = yytable[yyn];

  /* yyn is what to do for this token type in this state.
     Negative => reduce, -yyn is rule number.
     Positive => shift, yyn is new state.
       New state is final state => don't bother to shift,
       just return success.
     0, or most negative number => error.  */

  if (yyn < 0)
    {
      if (yyn == YYFLAG)
	goto yyerrlab;
      yyn = -yyn;
      goto yyreduce;
    }
  else if (yyn == 0)
    goto yyerrlab;

  if (yyn == YYFINAL)
    YYACCEPT;

  /* Shift the lookahead token.  */

#if YYDEBUG != 0
  if (yydebug)
    fprintf(stderr, "Shifting token %d (%s), ", yychar, yytname[yychar1]);
#endif

  /* Discard the token being shifted unless it is eof.  */
  if (yychar != YYEOF)
    yychar = YYEMPTY;

  *++yyvsp = yylval;
#ifdef YYLSP_NEEDED
  *++yylsp = yylloc;
#endif

  /* count tokens shifted since error; after three, turn off error status.  */
  if (yyerrstatus) yyerrstatus--;

  yystate = yyn;
  goto yynewstate;

/* Do the default action for the current state.  */
yydefault:

  yyn = yydefact[yystate];
  if (yyn == 0)
    goto yyerrlab;

/* Do a reduction.  yyn is the number of a rule to reduce with.  */
yyreduce:
  yylen = yyr2[yyn];
  if (yylen > 0)
    yyval = yyvsp[1-yylen]; /* implement default value of the action */

#if YYDEBUG != 0
  if (yydebug)
    {
      int i;

      fprintf (stderr, "Reducing via rule %d (line %d), ",
	       yyn, yyrline[yyn]);

      /* Print the symbols being reduced, and their result.  */
      for (i = yyprhs[yyn]; yyrhs[i] > 0; i++)
	fprintf (stderr, "%s ", yytname[yyrhs[i]]);
      fprintf (stderr, " -> %s\n", yytname[yyr1[yyn]]);
    }
#endif


  switch (yyn) {

case 17:
#line 176 "rcparse.y"
{
	    rcparse_discard_strings ();
	  ;
    break;}
case 18:
#line 185 "rcparse.y"
{
	    define_accelerator (yyvsp[-5].id, &yyvsp[-3].res_info, yyvsp[-1].pacc);
	  ;
    break;}
case 19:
#line 192 "rcparse.y"
{
	    yyval.pacc = NULL;
	  ;
    break;}
case 20:
#line 196 "rcparse.y"
{
	    struct accelerator *a;

	    a = (struct accelerator *) res_alloc (sizeof *a);
	    *a = yyvsp[0].acc;
	    if (yyvsp[-1].pacc == NULL)
	      yyval.pacc = a;
	    else
	      {
		struct accelerator **pp;

		for (pp = &yyvsp[-1].pacc->next; *pp != NULL; pp = &(*pp)->next)
		  ;
		*pp = a;
		yyval.pacc = yyvsp[-1].pacc;
	      }
	  ;
    break;}
case 21:
#line 217 "rcparse.y"
{
	    yyval.acc = yyvsp[-1].acc;
	    yyval.acc.id = yyvsp[0].il;
	  ;
    break;}
case 22:
#line 222 "rcparse.y"
{
	    yyval.acc = yyvsp[-3].acc;
	    yyval.acc.id = yyvsp[-2].il;
	    yyval.acc.flags |= yyvsp[0].is;
	    if ((yyval.acc.flags & ACC_VIRTKEY) == 0
		&& (yyval.acc.flags & (ACC_SHIFT | ACC_CONTROL | ACC_ALT)) != 0)
	      rcparse_warning (_("inappropriate modifiers for non-VIRTKEY"));
	  ;
    break;}
case 23:
#line 234 "rcparse.y"
{
	    const char *s = yyvsp[0].s;
	    char ch;

	    yyval.acc.next = NULL;
	    yyval.acc.id = 0;
	    ch = *s;
	    if (ch != '^')
	      yyval.acc.flags = 0;
	    else
	      {
		yyval.acc.flags = ACC_CONTROL | ACC_VIRTKEY;
		++s;
		ch = *s;
		ch = toupper ((unsigned char) ch);
	      }
	    yyval.acc.key = ch;
	    if (s[1] != '\0')
	      rcparse_warning (_("accelerator should only be one character"));
	  ;
    break;}
case 24:
#line 255 "rcparse.y"
{
	    yyval.acc.next = NULL;
	    yyval.acc.flags = 0;
	    yyval.acc.id = 0;
	    yyval.acc.key = yyvsp[0].il;
	  ;
    break;}
case 25:
#line 265 "rcparse.y"
{
	    yyval.is = yyvsp[0].is;
	  ;
    break;}
case 26:
#line 269 "rcparse.y"
{
	    yyval.is = yyvsp[-2].is | yyvsp[0].is;
	  ;
    break;}
case 27:
#line 274 "rcparse.y"
{
	    yyval.is = yyvsp[-1].is | yyvsp[0].is;
	  ;
    break;}
case 28:
#line 281 "rcparse.y"
{
	    yyval.is = ACC_VIRTKEY;
	  ;
    break;}
case 29:
#line 285 "rcparse.y"
{
	    /* This is just the absence of VIRTKEY.  */
	    yyval.is = 0;
	  ;
    break;}
case 30:
#line 290 "rcparse.y"
{
	    yyval.is = ACC_NOINVERT;
	  ;
    break;}
case 31:
#line 294 "rcparse.y"
{
	    yyval.is = ACC_SHIFT;
	  ;
    break;}
case 32:
#line 298 "rcparse.y"
{
	    yyval.is = ACC_CONTROL;
	  ;
    break;}
case 33:
#line 302 "rcparse.y"
{
	    yyval.is = ACC_ALT;
	  ;
    break;}
case 34:
#line 311 "rcparse.y"
{
	    define_bitmap (yyvsp[-3].id, &yyvsp[-1].res_info, yyvsp[0].s);
	  ;
    break;}
case 35:
#line 320 "rcparse.y"
{
	    define_cursor (yyvsp[-3].id, &yyvsp[-1].res_info, yyvsp[0].s);
	  ;
    break;}
case 36:
#line 330 "rcparse.y"
{
	      memset (&dialog, 0, sizeof dialog);
	      dialog.x = yyvsp[-3].il;
	      dialog.y = yyvsp[-2].il;
	      dialog.width = yyvsp[-1].il;
	      dialog.height = yyvsp[0].il;
	      dialog.style = WS_POPUP | WS_BORDER | WS_SYSMENU;
	      dialog.exstyle = yyvsp[-4].il;
	      dialog.menu.named = 1;
	      dialog.class.named = 1;
	      dialog.font = NULL;
	      dialog.ex = NULL;
	      dialog.controls = NULL;
	      sub_res_info = yyvsp[-5].res_info;
	    ;
    break;}
case 37:
#line 346 "rcparse.y"
{
	    define_dialog (yyvsp[-12].id, &sub_res_info, &dialog);
	  ;
    break;}
case 38:
#line 351 "rcparse.y"
{
	      memset (&dialog, 0, sizeof dialog);
	      dialog.x = yyvsp[-3].il;
	      dialog.y = yyvsp[-2].il;
	      dialog.width = yyvsp[-1].il;
	      dialog.height = yyvsp[0].il;
	      dialog.style = WS_POPUP | WS_BORDER | WS_SYSMENU;
	      dialog.exstyle = yyvsp[-4].il;
	      dialog.menu.named = 1;
	      dialog.class.named = 1;
	      dialog.font = NULL;
	      dialog.ex = ((struct dialog_ex *)
			   res_alloc (sizeof (struct dialog_ex)));
	      memset (dialog.ex, 0, sizeof (struct dialog_ex));
	      dialog.controls = NULL;
	      sub_res_info = yyvsp[-5].res_info;
	    ;
    break;}
case 39:
#line 369 "rcparse.y"
{
	    define_dialog (yyvsp[-12].id, &sub_res_info, &dialog);
	  ;
    break;}
case 40:
#line 374 "rcparse.y"
{
	      memset (&dialog, 0, sizeof dialog);
	      dialog.x = yyvsp[-4].il;
	      dialog.y = yyvsp[-3].il;
	      dialog.width = yyvsp[-2].il;
	      dialog.height = yyvsp[-1].il;
	      dialog.style = WS_POPUP | WS_BORDER | WS_SYSMENU;
	      dialog.exstyle = yyvsp[-5].il;
	      dialog.menu.named = 1;
	      dialog.class.named = 1;
	      dialog.font = NULL;
	      dialog.ex = ((struct dialog_ex *)
			   res_alloc (sizeof (struct dialog_ex)));
	      memset (dialog.ex, 0, sizeof (struct dialog_ex));
	      dialog.ex->help = yyvsp[0].il;
	      dialog.controls = NULL;
	      sub_res_info = yyvsp[-6].res_info;
	    ;
    break;}
case 41:
#line 393 "rcparse.y"
{
	    define_dialog (yyvsp[-13].id, &sub_res_info, &dialog);
	  ;
    break;}
case 42:
#line 400 "rcparse.y"
{
	    yyval.il = 0;
	  ;
    break;}
case 43:
#line 404 "rcparse.y"
{
	    yyval.il = yyvsp[0].il;
	  ;
    break;}
case 45:
#line 412 "rcparse.y"
{
	    unicode_from_ascii ((int *) NULL, &dialog.caption, yyvsp[0].s);
	  ;
    break;}
case 46:
#line 416 "rcparse.y"
{
	    dialog.class = yyvsp[0].id;
	  ;
    break;}
case 47:
#line 420 "rcparse.y"
{ style = dialog.style; ;
    break;}
case 48:
#line 422 "rcparse.y"
{
	    dialog.style = style;
	  ;
    break;}
case 49:
#line 426 "rcparse.y"
{
	    dialog.exstyle = yyvsp[0].il;
	  ;
    break;}
case 50:
#line 430 "rcparse.y"
{
	    dialog.style |= DS_SETFONT;
	    dialog.pointsize = yyvsp[-2].il;
	    unicode_from_ascii ((int *) NULL, &dialog.font, yyvsp[0].s);
	  ;
    break;}
case 51:
#line 436 "rcparse.y"
{
	    dialog.style |= DS_SETFONT;
	    dialog.pointsize = yyvsp[-4].il;
	    unicode_from_ascii ((int *) NULL, &dialog.font, yyvsp[-2].s);
	    if (dialog.ex == NULL)
	      rcparse_warning (_("extended FONT requires DIALOGEX"));
	    else
	      {
		dialog.ex->weight = yyvsp[-1].il;
		dialog.ex->italic = yyvsp[0].il;
	      }
	  ;
    break;}
case 52:
#line 449 "rcparse.y"
{
	    dialog.menu = yyvsp[0].id;
	  ;
    break;}
case 53:
#line 453 "rcparse.y"
{
	    sub_res_info.characteristics = yyvsp[0].il;
	  ;
    break;}
case 54:
#line 457 "rcparse.y"
{
	    sub_res_info.language = yyvsp[-1].il | (yyvsp[0].il << 8);
	  ;
    break;}
case 55:
#line 461 "rcparse.y"
{
	    sub_res_info.version = yyvsp[0].il;
	  ;
    break;}
case 57:
#line 469 "rcparse.y"
{
	    struct dialog_control **pp;

	    for (pp = &dialog.controls; *pp != NULL; pp = &(*pp)->next)
	      ;
	    *pp = yyvsp[0].dialog_control;
	  ;
    break;}
case 58:
#line 480 "rcparse.y"
{
	      default_style = BS_AUTO3STATE | WS_TABSTOP;
	      base_style = BS_AUTO3STATE;
	      class = CTL_BUTTON;
	    ;
    break;}
case 59:
#line 486 "rcparse.y"
{
	    yyval.dialog_control = yyvsp[0].dialog_control;
	  ;
    break;}
case 60:
#line 490 "rcparse.y"
{
	      default_style = BS_AUTOCHECKBOX | WS_TABSTOP;
	      base_style = BS_AUTOCHECKBOX;
	      class = CTL_BUTTON;
	    ;
    break;}
case 61:
#line 496 "rcparse.y"
{
	    yyval.dialog_control = yyvsp[0].dialog_control;
	  ;
    break;}
case 62:
#line 500 "rcparse.y"
{
	      default_style = BS_AUTORADIOBUTTON | WS_TABSTOP;
	      base_style = BS_AUTORADIOBUTTON;
	      class = CTL_BUTTON;
	    ;
    break;}
case 63:
#line 506 "rcparse.y"
{
	    yyval.dialog_control = yyvsp[0].dialog_control;
	  ;
    break;}
case 64:
#line 510 "rcparse.y"
{
	      default_style = ES_LEFT | WS_BORDER | WS_TABSTOP;
	      base_style = ES_LEFT | WS_BORDER | WS_TABSTOP;
	      class = CTL_EDIT;
	    ;
    break;}
case 65:
#line 516 "rcparse.y"
{
	    yyval.dialog_control = yyvsp[0].dialog_control;
	    if (dialog.ex == NULL)
	      rcparse_warning (_("IEDIT requires DIALOGEX"));
	    res_string_to_id (&yyval.dialog_control->class, "BEDIT");
	  ;
    break;}
case 66:
#line 523 "rcparse.y"
{
	      default_style = BS_CHECKBOX | WS_TABSTOP;
	      base_style = BS_CHECKBOX | WS_TABSTOP;
	      class = CTL_BUTTON;
	    ;
    break;}
case 67:
#line 529 "rcparse.y"
{
	    yyval.dialog_control = yyvsp[0].dialog_control;
	  ;
    break;}
case 68:
#line 533 "rcparse.y"
{
	      default_style = CBS_SIMPLE | WS_TABSTOP;
	      base_style = 0;
	      class = CTL_COMBOBOX;
	    ;
    break;}
case 69:
#line 539 "rcparse.y"
{
	    yyval.dialog_control = yyvsp[0].dialog_control;
	  ;
    break;}
case 70:
#line 544 "rcparse.y"
{
	    yyval.dialog_control = define_control (yyvsp[-9].s, yyvsp[-8].il, yyvsp[-5].il, yyvsp[-4].il, yyvsp[-3].il, yyvsp[-2].il, yyvsp[-7].il, style, yyvsp[-1].il);
	    if (yyvsp[0].rcdata_item != NULL)
	      {
		if (dialog.ex == NULL)
		  rcparse_warning (_("control data requires DIALOGEX"));
		yyval.dialog_control->data = yyvsp[0].rcdata_item;
	      }
	  ;
    break;}
case 71:
#line 555 "rcparse.y"
{
	    yyval.dialog_control = define_control (yyvsp[-10].s, yyvsp[-9].il, yyvsp[-6].il, yyvsp[-5].il, yyvsp[-4].il, yyvsp[-3].il, yyvsp[-8].il, style, yyvsp[-2].il);
	    if (dialog.ex == NULL)
	      rcparse_warning (_("help ID requires DIALOGEX"));
	    yyval.dialog_control->help = yyvsp[-1].il;
	    yyval.dialog_control->data = yyvsp[0].rcdata_item;
	  ;
    break;}
case 72:
#line 564 "rcparse.y"
{
	    yyval.dialog_control = define_control (yyvsp[-10].s, yyvsp[-9].il, yyvsp[-5].il, yyvsp[-4].il, yyvsp[-3].il, yyvsp[-2].il, 0, style, yyvsp[-1].il);
	    if (yyvsp[0].rcdata_item != NULL)
	      {
		if (dialog.ex == NULL)
		  rcparse_warning ("control data requires DIALOGEX");
		yyval.dialog_control->data = yyvsp[0].rcdata_item;
	      }
	    yyval.dialog_control->class.named = 1;
  	    unicode_from_ascii(&yyval.dialog_control->class.u.n.length, &yyval.dialog_control->class.u.n.name, yyvsp[-7].s);
	  ;
    break;}
case 73:
#line 577 "rcparse.y"
{
	    yyval.dialog_control = define_control (yyvsp[-11].s, yyvsp[-10].il, yyvsp[-6].il, yyvsp[-5].il, yyvsp[-4].il, yyvsp[-3].il, 0, style, yyvsp[-2].il);
	    if (dialog.ex == NULL)
	      rcparse_warning ("help ID requires DIALOGEX");
	    yyval.dialog_control->help = yyvsp[-1].il;
	    yyval.dialog_control->data = yyvsp[0].rcdata_item;
	    yyval.dialog_control->class.named = 1;
  	    unicode_from_ascii(&yyval.dialog_control->class.u.n.length, &yyval.dialog_control->class.u.n.name, yyvsp[-8].s);
	  ;
    break;}
case 74:
#line 587 "rcparse.y"
{
	      default_style = SS_CENTER | WS_GROUP;
	      base_style = SS_CENTER;
	      class = CTL_STATIC;
	    ;
    break;}
case 75:
#line 593 "rcparse.y"
{
	    yyval.dialog_control = yyvsp[0].dialog_control;
	  ;
    break;}
case 76:
#line 597 "rcparse.y"
{
	      default_style = BS_DEFPUSHBUTTON | WS_TABSTOP;
	      base_style = BS_DEFPUSHBUTTON | WS_TABSTOP;
	      class = CTL_BUTTON;
	    ;
    break;}
case 77:
#line 603 "rcparse.y"
{
	    yyval.dialog_control = yyvsp[0].dialog_control;
	  ;
    break;}
case 78:
#line 607 "rcparse.y"
{
	      default_style = ES_LEFT | WS_BORDER | WS_TABSTOP;
	      base_style = ES_LEFT | WS_BORDER | WS_TABSTOP;
	      class = CTL_EDIT;
	    ;
    break;}
case 79:
#line 613 "rcparse.y"
{
	    yyval.dialog_control = yyvsp[0].dialog_control;
	  ;
    break;}
case 80:
#line 617 "rcparse.y"
{
	      default_style = BS_GROUPBOX;
	      base_style = BS_GROUPBOX;
	      class = CTL_BUTTON;
	    ;
    break;}
case 81:
#line 623 "rcparse.y"
{
	    yyval.dialog_control = yyvsp[0].dialog_control;
	  ;
    break;}
case 82:
#line 627 "rcparse.y"
{
	      default_style = ES_LEFT | WS_BORDER | WS_TABSTOP;
	      base_style = ES_LEFT | WS_BORDER | WS_TABSTOP;
	      class = CTL_EDIT;
	    ;
    break;}
case 83:
#line 633 "rcparse.y"
{
	    yyval.dialog_control = yyvsp[0].dialog_control;
	    if (dialog.ex == NULL)
	      rcparse_warning (_("IEDIT requires DIALOGEX"));
	    res_string_to_id (&yyval.dialog_control->class, "HEDIT");
	  ;
    break;}
case 84:
#line 640 "rcparse.y"
{
	    yyval.dialog_control = define_control (yyvsp[-4].s, yyvsp[-3].il, yyvsp[-2].il, yyvsp[-1].il, 0, 0, CTL_STATIC,
				 SS_ICON | WS_CHILD | WS_VISIBLE, 0);
	    if (yyvsp[0].rcdata_item != NULL)
	      {
		if (dialog.ex == NULL)
		  rcparse_warning (_("control data requires DIALOGEX"));
		yyval.dialog_control->data = yyvsp[0].rcdata_item;
	      }
	  ;
    break;}
case 85:
#line 652 "rcparse.y"
{
    	    yyval.dialog_control = define_control (yyvsp[-8].s, yyvsp[-7].il, yyvsp[-6].il, yyvsp[-5].il, yyvsp[-4].il, yyvsp[-3].il, CTL_STATIC,
				 style, yyvsp[-1].il);
	    if (yyvsp[0].rcdata_item != NULL)
	      {
		if (dialog.ex == NULL)
		  rcparse_warning (_("control data requires DIALOGEX"));
		yyval.dialog_control->data = yyvsp[0].rcdata_item;
	      }
	  ;
    break;}
case 86:
#line 664 "rcparse.y"
{
    	    yyval.dialog_control = define_control (yyvsp[-9].s, yyvsp[-8].il, yyvsp[-7].il, yyvsp[-6].il, yyvsp[-5].il, yyvsp[-4].il, CTL_STATIC,
				 style, yyvsp[-2].il);
	    if (dialog.ex == NULL)
	      rcparse_warning (_("help ID requires DIALOGEX"));
	    yyval.dialog_control->help = yyvsp[-1].il;
	    yyval.dialog_control->data = yyvsp[0].rcdata_item;
	  ;
    break;}
case 87:
#line 673 "rcparse.y"
{
	      default_style = ES_LEFT | WS_BORDER | WS_TABSTOP;
	      base_style = ES_LEFT | WS_BORDER | WS_TABSTOP;
	      class = CTL_EDIT;
	    ;
    break;}
case 88:
#line 679 "rcparse.y"
{
	    yyval.dialog_control = yyvsp[0].dialog_control;
	    if (dialog.ex == NULL)
	      rcparse_warning (_("IEDIT requires DIALOGEX"));
	    res_string_to_id (&yyval.dialog_control->class, "IEDIT");
	  ;
    break;}
case 89:
#line 686 "rcparse.y"
{
	      default_style = LBS_NOTIFY | WS_BORDER;
	      base_style = LBS_NOTIFY | WS_BORDER;
	      class = CTL_LISTBOX;
	    ;
    break;}
case 90:
#line 692 "rcparse.y"
{
	    yyval.dialog_control = yyvsp[0].dialog_control;
	  ;
    break;}
case 91:
#line 696 "rcparse.y"
{
	      default_style = SS_LEFT | WS_GROUP;
	      base_style = SS_LEFT;
	      class = CTL_STATIC;
	    ;
    break;}
case 92:
#line 702 "rcparse.y"
{
	    yyval.dialog_control = yyvsp[0].dialog_control;
	  ;
    break;}
case 93:
#line 706 "rcparse.y"
{
	      default_style = BS_PUSHBOX | WS_TABSTOP;
	      base_style = BS_PUSHBOX;
	      class = CTL_BUTTON;
	    ;
    break;}
case 94:
#line 712 "rcparse.y"
{
	    yyval.dialog_control = yyvsp[0].dialog_control;
	  ;
    break;}
case 95:
#line 716 "rcparse.y"
{
	      default_style = BS_PUSHBUTTON | WS_TABSTOP;
	      base_style = BS_PUSHBUTTON | WS_TABSTOP;
	      class = CTL_BUTTON;
	    ;
    break;}
case 96:
#line 722 "rcparse.y"
{
	    yyval.dialog_control = yyvsp[0].dialog_control;
	  ;
    break;}
case 97:
#line 726 "rcparse.y"
{
	      default_style = BS_RADIOBUTTON | WS_TABSTOP;
	      base_style = BS_RADIOBUTTON;
	      class = CTL_BUTTON;
	    ;
    break;}
case 98:
#line 732 "rcparse.y"
{
	    yyval.dialog_control = yyvsp[0].dialog_control;
	  ;
    break;}
case 99:
#line 736 "rcparse.y"
{
	      default_style = SS_RIGHT | WS_GROUP;
	      base_style = SS_RIGHT;
	      class = CTL_STATIC;
	    ;
    break;}
case 100:
#line 742 "rcparse.y"
{
	    yyval.dialog_control = yyvsp[0].dialog_control;
	  ;
    break;}
case 101:
#line 746 "rcparse.y"
{
	      default_style = SBS_HORZ;
	      base_style = 0;
	      class = CTL_SCROLLBAR;
	    ;
    break;}
case 102:
#line 752 "rcparse.y"
{
	    yyval.dialog_control = yyvsp[0].dialog_control;
	  ;
    break;}
case 103:
#line 756 "rcparse.y"
{
	      default_style = BS_3STATE | WS_TABSTOP;
	      base_style = BS_3STATE;
	      class = CTL_BUTTON;
	    ;
    break;}
case 104:
#line 762 "rcparse.y"
{
	    yyval.dialog_control = yyvsp[0].dialog_control;
	  ;
    break;}
case 105:
#line 767 "rcparse.y"
{ style = WS_CHILD | WS_VISIBLE; ;
    break;}
case 106:
#line 769 "rcparse.y"
{
	    yyval.dialog_control = define_control (yyvsp[-14].s, yyvsp[-12].il, yyvsp[-10].il, yyvsp[-8].il, yyvsp[-6].il, yyvsp[-4].il, CTL_BUTTON,
				 style, yyvsp[0].il);
	  ;
    break;}
case 107:
#line 785 "rcparse.y"
{
	    yyval.dialog_control = define_control (yyvsp[-6].s, yyvsp[-5].il, yyvsp[-4].il, yyvsp[-3].il, yyvsp[-2].il, yyvsp[-1].il, class,
				 default_style | WS_CHILD | WS_VISIBLE, 0);
	    if (yyvsp[0].rcdata_item != NULL)
	      {
		if (dialog.ex == NULL)
		  rcparse_warning (_("control data requires DIALOGEX"));
		yyval.dialog_control->data = yyvsp[0].rcdata_item;
	      }
	  ;
    break;}
case 108:
#line 797 "rcparse.y"
{
	    yyval.dialog_control = define_control (yyvsp[-8].s, yyvsp[-7].il, yyvsp[-6].il, yyvsp[-5].il, yyvsp[-4].il, yyvsp[-3].il, class, style, yyvsp[-1].il);
	    if (yyvsp[0].rcdata_item != NULL)
	      {
		if (dialog.ex == NULL)
		  rcparse_warning (_("control data requires DIALOGEX"));
		yyval.dialog_control->data = yyvsp[0].rcdata_item;
	      }
	  ;
    break;}
case 109:
#line 808 "rcparse.y"
{
	    yyval.dialog_control = define_control (yyvsp[-9].s, yyvsp[-8].il, yyvsp[-7].il, yyvsp[-6].il, yyvsp[-5].il, yyvsp[-4].il, class, style, yyvsp[-2].il);
	    if (dialog.ex == NULL)
	      rcparse_warning (_("help ID requires DIALOGEX"));
	    yyval.dialog_control->help = yyvsp[-1].il;
	    yyval.dialog_control->data = yyvsp[0].rcdata_item;
	  ;
    break;}
case 110:
#line 819 "rcparse.y"
{
	    yyval.s = NULL;
	  ;
    break;}
case 111:
#line 823 "rcparse.y"
{
	    yyval.s = yyvsp[-1].s;
	  ;
    break;}
case 112:
#line 830 "rcparse.y"
{
	    yyval.rcdata_item = NULL;
	  ;
    break;}
case 113:
#line 834 "rcparse.y"
{
	    yyval.rcdata_item = yyvsp[-1].rcdata.first;
	  ;
    break;}
case 114:
#line 843 "rcparse.y"
{ style = WS_CHILD | WS_VISIBLE; ;
    break;}
case 116:
#line 849 "rcparse.y"
{ style = SS_ICON | WS_CHILD | WS_VISIBLE; ;
    break;}
case 118:
#line 855 "rcparse.y"
{ style = base_style | WS_CHILD | WS_VISIBLE; ;
    break;}
case 120:
#line 863 "rcparse.y"
{
	    define_font (yyvsp[-3].id, &yyvsp[-1].res_info, yyvsp[0].s);
	  ;
    break;}
case 121:
#line 872 "rcparse.y"
{
	    define_icon (yyvsp[-3].id, &yyvsp[-1].res_info, yyvsp[0].s);
	  ;
    break;}
case 122:
#line 882 "rcparse.y"
{
	    language = yyvsp[-1].il | (yyvsp[0].il << 8);
	  ;
    break;}
case 123:
#line 891 "rcparse.y"
{
	    define_menu (yyvsp[-5].id, &yyvsp[-3].res_info, yyvsp[-1].menuitem);
	  ;
    break;}
case 124:
#line 898 "rcparse.y"
{
	    yyval.menuitem = NULL;
	  ;
    break;}
case 125:
#line 902 "rcparse.y"
{
	    if (yyvsp[-1].menuitem == NULL)
	      yyval.menuitem = yyvsp[0].menuitem;
	    else
	      {
		struct menuitem **pp;

		for (pp = &yyvsp[-1].menuitem->next; *pp != NULL; pp = &(*pp)->next)
		  ;
		*pp = yyvsp[0].menuitem;
		yyval.menuitem = yyvsp[-1].menuitem;
	      }
	  ;
    break;}
case 126:
#line 919 "rcparse.y"
{
	    yyval.menuitem = define_menuitem (yyvsp[-2].s, yyvsp[-1].il, yyvsp[0].is, 0, 0, NULL);
	  ;
    break;}
case 127:
#line 923 "rcparse.y"
{
	    yyval.menuitem = define_menuitem (NULL, 0, 0, 0, 0, NULL);
	  ;
    break;}
case 128:
#line 927 "rcparse.y"
{
	    yyval.menuitem = define_menuitem (yyvsp[-4].s, 0, yyvsp[-3].is, 0, 0, yyvsp[-1].menuitem);
	  ;
    break;}
case 129:
#line 934 "rcparse.y"
{
	    yyval.is = 0;
	  ;
    break;}
case 130:
#line 938 "rcparse.y"
{
	    yyval.is = yyvsp[-2].is | yyvsp[0].is;
	  ;
    break;}
case 131:
#line 942 "rcparse.y"
{
	    yyval.is = yyvsp[-1].is | yyvsp[0].is;
	  ;
    break;}
case 132:
#line 949 "rcparse.y"
{
	    yyval.is = MENUITEM_CHECKED;
	  ;
    break;}
case 133:
#line 953 "rcparse.y"
{
	    yyval.is = MENUITEM_GRAYED;
	  ;
    break;}
case 134:
#line 957 "rcparse.y"
{
	    yyval.is = MENUITEM_HELP;
	  ;
    break;}
case 135:
#line 961 "rcparse.y"
{
	    yyval.is = MENUITEM_INACTIVE;
	  ;
    break;}
case 136:
#line 965 "rcparse.y"
{
	    yyval.is = MENUITEM_MENUBARBREAK;
	  ;
    break;}
case 137:
#line 969 "rcparse.y"
{
	    yyval.is = MENUITEM_MENUBREAK;
	  ;
    break;}
case 138:
#line 978 "rcparse.y"
{
	    define_menu (yyvsp[-5].id, &yyvsp[-3].res_info, yyvsp[-1].menuitem);
	  ;
    break;}
case 139:
#line 985 "rcparse.y"
{
	    yyval.menuitem = NULL;
	  ;
    break;}
case 140:
#line 989 "rcparse.y"
{
	    if (yyvsp[-1].menuitem == NULL)
	      yyval.menuitem = yyvsp[0].menuitem;
	    else
	      {
		struct menuitem **pp;

		for (pp = &yyvsp[-1].menuitem->next; *pp != NULL; pp = &(*pp)->next)
		  ;
		*pp = yyvsp[0].menuitem;
		yyval.menuitem = yyvsp[-1].menuitem;
	      }
	  ;
    break;}
case 141:
#line 1006 "rcparse.y"
{
	    yyval.menuitem = define_menuitem (yyvsp[0].s, 0, 0, 0, 0, NULL);
	  ;
    break;}
case 142:
#line 1010 "rcparse.y"
{
	    yyval.menuitem = define_menuitem (yyvsp[-1].s, yyvsp[0].il, 0, 0, 0, NULL);
	  ;
    break;}
case 143:
#line 1014 "rcparse.y"
{
	    yyval.menuitem = define_menuitem (yyvsp[-3].s, yyvsp[-2].il, yyvsp[-1].il, yyvsp[0].il, 0, NULL);
	  ;
    break;}
case 144:
#line 1018 "rcparse.y"
{
 	    yyval.menuitem = define_menuitem (NULL, 0, 0, 0, 0, NULL);
 	  ;
    break;}
case 145:
#line 1022 "rcparse.y"
{
	    yyval.menuitem = define_menuitem (yyvsp[-3].s, 0, 0, 0, 0, yyvsp[-1].menuitem);
	  ;
    break;}
case 146:
#line 1026 "rcparse.y"
{
	    yyval.menuitem = define_menuitem (yyvsp[-4].s, yyvsp[-3].il, 0, 0, 0, yyvsp[-1].menuitem);
	  ;
    break;}
case 147:
#line 1030 "rcparse.y"
{
	    yyval.menuitem = define_menuitem (yyvsp[-5].s, yyvsp[-4].il, yyvsp[-3].il, 0, 0, yyvsp[-1].menuitem);
	  ;
    break;}
case 148:
#line 1035 "rcparse.y"
{
	    yyval.menuitem = define_menuitem (yyvsp[-7].s, yyvsp[-6].il, yyvsp[-5].il, yyvsp[-4].il, yyvsp[-3].il, yyvsp[-1].menuitem);
	  ;
    break;}
case 149:
#line 1044 "rcparse.y"
{
	    define_messagetable (yyvsp[-3].id, &yyvsp[-1].res_info, yyvsp[0].s);
	  ;
    break;}
case 150:
#line 1053 "rcparse.y"
{
	    define_rcdata (yyvsp[-5].id, &yyvsp[-3].res_info, yyvsp[-1].rcdata.first);
	  ;
    break;}
case 151:
#line 1062 "rcparse.y"
{
	    rcparse_rcdata ();
	  ;
    break;}
case 152:
#line 1066 "rcparse.y"
{
	    rcparse_normal ();
	    yyval.rcdata = yyvsp[0].rcdata;
	  ;
    break;}
case 153:
#line 1074 "rcparse.y"
{
	    yyval.rcdata.first = NULL;
	    yyval.rcdata.last = NULL;
	  ;
    break;}
case 154:
#line 1079 "rcparse.y"
{
	    yyval.rcdata = yyvsp[0].rcdata;
	  ;
    break;}
case 155:
#line 1086 "rcparse.y"
{
	    struct rcdata_item *ri;

	    ri = define_rcdata_string (yyvsp[0].ss.s, yyvsp[0].ss.length);
	    yyval.rcdata.first = ri;
	    yyval.rcdata.last = ri;
	  ;
    break;}
case 156:
#line 1094 "rcparse.y"
{
	    struct rcdata_item *ri;

	    ri = define_rcdata_number (yyvsp[0].i.val, yyvsp[0].i.dword);
	    yyval.rcdata.first = ri;
	    yyval.rcdata.last = ri;
	  ;
    break;}
case 157:
#line 1102 "rcparse.y"
{
	    struct rcdata_item *ri;

	    ri = define_rcdata_string (yyvsp[0].ss.s, yyvsp[0].ss.length);
	    yyval.rcdata.first = yyvsp[-2].rcdata.first;
	    yyvsp[-2].rcdata.last->next = ri;
	    yyval.rcdata.last = ri;
	  ;
    break;}
case 158:
#line 1111 "rcparse.y"
{
	    struct rcdata_item *ri;

	    ri = define_rcdata_number (yyvsp[0].i.val, yyvsp[0].i.dword);
	    yyval.rcdata.first = yyvsp[-2].rcdata.first;
	    yyvsp[-2].rcdata.last->next = ri;
	    yyval.rcdata.last = ri;
	  ;
    break;}
case 159:
#line 1125 "rcparse.y"
{ sub_res_info = yyvsp[-1].res_info; ;
    break;}
case 162:
#line 1132 "rcparse.y"
{
	    define_stringtable (&sub_res_info, yyvsp[-1].il, yyvsp[0].s);
	  ;
    break;}
case 163:
#line 1136 "rcparse.y"
{
	    define_stringtable (&sub_res_info, yyvsp[-2].il, yyvsp[0].s);
	  ;
    break;}
case 164:
#line 1146 "rcparse.y"
{
	    define_user_data (yyvsp[-5].id, yyvsp[-4].id, &yyvsp[-3].res_info, yyvsp[-1].rcdata.first);
	  ;
    break;}
case 165:
#line 1150 "rcparse.y"
{
	    define_user_file (yyvsp[-3].id, yyvsp[-2].id, &yyvsp[-1].res_info, yyvsp[0].s);
	  ;
    break;}
case 166:
#line 1159 "rcparse.y"
{
	    define_versioninfo (yyvsp[-5].id, language, yyvsp[-3].fixver, yyvsp[-1].verinfo);
	  ;
    break;}
case 167:
#line 1166 "rcparse.y"
{
	    yyval.fixver = ((struct fixed_versioninfo *)
		  res_alloc (sizeof (struct fixed_versioninfo)));
	    memset (yyval.fixver, 0, sizeof (struct fixed_versioninfo));
	  ;
    break;}
case 168:
#line 1172 "rcparse.y"
{
	    yyvsp[-5].fixver->file_version_ms = (yyvsp[-3].il << 16) | yyvsp[-2].il;
	    yyvsp[-5].fixver->file_version_ls = (yyvsp[-1].il << 16) | yyvsp[0].il;
	    yyval.fixver = yyvsp[-5].fixver;
	  ;
    break;}
case 169:
#line 1178 "rcparse.y"
{
	    yyvsp[-5].fixver->product_version_ms = (yyvsp[-3].il << 16) | yyvsp[-2].il;
	    yyvsp[-5].fixver->product_version_ls = (yyvsp[-1].il << 16) | yyvsp[0].il;
	    yyval.fixver = yyvsp[-5].fixver;
	  ;
    break;}
case 170:
#line 1184 "rcparse.y"
{
	    yyvsp[-2].fixver->file_flags_mask = yyvsp[0].il;
	    yyval.fixver = yyvsp[-2].fixver;
	  ;
    break;}
case 171:
#line 1189 "rcparse.y"
{
	    yyvsp[-2].fixver->file_flags = yyvsp[0].il;
	    yyval.fixver = yyvsp[-2].fixver;
	  ;
    break;}
case 172:
#line 1194 "rcparse.y"
{
	    yyvsp[-2].fixver->file_os = yyvsp[0].il;
	    yyval.fixver = yyvsp[-2].fixver;
	  ;
    break;}
case 173:
#line 1199 "rcparse.y"
{
	    yyvsp[-2].fixver->file_type = yyvsp[0].il;
	    yyval.fixver = yyvsp[-2].fixver;
	  ;
    break;}
case 174:
#line 1204 "rcparse.y"
{
	    yyvsp[-2].fixver->file_subtype = yyvsp[0].il;
	    yyval.fixver = yyvsp[-2].fixver;
	  ;
    break;}
case 175:
#line 1218 "rcparse.y"
{
	    yyval.verinfo = NULL;
	  ;
    break;}
case 176:
#line 1222 "rcparse.y"
{
	    yyval.verinfo = append_ver_stringfileinfo (yyvsp[-7].verinfo, yyvsp[-4].s, yyvsp[-2].verstring);
	  ;
    break;}
case 177:
#line 1226 "rcparse.y"
{
	    yyval.verinfo = append_ver_varfileinfo (yyvsp[-6].verinfo, yyvsp[-2].s, yyvsp[-1].vervar);
	  ;
    break;}
case 178:
#line 1233 "rcparse.y"
{
	    yyval.verstring = NULL;
	  ;
    break;}
case 179:
#line 1237 "rcparse.y"
{
	    yyval.verstring = append_verval (yyvsp[-4].verstring, yyvsp[-2].s, yyvsp[0].s);
	  ;
    break;}
case 180:
#line 1244 "rcparse.y"
{
	    yyval.vervar = NULL;
	  ;
    break;}
case 181:
#line 1248 "rcparse.y"
{
	    yyval.vervar = append_vertrans (yyvsp[-2].vervar, yyvsp[-1].il, yyvsp[0].il);
	  ;
    break;}
case 182:
#line 1257 "rcparse.y"
{
	    yyval.id.named = 0;
	    yyval.id.u.id = yyvsp[0].il;
	  ;
    break;}
case 183:
#line 1262 "rcparse.y"
{
	    char *copy, *s;

	    /* It seems that resource ID's are forced to upper case.  */
	    copy = xstrdup (yyvsp[0].s);
	    for (s = copy; *s != '\0'; s++)
	      if (islower ((unsigned char) *s))
		*s = toupper ((unsigned char) *s);
	    res_string_to_id (&yyval.id, copy);
	    free (copy);
	  ;
    break;}
case 184:
#line 1280 "rcparse.y"
{
	    memset (&yyval.res_info, 0, sizeof (struct res_res_info));
	    yyval.res_info.language = language;
	    /* FIXME: Is this the right default?  */
	    yyval.res_info.memflags = MEMFLAG_MOVEABLE;
	  ;
    break;}
case 185:
#line 1287 "rcparse.y"
{
	    yyval.res_info = yyvsp[-1].res_info;
	    yyval.res_info.memflags |= yyvsp[0].memflags.on;
	    yyval.res_info.memflags &=~ yyvsp[0].memflags.off;
	  ;
    break;}
case 186:
#line 1293 "rcparse.y"
{
	    yyval.res_info = yyvsp[-2].res_info;
	    yyval.res_info.characteristics = yyvsp[0].il;
	  ;
    break;}
case 187:
#line 1298 "rcparse.y"
{
	    yyval.res_info = yyvsp[-3].res_info;
	    yyval.res_info.language = yyvsp[-1].il | (yyvsp[0].il << 8);
	  ;
    break;}
case 188:
#line 1303 "rcparse.y"
{
	    yyval.res_info = yyvsp[-2].res_info;
	    yyval.res_info.version = yyvsp[0].il;
	  ;
    break;}
case 189:
#line 1313 "rcparse.y"
{
	    memset (&yyval.res_info, 0, sizeof (struct res_res_info));
	    yyval.res_info.language = language;
	    yyval.res_info.memflags = MEMFLAG_MOVEABLE | MEMFLAG_DISCARDABLE;
	  ;
    break;}
case 190:
#line 1319 "rcparse.y"
{
	    yyval.res_info = yyvsp[-1].res_info;
	    yyval.res_info.memflags |= yyvsp[0].memflags.on;
	    yyval.res_info.memflags &=~ yyvsp[0].memflags.off;
	  ;
    break;}
case 191:
#line 1330 "rcparse.y"
{
	    memset (&yyval.res_info, 0, sizeof (struct res_res_info));
	    yyval.res_info.language = language;
	    yyval.res_info.memflags = MEMFLAG_MOVEABLE;
	  ;
    break;}
case 192:
#line 1336 "rcparse.y"
{
	    yyval.res_info = yyvsp[-1].res_info;
	    yyval.res_info.memflags |= yyvsp[0].memflags.on;
	    yyval.res_info.memflags &=~ yyvsp[0].memflags.off;
	  ;
    break;}
case 193:
#line 1348 "rcparse.y"
{
	    yyval.memflags.on = MEMFLAG_MOVEABLE;
	    yyval.memflags.off = 0;
	  ;
    break;}
case 194:
#line 1353 "rcparse.y"
{
	    yyval.memflags.on = 0;
	    yyval.memflags.off = MEMFLAG_MOVEABLE;
	  ;
    break;}
case 195:
#line 1358 "rcparse.y"
{
	    yyval.memflags.on = MEMFLAG_PURE;
	    yyval.memflags.off = 0;
	  ;
    break;}
case 196:
#line 1363 "rcparse.y"
{
	    yyval.memflags.on = 0;
	    yyval.memflags.off = MEMFLAG_PURE;
	  ;
    break;}
case 197:
#line 1368 "rcparse.y"
{
	    yyval.memflags.on = MEMFLAG_PRELOAD;
	    yyval.memflags.off = 0;
	  ;
    break;}
case 198:
#line 1373 "rcparse.y"
{
	    yyval.memflags.on = 0;
	    yyval.memflags.off = MEMFLAG_PRELOAD;
	  ;
    break;}
case 199:
#line 1378 "rcparse.y"
{
	    yyval.memflags.on = MEMFLAG_DISCARDABLE;
	    yyval.memflags.off = 0;
	  ;
    break;}
case 200:
#line 1388 "rcparse.y"
{
	    yyval.s = yyvsp[0].s;
	  ;
    break;}
case 201:
#line 1392 "rcparse.y"
{
	    yyval.s = yyvsp[0].s;
	  ;
    break;}
case 202:
#line 1409 "rcparse.y"
{
	    style |= yyvsp[0].il;
	  ;
    break;}
case 203:
#line 1413 "rcparse.y"
{
	    style &=~ yyvsp[0].il;
	  ;
    break;}
case 204:
#line 1417 "rcparse.y"
{
	    style |= yyvsp[0].il;
	  ;
    break;}
case 205:
#line 1421 "rcparse.y"
{
	    style &=~ yyvsp[0].il;
	  ;
    break;}
case 206:
#line 1428 "rcparse.y"
{
	    yyval.il = yyvsp[0].i.val;
	  ;
    break;}
case 207:
#line 1432 "rcparse.y"
{
	    yyval.il = yyvsp[-1].il;
	  ;
    break;}
case 208:
#line 1441 "rcparse.y"
{
	    yyval.il = 0;
	  ;
    break;}
case 209:
#line 1445 "rcparse.y"
{
	    yyval.il = yyvsp[0].il;
	  ;
    break;}
case 210:
#line 1454 "rcparse.y"
{
	    yyval.il = yyvsp[0].il;
	  ;
    break;}
case 211:
#line 1463 "rcparse.y"
{
	    yyval.il = yyvsp[0].i.val;
	  ;
    break;}
case 212:
#line 1472 "rcparse.y"
{
	    yyval.i = yyvsp[0].i;
	  ;
    break;}
case 213:
#line 1476 "rcparse.y"
{
	    yyval.i = yyvsp[-1].i;
	  ;
    break;}
case 214:
#line 1480 "rcparse.y"
{
	    yyval.i.val = ~ yyvsp[0].i.val;
	    yyval.i.dword = yyvsp[0].i.dword;
	  ;
    break;}
case 215:
#line 1485 "rcparse.y"
{
	    yyval.i.val = - yyvsp[0].i.val;
	    yyval.i.dword = yyvsp[0].i.dword;
	  ;
    break;}
case 216:
#line 1490 "rcparse.y"
{
	    yyval.i.val = yyvsp[-2].i.val * yyvsp[0].i.val;
	    yyval.i.dword = yyvsp[-2].i.dword || yyvsp[0].i.dword;
	  ;
    break;}
case 217:
#line 1495 "rcparse.y"
{
	    yyval.i.val = yyvsp[-2].i.val / yyvsp[0].i.val;
	    yyval.i.dword = yyvsp[-2].i.dword || yyvsp[0].i.dword;
	  ;
    break;}
case 218:
#line 1500 "rcparse.y"
{
	    yyval.i.val = yyvsp[-2].i.val % yyvsp[0].i.val;
	    yyval.i.dword = yyvsp[-2].i.dword || yyvsp[0].i.dword;
	  ;
    break;}
case 219:
#line 1505 "rcparse.y"
{
	    yyval.i.val = yyvsp[-2].i.val + yyvsp[0].i.val;
	    yyval.i.dword = yyvsp[-2].i.dword || yyvsp[0].i.dword;
	  ;
    break;}
case 220:
#line 1510 "rcparse.y"
{
	    yyval.i.val = yyvsp[-2].i.val - yyvsp[0].i.val;
	    yyval.i.dword = yyvsp[-2].i.dword || yyvsp[0].i.dword;
	  ;
    break;}
case 221:
#line 1515 "rcparse.y"
{
	    yyval.i.val = yyvsp[-2].i.val & yyvsp[0].i.val;
	    yyval.i.dword = yyvsp[-2].i.dword || yyvsp[0].i.dword;
	  ;
    break;}
case 222:
#line 1520 "rcparse.y"
{
	    yyval.i.val = yyvsp[-2].i.val ^ yyvsp[0].i.val;
	    yyval.i.dword = yyvsp[-2].i.dword || yyvsp[0].i.dword;
	  ;
    break;}
case 223:
#line 1525 "rcparse.y"
{
	    yyval.i.val = yyvsp[-2].i.val | yyvsp[0].i.val;
	    yyval.i.dword = yyvsp[-2].i.dword || yyvsp[0].i.dword;
	  ;
    break;}
case 224:
#line 1536 "rcparse.y"
{
	    yyval.il = yyvsp[0].il;
	  ;
    break;}
case 225:
#line 1545 "rcparse.y"
{
	    yyval.il = yyvsp[0].i.val;
	  ;
    break;}
case 226:
#line 1556 "rcparse.y"
{
	    yyval.i = yyvsp[0].i;
	  ;
    break;}
case 227:
#line 1560 "rcparse.y"
{
	    yyval.i = yyvsp[-1].i;
	  ;
    break;}
case 228:
#line 1564 "rcparse.y"
{
	    yyval.i.val = ~ yyvsp[0].i.val;
	    yyval.i.dword = yyvsp[0].i.dword;
	  ;
    break;}
case 229:
#line 1569 "rcparse.y"
{
	    yyval.i.val = yyvsp[-2].i.val * yyvsp[0].i.val;
	    yyval.i.dword = yyvsp[-2].i.dword || yyvsp[0].i.dword;
	  ;
    break;}
case 230:
#line 1574 "rcparse.y"
{
	    yyval.i.val = yyvsp[-2].i.val / yyvsp[0].i.val;
	    yyval.i.dword = yyvsp[-2].i.dword || yyvsp[0].i.dword;
	  ;
    break;}
case 231:
#line 1579 "rcparse.y"
{
	    yyval.i.val = yyvsp[-2].i.val % yyvsp[0].i.val;
	    yyval.i.dword = yyvsp[-2].i.dword || yyvsp[0].i.dword;
	  ;
    break;}
case 232:
#line 1584 "rcparse.y"
{
	    yyval.i.val = yyvsp[-2].i.val + yyvsp[0].i.val;
	    yyval.i.dword = yyvsp[-2].i.dword || yyvsp[0].i.dword;
	  ;
    break;}
case 233:
#line 1589 "rcparse.y"
{
	    yyval.i.val = yyvsp[-2].i.val - yyvsp[0].i.val;
	    yyval.i.dword = yyvsp[-2].i.dword || yyvsp[0].i.dword;
	  ;
    break;}
case 234:
#line 1594 "rcparse.y"
{
	    yyval.i.val = yyvsp[-2].i.val & yyvsp[0].i.val;
	    yyval.i.dword = yyvsp[-2].i.dword || yyvsp[0].i.dword;
	  ;
    break;}
case 235:
#line 1599 "rcparse.y"
{
	    yyval.i.val = yyvsp[-2].i.val ^ yyvsp[0].i.val;
	    yyval.i.dword = yyvsp[-2].i.dword || yyvsp[0].i.dword;
	  ;
    break;}
case 236:
#line 1604 "rcparse.y"
{
	    yyval.i.val = yyvsp[-2].i.val | yyvsp[0].i.val;
	    yyval.i.dword = yyvsp[-2].i.dword || yyvsp[0].i.dword;
	  ;
    break;}
}
   /* the action file gets copied in in place of this dollarsign */
#line 543 "/usr/share/misc/bison.simple"

  yyvsp -= yylen;
  yyssp -= yylen;
#ifdef YYLSP_NEEDED
  yylsp -= yylen;
#endif

#if YYDEBUG != 0
  if (yydebug)
    {
      short *ssp1 = yyss - 1;
      fprintf (stderr, "state stack now");
      while (ssp1 != yyssp)
	fprintf (stderr, " %d", *++ssp1);
      fprintf (stderr, "\n");
    }
#endif

  *++yyvsp = yyval;

#ifdef YYLSP_NEEDED
  yylsp++;
  if (yylen == 0)
    {
      yylsp->first_line = yylloc.first_line;
      yylsp->first_column = yylloc.first_column;
      yylsp->last_line = (yylsp-1)->last_line;
      yylsp->last_column = (yylsp-1)->last_column;
      yylsp->text = 0;
    }
  else
    {
      yylsp->last_line = (yylsp+yylen-1)->last_line;
      yylsp->last_column = (yylsp+yylen-1)->last_column;
    }
#endif

  /* Now "shift" the result of the reduction.
     Determine what state that goes to,
     based on the state we popped back to
     and the rule number reduced by.  */

  yyn = yyr1[yyn];

  yystate = yypgoto[yyn - YYNTBASE] + *yyssp;
  if (yystate >= 0 && yystate <= YYLAST && yycheck[yystate] == *yyssp)
    yystate = yytable[yystate];
  else
    yystate = yydefgoto[yyn - YYNTBASE];

  goto yynewstate;

yyerrlab:   /* here on detecting error */

  if (! yyerrstatus)
    /* If not already recovering from an error, report this error.  */
    {
      ++yynerrs;

#ifdef YYERROR_VERBOSE
      yyn = yypact[yystate];

      if (yyn > YYFLAG && yyn < YYLAST)
	{
	  int size = 0;
	  char *msg;
	  int x, count;

	  count = 0;
	  /* Start X at -yyn if nec to avoid negative indexes in yycheck.  */
	  for (x = (yyn < 0 ? -yyn : 0);
	       x < (sizeof(yytname) / sizeof(char *)); x++)
	    if (yycheck[x + yyn] == x)
	      size += strlen(yytname[x]) + 15, count++;
	  msg = (char *) malloc(size + 15);
	  if (msg != 0)
	    {
	      strcpy(msg, "parse error");

	      if (count < 5)
		{
		  count = 0;
		  for (x = (yyn < 0 ? -yyn : 0);
		       x < (sizeof(yytname) / sizeof(char *)); x++)
		    if (yycheck[x + yyn] == x)
		      {
			strcat(msg, count == 0 ? ", expecting `" : " or `");
			strcat(msg, yytname[x]);
			strcat(msg, "'");
			count++;
		      }
		}
	      yyerror(msg);
	      free(msg);
	    }
	  else
	    yyerror ("parse error; also virtual memory exceeded");
	}
      else
#endif /* YYERROR_VERBOSE */
	yyerror("parse error");
    }

  goto yyerrlab1;
yyerrlab1:   /* here on error raised explicitly by an action */

  if (yyerrstatus == 3)
    {
      /* if just tried and failed to reuse lookahead token after an error, discard it.  */

      /* return failure if at end of input */
      if (yychar == YYEOF)
	YYABORT;

#if YYDEBUG != 0
      if (yydebug)
	fprintf(stderr, "Discarding token %d (%s).\n", yychar, yytname[yychar1]);
#endif

      yychar = YYEMPTY;
    }

  /* Else will try to reuse lookahead token
     after shifting the error token.  */

  yyerrstatus = 3;		/* Each real token shifted decrements this */

  goto yyerrhandle;

yyerrdefault:  /* current state does not do anything special for the error token. */

#if 0
  /* This is wrong; only states that explicitly want error tokens
     should shift them.  */
  yyn = yydefact[yystate];  /* If its default is to accept any token, ok.  Otherwise pop it.*/
  if (yyn) goto yydefault;
#endif

yyerrpop:   /* pop the current state because it cannot handle the error token */

  if (yyssp == yyss) YYABORT;
  yyvsp--;
  yystate = *--yyssp;
#ifdef YYLSP_NEEDED
  yylsp--;
#endif

#if YYDEBUG != 0
  if (yydebug)
    {
      short *ssp1 = yyss - 1;
      fprintf (stderr, "Error: state stack now");
      while (ssp1 != yyssp)
	fprintf (stderr, " %d", *++ssp1);
      fprintf (stderr, "\n");
    }
#endif

yyerrhandle:

  yyn = yypact[yystate];
  if (yyn == YYFLAG)
    goto yyerrdefault;

  yyn += YYTERROR;
  if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != YYTERROR)
    goto yyerrdefault;

  yyn = yytable[yyn];
  if (yyn < 0)
    {
      if (yyn == YYFLAG)
	goto yyerrpop;
      yyn = -yyn;
      goto yyreduce;
    }
  else if (yyn == 0)
    goto yyerrpop;

  if (yyn == YYFINAL)
    YYACCEPT;

#if YYDEBUG != 0
  if (yydebug)
    fprintf(stderr, "Shifting error token, ");
#endif

  *++yyvsp = yylval;
#ifdef YYLSP_NEEDED
  *++yylsp = yylloc;
#endif

  yystate = yyn;
  goto yynewstate;

 yyacceptlab:
  /* YYACCEPT comes here.  */
  if (yyfree_stacks)
    {
      free (yyss);
      free (yyvs);
#ifdef YYLSP_NEEDED
      free (yyls);
#endif
    }
  return 0;

 yyabortlab:
  /* YYABORT comes here.  */
  if (yyfree_stacks)
    {
      free (yyss);
      free (yyvs);
#ifdef YYLSP_NEEDED
      free (yyls);
#endif
    }
  return 1;
}
#line 1610 "rcparse.y"


/* Set the language from the command line.  */

void
rcparse_set_language (lang)
     int lang;
{
  language = lang;
}
