
/*
 *	A Bison parser, made from d:\prog\compilers2\frontend_cc\scripts\parser.y
 *	by Win32 bison -- compiled by Palvelev Artyom [cppguru@mail.ru]
 */




#define	lxm_identifier	257
#define	lxm_typedef_name	258
#define	lxm_constant	259
#define	lxm_string_literal	260
#define	lxm_arrow	261
#define	lxm_inc	262
#define	lxm_dec	263
#define	lxm_shl	264
#define	lxm_shr	265
#define	lxm_le	266
#define	lxm_ge	267
#define	lxm_eq	268
#define	lxm_ne	269
#define	lxm_bool_and	270
#define	lxm_bool_or	271
#define	lxm_ellipsis	272
#define	lxm_mul_assign	273
#define	lxm_div_assign	274
#define	lxm_mod_assign	275
#define	lxm_add_assign	276
#define	lxm_sub_assign	277
#define	lxm_shl_assign	278
#define	lxm_shr_assign	279
#define	lxm_and_assign	280
#define	lxm_xor_assign	281
#define	lxm_or_assign	282
#define	lxm_auto	283
#define	lxm_break	284
#define	lxm_case	285
#define	lxm_char	286
#define	lxm_const	287
#define	lxm_continue	288
#define	lxm_default	289
#define	lxm_do	290
#define	lxm_double	291
#define	lxm_else	292
#define	lxm_enum	293
#define	lxm_extern	294
#define	lxm_float	295
#define	lxm_for	296
#define	lxm_goto	297
#define	lxm_if	298
#define	lxm_int	299
#define	lxm_long	300
#define	lxm_register	301
#define	lxm_return	302
#define	lxm_short	303
#define	lxm_signed	304
#define	lxm_sizeof	305
#define	lxm_static	306
#define	lxm_struct	307
#define	lxm_switch	308
#define	lxm_typedef	309
#define	lxm_union	310
#define	lxm_unsigned	311
#define	lxm_void	312
#define	lxm_volatile	313
#define	lxm_while	314



#include "common.h"
#include "unit.h"
#include "parser_actions.h"

expression *for_postaction;


#define	YYFINAL		392
#define	YYFLAG		-32768
#define	YYNTBASE	85

#define YYTRANSLATE(x) ((unsigned)(x) <= 314 ? yytranslate[x] : 160)

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,    72,     2,     2,     2,    74,    67,     2,    61,
    62,    68,    69,    66,    70,    65,    73,     2,     2,     2,
     2,     2,     2,     2,     2,     2,     2,    80,    82,    75,
    81,    76,    79,     2,     2,     2,     2,     2,     2,     2,
     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    63,     2,    64,    77,     2,     2,     2,     2,     2,     2,
     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     2,     2,    83,    78,    84,    71,     2,     2,     2,     2,
     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     2,     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
};

#if YYDEBUG != 0
static const short yyprhs[] = {     0,
     0,     2,     4,     6,    10,    12,    15,    18,    23,    27,
    31,    35,    40,    42,    46,    48,    51,    54,    57,    62,
    65,    68,    71,    74,    77,    80,    82,    87,    89,    93,
    97,   101,   103,   107,   111,   113,   117,   121,   123,   127,
   131,   135,   139,   141,   145,   149,   151,   155,   157,   161,
   163,   167,   169,   173,   175,   179,   181,   187,   189,   193,
   197,   201,   205,   209,   213,   217,   221,   225,   229,   233,
   235,   239,   241,   244,   248,   252,   254,   257,   259,   262,
   264,   267,   269,   271,   273,   275,   277,   279,   281,   283,
   285,   287,   289,   291,   293,   295,   297,   299,   301,   307,
   313,   318,   323,   326,   329,   331,   334,   336,   338,   340,
   343,   345,   348,   352,   355,   357,   361,   363,   366,   370,
   372,   376,   378,   382,   387,   393,   396,   398,   402,   404,
   408,   411,   413,   415,   419,   424,   429,   433,   438,   443,
   447,   449,   452,   455,   459,   461,   464,   466,   470,   472,
   476,   479,   482,   484,   486,   489,   491,   493,   496,   500,
   503,   507,   511,   515,   520,   525,   528,   532,   536,   540,
   545,   550,   552,   556,   561,   563,   567,   569,   571,   574,
   576,   579,   581,   584,   588,   589,   593,   595,   598,   603,
   607,   608,   613,   614,   620,   621,   626,   627,   634,   638,
   641,   644,   646,   648,   651,   652,   658,   659,   660,   668,
   669,   670,   671,   682,   683,   689,   690,   691,   692,   701,
   704,   708,   710,   713,   715,   717,   718,   723,   724
};

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

#endif

#if YYDEBUG != 0
static const short yyrline[] = { 0,
    66,    68,    69,    70,    75,    76,    78,    81,    83,    85,
    88,    90,    95,    97,   102,   103,   105,   108,   110,   113,
   115,   118,   120,   122,   124,   129,   130,   135,   136,   138,
   140,   145,   146,   148,   153,   154,   156,   161,   162,   164,
   166,   168,   173,   174,   176,   181,   182,   187,   188,   193,
   194,   199,   200,   205,   206,   211,   212,   217,   218,   220,
   222,   224,   226,   228,   230,   232,   234,   236,   238,   243,
   244,   249,   260,   262,   264,   269,   270,   272,   273,   275,
   276,   281,   283,   285,   287,   289,   294,   296,   298,   300,
   302,   304,   306,   308,   310,   312,   314,   316,   321,   323,
   325,   327,   329,   331,   336,   337,   342,   344,   349,   350,
   352,   353,   358,   360,   365,   367,   372,   374,   376,   381,
   383,   388,   390,   395,   397,   399,   404,   405,   409,   411,
   416,   418,   422,   424,   426,   428,   433,   435,   437,   442,
   447,   449,   451,   453,   458,   459,   464,   465,   470,   472,
   476,   478,   480,   485,   487,   492,   493,   494,   499,   501,
   503,   505,   510,   512,   514,   519,   521,   523,   528,   530,
   532,   537,   539,   541,   546,   547,   559,   561,   563,   568,
   569,   573,   574,   575,   580,   581,   584,   586,   590,   597,
   605,   608,   608,   611,   611,   614,   614,   617,   618,   620,
   622,   625,   627,   629,   633,   639,   642,   647,   653,   658,
   663,   666,   671,   678,   685,   690,   694,   698,   705,   712,
   714,   726,   727,   731,   732,   737,   738,   739,   740
};
#endif


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

static const char * const yytname[] = {   "$","error","$undefined.","lxm_identifier",
"lxm_typedef_name","lxm_constant","lxm_string_literal","lxm_arrow","lxm_inc",
"lxm_dec","lxm_shl","lxm_shr","lxm_le","lxm_ge","lxm_eq","lxm_ne","lxm_bool_and",
"lxm_bool_or","lxm_ellipsis","lxm_mul_assign","lxm_div_assign","lxm_mod_assign",
"lxm_add_assign","lxm_sub_assign","lxm_shl_assign","lxm_shr_assign","lxm_and_assign",
"lxm_xor_assign","lxm_or_assign","lxm_auto","lxm_break","lxm_case","lxm_char",
"lxm_const","lxm_continue","lxm_default","lxm_do","lxm_double","lxm_else","lxm_enum",
"lxm_extern","lxm_float","lxm_for","lxm_goto","lxm_if","lxm_int","lxm_long",
"lxm_register","lxm_return","lxm_short","lxm_signed","lxm_sizeof","lxm_static",
"lxm_struct","lxm_switch","lxm_typedef","lxm_union","lxm_unsigned","lxm_void",
"lxm_volatile","lxm_while","'('","')'","'['","']'","'.'","','","'&'","'*'","'+'",
"'-'","'~'","'!'","'/'","'%'","'<'","'>'","'^'","'|'","'?'","':'","'='","';'",
"'{'","'}'","primary_expression","postfix_expression","argument_expression_list",
"unary_expression","cast_expression","multiplicative_expression","additive_expression",
"shift_expression","relational_expression","equality_expression","and_expression",
"exclusive_or_expression","inclusive_or_expression","logical_and_expression",
"logical_or_expression","conditional_expression","assignment_expression","expression",
"constant_expression","declaration","declaration_specifiers","storage_class_specifier",
"type_specifier","struct_or_union_specifier","struct_declaration_list","type_qualifier",
"specifier_qualifier_list","struct_declaration","struct_declarator_list","struct_declarator",
"init_declarator_list","init_declarator","enum_specifier","enumerator_list",
"enumerator","declarator","direct_declarator","pointer","type_qualifier_list",
"parameter_type_list","parameter_list","parameter_declaration","type_name","abstract_declarator",
"direct_abstract_declarator","initializer","initializer_list","declaration_or_statement",
"declaration_or_statement_list","compound_statement_rest","compound_statement",
"@1","expression_statement","if_statement","for_statement","statement","@2",
"@3","@4","@5","@6","@7","@8","@9","@10","@11","@12","@13","@14","@15","translation_unit",
"external_declaration","function_definition","@16","@17", NULL
};
#endif

