
/*  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, 1999, 2000 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		483
#define	YYFLAG		-32768
#define	YYNTBASE	99

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

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,   344,   355,   367,   368,   372,
   373,   377,   378,   382,   383,   387,   388,   392,   393,   397,
   398,   402,   403,   407,   408,   412,   413,   430,   438,   448,
   459,   460,   462,   465,   466,   470,   471,   475,   476,   480,
   481,   485,   490,   495,   499,   506,   507,   510,   515,   518,
   525,   526,   530,   533,   535,   537,   539,   541,   543,   545,
   552,   553,   556,   559,   563,   569,   572,   578,   585,   593,
   603,   608,   615,   616,   619,   620,   622,   624,   626,   630,
   634,   635,   642,   643,   647,   652,   659,   664,   671,   672,
   679,   686,   690,   694,   698,   702,   706,   707,   716,   724,
   725,   731,   732,   736,   738,   740,   742,   745,   748,   751,
   753,   754,   757,   761,   766,   770,   771,   774,   775,   778,
   780,   782,   784,   786,   788,   790,   792,   794,   796,   798,
   801,   805,   810,   812,   816,   817,   819,   822,   824,   826,
   830,   833,   836,   840,   844,   848,   852,   856,   860,   864,
   868,   871,   873,   875,   879,   882,   886,   890,   894,   898,
   902,   906,   910
};

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,   177,     3,   102,     4,     0,     0,   102,
   103,     0,   104,   188,     0,   104,   188,    95,   105,     0,
    80,     0,   189,     0,   106,     0,   105,    95,   106,     0,
   105,   106,     0,     6,     0,     7,     0,     8,     0,     9,
     0,    10,     0,    11,     0,   174,    12,   179,   181,     0,
   174,    13,   178,   181,     0,     0,   174,    14,   179,   113,
   189,   185,   185,   185,   110,   114,     3,   116,     4,     0,
     0,   174,    15,   179,   113,   189,   185,   185,   185,   111,
   114,     3,   116,     4,     0,     0,   174,    15,   179,   113,
   189,   185,   185,   185,   185,   112,   114,     3,   116,     4,
     0,     0,    16,    96,   186,     0,     0,   114,    17,    80,
     0,   114,    18,   174,     0,     0,   114,    19,   115,   182,
     0,   114,    16,   186,     0,   114,    41,   186,    95,    80,
     0,   114,    41,   186,    95,    80,   185,   185,     0,   114,
    46,   174,     0,   114,    44,   186,     0,   114,    43,   186,
   185,     0,   114,    45,   186,     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,   186,   185,   142,   185,   185,   185,   185,   184,
   141,     0,    10,   140,   186,   185,   142,   185,   185,   185,
   185,   185,   185,   141,     0,    10,   140,   186,    95,    80,
   142,   185,   185,   185,   185,   184,   141,     0,    10,   140,
   186,    95,    80,   142,   185,   185,   185,   185,   185,   185,
   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,   176,   186,
   185,   185,   141,     0,    42,   176,   186,   185,   185,   185,
   185,   141,     0,    42,   176,   186,   185,   185,   185,   185,
   144,   184,   141,     0,    42,   176,   186,   185,   185,   185,
   185,   144,   185,   185,   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,   186,    95,   186,    95,   186,
    95,   186,    95,   186,    95,   138,   182,   184,     0,   140,
   186,   185,   185,   185,   185,   141,     0,   140,   186,   185,
   185,   185,   185,   146,   184,   141,     0,   140,   186,   185,
   185,   185,   185,   146,   185,   185,   141,     0,     0,    80,
     0,    80,    95,     0,     0,     3,   161,     4,     0,     0,
    95,   143,   182,     0,     0,    95,   145,   182,     0,     0,
    95,   147,   182,     0,   174,    41,   178,   181,     0,   174,
    42,   178,   181,     0,    43,   186,   185,     0,   174,    46,
   177,     3,   152,     4,     0,     0,   152,   153,     0,    48,
    80,   185,   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,   177,     3,   157,     4,
     0,     0,   157,   158,     0,    48,    80,     0,    48,    80,
   185,     0,    48,    80,   185,   185,   184,     0,    48,    49,
     0,    50,    80,     3,   157,     4,     0,    50,    80,   185,
     3,   157,     4,     0,    50,    80,   185,   185,     3,   157,
     4,     0,    50,    80,   185,   185,   185,   184,     3,   157,
     4,     0,   174,    57,   179,   181,     0,   174,    58,   177,
     3,   161,     4,     0,     0,   162,   163,     0,     0,   164,
     0,    83,     0,   187,     0,   164,    95,    83,     0,   164,
    95,   187,     0,     0,    59,   177,     3,   166,   167,     4,
     0,     0,   167,   186,    80,     0,   167,   186,    95,    80,
     0,   174,   174,   177,     3,   161,     4,     0,   174,   174,
   177,   181,     0,   174,    60,   170,     3,   171,     4,     0,
     0,   170,    61,   186,   185,   185,   185,     0,   170,    62,
   186,   185,   185,   185,     0,   170,    63,   186,     0,   170,
    64,   186,     0,   170,    65,   186,     0,   170,    66,   186,
     0,   170,    67,   186,     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,   185,   185,     0,   189,     0,    81,     0,    80,
     0,    80,    95,     0,    81,    95,     0,   189,    95,     0,
   175,     0,     0,   177,   180,     0,   177,    44,   186,     0,
   177,    43,   186,   185,     0,   177,    45,   186,     0,     0,
   178,   180,     0,     0,   179,   180,     0,    72,     0,    73,
     0,    74,     0,    75,     0,    76,     0,    77,     0,    78,
     0,    80,     0,    81,     0,   183,     0,    79,   183,     0,
   182,    85,   183,     0,   182,    85,    79,   183,     0,    82,
     0,    97,   186,    98,     0,     0,   185,     0,    95,   186,
     0,   187,     0,    82,     0,    97,   187,    98,     0,    93,
   187,     0,    89,   187,     0,   187,    90,   187,     0,   187,
    91,   187,     0,   187,    92,   187,     0,   187,    88,   187,
     0,   187,    89,   187,     0,   187,    87,   187,     0,   187,
    86,   187,     0,   187,    85,   187,     0,    95,   189,     0,
   190,     0,    82,     0,    97,   187,    98,     0,    93,   187,
     0,   190,    90,   187,     0,   190,    91,   187,     0,   190,
    92,   187,     0,   190,    88,   187,     0,   190,    89,   187,
     0,   190,    87,   187,     0,   190,    86,   187,     0,   190,
    85,   187,     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,   644,   650,   656,   662,   669,   675,
   682,   685,   692,   695,   702,   705,   712,   715,   722,   725,
   732,   735,   742,   745,   752,   755,   758,   772,   785,   796,
   807,   812,   816,   822,   827,   835,   839,   841,   845,   847,
   851,   855,   864,   874,   883,   890,   895,   911,   916,   920,
   926,   931,   935,   941,   946,   950,   954,   958,   962,   970,
   977,   982,   998,  1003,  1007,  1011,  1015,  1019,  1023,  1027,
  1036,  1045,  1055,  1060,  1066,  1072,  1078,  1087,  1095,  1104,
  1117,  1120,  1123,  1125,  1129,  1138,  1143,  1151,  1158,  1165,
  1171,  1177,  1182,  1187,  1192,  1197,  1210,  1215,  1219,  1225,
  1230,  1236,  1241,  1249,  1255,  1271,  1276,  1280,  1287,  1293,
  1310,  1318,  1324,  1329,  1334,  1343,  1350,  1360,  1367,  1378,
  1384,  1389,  1394,  1399,  1404,  1409,  1418,  1423,  1439,  1444,
  1448,  1452,  1458,  1463,  1471,  1476,  1484,  1493,  1502,  1507,
  1511,  1516,  1521,  1526,  1531,  1536,  1541,  1546,  1551,  1556,
  1566,  1575,  1586,  1591,  1595,  1600,  1605,  1610,  1615,  1620,
  1625,  1630,  1635
};
#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","resname","resref","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,   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,   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,   176,   176,
   177,   177,   177,   177,   177,   178,   178,   179,   179,   180,
   180,   180,   180,   180,   180,   180,   181,   181,   182,   182,
   182,   182,   183,   183,   184,   184,   185,   186,   187,   187,
   187,   187,   187,   187,   187,   187,   187,   187,   187,   187,
   188,   189,   190,   190,   190,   190,   190,   190,   190,   190,
   190,   190,   190
};

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

static const short yypact[] = {-32768,
    31,   240,   241,-32768,-32768,-32768,-32768,   241,   241,-32768,
-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
-32768,-32768,-32768,    68,-32768,   578,-32768,   241,   241,   241,
   -73,   586,   169,-32768,   388,-32768,-32768,-32768,-32768,-32768,
-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,   241,   241,
   241,   241,   241,   241,   241,   241,-32768,-32768,   513,   241,
-32768,   241,   241,   241,   241,   241,   241,   241,   241,-32768,
   241,   241,   241,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
-32768,-32768,   215,   581,   581,   268,   268,   581,   581,   232,
   275,   581,   283,   250,   156,   593,   599,   616,    98,    98,
-32768,-32768,-32768,-32768,-32768,   593,   599,   616,    98,    98,
-32768,-32768,-32768,-32768,   -73,-32768,-32768,-32768,-32768,-32768,
-32768,-32768,-32768,-32768,   -61,   290,   290,-32768,-32768,-32768,
-32768,-32768,-32768,-32768,   241,   241,   241,   241,   241,   241,
   241,-32768,-32768,     4,-32768,     5,   241,   -73,   -73,     9,
    92,    32,   309,    10,   -73,   -73,-32768,-32768,-32768,-32768,
-32768,    54,-32768,   -57,-32768,-32768,-32768,   -20,-32768,-32768,
   -73,   -73,-32768,    39,    -9,-32768,-32768,    40,    11,-32768,
-32768,-32768,-32768,    36,   586,-32768,   145,   151,   -73,   -73,
-32768,-32768,    78,   290,    79,   -73,   -73,-32768,   -73,-32768,
-32768,   -73,    16,   365,   106,   108,   -73,   -73,-32768,-32768,
   686,-32768,   -73,-32768,    52,   -73,-32768,    17,-32768,   586,
   178,   128,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
    34,-32768,-32768,-32768,-32768,   314,-32768,-32768,-32768,-32768,
-32768,-32768,-32768,   647,-32768,   -73,    95,-32768,    18,-32768,
-32768,   686,-32768,   150,   378,-32768,   112,-32768,-32768,-32768,
-32768,   123,-32768,   -73,     6,    29,-32768,-32768,   241,   129,
   281,-32768,   241,   241,   241,   241,   281,-32768,   452,-32768,
-32768,   135,   200,   213,   143,-32768,   -73,   479,-32768,-32768,
-32768,   182,    91,   -73,-32768,-32768,-32768,   516,-32768,-32768,
-32768,-32768,   130,-32768,-32768,   147,-32768,-32768,-32768,-32768,
-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
-32768,-32768,-32768,   158,-32768,-32768,-32768,   170,-32768,    73,
-32768,   241,   154,-32768,   160,-32768,-32768,   553,   172,   168,
   161,   241,   147,   147,   147,   147,   147,   147,   147,   147,
   147,   147,   147,   147,   147,   147,   147,   147,   147,   173,
   147,   147,   147,   174,   186,-32768,   241,   187,-32768,   196,
   183,   -73,-32768,-32768,-32768,-32768,   201,-32768,   241,-32768,
-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
-32768,-32768,-32768,-32768,-32768,   241,-32768,-32768,-32768,-32768,
-32768,   -73,-32768,-32768,    73,-32768,   -73,   293,   202,   -73,
   203,   -73,-32768,-32768,   202,-32768,   -73,   -73,   241,    22,
   -73,   182,   -73,   -73,   205,-32768,-32768,   -73,   -73,   154,
   -73,   -73,   241,   297,    26,   -73,   -73,    27,   208,-32768,
-32768,-32768,   -73,   -73,   -73,-32768,-32768,   -73,   241,   182,
   251,   -73,   -73,   251,   -73,   182,   251,   -73,   230,   154,
-32768,   251,   251,   -73,-32768,   251,   154,-32768,   251,   241,
-32768,-32768,   251,-32768,-32768,   236,-32768,-32768,   182,   -11,
-32768,   332,-32768
};

static const short yypgoto[] = {-32768,
-32768,-32768,-32768,-32768,-32768,-32768,  -220,-32768,-32768,-32768,
-32768,-32768,-32768,   248,  -222,-32768,  -262,-32768,-32768,-32768,
-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,   289,
    30,   159,   -44,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
-32768,-32768,   117,-32768,   163,   140,-32768,  -171,-32768,-32768,
-32768,  -141,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
-32768,-32768,-32768,-32768,   -22,-32768,-32768,   486,   -24,    55,
   480,   316,  -304,  -315,  -261,     8,    -3,    -2,-32768,  -122,
-32768
};


#define	YYLAST		708


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

static const short yycheck[] = {     3,
   142,    24,   264,   126,   127,     8,     9,     4,     4,     4,
   231,   234,     4,     4,   330,   278,    41,    42,     3,     3,
     3,    95,    80,   146,     3,    28,    29,    30,     3,     3,
     0,   252,     4,   256,    96,     4,   299,    95,    31,     6,
     7,     8,     9,    10,    11,   217,    49,    50,    51,    52,
    53,    54,    55,    56,     3,   371,    48,     4,    50,    62,
    63,    64,    65,    66,    67,    68,    69,    71,    72,    73,
    80,   194,     5,    85,    95,    70,   248,    68,    69,    12,
    13,    14,    15,    95,    80,    82,    82,    49,    49,   405,
    80,   263,    89,    39,    40,     4,    93,    93,     4,    45,
    97,    97,    51,    52,    53,    54,    55,    56,    41,    42,
    95,    95,    95,    46,    47,     4,    95,   422,    80,    80,
    95,    95,   115,    95,    57,    58,     4,    60,    95,   301,
    95,   135,   136,   137,   138,   139,   140,   141,     4,    48,
   144,    50,    48,   147,    50,   450,    95,     3,    81,    82,
   153,   456,     3,     3,    82,   148,   149,    80,     3,    48,
    93,    50,   155,   156,    97,    16,    17,    18,    19,    97,
    48,     3,    50,    95,   479,     4,    71,    70,   171,   172,
     3,   443,    48,   445,    50,    95,   448,    90,    91,    92,
    41,   453,    43,    44,    45,    46,   189,   190,    43,    44,
    45,   204,     3,   196,   197,   328,   199,    80,    80,   202,
   203,    43,    44,    45,   207,   208,     4,     3,   480,    48,
   213,    50,    80,   216,    95,   218,    80,    72,    73,    74,
    75,    76,    77,    78,     3,    80,    81,    80,    85,    80,
    72,    73,    74,    75,    76,    77,    78,    80,   271,    80,
    81,    82,     3,     3,   277,    95,   249,    43,    44,    45,
    79,    79,    93,    82,    82,   269,    97,    95,    95,   273,
   274,   275,   276,   266,    43,    44,    45,     3,    97,    97,
    95,    95,    43,    16,   426,     3,    72,    73,    74,    75,
    76,    77,    78,    98,   287,    95,    95,    95,    59,    95,
     4,   294,    95,    72,    73,    74,    75,    76,    77,    78,
    61,    62,    63,    64,    65,    66,    67,    43,    44,    45,
    81,    82,    82,    84,    95,    43,    44,    45,   332,    89,
    95,     0,    93,    93,    87,   306,    97,    97,   342,    72,
    73,    74,    75,    76,    77,    78,    72,    73,    74,    75,
    76,    77,    78,   237,    72,    73,    74,    75,    76,    77,
    78,    81,    82,   367,    51,    52,    53,    54,    55,    56,
   415,    82,    80,    93,    82,   379,   214,    97,    -1,   372,
     3,    89,    93,   244,   377,    93,    97,    -1,    -1,    97,
    82,    83,   396,    16,    17,    18,    19,    89,    -1,    -1,
    85,    93,    -1,    88,    89,    97,    -1,    92,    95,   402,
    95,    -1,    -1,    -1,   407,   419,    -1,   410,    41,   412,
    43,    44,    45,    46,   417,   418,    -1,   420,   421,   433,
   423,   424,    -1,    -1,    -1,   428,   429,    -1,   431,   432,
    -1,    -1,    -1,   436,   437,   449,    82,    83,    -1,    -1,
   443,   444,   445,    89,     3,   448,    -1,    93,    -1,   452,
   453,    97,   455,    -1,    -1,   458,   470,    16,    17,    18,
    19,   464,    85,    86,    87,    88,    89,    90,    91,    92,
    -1,    -1,     4,    -1,    -1,    98,    -1,    -1,    10,    -1,
    -1,    -1,    41,    -1,    43,    44,    45,    46,    20,    21,
    22,    23,    24,    25,    26,    27,    28,    29,    30,    31,
    32,    33,    34,    35,    36,    37,    38,    39,    40,     4,
    42,    36,    -1,    -1,    -1,    10,    -1,    -1,    43,    44,
    -1,    46,    -1,    48,    -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,   435,    42,    -1,   438,    85,    86,    87,
    88,    89,    90,    91,    92,    -1,    -1,    -1,    -1,   451,
    98,    -1,   454,    -1,    -1,   457,    -1,    -1,    -1,    -1,
   462,   463,    -1,    -1,   466,    -1,    -1,   469,    -1,    -1,
    -1,   473,   344,   345,   346,   347,   348,   349,   350,   351,
   352,   353,   354,   355,   356,   357,   358,   359,    -1,   361,
   362,   363,    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,    87,    88,    89,    90,    91,
    92,     6,     7,     8,     9,    10,    11,    51,    52,    53,
    54,    55,    56,    88,    89,    90,    91,    92
};
/* -*-C-*-  Note some compilers choke on comments on `#line' lines.  */
#line 3 "/usr/share/bison/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/bison/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_icon_control (yyvsp[-4].id, yyvsp[-3].il, yyvsp[-2].il, yyvsp[-1].il, 0, 0, 0, yyvsp[0].rcdata_item,
				      dialog.ex);
          ;
    break;}
