Annotation of researchv10dc/cmd/gcc/parse.tab.c, revision 1.1.1.1

1.1       root        1: 
                      2: /*  A Bison parser, made from parse.y  */
                      3: 
                      4: #define        IDENTIFIER      258
                      5: #define        TYPENAME        259
                      6: #define        SCSPEC  260
                      7: #define        TYPESPEC        261
                      8: #define        TYPE_QUAL       262
                      9: #define        CONSTANT        263
                     10: #define        STRING  264
                     11: #define        ELLIPSIS        265
                     12: #define        SIZEOF  266
                     13: #define        ENUM    267
                     14: #define        STRUCT  268
                     15: #define        UNION   269
                     16: #define        IF      270
                     17: #define        ELSE    271
                     18: #define        WHILE   272
                     19: #define        DO      273
                     20: #define        FOR     274
                     21: #define        SWITCH  275
                     22: #define        CASE    276
                     23: #define        DEFAULT 277
                     24: #define        BREAK   278
                     25: #define        CONTINUE        279
                     26: #define        RETURN  280
                     27: #define        GOTO    281
                     28: #define        ASM     282
                     29: #define        TYPEOF  283
                     30: #define        ALIGNOF 284
                     31: #define        ASSIGN  285
                     32: #define        OROR    286
                     33: #define        ANDAND  287
                     34: #define        EQCOMPARE       288
                     35: #define        ARITHCOMPARE    289
                     36: #define        LSHIFT  290
                     37: #define        RSHIFT  291
                     38: #define        UNARY   292
                     39: #define        PLUSPLUS        293
                     40: #define        MINUSMINUS      294
                     41: #define        HYPERUNARY      295
                     42: #define        POINTSAT        296
                     43: 
                     44: #line 44 "parse.y"
                     45: 
                     46: #include "config.h"
                     47: #include "tree.h"
                     48: #include "parse.h"
                     49: #include "c-tree.h"
                     50: #include "flags.h"
                     51: 
                     52: #include <stdio.h>
                     53: 
                     54: /* Cause the `yydebug' variable to be defined.  */
                     55: #define YYDEBUG
                     56: 
                     57: #line 59 "parse.y"
                     58: typedef union {long itype; tree ttype; enum tree_code code; char *cptr; } YYSTYPE;
                     59: #line 143 "parse.y"
                     60: 
                     61: /* the declaration found for the last IDENTIFIER token read in.
                     62:    yylex must look this up to detect typedefs, which get token type TYPENAME,
                     63:    so it is left around in case the identifier is not a typedef but is
                     64:    used in a context which makes it a reference to a variable.  */
                     65: static tree lastiddecl;
                     66: 
                     67: static tree make_pointer_declarator ();
                     68: static tree combine_strings ();
                     69: static void reinit_parse_for_function ();
                     70: 
                     71: extern double atof ();
                     72: 
                     73: /* List of types and structure classes of the current declaration */
                     74: tree current_declspecs;
                     75: 
                     76: char *input_filename;          /* source file current line is coming from */
                     77: char *main_input_filename;     /* top-level source file */
                     78: 
                     79: #ifndef YYLTYPE
                     80: typedef
                     81:   struct yyltype
                     82:     {
                     83:       int timestamp;
                     84:       int first_line;
                     85:       int first_column;
                     86:       int last_line;
                     87:       int last_column;
                     88:       char *text;
                     89:    }
                     90:   yyltype;
                     91: 
                     92: #define YYLTYPE yyltype
                     93: #endif
                     94: 
                     95: #define        YYACCEPT        return(0)
                     96: #define        YYABORT return(1)
                     97: #define        YYERROR return(1)
                     98: #include <stdio.h>
                     99: 
                    100: #ifndef __STDC__
                    101: #define const
                    102: #endif
                    103: 
                    104: 
                    105: 
                    106: #define        YYFINAL         481
                    107: #define        YYFLAG          -32768
                    108: #define        YYNTBASE        64
                    109: 
                    110: #define YYTRANSLATE(x) ((unsigned)(x) <= 296 ? yytranslate[x] : 161)
                    111: 
                    112: static const char yytranslate[] = {     0,
                    113:      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
                    114:      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
                    115:      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
                    116:      2,     2,    59,     2,     2,     2,    47,    38,     2,    54,
                    117:     55,    45,    43,    60,    44,    53,    46,     2,     2,     2,
                    118:      2,     2,     2,     2,     2,     2,     2,    33,    56,     2,
                    119:     31,     2,    32,     2,     2,     2,     2,     2,     2,     2,
                    120:      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
                    121:      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
                    122:     62,     2,    63,    37,     2,     2,     2,     2,     2,     2,
                    123:      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
                    124:      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
                    125:      2,     2,    61,    36,    57,    58,     2,     2,     2,     2,
                    126:      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
                    127:      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
                    128:      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
                    129:      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
                    130:      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
                    131:      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
                    132:      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
                    133:      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
                    134:      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
                    135:      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
                    136:      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
                    137:      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
                    138:      2,     2,     2,     2,     2,     1,     2,     3,     4,     5,
                    139:      6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
                    140:     16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
                    141:     26,    27,    28,    29,    30,    34,    35,    39,    40,    41,
                    142:     42,    48,    49,    50,    51,    52
                    143: };
                    144: 
                    145: static const short yyrline[] = {     0,
                    146:    164,   165,   172,   174,   174,   175,   177,   179,   180,   187,
                    147:    193,   195,   197,   199,   201,   202,   203,   206,   212,   214,
                    148:    215,   217,   222,   224,   225,   227,   232,   234,   235,   239,
                    149:    241,   244,   246,   248,   250,   252,   254,   256,   260,   264,
                    150:    267,   270,   273,   277,   279,   281,   283,   286,   298,   303,
                    151:    305,   310,   312,   314,   316,   318,   320,   322,   324,   326,
                    152:    328,   330,   332,   334,   336,   338,   340,   342,   344,   348,
                    153:    370,   371,   373,   375,   377,   384,   389,   391,   393,   395,
                    154:    397,   399,   404,   406,   410,   412,   415,   417,   418,   419,
                    155:    424,   429,   432,   434,   436,   444,   447,   451,   453,   455,
                    156:    463,   466,   468,   470,   479,   482,   486,   488,   496,   497,
                    157:    498,   499,   503,   511,   512,   513,   516,   518,   521,   523,
                    158:    526,   529,   537,   542,   543,   548,   553,   554,   559,   561,
                    159:    563,   565,   571,   574,   581,   583,   588,   591,   596,   598,
                    160:    600,   602,   610,   616,   618,   620,   622,   628,   634,   636,
                    161:    638,   640,   642,   645,   650,   654,   657,   659,   661,   663,
                    162:    666,   668,   671,   674,   677,   680,   684,   686,   689,   691,
                    163:    693,   707,   711,   714,   718,   721,   722,   726,   729,   731,
                    164:    740,   742,   747,   750,   754,   757,   761,   764,   767,   770,
                    165:    774,   777,   781,   785,   787,   789,   791,   793,   795,   797,
                    166:    799,   807,   809,   810,   813,   815,   818,   821,   828,   829,
                    167:    833,   837,   843,   848,   850,   852,   856,   859,   860,   862,
                    168:    865,   869,   870,   873,   875,   880,   885,   889,   895,   901,
                    169:    908,   910,   936,   936,   947,   947,   951,   955,   958,   961,
                    170:    967,   974,   980,   985,   990,   990,   993,   996,  1000,  1003,
                    171:   1008,  1009,  1013,  1014,  1020,  1023,  1028,  1031,  1034,  1036,
                    172:   1038,  1042,  1044,  1050,  1052,  1054,  1058,  1061,  1067,  1070,
                    173:   1072,  1074,  1076,  1081,  1084
                    174: };
                    175: 
                    176: static const char * const yytname[] = {     0,
                    177: "error","$illegal.","IDENTIFIER","TYPENAME","SCSPEC","TYPESPEC","TYPE_QUAL","CONSTANT","STRING","ELLIPSIS",
                    178: "SIZEOF","ENUM","STRUCT","UNION","IF","ELSE","WHILE","DO","FOR","SWITCH",
                    179: "CASE","DEFAULT","BREAK","CONTINUE","RETURN","GOTO","ASM","TYPEOF","ALIGNOF","ASSIGN",
                    180: "'='","'?'","':'","OROR","ANDAND","'|'","'^'","'&'","EQCOMPARE","ARITHCOMPARE",
                    181: "LSHIFT","RSHIFT","'+'","'-'","'*'","'/'","'%'","UNARY","PLUSPLUS","MINUSMINUS",
                    182: "HYPERUNARY","POINTSAT","'.'","'('","')'","';'","'}'","'~'","'!'","','",
                    183: "'{'","'['","']'","program"
                    184: };
                    185: 
                    186: static const short yyr1[] = {     0,
                    187:     64,    64,    66,    65,    67,    65,    68,    68,    68,    69,
                    188:     69,    69,    69,    69,    69,    69,    69,    71,    72,    70,
                    189:     70,    73,    74,    70,    70,    75,    76,    70,    70,    77,
                    190:     77,    78,    78,    78,    78,    78,    78,    78,    79,    80,
                    191:     80,    81,    81,    82,    82,    82,    82,    82,    82,    82,
                    192:     82,    82,    82,    82,    82,    82,    82,    82,    82,    82,
                    193:     82,    82,    82,    82,    82,    82,    82,    82,    82,    83,
                    194:     83,    83,    83,    83,    84,    83,    83,    83,    83,    83,
                    195:     83,    83,    85,    85,    86,    86,    87,    87,    87,    87,
                    196:     88,    89,    89,    89,    89,    90,    90,    91,    91,    91,
                    197:     92,    92,    92,    92,    93,    93,    94,    94,    95,    95,
                    198:     95,    95,    95,    96,    96,    96,    97,    97,    98,    98,
                    199:     99,    99,   101,   100,   100,   103,   102,   102,   104,   104,
                    200:    104,   104,   105,   105,   106,   106,   107,   107,   107,   107,
                    201:    107,   107,   108,   108,   108,   108,   108,   109,   109,   109,
                    202:    109,   109,   109,   111,   110,   110,   110,   112,   110,   110,
                    203:    110,   113,   110,   114,   110,   110,   115,   115,   116,   116,
                    204:    116,   117,   117,   117,   118,   118,   118,   119,   119,   119,
                    205:    120,   120,   121,   121,   122,   122,   123,   123,   124,   124,
                    206:    125,   125,   126,   126,   126,   126,   126,   126,   126,   126,
                    207:    126,   127,   127,   127,   128,   128,   129,   130,   131,   131,
                    208:    131,   131,   133,   132,   134,   134,   135,   134,   134,   136,
                    209:    137,   134,   138,   139,   134,   140,   141,   142,   134,   143,
                    210:    134,   144,   134,   145,   134,   134,   134,   134,   134,   134,
                    211:    134,   134,   134,   146,   134,   134,   147,   147,   148,   148,
                    212:    149,   149,   150,   150,   152,   151,   154,   153,   155,   155,
                    213:    155,   156,   156,   157,   157,   157,   158,   158,   159,   159,
                    214:    159,   159,   159,   160,   160
                    215: };
                    216: 
                    217: static const short yyr2[] = {     0,
                    218:      0,     1,     0,     2,     0,     3,     1,     1,     5,     3,
                    219:      4,     4,     2,     2,     2,     2,     1,     0,     0,     7,
                    220:      4,     0,     0,     7,     4,     0,     0,     6,     3,     1,
                    221:      1,     1,     1,     1,     1,     1,     1,     1,     1,     0,
                    222:      1,     1,     3,     1,     2,     2,     4,     7,     2,     4,
                    223:      2,     4,     3,     3,     3,     3,     3,     3,     3,     3,
                    224:      3,     3,     3,     3,     3,     3,     5,     3,     3,     1,
                    225:      1,     1,     3,     3,     0,     4,     4,     4,     3,     3,
                    226:      2,     2,     1,     2,     0,     1,     1,     1,     2,     2,
                    227:      0,     4,     4,     2,     2,     2,     3,     0,     2,     2,
                    228:      1,     1,     2,     2,     2,     3,     0,     2,     1,     1,
                    229:      1,     4,     4,     1,     1,     1,     1,     3,     1,     3,
                    230:      0,     4,     0,     5,     2,     0,     5,     2,     1,     3,
                    231:      4,     1,     1,     3,     1,     1,     3,     3,     4,     3,
                    232:      3,     1,     3,     4,     3,     3,     1,     3,     3,     3,
                    233:      4,     3,     1,     0,     6,     4,     2,     0,     6,     4,
                    234:      2,     0,     7,     0,     6,     2,     0,     1,     0,     3,
                    235:      2,     3,     3,     1,     0,     1,     3,     1,     3,     2,
                    236:      1,     3,     1,     3,     2,     2,     0,     1,     1,     2,
                    237:      0,     2,     3,     3,     2,     3,     4,     3,     2,     3,
                    238:      2,     1,     2,     2,     0,     1,     2,     0,     2,     5,
                    239:      4,     4,     0,     6,     1,     2,     0,     4,     1,     0,
                    240:      0,     7,     0,     0,     9,     0,     0,     0,    12,     0,
                    241:      6,     0,     5,     0,     4,     2,     2,     2,     3,     6,
                    242:      8,    10,     3,     0,     4,     1,     0,     1,     0,     1,
                    243:      1,     3,     0,     4,     0,     2,     0,     2,     2,     2,
                    244:      2,     2,     2,     0,     1,     3,     1,     3,     2,     2,
                    245:      2,     2,     2,     1,     3
                    246: };
                    247: 
                    248: static const short yydefact[] = {     3,
                    249:      5,     0,     0,     0,   111,   102,   109,   101,     0,     0,
                    250:      0,     0,     0,    17,     4,     8,     7,     0,    91,    91,
                    251:     98,   110,     6,    15,    16,    30,    31,   164,   166,   169,
                    252:    157,   169,   161,     0,     0,   153,   191,     0,     0,   119,
                    253:      0,    14,     0,   104,   103,    13,     0,    98,    96,     0,
                    254:    162,     0,   154,     0,   158,    83,     0,    70,   189,    71,
                    255:      0,     0,    32,    34,    33,     0,    35,    36,     0,    37,
                    256:     38,     0,     0,    39,    42,    44,    72,   187,   107,     0,
                    257:    187,     0,     0,    10,     0,    29,     0,   257,     0,     0,
                    258:    128,   142,   191,     0,     0,   117,     0,   135,   136,     0,
                    259:      0,    97,   100,   114,   115,    99,   116,   183,   167,   181,
                    260:      0,   174,   171,   156,    91,     0,    91,   169,   160,   169,
                    261:     84,     0,     0,    49,     0,    51,    45,     0,     0,     0,
                    262:      0,    46,   112,     0,     0,     0,   249,     0,     0,     0,
                    263:      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
                    264:      0,    81,    82,     0,     0,    40,     0,   191,   255,     0,
                    265:    185,   188,   105,   113,   190,   107,   186,   192,   150,   149,
                    266:    120,   121,     0,   148,     0,   152,     0,     0,    27,    86,
                    267:      0,    91,    91,    88,   126,     0,     0,    12,     0,    21,
                    268:      0,   125,   257,     0,    11,    25,     0,     0,   168,     0,
                    269:    167,   175,   170,   175,     0,     0,     9,     0,     0,    74,
                    270:     73,   208,     0,     0,    43,    69,    68,   250,     0,    66,
                    271:     65,    63,    64,    62,    61,    60,    58,    59,    53,    54,
                    272:     55,    56,    57,    80,    79,     0,    41,     0,   195,     0,
                    273:    199,     0,   201,     0,   255,     0,   108,   106,     0,     0,
                    274:    274,   187,   187,   258,     0,   265,   267,     0,   151,   207,
                    275:      0,    89,    90,    94,     0,    95,     0,     0,   141,   137,
                    276:    118,    19,   123,   138,   140,     0,    23,   184,   182,   165,
                    277:      0,     0,   178,   172,   176,   173,   155,   159,    50,    52,
                    278:    209,     0,    76,     0,    47,     0,    77,    78,   194,   193,
                    279:      0,   256,     0,   200,   196,   198,     0,   122,   261,   147,
                    280:    191,   255,   269,   270,   271,   191,   272,   273,   259,     0,
                    281:    260,     0,    28,     0,     0,   121,   132,     0,   129,   127,
                    282:      0,     0,   139,     0,   163,   180,     0,     0,     0,    70,
                    283:    111,     0,   220,   223,     0,     0,     0,     0,     0,     0,
                    284:      0,     0,   247,   246,     0,     0,   205,     0,   215,   219,
                    285:    202,   133,   167,    67,   263,   262,   197,   195,   257,     0,
                    286:    195,   266,   268,   275,    92,    93,     0,    20,   124,    24,
                    287:    179,   177,   211,     0,     0,     0,   249,     0,     0,   234,
                    288:    236,   237,   238,     0,     0,   248,     0,   244,   216,     0,
                    289:      0,   212,   204,   203,   217,     0,     0,   146,   143,   145,
                    290:      0,   130,     0,     0,     0,     0,     0,     0,   232,     0,
                    291:    239,   243,     0,     0,   210,     0,   134,    48,   144,   131,
                    292:    213,     0,   224,   226,   230,     0,   235,     0,   245,   218,
                    293:      0,   221,     0,   249,     0,   233,   253,     0,   214,     0,
                    294:      0,     0,   231,     0,     0,   251,   240,   222,     0,   227,
                    295:      0,   253,     0,   253,     0,   249,     0,     0,   241,   252,
                    296:    225,     0,   254,     0,   228,   242,     0,   229,     0,     0,
                    297:      0
                    298: };
                    299: 
                    300: static const short yydefgoto[] = {   479,
                    301:      1,     2,     3,    15,    16,    17,   191,   331,   197,   334,
                    302:     90,   261,   355,    72,   356,   236,    74,    75,    76,   130,
                    303:     77,   179,   180,    18,   181,   182,    49,   183,    78,   163,
                    304:     21,   106,    95,    39,    91,    96,   332,    40,   268,   362,
                    305:    363,   172,    98,   313,    99,    22,   118,   120,   111,    50,
                    306:    200,    52,   116,   284,   285,   109,   110,    80,   161,    81,
                    307:     82,   162,   358,   401,   184,   292,   359,   360,   441,   361,
                    308:    426,   385,   450,   386,   443,   444,   466,   477,   445,   436,
                    309:    420,   424,   397,   219,   455,   456,   241,   242,   174,   175,
                    310:    254,   302,   255,   256,   257,   258
                    311: };
                    312: 
                    313: static const short yypact[] = {    26,
                    314:     52,  1388,  1388,   221,-32768,-32768,-32768,-32768,    62,    73,
                    315:    143,    13,    15,-32768,-32768,-32768,-32768,   168,    22,   430,
                    316: -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,   -43,-32768,
                    317:     24,-32768,    93,   161,  1204,-32768,-32768,   168,   101,-32768,
                    318:    332,-32768,   251,-32768,-32768,-32768,   168,-32768,   398,   310,
                    319: -32768,   275,-32768,  1348,-32768,-32768,   129,-32768,-32768,-32768,
                    320:   1248,  1270,-32768,-32768,-32768,  1292,-32768,-32768,   692,-32768,
                    321: -32768,  1292,   163,   120,  1439,   316,   218,    -5,-32768,   179,
                    322:    969,   241,    -4,-32768,   251,-32768,   186,-32768,   817,   994,
                    323:    230,-32768,-32768,   251,   187,-32768,   965,   123,   125,   190,
                    324:    394,   398,-32768,-32768,-32768,-32768,-32768,   237,   220,-32768,
                    325:    310,-32768,-32768,-32768,-32768,   216,   315,-32768,-32768,-32768,
                    326: -32768,   228,   692,-32768,   692,-32768,-32768,   245,   249,   254,
                    327:    269,-32768,-32768,  1292,  1292,  1292,  1292,  1292,  1292,  1292,
                    328:   1292,  1292,  1292,  1292,  1292,  1292,  1292,  1292,  1292,  1292,
                    329:   1292,-32768,-32768,   310,   310,  1292,  1292,-32768,    -5,   839,
                    330: -32768,   144,    49,-32768,-32768,-32768,-32768,-32768,   125,-32768,
                    331: -32768,   298,   161,-32768,  1417,-32768,   267,   278,-32768,   542,
                    332:    456,   284,   660,-32768,-32768,   212,    27,-32768,   251,-32768,
                    333:    994,   311,-32768,   861,-32768,-32768,   994,  1292,   310,   290,
                    334:    220,   229,-32768,   229,  1352,  1371,-32768,   286,   293,-32768,
                    335: -32768,   294,   295,  1145,  1439,  1439,  1439,-32768,   322,  1414,
                    336:   1454,  1465,  1181,  1474,   564,   666,   264,   264,   246,   246,
                    337: -32768,-32768,-32768,-32768,-32768,   301,   120,   304,    88,   119,
                    338: -32768,  1434,-32768,   308,-32768,   883,-32768,    49,   153,   303,
                    339: -32768,   148,  1006,-32768,   306,   312,-32768,   103,-32768,-32768,
                    340:    254,-32768,-32768,-32768,   251,-32768,   168,   795,   123,-32768,
                    341: -32768,-32768,-32768,-32768,-32768,   313,-32768,  1439,-32768,-32768,
                    342:    307,  1292,   340,   314,-32768,   314,-32768,-32768,   736,   736,
                    343: -32768,   515,-32768,   795,-32768,  1292,-32768,-32768,   144,-32768,
                    344:    324,-32768,   326,-32768,-32768,-32768,   320,-32768,-32768,-32768,
                    345: -32768,    83,   158,   125,-32768,-32768,   125,-32768,-32768,   483,
                    346: -32768,   374,-32768,   196,   204,   128,-32768,   795,  1439,-32768,
                    347:    254,   795,-32768,   254,-32768,  1439,  1292,   229,   261,   351,
                    348:    352,   333,-32768,-32768,   335,   337,  1292,   363,   341,   346,
                    349:   1226,   310,   406,-32768,   381,   359,  1058,   574,-32768,   401,
                    350: -32768,-32768,   358,  1001,-32768,-32768,-32768,    94,-32768,   905,
                    351:     29,-32768,-32768,-32768,-32768,-32768,   210,-32768,-32768,-32768,
                    352:   1439,-32768,-32768,  1292,   365,  1117,  1292,  1292,   387,-32768,
                    353: -32768,-32768,-32768,   367,   368,-32768,   373,-32768,-32768,   633,
                    354:    371,-32768,-32768,-32768,-32768,   714,   372,   158,-32768,-32768,
                    355:    369,-32768,   773,   375,  1292,   416,   382,   384,-32768,  1117,
                    356: -32768,-32768,   161,  1117,-32768,  1117,-32768,-32768,-32768,-32768,
                    357: -32768,   385,-32768,-32768,-32768,  1117,-32768,    38,-32768,-32768,
                    358:   1117,-32768,   391,  1292,  1117,-32768,   432,   390,-32768,  1117,
                    359:   1292,   393,-32768,   397,     4,-32768,-32768,-32768,   392,-32768,
                    360:   1292,   432,   396,   432,   410,  1292,   417,   181,-32768,-32768,
                    361: -32768,   436,-32768,   442,-32768,-32768,  1117,-32768,   453,   492,
                    362: -32768
                    363: };
                    364: 
                    365: static const short yypgoto[] = {-32768,
                    366: -32768,-32768,-32768,   499,-32768,-32768,-32768,-32768,-32768,-32768,
                    367: -32768,-32768,    10,-32768,   -35,-32768,   347,   -31,-32768,-32768,
                    368:    -33,   -97,   215,     9,  -168,     0,   460,     3,    -9,   338,
                    369:     18,  -121,   244,   -38,   -80,   -60,-32768,-32768,-32768,  -253,
                    370:    197,   -36,   -55,   177,   -14,   -27,-32768,-32768,-32768,-32768,
                    371:   -187,    12,-32768,   327,   213,   439,   353,    80,   -58,    -6,
                    372:    -85,  -143,   200,-32768,  -170,-32768,  -117,-32768,-32768,  -151,
                    373: -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
                    374: -32768,-32768,-32768,  -360,    99,    98,   318,-32768,  -183,-32768,
                    375: -32768,-32768,   325,-32768,   248,-32768
                    376: };
                    377: 
                    378: 
                    379: #define        YYLAST          1521
                    380: 
                    381: 
                    382: static const short yytable[] = {    73,
                    383:     57,    19,    19,    41,    20,    20,    97,   186,   100,   274,
                    384:    263,   262,   213,   281,   330,   240,   192,    51,    29,    31,
                    385:     33,   107,   167,    83,   171,    -1,   417,    43,    47,   124,
                    386:    126,    36,   101,   129,   127,   168,   462,    48,   187,   158,
                    387:    132,   247,   115,    54,   115,   117,   121,   117,   159,    88,
                    388:    170,    -2,    79,   177,   104,   105,   160,    89,   463,   108,
                    389:      9,    10,    11,   464,    26,    27,    34,   169,    35,    79,
                    390:    447,    79,   239,   316,   107,    26,    27,    42,   379,    83,
                    391:    193,   270,   312,   452,    53,    36,    79,   129,   194,   129,
                    392:    160,   192,   448,   272,   168,   299,    36,   310,   166,   277,
                    393:    168,   218,   215,   216,   217,   472,   220,   221,   222,   223,
                    394:    224,   225,   226,   227,   228,   229,   230,   231,   232,   233,
                    395:    108,   238,    28,   202,   244,   204,   247,   316,   271,   205,
                    396:    269,   206,   158,    30,   166,   107,   312,   121,   311,   249,
                    397:     79,   159,    79,   323,   160,    26,    27,   312,   131,   160,
                    398:     36,   310,   427,    55,    87,   160,    84,   321,   276,   427,
                    399:     85,   121,   322,   234,   235,   283,   278,   283,   240,    56,
                    400:     36,   169,   245,   300,   252,   407,   193,   253,    88,   134,
                    401:    246,    88,   295,   122,   194,   409,    89,   403,   262,    89,
                    402:    265,   267,   311,   315,   318,   115,   115,   245,   117,   117,
                    403:     48,   312,   208,    32,   209,   246,   404,   308,   108,   160,
                    404:    307,   369,    37,   378,    36,    92,   380,   133,   168,   370,
                    405:    107,    38,    79,    79,   299,   368,   121,   299,   325,   403,
                    406:    371,    36,    92,   164,   416,   474,   329,   314,   317,   173,
                    407:    464,   252,   188,    36,   253,   195,   189,   168,   404,    85,
                    408:    336,   375,   326,    36,    92,   189,    93,   295,   295,   376,
                    409:    185,   282,   329,    85,   364,    94,   412,   198,   437,   413,
                    410:     48,   203,   439,    93,   440,   112,    24,    25,     5,   199,
                    411:      7,    59,    94,   207,   446,    37,     9,    10,    11,   449,
                    412:    149,   150,   151,   453,    38,    93,   329,    83,   458,   210,
                    413:    329,   283,    13,   211,    94,   381,   147,   148,   149,   150,
                    414:    151,   389,    26,    27,   212,   394,   260,   383,     5,   252,
                    415:      7,   165,   253,   214,    87,   478,     9,    10,    11,   259,
                    416:    113,   114,    86,   260,   411,   -26,   -26,   -26,   -26,   264,
                    417:    289,   273,    13,   -26,   -26,   -26,   280,   290,   414,   293,
                    418:    291,   218,   418,   169,   296,   297,   169,   309,    87,   -26,
                    419:    319,   395,  -121,   335,   152,   153,   298,   154,   155,   156,
                    420:    304,   320,   337,   338,   329,   333,   374,   157,   365,   432,
                    421:    366,   329,   367,   -30,   -31,    88,   384,  -121,   387,   438,
                    422:    388,  -121,   -26,    89,   196,   390,   391,   -22,   -22,   -22,
                    423:    -22,   392,   103,   104,   105,   -22,   -22,   -22,   218,     9,
                    424:     10,    11,   396,   398,   399,   459,   405,   406,   415,   419,
                    425:     87,   -22,   421,   422,  -121,   467,   423,   425,   428,   431,
                    426:    218,   429,   433,     5,    44,     7,    45,   434,   435,   442,
                    427:    454,     9,    10,    11,   451,   457,   465,    88,   460,  -121,
                    428:    461,   469,   480,  -121,   -22,    89,   178,    13,   -87,   -87,
                    429:    -87,   -87,   -87,   -87,   -87,   471,   -87,   -87,   -87,   -87,
                    430:    -87,   473,   -87,   -87,   -87,   -87,   -87,   -87,   -87,   -87,
                    431:    -87,   -87,   -87,   -87,   -87,    46,     5,     6,     7,     8,
                    432:    475,   481,   372,   -87,     9,    10,    11,   476,   -87,   -87,
                    433:    -87,    23,   237,   248,   -87,   -87,   357,   102,   324,   -87,
                    434:     13,   -87,   -87,   -87,   -87,   339,   -87,   340,   341,     6,
                    435:      7,     8,    60,    56,   377,    61,     9,    10,    11,   342,
                    436:    286,   343,   344,   345,   346,   347,   348,   349,   350,   351,
                    437:    352,   353,    13,    62,   408,     5,     6,     7,     8,   201,
                    438:    382,   279,    63,     9,    10,    11,   400,    64,    65,    66,
                    439:    468,   470,   305,    67,    68,     0,   303,   373,    69,    13,
                    440:    354,     0,    70,    71,   178,   212,   340,    27,     0,     0,
                    441:      0,    60,    56,     0,    61,     0,     0,     0,   342,     0,
                    442:    343,   344,   345,   346,   347,   348,   349,   350,   351,   352,
                    443:    353,     0,    62,   144,   145,   146,   147,   148,   149,   150,
                    444:    151,    63,     0,     0,     0,     0,    64,    65,    66,     0,
                    445:      0,     0,    67,    68,     0,     0,     0,    69,     0,   354,
                    446:    402,    70,    71,   178,   212,   340,    27,     0,     0,     0,
                    447:     60,    56,     0,    61,     0,     0,     0,   342,     0,   343,
                    448:    344,   345,   346,   347,   348,   349,   350,   351,   352,   353,
                    449:      0,    62,     0,     5,    44,     7,    45,     0,     0,     0,
                    450:     63,     9,    10,    11,     0,    64,    65,    66,     0,     0,
                    451:      0,    67,    68,     0,     0,     0,    69,    13,   354,  -206,
                    452:     70,    71,   128,   212,    58,     5,     0,     7,    59,    60,
                    453:     56,     0,    61,     9,    10,    11,   145,   146,   147,   148,
                    454:    149,   150,   151,     0,   327,   266,    58,     0,     0,    13,
                    455:     62,    60,    56,     0,    61,     0,     0,     0,     0,    63,
                    456:      0,     0,     0,     0,    64,    65,    66,     0,    58,     0,
                    457:     67,    68,    62,    60,    56,    69,    61,     0,     0,    70,
                    458:     71,    63,   -75,     0,     0,     0,    64,    65,    66,     0,
                    459:      0,     0,    67,    68,    62,     0,     0,    69,     0,     0,
                    460:   -168,    70,    71,   327,   328,    58,     0,     0,     0,     0,
                    461:     60,    56,     0,    61,    67,    68,     0,     0,     0,    69,
                    462:      0,     0,     0,    70,    71,   327,   294,    58,     0,     0,
                    463:      0,    62,    60,    56,     0,    61,     0,     0,     0,     0,
                    464:     63,     0,     0,     0,     0,    64,    65,    66,     0,    58,
                    465:      0,    67,    68,    62,    60,    56,    69,    61,     0,   430,
                    466:     70,    71,    63,   328,     0,     0,     0,    64,    65,    66,
                    467:      0,    58,     0,    67,    68,    62,    60,    56,    69,    61,
                    468:      0,     0,    70,    71,    63,   328,     0,     0,     0,    64,
                    469:     65,    66,     0,    58,     0,    67,    68,    62,    60,    56,
                    470:     69,    61,     0,     0,    70,    71,    63,     0,     0,   176,
                    471:      0,    64,    65,    66,     0,    58,     0,    67,    68,    62,
                    472:     60,    56,    69,    61,     0,     0,    70,    71,    63,     0,
                    473:      0,   243,     0,    64,    65,    66,     0,    58,     0,    67,
                    474:     68,    62,    60,    56,    69,    61,     0,     0,    70,    71,
                    475:     63,     0,     0,   275,     0,    64,    65,    66,     0,     0,
                    476:      0,    67,    68,    62,     0,     0,    69,     0,     0,     0,
                    477:     70,    71,    63,     0,     0,   306,     0,    64,    65,    66,
                    478:      0,     0,     0,    67,    68,     0,     0,     0,    69,     0,
                    479:      0,     0,    70,    71,     0,   190,     0,   410,   -18,   -18,
                    480:    -18,   -18,     5,     0,     7,   165,   -18,   -18,   -18,     0,
                    481:      9,    10,    11,     0,     0,     0,     0,     0,     0,     0,
                    482:      0,    87,   -18,     0,   178,  -121,    13,     5,     6,     7,
                    483:      8,     0,     0,     0,     0,     9,    10,    11,    36,     5,
                    484:     44,     7,    45,   158,     0,     0,     0,     9,    10,    11,
                    485:   -121,    13,   159,     0,  -121,   -18,     0,     0,     0,     0,
                    486:    160,     0,   137,    13,   138,   139,   140,   141,   142,   143,
                    487:    144,   145,   146,   147,   148,   149,   150,   151,     0,     0,
                    488:    316,     0,     0,     0,   -85,     0,     0,     0,     0,   312,
                    489:    340,   341,     6,     7,     8,    60,    56,   160,    61,     9,
                    490:     10,    11,   342,     0,   343,   344,   345,   346,   347,   348,
                    491:    349,   350,   351,   352,   353,    13,    62,     0,     0,     0,
                    492:      0,     0,     0,     0,     0,    63,     0,     0,     0,     0,
                    493:     64,    65,    66,     0,     0,     0,    67,    68,     0,     0,
                    494:      0,    69,     0,   354,     0,    70,    71,     0,   212,   340,
                    495:     27,     0,     0,     0,    60,    56,     0,    61,     0,     0,
                    496:      0,   342,     0,   343,   344,   345,   346,   347,   348,   349,
                    497:    350,   351,   352,   353,     0,    62,     0,    58,     0,     0,
                    498:      0,     0,    60,    56,    63,    61,     0,     0,     0,    64,
                    499:     65,    66,     0,     0,     0,    67,    68,     0,     0,     0,
                    500:     69,     0,   354,    62,    70,    71,     0,   212,     0,     0,
                    501:      0,     0,    63,     0,     0,     0,     0,    64,    65,    66,
                    502:      0,     0,     0,    67,    68,     0,     0,     0,    69,     0,
                    503:      0,     0,    70,    71,     0,   294,    58,     5,     0,     7,
                    504:     59,    60,    56,     0,    61,     9,    10,    11,   142,   143,
                    505:    144,   145,   146,   147,   148,   149,   150,   151,    58,     0,
                    506:      0,    13,    62,    60,    56,     0,    61,     0,     0,     0,
                    507:      0,    63,     0,     0,     0,     0,    64,    65,    66,     0,
                    508:     58,     0,    67,    68,    62,    60,    56,    69,    61,     0,
                    509:      0,    70,    71,    63,     0,     0,     0,     0,    64,    65,
                    510:     66,     0,    58,     0,    67,    68,    62,    60,    56,    69,
                    511:     61,   393,     0,    70,    71,    63,     0,     0,     0,     0,
                    512:     64,    65,    66,     0,    58,     0,    67,    68,    62,    60,
                    513:     56,   123,    61,     0,     0,    70,    71,    63,     0,     0,
                    514:      0,     0,    64,    65,    66,     0,     0,     0,    67,    68,
                    515:     62,     0,     0,   125,     0,     0,     0,    70,    71,    63,
                    516:      0,     0,     0,     0,    64,    65,    66,     0,     0,     0,
                    517:     67,    68,     0,     0,     0,    69,     0,     0,   112,    70,
                    518:     71,     5,   112,     7,    59,     5,     0,     7,    59,     9,
                    519:     10,    11,     0,     9,    10,    11,     0,     0,     0,     0,
                    520:      0,   112,     0,     0,     5,    13,     7,    59,     0,    13,
                    521:      0,     0,     9,    10,    11,     0,     0,     0,     4,     0,
                    522:    -91,     5,     6,     7,     8,     0,     0,     0,    13,     9,
                    523:     10,    11,     0,   113,   119,     0,     0,   113,   287,     0,
                    524:      0,     0,     0,     0,    12,    13,     0,   250,     0,   251,
                    525:      5,     6,     7,     8,     0,     0,   113,   288,     9,    10,
                    526:     11,     0,   -91,     0,   301,     0,     0,     5,     6,     7,
                    527:      8,   -91,     0,    14,    13,     9,    10,    11,   139,   140,
                    528:    141,   142,   143,   144,   145,   146,   147,   148,   149,   150,
                    529:    151,    13,     0,     0,     0,     0,     0,     0,   135,   136,
                    530:    137,  -264,   138,   139,   140,   141,   142,   143,   144,   145,
                    531:    146,   147,   148,   149,   150,   151,     0,     0,  -264,   140,
                    532:    141,   142,   143,   144,   145,   146,   147,   148,   149,   150,
                    533:    151,   141,   142,   143,   144,   145,   146,   147,   148,   149,
                    534:    150,   151,   143,   144,   145,   146,   147,   148,   149,   150,
                    535:    151
                    536: };
                    537: 
                    538: static const short yycheck[] = {    35,
                    539:     34,     2,     3,    18,     2,     3,    43,    93,    47,   193,
                    540:    181,   180,   130,   201,   268,   159,    97,    61,     9,    10,
                    541:     11,    49,    81,    38,    85,     0,   387,    19,    20,    61,
                    542:     62,     3,    47,    69,    66,     7,    33,    20,    94,    45,
                    543:     72,   163,    52,    32,    54,    52,     9,    54,    54,    54,
                    544:     55,     0,    35,    89,     6,     7,    62,    62,    55,    50,
                    545:     12,    13,    14,    60,     3,     4,    54,    82,    54,    52,
                    546:     33,    54,   158,    45,   102,     3,     4,    56,   332,    94,
                    547:     54,    55,    54,   444,    61,     3,    69,   123,    62,   125,
                    548:     62,   172,    55,   191,     7,   239,     3,     4,    81,   197,
                    549:      7,   137,   134,   135,   136,   466,   138,   139,   140,   141,
                    550:    142,   143,   144,   145,   146,   147,   148,   149,   150,   151,
                    551:    111,   157,    61,   115,   160,   117,   248,    45,   189,   118,
                    552:    186,   120,    45,    61,   117,   163,    54,     9,    45,   173,
                    553:    123,    54,   125,   261,    62,     3,     4,    54,    69,    62,
                    554:      3,     4,   406,    61,    27,    62,    56,    55,   194,   413,
                    555:     60,     9,    60,   154,   155,   202,   198,   204,   312,     9,
                    556:      3,   186,    54,    55,   175,   363,    54,   175,    54,    60,
                    557:     62,    54,   214,    55,    62,   369,    62,   358,   357,    62,
                    558:    182,   183,    45,   252,   253,   205,   206,    54,   205,   206,
                    559:    183,    54,   123,    61,   125,    62,   358,    55,   199,    62,
                    560:    246,    54,    45,   331,     3,     4,   334,    55,     7,    62,
                    561:    248,    54,   205,   206,   368,   311,     9,   371,   267,   400,
                    562:    316,     3,     4,    55,   386,    55,   268,   252,   253,    54,
                    563:     60,   242,    56,     3,   242,    56,    60,     7,   400,    60,
                    564:    282,    56,   267,     3,     4,    60,    45,   289,   290,    56,
                    565:     31,    33,   294,    60,   296,    54,    57,    31,   420,    60,
                    566:    253,    56,   424,    45,   426,     1,    56,    57,     4,    60,
                    567:      6,     7,    54,    56,   436,    45,    12,    13,    14,   441,
                    568:     45,    46,    47,   445,    54,    45,   328,   312,   450,    55,
                    569:    332,   338,    28,    55,    54,   337,    43,    44,    45,    46,
                    570:     47,   347,     3,     4,    61,   351,    56,    57,     4,   320,
                    571:      6,     7,   320,    55,    27,   477,    12,    13,    14,    63,
                    572:     56,    57,     1,    56,   370,     4,     5,     6,     7,    56,
                    573:     55,    31,    28,    12,    13,    14,    57,    55,   384,    55,
                    574:     57,   387,   388,   368,    33,    55,   371,    55,    27,    28,
                    575:     55,   352,    31,    57,    49,    50,    63,    52,    53,    54,
                    576:     63,    60,    33,    60,   406,    63,     3,    62,    55,   415,
                    577:     55,   413,    63,    33,    33,    54,    54,    56,    54,   423,
                    578:     54,    60,    61,    62,     1,    33,    56,     4,     5,     6,
                    579:      7,    56,     5,     6,     7,    12,    13,    14,   444,    12,
                    580:     13,    14,     7,    33,    56,   451,    16,    60,    54,    33,
                    581:     27,    28,    56,    56,    31,   461,    54,    57,    57,    55,
                    582:    466,    63,    17,     4,     5,     6,     7,    56,    55,    55,
                    583:      9,    12,    13,    14,    54,    56,    55,    54,    56,    56,
                    584:     54,    56,     0,    60,    61,    62,     1,    28,     3,     4,
                    585:      5,     6,     7,     8,     9,    56,    11,    12,    13,    14,
                    586:     15,    55,    17,    18,    19,    20,    21,    22,    23,    24,
                    587:     25,    26,    27,    28,    29,    56,     4,     5,     6,     7,
                    588:     55,     0,    10,    38,    12,    13,    14,    56,    43,    44,
                    589:     45,     3,   156,   166,    49,    50,   292,    48,   265,    54,
                    590:     28,    56,    57,    58,    59,     1,    61,     3,     4,     5,
                    591:      6,     7,     8,     9,   328,    11,    12,    13,    14,    15,
                    592:    204,    17,    18,    19,    20,    21,    22,    23,    24,    25,
                    593:     26,    27,    28,    29,   368,     4,     5,     6,     7,   111,
                    594:    338,   199,    38,    12,    13,    14,   357,    43,    44,    45,
                    595:    462,   464,   245,    49,    50,    -1,   242,   320,    54,    28,
                    596:     56,    -1,    58,    59,     1,    61,     3,     4,    -1,    -1,
                    597:     -1,     8,     9,    -1,    11,    -1,    -1,    -1,    15,    -1,
                    598:     17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
                    599:     27,    -1,    29,    40,    41,    42,    43,    44,    45,    46,
                    600:     47,    38,    -1,    -1,    -1,    -1,    43,    44,    45,    -1,
                    601:     -1,    -1,    49,    50,    -1,    -1,    -1,    54,    -1,    56,
                    602:     57,    58,    59,     1,    61,     3,     4,    -1,    -1,    -1,
                    603:      8,     9,    -1,    11,    -1,    -1,    -1,    15,    -1,    17,
                    604:     18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
                    605:     -1,    29,    -1,     4,     5,     6,     7,    -1,    -1,    -1,
                    606:     38,    12,    13,    14,    -1,    43,    44,    45,    -1,    -1,
                    607:     -1,    49,    50,    -1,    -1,    -1,    54,    28,    56,    57,
                    608:     58,    59,     1,    61,     3,     4,    -1,     6,     7,     8,
                    609:      9,    -1,    11,    12,    13,    14,    41,    42,    43,    44,
                    610:     45,    46,    47,    -1,     1,    56,     3,    -1,    -1,    28,
                    611:     29,     8,     9,    -1,    11,    -1,    -1,    -1,    -1,    38,
                    612:     -1,    -1,    -1,    -1,    43,    44,    45,    -1,     3,    -1,
                    613:     49,    50,    29,     8,     9,    54,    11,    -1,    -1,    58,
                    614:     59,    38,    61,    -1,    -1,    -1,    43,    44,    45,    -1,
                    615:     -1,    -1,    49,    50,    29,    -1,    -1,    54,    -1,    -1,
                    616:     57,    58,    59,     1,    61,     3,    -1,    -1,    -1,    -1,
                    617:      8,     9,    -1,    11,    49,    50,    -1,    -1,    -1,    54,
                    618:     -1,    -1,    -1,    58,    59,     1,    61,     3,    -1,    -1,
                    619:     -1,    29,     8,     9,    -1,    11,    -1,    -1,    -1,    -1,
                    620:     38,    -1,    -1,    -1,    -1,    43,    44,    45,    -1,     3,
                    621:     -1,    49,    50,    29,     8,     9,    54,    11,    -1,    57,
                    622:     58,    59,    38,    61,    -1,    -1,    -1,    43,    44,    45,
                    623:     -1,     3,    -1,    49,    50,    29,     8,     9,    54,    11,
                    624:     -1,    -1,    58,    59,    38,    61,    -1,    -1,    -1,    43,
                    625:     44,    45,    -1,     3,    -1,    49,    50,    29,     8,     9,
                    626:     54,    11,    -1,    -1,    58,    59,    38,    -1,    -1,    63,
                    627:     -1,    43,    44,    45,    -1,     3,    -1,    49,    50,    29,
                    628:      8,     9,    54,    11,    -1,    -1,    58,    59,    38,    -1,
                    629:     -1,    63,    -1,    43,    44,    45,    -1,     3,    -1,    49,
                    630:     50,    29,     8,     9,    54,    11,    -1,    -1,    58,    59,
                    631:     38,    -1,    -1,    63,    -1,    43,    44,    45,    -1,    -1,
                    632:     -1,    49,    50,    29,    -1,    -1,    54,    -1,    -1,    -1,
                    633:     58,    59,    38,    -1,    -1,    63,    -1,    43,    44,    45,
                    634:     -1,    -1,    -1,    49,    50,    -1,    -1,    -1,    54,    -1,
                    635:     -1,    -1,    58,    59,    -1,     1,    -1,    63,     4,     5,
                    636:      6,     7,     4,    -1,     6,     7,    12,    13,    14,    -1,
                    637:     12,    13,    14,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
                    638:     -1,    27,    28,    -1,     1,    31,    28,     4,     5,     6,
                    639:      7,    -1,    -1,    -1,    -1,    12,    13,    14,     3,     4,
                    640:      5,     6,     7,    45,    -1,    -1,    -1,    12,    13,    14,
                    641:     56,    28,    54,    -1,    60,    61,    -1,    -1,    -1,    -1,
                    642:     62,    -1,    32,    28,    34,    35,    36,    37,    38,    39,
                    643:     40,    41,    42,    43,    44,    45,    46,    47,    -1,    -1,
                    644:     45,    -1,    -1,    -1,    61,    -1,    -1,    -1,    -1,    54,
                    645:      3,     4,     5,     6,     7,     8,     9,    62,    11,    12,
                    646:     13,    14,    15,    -1,    17,    18,    19,    20,    21,    22,
                    647:     23,    24,    25,    26,    27,    28,    29,    -1,    -1,    -1,
                    648:     -1,    -1,    -1,    -1,    -1,    38,    -1,    -1,    -1,    -1,
                    649:     43,    44,    45,    -1,    -1,    -1,    49,    50,    -1,    -1,
                    650:     -1,    54,    -1,    56,    -1,    58,    59,    -1,    61,     3,
                    651:      4,    -1,    -1,    -1,     8,     9,    -1,    11,    -1,    -1,
                    652:     -1,    15,    -1,    17,    18,    19,    20,    21,    22,    23,
                    653:     24,    25,    26,    27,    -1,    29,    -1,     3,    -1,    -1,
                    654:     -1,    -1,     8,     9,    38,    11,    -1,    -1,    -1,    43,
                    655:     44,    45,    -1,    -1,    -1,    49,    50,    -1,    -1,    -1,
                    656:     54,    -1,    56,    29,    58,    59,    -1,    61,    -1,    -1,
                    657:     -1,    -1,    38,    -1,    -1,    -1,    -1,    43,    44,    45,
                    658:     -1,    -1,    -1,    49,    50,    -1,    -1,    -1,    54,    -1,
                    659:     -1,    -1,    58,    59,    -1,    61,     3,     4,    -1,     6,
                    660:      7,     8,     9,    -1,    11,    12,    13,    14,    38,    39,
                    661:     40,    41,    42,    43,    44,    45,    46,    47,     3,    -1,
                    662:     -1,    28,    29,     8,     9,    -1,    11,    -1,    -1,    -1,
                    663:     -1,    38,    -1,    -1,    -1,    -1,    43,    44,    45,    -1,
                    664:      3,    -1,    49,    50,    29,     8,     9,    54,    11,    -1,
                    665:     -1,    58,    59,    38,    -1,    -1,    -1,    -1,    43,    44,
                    666:     45,    -1,     3,    -1,    49,    50,    29,     8,     9,    54,
                    667:     11,    56,    -1,    58,    59,    38,    -1,    -1,    -1,    -1,
                    668:     43,    44,    45,    -1,     3,    -1,    49,    50,    29,     8,
                    669:      9,    54,    11,    -1,    -1,    58,    59,    38,    -1,    -1,
                    670:     -1,    -1,    43,    44,    45,    -1,    -1,    -1,    49,    50,
                    671:     29,    -1,    -1,    54,    -1,    -1,    -1,    58,    59,    38,
                    672:     -1,    -1,    -1,    -1,    43,    44,    45,    -1,    -1,    -1,
                    673:     49,    50,    -1,    -1,    -1,    54,    -1,    -1,     1,    58,
                    674:     59,     4,     1,     6,     7,     4,    -1,     6,     7,    12,
                    675:     13,    14,    -1,    12,    13,    14,    -1,    -1,    -1,    -1,
                    676:     -1,     1,    -1,    -1,     4,    28,     6,     7,    -1,    28,
                    677:     -1,    -1,    12,    13,    14,    -1,    -1,    -1,     1,    -1,
                    678:      3,     4,     5,     6,     7,    -1,    -1,    -1,    28,    12,
                    679:     13,    14,    -1,    56,    57,    -1,    -1,    56,    57,    -1,
                    680:     -1,    -1,    -1,    -1,    27,    28,    -1,     1,    -1,     3,
                    681:      4,     5,     6,     7,    -1,    -1,    56,    57,    12,    13,
                    682:     14,    -1,    45,    -1,     1,    -1,    -1,     4,     5,     6,
                    683:      7,    54,    -1,    56,    28,    12,    13,    14,    35,    36,
                    684:     37,    38,    39,    40,    41,    42,    43,    44,    45,    46,
                    685:     47,    28,    -1,    -1,    -1,    -1,    -1,    -1,    30,    31,
                    686:     32,    55,    34,    35,    36,    37,    38,    39,    40,    41,
                    687:     42,    43,    44,    45,    46,    47,    -1,    -1,    55,    36,
                    688:     37,    38,    39,    40,    41,    42,    43,    44,    45,    46,
                    689:     47,    37,    38,    39,    40,    41,    42,    43,    44,    45,
                    690:     46,    47,    39,    40,    41,    42,    43,    44,    45,    46,
                    691:     47
                    692: };
                    693: #define YYPURE 1
                    694: 
                    695: #line 2 "bison.simple"
                    696: 
                    697: /* Skeleton output parser for bison,
                    698:    copyright (C) 1984 Bob Corbett and Richard Stallman
                    699: 
                    700:                       NO WARRANTY
                    701: 
                    702:   BECAUSE THIS PROGRAM IS LICENSED FREE OF CHARGE, WE PROVIDE ABSOLUTELY
                    703: NO WARRANTY, TO THE EXTENT PERMITTED BY APPLICABLE STATE LAW.  EXCEPT
                    704: WHEN OTHERWISE STATED IN WRITING, FREE SOFTWARE FOUNDATION, INC,
                    705: RICHARD M. STALLMAN AND/OR OTHER PARTIES PROVIDE THIS PROGRAM "AS IS"
                    706: WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
                    707: BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
                    708: FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY
                    709: AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE PROGRAM PROVE
                    710: DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR
                    711: CORRECTION.
                    712: 
                    713:  IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW WILL RICHARD M.
                    714: STALLMAN, THE FREE SOFTWARE FOUNDATION, INC., AND/OR ANY OTHER PARTY
                    715: WHO MAY MODIFY AND REDISTRIBUTE THIS PROGRAM AS PERMITTED BELOW, BE
                    716: LIABLE TO YOU FOR DAMAGES, INCLUDING ANY LOST PROFITS, LOST MONIES, OR
                    717: OTHER SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
                    718: USE OR INABILITY TO USE (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR
                    719: DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY THIRD PARTIES OR
                    720: A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS) THIS
                    721: PROGRAM, EVEN IF YOU HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH
                    722: DAMAGES, OR FOR ANY CLAIM BY ANY OTHER PARTY.
                    723: 
                    724:                GENERAL PUBLIC LICENSE TO COPY
                    725: 
                    726:   1. You may copy and distribute verbatim copies of this source file
                    727: as you receive it, in any medium, provided that you conspicuously and
                    728: appropriately publish on each copy a valid copyright notice "Copyright
                    729: (C) 1985 Free Software Foundation, Inc."; and include following the
                    730: copyright notice a verbatim copy of the above disclaimer of warranty
                    731: and of this License.  You may charge a distribution fee for the
                    732: physical act of transferring a copy.
                    733: 
                    734:   2. You may modify your copy or copies of this source file or
                    735: any portion of it, and copy and distribute such modifications under
                    736: the terms of Paragraph 1 above, provided that you also do the following:
                    737: 
                    738:     a) cause the modified files to carry prominent notices stating
                    739:     that you changed the files and the date of any change; and
                    740: 
                    741:     b) cause the whole of any work that you distribute or publish,
                    742:     that in whole or in part contains or is a derivative of this
                    743:     program or any part thereof, to be licensed at no charge to all
                    744:     third parties on terms identical to those contained in this
                    745:     License Agreement (except that you may choose to grant more extensive
                    746:     warranty protection to some or all third parties, at your option).
                    747: 
                    748:     c) You may charge a distribution fee for the physical act of
                    749:     transferring a copy, and you may at your option offer warranty
                    750:     protection in exchange for a fee.
                    751: 
                    752: Mere aggregation of another unrelated program with this program (or its
                    753: derivative) on a volume of a storage or distribution medium does not bring
                    754: the other program under the scope of these terms.
                    755: 
                    756:   3. You may copy and distribute this program (or a portion or derivative
                    757: of it, under Paragraph 2) in object code or executable form under the terms
                    758: of Paragraphs 1 and 2 above provided that you also do one of the following:
                    759: 
                    760:     a) accompany it with the complete corresponding machine-readable
                    761:     source code, which must be distributed under the terms of
                    762:     Paragraphs 1 and 2 above; or,
                    763: 
                    764:     b) accompany it with a written offer, valid for at least three
                    765:     years, to give any third party free (except for a nominal
                    766:     shipping charge) a complete machine-readable copy of the
                    767:     corresponding source code, to be distributed under the terms of
                    768:     Paragraphs 1 and 2 above; or,
                    769: 
                    770:     c) accompany it with the information you received as to where the
                    771:     corresponding source code may be obtained.  (This alternative is
                    772:     allowed only for noncommercial distribution and only if you
                    773:     received the program in object code or executable form alone.)
                    774: 
                    775: For an executable file, complete source code means all the source code for
                    776: all modules it contains; but, as a special exception, it need not include
                    777: source code for modules which are standard libraries that accompany the
                    778: operating system on which the executable file runs.
                    779: 
                    780:   4. You may not copy, sublicense, distribute or transfer this program
                    781: except as expressly provided under this License Agreement.  Any attempt
                    782: otherwise to copy, sublicense, distribute or transfer this program is void and
                    783: your rights to use the program under this License agreement shall be
                    784: automatically terminated.  However, parties who have received computer
                    785: software programs from you with this License Agreement will not have
                    786: their licenses terminated so long as such parties remain in full compliance.
                    787: 
                    788:   5. If you wish to incorporate parts of this program into other free
                    789: programs whose distribution conditions are different, write to the Free
                    790: Software Foundation at 675 Mass Ave, Cambridge, MA 02139.  We have not yet
                    791: worked out a simple rule that can be stated here, but we will often permit
                    792: this.  We will be guided by the two goals of preserving the free status of
                    793: all derivatives of our free software and of promoting the sharing and reuse of
                    794: software.
                    795: 
                    796: 
                    797: In other words, you are welcome to use, share and improve this program.
                    798: You are forbidden to forbid anyone else to use, share and improve
                    799: what you give them.   Help stamp out software-hoarding!  */
                    800: 
                    801: /* This is the parser code that is written into each bison parser
                    802:   when the %semantic_parser declaration is not specified in the grammar.
                    803:   It was written by Richard Stallman by simplifying the hairy parser
                    804:   used when %semantic_parser is specified.  */
                    805: 
                    806: /* Note: there must be only one dollar sign in this file.
                    807:    It is replaced by the list of actions, each action
                    808:    as one case of the switch.  */
                    809: 
                    810: #define yyerrok                (yyerrstatus = 0)
                    811: #define yyclearin      (yychar = YYEMPTY)
                    812: #define YYEMPTY                -2
                    813: #define YYEOF          0
                    814: #define YYFAIL         goto yyerrlab;
                    815: 
                    816: #define YYTERROR       1
                    817: 
                    818: #ifndef YYIMPURE
                    819: #define YYLEX          yylex()
                    820: #endif
                    821: 
                    822: #ifndef YYPURE
                    823: #define YYLEX          yylex(&yylval, &yylloc)
                    824: #endif
                    825: 
                    826: /* If nonreentrant, generate the variables here */
                    827: 
                    828: #ifndef YYIMPURE
                    829: 
                    830: int    yychar;                 /*  the lookahead symbol                */
                    831: YYSTYPE        yylval;                 /*  the semantic value of the           */
                    832:                                /*  lookahead symbol                    */
                    833: 
                    834: YYLTYPE yylloc;                        /*  location data for the lookahead     */
                    835:                                /*  symbol                              */
                    836: 
                    837: int yynerr;                    /*  number of parse errors so far       */
                    838: 
                    839: #ifdef YYDEBUG
                    840: int yydebug = 0;               /*  nonzero means print parse trace     */
                    841: #endif
                    842: 
                    843: #endif  /* YYIMPURE */
                    844: 
                    845: 
                    846: /*  YYMAXDEPTH indicates the initial size of the parser's stacks       */
                    847: 
                    848: #ifndef        YYMAXDEPTH
                    849: #define YYMAXDEPTH 200
                    850: #endif
                    851: 
                    852: /*  YYMAXLIMIT is the maximum size the stacks can grow to
                    853:     (effective only if the built-in stack extension method is used).  */
                    854: 
                    855: #ifndef YYMAXLIMIT
                    856: #define YYMAXLIMIT 10000
                    857: #endif
                    858: 
                    859: 
                    860: #line 165 "bison.simple"
                    861: int
                    862: yyparse()
                    863: {
                    864:   register int yystate;
                    865:   register int yyn;
                    866:   register short *yyssp;
                    867:   register YYSTYPE *yyvsp;
                    868:   YYLTYPE *yylsp;
                    869:   int yyerrstatus;     /*  number of tokens to shift before error messages enabled */
                    870:   int yychar1;         /*  lookahead token as an internal (translated) token number */
                    871: 
                    872:   short        yyssa[YYMAXDEPTH];      /*  the state stack                     */
                    873:   YYSTYPE yyvsa[YYMAXDEPTH];   /*  the semantic value stack            */
                    874:   YYLTYPE yylsa[YYMAXDEPTH];   /*  the location stack                  */
                    875: 
                    876:   short *yyss = yyssa;         /*  refer to the stacks thru separate pointers */
                    877:   YYSTYPE *yyvs = yyvsa;       /*  to allow yyoverflow to reallocate them elsewhere */
                    878:   YYLTYPE *yyls = yylsa;
                    879: 
                    880:   int yymaxdepth = YYMAXDEPTH;
                    881: 
                    882: #ifndef YYPURE
                    883:   int yychar;
                    884:   YYSTYPE yylval;
                    885:   YYLTYPE yylloc;
                    886: #endif
                    887: 
                    888: #ifdef YYDEBUG
                    889:   extern int yydebug;
                    890: #endif
                    891: 
                    892: 
                    893:   YYSTYPE yyval;               /*  the variable used to return         */
                    894:                                /*  semantic values from the action     */
                    895:                                /*  routines                            */
                    896: 
                    897:   int yylen;
                    898: 
                    899: #ifdef YYDEBUG
                    900:   if (yydebug)
                    901:     fprintf(stderr, "Starting parse\n");
                    902: #endif
                    903: 
                    904:   yystate = 0;
                    905:   yyerrstatus = 0;
                    906:   yynerr = 0;
                    907:   yychar = YYEMPTY;            /* Cause a token to be read.  */
                    908: 
                    909:   /* Initialize stack pointers.
                    910:      Waste one element of value and location stack
                    911:      so that they stay on the same level as the state stack.  */
                    912: 
                    913:   yyssp = yyss - 1;
                    914:   yyvsp = yyvs;
                    915:   yylsp = yyls;
                    916: 
                    917: /* Push a new state, which is found in  yystate  .  */
                    918: /* In all cases, when you get here, the value and location stacks
                    919:    have just been pushed. so pushing a state here evens the stacks.  */
                    920: yynewstate:
                    921: 
                    922:   *++yyssp = yystate;
                    923: 
                    924:   if (yyssp >= yyss + yymaxdepth - 1)
                    925:     {
                    926:       /* Give user a chance to reallocate the stack */
                    927:       /* Use copies of these so that the &'s don't force the real ones into memory. */
                    928:       YYSTYPE *yyvs1 = yyvs;
                    929:       YYLTYPE *yyls1 = yyls;
                    930:       short *yyss1 = yyss;
                    931: 
                    932:       /* Get the current used size of the three stacks, in elements.  */
                    933:       int size = yyssp - yyss + 1;
                    934: 
                    935: #ifdef yyoverflow
                    936:       /* Each stack pointer address is followed by the size of
                    937:         the data in use in that stack, in bytes.  */
                    938:       yyoverflow("parser stack overflow",
                    939:                 &yyss1, size * sizeof (*yyssp),
                    940:                 &yyvs1, size * sizeof (*yyvsp),
                    941:                 &yyls1, size * sizeof (*yylsp),
                    942:                 &yymaxdepth);
                    943: 
                    944:       yyss = yyss1; yyvs = yyvs1; yyls = yyls1;
                    945: #else /* no yyoverflow */
                    946:       /* Extend the stack our own way.  */
                    947:       if (yymaxdepth >= YYMAXLIMIT)
                    948:        yyerror("parser stack overflow");
                    949:       yymaxdepth *= 2;
                    950:       if (yymaxdepth > YYMAXLIMIT)
                    951:        yymaxdepth = YYMAXLIMIT;
                    952:       yyss = (short *) alloca (yymaxdepth * sizeof (*yyssp));
                    953:       bcopy ((char *)yyss1, (char *)yyss, size * sizeof (*yyssp));
                    954:       yyvs = (YYSTYPE *) alloca (yymaxdepth * sizeof (*yyvsp));
                    955:       bcopy ((char *)yyvs1, (char *)yyvs, size * sizeof (*yyvsp));
                    956: #ifdef YYLSP_NEEDED
                    957:       yyls = (YYLTYPE *) alloca (yymaxdepth * sizeof (*yylsp));
                    958:       bcopy ((char *)yyls1, (char *)yyls, size * sizeof (*yylsp));
                    959: #endif
                    960: #endif /* no yyoverflow */
                    961: 
                    962:       yyssp = yyss + size - 1;
                    963:       yyvsp = yyvs + size - 1;
                    964: #ifdef YYLSP_NEEDED
                    965:       yylsp = yyls + size - 1;
                    966: #endif
                    967: 
                    968: #ifdef YYDEBUG
                    969:       if (yydebug)
                    970:        fprintf(stderr, "Stack size increased to %d\n", yymaxdepth);
                    971: #endif
                    972: 
                    973:       if (yyssp >= yyss + yymaxdepth - 1)
                    974:        YYERROR;
                    975:     }
                    976: 
                    977: #ifdef YYDEBUG
                    978:   if (yydebug)
                    979:     fprintf(stderr, "Entering state %d\n", yystate);
                    980: #endif
                    981: 
                    982: /* Do appropriate processing given the current state.  */
                    983: /* Read a lookahead token if we need one and don't already have one.  */
                    984: yyresume:
                    985: 
                    986:   /* First try to decide what to do without reference to lookahead token.  */
                    987: 
                    988:   yyn = yypact[yystate];
                    989:   if (yyn == YYFLAG)
                    990:     goto yydefault;
                    991: 
                    992:   /* Not known => get a lookahead token if don't already have one.  */
                    993: 
                    994:   /* yychar is either YYEMPTY or YYEOF
                    995:      or a valid token in external form.  */
                    996: 
                    997:   if (yychar == YYEMPTY)
                    998:     {
                    999: #ifdef YYDEBUG
                   1000:       if (yydebug)
                   1001:        fprintf(stderr, "Reading a token: ");
                   1002: #endif
                   1003:       yychar = YYLEX;
                   1004:     }
                   1005: 
                   1006:   /* Convert token to internal form (in yychar1) for indexing tables with */
                   1007: 
                   1008:   if (yychar <= 0)             /* This means end of input. */
                   1009:     {
                   1010:       yychar1 = 0;
                   1011:       yychar = YYEOF;          /* Don't call YYLEX any more */
                   1012: 
                   1013: #ifdef YYDEBUG
                   1014:       if (yydebug)
                   1015:        fprintf(stderr, "Now at end of input.\n");
                   1016: #endif
                   1017:     }
                   1018:   else
                   1019:     {
                   1020:       yychar1 = YYTRANSLATE(yychar);
                   1021: 
                   1022: #ifdef YYDEBUG
                   1023:       if (yydebug)
                   1024:        fprintf(stderr, "Next token is %d (%s)\n", yychar, yytname[yychar1]);
                   1025: #endif
                   1026:     }
                   1027: 
                   1028:   yyn += yychar1;
                   1029:   if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != yychar1)
                   1030:     goto yydefault;
                   1031: 
                   1032:   yyn = yytable[yyn];
                   1033: 
                   1034:   /* yyn is what to do for this token type in this state.
                   1035:      Negative => reduce, -yyn is rule number.
                   1036:      Positive => shift, yyn is new state.
                   1037:        New state is final state => don't bother to shift,
                   1038:        just return success.
                   1039:      0, or most negative number => error.  */
                   1040: 
                   1041:   if (yyn < 0)
                   1042:     {
                   1043:       if (yyn == YYFLAG)
                   1044:        goto yyerrlab;
                   1045:       yyn = -yyn;
                   1046:       goto yyreduce;
                   1047:     }
                   1048:   else if (yyn == 0)
                   1049:     goto yyerrlab;
                   1050: 
                   1051:   if (yyn == YYFINAL)
                   1052:     YYACCEPT;
                   1053: 
                   1054:   /* Shift the lookahead token.  */
                   1055: 
                   1056: #ifdef YYDEBUG
                   1057:   if (yydebug)
                   1058:     fprintf(stderr, "Shifting token %d (%s), ", yychar, yytname[yychar1]);
                   1059: #endif
                   1060: 
                   1061:   /* Discard the token being shifted unless it is eof.  */
                   1062:   if (yychar != YYEOF)
                   1063:     yychar = YYEMPTY;
                   1064: 
                   1065:   *++yyvsp = yylval;
                   1066: #ifdef YYLSP_NEEDED
                   1067:   *++yylsp = yylloc;
                   1068: #endif
                   1069: 
                   1070:   /* count tokens shifted since error; after three, turn off error status.  */
                   1071:   if (yyerrstatus) yyerrstatus--;
                   1072: 
                   1073:   yystate = yyn;
                   1074:   goto yynewstate;
                   1075: 
                   1076: /* Do the default action for the current state.  */
                   1077: yydefault:
                   1078: 
                   1079:   yyn = yydefact[yystate];
                   1080:   if (yyn == 0)
                   1081:     goto yyerrlab;
                   1082: 
                   1083: /* Do a reduction.  yyn is the number of a rule to reduce with.  */
                   1084: yyreduce:
                   1085:   yylen = yyr2[yyn];
                   1086:   yyval = yyvsp[1-yylen]; /* implement default value of the action */
                   1087: 
                   1088: #ifdef YYDEBUG
                   1089:   if (yydebug)
                   1090:     {
                   1091:       if (yylen == 1)
                   1092:        fprintf (stderr, "Reducing 1 value via line %d, ",
                   1093:                 yyrline[yyn]);
                   1094:       else
                   1095:        fprintf (stderr, "Reducing %d values via line %d, ",
                   1096:                 yylen, yyrline[yyn]);
                   1097:     }
                   1098: #endif
                   1099: 
                   1100: 
                   1101:   switch (yyn) {
                   1102: 
                   1103: case 3:
                   1104: #line 173 "parse.y"
                   1105: {yyval.ttype = NULL_TREE; ;
                   1106:     break;}
                   1107: case 5:
                   1108: #line 174 "parse.y"
                   1109: {yyval.ttype = NULL_TREE; ;
                   1110:     break;}
                   1111: case 9:
                   1112: #line 181 "parse.y"
                   1113: { if (pedantic)
                   1114:                    warning ("ANSI C forbids use of `asm' keyword");
                   1115:                  if (TREE_CHAIN (yyvsp[-2].ttype)) yyvsp[-2].ttype = combine_strings (yyvsp[-2].ttype);
                   1116:                  assemble_asm (yyvsp[-2].ttype); ;
                   1117:     break;}
                   1118: case 10:
                   1119: #line 189 "parse.y"
                   1120: { if (pedantic)
                   1121:                    error ("ANSI C forbids data definition lacking type or storage class");
                   1122:                  else
                   1123:                    warning ("data definition lacks type or storage class"); ;
                   1124:     break;}
                   1125: case 11:
                   1126: #line 194 "parse.y"
                   1127: {;
                   1128:     break;}
                   1129: case 12:
                   1130: #line 196 "parse.y"
                   1131: {;
                   1132:     break;}
                   1133: case 13:
                   1134: #line 198 "parse.y"
                   1135: { error ("empty declaration"); ;
                   1136:     break;}
                   1137: case 14:
                   1138: #line 200 "parse.y"
                   1139: { shadow_tag (yyvsp[-1].ttype); ;
                   1140:     break;}
                   1141: case 18:
                   1142: #line 208 "parse.y"
                   1143: { if (! start_function (yyvsp[-2].ttype, yyvsp[0].ttype))
                   1144:                    YYFAIL;
                   1145:                  reinit_parse_for_function (); ;
                   1146:     break;}
                   1147: case 19:
                   1148: #line 212 "parse.y"
                   1149: { store_parm_decls (); ;
                   1150:     break;}
                   1151: case 20:
                   1152: #line 214 "parse.y"
                   1153: { finish_function (); ;
                   1154:     break;}
                   1155: case 21:
                   1156: #line 216 "parse.y"
                   1157: { ;
                   1158:     break;}
                   1159: case 22:
                   1160: #line 218 "parse.y"
                   1161: { if (! start_function (yyvsp[-2].ttype, yyvsp[0].ttype))
                   1162:                    YYFAIL;
                   1163:                  reinit_parse_for_function (); ;
                   1164:     break;}
                   1165: case 23:
                   1166: #line 222 "parse.y"
                   1167: { store_parm_decls (); ;
                   1168:     break;}
                   1169: case 24:
                   1170: #line 224 "parse.y"
                   1171: { finish_function (); ;
                   1172:     break;}
                   1173: case 25:
                   1174: #line 226 "parse.y"
                   1175: { ;
                   1176:     break;}
                   1177: case 26:
                   1178: #line 228 "parse.y"
                   1179: { if (! start_function (0, yyvsp[0].ttype))
                   1180:                    YYFAIL;
                   1181:                  reinit_parse_for_function (); ;
                   1182:     break;}
                   1183: case 27:
                   1184: #line 232 "parse.y"
                   1185: { store_parm_decls (); ;
                   1186:     break;}
                   1187: case 28:
                   1188: #line 234 "parse.y"
                   1189: { finish_function (); ;
                   1190:     break;}
                   1191: case 29:
                   1192: #line 236 "parse.y"
                   1193: { ;
                   1194:     break;}
                   1195: case 32:
                   1196: #line 245 "parse.y"
                   1197: { yyval.code = ADDR_EXPR; ;
                   1198:     break;}
                   1199: case 33:
                   1200: #line 247 "parse.y"
                   1201: { yyval.code = NEGATE_EXPR; ;
                   1202:     break;}
                   1203: case 34:
                   1204: #line 249 "parse.y"
                   1205: { yyval.code = CONVERT_EXPR; ;
                   1206:     break;}
                   1207: case 35:
                   1208: #line 251 "parse.y"
                   1209: { yyval.code = PREINCREMENT_EXPR; ;
                   1210:     break;}
                   1211: case 36:
                   1212: #line 253 "parse.y"
                   1213: { yyval.code = PREDECREMENT_EXPR; ;
                   1214:     break;}
                   1215: case 37:
                   1216: #line 255 "parse.y"
                   1217: { yyval.code = BIT_NOT_EXPR; ;
                   1218:     break;}
                   1219: case 38:
                   1220: #line 257 "parse.y"
                   1221: { yyval.code = TRUTH_NOT_EXPR; ;
                   1222:     break;}
                   1223: case 39:
                   1224: #line 261 "parse.y"
                   1225: { yyval.ttype = build_compound_expr (yyvsp[0].ttype); ;
                   1226:     break;}
                   1227: case 40:
                   1228: #line 266 "parse.y"
                   1229: { yyval.ttype = NULL_TREE; ;
                   1230:     break;}
                   1231: case 42:
                   1232: #line 272 "parse.y"
                   1233: { yyval.ttype = build_tree_list (NULL_TREE, yyvsp[0].ttype); ;
                   1234:     break;}
                   1235: case 43:
                   1236: #line 274 "parse.y"
                   1237: { chainon (yyvsp[-2].ttype, build_tree_list (NULL_TREE, yyvsp[0].ttype)); ;
                   1238:     break;}
                   1239: case 45:
                   1240: #line 280 "parse.y"
                   1241: { yyval.ttype = build_indirect_ref (yyvsp[0].ttype, "unary *"); ;
                   1242:     break;}
                   1243: case 46:
                   1244: #line 282 "parse.y"
                   1245: { yyval.ttype = build_unary_op (yyvsp[-1].code, yyvsp[0].ttype, 0); ;
                   1246:     break;}
                   1247: case 47:
                   1248: #line 284 "parse.y"
                   1249: { tree type = groktypename (yyvsp[-2].ttype);
                   1250:                  yyval.ttype = build_c_cast (type, yyvsp[0].ttype); ;
                   1251:     break;}
                   1252: case 48:
                   1253: #line 287 "parse.y"
                   1254: { tree type = groktypename (yyvsp[-5].ttype);
                   1255:                  if (pedantic)
                   1256:                    warning ("ANSI C forbids constructor-expressions");
                   1257:                  yyval.ttype = digest_init (type, build_nt (CONSTRUCTOR, NULL_TREE, nreverse (yyvsp[-2].ttype)), 0);
                   1258:                  if (TREE_CODE (type) == ARRAY_TYPE && TYPE_SIZE (type) == 0)
                   1259:                    {
                   1260:                      int failure = complete_array_type (type, yyval.ttype, 1);
                   1261:                      if (failure)
                   1262:                        abort ();
                   1263:                    }
                   1264:                ;
                   1265:     break;}
                   1266: case 49:
                   1267: #line 299 "parse.y"
                   1268: { if (TREE_CODE (yyvsp[0].ttype) == COMPONENT_REF
                   1269:                      && TREE_PACKED (TREE_OPERAND (yyvsp[0].ttype, 1)))
                   1270:                    error ("sizeof applied to a bit-field");
                   1271:                  yyval.ttype = c_sizeof (TREE_TYPE (yyvsp[0].ttype)); ;
                   1272:     break;}
                   1273: case 50:
                   1274: #line 304 "parse.y"
                   1275: { yyval.ttype = c_sizeof (groktypename (yyvsp[-1].ttype)); ;
                   1276:     break;}
                   1277: case 51:
                   1278: #line 306 "parse.y"
                   1279: { if (TREE_CODE (yyvsp[0].ttype) == COMPONENT_REF
                   1280:                      && TREE_PACKED (TREE_OPERAND (yyvsp[0].ttype, 1)))
                   1281:                    error ("__alignof applied to a bit-field");
                   1282:                  yyval.ttype = c_alignof (TREE_TYPE (yyvsp[0].ttype)); ;
                   1283:     break;}
                   1284: case 52:
                   1285: #line 311 "parse.y"
                   1286: { yyval.ttype = c_alignof (groktypename (yyvsp[-1].ttype)); ;
                   1287:     break;}
                   1288: case 53:
                   1289: #line 313 "parse.y"
                   1290: { yyval.ttype = build_binary_op (yyvsp[-1].code, yyvsp[-2].ttype, yyvsp[0].ttype); ;
                   1291:     break;}
                   1292: case 54:
                   1293: #line 315 "parse.y"
                   1294: { yyval.ttype = build_binary_op (yyvsp[-1].code, yyvsp[-2].ttype, yyvsp[0].ttype); ;
                   1295:     break;}
                   1296: case 55:
                   1297: #line 317 "parse.y"
                   1298: { yyval.ttype = build_binary_op (yyvsp[-1].code, yyvsp[-2].ttype, yyvsp[0].ttype); ;
                   1299:     break;}
                   1300: case 56:
                   1301: #line 319 "parse.y"
                   1302: { yyval.ttype = build_binary_op (yyvsp[-1].code, yyvsp[-2].ttype, yyvsp[0].ttype); ;
                   1303:     break;}
                   1304: case 57:
                   1305: #line 321 "parse.y"
                   1306: { yyval.ttype = build_binary_op (yyvsp[-1].code, yyvsp[-2].ttype, yyvsp[0].ttype); ;
                   1307:     break;}
                   1308: case 58:
                   1309: #line 323 "parse.y"
                   1310: { yyval.ttype = build_binary_op (yyvsp[-1].code, yyvsp[-2].ttype, yyvsp[0].ttype); ;
                   1311:     break;}
                   1312: case 59:
                   1313: #line 325 "parse.y"
                   1314: { yyval.ttype = build_binary_op (yyvsp[-1].code, yyvsp[-2].ttype, yyvsp[0].ttype); ;
                   1315:     break;}
                   1316: case 60:
                   1317: #line 327 "parse.y"
                   1318: { yyval.ttype = build_binary_op (yyvsp[-1].code, yyvsp[-2].ttype, yyvsp[0].ttype); ;
                   1319:     break;}
                   1320: case 61:
                   1321: #line 329 "parse.y"
                   1322: { yyval.ttype = build_binary_op (yyvsp[-1].code, yyvsp[-2].ttype, yyvsp[0].ttype); ;
                   1323:     break;}
                   1324: case 62:
                   1325: #line 331 "parse.y"
                   1326: { yyval.ttype = build_binary_op (yyvsp[-1].code, yyvsp[-2].ttype, yyvsp[0].ttype); ;
                   1327:     break;}
                   1328: case 63:
                   1329: #line 333 "parse.y"
                   1330: { yyval.ttype = build_binary_op (yyvsp[-1].code, yyvsp[-2].ttype, yyvsp[0].ttype); ;
                   1331:     break;}
                   1332: case 64:
                   1333: #line 335 "parse.y"
                   1334: { yyval.ttype = build_binary_op (yyvsp[-1].code, yyvsp[-2].ttype, yyvsp[0].ttype); ;
                   1335:     break;}
                   1336: case 65:
                   1337: #line 337 "parse.y"
                   1338: { yyval.ttype = build_binary_op (TRUTH_ANDIF_EXPR, yyvsp[-2].ttype, yyvsp[0].ttype); ;
                   1339:     break;}
                   1340: case 66:
                   1341: #line 339 "parse.y"
                   1342: { yyval.ttype = build_binary_op (TRUTH_ORIF_EXPR, yyvsp[-2].ttype, yyvsp[0].ttype); ;
                   1343:     break;}
                   1344: case 67:
                   1345: #line 341 "parse.y"
                   1346: { yyval.ttype = build_conditional_expr (yyvsp[-4].ttype, yyvsp[-2].ttype, yyvsp[0].ttype); ;
                   1347:     break;}
                   1348: case 68:
                   1349: #line 343 "parse.y"
                   1350: { yyval.ttype = build_modify_expr (yyvsp[-2].ttype, NOP_EXPR, yyvsp[0].ttype); ;
                   1351:     break;}
                   1352: case 69:
                   1353: #line 345 "parse.y"
                   1354: { yyval.ttype = build_modify_expr (yyvsp[-2].ttype, yyvsp[-1].code, yyvsp[0].ttype); ;
                   1355:     break;}
                   1356: case 70:
                   1357: #line 350 "parse.y"
                   1358: { yyval.ttype = lastiddecl;
                   1359:                  if (!yyval.ttype)
                   1360:                    {
                   1361:                      if (yychar == YYEMPTY)
                   1362:                        yychar = YYLEX;
                   1363:                      if (yychar == '(')
                   1364:                        yyval.ttype = implicitly_declare (yyvsp[0].ttype);
                   1365:                      else
                   1366:                        {
                   1367:                          if (IDENTIFIER_GLOBAL_VALUE (yyvsp[0].ttype) != error_mark_node)
                   1368:                            error ("undeclared variable `%s' (first use here)",
                   1369:                                   IDENTIFIER_POINTER (yyvsp[0].ttype));
                   1370:                          yyval.ttype = error_mark_node;
                   1371:                          /* Prevent repeated error messages.  */
                   1372:                          IDENTIFIER_GLOBAL_VALUE (yyvsp[0].ttype) = error_mark_node;
                   1373:                        }
                   1374:                    }
                   1375:                  if (TREE_CODE (yyval.ttype) == CONST_DECL)
                   1376:                    yyval.ttype = DECL_INITIAL (yyval.ttype);
                   1377:                ;
                   1378:     break;}
                   1379: case 72:
                   1380: #line 372 "parse.y"
                   1381: { yyval.ttype = combine_strings (yyvsp[0].ttype); ;
                   1382:     break;}
                   1383: case 73:
                   1384: #line 374 "parse.y"
                   1385: { yyval.ttype = yyvsp[-1].ttype; ;
                   1386:     break;}
                   1387: case 74:
                   1388: #line 376 "parse.y"
                   1389: { yyval.ttype = error_mark_node; ;
                   1390:     break;}
                   1391: case 75:
                   1392: #line 378 "parse.y"
                   1393: { if (current_function_decl == 0)
                   1394:                    {
                   1395:                      error ("braced-group within expression allowed only inside a function");
                   1396:                      YYFAIL;
                   1397:                    }
                   1398:                  expand_start_stmt_expr (); ;
                   1399:     break;}
                   1400: case 76:
                   1401: #line 385 "parse.y"
                   1402: { if (pedantic)
                   1403:                    warning ("ANSI C forbids braced-groups within expressions");
                   1404:                  yyval.ttype = get_last_expr ();
                   1405:                  expand_end_stmt_expr (); ;
                   1406:     break;}
                   1407: case 77:
                   1408: #line 390 "parse.y"
                   1409: { yyval.ttype = build_function_call (yyvsp[-3].ttype, yyvsp[-1].ttype); ;
                   1410:     break;}
                   1411: case 78:
                   1412: #line 392 "parse.y"
                   1413: { yyval.ttype = build_array_ref (yyvsp[-3].ttype, yyvsp[-1].ttype); ;
                   1414:     break;}
                   1415: case 79:
                   1416: #line 394 "parse.y"
                   1417: { yyval.ttype = build_component_ref (yyvsp[-2].ttype, yyvsp[0].ttype); ;
                   1418:     break;}
                   1419: case 80:
                   1420: #line 396 "parse.y"
                   1421: { yyval.ttype = build_component_ref (build_indirect_ref (yyvsp[-2].ttype, "->"), yyvsp[0].ttype); ;
                   1422:     break;}
                   1423: case 81:
                   1424: #line 398 "parse.y"
                   1425: { yyval.ttype = build_unary_op (POSTINCREMENT_EXPR, yyvsp[-1].ttype, 0); ;
                   1426:     break;}
                   1427: case 82:
                   1428: #line 400 "parse.y"
                   1429: { yyval.ttype = build_unary_op (POSTDECREMENT_EXPR, yyvsp[-1].ttype, 0); ;
                   1430:     break;}
                   1431: case 84:
                   1432: #line 407 "parse.y"
                   1433: { yyval.ttype = chainon (yyvsp[-1].ttype, yyvsp[0].ttype); ;
                   1434:     break;}
                   1435: case 91:
                   1436: #line 425 "parse.y"
                   1437: { current_declspecs = yyvsp[0].ttype;
                   1438:                  yyval.itype = suspend_momentary (); ;
                   1439:     break;}
                   1440: case 92:
                   1441: #line 431 "parse.y"
                   1442: { resume_momentary (yyvsp[-2].itype); ;
                   1443:     break;}
                   1444: case 93:
                   1445: #line 433 "parse.y"
                   1446: { resume_momentary (yyvsp[-2].itype); ;
                   1447:     break;}
                   1448: case 94:
                   1449: #line 435 "parse.y"
                   1450: { shadow_tag (yyvsp[-1].ttype); ;
                   1451:     break;}
                   1452: case 95:
                   1453: #line 437 "parse.y"
                   1454: { warning ("empty declaration"); ;
                   1455:     break;}
                   1456: case 96:
                   1457: #line 446 "parse.y"
                   1458: { yyval.ttype = tree_cons (NULL_TREE, yyvsp[-1].ttype, yyvsp[0].ttype); ;
                   1459:     break;}
                   1460: case 97:
                   1461: #line 448 "parse.y"
                   1462: { yyval.ttype = chainon (yyvsp[0].ttype, tree_cons (NULL_TREE, yyvsp[-1].ttype, yyvsp[-2].ttype)); ;
                   1463:     break;}
                   1464: case 98:
                   1465: #line 452 "parse.y"
                   1466: { yyval.ttype = NULL_TREE; ;
                   1467:     break;}
                   1468: case 99:
                   1469: #line 454 "parse.y"
                   1470: { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); ;
                   1471:     break;}
                   1472: case 100:
                   1473: #line 456 "parse.y"
                   1474: { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); ;
                   1475:     break;}
                   1476: case 101:
                   1477: #line 465 "parse.y"
                   1478: { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, NULL_TREE); ;
                   1479:     break;}
                   1480: case 102:
                   1481: #line 467 "parse.y"
                   1482: { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, NULL_TREE); ;
                   1483:     break;}
                   1484: case 103:
                   1485: #line 469 "parse.y"
                   1486: { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); ;
                   1487:     break;}
                   1488: case 104:
                   1489: #line 471 "parse.y"
                   1490: { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); ;
                   1491:     break;}
                   1492: case 105:
                   1493: #line 481 "parse.y"
                   1494: { yyval.ttype = tree_cons (NULL_TREE, yyvsp[-1].ttype, yyvsp[0].ttype); ;
                   1495:     break;}
                   1496: case 106:
                   1497: #line 483 "parse.y"
                   1498: { yyval.ttype = chainon (yyvsp[0].ttype, tree_cons (NULL_TREE, yyvsp[-1].ttype, yyvsp[-2].ttype)); ;
                   1499:     break;}
                   1500: case 107:
                   1501: #line 487 "parse.y"
                   1502: { yyval.ttype = NULL_TREE; ;
                   1503:     break;}
                   1504: case 108:
                   1505: #line 489 "parse.y"
                   1506: { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); ;
                   1507:     break;}
                   1508: case 112:
                   1509: #line 500 "parse.y"
                   1510: { yyval.ttype = TREE_TYPE (yyvsp[-1].ttype);
                   1511:                  if (pedantic)
                   1512:                    warning ("ANSI C forbids `typeof'") ;
                   1513:     break;}
                   1514: case 113:
                   1515: #line 504 "parse.y"
                   1516: { yyval.ttype = groktypename (yyvsp[-1].ttype);
                   1517:                  if (pedantic)
                   1518:                    warning ("ANSI C forbids `typeof'") ;
                   1519:     break;}
                   1520: case 121:
                   1521: #line 528 "parse.y"
                   1522: { yyval.ttype = NULL_TREE; ;
                   1523:     break;}
                   1524: case 122:
                   1525: #line 530 "parse.y"
                   1526: { if (TREE_CHAIN (yyvsp[-1].ttype)) yyvsp[-1].ttype = combine_strings (yyvsp[-1].ttype);
                   1527:                  yyval.ttype = yyvsp[-1].ttype;
                   1528:                  if (pedantic)
                   1529:                    warning ("ANSI C forbids use of `asm' keyword");
                   1530:                ;
                   1531:     break;}
                   1532: case 123:
                   1533: #line 539 "parse.y"
                   1534: { yyval.ttype = start_decl (yyvsp[-2].ttype, current_declspecs, 1); ;
                   1535:     break;}
                   1536: case 124:
                   1537: #line 542 "parse.y"
                   1538: { finish_decl (yyvsp[-1].ttype, yyvsp[0].ttype, yyvsp[-3].ttype); ;
                   1539:     break;}
                   1540: case 125:
                   1541: #line 544 "parse.y"
                   1542: { tree d = start_decl (yyvsp[-1].ttype, current_declspecs, 0);
                   1543:                  finish_decl (d, NULL_TREE, yyvsp[0].ttype); ;
                   1544:     break;}
                   1545: case 126:
                   1546: #line 550 "parse.y"
                   1547: { yyval.ttype = start_decl (yyvsp[-2].ttype, current_declspecs, 1); ;
                   1548:     break;}
                   1549: case 127:
                   1550: #line 553 "parse.y"
                   1551: { finish_decl (yyvsp[-1].ttype, yyvsp[0].ttype, yyvsp[-3].ttype); ;
                   1552:     break;}
                   1553: case 128:
                   1554: #line 555 "parse.y"
                   1555: { tree d = start_decl (yyvsp[-1].ttype, current_declspecs, 0);
                   1556:                  finish_decl (d, NULL_TREE, yyvsp[0].ttype); ;
                   1557:     break;}
                   1558: case 130:
                   1559: #line 562 "parse.y"
                   1560: { yyval.ttype = build_nt (CONSTRUCTOR, NULL_TREE, nreverse (yyvsp[-1].ttype)); ;
                   1561:     break;}
                   1562: case 131:
                   1563: #line 564 "parse.y"
                   1564: { yyval.ttype = build_nt (CONSTRUCTOR, NULL_TREE, nreverse (yyvsp[-2].ttype)); ;
                   1565:     break;}
                   1566: case 132:
                   1567: #line 566 "parse.y"
                   1568: { yyval.ttype = NULL_TREE; ;
                   1569:     break;}
                   1570: case 133:
                   1571: #line 573 "parse.y"
                   1572: { yyval.ttype = build_tree_list (NULL_TREE, yyvsp[0].ttype); ;
                   1573:     break;}
                   1574: case 134:
                   1575: #line 575 "parse.y"
                   1576: { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-2].ttype); ;
                   1577:     break;}
                   1578: case 137:
                   1579: #line 590 "parse.y"
                   1580: { yyval.ttype = yyvsp[-1].ttype; ;
                   1581:     break;}
                   1582: case 138:
                   1583: #line 592 "parse.y"
                   1584: { yyval.ttype = build_nt (CALL_EXPR, yyvsp[-2].ttype, yyvsp[0].ttype, NULL_TREE); ;
                   1585:     break;}
                   1586: case 139:
                   1587: #line 597 "parse.y"
                   1588: { yyval.ttype = build_nt (ARRAY_REF, yyvsp[-3].ttype, yyvsp[-1].ttype); ;
                   1589:     break;}
                   1590: case 140:
                   1591: #line 599 "parse.y"
                   1592: { yyval.ttype = build_nt (ARRAY_REF, yyvsp[-2].ttype, NULL_TREE); ;
                   1593:     break;}
                   1594: case 141:
                   1595: #line 601 "parse.y"
                   1596: { yyval.ttype = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ;
                   1597:     break;}
                   1598: case 143:
                   1599: #line 612 "parse.y"
                   1600: { yyval.ttype = build_nt (CALL_EXPR, yyvsp[-2].ttype, yyvsp[0].ttype, NULL_TREE); ;
                   1601:     break;}
                   1602: case 144:
                   1603: #line 617 "parse.y"
                   1604: { yyval.ttype = build_nt (ARRAY_REF, yyvsp[-3].ttype, yyvsp[-1].ttype); ;
                   1605:     break;}
                   1606: case 145:
                   1607: #line 619 "parse.y"
                   1608: { yyval.ttype = build_nt (ARRAY_REF, yyvsp[-2].ttype, NULL_TREE); ;
                   1609:     break;}
                   1610: case 146:
                   1611: #line 621 "parse.y"
                   1612: { yyval.ttype = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ;
                   1613:     break;}
                   1614: case 148:
                   1615: #line 630 "parse.y"
                   1616: { yyval.ttype = build_nt (CALL_EXPR, yyvsp[-2].ttype, yyvsp[0].ttype, NULL_TREE); ;
                   1617:     break;}
                   1618: case 149:
                   1619: #line 635 "parse.y"
                   1620: { yyval.ttype = yyvsp[-1].ttype; ;
                   1621:     break;}
                   1622: case 150:
                   1623: #line 637 "parse.y"
                   1624: { yyval.ttype = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ;
                   1625:     break;}
                   1626: case 151:
                   1627: #line 639 "parse.y"
                   1628: { yyval.ttype = build_nt (ARRAY_REF, yyvsp[-3].ttype, yyvsp[-1].ttype); ;
                   1629:     break;}
                   1630: case 152:
                   1631: #line 641 "parse.y"
                   1632: { yyval.ttype = build_nt (ARRAY_REF, yyvsp[-2].ttype, NULL_TREE); ;
                   1633:     break;}
                   1634: case 154:
                   1635: #line 647 "parse.y"
                   1636: { yyval.ttype = start_struct (RECORD_TYPE, yyvsp[-1].ttype);
                   1637:                  /* Start scope of tag before parsing components.  */
                   1638:                ;
                   1639:     break;}
                   1640: case 155:
                   1641: #line 651 "parse.y"
                   1642: { yyval.ttype = finish_struct (yyvsp[-2].ttype, yyvsp[-1].ttype);
                   1643:                  /* Really define the structure.  */
                   1644:                ;
                   1645:     break;}
                   1646: case 156:
                   1647: #line 655 "parse.y"
                   1648: { yyval.ttype = finish_struct (start_struct (RECORD_TYPE, NULL_TREE),
                   1649:                                      yyvsp[-1].ttype); ;
                   1650:     break;}
                   1651: case 157:
                   1652: #line 658 "parse.y"
                   1653: { yyval.ttype = xref_tag (RECORD_TYPE, yyvsp[0].ttype); ;
                   1654:     break;}
                   1655: case 158:
                   1656: #line 660 "parse.y"
                   1657: { yyval.ttype = start_struct (UNION_TYPE, yyvsp[-1].ttype); ;
                   1658:     break;}
                   1659: case 159:
                   1660: #line 662 "parse.y"
                   1661: { yyval.ttype = finish_struct (yyvsp[-2].ttype, yyvsp[-1].ttype); ;
                   1662:     break;}
                   1663: case 160:
                   1664: #line 664 "parse.y"
                   1665: { yyval.ttype = finish_struct (start_struct (UNION_TYPE, NULL_TREE),
                   1666:                                      yyvsp[-1].ttype); ;
                   1667:     break;}
                   1668: case 161:
                   1669: #line 667 "parse.y"
                   1670: { yyval.ttype = xref_tag (UNION_TYPE, yyvsp[0].ttype); ;
                   1671:     break;}
                   1672: case 162:
                   1673: #line 669 "parse.y"
                   1674: { yyvsp[0].itype = suspend_momentary ();
                   1675:                  yyval.ttype = start_enum (yyvsp[-1].ttype); ;
                   1676:     break;}
                   1677: case 163:
                   1678: #line 672 "parse.y"
                   1679: { yyval.ttype = finish_enum (yyvsp[-3].ttype, nreverse (yyvsp[-2].ttype));
                   1680:                  resume_momentary (yyvsp[-4].itype); ;
                   1681:     break;}
                   1682: case 164:
                   1683: #line 675 "parse.y"
                   1684: { yyvsp[0].itype = suspend_momentary ();
                   1685:                  yyval.ttype = start_enum (NULL_TREE); ;
                   1686:     break;}
                   1687: case 165:
                   1688: #line 678 "parse.y"
                   1689: { yyval.ttype = finish_enum (yyvsp[-3].ttype, nreverse (yyvsp[-2].ttype));
                   1690:                  resume_momentary (yyvsp[-4].itype); ;
                   1691:     break;}
                   1692: case 166:
                   1693: #line 681 "parse.y"
                   1694: { yyval.ttype = xref_tag (ENUMERAL_TYPE, yyvsp[0].ttype); ;
                   1695:     break;}
                   1696: case 169:
                   1697: #line 690 "parse.y"
                   1698: { yyval.ttype = NULL_TREE; ;
                   1699:     break;}
                   1700: case 170:
                   1701: #line 692 "parse.y"
                   1702: { yyval.ttype = chainon (yyvsp[-2].ttype, yyvsp[-1].ttype); ;
                   1703:     break;}
                   1704: case 171:
                   1705: #line 694 "parse.y"
                   1706: { if (pedantic) 
                   1707:                    warning ("extra semicolon in struct or union specified"); ;
                   1708:     break;}
                   1709: case 172:
                   1710: #line 709 "parse.y"
                   1711: { yyval.ttype = yyvsp[0].ttype;
                   1712:                  resume_momentary (yyvsp[-1].itype); ;
                   1713:     break;}
                   1714: case 173:
                   1715: #line 712 "parse.y"
                   1716: { yyval.ttype = yyvsp[0].ttype;
                   1717:                  resume_momentary (yyvsp[-1].itype); ;
                   1718:     break;}
                   1719: case 174:
                   1720: #line 715 "parse.y"
                   1721: { yyval.ttype = NULL_TREE; ;
                   1722:     break;}
                   1723: case 175:
                   1724: #line 720 "parse.y"
                   1725: { yyval.ttype = NULL_TREE; ;
                   1726:     break;}
                   1727: case 177:
                   1728: #line 723 "parse.y"
                   1729: { yyval.ttype = chainon (yyvsp[-2].ttype, yyvsp[0].ttype); ;
                   1730:     break;}
                   1731: case 178:
                   1732: #line 728 "parse.y"
                   1733: { yyval.ttype = grokfield (input_filename, lineno, yyvsp[0].ttype, current_declspecs, NULL_TREE); ;
                   1734:     break;}
                   1735: case 179:
                   1736: #line 730 "parse.y"
                   1737: { yyval.ttype = grokfield (input_filename, lineno, yyvsp[-2].ttype, current_declspecs, yyvsp[0].ttype); ;
                   1738:     break;}
                   1739: case 180:
                   1740: #line 732 "parse.y"
                   1741: { yyval.ttype = grokfield (input_filename, lineno, NULL_TREE, current_declspecs, yyvsp[0].ttype); ;
                   1742:     break;}
                   1743: case 182:
                   1744: #line 743 "parse.y"
                   1745: { yyval.ttype = chainon (yyvsp[0].ttype, yyvsp[-2].ttype); ;
                   1746:     break;}
                   1747: case 183:
                   1748: #line 749 "parse.y"
                   1749: { yyval.ttype = build_enumerator (yyvsp[0].ttype, NULL_TREE); ;
                   1750:     break;}
                   1751: case 184:
                   1752: #line 751 "parse.y"
                   1753: { yyval.ttype = build_enumerator (yyvsp[-2].ttype, yyvsp[0].ttype); ;
                   1754:     break;}
                   1755: case 185:
                   1756: #line 756 "parse.y"
                   1757: { yyval.ttype = build_tree_list (yyvsp[-1].ttype, yyvsp[0].ttype); ;
                   1758:     break;}
                   1759: case 186:
                   1760: #line 758 "parse.y"
                   1761: { yyval.ttype = build_tree_list (yyvsp[-1].ttype, yyvsp[0].ttype); ;
                   1762:     break;}
                   1763: case 187:
                   1764: #line 763 "parse.y"
                   1765: { yyval.ttype = NULL_TREE; ;
                   1766:     break;}
                   1767: case 189:
                   1768: #line 769 "parse.y"
                   1769: { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, NULL_TREE); ;
                   1770:     break;}
                   1771: case 190:
                   1772: #line 771 "parse.y"
                   1773: { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); ;
                   1774:     break;}
                   1775: case 191:
                   1776: #line 776 "parse.y"
                   1777: { yyval.ttype = NULL_TREE; ;
                   1778:     break;}
                   1779: case 192:
                   1780: #line 778 "parse.y"
                   1781: { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); ;
                   1782:     break;}
                   1783: case 193:
                   1784: #line 783 "parse.y"
                   1785: { yyval.ttype = yyvsp[-1].ttype; ;
                   1786:     break;}
                   1787: case 194:
                   1788: #line 786 "parse.y"
                   1789: { yyval.ttype = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ;
                   1790:     break;}
                   1791: case 195:
                   1792: #line 788 "parse.y"
                   1793: { yyval.ttype = make_pointer_declarator (yyvsp[0].ttype, NULL_TREE); ;
                   1794:     break;}
                   1795: case 196:
                   1796: #line 790 "parse.y"
                   1797: { yyval.ttype = build_nt (CALL_EXPR, yyvsp[-2].ttype, yyvsp[0].ttype, NULL_TREE); ;
                   1798:     break;}
                   1799: case 197:
                   1800: #line 792 "parse.y"
                   1801: { yyval.ttype = build_nt (ARRAY_REF, yyvsp[-3].ttype, yyvsp[-1].ttype); ;
                   1802:     break;}
                   1803: case 198:
                   1804: #line 794 "parse.y"
                   1805: { yyval.ttype = build_nt (ARRAY_REF, yyvsp[-2].ttype, NULL_TREE); ;
                   1806:     break;}
                   1807: case 199:
                   1808: #line 796 "parse.y"
                   1809: { yyval.ttype = build_nt (CALL_EXPR, NULL_TREE, yyvsp[0].ttype, NULL_TREE); ;
                   1810:     break;}
                   1811: case 200:
                   1812: #line 798 "parse.y"
                   1813: { yyval.ttype = build_nt (ARRAY_REF, NULL_TREE, yyvsp[-1].ttype); ;
                   1814:     break;}
                   1815: case 201:
                   1816: #line 800 "parse.y"
                   1817: { yyval.ttype = build_nt (ARRAY_REF, NULL_TREE, NULL_TREE); ;
                   1818:     break;}
                   1819: case 208:
                   1820: #line 822 "parse.y"
                   1821: { pushlevel (0);
                   1822:                  clear_last_expr ();
                   1823:                  push_momentary ();
                   1824:                  expand_start_bindings (0); ;
                   1825:     break;}
                   1826: case 210:
                   1827: #line 830 "parse.y"
                   1828: { expand_end_bindings (getdecls (), 1);
                   1829:                  poplevel (1, 1, 0);
                   1830:                  pop_momentary (); ;
                   1831:     break;}
                   1832: case 211:
                   1833: #line 834 "parse.y"
                   1834: { expand_end_bindings (getdecls (), 0);
                   1835:                  poplevel (0, 0, 0);
                   1836:                  pop_momentary (); ;
                   1837:     break;}
                   1838: case 212:
                   1839: #line 838 "parse.y"
                   1840: { expand_end_bindings (getdecls (), 0);
                   1841:                  poplevel (0, 0, 0);
                   1842:                  pop_momentary (); ;
                   1843:     break;}
                   1844: case 213:
                   1845: #line 845 "parse.y"
                   1846: { emit_note (input_filename, lineno);
                   1847:                  expand_start_cond (truthvalue_conversion (yyvsp[-1].ttype), 0); ;
                   1848:     break;}
                   1849: case 216:
                   1850: #line 853 "parse.y"
                   1851: { emit_note (input_filename, lineno);
                   1852:                  expand_expr_stmt (yyvsp[-1].ttype);
                   1853:                  clear_momentary (); ;
                   1854:     break;}
                   1855: case 217:
                   1856: #line 857 "parse.y"
                   1857: { expand_start_else (); ;
                   1858:     break;}
                   1859: case 218:
                   1860: #line 859 "parse.y"
                   1861: { expand_end_else (); ;
                   1862:     break;}
                   1863: case 219:
                   1864: #line 861 "parse.y"
                   1865: { expand_end_cond (); ;
                   1866:     break;}
                   1867: case 220:
                   1868: #line 863 "parse.y"
                   1869: { emit_note (input_filename, lineno);
                   1870:                  expand_start_loop (1); ;
                   1871:     break;}
                   1872: case 221:
                   1873: #line 866 "parse.y"
                   1874: { emit_note (input_filename, lineno);
                   1875:                  expand_exit_loop_if_false (truthvalue_conversion (yyvsp[-1].ttype)); ;
                   1876:     break;}
                   1877: case 222:
                   1878: #line 869 "parse.y"
                   1879: { expand_end_loop (); ;
                   1880:     break;}
                   1881: case 223:
                   1882: #line 871 "parse.y"
                   1883: { emit_note (input_filename, lineno);
                   1884:                  expand_start_loop_continue_elsewhere (1); ;
                   1885:     break;}
                   1886: case 224:
                   1887: #line 874 "parse.y"
                   1888: { expand_loop_continue_here (); ;
                   1889:     break;}
                   1890: case 225:
                   1891: #line 876 "parse.y"
                   1892: { emit_note (input_filename, lineno);
                   1893:                  expand_exit_loop_if_false (truthvalue_conversion (yyvsp[-2].ttype));
                   1894:                  expand_end_loop ();
                   1895:                  clear_momentary (); ;
                   1896:     break;}
                   1897: case 226:
                   1898: #line 882 "parse.y"
                   1899: { emit_note (input_filename, lineno);
                   1900:                  if (yyvsp[-1].ttype) expand_expr_stmt (yyvsp[-1].ttype);
                   1901:                  expand_start_loop_continue_elsewhere (1); ;
                   1902:     break;}
                   1903: case 227:
                   1904: #line 886 "parse.y"
                   1905: { emit_note (input_filename, lineno);
                   1906:                  if (yyvsp[-1].ttype)
                   1907:                    expand_exit_loop_if_false (truthvalue_conversion (yyvsp[-1].ttype)); ;
                   1908:     break;}
                   1909: case 228:
                   1910: #line 892 "parse.y"
                   1911: { push_momentary ();
                   1912:                  yyvsp[0].itype = lineno; ;
                   1913:     break;}
                   1914: case 229:
                   1915: #line 895 "parse.y"
                   1916: { emit_note (input_filename, yyvsp[-2].itype);
                   1917:                  expand_loop_continue_here ();
                   1918:                  if (yyvsp[-3].ttype)
                   1919:                    expand_expr_stmt (yyvsp[-3].ttype);
                   1920:                  pop_momentary ();
                   1921:                  expand_end_loop (); ;
                   1922:     break;}
                   1923: case 230:
                   1924: #line 902 "parse.y"
                   1925: { emit_note (input_filename, lineno);
                   1926:                  c_expand_start_case (yyvsp[-1].ttype);
                   1927:                  /* Don't let the tree nodes for $3 be discarded by
                   1928:                     clear_momentary during the parsing of the next stmt.  */
                   1929:                  push_momentary (); ;
                   1930:     break;}
                   1931: case 231:
                   1932: #line 908 "parse.y"
                   1933: { expand_end_case ();
                   1934:                  pop_momentary (); ;
                   1935:     break;}
                   1936: case 232:
                   1937: #line 911 "parse.y"
                   1938: { register tree value = fold (yyvsp[-1].ttype);
                   1939:                  register tree label
                   1940:                    = build_decl (LABEL_DECL, NULL_TREE, NULL_TREE);
                   1941: 
                   1942:                  if (TREE_CODE (value) != INTEGER_CST
                   1943:                      && value != error_mark_node)
                   1944:                    {
                   1945:                      error ("case label does not reduce to an integer constant");
                   1946:                      value = error_mark_node;
                   1947:                    }
                   1948:                  else
                   1949:                    /* Promote char or short to int.  */
                   1950:                    value = default_conversion (value);
                   1951:                  if (value != error_mark_node)
                   1952:                    {
                   1953:                      int success = pushcase (value, label);
                   1954:                      if (success == 1)
                   1955:                        error ("case label not within a switch statement");
                   1956:                      else if (success == 2)
                   1957:                        error ("duplicate case value");
                   1958:                      else if (success == 3)
                   1959:                        warning ("case value out of range");
                   1960:                    }
                   1961:                ;
                   1962:     break;}
                   1963: case 234:
                   1964: #line 937 "parse.y"
                   1965: {
                   1966:                  register tree label
                   1967:                    = build_decl (LABEL_DECL, NULL_TREE, NULL_TREE);
                   1968:                  int success = pushcase (NULL_TREE, label);
                   1969:                  if (success == 1)
                   1970:                    error ("default label not within a switch statement");
                   1971:                  else if (success == 2)
                   1972:                    error ("multiple default labels in one switch");
                   1973:                ;
                   1974:     break;}
                   1975: case 236:
                   1976: #line 948 "parse.y"
                   1977: { emit_note (input_filename, lineno);
                   1978:                  if ( ! expand_exit_something ())
                   1979:                    error ("break statement not within loop or switch"); ;
                   1980:     break;}
                   1981: case 237:
                   1982: #line 952 "parse.y"
                   1983: { emit_note (input_filename, lineno);
                   1984:                  if (! expand_continue_loop ())
                   1985:                    error ("continue statement not within a loop"); ;
                   1986:     break;}
                   1987: case 238:
                   1988: #line 956 "parse.y"
                   1989: { emit_note (input_filename, lineno);
                   1990:                  c_expand_return (NULL_TREE); ;
                   1991:     break;}
                   1992: case 239:
                   1993: #line 959 "parse.y"
                   1994: { emit_note (input_filename, lineno);
                   1995:                  c_expand_return (yyvsp[-1].ttype); ;
                   1996:     break;}
                   1997: case 240:
                   1998: #line 962 "parse.y"
                   1999: { if (pedantic)
                   2000:                    warning ("ANSI C forbids use of `asm' keyword");
                   2001:                  if (TREE_CHAIN (yyvsp[-2].ttype)) yyvsp[-2].ttype = combine_strings (yyvsp[-2].ttype);
                   2002:                  expand_asm (yyvsp[-2].ttype); ;
                   2003:     break;}
                   2004: case 241:
                   2005: #line 968 "parse.y"
                   2006: { if (pedantic)
                   2007:                    warning ("ANSI C forbids use of `asm' keyword");
                   2008:                  if (TREE_CHAIN (yyvsp[-4].ttype)) yyvsp[-4].ttype = combine_strings (yyvsp[-4].ttype);
                   2009:                  c_expand_asm_operands (yyvsp[-4].ttype, yyvsp[-2].ttype, NULL_TREE,
                   2010:                                         yyvsp[-6].ttype == ridpointers[(int)RID_VOLATILE]); ;
                   2011:     break;}
                   2012: case 242:
                   2013: #line 975 "parse.y"
                   2014: { if (pedantic)
                   2015:                    warning ("ANSI C forbids use of `asm' keyword");
                   2016:                  if (TREE_CHAIN (yyvsp[-6].ttype)) yyvsp[-6].ttype = combine_strings (yyvsp[-6].ttype);
                   2017:                  c_expand_asm_operands (yyvsp[-6].ttype, yyvsp[-4].ttype, yyvsp[-2].ttype,
                   2018:                                         yyvsp[-8].ttype == ridpointers[(int)RID_VOLATILE]); ;
                   2019:     break;}
                   2020: case 243:
                   2021: #line 981 "parse.y"
                   2022: { tree decl;
                   2023:                  emit_note (input_filename, lineno);
                   2024:                  decl = lookup_label (yyvsp[-1].ttype);
                   2025:                  expand_goto (decl); ;
                   2026:     break;}
                   2027: case 244:
                   2028: #line 986 "parse.y"
                   2029: { tree label = define_label (input_filename, lineno, yyvsp[-1].ttype);
                   2030:                  if (label)
                   2031:                    expand_label (label); ;
                   2032:     break;}
                   2033: case 247:
                   2034: #line 995 "parse.y"
                   2035: { emit_note (input_filename, lineno); ;
                   2036:     break;}
                   2037: case 248:
                   2038: #line 997 "parse.y"
                   2039: { emit_note (input_filename, lineno); ;
                   2040:     break;}
                   2041: case 249:
                   2042: #line 1002 "parse.y"
                   2043: { yyval.ttype = NULL_TREE; ;
                   2044:     break;}
                   2045: case 252:
                   2046: #line 1010 "parse.y"
                   2047: { yyval.ttype = chainon (yyvsp[-2].ttype, yyvsp[0].ttype); ;
                   2048:     break;}
                   2049: case 254:
                   2050: #line 1015 "parse.y"
                   2051: { yyval.ttype = build_tree_list (yyvsp[-3].ttype, yyvsp[-1].ttype); ;
                   2052:     break;}
                   2053: case 255:
                   2054: #line 1021 "parse.y"
                   2055: { pushlevel (0); ;
                   2056:     break;}
                   2057: case 256:
                   2058: #line 1023 "parse.y"
                   2059: { yyval.ttype = yyvsp[0].ttype; poplevel (0, 0, 0); ;
                   2060:     break;}
                   2061: case 257:
                   2062: #line 1029 "parse.y"
                   2063: { pushlevel (0); ;
                   2064:     break;}
                   2065: case 258:
                   2066: #line 1031 "parse.y"
                   2067: { yyval.ttype = yyvsp[0].ttype; poplevel (0, 0, 0); ;
                   2068:     break;}
                   2069: case 260:
                   2070: #line 1037 "parse.y"
                   2071: { yyval.ttype = tree_cons (NULL_TREE, NULL_TREE, yyvsp[-1].ttype); ;
                   2072:     break;}
                   2073: case 261:
                   2074: #line 1039 "parse.y"
                   2075: { yyval.ttype = tree_cons (NULL_TREE, NULL_TREE, NULL_TREE); ;
                   2076:     break;}
                   2077: case 263:
                   2078: #line 1045 "parse.y"
                   2079: { yyval.ttype = tree_cons (NULL_TREE, NULL_TREE, NULL_TREE); ;
                   2080:     break;}
                   2081: case 264:
                   2082: #line 1051 "parse.y"
                   2083: { yyval.ttype = get_parm_info (0); ;
                   2084:     break;}
                   2085: case 265:
                   2086: #line 1053 "parse.y"
                   2087: { yyval.ttype = get_parm_info (1); ;
                   2088:     break;}
                   2089: case 266:
                   2090: #line 1055 "parse.y"
                   2091: { yyval.ttype = get_parm_info (0); ;
                   2092:     break;}
                   2093: case 267:
                   2094: #line 1060 "parse.y"
                   2095: { push_parm_decl (yyvsp[0].ttype); ;
                   2096:     break;}
                   2097: case 268:
                   2098: #line 1062 "parse.y"
                   2099: { push_parm_decl (yyvsp[0].ttype); ;
                   2100:     break;}
                   2101: case 269:
                   2102: #line 1069 "parse.y"
                   2103: { yyval.ttype = build_tree_list (yyvsp[-1].ttype, yyvsp[0].ttype)      ; ;
                   2104:     break;}
                   2105: case 270:
                   2106: #line 1071 "parse.y"
                   2107: { yyval.ttype = build_tree_list (yyvsp[-1].ttype, yyvsp[0].ttype)      ; ;
                   2108:     break;}
                   2109: case 271:
                   2110: #line 1073 "parse.y"
                   2111: { yyval.ttype = build_tree_list (yyvsp[-1].ttype, yyvsp[0].ttype); ;
                   2112:     break;}
                   2113: case 272:
                   2114: #line 1075 "parse.y"
                   2115: { yyval.ttype = build_tree_list (yyvsp[-1].ttype, yyvsp[0].ttype)      ; ;
                   2116:     break;}
                   2117: case 273:
                   2118: #line 1077 "parse.y"
                   2119: { yyval.ttype = build_tree_list (yyvsp[-1].ttype, yyvsp[0].ttype); ;
                   2120:     break;}
                   2121: case 274:
                   2122: #line 1083 "parse.y"
                   2123: { yyval.ttype = build_tree_list (NULL_TREE, yyvsp[0].ttype); ;
                   2124:     break;}
                   2125: case 275:
                   2126: #line 1085 "parse.y"
                   2127: { yyval.ttype = chainon (yyvsp[-2].ttype, build_tree_list (NULL_TREE, yyvsp[0].ttype)); ;
                   2128:     break;}
                   2129: }
                   2130:    /* the action file gets copied in in place of this dollarsign */
                   2131: #line 303 "bison.simple"
                   2132: 
                   2133:   yyvsp -= yylen;
                   2134:   yyssp -= yylen;
                   2135: #ifdef YYLSP_NEEDED
                   2136:   yylsp -= yylen;
                   2137: #endif
                   2138: 
                   2139: #ifdef YYDEBUG
                   2140:   if (yydebug)
                   2141:     {
                   2142:       short *ssp1 = yyss - 1;
                   2143:       fprintf (stderr, "state stack now", yyssp-yyss);
                   2144:       while (ssp1 != yyssp)
                   2145:        fprintf (stderr, " %d", *++ssp1);
                   2146:       fprintf (stderr, "\n");
                   2147:     }
                   2148: #endif
                   2149: 
                   2150:   *++yyvsp = yyval;
                   2151: 
                   2152: #ifdef YYLSP_NEEDED
                   2153:   yylsp++;
                   2154:   if (yylen == 0)
                   2155:     {
                   2156:       yylsp->first_line = yylloc.first_line;
                   2157:       yylsp->first_column = yylloc.first_column;
                   2158:       yylsp->last_line = (yylsp-1)->last_line;
                   2159:       yylsp->last_column = (yylsp-1)->last_column;
                   2160:       yylsp->text = 0;
                   2161:     }
                   2162:   else
                   2163:     {
                   2164:       yylsp->last_line = (yylsp+yylen-1)->last_line;
                   2165:       yylsp->last_column = (yylsp+yylen-1)->last_column;
                   2166:     }
                   2167: #endif
                   2168: 
                   2169:   /* Now "shift" the result of the reduction.
                   2170:      Determine what state that goes to,
                   2171:      based on the state we popped back to
                   2172:      and the rule number reduced by.  */
                   2173: 
                   2174:   yyn = yyr1[yyn];
                   2175: 
                   2176:   yystate = yypgoto[yyn - YYNTBASE] + *yyssp;
                   2177:   if (yystate >= 0 && yystate <= YYLAST && yycheck[yystate] == *yyssp)
                   2178:     yystate = yytable[yystate];
                   2179:   else
                   2180:     yystate = yydefgoto[yyn - YYNTBASE];
                   2181: 
                   2182:   goto yynewstate;
                   2183: 
                   2184: yyerrlab:   /* here on detecting error */
                   2185: 
                   2186:   if (! yyerrstatus)
                   2187:     /* If not already recovering from an error, report this error.  */
                   2188:     {
                   2189:       ++yynerr;
                   2190:       yyerror("parse error");
                   2191:     }
                   2192: 
                   2193:   if (yyerrstatus == 3)
                   2194:     {
                   2195:       /* if just tried and failed to reuse lookahead token after an error, discard it.  */
                   2196: 
                   2197:       /* return failure if at end of input */
                   2198:       if (yychar == YYEOF)
                   2199:        YYERROR;
                   2200: 
                   2201: #ifdef YYDEBUG
                   2202:       if (yydebug)
                   2203:        fprintf(stderr, "Discarding token %d (%s).\n", yychar, yytname[yychar1]);
                   2204: #endif
                   2205: 
                   2206:       yychar = YYEMPTY;
                   2207:     }
                   2208: 
                   2209:   /* Else will try to reuse lookahead token
                   2210:      after shifting the error token.  */
                   2211: 
                   2212:   yyerrstatus = 3;             /* Each real token shifted decrements this */
                   2213: 
                   2214:   goto yyerrhandle;
                   2215: 
                   2216: yyerrdefault:  /* current state does not do anything special for the error token. */
                   2217: 
                   2218: #if 0
                   2219:   /* This is wrong; only states that explicitly want error tokens
                   2220:      should shift them.  */
                   2221:   yyn = yydefact[yystate];  /* If its default is to accept any token, ok.  Otherwise pop it.*/
                   2222:   if (yyn) goto yydefault;
                   2223: #endif
                   2224: 
                   2225: yyerrpop:   /* pop the current state because it cannot handle the error token */
                   2226: 
                   2227:   if (yyssp == yyss) YYERROR;
                   2228:   yyvsp--;
                   2229:   yystate = *--yyssp;
                   2230: #ifdef YYLSP_NEEDED
                   2231:   yylsp--;
                   2232: #endif
                   2233: 
                   2234: #ifdef YYDEBUG
                   2235:   if (yydebug)
                   2236:     {
                   2237:       short *ssp1 = yyss - 1;
                   2238:       fprintf (stderr, "Error: state stack now", yyssp-yyss);
                   2239:       while (ssp1 != yyssp)
                   2240:        fprintf (stderr, " %d", *++ssp1);
                   2241:       fprintf (stderr, "\n");
                   2242:     }
                   2243: #endif
                   2244: 
                   2245: yyerrhandle:
                   2246: 
                   2247:   yyn = yypact[yystate];
                   2248:   if (yyn == YYFLAG)
                   2249:     goto yyerrdefault;
                   2250: 
                   2251:   yyn += YYTERROR;
                   2252:   if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != YYTERROR)
                   2253:     goto yyerrdefault;
                   2254: 
                   2255:   yyn = yytable[yyn];
                   2256:   if (yyn < 0)
                   2257:     {
                   2258:       if (yyn == YYFLAG)
                   2259:        goto yyerrpop;
                   2260:       yyn = -yyn;
                   2261:       goto yyreduce;
                   2262:     }
                   2263:   else if (yyn == 0)
                   2264:     goto yyerrpop;
                   2265: 
                   2266:   if (yyn == YYFINAL)
                   2267:     YYACCEPT;
                   2268: 
                   2269: #ifdef YYDEBUG
                   2270:   if (yydebug)
                   2271:     fprintf(stderr, "Shifting error token, ");
                   2272: #endif
                   2273: 
                   2274:   *++yyvsp = yylval;
                   2275: #ifdef YYLSP_NEEDED
                   2276:   *++yylsp = yylloc;
                   2277: #endif
                   2278: 
                   2279:   yystate = yyn;
                   2280:   goto yynewstate;
                   2281: }
                   2282: #line 1087 "parse.y"
                   2283: 
                   2284: 
                   2285: /* Return something to represent absolute declarators containing a *.
                   2286:    TARGET is the absolute declarator that the * contains.
                   2287:    TYPE_QUALS is a list of modifiers such as const or volatile
                   2288:    to apply to the pointer type, represented as identifiers.
                   2289: 
                   2290:    We return an INDIRECT_REF whose "contents" are TARGET
                   2291:    and whose type is the modifier list.  */
                   2292:    
                   2293: static tree
                   2294: make_pointer_declarator (type_quals, target)
                   2295:      tree type_quals, target;
                   2296: {
                   2297:   return build (INDIRECT_REF, type_quals, target);
                   2298: }
                   2299: 
                   2300: /* Given a chain of STRING_CST nodes,
                   2301:    concatenate them into one STRING_CST
                   2302:    and give it a suitable array-of-chars data type.  */
                   2303: 
                   2304: static tree
                   2305: combine_strings (strings)
                   2306:      tree strings;
                   2307: {
                   2308:   register tree value, t;
                   2309:   register int length = 1;
                   2310:   int wide_length = 0;
                   2311:   int wide_flag = 0;
                   2312: 
                   2313:   if (TREE_CHAIN (strings))
                   2314:     {
                   2315:       /* More than one in the chain, so concatenate.  */
                   2316:       register char *p, *q;
                   2317: 
                   2318:       /* Don't include the \0 at the end of each substring,
                   2319:         except for the last one.
                   2320:         Count wide strings and ordinary strings separately.  */
                   2321:       for (t = strings; t; t = TREE_CHAIN (t))
                   2322:        {
                   2323:          if (TREE_TYPE (t) == int_array_type_node)
                   2324:            {
                   2325:              wide_length += (TREE_STRING_LENGTH (t) - 1);
                   2326:              wide_flag = 1;
                   2327:            }
                   2328:          else
                   2329:            length += (TREE_STRING_LENGTH (t) - 1);
                   2330:        }
                   2331: 
                   2332:       /* If anything is wide, the non-wides will be converted,
                   2333:         which makes them take more space.  */
                   2334:       if (wide_flag)
                   2335:        length = length * UNITS_PER_WORD + wide_length;
                   2336: 
                   2337:       p = (char *) oballoc (length);
                   2338: 
                   2339:       /* Copy the individual strings into the new combined string.
                   2340:         If the combined string is wide, convert the chars to ints
                   2341:         for any individual strings that are not wide.  */
                   2342: 
                   2343:       q = p;
                   2344:       for (t = strings; t; t = TREE_CHAIN (t))
                   2345:        {
                   2346:          int len = TREE_STRING_LENGTH (t) - 1;
                   2347:          if ((TREE_TYPE (t) == int_array_type_node) == wide_flag)
                   2348:            {
                   2349:              bcopy (TREE_STRING_POINTER (t), q, len);
                   2350:              q += len;
                   2351:            }
                   2352:          else
                   2353:            {
                   2354:              int i;
                   2355:              for (i = 0; i < len; i++)
                   2356:                ((int *) q)[i] = TREE_STRING_POINTER (t)[i];
                   2357:              q += len * UNITS_PER_WORD;
                   2358:            }
                   2359:        }
                   2360:       *q = 0;
                   2361: 
                   2362:       value = make_node (STRING_CST);
                   2363:       TREE_STRING_POINTER (value) = p;
                   2364:       TREE_STRING_LENGTH (value) = length;
                   2365:       TREE_LITERAL (value) = 1;
                   2366:     }
                   2367:   else
                   2368:     {
                   2369:       value = strings;
                   2370:       length = TREE_STRING_LENGTH (value);
                   2371:       if (TREE_TYPE (value) == int_array_type_node)
                   2372:        wide_flag = 1;
                   2373:     }
                   2374: 
                   2375:   TREE_TYPE (value)
                   2376:     = build_array_type (wide_flag ? integer_type_node : char_type_node,
                   2377:                        make_index_type (build_int_2 (length - 1, 0)));
                   2378:   TREE_LITERAL (value) = 1;
                   2379:   TREE_STATIC (value) = 1;
                   2380:   return value;
                   2381: }
                   2382: 
                   2383: int lineno;                    /* current line number in file being read */
                   2384: 
                   2385: FILE *finput;                  /* input file.
                   2386:                                   Normally a pipe from the preprocessor.  */
                   2387: 
                   2388: /* lexical analyzer */
                   2389: 
                   2390: static int maxtoken;           /* Current nominal length of token buffer */
                   2391: static char *token_buffer;     /* Pointer to token buffer.
                   2392:                                   Actual allocated length is maxtoken + 2.  */
                   2393: static dollar_seen = 0;                /* Nonzero if have warned about `$'.  */
                   2394: 
                   2395: #define MAXRESERVED 9
                   2396: 
                   2397: /* frw[I] is index in `reswords' of the first word whose length is I;
                   2398:    frw[I+1] is one plus the index of the last word whose length is I.
                   2399:    The length of frw must be MAXRESERVED + 2 so there is an element
                   2400:    at MAXRESERVED+1 for the case I == MAXRESERVED.  */
                   2401: 
                   2402: static char frw[MAXRESERVED+2] =
                   2403:   { 0, 0, 0, 2, 5, 13, 19, 29, 32, 36, 37 };
                   2404: 
                   2405: /* Table of reserved words.  */
                   2406: 
                   2407: struct resword { char *name; short token; enum rid rid;};
                   2408: 
                   2409: #define NORID RID_UNUSED
                   2410: 
                   2411: static struct resword reswords[]
                   2412:   = {{"if", IF, NORID},
                   2413:      {"do", DO, NORID},
                   2414:      {"int", TYPESPEC, RID_INT},
                   2415:      {"for", FOR, NORID},
                   2416:      {"asm", ASM, NORID},
                   2417:      {"case", CASE, NORID},
                   2418:      {"char", TYPESPEC, RID_CHAR},
                   2419:      {"auto", SCSPEC, RID_AUTO},
                   2420:      {"goto", GOTO, NORID},
                   2421:      {"else", ELSE, NORID},
                   2422:      {"long", TYPESPEC, RID_LONG},
                   2423:      {"void", TYPESPEC, RID_VOID},
                   2424:      {"enum", ENUM, NORID},
                   2425:      {"float", TYPESPEC, RID_FLOAT},
                   2426:      {"short", TYPESPEC, RID_SHORT},
                   2427:      {"union", UNION, NORID},
                   2428:      {"break", BREAK, NORID},
                   2429:      {"while", WHILE, NORID},
                   2430:      {"const", TYPE_QUAL, RID_CONST},
                   2431:      {"double", TYPESPEC, RID_DOUBLE},
                   2432:      {"static", SCSPEC, RID_STATIC},
                   2433:      {"extern", SCSPEC, RID_EXTERN},
                   2434:      {"struct", STRUCT, NORID},
                   2435:      {"return", RETURN, NORID},
                   2436:      {"sizeof", SIZEOF, NORID},
                   2437:      {"typeof", TYPEOF, NORID},
                   2438:      {"switch", SWITCH, NORID},
                   2439:      {"signed", TYPESPEC, RID_SIGNED},
                   2440:      {"inline", SCSPEC, RID_INLINE},
                   2441:      {"typedef", SCSPEC, RID_TYPEDEF},
                   2442:      {"default", DEFAULT, NORID},
                   2443:      {"noalias", TYPE_QUAL, RID_NOALIAS},
                   2444:      {"unsigned", TYPESPEC, RID_UNSIGNED},
                   2445:      {"continue", CONTINUE, NORID},
                   2446:      {"register", SCSPEC, RID_REGISTER},
                   2447:      {"volatile", TYPE_QUAL, RID_VOLATILE},
                   2448:      {"__alignof", ALIGNOF, NORID}};
                   2449: 
                   2450: /* The elements of `ridpointers' are identifier nodes
                   2451:    for the reserved type names and storage classes.
                   2452:    It is indexed by a RID_... value.  */
                   2453: 
                   2454: tree ridpointers[(int) RID_MAX];
                   2455: 
                   2456: static tree line_identifier;   /* The identifier node named "line" */
                   2457: 
                   2458: void check_newline ();
                   2459: 
                   2460: void
                   2461: init_lex ()
                   2462: {
                   2463:   extern char *malloc ();
                   2464: 
                   2465:   /* Start it at 0, because check_newline is called at the very beginning
                   2466:      and will increment it to 1.  */
                   2467:   lineno = 0;
                   2468:   line_identifier = get_identifier ("line");
                   2469: 
                   2470:   maxtoken = 40;
                   2471:   token_buffer = malloc (maxtoken + 2);
                   2472:   ridpointers[(int) RID_INT] = get_identifier ("int");
                   2473:   ridpointers[(int) RID_CHAR] = get_identifier ("char");
                   2474:   ridpointers[(int) RID_VOID] = get_identifier ("void");
                   2475:   ridpointers[(int) RID_FLOAT] = get_identifier ("float");
                   2476:   ridpointers[(int) RID_DOUBLE] = get_identifier ("double");
                   2477:   ridpointers[(int) RID_SHORT] = get_identifier ("short");
                   2478:   ridpointers[(int) RID_LONG] = get_identifier ("long");
                   2479:   ridpointers[(int) RID_UNSIGNED] = get_identifier ("unsigned");
                   2480:   ridpointers[(int) RID_SIGNED] = get_identifier ("signed");
                   2481:   ridpointers[(int) RID_INLINE] = get_identifier ("inline");
                   2482:   ridpointers[(int) RID_CONST] = get_identifier ("const");
                   2483:   ridpointers[(int) RID_VOLATILE] = get_identifier ("volatile");
                   2484:   ridpointers[(int) RID_AUTO] = get_identifier ("auto");
                   2485:   ridpointers[(int) RID_STATIC] = get_identifier ("static");
                   2486:   ridpointers[(int) RID_EXTERN] = get_identifier ("extern");
                   2487:   ridpointers[(int) RID_TYPEDEF] = get_identifier ("typedef");
                   2488:   ridpointers[(int) RID_REGISTER] = get_identifier ("register");
                   2489: }
                   2490: 
                   2491: static void
                   2492: reinit_parse_for_function ()
                   2493: {
                   2494: }
                   2495: 
                   2496: static int
                   2497: skip_white_space ()
                   2498: {
                   2499:   register int c;
                   2500:   register int inside;
                   2501: 
                   2502:   c = getc (finput);
                   2503: 
                   2504:   for (;;)
                   2505:     {
                   2506:       switch (c)
                   2507:        {
                   2508:        case '/':
                   2509:          c = getc (finput);
                   2510:          if (c != '*')
                   2511:            {
                   2512:              ungetc (c, finput);
                   2513:              return '/';
                   2514:            }
                   2515: 
                   2516:          c = getc (finput);
                   2517: 
                   2518:          inside = 1;
                   2519:          while (inside)
                   2520:            {
                   2521:              if (c == '*')
                   2522:                {
                   2523:                  while (c == '*')
                   2524:                    c = getc (finput);
                   2525: 
                   2526:                  if (c == '/')
                   2527:                    {
                   2528:                      inside = 0;
                   2529:                      c = getc (finput);
                   2530:                    }
                   2531:                }
                   2532:              else if (c == '\n')
                   2533:                {
                   2534:                  lineno++;
                   2535:                  c = getc (finput);
                   2536:                }
                   2537:              else if (c == EOF)
                   2538:                {
                   2539:                  error ("unterminated comment");
                   2540:                  break;
                   2541:                }
                   2542:              else
                   2543:                c = getc (finput);
                   2544:            }
                   2545: 
                   2546:          break;
                   2547: 
                   2548:        case '\n':
                   2549:          check_newline ();
                   2550: 
                   2551:        case ' ':
                   2552:        case '\t':
                   2553:        case '\f':
                   2554:        case '\r':
                   2555:        case '\b':
                   2556:          c = getc (finput);
                   2557:          break;
                   2558: 
                   2559:        case '\\':
                   2560:          c = getc (finput);
                   2561:          if (c == '\n')
                   2562:            lineno++;
                   2563:          else
                   2564:            error ("stray '\\' in program");
                   2565:          c = getc (finput);
                   2566:          break;
                   2567: 
                   2568:        default:
                   2569:          return (c);
                   2570:        }
                   2571:     }
                   2572: }
                   2573: 
                   2574: 
                   2575: 
                   2576: /* Make the token buffer longer, preserving the data in it.
                   2577:    P should point to just beyond the last valid character in the old buffer.
                   2578:    The value we return is a pointer to the new buffer
                   2579:    at a place corresponding to P.  */
                   2580: 
                   2581: static char *
                   2582: extend_token_buffer (p)
                   2583:      char *p;
                   2584: {
                   2585:   int offset = p - token_buffer;
                   2586: 
                   2587:   maxtoken = maxtoken * 2 + 10;
                   2588:   token_buffer = (char *) realloc (token_buffer, maxtoken + 2);
                   2589:   if (token_buffer == 0)
                   2590:     fatal ("virtual memory exceeded");
                   2591: 
                   2592:   return token_buffer + offset;
                   2593: }
                   2594: 
                   2595: /* At the beginning of a line, increment the line number
                   2596:    and handle a #line directive immediately following  */
                   2597: 
                   2598: void
                   2599: check_newline ()
                   2600: {
                   2601:   register int c;
                   2602:   register int token;
                   2603: 
                   2604:   while (1)
                   2605:     {
                   2606:       lineno++;
                   2607: 
                   2608:       /* Read first nonwhite char on the line.  */
                   2609: 
                   2610:       c = getc (finput);
                   2611:       while (c == ' ' || c == '\t')
                   2612:        c = getc (finput);
                   2613: 
                   2614:       if (c != '#')
                   2615:        {
                   2616:          /* If not #, unread it.  */
                   2617:          ungetc (c, finput);
                   2618:          return;
                   2619:        }
                   2620: 
                   2621:       /* Read first nonwhite char after the `#'.  */
                   2622: 
                   2623:       c = getc (finput);
                   2624:       while (c == ' ' || c == '\t')
                   2625:        c = getc (finput);
                   2626: 
                   2627:       /* If a letter follows, then if the word here is `line', skip
                   2628:         it and ignore it; otherwise, ignore the line, with an error
                   2629:         if the word isn't `pragma'.  */
                   2630: 
                   2631:       if ((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z'))
                   2632:        {
                   2633:          if (c == 'p')
                   2634:            {
                   2635:              if (getc (finput) == 'r'
                   2636:                  && getc (finput) == 'a'
                   2637:                  && getc (finput) == 'g'
                   2638:                  && getc (finput) == 'm'
                   2639:                  && getc (finput) == 'a'
                   2640:                  && ((c = getc (finput)) == ' ' || c == '\t'))
                   2641:                goto noerror;
                   2642:            }
                   2643: 
                   2644:          else if (c == 'l')
                   2645:            {
                   2646:              if (getc (finput) == 'i'
                   2647:                  && getc (finput) == 'n'
                   2648:                  && getc (finput) == 'e'
                   2649:                  && ((c = getc (finput)) == ' ' || c == '\t'))
                   2650:                goto linenum;
                   2651:            }
                   2652: 
                   2653:          error ("undefined or invalid # directive");
                   2654:        noerror:
                   2655: 
                   2656:          while ((c = getc (finput)) && c != '\n');
                   2657: 
                   2658:          continue;
                   2659:        }
                   2660: 
                   2661:     linenum:
                   2662:       /* Here we have either `#line' or `# <nonletter>'.
                   2663:         In either case, it should be a line number; a digit should follow.
                   2664: 
                   2665:       while (c == ' ' || c == '\t')
                   2666:        c = getc (finput);
                   2667: 
                   2668:       /* If the # is the only nonwhite char on the line,
                   2669:         just ignore it.  Check the new newline.  */
                   2670:       if (c == '\n')
                   2671:        continue;
                   2672: 
                   2673:       /* Something follows the #; read a token.  */
                   2674: 
                   2675:       ungetc (c, finput);
                   2676:       token = yylex ();
                   2677: 
                   2678:       if (token == CONSTANT
                   2679:          && TREE_CODE (yylval.ttype) == INTEGER_CST)
                   2680:        {
                   2681:          /* subtract one, because it is the following line that
                   2682:             gets the specified number */
                   2683: 
                   2684:          int l = TREE_INT_CST_LOW (yylval.ttype) - 1;
                   2685: 
                   2686:          /* Is this the last nonwhite stuff on the line?  */
                   2687:          c = getc (finput);
                   2688:          while (c == ' ' || c == '\t')
                   2689:            c = getc (finput);
                   2690:          if (c == '\n')
                   2691:            {
                   2692:              /* No more: store the line number and check following line.  */
                   2693:              lineno = l;
                   2694:              continue;
                   2695:            }
                   2696:          ungetc (c, finput);
                   2697: 
                   2698:          /* More follows: it must be a string constant (filename).  */
                   2699: 
                   2700:          token = yylex ();
                   2701:          if (token != STRING || TREE_CODE (yylval.ttype) != STRING_CST)
                   2702:            {
                   2703:              error ("invalid #line");
                   2704:              return;
                   2705:            }
                   2706: 
                   2707:          input_filename
                   2708:            = (char *) permalloc (TREE_STRING_LENGTH (yylval.ttype) + 1);
                   2709:          strcpy (input_filename, TREE_STRING_POINTER (yylval.ttype));
                   2710:          lineno = l;
                   2711: 
                   2712:          if (main_input_filename == 0)
                   2713:            main_input_filename = input_filename;
                   2714:        }
                   2715:       else
                   2716:        error ("invalid #line");
                   2717: 
                   2718:       /* skip the rest of this line.  */
                   2719:       while ((c = getc (finput)) != '\n');
                   2720:     }
                   2721: }
                   2722: 
                   2723: 
                   2724: 
                   2725: #define isalnum(char) ((char >= 'a' && char <= 'z') || (char >= 'A' && char <= 'Z') || (char >= '0' && char <= '9'))
                   2726: #define isdigit(char) (char >= '0' && char <= '9')
                   2727: #define ENDFILE -1  /* token that represents end-of-file */
                   2728: 
                   2729: 
                   2730: static int
                   2731: readescape ()
                   2732: {
                   2733:   register int c = getc (finput);
                   2734:   register int count, code;
                   2735: 
                   2736:   switch (c)
                   2737:     {
                   2738:     case 'x':
                   2739:       code = 0;
                   2740:       count = 0;
                   2741:       while (1)
                   2742:        {
                   2743:          c = getc (finput);
                   2744:          if (!(c >= 'a' && c <= 'f')
                   2745:              && !(c >= 'A' && c <= 'F')
                   2746:              && !(c >= '0' && c <= '9'))
                   2747:            {
                   2748:              ungetc (c, finput);
                   2749:              break;
                   2750:            }
                   2751:          code *= 16;
                   2752:          if (c >= 'a' && c <= 'f')
                   2753:            code += c - 'a' + 10;
                   2754:          if (c >= 'A' && c <= 'F')
                   2755:            code += c - 'A' + 10;
                   2756:          if (c >= '0' && c <= '9')
                   2757:            code += c - '0';
                   2758:          count++;
                   2759:        }
                   2760:       if (count == 0)
                   2761:        error ("\\x used with no following hex digits");
                   2762:       return code;
                   2763: 
                   2764:     case '0':  case '1':  case '2':  case '3':  case '4':
                   2765:     case '5':  case '6':  case '7':
                   2766:       code = 0;
                   2767:       count = 0;
                   2768:       while ((c <= '7') && (c >= '0') && (count++ < 3))
                   2769:        {
                   2770:          code = (code * 8) + (c - '0');
                   2771:          c = getc (finput);
                   2772:        }
                   2773:       ungetc (c, finput);
                   2774:       return code;
                   2775: 
                   2776:     case '\\': case '\'': case '"':
                   2777:       return c;
                   2778: 
                   2779:     case '\n':
                   2780:       lineno++;
                   2781:       return -1;
                   2782: 
                   2783:     case 'n':
                   2784:       return TARGET_NEWLINE;
                   2785: 
                   2786:     case 't':
                   2787:       return TARGET_TAB;
                   2788: 
                   2789:     case 'r':
                   2790:       return TARGET_CR;
                   2791: 
                   2792:     case 'f':
                   2793:       return TARGET_FF;
                   2794: 
                   2795:     case 'b':
                   2796:       return TARGET_BS;
                   2797: 
                   2798:     case 'a':
                   2799:       return TARGET_BELL;
                   2800: 
                   2801:     case 'v':
                   2802:       return TARGET_VT;
                   2803: 
                   2804:     case 'E':
                   2805:       return 033;
                   2806: 
                   2807:     case '?':
                   2808:       return c;
                   2809:     }
                   2810:   if (c >= 040 && c <= 0177)
                   2811:     warning ("unknown escape sequence `\\%c'", c);
                   2812:   else
                   2813:     warning ("unknown escape sequence: `\\' followed by char code 0x%x", c);
                   2814:   return c;
                   2815: }
                   2816: 
                   2817: void
                   2818: yyerror (string)
                   2819:      char *string;
                   2820: {
                   2821:   char buf[200];
                   2822: 
                   2823:   strcpy (buf, string);
                   2824: 
                   2825:   /* We can't print string and character constants well
                   2826:      because the token_buffer contains the result of processing escapes.  */
                   2827:   if (token_buffer[0] == 0)
                   2828:     strcat (buf, " at end of input");
                   2829:   else if (token_buffer[0] == '"')
                   2830:     strcat (buf, " before string constant");
                   2831:   else if (token_buffer[0] == '\'')
                   2832:     strcat (buf, " before character constant");
                   2833:   else
                   2834:     strcat (buf, " before `%s'");
                   2835: 
                   2836:   error (buf, token_buffer);
                   2837: }
                   2838: 
                   2839: static int
                   2840: yylex ()
                   2841: {
                   2842:   register int c;
                   2843:   register char *p;
                   2844:   register int value;
                   2845:   int wide_flag = 0;
                   2846: 
                   2847:   /* Effectively do c = skip_white_space ()
                   2848:      but do it faster in the usual cases.  */
                   2849:   c = getc (finput);
                   2850:   while (1)
                   2851:     switch (c)
                   2852:       {
                   2853:       case ' ':
                   2854:       case '\t':
                   2855:       case '\f':
                   2856:       case '\r':
                   2857:       case '\b':
                   2858:        c = getc (finput);
                   2859:        break;
                   2860: 
                   2861:       case '\n':
                   2862:       case '/':
                   2863:       case '\\':
                   2864:        ungetc (c, finput);
                   2865:        c = skip_white_space ();
                   2866:       default:
                   2867:        goto found_nonwhite;
                   2868:       }
                   2869:  found_nonwhite:
                   2870: 
                   2871:   token_buffer[0] = c;
                   2872:   token_buffer[1] = 0;
                   2873: 
                   2874:   yylloc.first_line = lineno;
                   2875: 
                   2876:   switch (c)
                   2877:     {
                   2878:     case EOF:
                   2879:       token_buffer[0] = 0;
                   2880:       value = ENDFILE;
                   2881:       break;
                   2882: 
                   2883:     case 'L':
                   2884:       /* Capital L may start a wide-string or wide-character constant.  */
                   2885:       {
                   2886:        register int c = getc (finput);
                   2887:        if (c == '\'')
                   2888:          {
                   2889:            wide_flag = 1;
                   2890:            goto char_constant;
                   2891:          }
                   2892:        if (c == '"')
                   2893:          {
                   2894:            wide_flag = 1;
                   2895:            goto string_constant;
                   2896:          }
                   2897:        ungetc (c, finput);
                   2898:       }
                   2899: 
                   2900:     case 'A':  case 'B':  case 'C':  case 'D':  case 'E':
                   2901:     case 'F':  case 'G':  case 'H':  case 'I':  case 'J':
                   2902:     case 'K':            case 'M':  case 'N':  case 'O':
                   2903:     case 'P':  case 'Q':  case 'R':  case 'S':  case 'T':
                   2904:     case 'U':  case 'V':  case 'W':  case 'X':  case 'Y':
                   2905:     case 'Z':
                   2906:     case 'a':  case 'b':  case 'c':  case 'd':  case 'e':
                   2907:     case 'f':  case 'g':  case 'h':  case 'i':  case 'j':
                   2908:     case 'k':  case 'l':  case 'm':  case 'n':  case 'o':
                   2909:     case 'p':  case 'q':  case 'r':  case 's':  case 't':
                   2910:     case 'u':  case 'v':  case 'w':  case 'x':  case 'y':
                   2911:     case 'z':
                   2912:     case '_':
                   2913:     case '$':
                   2914:       p = token_buffer;
                   2915:       while (isalnum (c) || c == '_' || c == '$')
                   2916:        {
                   2917:          if (p >= token_buffer + maxtoken)
                   2918:            p = extend_token_buffer (p);
                   2919:          if (c == '$')
                   2920:            {
                   2921:              if (pedantic)
                   2922:                {
                   2923:                  if (! dollar_seen)
                   2924:                    warning ("ANSI C forbids `$' (first use here)");
                   2925:                  dollar_seen = 1;
                   2926:                }
                   2927:            }
                   2928: 
                   2929:          *p++ = c;
                   2930:          c = getc (finput);
                   2931:        }
                   2932: 
                   2933:       *p = 0;
                   2934:       ungetc (c, finput);
                   2935: 
                   2936:       value = IDENTIFIER;
                   2937:       yylval.itype = 0;
                   2938: 
                   2939:       /* Try to recognize a keyword.  */
                   2940: 
                   2941:       if (p - token_buffer <= MAXRESERVED)
                   2942:        {
                   2943:          register int lim = frw [p - token_buffer + 1];
                   2944:          register int i = frw[p - token_buffer];
                   2945:          register struct resword *p = &reswords[i];
                   2946: 
                   2947:          for (; i < lim; i++, p++)
                   2948:            if (p->name[0] == token_buffer[0]
                   2949:                && !strcmp (p->name, token_buffer))
                   2950:              {
                   2951:                if (p->rid)
                   2952:                  yylval.ttype = ridpointers[(int) p->rid];
                   2953:                if ((! flag_no_asm
                   2954:                     || ((int) p->token != ASM
                   2955:                         && (int) p->token != TYPEOF
                   2956:                         && strcmp (p->name, "inline")))
                   2957:                    /* -ftraditional means don't recognize
                   2958:                       typeof, const, volatile, noalias, signed or inline.  */
                   2959:                    && (! flag_traditional
                   2960:                        || ((int) p->token != TYPE_QUAL
                   2961:                            && (int) p->token != TYPEOF
                   2962:                            && strcmp (p->name, "signed")
                   2963:                            && strcmp (p->name, "inline"))))
                   2964:                  value = (int) p->token;
                   2965:                break;
                   2966:              }
                   2967:        }
                   2968: 
                   2969:       /* If we did not find a keyword, look for an identifier
                   2970:         (or a typename).  */
                   2971: 
                   2972:       if (value == IDENTIFIER)
                   2973:        {
                   2974:           yylval.ttype = get_identifier (token_buffer);
                   2975:          lastiddecl = lookup_name (yylval.ttype);
                   2976: 
                   2977:          if (lastiddecl != 0 && TREE_CODE (lastiddecl) == TYPE_DECL)
                   2978:            value = TYPENAME;
                   2979:        }
                   2980: 
                   2981:       break;
                   2982: 
                   2983:     case '0':  case '1':  case '2':  case '3':  case '4':
                   2984:     case '5':  case '6':  case '7':  case '8':  case '9':
                   2985:     case '.':
                   2986:       {
                   2987:        int base = 10;
                   2988:        int count = 0;
                   2989:        int largest_digit = 0;
                   2990:        int numdigits = 0;
                   2991:        /* for multi-precision arithmetic,
                   2992:           we store only 8 live bits in each short,
                   2993:           giving us 64 bits of reliable precision */
                   2994:        short shorts[8];
                   2995:        int floatflag = 0;  /* Set 1 if we learn this is a floating constant */
                   2996: 
                   2997:        for (count = 0; count < 8; count++)
                   2998:          shorts[count] = 0;
                   2999: 
                   3000:        p = token_buffer;
                   3001:        *p++ = c;
                   3002: 
                   3003:        if (c == '0')
                   3004:          {
                   3005:            *p++ = (c = getc (finput));
                   3006:            if ((c == 'x') || (c == 'X'))
                   3007:              {
                   3008:                base = 16;
                   3009:                *p++ = (c = getc (finput));
                   3010:              }
                   3011:            else
                   3012:              {
                   3013:                base = 8;
                   3014:                numdigits++;
                   3015:              }
                   3016:          }
                   3017: 
                   3018:        /* Read all the digits-and-decimal-points.  */
                   3019: 
                   3020:        while (c == '.'
                   3021:               || (isalnum (c) && (c != 'l') && (c != 'L')
                   3022:                   && (c != 'u') && (c != 'U')
                   3023:                   && (!floatflag || ((c != 'f') && (c != 'F')))))
                   3024:          {
                   3025:            if (c == '.')
                   3026:              {
                   3027:                if (base == 16)
                   3028:                  error ("floating constant may not be in radix 16");
                   3029:                floatflag = 1;
                   3030:                base = 10;
                   3031:                *p++ = c = getc (finput);
                   3032:                /* Accept '.' as the start of a floating-point number
                   3033:                   only when it is followed by a digit.
                   3034:                   Otherwise, unread the following non-digit
                   3035:                   and use the '.' as a structural token.  */
                   3036:                if (p == token_buffer + 2 && !isdigit (c))
                   3037:                  {
                   3038:                    if (c == '.')
                   3039:                      {
                   3040:                        c = getc (finput);
                   3041:                        if (c == '.')
                   3042:                          {
                   3043:                            *p++ = c;
                   3044:                            *p = 0;
                   3045:                            return ELLIPSIS;
                   3046:                          }
                   3047:                        error ("parse error at `..'");
                   3048:                      }
                   3049:                    ungetc (c, finput);
                   3050:                    token_buffer[1] = 0;
                   3051:                    value = '.';
                   3052:                    goto done;
                   3053:                  }
                   3054:              }
                   3055:            else
                   3056:              {
                   3057:                /* It is not a decimal point.
                   3058:                   It should be a digit (perhaps a hex digit).  */
                   3059: 
                   3060:                if (isdigit (c))
                   3061:                  {
                   3062:                    c = c - '0';
                   3063:                  }
                   3064:                else if (base <= 10)
                   3065:                  {
                   3066:                    if ((c&~040) == 'E')
                   3067:                      {
                   3068:                        base = 10;
                   3069:                        floatflag = 1;
                   3070:                        break;   /* start of exponent */
                   3071:                      }
                   3072:                    error ("nondigits in number and not hexadecimal");
                   3073:                    c = 0;
                   3074:                  }
                   3075:                else if (c >= 'a')
                   3076:                  {
                   3077:                    c = c - 'a' + 10;
                   3078:                  }
                   3079:                else
                   3080:                  {
                   3081:                    c = c - 'A' + 10;
                   3082:                  }
                   3083:                if (c >= largest_digit)
                   3084:                  largest_digit = c;
                   3085:                numdigits++;
                   3086:            
                   3087:                for (count = 0; count < 8; count++)
                   3088:                  {
                   3089:                    (shorts[count] *= base);
                   3090:                    if (count)
                   3091:                      {
                   3092:                        shorts[count] += (shorts[count-1] >> 8);
                   3093:                        shorts[count-1] &= (1<<8)-1;
                   3094:                      }
                   3095:                    else shorts[0] += c;
                   3096:                  }
                   3097:     
                   3098:                if (p >= token_buffer + maxtoken - 3)
                   3099:                  p = extend_token_buffer (p);
                   3100:                *p++ = (c = getc (finput));
                   3101:              }
                   3102:          }
                   3103: 
                   3104:        if (numdigits == 0)
                   3105:          error ("numeric constant with no digits");
                   3106: 
                   3107:        if (largest_digit >= base)
                   3108:          error ("numeric constant contains digits beyond the radix");
                   3109: 
                   3110:        /* Remove terminating char from the token buffer and delimit the string */
                   3111:        *--p = 0;
                   3112: 
                   3113:        if (floatflag)
                   3114:          {
                   3115:            tree type = double_type_node;
                   3116:            char f_seen = 0;
                   3117:            char l_seen = 0;
                   3118: 
                   3119:            /* Read explicit exponent if any, and put it in tokenbuf.  */
                   3120: 
                   3121:            if ((c == 'e') || (c == 'E'))
                   3122:              {
                   3123:                if (p >= token_buffer + maxtoken - 3)
                   3124:                  p = extend_token_buffer (p);
                   3125:                *p++ = c;
                   3126:                c = getc (finput);
                   3127:                if ((c == '+') || (c == '-'))
                   3128:                  {
                   3129:                    *p++ = c;
                   3130:                    c = getc (finput);
                   3131:                  }
                   3132:                if (! isdigit (c))
                   3133:                  error ("floating constant exponent has no digits");
                   3134:                while (isdigit (c))
                   3135:                  {
                   3136:                    if (p >= token_buffer + maxtoken - 3)
                   3137:                      p = extend_token_buffer (p);
                   3138:                    *p++ = c;
                   3139:                    c = getc (finput);
                   3140:                  }
                   3141:              }
                   3142: 
                   3143:            *p = 0;
                   3144:            yylval.ttype = build_real (atof (token_buffer));
                   3145: 
                   3146:            while (1)
                   3147:              {
                   3148:                if (c == 'f' || c == 'F')
                   3149:                  {
                   3150:                    if (f_seen)
                   3151:                      error ("two `f's in floating constant");
                   3152:                    f_seen = 1;
                   3153:                    type = float_type_node;
                   3154:                  }
                   3155:                else if (c == 'l' || c == 'L')
                   3156:                  {
                   3157:                    if (l_seen)
                   3158:                      error ("two `l's in floating constant");
                   3159:                    l_seen = 1;
                   3160:                    type = long_double_type_node;
                   3161:                  }
                   3162:                else
                   3163:                  {
                   3164:                    if (isalnum (c))
                   3165:                      {
                   3166:                        error ("garbage at end of number");
                   3167:                        while (isalnum (c))
                   3168:                          {
                   3169:                            if (p >= token_buffer + maxtoken - 3)
                   3170:                              p = extend_token_buffer (p);
                   3171:                            *p++ = c;
                   3172:                            c = getc (finput);
                   3173:                          }
                   3174:                      }
                   3175:                    break;
                   3176:                  }
                   3177:                if (p >= token_buffer + maxtoken - 3)
                   3178:                  p = extend_token_buffer (p);
                   3179:                *p++ = c;
                   3180:                c = getc (finput);
                   3181:              }
                   3182: 
                   3183:            ungetc (c, finput);
                   3184:            *p = 0;
                   3185: 
                   3186:            TREE_TYPE (yylval.ttype) = type;
                   3187:          }
                   3188:        else
                   3189:          {
                   3190:            tree type;
                   3191:            int spec_unsigned = 0;
                   3192:            int spec_long = 0;
                   3193: 
                   3194:            while (1)
                   3195:              {
                   3196:                if (c == 'u' || c == 'U')
                   3197:                  {
                   3198:                    if (spec_unsigned)
                   3199:                      error ("two `u's in integer constant");
                   3200:                    spec_unsigned = 1;
                   3201:                  }
                   3202:                else if (c == 'l' || c == 'L')
                   3203:                  {
                   3204:                    if (spec_long)
                   3205:                      error ("two `l's in integer constant");
                   3206:                    spec_long = 1;
                   3207:                  }
                   3208:                else
                   3209:                  {
                   3210:                    if (isalnum (c))
                   3211:                      {
                   3212:                        error ("garbage at end of number");
                   3213:                        while (isalnum (c))
                   3214:                          {
                   3215:                            if (p >= token_buffer + maxtoken - 3)
                   3216:                              p = extend_token_buffer (p);
                   3217:                            *p++ = c;
                   3218:                            c = getc (finput);
                   3219:                          }
                   3220:                      }
                   3221:                    break;
                   3222:                  }
                   3223:                if (p >= token_buffer + maxtoken - 3)
                   3224:                  p = extend_token_buffer (p);
                   3225:                *p++ = c;
                   3226:                c = getc (finput);
                   3227:              }
                   3228: 
                   3229:            ungetc (c, finput);
                   3230: 
                   3231:            if (shorts[7] | shorts[6] | shorts[5] | shorts[4])
                   3232:              warning ("integer constant out of range");
                   3233: 
                   3234:            /* This is simplified by the fact that our constant
                   3235:               is always positive.  */
                   3236:            yylval.ttype
                   3237:              = build_int_2 ((shorts[3]<<24) + (shorts[2]<<16) + (shorts[1]<<8) + shorts[0],
                   3238:                             0);
                   3239:     
                   3240:            if (!spec_long && !spec_unsigned
                   3241:                && int_fits_type_p (yylval.ttype, integer_type_node))
                   3242:              type = integer_type_node;
                   3243: 
                   3244:            else if (!spec_long && base != 10
                   3245:                && int_fits_type_p (yylval.ttype, unsigned_type_node))
                   3246:              type = unsigned_type_node;
                   3247: 
                   3248:            else if (!spec_unsigned
                   3249:                && int_fits_type_p (yylval.ttype, long_integer_type_node))
                   3250:              type = long_integer_type_node;
                   3251: 
                   3252:            else
                   3253:              {
                   3254:                type = long_unsigned_type_node;
                   3255:                if (! int_fits_type_p (yylval.ttype, long_unsigned_type_node))
                   3256:                  warning ("integer constant out of range");
                   3257:              }
                   3258:            TREE_TYPE (yylval.ttype) = type;
                   3259:          }
                   3260: 
                   3261:        value = CONSTANT; break;
                   3262:       }
                   3263: 
                   3264:     case '\'':
                   3265:     char_constant:
                   3266:       c = getc (finput);
                   3267:       {
                   3268:        register int code = 0;
                   3269: 
                   3270:       tryagain:
                   3271: 
                   3272:        if (c == '\\')
                   3273:          {
                   3274:            c = readescape ();
                   3275:            if (c < 0)
                   3276:              goto tryagain;
                   3277:          }
                   3278:        else if (c == '\n')
                   3279:          {
                   3280:            if (pedantic)
                   3281:              warning ("ANSI C forbids newline in character constant");
                   3282:            lineno++;
                   3283:          }
                   3284: 
                   3285:        code = c;
                   3286:        token_buffer[1] = c;
                   3287:        token_buffer[2] = '\'';
                   3288:        token_buffer[3] = 0;
                   3289: 
                   3290:        c = getc (finput);
                   3291:        if (c != '\'')
                   3292:          error ("malformatted character constant");
                   3293: 
                   3294:        /* If char type is signed, sign-extend the constant.  */
                   3295:        if (TREE_UNSIGNED (char_type_node)
                   3296:            || ((code >> (BITS_PER_UNIT - 1)) & 1) == 0)
                   3297:          yylval.ttype = build_int_2 (code & ((1 << BITS_PER_UNIT) - 1), 0);
                   3298:        else
                   3299:          yylval.ttype = build_int_2 (code | ((-1) << BITS_PER_UNIT), -1);
                   3300: 
                   3301:        TREE_TYPE (yylval.ttype) = integer_type_node;
                   3302:        value = CONSTANT; break;
                   3303:       }
                   3304: 
                   3305:     case '"':
                   3306:     string_constant:
                   3307:       {
                   3308:        c = getc (finput);
                   3309:        p = token_buffer + 1;
                   3310: 
                   3311:        while (c != '"')
                   3312:          {
                   3313:            if (c == '\\')
                   3314:              {
                   3315:                c = readescape ();
                   3316:                if (c < 0)
                   3317:                  goto skipnewline;
                   3318:              }
                   3319:            else if (c == '\n')
                   3320:              {
                   3321:                if (pedantic)
                   3322:                  warning ("ANSI C forbids newline in string constant");
                   3323:                lineno++;
                   3324:              }
                   3325: 
                   3326:            if (p == token_buffer + maxtoken)
                   3327:              p = extend_token_buffer (p);
                   3328:            *p++ = c;
                   3329: 
                   3330:          skipnewline:
                   3331:            c = getc (finput);
                   3332:          }
                   3333: 
                   3334:        *p = 0;
                   3335: 
                   3336:        if (wide_flag)
                   3337:          {
                   3338:            /* If this is a L"..." wide-string, convert each char
                   3339:               to an int, making a vector of ints.  */
                   3340:            int *widebuf = (int *) alloca (p - token_buffer);
                   3341:            char *p1 = token_buffer + 1;
                   3342:            for (; p1 == p; p1++)
                   3343:              widebuf[p1 - token_buffer - 1] = *p1;
                   3344:            yylval.ttype = build_string ((p - token_buffer) * sizeof (int),
                   3345:                                         widebuf);
                   3346:            TREE_TYPE (yylval.ttype) = int_array_type_node;
                   3347:          }
                   3348:        else
                   3349:          {
                   3350:            yylval.ttype = build_string (p - token_buffer, token_buffer + 1);
                   3351:            TREE_TYPE (yylval.ttype) = char_array_type_node;
                   3352:          }
                   3353: 
                   3354:        *p++ = '"';
                   3355:        *p = 0;
                   3356: 
                   3357:        value = STRING; break;
                   3358:       }
                   3359:       
                   3360:     case '+':
                   3361:     case '-':
                   3362:     case '&':
                   3363:     case '|':
                   3364:     case '<':
                   3365:     case '>':
                   3366:     case '*':
                   3367:     case '/':
                   3368:     case '%':
                   3369:     case '^':
                   3370:     case '!':
                   3371:     case '=':
                   3372:       {
                   3373:        register int c1;
                   3374: 
                   3375:       combine:
                   3376: 
                   3377:        switch (c)
                   3378:          {
                   3379:          case '+':
                   3380:            yylval.code = PLUS_EXPR; break;
                   3381:          case '-':
                   3382:            yylval.code = MINUS_EXPR; break;
                   3383:          case '&':
                   3384:            yylval.code = BIT_AND_EXPR; break;
                   3385:          case '|':
                   3386:            yylval.code = BIT_IOR_EXPR; break;
                   3387:          case '*':
                   3388:            yylval.code = MULT_EXPR; break;
                   3389:          case '/':
                   3390:            yylval.code = TRUNC_DIV_EXPR; break;
                   3391:          case '%':
                   3392:            yylval.code = TRUNC_MOD_EXPR; break;
                   3393:          case '^':
                   3394:            yylval.code = BIT_XOR_EXPR; break;
                   3395:          case LSHIFT:
                   3396:            yylval.code = LSHIFT_EXPR; break;
                   3397:          case RSHIFT:
                   3398:            yylval.code = RSHIFT_EXPR; break;
                   3399:          case '<':
                   3400:            yylval.code = LT_EXPR; break;
                   3401:          case '>':
                   3402:            yylval.code = GT_EXPR; break;
                   3403:          }     
                   3404: 
                   3405:        token_buffer[1] = c1 = getc (finput);
                   3406:        token_buffer[2] = 0;
                   3407: 
                   3408:        if (c1 == '=')
                   3409:          {
                   3410:            switch (c)
                   3411:              {
                   3412:              case '<':
                   3413:                value = ARITHCOMPARE; yylval.code = LE_EXPR; goto done;
                   3414:              case '>':
                   3415:                value = ARITHCOMPARE; yylval.code = GE_EXPR; goto done;
                   3416:              case '!':
                   3417:                value = EQCOMPARE; yylval.code = NE_EXPR; goto done;
                   3418:              case '=':
                   3419:                value = EQCOMPARE; yylval.code = EQ_EXPR; goto done;
                   3420:              } 
                   3421:            value = ASSIGN; goto done;
                   3422:          }
                   3423:        else if (c == c1)
                   3424:          switch (c)
                   3425:            {
                   3426:            case '+':
                   3427:              value = PLUSPLUS; goto done;
                   3428:            case '-':
                   3429:              value = MINUSMINUS; goto done;
                   3430:            case '&':
                   3431:              value = ANDAND; goto done;
                   3432:            case '|':
                   3433:              value = OROR; goto done;
                   3434:            case '<':
                   3435:              c = LSHIFT;
                   3436:              goto combine;
                   3437:            case '>':
                   3438:              c = RSHIFT;
                   3439:              goto combine;
                   3440:            }
                   3441:        else if ((c == '-') && (c1 == '>'))
                   3442:          { value = POINTSAT; goto done; }
                   3443:        ungetc (c1, finput);
                   3444:        token_buffer[1] = 0;
                   3445: 
                   3446:        if ((c == '<') || (c == '>'))
                   3447:          value = ARITHCOMPARE;
                   3448:        else value = c;
                   3449:        goto done;
                   3450:       }
                   3451: 
                   3452:     default:
                   3453:       value = c;
                   3454:     }
                   3455: 
                   3456: done:
                   3457:   yylloc.last_line = lineno;
                   3458: 
                   3459:   return value;
                   3460: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.