static const short yyr1[] = {     0,
    85,    85,    85,    85,    86,    86,    86,    86,    86,    86,
    86,    86,    87,    87,    88,    88,    88,    88,    88,    88,
    88,    88,    88,    88,    88,    89,    89,    90,    90,    90,
    90,    91,    91,    91,    92,    92,    92,    93,    93,    93,
    93,    93,    94,    94,    94,    95,    95,    96,    96,    97,
    97,    98,    98,    99,    99,   100,   100,   101,   101,   101,
   101,   101,   101,   101,   101,   101,   101,   101,   101,   102,
   102,   103,   104,   104,   104,   105,   105,   105,   105,   105,
   105,   106,   106,   106,   106,   106,   107,   107,   107,   107,
   107,   107,   107,   107,   107,   107,   107,   107,   108,   108,
   108,   108,   108,   108,   109,   109,   110,   110,   111,   111,
   111,   111,   112,   112,   113,   113,   114,   114,   114,   115,
   115,   116,   116,   117,   117,   117,   118,   118,   119,   119,
   120,   120,   121,   121,   121,   121,   121,   121,   121,   121,
   122,   122,   122,   122,   123,   123,   124,   124,   125,   125,
   126,   126,   126,   127,   127,   128,   128,   128,   129,   129,
   129,   129,   129,   129,   129,   129,   129,   129,   129,   129,
   129,   130,   130,   130,   131,   131,   132,   132,   132,   133,
   133,   134,   134,   134,   136,   135,   137,   137,   138,   139,
   141,   140,   142,   140,   143,   140,   144,   140,   140,   140,
   140,   140,   140,   140,   145,   140,   146,   147,   140,   148,
   149,   150,   140,   151,   140,   152,   153,   154,   140,   140,
   140,   155,   155,   156,   156,   158,   157,   159,   157
};

static const short yyr2[] = {     0,
     1,     1,     1,     3,     1,     2,     2,     4,     3,     3,
     3,     4,     1,     3,     1,     2,     2,     2,     4,     2,
     2,     2,     2,     2,     2,     1,     4,     1,     3,     3,
     3,     1,     3,     3,     1,     3,     3,     1,     3,     3,
     3,     3,     1,     3,     3,     1,     3,     1,     3,     1,
     3,     1,     3,     1,     3,     1,     5,     1,     3,     3,
     3,     3,     3,     3,     3,     3,     3,     3,     3,     1,
     3,     1,     2,     3,     3,     1,     2,     1,     2,     1,
     2,     1,     1,     1,     1,     1,     1,     1,     1,     1,
     1,     1,     1,     1,     1,     1,     1,     1,     5,     5,
     4,     4,     2,     2,     1,     2,     1,     1,     1,     2,
     1,     2,     3,     2,     1,     3,     1,     2,     3,     1,
     3,     1,     3,     4,     5,     2,     1,     3,     1,     3,
     2,     1,     1,     3,     4,     4,     3,     4,     4,     3,
     1,     2,     2,     3,     1,     2,     1,     3,     1,     3,
     2,     2,     1,     1,     2,     1,     1,     2,     3,     2,
     3,     3,     3,     4,     4,     2,     3,     3,     3,     4,
     4,     1,     3,     4,     1,     3,     1,     1,     2,     1,
     2,     1,     2,     3,     0,     3,     1,     2,     4,     3,
     0,     4,     0,     5,     0,     4,     0,     6,     3,     2,
     2,     1,     1,     2,     0,     5,     0,     0,     7,     0,
     0,     0,    10,     0,     5,     0,     0,     0,     8,     2,
     3,     1,     2,     1,     1,     0,     4,     0,     3
};

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

static const short yydefgoto[] = {   104,
   105,   265,   139,   107,   108,   109,   110,   111,   112,   113,
   114,   115,   116,   117,   140,   160,   233,   119,    24,    85,
    26,    66,    28,    67,    68,    69,    70,   131,   132,    52,
    53,    30,    62,    63,    31,    32,    33,    46,   246,    87,
    88,   163,   247,   151,   142,   206,   236,   237,   238,   239,
   144,   240,   241,   242,   243,   343,   364,   345,   375,   370,
   376,   382,   309,   346,   366,   355,   356,   372,   386,    34,
    35,    36,    80,    55
};

static const short yypact[] = {  1328,
-32768,-32768,-32768,-32768,-32768,-32768,    13,-32768,-32768,-32768,
-32768,-32768,-32768,-32768,-32768,    17,-32768,    19,-32768,-32768,
-32768,    45,   -10,-32768,   650,-32768,-32768,-32768,-32768,-32768,
-32768,   -17,    47,  1142,-32768,-32768,   -54,    36,    39,  1469,
    50,  1469,    74,-32768,-32768,   -10,   105,-32768,-32768,-32768,
-32768,   -26,-32768,    -1,    58,  1401,   890,   -17,-32768,    36,
   -24,   -41,-32768,  1469,   140,-32768,   273,-32768,   869,-32768,
  1469,   357,-32768,-32768,-32768,-32768,    45,-32768,   769,    58,
-32768,-32768,    82,-32768,  1288,   166,   170,-32768,   168,-32768,
-32768,-32768,  1060,  1060,  1086,  1003,-32768,  1098,  1098,  1098,
  1098,  1098,  1098,-32768,   121,-32768,-32768,   -36,   -35,   101,
    41,   183,   171,   174,   175,   232,   -11,-32768,   194,   -33,
  1098,    36,-32768,   561,-32768,-32768,-32768,  1098,-32768,-32768,
    -6,-32768,   179,   591,-32768,-32768,   182,   769,   343,-32768,
-32768,-32768,-32768,   428,-32768,  1201,   930,-32768,    18,-32768,
    62,-32768,  1503,-32768,  1098,-32768,-32768,  1003,-32768,-32768,
    69,  1358,   198,-32768,-32768,-32768,-32768,-32768,-32768,   261,
-32768,-32768,  1016,  1098,   262,  1098,  1098,  1098,  1098,  1098,
  1098,  1098,  1098,  1098,  1098,  1098,  1098,  1098,  1098,  1098,
  1098,  1098,  1098,  1098,-32768,-32768,-32768,-32768,-32768,-32768,
    23,-32768,  1098,-32768,-32768,    53,  1098,  1098,  1098,  1098,
  1098,  1098,  1098,  1098,  1098,  1098,  1098,   184,   187,   188,
  1098,   189,   195,-32768,   208,   270,   218,   795,   219,   220,
-32768,-32768,    -5,-32768,   650,-32768,   500,-32768,-32768,-32768,
   725,   818,-32768,   221,-32768,   222,   223,   226,-32768,   228,
    62,  1435,   962,-32768,-32768,   225,-32768,  1098,  1248,   117,
-32768,  1098,-32768,-32768,    76,-32768,   124,-32768,-32768,-32768,
-32768,   -36,   -36,   -35,   -35,   101,   101,   101,   101,    41,
    41,   183,   171,   174,   175,   232,   -39,-32768,-32768,   653,
-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
-32768,-32768,-32768,-32768,-32768,   202,-32768,-32768,-32768,   818,
   211,  1098,-32768,    44,  1098,  1098,-32768,   141,-32768,-32768,
   256,   233,-32768,-32768,-32768,-32768,-32768,   234,-32768,   235,
   236,-32768,   237,-32768,-32768,-32768,-32768,  1098,-32768,  1098,
-32768,-32768,   725,-32768,   725,-32768,-32768,-32768,    77,-32768,
   109,   115,-32768,-32768,   241,-32768,-32768,-32768,-32768,-32768,
-32768,-32768,-32768,   725,-32768,   725,-32768,-32768,-32768,   725,
   725,  1098,-32768,   239,   725,-32768,-32768,-32768,   123,   243,
-32768,   725,-32768,  1098,-32768,   725,   134,-32768,   227,-32768,
   308,-32768
};