case 85:
#line 646 "rcparse.y"
{
	    yyval.dialog_control = define_icon_control (yyvsp[-6].id, yyvsp[-5].il, yyvsp[-4].il, yyvsp[-3].il, 0, 0, 0, yyvsp[0].rcdata_item,
				      dialog.ex);
          ;
    break;}
case 86:
#line 652 "rcparse.y"
{
	    yyval.dialog_control = define_icon_control (yyvsp[-8].id, yyvsp[-7].il, yyvsp[-6].il, yyvsp[-5].il, style, yyvsp[-1].il, 0, yyvsp[0].rcdata_item,
				      dialog.ex);
          ;
    break;}
case 87:
#line 658 "rcparse.y"
{
	    yyval.dialog_control = define_icon_control (yyvsp[-9].id, yyvsp[-8].il, yyvsp[-7].il, yyvsp[-6].il, style, yyvsp[-2].il, yyvsp[-1].il, yyvsp[0].rcdata_item,
				      dialog.ex);
          ;
    break;}
case 88:
#line 663 "rcparse.y"
{
	      default_style = ES_LEFT | WS_BORDER | WS_TABSTOP;
	      base_style = ES_LEFT | WS_BORDER | WS_TABSTOP;
	      class = CTL_EDIT;
	    ;
    break;}
