
# line 2 "rcyacc.y"
/*************************************************************************

	rcyacc.y	1.31
	yacc resource file parser
  
    Copyright 1997 Willows Software, Inc. 

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

This library 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
Library General Public License for more details.

You should have received a copy of the GNU Library General Public
License along with this library; see the file COPYING.LIB.  If
not, write to the Free Software Foundation, Inc., 675 Mass Ave,
Cambridge, MA 02139, USA.

The maintainer of the Willows TWIN Libraries may be reached (Email) 
at the address twin@willows.com	

**************************************************************************/

#include "windows.h"
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include "rc.h"
#include "define.h"
#include "buffer.h"
#include "resfunc.h"

void ignore_until_semicolon();
void ignore_until_brace();
void typedef_mode();
void initial_mode();
void ignore_rest_of_file();

int hex2dec(char *);

#define YYPRINT(file,type,val) if ((type == LONGINT) || (type == SHORTINT)) fprintf(file, " %d", val.i); else \
                               if (type == STRING) fprintf(file, " %s", val.str);

/* Some systems don't like alloca, so we have to make them work right */
#if defined(_MAC) || defined(macintosh)
#define alloca malloc
#endif

#ifdef TWIN_HASALLOCA
#include <alloca.h>
#endif

# line 61 "rcyacc.y"
typedef union
#ifdef __cplusplus
	YYSTYPE
#endif

{
  strp str;
  buffp b;
  resp resource;
  struct maskvals mask;
  struct dimvals dim;
  struct xyvals xy;
  struct binflagvals binflags;
  struct userresbuffer *urb;
  unsigned long i;
  char c;
} YYSTYPE;
# define STRING 257
# define QSTRING 258
# define ASTRING 259
# define HEXCHARS 260
# define LONGINT 261
# define SHORTINT 262
# define FLAG 263
# define TABLENAME 264
# define ACCELERATORS 265
# define BITMAP 266
# define CURSOR 267
# define DIALOG 268
# define DIALOGEX 269
# define ICON 270
# define MENU 271
# define STRINGTABLE 272
# define VERSIONINFO 273
# define RCDATA 274
# define DLGINIT 275
# define TOOLBAR 276
# define BUTTON 277
# define FILEVERSION 278
# define PRODUCTVERSION 279
# define FILEFLAGSMASK 280
# define FILEFLAGS 281
# define FILEOS 282
# define FILETYPE 283
# define FILESUBTYPE 284
# define BLOCK 285
# define VALUE 286
# define POPUP 287
# define MENUITEM 288
# define SEPARATOR 289
# define CHECKED 290
# define GRAYED 291
# define HELP 292
# define INACTIVE 293
# define STYLE 294
# define CAPTION 295
# define CLASS 296
# define FONT 297
# define LANGUAGE 298
# define LTEXT 299
# define RTEXT 300
# define CTEXT 301
# define EDITTEXT 302
# define LISTBOX 303
# define COMBOBOX 304
# define GROUPBOX 305
# define PUSHBUTTON 306
# define DEFPUSHBUTTON 307
# define CHECKBOX 308
# define AUTOCHECKBOX 309
# define STATE3 310
# define AUTO3STATE 311
# define RADIOBUTTON 312
# define AUTORADIOBUTTON 313
# define SCROLLBAR 314
# define CONTROL 315
# define VIRTKEY 316
# define ASCII 317
# define SHIFT 318
# define ALT 319
# define NOINVERT 320
# define ALIGN 321
# define ENDIAN 322
# define BEGIn 323
# define END 324
# define NOT 325
# define TYPEDEF 326
# define STRUCT 327
# define CTYPE 328
# define NOTAVALIDTOKEN 329

#ifdef __STDC__
#include <stdlib.h>
#include <string.h>
#else
#include <malloc.h>
#include <memory.h>
#endif

#include <values.h>

#ifdef __cplusplus

#ifndef yyerror
	void yyerror(const char *);
#endif

#ifndef yylex
#ifdef __EXTERN_C__
	extern "C" { int yylex(void); }
#else
	int yylex(void);
#endif
#endif
	int yyparse(void);

#endif
#define yyclearin yychar = -1
#define yyerrok yyerrflag = 0
extern int yychar;
extern int yyerrflag;
YYSTYPE yylval;
YYSTYPE yyval;
typedef int yytabelem;
#ifndef YYMAXDEPTH
#define YYMAXDEPTH 150
#endif
#if YYMAXDEPTH > 0
int yy_yys[YYMAXDEPTH], *yys = yy_yys;
YYSTYPE yy_yyv[YYMAXDEPTH], *yyv = yy_yyv;
#else	/* user does initial allocation */
int *yys;
YYSTYPE *yyv;
#endif
static int yymaxdepth = YYMAXDEPTH;
# define YYERRCODE 256

# line 686 "rcyacc.y"


int yyerror(char *str)
{
  CERROR(("%s", str));
  return 0;
}

void set_position(int first_line, int last_line, int first_column, int last_column)
{
#ifdef NEED_BISON_POSITION_INFO
  yylloc.first_line = first_line;
  yylloc.last_line = last_line;
  yylloc.first_column = first_column;
  yylloc.last_column = last_column;
#endif
}

void rcyacc_debug_level(int level)
{
    extern int yydebug;
    
#ifdef YYDEBUG
    yydebug = level;
#endif
}
yytabelem yyexca[] ={
-1, 1,
	0, -1,
	-2, 0,
-1, 107,
	324, 165,
	39, 165,
	-2, 0,
-1, 127,
	258, 101,
	262, 101,
	324, 101,
	44, 101,
	-2, 0,
-1, 140,
	261, 115,
	262, 115,
	324, 115,
	40, 115,
	-2, 0,
-1, 169,
	287, 27,
	288, 27,
	324, 27,
	-2, 0,
-1, 170,
	270, 70,
	299, 70,
	300, 70,
	301, 70,
	302, 70,
	303, 70,
	304, 70,
	305, 70,
	306, 70,
	307, 70,
	308, 70,
	309, 70,
	310, 70,
	311, 70,
	312, 70,
	313, 70,
	314, 70,
	315, 70,
	324, 70,
	-2, 0,
-1, 182,
	277, 109,
	289, 109,
	324, 109,
	-2, 0,
-1, 185,
	258, 42,
	261, 42,
	262, 42,
	324, 42,
	40, 42,
	-2, 0,
-1, 204,
	260, 169,
	39, 169,
	-2, 0,
-1, 424,
	258, 44,
	261, 44,
	262, 44,
	324, 44,
	40, 44,
	-2, 236,
-1, 425,
	258, 45,
	261, 45,
	262, 45,
	324, 45,
	40, 45,
	-2, 236,
-1, 559,
	261, 236,
	262, 236,
	325, 236,
	40, 236,
	-2, 238,
	};