static const short yypgoto[] = {-32768,
-32768,-32768,   -29,   -90,    55,    63,    57,    59,   126,   127,
   122,   128,   132,-32768,   -38,    -4,   -96,   -27,  -130,     2,
   -18,   193,-32768,   131,   145,   -65,   -20,-32768,   120,-32768,
   247,-32768,   267,   206,    20,   -28,   -22,-32768,   -53,-32768,
   163,   177,   -67,  -145,  -123,-32768,    96,-32768,-32768,   -25,
-32768,  -225,-32768,-32768,  -114,-32768,-32768,-32768,-32768,-32768,
-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
   302,-32768,-32768,-32768
};


#define	YYLAST		1562


static const short yytable[] = {   161,
    45,    25,    86,   251,    58,   193,    49,   164,   165,   166,
   167,   168,   169,   234,   205,    37,   322,   150,   118,    39,
     1,    41,     5,    75,   122,     1,   258,   106,    60,    82,
   162,   176,   122,   179,   180,    25,   177,   178,    61,    77,
   340,    43,   123,    56,    54,    57,   127,     1,    21,     1,
   196,   127,   183,   184,   143,    78,   121,    23,   161,   201,
   258,   161,   149,   156,   157,   159,    49,   194,   106,   106,
   106,   106,   106,   106,   141,   202,   317,   267,   146,    79,
   147,  -226,   118,    22,   347,   269,   270,   271,   133,   118,
    23,   106,   162,   197,   261,    38,   137,   287,   106,    40,
   200,    42,   128,   127,   148,    22,   234,    22,   118,   258,
   181,   182,    23,   127,   251,   185,   186,   106,   290,   250,
    58,    64,   252,   149,   253,   350,   321,   170,   171,   172,
   257,   314,    71,   141,   258,    73,   291,   337,   367,   260,
    81,   338,   258,   145,    29,   235,   106,   106,   106,   106,
   106,   106,   106,   106,   106,   106,   106,   106,   106,   106,
   106,   106,   106,   106,   118,    43,   342,    44,   266,    51,
   368,   336,    72,   106,   258,   289,   369,   259,    29,   147,
   258,   173,   118,   174,   383,   175,    76,   339,   258,   258,
    74,   106,    27,   306,   124,   389,   187,   188,   330,   258,
    29,   134,   292,   293,   294,   295,   296,   297,   298,   299,
   300,   301,   302,   130,   118,   349,    49,    50,   351,   352,
   133,   125,   303,   106,   353,   333,    27,   152,   363,    51,
   365,   154,   106,   272,   273,   153,   260,   189,   235,   276,
   277,   278,   279,   274,   275,   280,   281,   192,    27,   373,
   190,   374,   191,   335,   137,   377,   378,   195,   203,   262,
   381,   129,    79,   263,   268,   303,   304,   385,   310,   305,
   307,   388,   311,    65,   308,   379,     2,    50,   312,   315,
   316,   344,   323,   324,   325,   141,   334,   387,    29,   326,
    29,   327,   348,   354,  -214,   357,   358,    29,   380,   359,
   360,   362,   371,   384,     4,     5,   130,   392,   390,     6,
   106,     7,   284,     9,   282,   255,   283,    10,    11,   285,
   288,    13,    14,   136,   286,    16,   120,   198,    18,    19,
    20,    21,   320,   361,   256,    59,    27,     0,    27,     0,
     0,     0,     0,     0,     0,    27,     0,     0,     0,     0,
     0,     0,     0,     0,   129,     0,   126,    65,     0,     0,
     2,   207,   208,   209,   210,   211,   212,   213,   214,   215,
   216,     0,     0,     0,     0,     0,     0,     0,     0,    51,
     0,    29,     0,     0,     0,     0,     0,     0,     4,     5,
     0,     0,     0,     6,     0,     7,    29,     9,     0,     0,
     0,    10,    11,    29,     0,    13,    14,     0,     0,    16,
     0,     0,    18,    19,    20,    21,     0,     0,     0,     0,
     0,     0,     0,   217,     0,     0,     0,    50,   218,    27,
   219,     2,    91,    92,     0,    93,    94,     0,     0,     0,
   135,     0,     0,     0,    27,     0,     0,     0,     0,     0,
     0,    27,     0,     0,     0,     0,     3,   220,   221,     4,
     5,   222,   223,   224,     6,     0,     7,     8,     9,   225,
   226,   227,    10,    11,    12,   228,    13,    14,    95,    15,
    16,   229,    17,    18,    19,    20,    21,   230,    96,     0,
     0,     0,     0,     0,    98,    99,   100,   101,   102,   103,
   318,     0,   219,     2,    91,    92,     0,    93,    94,   231,
    81,   232,     0,     0,     0,     0,     0,     0,     0,     0,
     0,     0,     0,     0,     0,     0,     0,     0,     3,   220,
   221,     4,     5,   222,   223,   224,     6,     0,     7,     8,
     9,   225,   226,   227,    10,    11,    12,   228,    13,    14,
    95,    15,    16,   229,    17,    18,    19,    20,    21,   230,
    96,    65,     0,     0,     2,     0,    98,    99,   100,   101,
   102,   103,     0,     0,     0,     0,     0,     0,     0,     0,
     0,   231,    81,   319,     0,     0,     0,     0,     0,     0,
     0,    65,     4,     5,     2,     0,     0,     6,     0,     7,
     0,     9,     0,     0,     0,    10,    11,     0,     0,    13,
    14,     0,     0,    16,     0,     0,    18,    19,    20,    21,
     0,     0,     4,     5,     0,     0,     0,     6,     0,     7,
     0,     9,     0,     0,     0,    10,    11,     0,     0,    13,
    14,     0,     0,    16,   199,     0,    18,    19,    20,    21,
    47,     0,     1,     2,     0,    90,     0,    91,    92,     0,
    93,    94,     0,     0,     0,     0,     0,     0,     0,     0,
     0,     0,     0,     0,   204,     0,     0,     0,     3,     0,
     0,     4,     5,     0,     0,     0,     6,     0,     7,     8,
     9,     0,     0,     0,    10,    11,    12,     0,    13,    14,
     0,    15,    16,    95,    17,    18,    19,    20,    21,     0,
    22,     0,     0,    96,     0,     0,     0,    23,     0,    98,
    99,   100,   101,   102,   103,     0,     0,   219,     0,    91,
    92,    48,    93,    94,     0,   138,   341,     0,     0,     0,
     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     0,     0,     0,     0,   220,   221,     0,     0,   222,   223,
   224,     0,     0,     0,     0,     0,   225,   226,   227,     0,
     0,    90,   228,    91,    92,    95,    93,    94,   229,     0,
     0,     0,     0,     0,   230,    96,     0,     0,     0,     0,
     0,    98,    99,   100,   101,   102,   103,    90,     0,    91,
    92,     0,    93,    94,     0,     0,   231,    81,     0,     0,
     0,     0,     0,     0,     0,     0,     0,     0,     0,    95,
    90,     0,    91,    92,     0,    93,    94,     0,     0,    96,
     0,     0,     0,     0,     0,    98,    99,   100,   101,   102,
   103,     0,     0,     0,     0,    95,     0,     0,     0,     0,
     0,   138,     0,     0,     0,    96,     0,     0,     0,     0,
     0,    98,    99,   100,   101,   102,   103,     0,    95,     0,
     0,     1,     2,     0,     0,     0,   313,     0,    96,     0,
     0,     0,     0,     0,    98,    99,   100,   101,   102,   103,
    89,     0,    90,     0,    91,    92,     0,    93,    94,   231,
     4,     5,     0,     0,     0,     6,     0,     7,     0,     9,
     0,     0,     0,    10,    11,     0,     0,    13,    14,     0,
     0,    16,     0,     0,    18,    19,    20,    21,     0,    22,
   248,     0,    90,     0,    91,    92,    23,    93,    94,     0,
    95,     0,     0,     0,     0,     0,     0,     0,   128,     0,
    96,     0,     0,    97,     0,     0,    98,    99,   100,   101,
   102,   103,   331,     0,    90,     0,    91,    92,     0,    93,
    94,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    95,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    96,     0,     0,   249,     0,     0,    98,    99,   100,   101,
   102,   103,     0,     0,     0,    90,     2,    91,    92,     0,
    93,    94,    95,     0,     0,     0,     0,     0,    90,     0,
    91,    92,    96,    93,    94,   332,     0,     0,    98,    99,
   100,   101,   102,   103,     4,     5,     0,     0,     0,     6,
     0,     7,     0,     9,     0,     0,     0,    10,    11,     0,
     0,    13,    14,    95,     0,    16,     0,     0,    18,    19,
    20,    21,    90,    96,    91,    92,    95,    93,    94,    98,
    99,   100,   101,   102,   103,     0,    96,   264,     0,     0,
     0,     0,    98,    99,   100,   101,   102,   103,    90,     0,
    91,    92,     0,    93,    94,     0,     0,     0,     0,     0,
    90,     0,    91,    92,     0,    93,    94,     0,     0,     0,
    95,     0,     0,     0,     0,     0,     0,     0,     0,     0,
   155,     0,     0,     0,     0,     0,    98,    99,   100,   101,
   102,   103,     0,     0,     0,     0,    95,     0,     0,     0,
     0,   391,     0,     0,     1,     2,   158,     0,    95,     0,
     0,     0,    98,    99,   100,   101,   102,   103,    96,     0,
     0,     0,     0,     0,    98,    99,   100,   101,   102,   103,
     3,     0,     0,     4,     5,     0,     0,     0,     6,     0,
     7,     8,     9,     0,     0,     0,    10,    11,    12,     0,
    13,    14,     0,    15,    16,     0,    17,    18,    19,    20,
    21,   244,    22,     1,     2,     0,     0,     0,     0,    23,
     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     0,     0,     0,     0,     0,     0,     0,     0,     0,     3,
     0,     0,     4,     5,     0,     0,     0,     6,     0,     7,
     8,     9,     0,     0,     0,    10,    11,    12,   244,    13,
    14,     2,    15,    16,     0,    17,    18,    19,    20,    21,
     0,   146,   245,   147,     0,     0,     0,     0,    23,     0,
     0,     0,     0,     0,     0,     0,     3,     0,     0,     4,
     5,     0,     0,     0,     6,     0,     7,     8,     9,     0,
     1,     2,    10,    11,    12,     0,    13,    14,     0,    15,
    16,     0,    17,    18,    19,    20,    21,     0,   259,   245,
   147,     0,     0,     0,     0,    23,     3,     0,     0,     4,
     5,     0,     0,     0,     6,     0,     7,     8,     9,     0,
     1,     2,    10,    11,    12,     0,    13,    14,     0,    15,
    16,     0,    17,    18,    19,    20,    21,     0,   146,     0,
   147,     0,     0,     0,     0,    23,     3,     0,     0,     4,
     5,     2,     0,     0,     6,     0,     7,     8,     9,     0,
     0,     0,    10,    11,    12,     0,    13,    14,     0,    15,
    16,     0,    17,    18,    19,    20,    21,     0,    22,     4,
     5,     0,     0,     0,     6,    23,     7,     0,     9,     0,
     0,    83,    10,    11,     2,     0,    13,    14,     0,     0,
    16,     0,     0,    18,    19,    20,    21,     0,   259,     0,
   147,     0,     0,     0,     0,    23,     0,     0,     0,     3,
     0,     0,     4,     5,     0,   328,     0,     6,     2,     7,
     8,     9,     0,     0,     0,    10,    11,    12,     0,    13,
    14,     0,    15,    16,     0,    17,    18,    19,    20,    21,
     0,     0,    84,     3,     0,     0,     4,     5,     0,    65,
     0,     6,     2,     7,     8,     9,     0,     0,     0,    10,
    11,    12,     0,    13,    14,     0,    15,    16,     0,    17,
    18,    19,    20,    21,     0,     0,   329,     0,     0,     0,
     4,     5,     0,     0,     0,     6,     2,     7,     0,     9,
     0,     0,     0,    10,    11,     0,     0,    13,    14,     0,
   254,    16,     0,     0,    18,    19,    20,    21,     0,     0,
     0,     3,     0,     0,     4,     5,     0,     0,     0,     6,
     0,     7,     8,     9,     0,     0,     0,    10,    11,    12,
     0,    13,    14,     0,    15,    16,     0,    17,    18,    19,
    20,    21
};