case 89:
#line 669 "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 90:
#line 676 "rcparse.y"
{
	      default_style = LBS_NOTIFY | WS_BORDER;
	      base_style = LBS_NOTIFY | WS_BORDER;
	      class = CTL_LISTBOX;
	    ;
    break;}
case 91:
#line 682 "rcparse.y"
{
	    yyval.dialog_control = yyvsp[0].dialog_control;
	  ;
    break;}
case 92:
#line 686 "rcparse.y"
{
	      default_style = SS_LEFT | WS_GROUP;
	      base_style = SS_LEFT;
	      class = CTL_STATIC;
	    ;
    break;}
case 93:
#line 692 "rcparse.y"
{
	    yyval.dialog_control = yyvsp[0].dialog_control;
	  ;
    break;}
case 94:
#line 696 "rcparse.y"
{
	      default_style = BS_PUSHBOX | WS_TABSTOP;
	      base_style = BS_PUSHBOX;
	      class = CTL_BUTTON;
	    ;
    break;}
case 95:
#line 702 "rcparse.y"
{
	    yyval.dialog_control = yyvsp[0].dialog_control;
	  ;
    break;}
case 96:
#line 706 "rcparse.y"
{
	      default_style = BS_PUSHBUTTON | WS_TABSTOP;
	      base_style = BS_PUSHBUTTON | WS_TABSTOP;
	      class = CTL_BUTTON;
	    ;
    break;}