# define YYNPROD 240
# define YYLAST 1043
yytabelem yyact[]={

   457,    43,   361,    22,   365,   424,    22,   168,   397,   399,
   210,   120,    19,    20,    18,    21,    23,    24,    44,     6,
   500,    88,    44,   204,   307,    85,    87,     5,     7,   304,
    83,    81,   264,    82,   227,    84,    88,   299,   279,   258,
    85,    87,   251,    80,   247,    83,    81,   553,    82,   228,
    84,   205,    92,    14,   459,   310,   182,    69,   397,   399,
   497,   261,   262,   263,   265,   266,   267,   268,   269,   270,
   273,   274,   275,   276,   271,   272,   277,   278,   397,   399,
     4,    16,    15,    17,   174,    35,   259,   397,   399,   158,
    73,    74,    75,    76,    77,    78,    79,   514,    69,   194,
   236,   297,   256,   257,   496,    14,    14,   171,   172,   173,
   175,    14,    86,   298,   109,   110,    14,   461,    14,    69,
   204,   356,   177,   178,   179,   231,   395,    86,   187,   188,
   186,   185,   109,   110,   200,    71,   170,    69,   192,   254,
   517,   169,   253,   140,   195,   196,   131,    69,   295,    23,
    24,   197,   483,   481,   482,   484,   485,   486,   127,    19,
    20,    37,    21,    19,    20,    37,    21,    44,   427,   426,
   214,   248,   204,   212,   233,   346,    22,   213,   230,   107,
    44,   209,   207,   522,    19,    20,    37,    21,    23,    24,
    44,   318,    33,    25,    26,    29,    30,    27,    28,   191,
    36,    34,    31,    32,    19,    20,    37,    21,    23,    24,
   313,   181,   167,   135,    44,   212,   212,   542,   289,   293,
   294,    87,   352,   351,   291,   292,   201,   121,   198,    88,
   214,    88,   288,   289,   287,   306,   302,   213,   165,    23,
    24,    23,    24,    23,    24,    44,   106,   308,   226,   316,
   311,   312,   225,   183,   240,   217,   117,    48,   350,   371,
    95,   164,   320,   321,   322,   323,   324,   325,   326,   327,
   328,   329,   330,   331,   332,   333,   334,   335,   336,   337,
   139,    47,   212,   212,   212,   212,   212,   212,   212,   212,
   212,   338,   339,   340,   341,   342,   343,   345,   347,   349,
   522,   305,   300,   357,   358,   499,   244,    86,   202,   522,
    40,   515,   136,   136,   224,   169,   458,   309,   124,   163,
   366,   214,    46,    44,   160,    22,   400,   214,   213,    45,
   162,    91,    11,    10,   213,     9,    44,   235,    19,    20,
    37,    21,   239,   238,   490,   398,   212,    67,   212,   348,
   212,   396,   212,   212,   212,   387,   104,   388,   193,   389,
    72,   390,   391,   392,   401,   402,   404,   142,   406,   407,
   408,   409,   410,   403,    41,   411,   412,   413,   414,   415,
   416,   417,   418,   419,   420,   421,   422,   423,    23,    24,
    19,    20,    37,    21,   239,   238,   123,   245,    23,    24,
   425,    23,    24,   428,   370,   220,   123,   359,   190,   214,
   437,    23,    24,    69,   112,   114,   213,   433,   434,   436,
   435,   203,   442,   443,   444,   214,   560,    68,   460,     3,
   373,   315,   213,     2,   454,    23,    24,     1,   462,   463,
   464,   465,   466,   467,   468,   469,   470,   471,   472,   473,
   474,   475,   476,   477,   478,   479,   480,   296,    23,    24,
   229,   487,    19,    20,    37,    21,    23,    24,    44,   498,
   498,   498,    12,   130,   129,   492,   493,   494,   495,    39,
   128,   498,   503,   504,   505,   506,   507,   508,   509,   180,
   516,   126,   125,   518,   519,   520,   521,   234,    44,    90,
   344,   523,   498,   138,   525,   526,   527,   528,   529,   530,
   531,   532,   533,   137,   534,   301,   232,   184,   535,   260,
   498,   498,   498,   498,   498,   122,   208,   498,   498,   498,
   498,   498,   498,   498,   498,   498,   498,   119,   118,   255,
    42,   491,   206,   134,    23,    24,    93,    94,   132,    23,
    24,   554,   555,   556,    70,    23,    24,    23,    24,   115,
   561,   524,   113,   498,   111,   103,   557,   558,   559,   456,
    89,   314,   252,   501,   502,    96,    97,    98,    99,   100,
   101,   102,   166,   541,   512,   374,   375,   141,   105,     8,
   108,   161,   431,   550,   551,   552,   385,    13,     0,   143,
   144,   145,   146,   147,   148,   149,   150,   151,   152,   153,
   154,   155,   156,   157,   116,     0,     0,   286,     0,   133,
     0,     0,   562,   537,   538,   539,   540,     0,     0,     0,
   543,   544,   545,   546,   547,   548,   549,    23,    24,   288,
   289,   287,     0,     0,     0,   215,   216,     0,   211,     0,
     0,     0,     0,    23,    24,     0,     0,     0,     0,   237,
   242,   243,   199,     0,     0,     0,   438,   439,   440,   441,
     0,     0,     0,   445,   446,   447,   448,   449,   450,   451,
   452,   453,   290,   455,   222,     0,   284,   286,     0,    23,
    24,   282,   280,     0,   281,     0,   283,     0,     0,     0,
     0,   218,     0,   285,   221,   223,     0,   176,     0,   288,
   289,   287,     0,   241,   219,     0,   246,     0,     0,    23,
    24,   249,   250,   290,     0,     0,   189,   284,   286,   317,
   319,   353,   282,   280,     0,   281,     0,   283,    85,    87,
     0,     0,     0,    83,    81,    88,    82,     0,    84,     0,
   288,   289,   287,     0,     0,     0,     0,     0,   303,   284,
   286,     0,     0,     0,   282,     0,   354,   355,     0,   283,
    85,    87,     0,   285,   159,    83,    81,     0,    82,   237,
    84,   360,   288,   289,   287,     0,    85,    87,     0,     0,
     0,    83,     0,   367,   368,   369,    84,     0,     0,     0,
   376,   377,   378,   379,   380,   381,   382,   383,   384,     0,
   386,    85,    87,     0,   285,     0,    83,    81,     0,    82,
     0,    84,    53,    55,     0,    86,     0,    51,    49,     0,
    50,     0,    52,     0,     0,     0,   362,   363,   364,     0,
     0,     0,     0,     0,     0,     0,   285,     0,     0,     0,
   372,   372,   372,     0,     0,     0,     0,    86,     0,     0,
     0,     0,   372,     0,     0,     0,     0,     0,     0,     0,
     0,     0,     0,    86,     0,     0,     0,     0,     0,     0,
     0,     0,     0,   393,   394,    38,     0,     0,     0,     0,
     0,     0,   405,     0,     0,     0,     0,     0,    86,     0,
     0,     0,     0,     0,     0,     0,     0,     0,     0,    54,
     0,    56,    57,    58,    59,    60,    61,    62,    63,    64,
    65,    66,     0,     0,     0,     0,     0,   429,   430,     0,
   432,     0,   372,   372,   372,   372,     0,     0,     0,   372,
   372,   372,   372,   372,   372,   372,   372,   372,     0,   372,
   510,   511,     0,   513,     0,     0,     0,     0,     0,     0,
     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     0,     0,     0,     0,     0,   488,   489,     0,   432,     0,
     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     0,     0,   536 };
yytabelem yypact[]={

-10000000,  -245,-10000000,-10000000,   -73,-10000000,   -94,-10000000,-10000000,-10000000,
-10000000,-10000000,-10000000,-10000000,   296,-10000000,-10000000,-10000000,   217,-10000000,
-10000000,-10000000,   785,-10000000,-10000000,-10000000,-10000000,-10000000,-10000000,-10000000,
-10000000,-10000000,-10000000,-10000000,-10000000,-10000000,-10000000,-10000000,  -206,-10000000,
-10000000,  -188,   701,-10000000,   296,  -271,  -271,  -271,-10000000,   296,
   296,   296,   296,   296,   296,   296,  -144,  -144,  -144,  -206,
   150,   150,  -165,  -116,  -206,  -126,  -126,-10000000,-10000000,-10000000,
  -180,-10000000,-10000000,   296,   296,   296,   296,   296,   296,   296,
   296,   296,   296,   296,   296,   296,   296,   296,   187,   733,
-10000000,  -271,-10000000,-10000000,-10000000,   179,   774,   774,   774,   774,
   774,   774,   774,-10000000,-10000000,-10000000,-10000000,   -44,-10000000,-10000000,
-10000000,-10000000,-10000000,-10000000,-10000000,-10000000,  -182,-10000000,-10000000,  -187,
-10000000,   187,   701,   187,-10000000,-10000000,-10000000,   -45,-10000000,-10000000,
  -267,   209,-10000000,  -192,-10000000,-10000000,-10000000,-10000000,  -193,-10000000,
   -57,-10000000,  -186,   701,   701,   774,   774,   774,   774,   774,
   701,   749,   749,   183,   183,   183,-10000000,-10000000,-10000000,-10000000,
   169,-10000000,  -271,  -125,   167,-10000000,   -16,  -273,-10000000,   -74,
   -75,   392,   -94,   -94,   -53,   458,-10000000,   140,   428,   296,
   -10,  -275,   -78,  -137,-10000000,   -82,    81,   205,   -94,-10000000,
   -18,  -280,-10000000,-10000000,   -87,   296,   296,-10000000,-10000000,  -282,
-10000000,-10000000,-10000000,-10000000,  -114,-10000000,  -185,  -285,  -238,  -286,
   649,-10000000,-10000000,   294,   294,-10000000,-10000000,-10000000,   701,   187,
-10000000,   774,-10000000,   774,-10000000,-10000000,-10000000,-10000000,-10000000,  -176,
  -287,-10000000,   -22,  -295,   -23,  -300,-10000000,-10000000,-10000000,-10000000,
-10000000,   774,-10000000,-10000000,-10000000,-10000000,   701,-10000000,    -6,   701,
   701,-10000000,   171,   210,-10000000,-10000000,   -94,   -98,-10000000,-10000000,
-10000000,   187,   187,   187,   187,   187,   187,   187,   187,   187,
   187,   187,   187,   187,   187,   187,   187,   187,   187,-10000000,
   294,   294,   294,   294,   294,   376,   137,   288,   197,   162,
   161,   690,   649,   -94,   -94,-10000000,-10000000,  -141,-10000000,-10000000,
-10000000,-10000000,   187,   701,-10000000,-10000000,   133,-10000000,   -94,-10000000,
   296,   296,   296,-10000000,-10000000,-10000000,-10000000,-10000000,-10000000,   187,
   -94,   -94,   -94,   -53,   174,   174,   174,   -94,   -94,   -94,
   -94,   -94,   -94,   -94,   -94,   -94,   174,   -94,   722,   722,
   579,   579,   579,   172,   294,   172,   294,   157,   294,   157,
   294,   294,   294,-10000000,-10000000,-10000000,-10000000,   296,   296,-10000000,
-10000000,  -198,     3,   701,   701,    -8,   296,   187,   187,   187,
   187,   187,   774,-10000000,   187,   187,   187,   187,   187,   187,
   187,   187,   187,   187,   187,   187,   187,   172,   172,   157,
   157,   157,   157,   774,   774,-10000000,-10000000,   -89,-10000000,   -90,
-10000000,   296,   296,-10000000,   127,   774,   174,   174,   174,   174,
   140,   140,   140,   174,   174,   174,   174,   174,   174,   174,
   174,   174,   140,   174,   187,   187,    -7,   187,  -207,   774,
   774,-10000000,   774,-10000000,-10000000,-10000000,-10000000,   187,   187,   187,
   187,   187,   187,   187,   187,   187,   187,   187,   187,   187,
   187,   187,   187,   187,   187,   187,-10000000,  -163,-10000000,   296,
   283,-10000000,   127,   140,   140,   140,   140,   -20,   -20,   -20,
   140,   140,   140,   140,   140,   140,   140,   -94,   -94,   -20,
   -94,-10000000,-10000000,-10000000,-10000000,-10000000,-10000000,  -227,   -12,   701,
  -118,-10000000,   187,   187,   187,   187,-10000000,    59,-10000000,  -112,
   -20,-10000000,-10000000,   187,   187,   187,   187,   187,   187,   187,
   187,   187,-10000000,   187,-10000000,-10000000,   296,-10000000,   -20,   -20,
   -20,   -20,   -20,-10000000,   176,   -20,   -20,   -20,   -20,   -20,
   -20,   -20,   -20,   -20,   -20,  -277,   774,-10000000,-10000000,-10000000,
-10000000,-10000000,-10000000,-10000000,-10000000,-10000000,-10000000,-10000000,-10000000,-10000000,
   185,   185,   185,-10000000,   140,   140,   140,-10000000,-10000000,   187,
-10000000,   -20,    59 };
yytabelem yypgo[]={

     0,   525,    10,     1,   597,   885,     4,   592,   472,   246,
   590,   356,   588,   582,   254,   572,   571,    11,   227,    60,
   104,     5,   569,   259,    80,   565,   564,   562,   559,   256,
   548,   543,   213,     7,   542,   539,   538,   537,   526,   519,
   517,   516,   515,   513,   503,   497,   100,   492,   491,   489,
   480,   474,   473,   460,   457,   437,   433,   429,   427,   310,
   587,   554,     0,   426,   408,   397,   374,   367,   360,   358,
     2,   351,   345,   344,   335,   333,   332,   331,   330,   499,
   329,   324,   322,   319,   281,   261,   260 };
