Annotation of researchv10dc/cmd/gcc/parse.tab.c, revision 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.