static const short yycheck[] = {    96,
    23,     0,    56,   149,    33,    17,    25,    98,    99,   100,
   101,   102,   103,   144,   138,     3,   242,    85,    57,     3,
     3,     3,    33,    46,    66,     3,    66,    57,    83,    55,
    96,    68,    66,    69,    70,    34,    73,    74,     3,    66,
    80,    22,    84,    61,    25,    63,    67,     3,    59,     3,
    84,    72,    12,    13,    80,    82,    81,    68,   155,    66,
    66,   158,    85,    93,    94,    95,    85,    79,    98,    99,
   100,   101,   102,   103,    79,    82,    82,   174,    61,    81,
    63,    83,   121,    61,   310,   176,   177,   178,    69,   128,
    68,   121,   158,   121,   162,    83,    77,   194,   128,    83,
   128,    83,    80,   124,    85,    61,   237,    61,   147,    66,
    10,    11,    68,   134,   260,    75,    76,   147,    66,   147,
   149,    83,    61,   146,    63,    82,   241,     7,     8,     9,
    62,   228,    83,   138,    66,    62,    84,    62,    62,   162,
    83,    66,    66,    62,     0,   144,   176,   177,   178,   179,
   180,   181,   182,   183,   184,   185,   186,   187,   188,   189,
   190,   191,   192,   193,   203,   146,   290,    23,   173,    25,
    62,   262,    42,   203,    66,   203,    62,    61,    34,    63,
    66,    61,   221,    63,    62,    65,    82,    64,    66,    66,
    46,   221,     0,   221,    64,    62,    14,    15,   252,    66,
    56,    71,   207,   208,   209,   210,   211,   212,   213,   214,
   215,   216,   217,    69,   253,   312,   235,    25,   315,   316,
   201,    82,    82,   253,    84,   253,    34,    62,   343,    85,
   345,    64,   262,   179,   180,    66,   259,    67,   237,   183,
   184,   185,   186,   181,   182,   187,   188,    16,    56,   364,
    77,   366,    78,   258,   235,   370,   371,    64,    80,    62,
   375,    69,    81,     3,     3,    82,    80,   382,    61,    82,
    82,   386,     3,     1,    80,   372,     4,    85,    61,    61,
    61,    80,    62,    62,    62,   290,    62,   384,   144,    64,
   146,    64,    82,    38,    62,    62,    62,   153,    60,    64,
    64,   340,    62,    61,    32,    33,   162,     0,    82,    37,
   340,    39,   191,    41,   189,   153,   190,    45,    46,   192,
   201,    49,    50,    77,   193,    53,    60,   122,    56,    57,
    58,    59,   237,   338,   158,    34,   144,    -1,   146,    -1,
    -1,    -1,    -1,    -1,    -1,   153,    -1,    -1,    -1,    -1,
    -1,    -1,    -1,    -1,   162,    -1,    84,     1,    -1,    -1,
     4,    19,    20,    21,    22,    23,    24,    25,    26,    27,
    28,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   235,
    -1,   237,    -1,    -1,    -1,    -1,    -1,    -1,    32,    33,
    -1,    -1,    -1,    37,    -1,    39,   252,    41,    -1,    -1,
    -1,    45,    46,   259,    -1,    49,    50,    -1,    -1,    53,
    -1,    -1,    56,    57,    58,    59,    -1,    -1,    -1,    -1,
    -1,    -1,    -1,    81,    -1,    -1,    -1,   235,     1,   237,
     3,     4,     5,     6,    -1,     8,     9,    -1,    -1,    -1,
    84,    -1,    -1,    -1,   252,    -1,    -1,    -1,    -1,    -1,
    -1,   259,    -1,    -1,    -1,    -1,    29,    30,    31,    32,
    33,    34,    35,    36,    37,    -1,    39,    40,    41,    42,
    43,    44,    45,    46,    47,    48,    49,    50,    51,    52,
    53,    54,    55,    56,    57,    58,    59,    60,    61,    -1,
    -1,    -1,    -1,    -1,    67,    68,    69,    70,    71,    72,
     1,    -1,     3,     4,     5,     6,    -1,     8,     9,    82,
    83,    84,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    29,    30,
    31,    32,    33,    34,    35,    36,    37,    -1,    39,    40,
    41,    42,    43,    44,    45,    46,    47,    48,    49,    50,
    51,    52,    53,    54,    55,    56,    57,    58,    59,    60,
    61,     1,    -1,    -1,     4,    -1,    67,    68,    69,    70,
    71,    72,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    -1,    82,    83,    84,    -1,    -1,    -1,    -1,    -1,    -1,
    -1,     1,    32,    33,     4,    -1,    -1,    37,    -1,    39,
    -1,    41,    -1,    -1,    -1,    45,    46,    -1,    -1,    49,
    50,    -1,    -1,    53,    -1,    -1,    56,    57,    58,    59,
    -1,    -1,    32,    33,    -1,    -1,    -1,    37,    -1,    39,
    -1,    41,    -1,    -1,    -1,    45,    46,    -1,    -1,    49,
    50,    -1,    -1,    53,    84,    -1,    56,    57,    58,    59,
     1,    -1,     3,     4,    -1,     3,    -1,     5,     6,    -1,
     8,     9,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    -1,    -1,    -1,    -1,    84,    -1,    -1,    -1,    29,    -1,
    -1,    32,    33,    -1,    -1,    -1,    37,    -1,    39,    40,
    41,    -1,    -1,    -1,    45,    46,    47,    -1,    49,    50,
    -1,    52,    53,    51,    55,    56,    57,    58,    59,    -1,
    61,    -1,    -1,    61,    -1,    -1,    -1,    68,    -1,    67,
    68,    69,    70,    71,    72,    -1,    -1,     3,    -1,     5,
     6,    82,     8,     9,    -1,    83,    84,    -1,    -1,    -1,
    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    -1,    -1,    -1,    -1,    30,    31,    -1,    -1,    34,    35,
    36,    -1,    -1,    -1,    -1,    -1,    42,    43,    44,    -1,
    -1,     3,    48,     5,     6,    51,     8,     9,    54,    -1,
    -1,    -1,    -1,    -1,    60,    61,    -1,    -1,    -1,    -1,
    -1,    67,    68,    69,    70,    71,    72,     3,    -1,     5,
     6,    -1,     8,     9,    -1,    -1,    82,    83,    -1,    -1,
    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    51,
     3,    -1,     5,     6,    -1,     8,     9,    -1,    -1,    61,
    -1,    -1,    -1,    -1,    -1,    67,    68,    69,    70,    71,
    72,    -1,    -1,    -1,    -1,    51,    -1,    -1,    -1,    -1,
    -1,    83,    -1,    -1,    -1,    61,    -1,    -1,    -1,    -1,
    -1,    67,    68,    69,    70,    71,    72,    -1,    51,    -1,
    -1,     3,     4,    -1,    -1,    -1,    82,    -1,    61,    -1,
    -1,    -1,    -1,    -1,    67,    68,    69,    70,    71,    72,
     1,    -1,     3,    -1,     5,     6,    -1,     8,     9,    82,
    32,    33,    -1,    -1,    -1,    37,    -1,    39,    -1,    41,
    -1,    -1,    -1,    45,    46,    -1,    -1,    49,    50,    -1,
    -1,    53,    -1,    -1,    56,    57,    58,    59,    -1,    61,
     1,    -1,     3,    -1,     5,     6,    68,     8,     9,    -1,
    51,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    80,    -1,
    61,    -1,    -1,    64,    -1,    -1,    67,    68,    69,    70,
    71,    72,     1,    -1,     3,    -1,     5,     6,    -1,     8,
     9,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    51,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    61,    -1,    -1,    64,    -1,    -1,    67,    68,    69,    70,
    71,    72,    -1,    -1,    -1,     3,     4,     5,     6,    -1,
     8,     9,    51,    -1,    -1,    -1,    -1,    -1,     3,    -1,
     5,     6,    61,     8,     9,    64,    -1,    -1,    67,    68,
    69,    70,    71,    72,    32,    33,    -1,    -1,    -1,    37,
    -1,    39,    -1,    41,    -1,    -1,    -1,    45,    46,    -1,
    -1,    49,    50,    51,    -1,    53,    -1,    -1,    56,    57,
    58,    59,     3,    61,     5,     6,    51,     8,     9,    67,
    68,    69,    70,    71,    72,    -1,    61,    62,    -1,    -1,
    -1,    -1,    67,    68,    69,    70,    71,    72,     3,    -1,
     5,     6,    -1,     8,     9,    -1,    -1,    -1,    -1,    -1,
     3,    -1,     5,     6,    -1,     8,     9,    -1,    -1,    -1,
    51,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    61,    -1,    -1,    -1,    -1,    -1,    67,    68,    69,    70,
    71,    72,    -1,    -1,    -1,    -1,    51,    -1,    -1,    -1,
    -1,     0,    -1,    -1,     3,     4,    61,    -1,    51,    -1,
    -1,    -1,    67,    68,    69,    70,    71,    72,    61,    -1,
    -1,    -1,    -1,    -1,    67,    68,    69,    70,    71,    72,
    29,    -1,    -1,    32,    33,    -1,    -1,    -1,    37,    -1,
    39,    40,    41,    -1,    -1,    -1,    45,    46,    47,    -1,
    49,    50,    -1,    52,    53,    -1,    55,    56,    57,    58,
    59,     1,    61,     3,     4,    -1,    -1,    -1,    -1,    68,
    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    29,
    -1,    -1,    32,    33,    -1,    -1,    -1,    37,    -1,    39,
    40,    41,    -1,    -1,    -1,    45,    46,    47,     1,    49,
    50,     4,    52,    53,    -1,    55,    56,    57,    58,    59,
    -1,    61,    62,    63,    -1,    -1,    -1,    -1,    68,    -1,
    -1,    -1,    -1,    -1,    -1,    -1,    29,    -1,    -1,    32,
    33,    -1,    -1,    -1,    37,    -1,    39,    40,    41,    -1,
     3,     4,    45,    46,    47,    -1,    49,    50,    -1,    52,
    53,    -1,    55,    56,    57,    58,    59,    -1,    61,    62,
    63,    -1,    -1,    -1,    -1,    68,    29,    -1,    -1,    32,
    33,    -1,    -1,    -1,    37,    -1,    39,    40,    41,    -1,
     3,     4,    45,    46,    47,    -1,    49,    50,    -1,    52,
    53,    -1,    55,    56,    57,    58,    59,    -1,    61,    -1,
    63,    -1,    -1,    -1,    -1,    68,    29,    -1,    -1,    32,
    33,     4,    -1,    -1,    37,    -1,    39,    40,    41,    -1,
    -1,    -1,    45,    46,    47,    -1,    49,    50,    -1,    52,
    53,    -1,    55,    56,    57,    58,    59,    -1,    61,    32,
    33,    -1,    -1,    -1,    37,    68,    39,    -1,    41,    -1,
    -1,     1,    45,    46,     4,    -1,    49,    50,    -1,    -1,
    53,    -1,    -1,    56,    57,    58,    59,    -1,    61,    -1,
    63,    -1,    -1,    -1,    -1,    68,    -1,    -1,    -1,    29,
    -1,    -1,    32,    33,    -1,     1,    -1,    37,     4,    39,
    40,    41,    -1,    -1,    -1,    45,    46,    47,    -1,    49,
    50,    -1,    52,    53,    -1,    55,    56,    57,    58,    59,
    -1,    -1,    62,    29,    -1,    -1,    32,    33,    -1,     1,
    -1,    37,     4,    39,    40,    41,    -1,    -1,    -1,    45,
    46,    47,    -1,    49,    50,    -1,    52,    53,    -1,    55,
    56,    57,    58,    59,    -1,    -1,    62,    -1,    -1,    -1,
    32,    33,    -1,    -1,    -1,    37,     4,    39,    -1,    41,
    -1,    -1,    -1,    45,    46,    -1,    -1,    49,    50,    -1,
    18,    53,    -1,    -1,    56,    57,    58,    59,    -1,    -1,
    -1,    29,    -1,    -1,    32,    33,    -1,    -1,    -1,    37,
    -1,    39,    40,    41,    -1,    -1,    -1,    45,    46,    47,
    -1,    49,    50,    -1,    52,    53,    -1,    55,    56,    57,
    58,    59
};