yytabelem yyr1[]={

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

     0,     0,     4,     4,     9,     9,     9,     9,     9,     9,
     9,     9,     9,     7,     9,     9,     5,     6,     4,     2,
     2,     3,     1,     5,     5,     7,     7,     1,     5,     9,
     5,    13,     1,     7,     2,     3,     3,     3,     3,     5,
     7,     7,     1,     5,     9,     9,     1,     5,     5,     5,
     5,     5,     5,     5,     3,     9,     9,     3,     7,     7,
     7,     7,     7,    11,    11,     4,     7,     7,     7,     7,
     1,     5,     1,     3,     3,     5,     7,     7,    19,    19,
    19,    19,    15,    15,    15,    19,    19,    19,    19,    19,
    19,    19,    23,    23,    15,    25,     2,     3,     3,     7,
     7,     1,     5,     5,     5,     3,     9,     9,     7,     1,
     5,     5,     3,     8,     9,     0,     4,     7,     3,     3,
     3,     3,     3,     3,     9,     9,     3,     7,     3,     3,
     3,     3,     1,     7,     7,     7,     4,     8,     0,     4,
    16,    16,     4,     4,     4,     4,     4,     0,     4,    10,
    14,     0,     4,    12,     8,    10,    14,     2,     2,     4,
     2,     2,     3,     7,     7,     1,     5,     7,     7,     1,
     5,     3,     0,     4,    10,     2,     7,     7,     7,     7,
     7,     7,     7,     7,     2,     7,     7,     7,     7,     7,
     7,     7,     2,     7,     7,     7,     7,     7,     7,     7,
     9,     9,     7,     5,     7,     7,     9,     9,     9,     9,
     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     2,     1,     8,     0,     4,     1,     1,    11,     1,     1,
    11,     1,     1,    11,     1,     9,     0,     4,     0,     4 };
yytabelem yychk[]={

-10000000,   -55,   -56,   -57,   -24,   272,   264,   273,   -60,   -74,
   -75,   -76,    -8,    -4,   298,   327,   326,   328,   259,   257,
   258,   260,    -3,   261,   262,   266,   267,   270,   271,   268,
   269,   275,   276,   265,   274,   -24,   273,   259,    -5,    -8,
   -59,   -66,    -1,    -3,    40,   -80,   -82,   -84,    40,    43,
    45,    42,    47,    37,   124,    38,    -5,    -5,    -5,    -5,
    -5,    -5,    -5,    -5,    -5,    -5,    -5,   -59,   -58,   263,
   -61,   323,   -68,   278,   279,   280,   281,   282,   283,   284,
   -62,    43,    45,    42,    47,    37,   124,    38,    44,    -1,
   -79,   -77,   323,   -79,   -79,   -86,    -1,    -1,    -1,    -1,
    -1,    -1,    -1,   -25,   -11,   -12,    -9,   323,   -10,   258,
   259,   -26,   -11,   -27,   -11,   -28,   -61,   -29,   -36,   -37,
   -17,   -18,    -1,   256,   -29,   -47,   -48,   323,   -50,   -51,
   -52,   262,   -30,   -61,   -31,   -32,    -9,   -43,   -44,   -32,
   323,   -60,   -67,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   -62,    41,
   -81,   -79,   -78,   -83,   -85,    59,   -13,   256,   -33,   323,
   323,   294,   295,   296,   271,   297,   -60,   -62,   -62,   -62,
   -49,   256,   323,    44,   -40,   323,   323,   321,   322,   -60,
   -64,   256,   324,   -69,   285,   -62,   -62,   -62,    59,   -79,
   259,    59,   324,   -14,    39,   324,   -34,   256,   -38,   256,
    -2,   256,    -3,    40,    33,    -8,    -8,   -24,    -1,   256,
   -18,    -1,   256,    -1,   324,   262,   258,    44,   324,   -53,
   256,   262,   -41,   256,   -45,   256,   -46,    -8,   262,   261,
   -14,    -1,    -8,    -8,   324,   -65,    -1,   324,   258,    -1,
    -1,   324,   -15,   256,   324,   -35,   287,   288,   324,   324,
   -39,   299,   300,   301,   270,   302,   303,   304,   305,   306,
   307,   312,   313,   308,   309,   310,   311,   314,   315,   324,
    43,    45,    42,    47,    37,   124,    38,    62,    60,    61,
    33,    -2,    -2,   -62,   -62,   324,   -54,   277,   289,   324,
   324,   -42,   258,    -1,   324,   324,   -62,   324,   -62,   323,
    61,   -62,   -62,    39,   -16,   260,    39,    -8,   289,    -8,
   -62,   -62,   -62,   -62,   -62,   -62,   -62,   -62,   -62,   -62,
   -62,   -62,   -62,   -62,   -62,   -62,   -62,   -62,    -2,    -2,
    -2,    -2,    -2,    -2,   124,    -2,    38,    -2,    61,    -2,
    61,    61,    61,    41,    -8,    -8,   262,   -62,   -62,   -46,
    -8,   -70,    -1,    -1,    -1,    -6,   -62,    -8,    -8,    -8,
   -24,   -23,    -1,   256,   -23,   -23,    -8,    -8,    -8,    -8,
    -8,    -8,    -8,    -8,    -8,   -23,    -8,    -2,    -2,    -2,
    -2,    -2,    -2,    -1,    -1,   324,   -71,   285,   -72,   286,
   323,   -62,   -62,   -33,   -62,    -1,   -62,   -62,   -62,   -62,
   -62,   -62,   -62,   -62,   -62,   -62,   -62,   -62,   -62,   -62,
   -62,   -62,   -62,   -62,   -21,   -21,   258,   258,   -70,    -1,
    -1,    -7,    -1,   290,   291,   293,   292,    -6,   -23,   -23,
   -23,   -23,   -17,   -17,   -17,   -23,   -23,   -23,   -23,   -23,
   -23,   -23,   -23,   -23,   -17,   -23,   -22,   -62,   323,    61,
   -62,   324,   -62,   -62,   -62,   -62,   -62,   -62,   -62,   -62,
   -62,   -62,   -62,   -62,   -62,   -62,   -62,   -62,   -62,   -62,
   -62,   316,   317,   315,   318,   319,   320,   -70,    -1,    -1,
   -73,   258,   -17,   -17,   -17,   -17,   -20,   -19,    -3,   325,
    40,   -20,   -20,   -17,   -17,   -17,   -17,   -17,   -17,   -17,
    -8,    -8,   -20,    -8,   324,   323,   -62,   258,   -62,   -62,
   -62,   -62,   124,    -3,   -19,   -62,   -62,   -62,   -62,   -62,
   -62,   -62,   -62,   -62,   -62,   -70,    -1,   -20,   -20,   -20,
   -20,   -19,    41,   -20,   -20,   -20,   -20,   -20,   -20,   -20,
   -19,   -19,   -19,   324,   -62,   -62,   -62,   -17,   -17,   -17,
   -63,   -62,   -19 };