case 97:
#line 712 "rcparse.y"
{
	    yyval.dialog_control = yyvsp[0].dialog_control;
	  ;
    break;}
case 98:
#line 716 "rcparse.y"
{
	      default_style = BS_RADIOBUTTON | WS_TABSTOP;
	      base_style = BS_RADIOBUTTON;
	      class = CTL_BUTTON;
	    ;
    break;}
case 99:
#line 722 "rcparse.y"
{
	    yyval.dialog_control = yyvsp[0].dialog_control;
	  ;
    break;}
case 100:
#line 726 "rcparse.y"
{
	      default_style = SS_RIGHT | WS_GROUP;
	      base_style = SS_RIGHT;
	      class = CTL_STATIC;
	    ;
    break;}
case 101:
#line 732 "rcparse.y"
{
	    yyval.dialog_control = yyvsp[0].dialog_control;
	  ;
    break;}
case 102:
#line 736 "rcparse.y"
{
	      default_style = SBS_HORZ;
	      base_style = 0;
	      class = CTL_SCROLLBAR;
	    ;
    break;}
case 103:
#line 742 "rcparse.y"
{
	    yyval.dialog_control = yyvsp[0].dialog_control;
	  ;
    break;}
case 104:
#line 746 "rcparse.y"
{
	      default_style = BS_3STATE | WS_TABSTOP;
	      base_style = BS_3STATE;
	      class = CTL_BUTTON;
	    ;
    break;}