#define YYSTACK_ALLOC malloc


/* 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 defined(YYMAXDEPTH) && YYMAXDEPTH == 0
#undef YYMAXDEPTH
#endif

#ifndef YYMAXDEPTH
#define YYMAXDEPTH 10000
#endif


#if YYDEBUG != 0
#define YYPRINTF(params)         printf params;
#define YYMESSAGE(params)        if (yydebug) printf params;
#else
#define YYPRINTF(params)
#define YYMESSAGE(params)
#endif



int yyparse(void)
{
   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;

   YYMESSAGE(("Starting parse\n"));

   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 = (short) 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) );
      memcpy(yyss, yyss1, size * sizeof(*yyssp) );
      yyvs  = (YYSTYPE *) YYSTACK_ALLOC( yystacksize * sizeof(*yyvsp) );
      memcpy(yyvs, yyvs1, size * sizeof(*yyvsp) );

#ifdef YYLSP_NEEDED
      yyls  = (YYLTYPE *) YYSTACK_ALLOC( yystacksize * sizeof(*yylsp) );
      memcpy(yyls, yyls1, size * sizeof(*yylsp) );
#endif


#endif /* no yyoverflow */


      yyssp = yyss + size - 1;
      yyvsp = yyvs + size - 1;

#ifdef YYLSP_NEEDED
      yylsp = yyls + size - 1;