yytabelem yydef[]={

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

#if YYDEBUG

yytoktype yytoks[] =
{
	"STRING",	257,
	"QSTRING",	258,
	"ASTRING",	259,
	"HEXCHARS",	260,
	"LONGINT",	261,
	"SHORTINT",	262,
	"FLAG",	263,
	"TABLENAME",	264,
	"ACCELERATORS",	265,
	"BITMAP",	266,
	"CURSOR",	267,
	"DIALOG",	268,
	"DIALOGEX",	269,
	"ICON",	270,
	"MENU",	271,
	"STRINGTABLE",	272,
	"VERSIONINFO",	273,
	"RCDATA",	274,
	"DLGINIT",	275,
	"TOOLBAR",	276,
	"BUTTON",	277,
	"FILEVERSION",	278,
	"PRODUCTVERSION",	279,
	"FILEFLAGSMASK",	280,
	"FILEFLAGS",	281,
	"FILEOS",	282,
	"FILETYPE",	283,
	"FILESUBTYPE",	284,
	"BLOCK",	285,
	"VALUE",	286,
	"POPUP",	287,
	"MENUITEM",	288,
	"SEPARATOR",	289,
	"CHECKED",	290,
	"GRAYED",	291,
	"HELP",	292,
	"INACTIVE",	293,
	"STYLE",	294,
	"CAPTION",	295,
	"CLASS",	296,
	"FONT",	297,
	"LANGUAGE",	298,
	"LTEXT",	299,
	"RTEXT",	300,
	"CTEXT",	301,
	"EDITTEXT",	302,
	"LISTBOX",	303,
	"COMBOBOX",	304,
	"GROUPBOX",	305,
	"PUSHBUTTON",	306,
	"DEFPUSHBUTTON",	307,
	"CHECKBOX",	308,
	"AUTOCHECKBOX",	309,
	"STATE3",	310,
	"AUTO3STATE",	311,
	"RADIOBUTTON",	312,
	"AUTORADIOBUTTON",	313,
	"SCROLLBAR",	314,
	"CONTROL",	315,
	"VIRTKEY",	316,
	"ASCII",	317,
	"SHIFT",	318,
	"ALT",	319,
	"NOINVERT",	320,
	"ALIGN",	321,
	"ENDIAN",	322,
	"BEGIn",	323,
	"END",	324,
	"NOT",	325,
	"TYPEDEF",	326,
	"STRUCT",	327,
	"CTYPE",	328,
	"NOTAVALIDTOKEN",	329,
	"!",	33,
	"+",	43,
	"-",	45,
	"*",	42,
	"/",	47,
	"%",	37,
	"&",	38,
	"|",	124,
	"<",	60,
	">",	62,
	"=",	61,
	"-unknown-",	-1	/* ends search */
};

char * yyreds[] =
{
	"-no such reduction-",
	"resourcefile : /* empty */",
	"resourcefile : resourcefile resource",
	"resourcefile : resourcefile c_declaration",
	"resource : resourceid BITMAP flags bitmapdata",
	"resource : resourceid CURSOR flags cursordata",
	"resource : resourceid ICON flags icondata",
	"resource : resourceid MENU flags menudata",
	"resource : resourceid DIALOG flags dialogdata",
	"resource : resourceid DIALOGEX flags dialogdata",
	"resource : resourceid DLGINIT flags dlginitdata",
	"resource : resourceid TOOLBAR flags toolbardata",
	"resource : resourceid ACCELERATORS flags acceldata",
	"resource : STRINGTABLE flags strtab",
	"resource : resourceid RCDATA flags rcdatares",
	"resource : resourceid resourceid flags binaryres",
	"resource : TABLENAME str",
	"resource : resourceid VERSIONINFO versioninfodata",
	"resource : VERSIONINFO versioninfodata",
	"resource : languagespec",
	"resourceid : str",
	"resourceid : nonparenexpr",
	"flags : /* empty */",
	"flags : flags FLAG",
	"menudata : maybelanguage menudef",
	"menudef : BEGIn menuitemlist END",
	"menudef : BEGIn error END",
	"menuitemlist : /* empty */",
	"menuitemlist : menuitemlist menuitem",
	"menuitem : POPUP str menuflags menudef",
	"menuitem : MENUITEM SEPARATOR",
	"menuitem : MENUITEM str fieldsep aexpr menuflags fieldsep",
	"menuflags : /* empty */",
	"menuflags : menuflags fieldsep menuflag",
	"menuflag : aexpr",
	"menuflag : CHECKED",
	"menuflag : GRAYED",
	"menuflag : INACTIVE",
	"menuflag : HELP",
	"acceldata : maybelanguage acceldef",
	"acceldef : BEGIn accelitemlist END",
	"acceldef : BEGIn error END",
	"accelitemlist : /* empty */",
	"accelitemlist : accelitemlist accelitem",
	"accelitem : QSTRING fieldsep aexpr accelflags",
	"accelitem : aexpr fieldsep aexpr accelflags",
	"accelflags : /* empty */",
	"accelflags : accelflags accelflag",
	"accelflag : fieldsep VIRTKEY",
	"accelflag : fieldsep ASCII",
	"accelflag : fieldsep CONTROL",
	"accelflag : fieldsep SHIFT",
	"accelflag : fieldsep ALT",
	"accelflag : fieldsep NOINVERT",
	"dialogdata : dlgdef",
	"dlgdef : dlgbase BEGIn controls END",
	"dlgdef : dlgbase BEGIn error END",
	"dlgbase : dims",
	"dlgbase : dlgbase STYLE expr",
	"dlgbase : dlgbase STYLE error",
	"dlgbase : dlgbase CAPTION str",
	"dlgbase : dlgbase CLASS str",
	"dlgbase : dlgbase MENU resourceid",
	"dlgbase : dlgbase FONT aexpr fieldsep str",
	"dlgbase : dlgbase FONT error fieldsep str",
	"dlgbase : dlgbase languagespec",
	"dims : coords fieldsep coords",
	"coords : aexpr fieldsep aexpr",
	"coords : error fieldsep aexpr",
	"coords : aexpr fieldsep error",
	"controls : /* empty */",
	"controls : controls control",
	"controlstyle : /* empty */",
	"controlstyle : styleflags",
	"styleflags : integer",
	"styleflags : NOT integer",
	"styleflags : styleflags '|' styleflags",
	"styleflags : '(' styleflags ')'",
	"control : LTEXT fieldsep str fieldsep controlid fieldsep dims fieldsep controlstyle",
	"control : RTEXT fieldsep str fieldsep controlid fieldsep dims fieldsep controlstyle",
	"control : CTEXT fieldsep str fieldsep controlid fieldsep dims fieldsep controlstyle",
	"control : ICON fieldsep resourceid fieldsep controlid fieldsep dims fieldsep controlstyle",
	"control : EDITTEXT fieldsep controlid fieldsep dims fieldsep controlstyle",
	"control : LISTBOX fieldsep controlid fieldsep dims fieldsep controlstyle",
	"control : COMBOBOX fieldsep controlid fieldsep dims fieldsep controlstyle",
	"control : GROUPBOX fieldsep str fieldsep controlid fieldsep dims fieldsep controlstyle",
	"control : PUSHBUTTON fieldsep str fieldsep controlid fieldsep dims fieldsep controlstyle",
	"control : DEFPUSHBUTTON fieldsep str fieldsep controlid fieldsep dims fieldsep controlstyle",
	"control : RADIOBUTTON fieldsep str fieldsep controlid fieldsep dims fieldsep controlstyle",
	"control : AUTORADIOBUTTON fieldsep str fieldsep controlid fieldsep dims fieldsep controlstyle",
	"control : CHECKBOX fieldsep str fieldsep controlid fieldsep dims fieldsep controlstyle",
	"control : AUTOCHECKBOX fieldsep str fieldsep controlid fieldsep dims fieldsep controlstyle",
	"control : STATE3 fieldsep str fieldsep controlid fieldsep str fieldsep styleflags fieldsep dims",
	"control : AUTO3STATE fieldsep str fieldsep controlid fieldsep str fieldsep styleflags fieldsep dims",
	"control : SCROLLBAR fieldsep controlid fieldsep dims fieldsep controlstyle",
	"control : CONTROL fieldsep str fieldsep controlid fieldsep str fieldsep styleflags fieldsep dims Woptions",
	"controlid : aexpr",
	"controlid : error",
	"dlginitdata : dlginitdef",
	"dlginitdef : BEGIn dlginititemlist END",
	"dlginitdef : BEGIn error END",
	"dlginititemlist : /* empty */",
	"dlginititemlist : dlginititemlist SHORTINT",
	"dlginititemlist : dlginititemlist QSTRING",
	"dlginititemlist : dlginititemlist ','",
	"toolbardata : toolbardef",
	"toolbardef : toolbardims BEGIn toolbaritemlist END",
	"toolbardef : toolbardims BEGIn error END",
	"toolbardims : SHORTINT ',' SHORTINT",
	"toolbaritemlist : /* empty */",
	"toolbaritemlist : toolbaritemlist toolbaritem",
	"toolbaritem : BUTTON SHORTINT",
	"toolbaritem : SEPARATOR",
	"strtab : maybelanguage BEGIn strtablines END",
	"strtab : maybelanguage BEGIn error END",
	"strtablines : /* empty */",
	"strtablines : strtablines strtabline",
	"strtabline : aexpr fieldsep str",
	"bitmapdata : binary",
	"cursordata : binary",
	"icondata : binary",
	"rcdatares : binaryres",
	"binaryres : fileref",
	"binaryres : userres",
	"userres : binresflags BEGIn userreslines END",
	"userres : binresflags BEGIn error END",
	"userreslines : userresline",
	"userreslines : userreslines fieldsep userresline",
	"userresline : str",
	"userresline : SHORTINT",
	"userresline : LONGINT",
	"userresline : binaryline",
	"binresflags : /* empty */",
	"binresflags : binresflags ALIGN aexpr",
	"binresflags : binresflags ALIGN str",
	"binresflags : binresflags ENDIAN str",
	"binresflags : binresflags languagespec",
	"versioninfodata : fixedinfo BEGIn versioninfoblock END",
	"fixedinfo : /* empty */",
	"fixedinfo : fixedinfo fistmnt",
	"fistmnt : FILEVERSION aexpr fieldsep aexpr fieldsep aexpr fieldsep aexpr",
	"fistmnt : PRODUCTVERSION aexpr fieldsep aexpr fieldsep aexpr fieldsep aexpr",
	"fistmnt : FILEFLAGSMASK aexpr",
	"fistmnt : FILEFLAGS aexpr",
	"fistmnt : FILEOS aexpr",
	"fistmnt : FILETYPE aexpr",
	"fistmnt : FILESUBTYPE aexpr",
	"versioninfoblock : /* empty */",
	"versioninfoblock : versioninfoblock viblocks",
	"viblocks : BLOCK QSTRING BEGIn viblockstmnts END",
	"viblocks : BLOCK QSTRING '=' aexpr BEGIn viblockstmnts END",
	"viblockstmnts : /* empty */",
	"viblockstmnts : viblockstmnts viblockstmnt",
	"valuestmnt : VALUE QSTRING fieldsep aexpr fieldsep aexpr",
	"valuestmnt : VALUE QSTRING fieldsep manyqstrings",
	"viblockstmnt : BLOCK QSTRING BEGIn viblockstmnts END",
	"viblockstmnt : BLOCK QSTRING '=' aexpr BEGIn viblockstmnts END",
	"viblockstmnt : valuestmnt",
	"manyqstrings : QSTRING",
	"manyqstrings : manyqstrings QSTRING",
	"fileref : astr",
	"binary : binarydata",
	"binary : fileref",
	"binarydata : BEGIn binarylines END",
	"binarydata : BEGIn error END",
	"binarylines : /* empty */",
	"binarylines : binarylines binaryline",
	"binaryline : '\'' binarybytes '\''",
	"binaryline : '\'' error '\''",
	"binarybytes : /* empty */",
	"binarybytes : binarybytes binarybyte",
	"binarybyte : HEXCHARS",
	"maybelanguage : /* empty */",
	"maybelanguage : maybelanguage languagespec",
	"languagespec : LANGUAGE aexpr fieldsep aexpr fieldsep",
	"aexpr : integer",
	"aexpr : aexpr '+' aexpr",
	"aexpr : aexpr '-' aexpr",
	"aexpr : aexpr '*' aexpr",
	"aexpr : aexpr '/' aexpr",
	"aexpr : aexpr '%' aexpr",
	"aexpr : aexpr '|' aexpr",
	"aexpr : aexpr '&' aexpr",
	"aexpr : '(' aexpr ')'",
	"nonparenexpr : integer",
	"nonparenexpr : integer '+' aexpr",
	"nonparenexpr : integer '-' aexpr",
	"nonparenexpr : integer '*' aexpr",
	"nonparenexpr : integer '/' aexpr",
	"nonparenexpr : integer '%' aexpr",
	"nonparenexpr : integer '|' aexpr",
	"nonparenexpr : integer '&' aexpr",
	"expr : integer",
	"expr : expr '+' expr",
	"expr : expr '-' expr",
	"expr : expr '*' expr",
	"expr : expr '/' expr",
	"expr : expr '%' expr",
	"expr : expr '|' expr",
	"expr : expr '&' expr",
	"expr : expr '|' '|' expr",
	"expr : expr '&' '&' expr",
	"expr : '(' expr ')'",
	"expr : '!' expr",
	"expr : expr '>' expr",
	"expr : expr '<' expr",
	"expr : expr '>' '=' expr",
	"expr : expr '<' '=' expr",
	"expr : expr '=' '=' expr",
	"expr : expr '!' '=' expr",
	"str : STRING",
	"str : QSTRING",
	"str : ASTRING",
	"str : HEXCHARS",
	"astr : QSTRING",
	"astr : ASTRING",
	"integer : LONGINT",
	"integer : SHORTINT",
	"c_declaration : struct_union_class",
	"c_declaration : typedef",
	"c_declaration : prototype",
	"begin_block_end : BEGIn",
	"begin_block_end : BEGIn begin_block_end_or_null END",
	"begin_block_end_or_null : /* empty */",
	"begin_block_end_or_null : begin_block_end begin_block_end_or_null",
	"struct_union_class : STRUCT",
	"struct_union_class : STRUCT begin_block_end_or_null",
	"struct_union_class : STRUCT begin_block_end_or_null ';'",
	"typedef : TYPEDEF",
	"typedef : TYPEDEF begin_block_end_or_null",
	"typedef : TYPEDEF begin_block_end_or_null ASTRING",
	"prototype : CTYPE",
	"prototype : CTYPE begin_block_end_or_null",
	"prototype : CTYPE begin_block_end_or_null ';'",
	"prototype : ASTRING '('",
	"prototype : ASTRING '(' ';'",
	"fieldsep : /* empty */",
	"fieldsep : ',' fieldsep",
	"Woptions : /* empty */",
	"Woptions : fieldsep styleflags",
};
#endif /* YYDEBUG */
# line	1 "/usr/ccs/bin/yaccpar"
/*
 * Copyright (c) 1993 by Sun Microsystems, Inc.
 */

#pragma ident	"@(#)yaccpar	6.12	93/06/07 SMI"

/*
** Skeleton parser driver for yacc output
*/

/*
** yacc user known macros and defines
*/
#define YYERROR		goto yyerrlab
#define YYACCEPT	return(0)
#define YYABORT		return(1)
#define YYBACKUP( newtoken, newvalue )\
{\
	if ( yychar >= 0 || ( yyr2[ yytmp ] >> 1 ) != 1 )\
	{\
		yyerror( "syntax error - cannot backup" );\
		goto yyerrlab;\
	}\
	yychar = newtoken;\
	yystate = *yyps;\
	yylval = newvalue;\
	goto yynewstate;\
}
#define YYRECOVERING()	(!!yyerrflag)
#define YYNEW(type)	malloc(sizeof(type) * yynewmax)
#define YYCOPY(to, from, type) \
	(type *) memcpy(to, (char *) from, yynewmax * sizeof(type))
#define YYENLARGE( from, type) \
	(type *) realloc((char *) from, yynewmax * sizeof(type))
#ifndef YYDEBUG
#	define YYDEBUG	1	/* make debugging available */
#endif

/*
** user known globals
*/
int yydebug;			/* set to 1 to get debugging */

/*
** driver internal defines
*/
#define YYFLAG		(-10000000)

/*
** global variables used by the parser
*/
YYSTYPE *yypv;			/* top of value stack */
int *yyps;			/* top of state stack */

int yystate;			/* current state */
int yytmp;			/* extra var (lasts between blocks) */

int yynerrs;			/* number of errors */
int yyerrflag;			/* error recovery flag */
int yychar;			/* current input token number */



#ifdef YYNMBCHARS
#define YYLEX()		yycvtok(yylex())
/*
** yycvtok - return a token if i is a wchar_t value that exceeds 255.
**	If i<255, i itself is the token.  If i>255 but the neither 
**	of the 30th or 31st bit is on, i is already a token.
*/
#if defined(__STDC__) || defined(__cplusplus)
int yycvtok(int i)
#else
int yycvtok(i) int i;
#endif
{
	int first = 0;
	int last = YYNMBCHARS - 1;
	int mid;
	wchar_t j;

	if(i&0x60000000){/*Must convert to a token. */
		if( yymbchars[last].character < i ){
			return i;/*Giving up*/
		}
		while ((last>=first)&&(first>=0)) {/*Binary search loop*/
			mid = (first+last)/2;
			j = yymbchars[mid].character;
			if( j==i ){/*Found*/ 
				return yymbchars[mid].tvalue;
			}else if( j<i ){
				first = mid + 1;
			}else{
				last = mid -1;
			}
		}
		/*No entry in the table.*/
		return i;/* Giving up.*/
	}else{/* i is already a token. */
		return i;
	}
}
#else/*!YYNMBCHARS*/
#define YYLEX()		yylex()
#endif/*!YYNMBCHARS*/

/*
** yyparse - return 0 if worked, 1 if syntax error not recovered from
*/
#if defined(__STDC__) || defined(__cplusplus)
int yyparse(void)
#else
int yyparse()
#endif
{
	register YYSTYPE *yypvt;	/* top of value stack for $vars */

#if defined(__cplusplus) || defined(lint)
/*
	hacks to please C++ and lint - goto's inside switch should never be
	executed; yypvt is set to 0 to avoid "used before set" warning.
*/
	static int __yaccpar_lint_hack__ = 0;
	switch (__yaccpar_lint_hack__)
	{
		case 1: goto yyerrlab;
		case 2: goto yynewstate;
	}
	yypvt = 0;
#endif

	/*
	** Initialize externals - yyparse may be called more than once
	*/
	yypv = &yyv[-1];
	yyps = &yys[-1];
	yystate = 0;
	yytmp = 0;
	yynerrs = 0;
	yyerrflag = 0;
	yychar = -1;

#if YYMAXDEPTH <= 0
	if (yymaxdepth <= 0)
	{
		if ((yymaxdepth = YYEXPAND(0)) <= 0)
		{
			yyerror("yacc initialization error");
			YYABORT;
		}
	}
#endif

	{
		register YYSTYPE *yy_pv;	/* top of value stack */
		register int *yy_ps;		/* top of state stack */
		register int yy_state;		/* current state */
		register int  yy_n;		/* internal state number info */
	goto yystack;	/* moved from 6 lines above to here to please C++ */

		/*
		** get globals into registers.
		** branch to here only if YYBACKUP was called.
		*/
	yynewstate:
		yy_pv = yypv;
		yy_ps = yyps;
		yy_state = yystate;
		goto yy_newstate;

		/*
		** get globals into registers.
		** either we just started, or we just finished a reduction
		*/
	yystack:
		yy_pv = yypv;
		yy_ps = yyps;
		yy_state = yystate;

		/*
		** top of for (;;) loop while no reductions done
		*/
	yy_stack:
		/*
		** put a state and value onto the stacks
		*/
#if YYDEBUG
		/*
		** if debugging, look up token value in list of value vs.
		** name pairs.  0 and negative (-1) are special values.
		** Note: linear search is used since time is not a real
		** consideration while debugging.
		*/
		if ( yydebug )
		{
			register int yy_i;

			printf( "State %d, token ", yy_state );
			if ( yychar == 0 )
				printf( "end-of-file\n" );
			else if ( yychar < 0 )
				printf( "-none-\n" );
			else
			{
				for ( yy_i = 0; yytoks[yy_i].t_val >= 0;
					yy_i++ )
				{
					if ( yytoks[yy_i].t_val == yychar )
						break;
				}
				printf( "%s\n", yytoks[yy_i].t_name );
			}
		}
#endif /* YYDEBUG */
		if ( ++yy_ps >= &yys[ yymaxdepth ] )	/* room on stack? */
		{
			/*
			** reallocate and recover.  Note that pointers
			** have to be reset, or bad things will happen
			*/
			int yyps_index = (yy_ps - yys);
			int yypv_index = (yy_pv - yyv);
			int yypvt_index = (yypvt - yyv);
			int yynewmax;
#ifdef YYEXPAND
			yynewmax = YYEXPAND(yymaxdepth);
#else
			yynewmax = 2 * yymaxdepth;	/* double table size */
			if (yymaxdepth == YYMAXDEPTH)	/* first time growth */
			{
				char *newyys = (char *)YYNEW(int);
				char *newyyv = (char *)YYNEW(YYSTYPE);
				if (newyys != 0 && newyyv != 0)
				{
					yys = YYCOPY(newyys, yys, int);
					yyv = YYCOPY(newyyv, yyv, YYSTYPE);
				}
				else
					yynewmax = 0;	/* failed */
			}
			else				/* not first time */
			{
				yys = YYENLARGE(yys, int);
				yyv = YYENLARGE(yyv, YYSTYPE);
				if (yys == 0 || yyv == 0)
					yynewmax = 0;	/* failed */
			}
#endif
			if (yynewmax <= yymaxdepth)	/* tables not expanded */
			{
				yyerror( "yacc stack overflow" );
				YYABORT;
			}
			yymaxdepth = yynewmax;

			yy_ps = yys + yyps_index;
			yy_pv = yyv + yypv_index;
			yypvt = yyv + yypvt_index;
		}
		*yy_ps = yy_state;
		*++yy_pv = yyval;

		/*
		** we have a new state - find out what to do
		*/
	yy_newstate:
		if ( ( yy_n = yypact[ yy_state ] ) <= YYFLAG )
			goto yydefault;		/* simple state */
#if YYDEBUG
		/*
		** if debugging, need to mark whether new token grabbed
		*/
		yytmp = yychar < 0;
#endif
		if ( ( yychar < 0 ) && ( ( yychar = YYLEX() ) < 0 ) )
			yychar = 0;		/* reached EOF */
#if YYDEBUG
		if ( yydebug && yytmp )
		{
			register int yy_i;

			printf( "Received token " );
			if ( yychar == 0 )
				printf( "end-of-file\n" );
			else if ( yychar < 0 )
				printf( "-none-\n" );
			else
			{
				for ( yy_i = 0; yytoks[yy_i].t_val >= 0;
					yy_i++ )
				{
					if ( yytoks[yy_i].t_val == yychar )
						break;
				}
				printf( "%s\n", yytoks[yy_i].t_name );
			}
		}
#endif /* YYDEBUG */
		if ( ( ( yy_n += yychar ) < 0 ) || ( yy_n >= YYLAST ) )
			goto yydefault;
		if ( yychk[ yy_n = yyact[ yy_n ] ] == yychar )	/*valid shift*/
		{
			yychar = -1;
			yyval = yylval;
			yy_state = yy_n;
			if ( yyerrflag > 0 )
				yyerrflag--;
			goto yy_stack;
		}

	yydefault:
		if ( ( yy_n = yydef[ yy_state ] ) == -2 )
		{
#if YYDEBUG
			yytmp = yychar < 0;
#endif
			if ( ( yychar < 0 ) && ( ( yychar = YYLEX() ) < 0 ) )
				yychar = 0;		/* reached EOF */
#if YYDEBUG
			if ( yydebug && yytmp )
			{
				register int yy_i;

				printf( "Received token " );
				if ( yychar == 0 )
					printf( "end-of-file\n" );
				else if ( yychar < 0 )
					printf( "-none-\n" );
				else
				{
					for ( yy_i = 0;
						yytoks[yy_i].t_val >= 0;
						yy_i++ )
					{
						if ( yytoks[yy_i].t_val
							== yychar )
						{
							break;
						}
					}
					printf( "%s\n", yytoks[yy_i].t_name );
				}
			}
#endif /* YYDEBUG */
			/*
			** look through exception table
			*/
			{
				register int *yyxi = yyexca;

				while ( ( *yyxi != -1 ) ||
					( yyxi[1] != yy_state ) )
				{
					yyxi += 2;
				}
				while ( ( *(yyxi += 2) >= 0 ) &&
					( *yyxi != yychar ) )
					;
				if ( ( yy_n = yyxi[1] ) < 0 )
					YYACCEPT;
			}
		}

		/*
		** check for syntax error
		*/
		if ( yy_n == 0 )	/* have an error */
		{
			/* no worry about speed here! */
			switch ( yyerrflag )
			{
			case 0:		/* new error */
				yyerror( "syntax error" );
				goto skip_init;
			yyerrlab:
				/*
				** get globals into registers.
				** we have a user generated syntax type error
				*/
				yy_pv = yypv;
				yy_ps = yyps;
				yy_state = yystate;
			skip_init:
				yynerrs++;
				/* FALLTHRU */
			case 1:
			case 2:		/* incompletely recovered error */
					/* try again... */
				yyerrflag = 3;
				/*
				** find state where "error" is a legal
				** shift action
				*/
				while ( yy_ps >= yys )
				{
					yy_n = yypact[ *yy_ps ] + YYERRCODE;
					if ( yy_n >= 0 && yy_n < YYLAST &&
						yychk[yyact[yy_n]] == YYERRCODE)					{
						/*
						** simulate shift of "error"
						*/
						yy_state = yyact[ yy_n ];
						goto yy_stack;
					}
					/*
					** current state has no shift on
					** "error", pop stack
					*/
#if YYDEBUG
#	define _POP_ "Error recovery pops state %d, uncovers state %d\n"
					if ( yydebug )
						printf( _POP_, *yy_ps,
							yy_ps[-1] );
#	undef _POP_
#endif
					yy_ps--;
					yy_pv--;
				}
				/*
				** there is no state on stack with "error" as
				** a valid shift.  give up.
				*/
				YYABORT;
			case 3:		/* no shift yet; eat a token */
#if YYDEBUG
				/*
				** if debugging, look up token in list of
				** pairs.  0 and negative shouldn't occur,
				** but since timing doesn't matter when
				** debugging, it doesn't hurt to leave the
				** tests here.
				*/
				if ( yydebug )
				{
					register int yy_i;

					printf( "Error recovery discards " );
					if ( yychar == 0 )
						printf( "token end-of-file\n" );
					else if ( yychar < 0 )
						printf( "token -none-\n" );
					else
					{
						for ( yy_i = 0;
							yytoks[yy_i].t_val >= 0;
							yy_i++ )
						{
							if ( yytoks[yy_i].t_val
								== yychar )
							{
								break;
							}
						}
						printf( "token %s\n",
							yytoks[yy_i].t_name );
					}
				}
#endif /* YYDEBUG */
				if ( yychar == 0 )	/* reached EOF. quit */
					YYABORT;
				yychar = -1;
				goto yy_newstate;
			}
		}/* end if ( yy_n == 0 ) */
		/*
		** reduction by production yy_n
		** put stack tops, etc. so things right after switch
		*/
#if YYDEBUG
		/*
		** if debugging, print the string that is the user's
		** specification of the reduction which is just about
		** to be done.
		*/
		if ( yydebug )
			printf( "Reduce by (%d) \"%s\"\n",
				yy_n, yyreds[ yy_n ] );
#endif
		yytmp = yy_n;			/* value to switch over */
		yypvt = yy_pv;			/* $vars top of value stack */
		/*
		** Look in goto table for next state
		** Sorry about using yy_state here as temporary
		** register variable, but why not, if it works...
		** If yyr2[ yy_n ] doesn't have the low order bit
		** set, then there is no action to be done for
		** this reduction.  So, no saving & unsaving of
		** registers done.  The only difference between the
		** code just after the if and the body of the if is
		** the goto yy_stack in the body.  This way the test
		** can be made before the choice of what to do is needed.
		*/
		{
			/* length of production doubled with extra bit */
			register int yy_len = yyr2[ yy_n ];

			if ( !( yy_len & 01 ) )
			{
				yy_len >>= 1;
				yyval = ( yy_pv -= yy_len )[1];	/* $$ = $1 */
				yy_state = yypgo[ yy_n = yyr1[ yy_n ] ] +
					*( yy_ps -= yy_len ) + 1;
				if ( yy_state >= YYLAST ||
					yychk[ yy_state =
					yyact[ yy_state ] ] != -yy_n )
				{
					yy_state = yyact[ yypgo[ yy_n ] ];
				}
				goto yy_stack;
			}
			yy_len >>= 1;
			yyval = ( yy_pv -= yy_len )[1];	/* $$ = $1 */
			yy_state = yypgo[ yy_n = yyr1[ yy_n ] ] +
				*( yy_ps -= yy_len ) + 1;
			if ( yy_state >= YYLAST ||
				yychk[ yy_state = yyact[ yy_state ] ] != -yy_n )
			{
				yy_state = yyact[ yypgo[ yy_n ] ];
			}
		}
					/* save until reenter driver code */
		yystate = yy_state;
		yyps = yy_ps;
		yypv = yy_pv;
	}
	/*
	** code supplied by user is placed in this switch
	*/
	switch( yytmp )
	{
		
case 4:
# line 202 "rcyacc.y"
{ add_resource(yypvt[-3].str, yypvt[-1].i, yypvt[-0].resource); } break;
case 5:
# line 203 "rcyacc.y"
{ add_resource(yypvt[-3].str, yypvt[-1].i, yypvt[-0].resource); } break;
case 6:
# line 204 "rcyacc.y"
{ add_resource(yypvt[-3].str, yypvt[-1].i, yypvt[-0].resource); } break;
case 7:
# line 205 "rcyacc.y"
{ add_resource(yypvt[-3].str, yypvt[-1].i, yypvt[-0].resource); } break;
case 8:
# line 206 "rcyacc.y"
{ add_resource(yypvt[-3].str, yypvt[-1].i, yypvt[-0].resource); } break;
case 9:
# line 207 "rcyacc.y"
{ add_resource(yypvt[-3].str, yypvt[-1].i, yypvt[-0].resource);} break;
case 10:
# line 208 "rcyacc.y"
{ add_resource(yypvt[-3].str, yypvt[-1].i, yypvt[-0].resource); } break;
case 11:
# line 209 "rcyacc.y"
{ add_resource(yypvt[-3].str, yypvt[-1].i, yypvt[-0].resource); } break;
case 12:
# line 210 "rcyacc.y"
{ add_resource(yypvt[-3].str, yypvt[-1].i, yypvt[-0].resource); } break;
case 13:
# line 211 "rcyacc.y"
{ set_string_flags(yypvt[-1].i); } break;
case 14:
# line 212 "rcyacc.y"
{ add_resource(yypvt[-3].str, yypvt[-1].i, yypvt[-0].resource); } break;
case 15:
# line 213 "rcyacc.y"
{ type_resource(yypvt[-0].resource, yypvt[-2].str); add_resource(yypvt[-3].str, yypvt[-1].i, yypvt[-0].resource); } break;
case 16:
# line 214 "rcyacc.y"
{ VPRINT(("Table name is now %s", yypvt[-0].str)); strcpy(tbl_name, yypvt[-0].str); } break;
case 21:
# line 221 "rcyacc.y"
{ yyval.str = makeintresource(yypvt[-0].i); } break;
case 22:
# line 224 "rcyacc.y"
{ yyval.i = 0x10; /* These seem to be default flags */ } break;
case 23:
# line 225 "rcyacc.y"
{ yyval.i = (yypvt[-1].i & yypvt[-0].mask.and) | yypvt[-0].mask.or; } break;
case 24:
# line 228 "rcyacc.y"
{ yyval.resource = make_menu_resource(yypvt[-0].b); } break;
case 25:
# line 231 "rcyacc.y"
{ yyval.b = set_menu_last(yypvt[-1].b); } break;
case 26:
# line 232 "rcyacc.y"
{ CERROR(("Error processing menu definition")); } break;
case 27:
# line 235 "rcyacc.y"
{ yyval.b = NULL; } break;
case 28:
# line 236 "rcyacc.y"
{ yyval.b = append_menu_node(yypvt[-1].b, yypvt[-0].b); } break;
case 29:
# line 239 "rcyacc.y"
{ yyval.b = create_menu_popup(yypvt[-2].str, yypvt[-0].b, yypvt[-1].i); } break;
case 30:
# line 240 "rcyacc.y"
{ yyval.b = create_menu_separator(); } break;
case 31:
# line 242 "rcyacc.y"
{ yyval.b = create_menu_item(yypvt[-4].str, yypvt[-2].i, yypvt[-1].i); } break;
case 32:
# line 245 "rcyacc.y"
{ yyval.i = 0; } break;
case 33:
# line 246 "rcyacc.y"
{ yyval.i = yypvt[-2].i | yypvt[-0].i; } break;
case 35:
# line 250 "rcyacc.y"
{ yyval.i = menu_checked(); } break;
case 36:
# line 251 "rcyacc.y"
{ yyval.i = menu_grayed(); } break;
case 37:
# line 252 "rcyacc.y"
{ yyval.i = menu_inactive(); } break;
case 38:
# line 253 "rcyacc.y"
{ yyval.i = menu_help(); } break;
case 39:
# line 256 "rcyacc.y"
{ yyval.resource = make_accelerator_resource(yypvt[-0].b); } break;
case 40:
# line 259 "rcyacc.y"
{ yyval.b = yypvt[-1].b; } break;
case 41:
# line 260 "rcyacc.y"
{ CERROR(("Error processing accelerator table definition")); } break;
case 42:
# line 263 "rcyacc.y"
{ yyval.b = NULL; } break;
case 43:
# line 264 "rcyacc.y"
{ yyval.b = append_accel(yypvt[-1].b, yypvt[-0].b); } break;
case 44:
# line 267 "rcyacc.y"
{ yyval.b = make_accel_s(yypvt[-3].str, yypvt[-1].i, yypvt[-0].i); } break;
case 45:
# line 268 "rcyacc.y"
{ yyval.b = make_accel_i(yypvt[-3].i, yypvt[-1].i, yypvt[-0].i); } break;
case 46:
# line 271 "rcyacc.y"
{ yyval.i = 0; } break;
case 47:
# line 272 "rcyacc.y"
{ yyval.i = yypvt[-1].i | yypvt[-0].i; } break;
case 48:
# line 275 "rcyacc.y"
{ yyval.i = 0x01; } break;
case 49:
# line 276 "rcyacc.y"
{ yyval.i = 0x00; } break;
case 50:
# line 277 "rcyacc.y"
{ yyval.i = 0x08; } break;
case 51:
# line 278 "rcyacc.y"
{ yyval.i = 0x04; } break;
case 52:
# line 279 "rcyacc.y"
{ yyval.i = 0x10; } break;
case 53:
# line 280 "rcyacc.y"
{ yyval.i = 0x02; } break;
case 54:
# line 283 "rcyacc.y"
{ yyval.resource = make_dialog_resource(yypvt[-0].b); } break;
case 55:
# line 286 "rcyacc.y"
{ yyval.b = set_dialog_controls(yypvt[-3].b, yypvt[-1].b); } break;
case 56:
# line 287 "rcyacc.y"
{ CERROR(("Error processing dialog box definition")); } break;
case 57:
# line 290 "rcyacc.y"
{ yyval.b = make_dialog(yypvt[-0].dim); } break;
case 58:
# line 291 "rcyacc.y"
{ yyval.b = set_dialog_style(yypvt[-2].b, yypvt[-0].i); } break;
case 59:
# line 292 "rcyacc.y"
{ CERROR(("Expected integer after STYLE")); } break;
case 60:
# line 293 "rcyacc.y"
{ yyval.b = set_dialog_caption(yypvt[-2].b, yypvt[-0].str); } break;
case 61:
# line 294 "rcyacc.y"
{ yyval.b = set_dialog_class(yypvt[-2].b, yypvt[-0].str); } break;
case 62:
# line 295 "rcyacc.y"
{ yyval.b = set_dialog_menu(yypvt[-2].b, yypvt[-0].str); } break;
case 63:
# line 296 "rcyacc.y"
{ yyval.b = set_dialog_font(yypvt[-4].b, yypvt[-0].str, yypvt[-2].i); } break;
case 64:
# line 297 "rcyacc.y"
{ CERROR(("Need integer point size for FONT")); } break;
case 66:
# line 301 "rcyacc.y"
{ yyval.dim.corner = yypvt[-2].xy; yyval.dim.extent = yypvt[-0].xy; } break;
case 67:
# line 304 "rcyacc.y"
{ yyval.xy.x = yypvt[-2].i; yyval.xy.y = yypvt[-0].i; } break;
case 68:
# line 305 "rcyacc.y"
{ CERROR(("Coordinates must be integers")); } break;
case 69:
# line 307 "rcyacc.y"
{ CERROR(("Coordinates must be integers")); } break;
case 70:
# line 310 "rcyacc.y"
{ yyval.b = NULL; } break;
case 71:
# line 311 "rcyacc.y"
{ yyval.b = append_control(yypvt[-1].b, yypvt[-0].b); } break;
case 72:
# line 314 "rcyacc.y"
{ yyval.mask.or = 0; yyval.mask.and = -1;} break;
case 73:
# line 315 "rcyacc.y"
{ yyval.mask = yypvt[-0].mask; } break;
case 74:
# line 318 "rcyacc.y"
{ yyval.mask.or = yypvt[-0].i; yyval.mask.and = -1; } break;
case 75:
# line 319 "rcyacc.y"
{ yyval.mask.or = 0; yyval.mask.and = ~yypvt[-0].i; } break;
case 76:
# line 320 "rcyacc.y"
{ 
					  yyval.mask.or = yypvt[-2].mask.or | yypvt[-0].mask.or; 
					  yyval.mask.and = yypvt[-2].mask.and & yypvt[-0].mask.and; 
					} break;
case 77:
# line 324 "rcyacc.y"
{ yyval.mask.or = yypvt[-1].mask.or; yyval.mask.and = yypvt[-1].mask.and; } break;
case 78:
# line 327 "rcyacc.y"
{ yyval.b = create_ltext_control(yypvt[-6].str, yypvt[-4].i, yypvt[-2].dim, yypvt[-0].mask); } break;
case 79:
# line 328 "rcyacc.y"
{ yyval.b = create_rtext_control(yypvt[-6].str, yypvt[-4].i, yypvt[-2].dim, yypvt[-0].mask); } break;
case 80:
# line 329 "rcyacc.y"
{ yyval.b = create_ctext_control(yypvt[-6].str, yypvt[-4].i, yypvt[-2].dim, yypvt[-0].mask); } break;
case 81:
# line 330 "rcyacc.y"
{ yyval.b = create_icon_control(yypvt[-6].str, yypvt[-4].i, yypvt[-2].dim, yypvt[-0].mask); } break;
case 82:
# line 331 "rcyacc.y"
{ yyval.b = create_edit_control(yypvt[-4].i, yypvt[-2].dim, yypvt[-0].mask); } break;
case 83:
# line 332 "rcyacc.y"
{ yyval.b = create_listbox_control(yypvt[-4].i, yypvt[-2].dim, yypvt[-0].mask); } break;
case 84:
# line 333 "rcyacc.y"
{ yyval.b = create_combobox_control(yypvt[-4].i, yypvt[-2].dim, yypvt[-0].mask); } break;
case 85:
# line 334 "rcyacc.y"
{ yyval.b = create_groupbox_control(yypvt[-6].str, yypvt[-4].i, yypvt[-2].dim, yypvt[-0].mask); } break;
case 86:
# line 335 "rcyacc.y"
{ yyval.b = create_pushbutton_control(yypvt[-6].str, yypvt[-4].i, yypvt[-2].dim, yypvt[-0].mask); } break;
case 87:
# line 336 "rcyacc.y"
{ yyval.b = create_defpushbutton_control(yypvt[-6].str, yypvt[-4].i, yypvt[-2].dim, yypvt[-0].mask); } break;
case 88:
# line 337 "rcyacc.y"
{ yyval.b = create_radiobutton_control(yypvt[-6].str, yypvt[-4].i, yypvt[-2].dim, yypvt[-0].mask); } break;
case 89:
# line 339 "rcyacc.y"
{
	yypvt[-0].mask.or |= BS_AUTORADIOBUTTON;
	yyval.b = create_autoradiobutton_control(yypvt[-6].str,yypvt[-4].i,yypvt[-2].dim,yypvt[-0].mask);
	} break;
case 90:
# line 343 "rcyacc.y"
{ yyval.b = create_checkbox_control(yypvt[-6].str, yypvt[-4].i, yypvt[-2].dim, yypvt[-0].mask); } break;
case 91:
# line 345 "rcyacc.y"
{
	yypvt[-0].mask.or |= BS_AUTOCHECKBOX;
   	yyval.b = create_checkbox_control(yypvt[-6].str,yypvt[-4].i,yypvt[-2].dim,yypvt[-0].mask);
	} break;
case 92:
# line 350 "rcyacc.y"
{
	yypvt[-2].mask.or |= BS_3STATE;
        yyval.b = create_generic_control(yypvt[-8].str,yypvt[-6].i,yypvt[-4].str,yypvt[-2].mask, yypvt[-0].dim);
	} break;
case 93:
# line 356 "rcyacc.y"
{
        yypvt[-2].mask.or |= BS_AUTO3STATE;
        yyval.b = create_generic_control(yypvt[-8].str,yypvt[-6].i,yypvt[-4].str,yypvt[-2].mask, yypvt[-0].dim);
        } break;
case 94:
# line 360 "rcyacc.y"
{ yyval.b = create_scrollbar_control(yypvt[-4].i, yypvt[-2].dim, yypvt[-0].mask); } break;
case 95:
# line 361 "rcyacc.y"
{yyval.b = create_generic_control(yypvt[-9].str, yypvt[-7].i, yypvt[-5].str, yypvt[-3].mask, yypvt[-1].dim);} break;
case 97:
# line 365 "rcyacc.y"
{ CERROR(("Control identifiers must be integers")); } break;
case 98:
# line 370 "rcyacc.y"
{ yyval.resource = make_dlginit_resource(yypvt[-0].b); } break;
case 99:
# line 375 "rcyacc.y"
{ yyval.b = yypvt[-1].b; } break;
case 100:
# line 377 "rcyacc.y"
{ CERROR(("Error processing dialog init definition")); } break;
case 101:
# line 382 "rcyacc.y"
{ yyval.b = make_dlginit(); } break;
case 102:
# line 384 "rcyacc.y"
{
		  yyval.b = add_dlginit_item(add_dlginit_item(yypvt[-1].b,
			(BYTE)((WORD)yypvt[-0].i) & 0xff),
			(BYTE)(((WORD)yypvt[-0].i) >> 8) & 0xff);
		} break;
case 103:
# line 390 "rcyacc.y"
{ yyval.b = add_dlginit_item(yypvt[-1].b, '\0'); } break;
case 104:
# line 392 "rcyacc.y"
{ yyval.b = yypvt[-1].b; } break;
case 105:
# line 397 "rcyacc.y"
{ yyval.resource = make_toolbar_resource(yypvt[-0].b); } break;
case 106:
# line 402 "rcyacc.y"
{ yyval.b = set_toolbar_dims(yypvt[-1].b, LOWORD(yypvt[-3].i), HIWORD(yypvt[-3].i)); } break;
case 107:
# line 404 "rcyacc.y"
{ CERROR(("Error processing tool bar definition")); } break;
case 108:
# line 409 "rcyacc.y"
{ yyval.i = MAKELONG(yypvt[-2].i, yypvt[-0].i); } break;
case 109:
# line 414 "rcyacc.y"
{ yyval.b = make_toolbar(1, 16, 15); } break;
case 110:
# line 416 "rcyacc.y"
{ yyval.b = add_toolbar_item(yypvt[-1].b, (WORD)yypvt[-0].i); } break;
case 111:
# line 421 "rcyacc.y"
{ yyval.i = yypvt[-0].i; } break;
case 112:
# line 423 "rcyacc.y"
{ yyval.i = 0; } break;
case 114:
# line 427 "rcyacc.y"
{ CERROR(("Error processing string table")); } break;
case 117:
# line 434 "rcyacc.y"
{ add_table_string(yypvt[-2].i, yypvt[-0].str); } break;
case 118:
# line 437 "rcyacc.y"
{ yyval.resource = make_bitmap_resource(yypvt[-0].b); } break;
case 119:
# line 440 "rcyacc.y"
{ yyval.resource = make_cursor_resource(yypvt[-0].b); } break;
case 120:
# line 443 "rcyacc.y"
{ yyval.resource = make_icon_resource(yypvt[-0].b); } break;
case 121:
# line 446 "rcyacc.y"
{ yyval.resource = type_resource_rcdata(yypvt[-0].resource); } break;
case 122:
# line 449 "rcyacc.y"
{ yyval.resource = make_binary_resource(buff_load(yypvt[-0].str, 1)); } break;
case 123:
# line 450 "rcyacc.y"
{ yyval.resource = make_binary_resource(yypvt[-0].b); } break;
case 124:
# line 453 "rcyacc.y"
{ yyval.b = pack_rcdata(yypvt[-3].binflags, yypvt[-1].urb); } break;
case 125:
# line 454 "rcyacc.y"
{ CERROR(("Error in user-defined resource definition")); } break;
case 126:
# line 457 "rcyacc.y"
{ yyval.urb = yypvt[-0].urb; } break;
case 127:
# line 458 "rcyacc.y"
{ yyval.urb = urb_cat(yypvt[-2].urb, yypvt[-0].urb); } break;
case 128:
# line 461 "rcyacc.y"
{ yyval.urb = urb_string(yypvt[-0].str); } break;
case 129:
# line 462 "rcyacc.y"
{ yyval.urb = urb_short(yypvt[-0].i); } break;
case 130:
# line 463 "rcyacc.y"
{ yyval.urb = urb_long(yypvt[-0].i); } break;
case 131:
# line 464 "rcyacc.y"
{ yyval.urb = urb_binary(yypvt[-0].b); } break;
case 132:
# line 467 "rcyacc.y"
{ yyval.binflags = defbinflags; } break;
case 133:
# line 468 "rcyacc.y"
{ yypvt[-2].binflags.align = yypvt[-0].i; yyval.binflags = yypvt[-2].binflags; } break;
case 134:
# line 469 "rcyacc.y"
{ yypvt[-2].binflags.align = alignval(yypvt[-0].str); yyval.binflags = yypvt[-2].binflags; } break;
case 135:
# line 470 "rcyacc.y"
{ if ((yypvt[-0].str[0] == 'b') || (yypvt[-0].str[0] == 'B')) yypvt[-2].binflags.endian = big;
                                      else if ((yypvt[-0].str[0] == 'l') || (yypvt[-0].str[0] == 'L')) yypvt[-2].binflags.endian = little;
                                      else CERROR(("Invalid endian specification %s", yypvt[-0].str));
                                      yyval.binflags = yypvt[-2].binflags; } break;
case 162:
# line 515 "rcyacc.y"
{ yyval.b = buff_load(yypvt[-0].str, 1); } break;
case 163:
# line 518 "rcyacc.y"
{ yyval.b = yypvt[-1].b; } break;
case 164:
# line 519 "rcyacc.y"
{ CERROR(("Error in binary data lines")); yyval.b = NULL; } break;
case 165:
# line 522 "rcyacc.y"
{ yyval.b = NULL; } break;
case 166:
# line 523 "rcyacc.y"
{ yyval.b = buff_cat(yypvt[-1].b, yypvt[-0].b); } break;
case 167:
# line 526 "rcyacc.y"
{ yyval.b = yypvt[-1].b; } break;
case 168:
# line 527 "rcyacc.y"
{ CERROR(("Error in binary data")); yyval.b = '\0'; } break;
case 169:
# line 530 "rcyacc.y"
{ yyval.b = NULL; } break;
case 170:
# line 531 "rcyacc.y"
{ yyval.b = buff_append_byte(yypvt[-1].b, yypvt[-0].c); } break;
case 171:
# line 534 "rcyacc.y"
{ yyval.c = hex2dec(yypvt[-0].str); } break;
case 176:
# line 544 "rcyacc.y"
{ yyval.i = yypvt[-2].i + yypvt[-0].i; } break;
case 177:
# line 545 "rcyacc.y"
{ yyval.i = yypvt[-2].i - yypvt[-0].i; } break;
case 178:
# line 546 "rcyacc.y"
{ yyval.i = yypvt[-2].i * yypvt[-0].i; } break;
case 179:
# line 547 "rcyacc.y"
{ yyval.i = yypvt[-2].i / yypvt[-0].i; } break;
case 180:
# line 548 "rcyacc.y"
{ yyval.i = yypvt[-2].i % yypvt[-0].i; } break;
case 181:
# line 549 "rcyacc.y"
{ yyval.i = yypvt[-2].i | yypvt[-0].i; } break;
case 182:
# line 550 "rcyacc.y"
{ yyval.i = yypvt[-2].i & yypvt[-0].i; } break;
case 183:
# line 551 "rcyacc.y"
{ yyval.i = yypvt[-1].i; } break;
case 185:
# line 558 "rcyacc.y"
{ yyval.i = yypvt[-2].i + yypvt[-0].i; } break;
case 186:
# line 559 "rcyacc.y"
{ yyval.i = yypvt[-2].i - yypvt[-0].i; } break;
case 187:
# line 560 "rcyacc.y"
{ yyval.i = yypvt[-2].i * yypvt[-0].i; } break;
case 188:
# line 561 "rcyacc.y"
{ yyval.i = yypvt[-2].i / yypvt[-0].i; } break;
case 189:
# line 562 "rcyacc.y"
{ yyval.i = yypvt[-2].i % yypvt[-0].i; } break;
case 190:
# line 563 "rcyacc.y"
{ yyval.i = yypvt[-2].i | yypvt[-0].i; } break;
case 191:
# line 564 "rcyacc.y"
{ yyval.i = yypvt[-2].i & yypvt[-0].i; } break;
case 193:
# line 568 "rcyacc.y"
{ yyval.i = yypvt[-2].i + yypvt[-0].i; } break;
case 194:
# line 569 "rcyacc.y"
{ yyval.i = yypvt[-2].i - yypvt[-0].i; } break;
case 195:
# line 570 "rcyacc.y"
{ yyval.i = yypvt[-2].i * yypvt[-0].i; } break;
case 196:
# line 571 "rcyacc.y"
{ yyval.i = yypvt[-2].i / yypvt[-0].i; } break;
case 197:
# line 572 "rcyacc.y"
{ yyval.i = yypvt[-2].i % yypvt[-0].i; } break;
case 198:
# line 573 "rcyacc.y"
{ yyval.i = yypvt[-2].i | yypvt[-0].i; } break;
case 199:
# line 574 "rcyacc.y"
{ yyval.i = yypvt[-2].i & yypvt[-0].i; } break;
case 200:
# line 575 "rcyacc.y"
{ yyval.i = yypvt[-3].i || yypvt[-0].i; } break;
case 201:
# line 576 "rcyacc.y"
{ yyval.i = yypvt[-3].i && yypvt[-0].i; } break;
case 202:
# line 577 "rcyacc.y"
{ yyval.i = yypvt[-1].i; } break;
case 203:
# line 578 "rcyacc.y"
{ yyval.i = !yypvt[-0].i; } break;
case 204:
# line 579 "rcyacc.y"
{ yyval.i = yypvt[-2].i > yypvt[-0].i; } break;
case 205:
# line 580 "rcyacc.y"
{ yyval.i = yypvt[-2].i < yypvt[-0].i; } break;
case 206:
# line 581 "rcyacc.y"
{ yyval.i = (yypvt[-3].i >= yypvt[-0].i); } break;
case 207:
# line 582 "rcyacc.y"
{ yyval.i = (yypvt[-3].i <= yypvt[-0].i); } break;
case 208:
# line 583 "rcyacc.y"
{ yyval.i = (yypvt[-3].i == yypvt[-0].i); } break;
case 209:
# line 584 "rcyacc.y"
{ yyval.i = (yypvt[-3].i != yypvt[-0].i); } break;
case 221:
# line 629 "rcyacc.y"
{ ignore_until_brace(); } break;
case 225:
# line 637 "rcyacc.y"
{ ignore_until_semicolon(); } break;
case 226:
# line 638 "rcyacc.y"
{ ignore_until_semicolon(); } break;
case 227:
# line 640 "rcyacc.y"
{ ignore_rest_of_file(); } break;
case 228:
# line 647 "rcyacc.y"
{ typedef_mode(); } break;
case 229:
# line 648 "rcyacc.y"
{ typedef_mode(); } break;
case 230:
# line 649 "rcyacc.y"
{
		     DEFINESTRUCT *defineNew = create_define(yypvt[-0].str);
		     defineNew->value = str_dup("extern");
		     initial_mode();
		     { ignore_rest_of_file(); }
		 } break;
case 231:
# line 661 "rcyacc.y"
{ ignore_until_semicolon(); } break;
case 232:
# line 662 "rcyacc.y"
{ ignore_until_semicolon(); } break;
case 233:
# line 664 "rcyacc.y"
{ ignore_rest_of_file(); } break;
case 234:
# line 665 "rcyacc.y"
{ ignore_until_semicolon(); } break;
case 235:
# line 667 "rcyacc.y"
{ ignore_rest_of_file(); } break;
# line	532 "/usr/ccs/bin/yaccpar"
	}
	goto yystack;		/* reset registers in driver code */
}