case 105:
#line 752 "rcparse.y"
{
	    yyval.dialog_control = yyvsp[0].dialog_control;
	  ;
    break;}
case 106:
#line 757 "rcparse.y"
{ style = WS_CHILD | WS_VISIBLE; ;
    break;}
case 107:
#line 759 "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 108:
#line 775 "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 109:
#line 787 "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 110:
#line 798 "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 111:
#line 809 "rcparse.y"
{
	    yyval.s = NULL;
	  ;
    break;}
case 112:
#line 813 "rcparse.y"
{
	    yyval.s = yyvsp[0].s;
	  ;
    break;}
case 113:
#line 817 "rcparse.y"
{
	    yyval.s = yyvsp[-1].s;
	  ;
    break;}
case 114:
#line 824 "rcparse.y"
{
	    yyval.rcdata_item = NULL;
	  ;
    break;}
case 115:
#line 828 "rcparse.y"
{
	    yyval.rcdata_item = yyvsp[-1].rcdata.first;
	  ;
    break;}
case 116:
#line 837 "rcparse.y"
{ style = WS_CHILD | WS_VISIBLE; ;
    break;}
case 118:
#line 843 "rcparse.y"
{ style = SS_ICON | WS_CHILD | WS_VISIBLE; ;
    break;}
case 120:
#line 849 "rcparse.y"
{ style = base_style | WS_CHILD | WS_VISIBLE; ;
    break;}
case 122:
#line 857 "rcparse.y"
{
	    define_font (yyvsp[-3].id, &yyvsp[-1].res_info, yyvsp[0].s);
	  ;
    break;}
case 123:
#line 866 "rcparse.y"
{
	    define_icon (yyvsp[-3].id, &yyvsp[-1].res_info, yyvsp[0].s);
	  ;
    break;}
case 124:
#line 876 "rcparse.y"
{
	    language = yyvsp[-1].il | (yyvsp[0].il << 8);
	  ;
    break;}
case 125:
#line 885 "rcparse.y"
{
	    define_menu (yyvsp[-5].id, &yyvsp[-3].res_info, yyvsp[-1].menuitem);
	  ;
    break;}
case 126:
#line 892 "rcparse.y"
{
	    yyval.menuitem = NULL;
	  ;
    break;}