#endif

      YYMESSAGE(("Stack size increased to %d\n", yystacksize));
      if (yyssp >= yyss + yystacksize - 1) YYABORT;
   }

   YYMESSAGE(("Entering state %d\n", yystate));
   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) {
      YYMESSAGE(("Reading a token: "));
      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        */

      YYMESSAGE(("Now at end of input.\n"));
   }
   else {
      yychar1 = YYTRANSLATE(yychar);
      YYMESSAGE(("Next token is %d (%s)\n", yychar, yytname[yychar1] ));
   }

   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.
    */

   YYMESSAGE(("Shifting token %d (%s), ", yychar, yytname[yychar1] ));

   /*
    * 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;

      YYPRINTF(("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++)
         YYPRINTF(("%s ", yytname[yyrhs[i]] ));

         YYPRINTF((" -> %s\n", yytname[yyr1[yyn]] ));
    }
#endif


  switch (yyn) {

case 1:
{ yyval.expr = expr_create_from_identifier(yyvsp[0].sym); ;
    break;}
case 4:
{ yyval.expr = yyvsp[-1].expr; ;
    break;}
case 6:
{ yyval.expr = expr_create_unary(yyvsp[-1].expr, op_post_increment); ;
    break;}
case 7:
{ yyval.expr = expr_create_unary(yyvsp[-1].expr, op_post_decrement); ;
    break;}
case 8:
{ yyval.expr = expr_create_array_indexing(yyvsp[-3].expr, yyvsp[-1].expr); ;
    break;}
case 9:
{ yyval.expr = expr_create_direct_field_access(yyvsp[-2].expr, yyvsp[0].sym); ;
    break;}
case 10:
{ yyval.expr = expr_create_indirect_field_access(yyvsp[-2].expr, yyvsp[0].sym); ;
    break;}
case 11:
{ yyval.expr = expr_create_function_call(yyvsp[-2].expr, NULL); ;
    break;}
case 12:
{ yyval.expr = expr_create_function_call(yyvsp[-3].expr, yyvsp[-1].exprlist); ;
    break;}
case 13:
{ yyval.exprlist = expr_create_expression_list(yyvsp[0].expr); ;
    break;}
case 14:
{ yyval.exprlist = expr_add_expression_to_list(yyvsp[-2].exprlist, yyvsp[0].expr); ;
    break;}
case 16:
{ yyval.expr = expr_create_unary(yyvsp[0].expr, op_increment); ;
    break;}
case 17:
{ yyval.expr = expr_create_unary(yyvsp[0].expr, op_decrement); ;
    break;}
case 18:
{ yyval.expr = expr_create_sizeof(yyvsp[0].expr); ;
    break;}
case 19:
{ yyval.expr = expr_create_sizeof_type(yyvsp[-1].type); ;
    break;}
case 20:
{ yyval.expr = expr_get_address(yyvsp[0].expr); ;
    break;}
case 21:
{ yyval.expr = expr_dereference(yyvsp[0].expr); ;
    break;}
case 22:
{ yyval.expr = yyvsp[0].expr; ;
    break;}
case 23:
{ yyval.expr = expr_create_unary(yyvsp[0].expr, op_neg); ;
    break;}
case 24:
{ yyval.expr = expr_create_unary(yyvsp[0].expr, op_bitnot); ;
    break;}
case 25:
{ yyval.expr = expr_create_unary(yyvsp[0].expr, op_not); ;
    break;}
case 27:
{ yyval.expr = expr_create_type_cast(yyvsp[0].expr, yyvsp[-2].type); ;
    break;}
case 29:
{ yyval.expr = expr_create_binary(yyvsp[-2].expr, yyvsp[0].expr, op_mul); ;
    break;}
case 30:
{ yyval.expr = expr_create_binary(yyvsp[-2].expr, yyvsp[0].expr, op_div); ;
    break;}
case 31:
{ yyval.expr = expr_create_binary(yyvsp[-2].expr, yyvsp[0].expr, op_mod); ;
    break;}
case 33:
{ yyval.expr = expr_create_binary(yyvsp[-2].expr, yyvsp[0].expr, op_add); ;
    break;}
case 34:
{ yyval.expr = expr_create_binary(yyvsp[-2].expr, yyvsp[0].expr, op_sub); ;
    break;}
case 36:
{ yyval.expr = expr_create_binary(yyvsp[-2].expr, yyvsp[0].expr, op_shl); ;
    break;}
case 37:
{ yyval.expr = expr_create_binary(yyvsp[-2].expr, yyvsp[0].expr, op_shr); ;
    break;}
case 39:
{ yyval.expr = expr_create_binary(yyvsp[-2].expr, yyvsp[0].expr, op_less_then); ;
    break;}
case 40:
{ yyval.expr = expr_create_binary(yyvsp[-2].expr, yyvsp[0].expr, op_greater_then); ;
    break;}
case 41:
{ yyval.expr = expr_create_binary(yyvsp[-2].expr, yyvsp[0].expr, op_less_equal); ;
    break;}
case 42:
{ yyval.expr = expr_create_binary(yyvsp[-2].expr, yyvsp[0].expr, op_greater_equal); ;
    break;}
case 44:
{ yyval.expr = expr_create_binary(yyvsp[-2].expr, yyvsp[0].expr, op_equal); ;
    break;}
case 45:
{ yyval.expr = expr_create_binary(yyvsp[-2].expr, yyvsp[0].expr, op_non_equal); ;
    break;}
case 47:
{ yyval.expr = expr_create_binary(yyvsp[-2].expr, yyvsp[0].expr, op_and); ;
    break;}
case 49:
{ yyval.expr = expr_create_binary(yyvsp[-2].expr, yyvsp[0].expr, op_xor); ;
    break;}
case 51:
{ yyval.expr = expr_create_binary(yyvsp[-2].expr, yyvsp[0].expr, op_or); ;
    break;}
case 53:
{ yyval.expr = expr_create_binary(yyvsp[-2].expr, yyvsp[0].expr, op_logical_and); ;
    break;}
case 55:
{ yyval.expr = expr_create_binary(yyvsp[-2].expr, yyvsp[0].expr, op_logical_or); ;
    break;}
case 57:
{ yyval.expr = expr_create_ternary(yyvsp[-4].expr, yyvsp[-2].expr, yyvsp[0].expr); ;
    break;}
case 59:
{ yyval.expr = expr_create_binary(yyvsp[-2].expr, yyvsp[0].expr, op_assign); ;
    break;}
case 60:
{ yyval.expr = expr_create_binary(yyvsp[-2].expr, yyvsp[0].expr, op_add_assign); ;
    break;}
case 61:
{ yyval.expr = expr_create_binary(yyvsp[-2].expr, yyvsp[0].expr, op_sub_assign); ;
    break;}
case 62:
{ yyval.expr = expr_create_binary(yyvsp[-2].expr, yyvsp[0].expr, op_mul_assign); ;
    break;}
case 63:
{ yyval.expr = expr_create_binary(yyvsp[-2].expr, yyvsp[0].expr, op_div_assign); ;
    break;}
case 64:
{ yyval.expr = expr_create_binary(yyvsp[-2].expr, yyvsp[0].expr, op_mod_assign); ;
    break;}
case 65:
{ yyval.expr = expr_create_binary(yyvsp[-2].expr, yyvsp[0].expr, op_shl_assign); ;
    break;}
case 66:
{ yyval.expr = expr_create_binary(yyvsp[-2].expr, yyvsp[0].expr, op_shr_assign); ;
    break;}
case 67:
{ yyval.expr = expr_create_binary(yyvsp[-2].expr, yyvsp[0].expr, op_and_assign); ;
    break;}
case 68:
{ yyval.expr = expr_create_binary(yyvsp[-2].expr, yyvsp[0].expr, op_xor_assign); ;
    break;}
case 69:
{ yyval.expr = expr_create_binary(yyvsp[-2].expr, yyvsp[0].expr, op_or_assign); ;
    break;}
case 71:
{ unit_push_expression(yyvsp[-2].expr); yyval.expr = yyvsp[0].expr; ;
    break;}
case 73:
{ unit_handle_variable_declarations(yyvsp[-1].spec, NULL); ;
    break;}
case 74:
{ unit_handle_variable_declarations(yyvsp[-2].spec, yyvsp[-1].symlist); ;
    break;}
case 75:
{ aux_error("invalid variable or type declaration"); yyerrok; ;
    break;}
case 77:
{ yyval.spec = parser_add_storage_specifiers(yyvsp[-1].spec, yyvsp[0].spec); ;
    break;}
case 79:
{ yyval.spec = parser_add_type_specifiers(yyvsp[-1].spec, yyvsp[0].spec); ;
    break;}
case 81:
{ yyval.spec = parser_add_qualifiers(yyvsp[-1].spec, yyvsp[0].spec); ;
    break;}
case 82:
{ yyval.spec.spec_typedef = 1; ;
    break;}
case 83:
{ yyval.spec.spec_extern = 1; ;
    break;}
case 84:
{ yyval.spec.spec_static = 1; ;
    break;}
case 85:
{ yyval.spec.spec_auto = 1; ;
    break;}
case 86:
{ yyval.spec.spec_register = 1; ;
    break;}
case 87:
{ yyval.spec.spec_void = 1; ;
    break;}
case 88:
{ yyval.spec.spec_char = 1; ;
    break;}
case 89:
{ yyval.spec.spec_short = 1; ;
    break;}
case 90:
{ yyval.spec.spec_int = 1; ;
    break;}
case 91:
{ yyval.spec.spec_long = 1; ;
    break;}
case 92:
{ yyval.spec.spec_float = 1; ;
    break;}
case 93:
{ yyval.spec.spec_double = 1; ;
    break;}
case 94:
{ yyval.spec.spec_signed = 1; ;
    break;}
case 95:
{ yyval.spec.spec_unsigned = 1; ;
    break;}
case 96:
{ yyval.spec.spec_struct_union = 1; yyval.spec.spec_compound_type = yyvsp[0].type; ;
    break;}
case 97:
{ yyval.spec.spec_enum = 1; yyval.spec.spec_compound_type = yyvsp[0].type; ;
    break;}
case 98:
{ yyval.spec.spec_typedefed_name = 1; yyval.spec.spec_compound_type = yyvsp[0].type; ;
    break;}
case 99:
{ yyval.type = type_create_complete_structure(yyvsp[-3].sym, yyvsp[-1].fields); ;
    break;}
case 100:
{ yyval.type = type_create_complete_union(yyvsp[-3].sym, yyvsp[-1].fields); ;
    break;}
case 101:
{ yyval.type = type_create_complete_structure(NULL, yyvsp[-1].fields); ;
    break;}
case 102:
{ yyval.type = type_create_complete_union(NULL, yyvsp[-1].fields); ;
    break;}
case 103:
{ yyval.type = type_create_incomplete_structure(yyvsp[0].sym); ;
    break;}
case 104:
{ yyval.type = type_create_incomplete_union(yyvsp[0].sym); ;
    break;}
case 106:
{ yyval.fields = type_add_fields_to_list(yyvsp[-1].fields, yyvsp[0].fields); ;
    break;}
case 107:
{ yyval.spec.spec_const = 1; ;
    break;}
case 108:
{ yyval.spec.spec_volatile = 1; ;
    break;}
case 110:
{ yyval.spec = parser_add_type_specifiers(yyvsp[-1].spec, yyvsp[0].spec); ;
    break;}
case 112:
{ yyval.spec = parser_add_qualifiers(yyvsp[-1].spec, yyvsp[0].spec); ;
    break;}
case 113:
{ type_apply_decl_specifiers_to_fields(yyvsp[-2].spec, yyvsp[-1].fields); yyval.fields = yyvsp[-1].fields; ;
    break;}
case 114:
{ aux_error("invalid declaration of structure/union member"); yyerrok; yyval.fields = NULL; ;
    break;}
case 115:
{ yyval.fields = type_create_fields_list(yyvsp[0].field); ;
    break;}
case 116:
{ yyval.fields = type_add_field_to_list(yyvsp[-2].fields, yyvsp[0].field); ;
    break;}
case 117:
{ yyval.field = type_create_field(yyvsp[0].sym, NULL); ;
    break;}
case 118:
{ yyval.field = type_create_field(NULL, yyvsp[0].expr); ;
    break;}
case 119:
{ yyval.field = type_create_field(yyvsp[-2].sym, yyvsp[0].expr); ;
    break;}
case 120:
{ yyval.symlist = symbol_create_list(yyvsp[0].sym); ;
    break;}
case 121:
{ yyval.symlist = symbol_push_back(yyvsp[-2].symlist, yyvsp[0].sym); ;
    break;}
case 122:
{ yyval.sym = parser_attach_initializer(yyvsp[0].sym, NULL); ;
    break;}
case 123:
{ yyval.sym = parser_attach_initializer(yyvsp[-2].sym, yyvsp[0].init); ;
    break;}
case 124:
{ yyval.type = type_declare_enumeration(NULL); ;
    break;}
case 125:
{ yyval.type = type_declare_enumeration(yyvsp[-3].sym); ;
    break;}
case 126:
{ yyval.type = type_declare_incomplete_enumeration(yyvsp[0].sym); ;
    break;}
case 129:
{ type_declare_enum_item(yyvsp[0].sym, NULL); ;
    break;}
case 130:
{ type_declare_enum_item(yyvsp[-2].sym, yyvsp[0].expr); ;
    break;}
case 131:
{ yyval.sym = type_add_pointers_to_symbol_type(yyvsp[-1].type, yyvsp[0].sym); ;
    break;}
case 133:
{ yyval.sym = symbol_create_variable(yyvsp[0].sym); ;
    break;}
case 134:
{ yyval.sym = yyvsp[-1].sym; ;
    break;}
case 135:
{ yyval.sym = type_add_sized_array_node(yyvsp[-3].sym, yyvsp[-1].expr); ;
    break;}
case 136:
{
                aux_error("invalid expression when array size expected"); yyerrok;
                yyval.sym = type_add_sized_array_node(yyvsp[-3].sym, NULL);
            ;
    break;}
case 137:
{ yyval.sym = type_add_unsized_array_node(yyvsp[-2].sym); ;
    break;}
case 138:
{ yyval.sym = type_add_function_node(yyvsp[-3].sym, yyvsp[-1].paramlist); ;
    break;}
case 139:
{
                aux_error("invalid parameters list in function type"); yyerrok;
                yyval.sym = type_add_function_node(yyvsp[-3].sym, NULL);
            ;
    break;}
case 140:
{ yyval.sym = type_add_function_node(yyvsp[-2].sym, NULL); ;
    break;}
case 141:
{ yyval.type = type_create_pointer(); ;
    break;}
case 142:
{ yyval.type = type_create_pointer_with_spec(yyvsp[0].spec); ;
    break;}
case 143:
{ yyval.type = type_create_pointer_to_type(yyvsp[0].type); ;
    break;}
case 144:
{ yyval.type = type_create_pointer_with_spec_to_type(yyvsp[-1].spec, yyvsp[0].type); ;
    break;}
case 146:
{ yyval.spec = parser_add_qualifiers(yyvsp[-1].spec, yyvsp[0].spec); ;
    break;}
case 148:
{ yyval.paramlist = parser_push_ellipsis(yyvsp[-2].paramlist); ;
    break;}
case 149:
{ yyval.paramlist = parser_create_parameter_list(yyvsp[0].param); ;
    break;}
case 150:
{ yyval.paramlist = parser_push_parameter(yyvsp[-2].paramlist, yyvsp[0].param); ;
    break;}
case 151:
{ yyval.param = parser_create_named_parameter(yyvsp[-1].spec, yyvsp[0].sym); ;
    break;}
case 152:
{ yyval.param = parser_create_unnamed_parameter(yyvsp[-1].spec, yyvsp[0].type); ;
    break;}
case 153:
{ yyval.param = parser_create_unnamed_parameter(yyvsp[0].spec, NULL); ;
    break;}
case 154:
{ yyval.type = type_create_from_spec(yyvsp[0].spec); ;
    break;}
case 155:
{ yyval.type = type_create_from_spec_and_decl(yyvsp[-1].spec, yyvsp[0].type); ;
    break;}
case 158:
{ yyval.type = type_add_pointers_to_type(yyvsp[-1].type, yyvsp[0].type); ;
    break;}
case 159:
{ yyval.type = yyvsp[-1].type; ;
    break;}
case 160:
{ yyval.type = type_add_abstract_unsized_array_node(NULL); ;
    break;}
case 161:
{ yyval.type = type_add_abstract_sized_array_node(NULL, yyvsp[-1].expr); ;
    break;}
case 162:
{
                aux_error("invalid expression when array size expected"); yyerrok;
                yyval.type = type_add_abstract_sized_array_node(NULL, NULL);
            ;
    break;}
case 163:
{ yyval.type = type_add_abstract_unsized_array_node(NULL); ;
    break;}
case 164:
{ yyval.type = type_add_abstract_sized_array_node(NULL, yyvsp[-1].expr); ;
    break;}
case 165:
{
                aux_error("invalid expression when array size expected"); yyerrok;
                yyval.type = type_add_abstract_sized_array_node(NULL, NULL);
            ;
    break;}
case 166:
{ yyval.type = type_add_abstract_function_node(NULL, NULL); ;
    break;}
case 167:
{ yyval.type = type_add_abstract_function_node(NULL, yyvsp[-1].paramlist); ;
    break;}
case 168:
{
                aux_error("invalid parameters list in function type"); yyerrok;
                yyval.type = type_add_abstract_function_node(NULL, NULL);
            ;
    break;}
case 169:
{ yyval.type = type_add_abstract_function_node(yyvsp[-2].type, NULL); ;
    break;}
case 170:
{ yyval.type = type_add_abstract_function_node(yyvsp[-3].type, yyvsp[-1].paramlist); ;
    break;}
case 171:
{ yyval.type = type_add_abstract_function_node(yyvsp[-3].type, NULL); ;
    break;}
case 172:
{ yyval.init = parser_create_simple_initializer(yyvsp[0].expr); ;
    break;}
case 173:
{ yyval.init = parser_create_complex_initializer(yyvsp[-1].init); ;
    break;}
case 174:
{ yyval.init = parser_create_complex_initializer(yyvsp[-2].init); ;
    break;}
case 176:
{ yyval.init = parser_add_initializer(yyvsp[-2].init, yyvsp[0].init); ;
    break;}
case 177:
{ parser_assert_declarations_section(); ;
    break;}
case 178:
{ parser_enter_statements_section(); ;
    break;}
case 179:
{ aux_error("invalid statement or declaration"); yyerrok; ;
    break;}
case 184:
{ aux_error("invalid statement or declaration"); yyerrok; ;
    break;}
case 185:
{ parser_enter_declarations_section(); ;
    break;}
case 187:
{ yyval.expr = NULL; ;
    break;}
case 189:
{
                yyval.label = unit_create_label_and_push_jump(yyvsp[-1].expr, TRUE);
            ;
    break;}
case 190:
{
                unit_push_expression(yyvsp[0].expr);
                yyval.label = unit_create_and_push_label();
            ;
    break;}
case 191:
{ unit_push_named_label(yyvsp[-1].sym); ;
    break;}
case 193:
{ unit_push_case_label(yyvsp[-1].expr); ;
    break;}
case 195:
{ unit_push_default_stmt(); ;
    break;}
case 197:
{ unit_open_switch_stmt(yyvsp[-1].expr); ;
    break;}
case 198:
{ unit_close_switch_stmt(); ;
    break;}
case 199:
{ unit_push_jump_to_named_label(yyvsp[-1].sym); ;
    break;}
case 200:
{ unit_push_continue(); ;
    break;}
case 201:
{ unit_push_break(); ;
    break;}
case 202:
{ unit_push_expression(yyvsp[0].expr); ;
    break;}
case 204:
{
                unit_push_label(yyvsp[-1].label);
            ;
    break;}
case 205:
{
                yyval.label = unit_create_label_and_push_jump(NULL, FALSE);
                unit_push_label(yyvsp[-2].label);
            ;
    break;}
case 206:
{
                unit_push_label(yyvsp[-1].label);
            ;
    break;}
case 207:
{
                yyval.label = unit_create_and_push_label();          // place continue label
            ;
    break;}
case 208:
{
                int break_label = unit_create_label_and_push_jump(yyvsp[-2].expr, TRUE);    // create break label and conditional jump
                yyval.label = break_label;
                unit_push_continue_break_targets(yyvsp[0].label, break_label);
            ;
    break;}
case 209:
{
                unit_push_jump(yyvsp[-2].label, NULL, FALSE); // do continue
                unit_push_label(yyvsp[-1].label);             // place break label
                unit_pop_continue_break_targets();
            ;
    break;}
case 210:
{
                yyval.label = unit_create_and_push_label();          // place restart label
            ;
    break;}
case 211:
{
                yyval.label = unit_create_label();       // create continue label;
            ;
    break;}
case 212:
{
                int break_label = unit_create_label(); // create break label
                yyval.label = break_label;
                unit_push_continue_break_targets(yyvsp[0].label, break_label);
            ;
    break;}
case 213:
{
                unit_push_label(yyvsp[-7].label);            // place continue label
                unit_push_jump(yyvsp[-8].label, yyvsp[-2].expr, FALSE);  // create conditional jump
                unit_push_label(yyvsp[-6].label);            // place break label
                unit_pop_continue_break_targets();
            ;
    break;}
case 214:
{
                int continue_label = unit_create_and_push_label();              // place continue label
                int break_label = unit_create_label_and_push_jump(yyvsp[0].expr, TRUE);    // create break label
                yyval.label = break_label;
                unit_push_continue_break_targets(continue_label, break_label);
            ;
    break;}
case 215:
{
                unit_push_jump(yyvsp[-4].label, NULL, TRUE);
                unit_push_label(yyvsp[-2].label);                                     // place break label
            ;
    break;}
case 216:
{
                yyval.label = unit_create_and_push_label();                       // push continue label
            ;
    break;}
case 217:
{
                yyval.label = unit_create_label_and_push_jump(yyvsp[-1].expr, TRUE);          // create break label and conditional jump
                for_postaction = unit_get_last_expression();                    // remember lastest expression
            ;
    break;}
case 218:
{
                unit_push_expression(yyvsp[-1].expr);                                       // push the rest of post-action
                yyval.expr = unit_extract_slice(for_postaction->expr_next);       // extract post-action code
                unit_push_continue_break_targets(yyvsp[-3].label, yyvsp[-2].label);
            ;
    break;}
case 219:
{
                unit_pop_continue_break_targets();
                unit_insert_slice(yyvsp[-1].expr);
                unit_push_jump(yyvsp[-5].label, NULL, TRUE);                          // place jump to continue
                unit_push_label(yyvsp[-4].label);                                     // place break label
            ;
    break;}
case 220:
{ unit_push_return(NULL, FALSE); ;
    break;}
case 221:
{ unit_push_return(yyvsp[-1].expr, FALSE); ;
    break;}
case 226:
{ unit_handle_function_prototype(&yyvsp[-1].spec, yyvsp[0].sym); ;
    break;}
case 227:
{ unit_handle_function_body(yyvsp[-2].sym); unit_after_global_declaration(); ;
    break;}
case 228:
{ unit_handle_function_prototype(NULL, yyvsp[0].sym); ;
    break;}
case 229:
{ unit_handle_function_body(yyvsp[-2].sym); unit_after_global_declaration(); ;
    break;}
}
   /* the action file gets copied in in place of this dollarsign */



   yyvsp -= yylen;
   yyssp -= yylen;

#ifdef YYLSP_NEEDED
   yylsp -= yylen;
#endif

#if YYDEBUG != 0
   if (yydebug) {
      short *ssp1 = yyss - 1;
         YYPRINTF(("state stack now"));

      while (ssp1 != yyssp)
         YYPRINTF((" %d", *++ssp1));

         YYPRINTF(("\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 ) {
            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) {
                     if (yytname[x][0] == '\'') {
                        strcat(msg, count == 0 ? ", expecting " : " or ");
                        strcat(msg, yytname[x]);
                     } else {
                        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
         yyerror("parse error");
#else
      yyerror("parse error");
#endif   /* YYERROR_VERBOSE */
   }

   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;

      YYMESSAGE(("Discarding token %d (%s).\n", yychar, yytname[yychar1] ));

      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.        */

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;

      YYPRINTF(("Error: state stack now"));

      while (ssp1 != yyssp)
         YYPRINTF((" %d", *++ssp1));

      YYPRINTF(("\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;

   YYMESSAGE(("Shifting error token, "));

   *++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;
}