case 127:
#line 896 "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 128:
#line 913 "rcparse.y"
{
	    yyval.menuitem = define_menuitem (yyvsp[-2].s, yyvsp[-1].il, yyvsp[0].is, 0, 0, NULL);
	  ;
    break;}
case 129:
#line 917 "rcparse.y"
{
	    yyval.menuitem = define_menuitem (NULL, 0, 0, 0, 0, NULL);
	  ;
    break;}
case 130:
#line 921 "rcparse.y"
{
	    yyval.menuitem = define_menuitem (yyvsp[-4].s, 0, yyvsp[-3].is, 0, 0, yyvsp[-1].menuitem);
	  ;
    break;}
case 131:
#line 928 "rcparse.y"
{
	    yyval.is = 0;
	  ;
    break;}
case 132:
#line 932 "rcparse.y"
{
	    yyval.is = yyvsp[-2].is | yyvsp[0].is;
	  ;
    break;}
case 133:
#line 936 "rcparse.y"
{
	    yyval.is = yyvsp[-1].is | yyvsp[0].is;
	  ;
    break;}
case 134:
#line 943 "rcparse.y"
{
	    yyval.is = MENUITEM_CHECKED;
	  ;
    break;}
case 135:
#line 947 "rcparse.y"
{
	    yyval.is = MENUITEM_GRAYED;
	  ;
    break;}
case 136:
#line 951 "rcparse.y"
{
	    yyval.is = MENUITEM_HELP;
	  ;
    break;}
case 137:
#line 955 "rcparse.y"
{
	    yyval.is = MENUITEM_INACTIVE;
	  ;
    break;}
case 138:
#line 959 "rcparse.y"
{
	    yyval.is = MENUITEM_MENUBARBREAK;
	  ;
    break;}
case 139:
#line 963 "rcparse.y"
{
	    yyval.is = MENUITEM_MENUBREAK;
	  ;
    break;}
case 140:
#line 972 "rcparse.y"
{
	    define_menu (yyvsp[-5].id, &yyvsp[-3].res_info, yyvsp[-1].menuitem);
	  ;
    break;}
case 141:
#line 979 "rcparse.y"
{
	    yyval.menuitem = NULL;
	  ;
    break;}
case 142:
#line 983 "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 143:
#line 1000 "rcparse.y"
{
	    yyval.menuitem = define_menuitem (yyvsp[0].s, 0, 0, 0, 0, NULL);
	  ;
    break;}
case 144:
#line 1004 "rcparse.y"
{
	    yyval.menuitem = define_menuitem (yyvsp[-1].s, yyvsp[0].il, 0, 0, 0, NULL);
	  ;
    break;}
case 145:
#line 1008 "rcparse.y"
{
	    yyval.menuitem = define_menuitem (yyvsp[-3].s, yyvsp[-2].il, yyvsp[-1].il, yyvsp[0].il, 0, NULL);
	  ;
    break;}
case 146:
#line 1012 "rcparse.y"
{
 	    yyval.menuitem = define_menuitem (NULL, 0, 0, 0, 0, NULL);
 	  ;
    break;}
case 147:
#line 1016 "rcparse.y"
{
	    yyval.menuitem = define_menuitem (yyvsp[-3].s, 0, 0, 0, 0, yyvsp[-1].menuitem);
	  ;
    break;}
case 148:
#line 1020 "rcparse.y"
{
	    yyval.menuitem = define_menuitem (yyvsp[-4].s, yyvsp[-3].il, 0, 0, 0, yyvsp[-1].menuitem);
	  ;
    break;}
case 149:
#line 1024 "rcparse.y"
{
	    yyval.menuitem = define_menuitem (yyvsp[-5].s, yyvsp[-4].il, yyvsp[-3].il, 0, 0, yyvsp[-1].menuitem);
	  ;
    break;}
case 150:
#line 1029 "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 151:
#line 1038 "rcparse.y"
{
	    define_messagetable (yyvsp[-3].id, &yyvsp[-1].res_info, yyvsp[0].s);
	  ;
    break;}
case 152:
#line 1047 "rcparse.y"
{
	    define_rcdata (yyvsp[-5].id, &yyvsp[-3].res_info, yyvsp[-1].rcdata.first);
	  ;
    break;}
case 153:
#line 1056 "rcparse.y"
{
	    rcparse_rcdata ();
	  ;
    break;}
case 154:
#line 1060 "rcparse.y"
{
	    rcparse_normal ();
	    yyval.rcdata = yyvsp[0].rcdata;
	  ;
    break;}
case 155:
#line 1068 "rcparse.y"
{
	    yyval.rcdata.first = NULL;
	    yyval.rcdata.last = NULL;
	  ;
    break;}
case 156:
#line 1073 "rcparse.y"
{
	    yyval.rcdata = yyvsp[0].rcdata;
	  ;
    break;}
case 157:
#line 1080 "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 158:
#line 1088 "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 159:
#line 1096 "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 160:
#line 1105 "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 161:
#line 1119 "rcparse.y"
{ sub_res_info = yyvsp[-1].res_info; ;
    break;}
case 164:
#line 1126 "rcparse.y"
{
	    define_stringtable (&sub_res_info, yyvsp[-1].il, yyvsp[0].s);
	  ;
    break;}
case 165:
#line 1130 "rcparse.y"
{
	    define_stringtable (&sub_res_info, yyvsp[-2].il, yyvsp[0].s);
	  ;
    break;}
case 166:
#line 1140 "rcparse.y"
{
	    define_user_data (yyvsp[-5].id, yyvsp[-4].id, &yyvsp[-3].res_info, yyvsp[-1].rcdata.first);
	  ;
    break;}
case 167:
#line 1144 "rcparse.y"
{
	    define_user_file (yyvsp[-3].id, yyvsp[-2].id, &yyvsp[-1].res_info, yyvsp[0].s);
	  ;
    break;}
case 168:
#line 1153 "rcparse.y"
{
	    define_versioninfo (yyvsp[-5].id, language, yyvsp[-3].fixver, yyvsp[-1].verinfo);
	  ;
    break;}
case 169:
#line 1160 "rcparse.y"
{
	    yyval.fixver = ((struct fixed_versioninfo *)
		  res_alloc (sizeof (struct fixed_versioninfo)));
	    memset (yyval.fixver, 0, sizeof (struct fixed_versioninfo));
	  ;
    break;}
case 170:
#line 1166 "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 171:
#line 1172 "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 172:
#line 1178 "rcparse.y"
{
	    yyvsp[-2].fixver->file_flags_mask = yyvsp[0].il;
	    yyval.fixver = yyvsp[-2].fixver;
	  ;
    break;}
case 173:
#line 1183 "rcparse.y"
{
	    yyvsp[-2].fixver->file_flags = yyvsp[0].il;
	    yyval.fixver = yyvsp[-2].fixver;
	  ;
    break;}
case 174:
#line 1188 "rcparse.y"
{
	    yyvsp[-2].fixver->file_os = yyvsp[0].il;
	    yyval.fixver = yyvsp[-2].fixver;
	  ;
    break;}
case 175:
#line 1193 "rcparse.y"
{
	    yyvsp[-2].fixver->file_type = yyvsp[0].il;
	    yyval.fixver = yyvsp[-2].fixver;
	  ;
    break;}
case 176:
#line 1198 "rcparse.y"
{
	    yyvsp[-2].fixver->file_subtype = yyvsp[0].il;
	    yyval.fixver = yyvsp[-2].fixver;
	  ;
    break;}
case 177:
#line 1212 "rcparse.y"
{
	    yyval.verinfo = NULL;
	  ;
    break;}
case 178:
#line 1216 "rcparse.y"
{
	    yyval.verinfo = append_ver_stringfileinfo (yyvsp[-7].verinfo, yyvsp[-4].s, yyvsp[-2].verstring);
	  ;
    break;}
case 179:
#line 1220 "rcparse.y"
{
	    yyval.verinfo = append_ver_varfileinfo (yyvsp[-6].verinfo, yyvsp[-2].s, yyvsp[-1].vervar);
	  ;
    break;}
case 180:
#line 1227 "rcparse.y"
{
	    yyval.verstring = NULL;
	  ;
    break;}
case 181:
#line 1231 "rcparse.y"
{
	    yyval.verstring = append_verval (yyvsp[-4].verstring, yyvsp[-2].s, yyvsp[0].s);
	  ;
    break;}
case 182:
#line 1238 "rcparse.y"
{
	    yyval.vervar = NULL;
	  ;
    break;}
case 183:
#line 1242 "rcparse.y"
{
	    yyval.vervar = append_vertrans (yyvsp[-2].vervar, yyvsp[-1].il, yyvsp[0].il);
	  ;
    break;}
case 184:
#line 1251 "rcparse.y"
{
	    yyval.id.named = 0;
	    yyval.id.u.id = yyvsp[0].il;
	  ;
    break;}
case 185:
#line 1256 "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 186:
#line 1273 "rcparse.y"
{
	    yyval.s = yyvsp[0].s;
	  ;
    break;}
case 187:
#line 1277 "rcparse.y"
{
	    yyval.s = yyvsp[-1].s;
	  ;
    break;}
case 188:
#line 1281 "rcparse.y"
{
	    yyval.s = yyvsp[-1].s;
	  ;
    break;}
case 189:
#line 1289 "rcparse.y"
{
	    yyval.id.named = 0;
	    yyval.id.u.id = yyvsp[-1].il;
	  ;
    break;}
case 190:
#line 1294 "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 191:
#line 1312 "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 192:
#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 193:
#line 1325 "rcparse.y"
{
	    yyval.res_info = yyvsp[-2].res_info;
	    yyval.res_info.characteristics = yyvsp[0].il;
	  ;
    break;}
case 194:
#line 1330 "rcparse.y"
{
	    yyval.res_info = yyvsp[-3].res_info;
	    yyval.res_info.language = yyvsp[-1].il | (yyvsp[0].il << 8);
	  ;
    break;}
case 195:
#line 1335 "rcparse.y"
{
	    yyval.res_info = yyvsp[-2].res_info;
	    yyval.res_info.version = yyvsp[0].il;
	  ;
    break;}
case 196:
#line 1345 "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 197:
#line 1351 "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 198:
#line 1362 "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 199:
#line 1368 "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 200:
#line 1380 "rcparse.y"
{
	    yyval.memflags.on = MEMFLAG_MOVEABLE;
	    yyval.memflags.off = 0;
	  ;
    break;}
case 201:
#line 1385 "rcparse.y"
{
	    yyval.memflags.on = 0;
	    yyval.memflags.off = MEMFLAG_MOVEABLE;
	  ;
    break;}
case 202:
#line 1390 "rcparse.y"
{
	    yyval.memflags.on = MEMFLAG_PURE;
	    yyval.memflags.off = 0;
	  ;
    break;}
case 203:
#line 1395 "rcparse.y"
{
	    yyval.memflags.on = 0;
	    yyval.memflags.off = MEMFLAG_PURE;
	  ;
    break;}
case 204:
#line 1400 "rcparse.y"
{
	    yyval.memflags.on = MEMFLAG_PRELOAD;
	    yyval.memflags.off = 0;
	  ;
    break;}
case 205:
#line 1405 "rcparse.y"
{
	    yyval.memflags.on = 0;
	    yyval.memflags.off = MEMFLAG_PRELOAD;
	  ;
    break;}
case 206:
#line 1410 "rcparse.y"
{
	    yyval.memflags.on = MEMFLAG_DISCARDABLE;
	    yyval.memflags.off = 0;
	  ;
    break;}
case 207:
#line 1420 "rcparse.y"
{
	    yyval.s = yyvsp[0].s;
	  ;
    break;}
case 208:
#line 1424 "rcparse.y"
{
	    yyval.s = yyvsp[0].s;
	  ;
    break;}
case 209:
#line 1441 "rcparse.y"
{
	    style |= yyvsp[0].il;
	  ;
    break;}
case 210:
#line 1445 "rcparse.y"
{
	    style &=~ yyvsp[0].il;
	  ;
    break;}
case 211:
#line 1449 "rcparse.y"
{
	    style |= yyvsp[0].il;
	  ;
    break;}
case 212:
#line 1453 "rcparse.y"
{
	    style &=~ yyvsp[0].il;
	  ;
    break;}
case 213:
#line 1460 "rcparse.y"
{
	    yyval.il = yyvsp[0].i.val;
	  ;
    break;}
case 214:
#line 1464 "rcparse.y"
{
	    yyval.il = yyvsp[-1].il;
	  ;
    break;}
case 215:
#line 1473 "rcparse.y"
{
	    yyval.il = 0;
	  ;
    break;}
case 216:
#line 1477 "rcparse.y"
{
	    yyval.il = yyvsp[0].il;
	  ;
    break;}
case 217:
#line 1486 "rcparse.y"
{
	    yyval.il = yyvsp[0].il;
	  ;
    break;}
case 218:
#line 1495 "rcparse.y"
{
	    yyval.il = yyvsp[0].i.val;
	  ;
    break;}
case 219:
#line 1504 "rcparse.y"
{
	    yyval.i = yyvsp[0].i;
	  ;
    break;}
case 220:
#line 1508 "rcparse.y"
{
	    yyval.i = yyvsp[-1].i;
	  ;
    break;}
case 221:
#line 1512 "rcparse.y"
{
	    yyval.i.val = ~ yyvsp[0].i.val;
	    yyval.i.dword = yyvsp[0].i.dword;
	  ;
    break;}
case 222:
#line 1517 "rcparse.y"
{
	    yyval.i.val = - yyvsp[0].i.val;
	    yyval.i.dword = yyvsp[0].i.dword;
	  ;
    break;}
case 223:
#line 1522 "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 1527 "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 225:
#line 1532 "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 226:
#line 1537 "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 227:
#line 1542 "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 228:
#line 1547 "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 229:
#line 1552 "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 1557 "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 1568 "rcparse.y"
{
	    yyval.il = yyvsp[0].il;
	  ;
    break;}
case 232:
#line 1577 "rcparse.y"
{
	    yyval.il = yyvsp[0].i.val;
	  ;
    break;}
case 233:
#line 1588 "rcparse.y"
{
	    yyval.i = yyvsp[0].i;
	  ;
    break;}
case 234:
#line 1592 "rcparse.y"
{
	    yyval.i = yyvsp[-1].i;
	  ;
    break;}
case 235:
#line 1596 "rcparse.y"
{
	    yyval.i.val = ~ yyvsp[0].i.val;
	    yyval.i.dword = yyvsp[0].i.dword;
	  ;
    break;}
case 236:
#line 1601 "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 237:
#line 1606 "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 238:
#line 1611 "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 239:
#line 1616 "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 240:
#line 1621 "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 241:
#line 1626 "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 242:
#line 1631 "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 243:
#line 1636 "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/bison/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 1642 "rcparse.y"


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

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