From 5c628c73fd3050bbc662301dfb993b97013883bd Mon Sep 17 00:00:00 2001 From: CSRG Date: Thu, 13 May 1993 00:50:16 -0800 Subject: [PATCH] BSD 4_4_Lite2 development Work on file usr/src/contrib/gcc-2.3.3/c-parse.c Synthesized-from: CSRG/cd3/4.4BSD-Lite2 --- usr/src/contrib/gcc-2.3.3/c-parse.c | 3361 +++++++++++++++++++++++++++ 1 file changed, 3361 insertions(+) create mode 100644 usr/src/contrib/gcc-2.3.3/c-parse.c diff --git a/usr/src/contrib/gcc-2.3.3/c-parse.c b/usr/src/contrib/gcc-2.3.3/c-parse.c new file mode 100644 index 0000000000..27337a53d2 --- /dev/null +++ b/usr/src/contrib/gcc-2.3.3/c-parse.c @@ -0,0 +1,3361 @@ + +/* A Bison parser, made from c-parse.y */ + +#define YYBISON 1 /* Identify Bison output. */ + +#define IDENTIFIER 258 +#define TYPENAME 259 +#define SCSPEC 260 +#define TYPESPEC 261 +#define TYPE_QUAL 262 +#define CONSTANT 263 +#define STRING 264 +#define ELLIPSIS 265 +#define SIZEOF 266 +#define ENUM 267 +#define STRUCT 268 +#define UNION 269 +#define IF 270 +#define ELSE 271 +#define WHILE 272 +#define DO 273 +#define FOR 274 +#define SWITCH 275 +#define CASE 276 +#define DEFAULT 277 +#define BREAK 278 +#define CONTINUE 279 +#define RETURN 280 +#define GOTO 281 +#define ASM_KEYWORD 282 +#define TYPEOF 283 +#define ALIGNOF 284 +#define ALIGN 285 +#define ATTRIBUTE 286 +#define EXTENSION 287 +#define LABEL 288 +#define ASSIGN 289 +#define OROR 290 +#define ANDAND 291 +#define EQCOMPARE 292 +#define ARITHCOMPARE 293 +#define LSHIFT 294 +#define RSHIFT 295 +#define UNARY 296 +#define PLUSPLUS 297 +#define MINUSMINUS 298 +#define HYPERUNARY 299 +#define POINTSAT 300 +#define INTERFACE 301 +#define IMPLEMENTATION 302 +#define END 303 +#define SELECTOR 304 +#define DEFS 305 +#define ENCODE 306 +#define CLASSNAME 307 +#define PUBLIC 308 + +#line 44 "c-parse.y" + +#include +#include +#include + +#include "config.h" +#include "tree.h" +#include "input.h" +#include "c-lex.h" +#include "c-tree.h" +#include "flags.h" + +#ifdef MULTIBYTE_CHARS +#include +#include +#endif + + +#ifndef errno +extern int errno; +#endif + +void yyerror (); + +/* Like YYERROR but do call yyerror. */ +#define YYERROR1 { yyerror ("syntax error"); YYERROR; } + +/* Cause the `yydebug' variable to be defined. */ +#define YYDEBUG 1 + +#line 77 "c-parse.y" +typedef union {long itype; tree ttype; enum tree_code code; + char *filename; int lineno; } YYSTYPE; +#line 183 "c-parse.y" + +/* Number of statements (loosely speaking) seen so far. */ +static int stmt_count; + +/* Input file and line number of the end of the body of last simple_if; + used by the stmt-rule immediately after simple_if returns. */ +static char *if_stmt_file; +static int if_stmt_line; + +/* List of types and structure classes of the current declaration. */ +static tree current_declspecs; + +/* Stack of saved values of current_declspecs. */ +static tree declspec_stack; + +/* 1 if we explained undeclared var errors. */ +static int undeclared_variable_notice; + + +/* Tell yyparse how to print a token's value, if yydebug is set. */ + +#define YYPRINT(FILE,YYCHAR,YYLVAL) yyprint(FILE,YYCHAR,YYLVAL) +extern void yyprint (); + +#ifndef YYLTYPE +typedef + struct yyltype + { + int timestamp; + int first_line; + int first_column; + int last_line; + int last_column; + char *text; + } + yyltype; + +#define YYLTYPE yyltype +#endif + +#include + +#ifndef __STDC__ +#define const +#endif + + + +#define YYFINAL 602 +#define YYFLAG -32768 +#define YYNTBASE 76 + +#define YYTRANSLATE(x) ((unsigned)(x) <= 308 ? yytranslate[x] : 200) + +static const char yytranslate[] = { 0, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 72, 2, 2, 2, 51, 42, 2, 58, + 68, 49, 47, 73, 48, 57, 50, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 37, 69, 2, + 35, 2, 36, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 59, 2, 75, 41, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 74, 40, 70, 71, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 1, 2, 3, 4, 5, + 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, + 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, + 26, 27, 28, 29, 30, 31, 32, 33, 34, 38, + 39, 43, 44, 45, 46, 52, 53, 54, 55, 56, + 60, 61, 62, 63, 64, 65, 66, 67 +}; + +static const short yyprhs[] = { 0, + 0, 1, 3, 4, 7, 8, 12, 14, 16, 22, + 26, 31, 36, 39, 42, 45, 48, 50, 51, 52, + 60, 65, 66, 67, 75, 80, 81, 82, 89, 93, + 95, 97, 99, 101, 103, 105, 107, 109, 111, 113, + 114, 116, 118, 122, 124, 127, 128, 132, 135, 138, + 141, 146, 149, 154, 156, 161, 169, 171, 175, 179, + 183, 187, 191, 195, 199, 203, 207, 211, 215, 219, + 223, 227, 233, 237, 241, 243, 245, 247, 251, 255, + 256, 261, 266, 271, 275, 279, 282, 285, 287, 290, + 291, 293, 296, 300, 302, 304, 307, 310, 315, 320, + 323, 326, 330, 332, 334, 337, 340, 341, 346, 351, + 355, 359, 362, 365, 368, 372, 373, 376, 379, 381, + 383, 386, 389, 392, 396, 397, 400, 402, 404, 406, + 411, 416, 418, 420, 422, 424, 428, 430, 434, 435, + 440, 441, 448, 452, 453, 460, 464, 465, 472, 474, + 478, 480, 485, 490, 499, 501, 504, 508, 513, 515, + 517, 521, 528, 537, 542, 549, 553, 559, 560, 564, + 565, 569, 571, 573, 577, 581, 586, 590, 594, 596, + 600, 605, 609, 613, 615, 619, 623, 627, 632, 636, + 638, 639, 646, 651, 654, 655, 662, 667, 670, 671, + 679, 680, 687, 690, 691, 693, 694, 696, 698, 701, + 702, 706, 709, 713, 715, 719, 721, 723, 725, 729, + 734, 741, 746, 748, 752, 754, 758, 761, 764, 765, + 767, 769, 772, 773, 776, 780, 784, 787, 791, 796, + 800, 803, 807, 810, 812, 815, 818, 819, 821, 824, + 825, 826, 828, 830, 833, 837, 839, 842, 845, 852, + 858, 864, 867, 870, 875, 876, 881, 882, 883, 887, + 892, 896, 898, 900, 902, 905, 906, 911, 913, 917, + 918, 919, 927, 933, 936, 937, 938, 939, 952, 953, + 960, 963, 966, 969, 973, 980, 989, 1000, 1013, 1017, + 1022, 1024, 1028, 1034, 1037, 1040, 1041, 1043, 1044, 1046, + 1047, 1049, 1051, 1055, 1060, 1062, 1066, 1067, 1070, 1073, + 1074, 1079, 1082, 1083, 1085, 1087, 1091, 1093, 1097, 1100, + 1103, 1106, 1109, 1112, 1113, 1116, 1118, 1121, 1123, 1127, + 1129 +}; + +static const short yyrhs[] = { -1, + 77, 0, 0, 78, 80, 0, 0, 77, 79, 80, + 0, 82, 0, 81, 0, 27, 58, 91, 68, 69, + 0, 107, 117, 69, 0, 111, 107, 117, 69, 0, + 109, 107, 116, 69, 0, 111, 69, 0, 109, 69, + 0, 1, 69, 0, 1, 70, 0, 69, 0, 0, + 0, 109, 107, 132, 83, 101, 84, 162, 0, 109, + 107, 132, 1, 0, 0, 0, 111, 107, 135, 85, + 101, 86, 162, 0, 111, 107, 135, 1, 0, 0, + 0, 107, 135, 87, 101, 88, 162, 0, 107, 135, + 1, 0, 3, 0, 4, 0, 42, 0, 48, 0, + 47, 0, 53, 0, 54, 0, 71, 0, 72, 0, + 93, 0, 0, 93, 0, 97, 0, 93, 73, 97, + 0, 98, 0, 49, 96, 0, 0, 32, 95, 96, + 0, 90, 96, 0, 39, 89, 0, 11, 94, 0, + 11, 58, 150, 68, 0, 29, 94, 0, 29, 58, + 150, 68, 0, 94, 0, 58, 150, 68, 96, 0, + 58, 150, 68, 74, 127, 141, 70, 0, 96, 0, + 97, 47, 97, 0, 97, 48, 97, 0, 97, 49, + 97, 0, 97, 50, 97, 0, 97, 51, 97, 0, + 97, 45, 97, 0, 97, 46, 97, 0, 97, 44, + 97, 0, 97, 43, 97, 0, 97, 42, 97, 0, + 97, 40, 97, 0, 97, 41, 97, 0, 97, 39, + 97, 0, 97, 38, 97, 0, 97, 36, 183, 37, + 97, 0, 97, 35, 97, 0, 97, 34, 97, 0, + 3, 0, 8, 0, 100, 0, 58, 91, 68, 0, + 58, 1, 68, 0, 0, 58, 99, 163, 68, 0, + 98, 58, 92, 68, 0, 98, 59, 91, 75, 0, + 98, 57, 89, 0, 98, 56, 89, 0, 98, 53, + 0, 98, 54, 0, 9, 0, 100, 9, 0, 0, + 103, 0, 103, 10, 0, 168, 169, 104, 0, 102, + 0, 157, 0, 103, 102, 0, 102, 157, 0, 109, + 107, 116, 69, 0, 111, 107, 117, 69, 0, 109, + 69, 0, 111, 69, 0, 168, 169, 108, 0, 105, + 0, 157, 0, 106, 105, 0, 105, 157, 0, 0, + 109, 107, 116, 69, 0, 111, 107, 117, 69, 0, + 109, 107, 128, 0, 111, 107, 130, 0, 109, 69, + 0, 111, 69, 0, 114, 110, 0, 111, 114, 110, + 0, 0, 110, 115, 0, 110, 5, 0, 7, 0, + 5, 0, 111, 7, 0, 111, 5, 0, 114, 113, + 0, 152, 114, 113, 0, 0, 113, 115, 0, 6, + 0, 136, 0, 4, 0, 28, 58, 91, 68, 0, + 28, 58, 150, 68, 0, 6, 0, 7, 0, 136, + 0, 119, 0, 116, 73, 119, 0, 121, 0, 117, + 73, 119, 0, 0, 27, 58, 100, 68, 0, 0, + 132, 118, 123, 35, 120, 126, 0, 132, 118, 123, + 0, 0, 135, 118, 123, 35, 122, 126, 0, 135, + 118, 123, 0, 0, 31, 58, 58, 124, 68, 68, + 0, 125, 0, 124, 73, 125, 0, 3, 0, 3, + 58, 3, 68, 0, 3, 58, 8, 68, 0, 3, + 58, 3, 73, 8, 73, 8, 68, 0, 97, 0, + 74, 70, 0, 74, 127, 70, 0, 74, 127, 73, + 70, 0, 1, 0, 126, 0, 127, 73, 126, 0, + 59, 97, 10, 97, 75, 126, 0, 127, 73, 59, + 97, 10, 97, 75, 126, 0, 59, 97, 75, 126, + 0, 127, 73, 59, 97, 75, 126, 0, 89, 37, + 126, 0, 127, 73, 89, 37, 126, 0, 0, 132, + 129, 163, 0, 0, 135, 131, 163, 0, 133, 0, + 135, 0, 58, 133, 68, 0, 133, 58, 195, 0, + 133, 59, 91, 75, 0, 133, 59, 75, 0, 49, + 153, 133, 0, 4, 0, 134, 58, 195, 0, 134, + 59, 91, 75, 0, 134, 59, 75, 0, 49, 153, + 134, 0, 4, 0, 135, 58, 195, 0, 58, 135, + 68, 0, 49, 153, 135, 0, 135, 59, 91, 75, + 0, 135, 59, 75, 0, 3, 0, 0, 13, 89, + 74, 137, 143, 70, 0, 13, 74, 143, 70, 0, + 13, 89, 0, 0, 14, 89, 74, 138, 143, 70, + 0, 14, 74, 143, 70, 0, 14, 89, 0, 0, + 12, 89, 74, 139, 148, 142, 70, 0, 0, 12, + 74, 140, 148, 142, 70, 0, 12, 89, 0, 0, + 73, 0, 0, 73, 0, 144, 0, 144, 145, 0, + 0, 144, 145, 69, 0, 144, 69, 0, 112, 107, + 146, 0, 112, 0, 152, 107, 146, 0, 152, 0, + 1, 0, 147, 0, 146, 73, 147, 0, 168, 169, + 132, 123, 0, 168, 169, 132, 37, 97, 123, 0, + 168, 169, 37, 97, 0, 149, 0, 148, 73, 149, + 0, 89, 0, 89, 35, 97, 0, 112, 151, 0, + 152, 151, 0, 0, 154, 0, 7, 0, 152, 7, + 0, 0, 153, 7, 0, 58, 154, 68, 0, 49, + 153, 154, 0, 49, 153, 0, 154, 58, 188, 0, + 154, 59, 91, 75, 0, 154, 59, 75, 0, 58, + 188, 0, 59, 91, 75, 0, 59, 75, 0, 171, + 0, 155, 171, 0, 155, 157, 0, 0, 155, 0, + 1, 69, 0, 0, 0, 160, 0, 161, 0, 160, + 161, 0, 33, 199, 69, 0, 163, 0, 1, 163, + 0, 74, 70, 0, 74, 158, 159, 106, 156, 70, + 0, 74, 158, 159, 1, 70, 0, 74, 158, 159, + 155, 70, 0, 165, 170, 0, 165, 1, 0, 15, + 58, 91, 68, 0, 0, 18, 167, 170, 17, 0, + 0, 0, 168, 169, 173, 0, 168, 169, 181, 170, + 0, 168, 169, 172, 0, 173, 0, 181, 0, 163, + 0, 91, 69, 0, 0, 164, 16, 174, 170, 0, + 164, 0, 164, 16, 1, 0, 0, 0, 17, 175, + 58, 91, 68, 176, 170, 0, 166, 58, 91, 68, + 69, 0, 166, 1, 0, 0, 0, 0, 19, 58, + 183, 69, 177, 183, 69, 178, 183, 68, 179, 170, + 0, 0, 20, 58, 91, 68, 180, 170, 0, 23, + 69, 0, 24, 69, 0, 25, 69, 0, 25, 91, + 69, 0, 27, 182, 58, 91, 68, 69, 0, 27, + 182, 58, 91, 37, 184, 68, 69, 0, 27, 182, + 58, 91, 37, 184, 37, 184, 68, 69, 0, 27, + 182, 58, 91, 37, 184, 37, 184, 37, 187, 68, + 69, 0, 26, 89, 69, 0, 26, 49, 91, 69, + 0, 69, 0, 21, 91, 37, 0, 21, 91, 10, + 91, 37, 0, 22, 37, 0, 89, 37, 0, 0, + 7, 0, 0, 91, 0, 0, 185, 0, 186, 0, + 185, 73, 186, 0, 9, 58, 91, 68, 0, 100, + 0, 187, 73, 100, 0, 0, 189, 190, 0, 192, + 68, 0, 0, 193, 69, 191, 190, 0, 1, 68, + 0, 0, 10, 0, 193, 0, 193, 73, 10, 0, + 194, 0, 193, 73, 194, 0, 109, 134, 0, 109, + 135, 0, 109, 151, 0, 111, 135, 0, 111, 151, + 0, 0, 196, 197, 0, 190, 0, 198, 68, 0, + 3, 0, 198, 73, 3, 0, 89, 0, 199, 73, + 89, 0 +}; + +#if YYDEBUG != 0 +static const short yyrline[] = { 0, + 209, 213, 222, 224, 224, 225, 227, 229, 230, 240, + 246, 248, 250, 252, 254, 255, 256, 261, 267, 269, + 270, 272, 277, 279, 280, 282, 287, 289, 290, 294, + 296, 299, 301, 303, 305, 307, 309, 311, 315, 319, + 322, 325, 328, 332, 334, 337, 340, 343, 346, 366, + 371, 373, 375, 379, 381, 384, 409, 411, 413, 415, + 417, 419, 421, 423, 425, 427, 429, 431, 433, 435, + 437, 439, 441, 444, 449, 550, 551, 553, 559, 561, + 574, 591, 593, 595, 599, 605, 607, 612, 614, 618, + 620, 621, 631, 636, 638, 639, 640, 643, 648, 652, + 655, 663, 668, 670, 671, 672, 679, 687, 692, 696, + 700, 704, 706, 714, 717, 721, 723, 725, 736, 740, + 742, 745, 758, 761, 765, 767, 775, 776, 777, 781, + 783, 789, 790, 791, 794, 796, 799, 801, 804, 807, + 813, 818, 820, 826, 831, 833, 840, 843, 848, 850, + 855, 860, 870, 881, 899, 901, 905, 907, 909, 915, + 918, 921, 925, 930, 932, 934, 936, 940, 957, 961, + 978, 985, 987, 992, 995, 1000, 1002, 1004, 1006, 1014, + 1020, 1022, 1024, 1026, 1032, 1038, 1040, 1042, 1044, 1046, + 1049, 1054, 1058, 1061, 1063, 1065, 1067, 1070, 1072, 1075, + 1078, 1081, 1084, 1088, 1090, 1093, 1095, 1099, 1102, 1107, + 1109, 1111, 1125, 1131, 1136, 1141, 1146, 1150, 1152, 1156, + 1160, 1164, 1173, 1175, 1180, 1183, 1187, 1190, 1194, 1197, + 1200, 1203, 1207, 1210, 1214, 1218, 1220, 1222, 1224, 1226, + 1228, 1230, 1232, 1240, 1242, 1243, 1246, 1248, 1251, 1254, + 1265, 1267, 1272, 1274, 1277, 1291, 1294, 1297, 1299, 1304, + 1309, 1317, 1322, 1325, 1338, 1346, 1350, 1354, 1358, 1364, + 1368, 1373, 1375, 1386, 1389, 1394, 1399, 1402, 1410, 1412, + 1422, 1432, 1433, 1441, 1444, 1456, 1460, 1476, 1483, 1492, + 1494, 1499, 1504, 1508, 1512, 1523, 1530, 1537, 1544, 1555, + 1559, 1566, 1590, 1618, 1633, 1644, 1647, 1651, 1654, 1659, + 1661, 1664, 1666, 1670, 1675, 1678, 1684, 1689, 1694, 1696, + 1705, 1706, 1712, 1714, 1719, 1721, 1725, 1728, 1734, 1737, + 1739, 1741, 1743, 1750, 1755, 1760, 1762, 1771, 1774, 1779, + 1782 +}; + +static const char * const yytname[] = { "$","error","$illegal.","IDENTIFIER", +"TYPENAME","SCSPEC","TYPESPEC","TYPE_QUAL","CONSTANT","STRING","ELLIPSIS","SIZEOF", +"ENUM","STRUCT","UNION","IF","ELSE","WHILE","DO","FOR","SWITCH","CASE","DEFAULT", +"BREAK","CONTINUE","RETURN","GOTO","ASM_KEYWORD","TYPEOF","ALIGNOF","ALIGN", +"ATTRIBUTE","EXTENSION","LABEL","ASSIGN","'='","'?'","':'","OROR","ANDAND","'|'", +"'^'","'&'","EQCOMPARE","ARITHCOMPARE","LSHIFT","RSHIFT","'+'","'-'","'*'","'/'", +"'%'","UNARY","PLUSPLUS","MINUSMINUS","HYPERUNARY","POINTSAT","'.'","'('","'['", +"INTERFACE","IMPLEMENTATION","END","SELECTOR","DEFS","ENCODE","CLASSNAME","PUBLIC", +"')'","';'","'}'","'~'","'!'","','","'{'","']'","program","extdefs","@1","@2", +"extdef","datadef","fndef","@3","@4","@5","@6","@7","@8","identifier","unop", +"expr","exprlist","nonnull_exprlist","unary_expr","@9","cast_expr","expr_no_commas", +"primary","@10","string","xdecls","lineno_datadecl","datadecls","datadecl","lineno_decl", +"decls","setspecs","decl","typed_declspecs","reserved_declspecs","declmods", +"typed_typespecs","reserved_typespecquals","typespec","typespecqual_reserved", +"initdecls","notype_initdecls","maybeasm","initdcl","@11","notype_initdcl","@12", +"maybe_attribute","attribute_list","attrib","init","initlist","nested_function", +"@13","notype_nested_function","@14","declarator","after_type_declarator","parm_declarator", +"notype_declarator","structsp","@15","@16","@17","@18","maybecomma","maybecomma_warn", +"component_decl_list","component_decl_list2","component_decl","components","component_declarator", +"enumlist","enumerator","typename","absdcl","nonempty_type_quals","type_quals", +"absdcl1","stmts","xstmts","errstmt","pushlevel","maybe_label_decls","label_decls", +"label_decl","compstmt_or_error","compstmt","simple_if","if_prefix","do_stmt_start", +"@19","save_filename","save_lineno","lineno_labeled_stmt","lineno_stmt_or_label", +"stmt_or_label","stmt","@20","@21","@22","@23","@24","@25","@26","label","maybe_type_qual", +"xexpr","asm_operands","nonnull_asm_operands","asm_operand","asm_clobbers","parmlist", +"@27","parmlist_1","@28","parmlist_2","parms","parm","parmlist_or_identifiers", +"@29","parmlist_or_identifiers_1","identifiers","identifiers_or_typenames","" +}; +#endif + +static const short yyr1[] = { 0, + 76, 76, 78, 77, 79, 77, 80, 80, 80, 81, + 81, 81, 81, 81, 81, 81, 81, 83, 84, 82, + 82, 85, 86, 82, 82, 87, 88, 82, 82, 89, + 89, 90, 90, 90, 90, 90, 90, 90, 91, 92, + 92, 93, 93, 94, 94, 95, 94, 94, 94, 94, + 94, 94, 94, 96, 96, 96, 97, 97, 97, 97, + 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, + 97, 97, 97, 97, 98, 98, 98, 98, 98, 99, + 98, 98, 98, 98, 98, 98, 98, 100, 100, 101, + 101, 101, 102, 103, 103, 103, 103, 104, 104, 104, + 104, 105, 106, 106, 106, 106, 107, 108, 108, 108, + 108, 108, 108, 109, 109, 110, 110, 110, 111, 111, + 111, 111, 112, 112, 113, 113, 114, 114, 114, 114, + 114, 115, 115, 115, 116, 116, 117, 117, 118, 118, + 120, 119, 119, 122, 121, 121, 123, 123, 124, 124, + 125, 125, 125, 125, 126, 126, 126, 126, 126, 127, + 127, 127, 127, 127, 127, 127, 127, 129, 128, 131, + 130, 132, 132, 133, 133, 133, 133, 133, 133, 134, + 134, 134, 134, 134, 135, 135, 135, 135, 135, 135, + 137, 136, 136, 136, 138, 136, 136, 136, 139, 136, + 140, 136, 136, 141, 141, 142, 142, 143, 143, 144, + 144, 144, 145, 145, 145, 145, 145, 146, 146, 147, + 147, 147, 148, 148, 149, 149, 150, 150, 151, 151, + 152, 152, 153, 153, 154, 154, 154, 154, 154, 154, + 154, 154, 154, 155, 155, 155, 156, 156, 157, 158, + 159, 159, 160, 160, 161, 162, 162, 163, 163, 163, + 163, 164, 164, 165, 167, 166, 168, 169, 170, 170, + 171, 172, 172, 173, 173, 174, 173, 173, 173, 175, + 176, 173, 173, 173, 177, 178, 179, 173, 180, 173, + 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, + 173, 181, 181, 181, 181, 182, 182, 183, 183, 184, + 184, 185, 185, 186, 187, 187, 189, 188, 190, 191, + 190, 190, 192, 192, 192, 192, 193, 193, 194, 194, + 194, 194, 194, 196, 195, 197, 197, 198, 198, 199, + 199 +}; + +static const short yyr2[] = { 0, + 0, 1, 0, 2, 0, 3, 1, 1, 5, 3, + 4, 4, 2, 2, 2, 2, 1, 0, 0, 7, + 4, 0, 0, 7, 4, 0, 0, 6, 3, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, + 1, 1, 3, 1, 2, 0, 3, 2, 2, 2, + 4, 2, 4, 1, 4, 7, 1, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 5, 3, 3, 1, 1, 1, 3, 3, 0, + 4, 4, 4, 3, 3, 2, 2, 1, 2, 0, + 1, 2, 3, 1, 1, 2, 2, 4, 4, 2, + 2, 3, 1, 1, 2, 2, 0, 4, 4, 3, + 3, 2, 2, 2, 3, 0, 2, 2, 1, 1, + 2, 2, 2, 3, 0, 2, 1, 1, 1, 4, + 4, 1, 1, 1, 1, 3, 1, 3, 0, 4, + 0, 6, 3, 0, 6, 3, 0, 6, 1, 3, + 1, 4, 4, 8, 1, 2, 3, 4, 1, 1, + 3, 6, 8, 4, 6, 3, 5, 0, 3, 0, + 3, 1, 1, 3, 3, 4, 3, 3, 1, 3, + 4, 3, 3, 1, 3, 3, 3, 4, 3, 1, + 0, 6, 4, 2, 0, 6, 4, 2, 0, 7, + 0, 6, 2, 0, 1, 0, 1, 1, 2, 0, + 3, 2, 3, 1, 3, 1, 1, 1, 3, 4, + 6, 4, 1, 3, 1, 3, 2, 2, 0, 1, + 1, 2, 0, 2, 3, 3, 2, 3, 4, 3, + 2, 3, 2, 1, 2, 2, 0, 1, 2, 0, + 0, 1, 1, 2, 3, 1, 2, 2, 6, 5, + 5, 2, 2, 4, 0, 4, 0, 0, 3, 4, + 3, 1, 1, 1, 2, 0, 4, 1, 3, 0, + 0, 7, 5, 2, 0, 0, 0, 12, 0, 6, + 2, 2, 2, 3, 6, 8, 10, 12, 3, 4, + 1, 3, 5, 2, 2, 0, 1, 0, 1, 0, + 1, 1, 3, 4, 1, 3, 0, 2, 2, 0, + 4, 2, 0, 1, 1, 3, 1, 3, 2, 2, + 2, 2, 2, 0, 2, 1, 2, 1, 3, 1, + 3 +}; + +static const short yydefact[] = { 3, + 5, 0, 0, 0, 129, 120, 127, 119, 0, 0, + 0, 0, 0, 17, 4, 8, 7, 0, 107, 107, + 116, 128, 6, 15, 16, 30, 31, 201, 203, 210, + 194, 210, 198, 0, 0, 190, 233, 0, 0, 137, + 0, 14, 0, 122, 121, 13, 0, 116, 114, 0, + 199, 0, 0, 191, 0, 195, 75, 76, 88, 0, + 0, 46, 0, 32, 34, 33, 0, 35, 36, 0, + 37, 38, 0, 0, 39, 54, 57, 42, 44, 77, + 231, 0, 229, 125, 0, 229, 0, 0, 10, 0, + 29, 0, 334, 0, 0, 147, 179, 233, 0, 0, + 135, 0, 172, 173, 0, 0, 115, 118, 132, 133, + 117, 134, 225, 206, 223, 0, 193, 217, 212, 107, + 209, 107, 210, 197, 210, 0, 50, 0, 52, 0, + 49, 45, 0, 0, 0, 0, 48, 0, 0, 0, + 0, 308, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 86, 87, 0, 0, + 40, 0, 89, 130, 233, 317, 0, 227, 230, 123, + 131, 232, 125, 228, 234, 187, 186, 138, 139, 0, + 185, 0, 189, 0, 0, 27, 0, 267, 95, 268, + 0, 146, 0, 0, 12, 0, 21, 0, 147, 334, + 0, 11, 25, 0, 0, 207, 0, 206, 267, 211, + 267, 0, 0, 0, 0, 47, 79, 78, 250, 0, + 0, 9, 43, 74, 73, 309, 0, 71, 70, 68, + 69, 67, 66, 65, 63, 64, 58, 59, 60, 61, + 62, 85, 84, 0, 41, 0, 237, 0, 241, 0, + 243, 0, 317, 0, 126, 124, 0, 0, 338, 324, + 229, 229, 336, 0, 325, 327, 335, 0, 188, 249, + 0, 97, 92, 96, 0, 0, 144, 178, 174, 136, + 19, 143, 175, 177, 0, 23, 226, 224, 202, 0, + 213, 218, 268, 215, 192, 196, 51, 53, 258, 251, + 81, 0, 55, 0, 82, 83, 236, 235, 318, 242, + 238, 240, 0, 140, 322, 184, 233, 317, 329, 330, + 331, 233, 332, 333, 319, 320, 0, 337, 0, 0, + 28, 256, 93, 107, 107, 0, 0, 0, 141, 176, + 0, 200, 267, 0, 0, 0, 252, 253, 159, 75, + 0, 0, 0, 155, 160, 204, 72, 239, 237, 334, + 0, 237, 0, 326, 328, 339, 257, 100, 0, 101, + 0, 151, 0, 149, 145, 20, 0, 24, 219, 0, + 147, 340, 0, 0, 0, 267, 0, 104, 268, 244, + 254, 0, 156, 0, 0, 0, 0, 183, 180, 182, + 0, 321, 0, 0, 139, 0, 0, 0, 142, 222, + 0, 220, 255, 0, 260, 106, 105, 0, 0, 261, + 246, 268, 245, 0, 0, 0, 157, 0, 166, 0, + 0, 161, 56, 181, 98, 99, 0, 0, 148, 150, + 147, 341, 259, 0, 129, 0, 280, 265, 0, 0, + 0, 0, 0, 0, 0, 0, 306, 301, 0, 0, + 102, 107, 107, 274, 278, 0, 0, 271, 272, 273, + 0, 164, 158, 0, 0, 152, 0, 153, 221, 0, + 0, 267, 308, 0, 0, 304, 291, 292, 293, 0, + 0, 0, 307, 0, 305, 275, 112, 0, 113, 0, + 0, 263, 268, 262, 284, 0, 0, 0, 0, 167, + 0, 0, 0, 0, 0, 0, 0, 302, 294, 0, + 299, 0, 0, 110, 139, 0, 111, 139, 279, 267, + 0, 0, 162, 0, 165, 0, 264, 0, 266, 285, + 289, 0, 300, 0, 108, 0, 109, 0, 277, 269, + 267, 0, 0, 0, 281, 308, 267, 303, 310, 0, + 169, 171, 270, 283, 163, 154, 267, 0, 290, 0, + 0, 311, 312, 295, 282, 286, 0, 310, 0, 0, + 308, 0, 0, 296, 313, 0, 314, 0, 0, 287, + 315, 0, 297, 267, 0, 0, 288, 298, 316, 0, + 0, 0 +}; + +static const short yydefgoto[] = { 600, + 1, 2, 3, 15, 16, 17, 198, 338, 204, 341, + 95, 271, 113, 73, 226, 244, 75, 76, 130, 77, + 78, 79, 135, 80, 186, 187, 188, 333, 385, 386, + 18, 461, 261, 49, 262, 83, 170, 21, 111, 100, + 39, 96, 101, 377, 40, 337, 192, 373, 374, 355, + 356, 524, 546, 527, 548, 179, 103, 319, 104, 22, + 123, 125, 116, 50, 397, 207, 52, 53, 121, 291, + 292, 114, 115, 85, 168, 86, 87, 169, 387, 419, + 189, 300, 346, 347, 348, 331, 332, 465, 466, 467, + 482, 503, 275, 504, 390, 468, 469, 530, 481, 567, + 556, 581, 594, 557, 470, 494, 227, 571, 572, 573, + 592, 249, 250, 263, 363, 264, 265, 266, 181, 182, + 267, 268, 383 +}; + +static const short yypact[] = { 78, + 87, 1917, 1917, 222,-32768,-32768,-32768,-32768, 44, 48, + 60, 86, 92,-32768,-32768,-32768,-32768, 135, 31, 735, +-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 105,-32768, + 142,-32768, 155, 1807, 1732,-32768,-32768, 135, 163,-32768, + 464,-32768, 145,-32768,-32768,-32768, 135,-32768, 293, 204, +-32768, 177, 372,-32768, 179,-32768,-32768,-32768,-32768, 1834, + 1861,-32768, 204,-32768,-32768,-32768, 1807,-32768,-32768, 309, +-32768,-32768, 1807, 184, 213,-32768,-32768, 2091, 488, 246, +-32768, 189, 17,-32768, 235, 431, 50, 138,-32768, 145, +-32768, 243,-32768, 1333, 392, 277,-32768,-32768, 145, 185, +-32768, 1326, 294, 343, 262, 1255, 293,-32768,-32768,-32768, +-32768,-32768, 279, 238,-32768, 204,-32768,-32768,-32768, 342, + 250, 944,-32768,-32768,-32768, 309,-32768, 309,-32768, 1807, +-32768,-32768, 268, 271, 256, 274,-32768, 275, 1807, 1807, + 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, + 1807, 1807, 1807, 1807, 1807, 1807,-32768,-32768, 204, 204, + 1807, 1807,-32768,-32768,-32768, 17, 1381,-32768, 349, 282, +-32768,-32768,-32768,-32768,-32768, 343,-32768,-32768, 332, 352, +-32768, 501,-32768, 307, 300,-32768, 159, 40,-32768,-32768, + 316, 357, 207, 154,-32768, 145,-32768, 392, 277,-32768, + 1416,-32768,-32768, 392, 1807, 204, 333, 238,-32768,-32768, +-32768, 345, 348, 354, 358,-32768,-32768,-32768, 359, 394, + 1679,-32768, 2091, 2091, 2091,-32768, 340, 1907, 1505, 1990, + 570, 648, 720, 791, 233, 233, 338, 338,-32768,-32768, +-32768,-32768,-32768, 396, 213, 388, 88, 167,-32768, 1057, +-32768, 398,-32768, 1451,-32768, 282, 28, 399,-32768,-32768, + 103, 2016,-32768, 413, 276,-32768,-32768, 0,-32768,-32768, + 42,-32768,-32768,-32768, 1132, 424,-32768, 294,-32768,-32768, +-32768, 450,-32768,-32768, 411,-32768, 2091,-32768,-32768, 417, + 420,-32768,-32768, 420,-32768,-32768,-32768,-32768,-32768, 461, +-32768, 1192,-32768, 1807,-32768,-32768, 349,-32768,-32768,-32768, +-32768,-32768, 421,-32768,-32768,-32768,-32768, 133, 355, 343, +-32768,-32768, 343,-32768,-32768,-32768, 879,-32768, 495, 256, +-32768,-32768,-32768, 432, 807, 506, 1246, 42,-32768,-32768, + 42,-32768,-32768, 391, 204, 632, 461,-32768,-32768, 473, + 1807, 976, 475, 2091,-32768, 443, 1166,-32768, 182,-32768, + 1486, 202, 1057,-32768,-32768,-32768,-32768,-32768, 145,-32768, + 135, 459, 108,-32768,-32768,-32768, 1246,-32768,-32768, 1807, + 51,-32768, 281, 378, 553, 451, 704,-32768,-32768,-32768, +-32768, 1949,-32768, 125, 1246, 1048, 454, 355,-32768,-32768, + 445,-32768, 291, 297, 22, 215, 457, 506,-32768, 2091, + 1807,-32768,-32768, 204,-32768,-32768,-32768, 776, 458,-32768, +-32768,-32768,-32768, 1559, 1807, 1246,-32768, 1120,-32768, 1807, + 490,-32768,-32768,-32768,-32768,-32768, 170, 462,-32768,-32768, + 2070,-32768,-32768, 1631, 494, 474,-32768,-32768, 477, 478, + 1807, 502, 471, 481, 1759, 66, 545,-32768, 518, 514, +-32768, 515, 1128,-32768, 547, 848, 53,-32768,-32768,-32768, + 2011,-32768,-32768, 1967, 1246,-32768, 578,-32768,-32768, 1807, + 529,-32768, 1807, 1807, 52,-32768,-32768,-32768,-32768, 519, + 1807, 520,-32768, 532,-32768,-32768,-32768, 145,-32768, 135, + 920,-32768,-32768,-32768,-32768, 1807, 1246, 1807, 1246,-32768, + 521, 523, 1807, 576, 527, 531, 1807,-32768,-32768, 528, +-32768, 1807, 299,-32768, 19, 302,-32768, 116,-32768,-32768, + 1631, 535,-32768, 2049,-32768, 596,-32768, 537,-32768,-32768, +-32768, 571,-32768, 18,-32768, 256,-32768, 256,-32768,-32768, +-32768, 540, 1246, 542,-32768, 1807,-32768,-32768, 617, 559, +-32768,-32768,-32768,-32768,-32768,-32768,-32768, 560,-32768, 584, + 30, 561,-32768,-32768,-32768,-32768, 1807, 617, 579, 617, + 1807, 594, 37,-32768,-32768, 595,-32768, 352, 597,-32768, + 246, 171,-32768,-32768, 598, 352,-32768,-32768, 246, 665, + 668,-32768 +}; + +static const short yypgoto[] = {-32768, +-32768,-32768,-32768, 666,-32768,-32768,-32768,-32768,-32768,-32768, +-32768,-32768, -5,-32768, -34,-32768, 509, 395,-32768, -33, + 123,-32768,-32768, -164, -139, 484,-32768,-32768, 287,-32768, + -10,-32768, 10, 627, 12, 624, 505, -9, -132, -339, + -39, -95, -57,-32768,-32768,-32768, -182,-32768, 280, -305, + 330,-32768,-32768,-32768,-32768, -40, -64, 324, -16, -28, +-32768,-32768,-32768,-32768,-32768, 476, 7,-32768,-32768, 489, + 344, 573, 496, -25, -61, 656, -80, -138, 325,-32768, + -168,-32768,-32768,-32768, 363, -111, -115,-32768,-32768,-32768, +-32768, -53, -269, -426, -261,-32768, 183,-32768,-32768,-32768, +-32768,-32768,-32768,-32768, 186,-32768, -454, 140,-32768, 136, +-32768, 467,-32768, -223,-32768,-32768,-32768, 405, -177,-32768, +-32768,-32768,-32768 +}; + + +#define YYLAST 2142 + + +static const short yytable[] = { 74, + 82, 41, 102, 29, 31, 33, 199, 105, 43, 47, + 48, 19, 19, 20, 20, 257, 282, 193, 272, 220, + 112, 88, 283, 344, 174, 84, 309, 248, 515, 403, + 106, 375, 178, 132, 194, 134, 163, 255, 55, 137, + -91, 190, 330, 84, 136, 92, 26, 27, 92, 273, + 26, 27, 36, 505, 559, 514, 175, 131, 281, 184, + 84, 517, 26, 27, 286, 165, 578, 328, 26, 27, + 176, 409, 329, 588, 166, 167, 173, -1, 112, 93, + 94, 191, 88, 199, 247, 560, -2, 411, 518, 429, + 432, 134, -168, 134, 175, 314, 216, 579, 37, 42, + 214, 568, 215, 549, 589, 36, 316, 38, 307, 209, + 506, 211, 173, -91, 491, 219, 84, 28, 84, 424, + 472, 30, 432, 255, 563, 423, 586, 246, 278, 212, + 569, 213, 252, 32, 190, 36, 165, 36, 280, 402, + 575, 112, 92, 34, 190, 166, 167, 36, 97, 35, + 190, 317, 444, 242, 243, 293, 423, 293, 523, 185, + 318, 167, -94, -94, -94, -94, 285, 597, -94, 510, + -94, -94, -94, 93, 94, 407, 176, 388, 51, 248, + 408, 322, 399, 37, 36, 316, -94, 303, 175, -170, + 318, 167, 38, 98, 427, 93, 94, 428, 412, 321, + 324, 533, 99, 535, 36, 177, 26, 27, 175, 36, + 97, 200, 201, 175, 367, 54, 416, 437, 421, 313, + 307, 279, 438, 307, 253, 254, 376, 112, 56, 378, + 317, 89, -94, 531, 308, 90, 359, 476, 595, 318, + 167, 362, 477, 596, 320, 323, 117, 565, 124, 421, + 322, 138, 48, 195, 163, 98, 164, 196, 479, 318, + 167, 223, 224, 225, 99, 228, 229, 230, 231, 232, + 233, 234, 235, 236, 237, 238, 239, 240, 241, 152, + 153, 154, 155, 156, 334, 139, 335, 109, 110, 293, + 24, 25, 389, 9, 10, 11, 353, 108, 109, 110, + 180, 88, 171, 381, 9, 10, 11, 191, 464, 133, + 206, 57, 5, 205, 7, 81, 58, 59, 210, 60, + 9, 10, 11, 369, 371, 48, 401, 287, 464, 219, + 202, 404, 389, 422, 90, 217, 13, 61, 218, 382, + 62, 221, 176, 222, 326, 176, 353, 63, 327, 413, + 64, 200, 201, 414, 405, 65, 66, 67, 92, 435, + 59, 68, 69, 196, 422, 436, 70, 545, 270, 90, + 547, 196, 118, 276, 90, 5, 304, 7, 81, 71, + 72, 269, -80, 9, 10, 11, 154, 155, 156, 460, + 431, 277, 185, 36, 97, -267, -267, -267, -267, 13, + 93, 94, 289, -267, -267, -267, 253, 254, 442, 460, + -214, -214, 360, 361, 295, 464, 485, 296, 459, -267, + 490, 297, 431, 591, 354, 298, 357, 380, 299, 199, + 561, 599, 562, 462, 5, 463, 7, 172, 459, 98, + 119, -208, 9, 10, 11, 512, 270, 415, 99, 516, + 492, 498, 500, 48, 127, 129, 520, 525, 13, 354, + 526, 301, 306, 305, 91, -90, 315, -26, -26, -26, + -26, 532, 310, 392, 354, -26, -26, -26, 538, 165, + 325, 336, 542, 528, 339, 340, 342, 544, 166, 167, + 92, -26, 343, 345, -139, 358, 460, 366, -139, 354, + 368, 258, 410, 259, 5, 6, 7, 8, 372, -30, + 260, 395, 9, 10, 11, 396, 406, 354, 354, 434, + -247, 93, 94, 433, 439, 459, 475, 443, 13, 478, + -31, 480, -139, 441, 483, 484, -139, -26, 486, 487, + 157, 158, 582, 159, 160, 161, 162, 471, 354, 488, + 354, 493, 474, 185, 495, -103, -103, -103, -103, -103, + -103, -103, 501, -103, -103, -103, -103, -103, -323, -103, + -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, + -103, -103, 496, 497, -103, 511, 513, 519, 521, 522, + 537, -103, 539, 536, -103, 540, 543, 354, 541, -103, + -103, -103, 552, 554, 555, -103, -103, 558, 564, 566, + -103, 147, 148, 149, 150, 151, 152, 153, 154, 155, + 156, -103, -103, -103, -103, 570, -103, 574, 576, 354, + 534, 354, 384, 580, -267, -267, -267, -267, -267, -267, + -267, 577, -267, -267, -267, -267, -267, 584, -267, -267, + -267, -267, -267, -267, -267, -267, -267, -267, -267, -267, + -267, 587, 590, -267, 601, 593, 598, 602, 23, 245, + -267, 274, 417, -267, 107, 354, 120, 256, -267, -267, + -267, 394, 398, 290, -267, -267, 379, 440, 208, -267, + 148, 149, 150, 151, 152, 153, 154, 155, 156, 294, + -267, 288, -267, -267, 185, -267, -267, -267, 122, 391, + 418, -267, -267, 550, -267, 585, 551, 583, -267, 311, + -267, -267, -267, -267, -267, -267, -267, -267, -267, -267, + -267, 365, -267, 0, 0, -267, 0, 0, 5, 44, + 7, 45, -267, 0, 0, -267, 9, 10, 11, 0, + -267, -267, -267, 0, 0, 0, -267, -267, 0, 0, + 0, -267, 13, 149, 150, 151, 152, 153, 154, 155, + 156, 0, -267, 420, -267, -267, 185, -267, -267, -267, + 0, 0, 0, -267, -267, 0, -267, 0, 0, 0, + -267, 0, -267, -267, -267, -267, -267, -267, -267, -267, + -267, -267, -267, 46, -267, 0, 0, -267, 0, 0, + 5, 44, 7, 45, -267, 0, 0, -267, 9, 10, + 11, 0, -267, -267, -267, 0, 0, 0, -267, -267, + 0, 0, 0, -267, 13, 150, 151, 152, 153, 154, + 155, 156, 0, 0, -267, -248, -267, -267, 502, -267, + -267, -267, 0, 0, 0, -267, -267, 0, -267, 0, + 0, 0, -267, 0, -267, -267, -267, -267, -267, -267, + -267, -267, -267, -267, -267, 370, -267, 0, 0, -267, + 0, 0, 5, 6, 7, 8, -267, 0, 364, -267, + 9, 10, 11, 0, -267, -267, -267, 0, 0, 0, + -267, -267, 0, 0, 0, -267, 13, 0, 0, 0, + 0, 0, 0, 0, 0, 0, -267, 0, -267, -267, + 529, -267, -276, -276, 0, 0, 0, -276, -276, 0, + -276, 0, 0, 0, -276, 0, -276, -276, -276, -276, + -276, -276, -276, -276, -276, -276, -276, 5, -276, 7, + 172, -276, 0, 0, 0, 9, 10, 11, -276, 0, + 0, -276, 0, 0, 0, 0, -276, -276, -276, 0, + 0, 13, -276, -276, 0, 0, 349, -276, 350, 27, + 0, 0, 0, 58, 59, 0, 60, 0, -276, 0, + -276, -276, 0, -276, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 61, 0, 0, 62, 0, 0, + 0, 0, -216, -216, 63, 0, 0, 64, 0, 0, + 0, 0, 65, 66, 67, 0, 0, 0, 68, 69, + 0, 0, 0, 70, 351, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 393, 71, 72, 349, 352, + 350, 27, 0, 0, 0, 58, 59, 258, 60, 0, + 5, 6, 7, 8, 0, 0, 260, 0, 9, 10, + 11, 0, 0, 0, 0, 0, 61, 0, 0, 62, + 0, 0, 0, 0, 13, 0, 63, 0, 0, 64, + 0, 0, 0, 0, 65, 66, 67, 0, 0, 0, + 68, 69, 0, 0, 0, 70, 430, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, -205, 71, 72, + 349, 352, 350, 27, -323, 0, 0, 58, 59, 0, + 60, 5, 44, 7, 45, 5, 6, 7, 8, 9, + 10, 11, 0, 9, 10, 11, 0, 0, 61, 0, + 0, 62, 0, 0, 0, 13, 0, 0, 63, 13, + 0, 64, 0, 0, 0, 0, 65, 66, 67, 0, + 0, 0, 68, 69, 0, 0, 0, 70, 430, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 473, + 71, 72, 349, 352, 350, 27, 499, 0, 0, 58, + 59, 142, 60, 143, 144, 145, 146, 147, 148, 149, + 150, 151, 152, 153, 154, 155, 156, 0, 0, 0, + 61, 0, 0, 62, 0, 0, 0, 0, 0, 0, + 63, 0, 0, 64, 0, 0, 0, 0, 65, 66, + 67, 0, 0, 0, 68, 69, 349, 0, 57, 70, + 351, 0, 0, 58, 59, 203, 60, 0, -22, -22, + -22, -22, 71, 72, 0, 352, -22, -22, -22, 0, + 0, 0, 0, 0, 61, 0, 0, 62, 0, 0, + 0, 92, -22, 0, 63, -139, 0, 64, 0, -139, + 0, 0, 65, 66, 67, 0, 0, 0, 68, 69, + 0, 0, 0, 70, 0, 0, 0, 0, 0, 0, + 0, 0, 93, 94, 0, 0, 71, 72, 0, 352, + 0, 0, 0, -139, 0, 0, 197, -139, -22, -18, + -18, -18, -18, 0, 0, 57, 0, -18, -18, -18, + 58, 59, 0, 60, 0, 0, 0, 0, 0, 0, + 0, 0, 92, -18, 0, 0, -139, 0, 0, 0, + -139, 61, 0, 0, 62, 0, 0, 0, 0, 0, + 0, 63, 0, 0, 64, 0, 0, 0, 0, 65, + 66, 67, 0, 57, 0, 68, 69, 0, 58, 59, + 70, 60, 0, 0, -139, 0, 0, 0, -139, -18, + 0, 0, 0, 71, 72, 0, 0, 183, 0, 61, + 0, 0, 62, 0, 0, 0, 0, 0, 57, 63, + 0, 0, 64, 58, 59, 0, 60, 65, 66, 67, + 0, 0, 0, 68, 69, 0, 0, 0, 70, 0, + 0, 0, 0, 0, 61, 0, 0, 62, 0, 0, + 0, 71, 72, 57, 63, 251, 0, 64, 58, 59, + 0, 60, 65, 66, 67, 0, 0, 0, 68, 69, + 0, 0, 0, 70, 0, 0, 0, 0, 0, 61, + 0, 0, 62, 0, 0, 0, 71, 72, 57, 63, + 284, 0, 64, 58, 59, 0, 60, 65, 66, 67, + 0, 0, 0, 68, 69, 0, 0, 0, 70, 0, + 0, 0, 0, 0, 61, 0, 0, 62, 0, 0, + 0, 71, 72, 0, 63, 312, 0, 64, 0, 0, + 0, 0, 65, 66, 67, 0, 0, 0, 68, 69, + 0, 0, 0, 70, 145, 146, 147, 148, 149, 150, + 151, 152, 153, 154, 155, 156, 71, 72, 0, 0, + 400, 350, 445, 6, 7, 8, 58, 59, 0, 60, + 9, 10, 11, 446, 0, 447, 448, 449, 450, 451, + 452, 453, 454, 455, 456, 457, 13, 61, 0, 0, + 62, 0, 0, 0, 0, 0, 0, 63, 0, 0, + 64, 0, 0, 0, 0, 65, 66, 67, 0, 0, + 0, 68, 69, 0, 0, 0, 70, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 458, 0, 71, + 72, 0, 219, 350, 27, 0, 0, 0, 58, 59, + 0, 60, 0, 0, 0, 446, 0, 447, 448, 449, + 450, 451, 452, 453, 454, 455, 456, 457, 0, 61, + 0, 0, 62, 0, 0, 0, 0, 0, 0, 63, + 0, 0, 64, 0, 0, 0, 0, 65, 66, 67, + 0, 57, 0, 68, 69, 0, 58, 59, 70, 60, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 458, + 0, 71, 72, 0, 219, 0, 0, 61, 0, 0, + 62, 0, 0, 0, 0, 0, 0, 63, 0, 0, + 64, 0, 0, 0, 0, 65, 66, 67, 0, 0, + 0, 68, 69, 0, 57, 5, 70, 7, 81, 58, + 59, 0, 60, 9, 10, 11, 0, 0, 0, 71, + 72, 0, 302, 0, 0, 0, 0, 0, 0, 13, + 61, 57, 0, 62, 0, 0, 58, 59, 0, 60, + 63, 0, 0, 64, 0, 0, 0, 0, 65, 66, + 67, 0, 0, 0, 68, 69, 0, 61, 0, 70, + 62, 0, 0, 0, 0, 0, 0, 63, 0, 0, + 64, 0, 71, 72, 0, 65, 66, 67, 0, 57, + 0, 68, 69, 0, 58, 59, 70, 60, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 489, 0, 71, + 72, 0, 0, 0, 0, 61, 57, 0, 62, 0, + 0, 58, 59, 0, 60, 63, 0, 0, 64, 0, + 0, 0, 0, 65, 66, 67, 0, 0, 0, 68, + 69, 0, 61, 57, 70, 62, 0, 0, 58, 59, + 0, 60, 63, 0, 0, 64, 0, 71, 72, 0, + 65, 66, 67, 0, 0, 0, 68, 69, 0, 61, + 0, 126, 62, 0, 0, 0, 0, 0, 0, 63, + 0, 0, 64, 0, 71, 72, 0, 65, 66, 67, + 0, 0, 0, 68, 69, 0, 0, 4, 128, -107, + 5, 6, 7, 8, 0, 0, 0, 0, 9, 10, + 11, 71, 72, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 12, 13, 144, 145, 146, 147, 148, + 149, 150, 151, 152, 153, 154, 155, 156, 425, 0, + 0, 0, 0, 0, 0, -107, 0, 0, 0, 0, + 0, 0, 0, 0, -107, 0, 508, 0, 0, 0, + 0, 0, 140, 141, 142, 14, 143, 144, 145, 146, + 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, + 140, 141, 142, 0, 143, 144, 145, 146, 147, 148, + 149, 150, 151, 152, 153, 154, 155, 156, 36, 5, + 44, 7, 45, 426, 0, 0, 0, 9, 10, 11, + 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, + 156, 509, 0, 13, 140, 141, 142, 0, 143, 144, + 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, + 155, 156, 0, 0, 322, 0, 0, 0, 0, 0, + 0, 0, 0, 318, 167, 0, 0, 0, 0, 0, + 0, 0, 140, 141, 142, 507, 143, 144, 145, 146, + 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, + 191, 0, 0, 140, 141, 142, 0, 143, 144, 145, + 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, + 156, 0, 0, 553, 140, 141, 142, 0, 143, 144, + 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, + 155, 156 +}; + +static const short yycheck[] = { 34, + 35, 18, 43, 9, 10, 11, 102, 47, 19, 20, + 20, 2, 3, 2, 3, 180, 199, 98, 187, 135, + 49, 38, 200, 293, 86, 35, 250, 166, 483, 369, + 47, 337, 90, 67, 99, 70, 9, 170, 32, 73, + 1, 95, 1, 53, 70, 27, 3, 4, 27, 10, + 3, 4, 3, 1, 37, 482, 7, 63, 198, 94, + 70, 10, 3, 4, 204, 49, 37, 68, 3, 4, + 87, 377, 73, 37, 58, 59, 86, 0, 107, 58, + 59, 31, 99, 179, 165, 68, 0, 37, 37, 395, + 396, 126, 74, 128, 7, 68, 130, 68, 49, 69, + 126, 556, 128, 530, 68, 3, 4, 58, 247, 120, + 58, 122, 122, 74, 49, 74, 126, 74, 128, 389, + 426, 74, 428, 256, 551, 387, 581, 162, 193, 123, + 557, 125, 167, 74, 188, 3, 49, 3, 196, 363, + 567, 170, 27, 58, 198, 58, 59, 3, 4, 58, + 204, 49, 422, 159, 160, 209, 418, 211, 498, 1, + 58, 59, 4, 5, 6, 7, 201, 594, 10, 475, + 12, 13, 14, 58, 59, 68, 193, 346, 74, 318, + 73, 49, 360, 49, 3, 4, 28, 221, 7, 74, + 58, 59, 58, 49, 70, 58, 59, 73, 381, 261, + 262, 507, 58, 509, 3, 68, 3, 4, 7, 3, + 4, 58, 59, 7, 330, 74, 385, 3, 387, 254, + 359, 68, 8, 362, 58, 59, 338, 256, 74, 341, + 49, 69, 74, 503, 68, 73, 317, 68, 68, 58, + 59, 322, 73, 73, 261, 262, 70, 553, 70, 418, + 49, 68, 262, 69, 9, 49, 68, 73, 441, 58, + 59, 139, 140, 141, 58, 143, 144, 145, 146, 147, + 148, 149, 150, 151, 152, 153, 154, 155, 156, 47, + 48, 49, 50, 51, 275, 73, 275, 6, 7, 343, + 69, 70, 346, 12, 13, 14, 302, 5, 6, 7, + 58, 318, 68, 344, 12, 13, 14, 31, 424, 1, + 73, 3, 4, 35, 6, 7, 8, 9, 69, 11, + 12, 13, 14, 334, 335, 335, 361, 205, 444, 74, + 69, 371, 386, 387, 73, 68, 28, 29, 68, 345, + 32, 68, 359, 69, 69, 362, 352, 39, 73, 69, + 42, 58, 59, 73, 371, 47, 48, 49, 27, 69, + 9, 53, 54, 73, 418, 69, 58, 69, 69, 73, + 69, 73, 1, 58, 73, 4, 37, 6, 7, 71, + 72, 75, 74, 12, 13, 14, 49, 50, 51, 424, + 396, 35, 1, 3, 4, 4, 5, 6, 7, 28, + 58, 59, 70, 12, 13, 14, 58, 59, 414, 444, + 69, 70, 58, 59, 70, 531, 451, 70, 424, 28, + 455, 68, 428, 588, 302, 68, 304, 37, 70, 525, + 546, 596, 548, 424, 4, 424, 6, 7, 444, 49, + 69, 70, 12, 13, 14, 480, 69, 70, 58, 484, + 456, 462, 463, 463, 60, 61, 491, 498, 28, 337, + 500, 68, 75, 68, 1, 74, 68, 4, 5, 6, + 7, 506, 75, 351, 352, 12, 13, 14, 513, 49, + 68, 58, 517, 500, 35, 75, 70, 522, 58, 59, + 27, 28, 73, 33, 31, 75, 531, 3, 35, 377, + 69, 1, 380, 3, 4, 5, 6, 7, 3, 37, + 10, 37, 12, 13, 14, 73, 58, 395, 396, 75, + 70, 58, 59, 70, 68, 531, 37, 70, 28, 68, + 37, 58, 69, 411, 58, 58, 73, 74, 37, 69, + 53, 54, 577, 56, 57, 58, 59, 425, 426, 69, + 428, 7, 430, 1, 37, 3, 4, 5, 6, 7, + 8, 9, 16, 11, 12, 13, 14, 15, 68, 17, + 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, + 28, 29, 69, 69, 32, 8, 58, 69, 69, 58, + 68, 39, 17, 73, 42, 69, 69, 475, 68, 47, + 48, 49, 68, 8, 68, 53, 54, 37, 69, 68, + 58, 42, 43, 44, 45, 46, 47, 48, 49, 50, + 51, 69, 70, 71, 72, 9, 74, 69, 69, 507, + 508, 509, 1, 73, 3, 4, 5, 6, 7, 8, + 9, 58, 11, 12, 13, 14, 15, 69, 17, 18, + 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, + 29, 68, 68, 32, 0, 69, 69, 0, 3, 161, + 39, 188, 386, 42, 48, 553, 53, 173, 47, 48, + 49, 352, 359, 208, 53, 54, 343, 408, 116, 58, + 43, 44, 45, 46, 47, 48, 49, 50, 51, 211, + 69, 206, 71, 72, 1, 74, 3, 4, 53, 347, + 386, 8, 9, 531, 11, 580, 531, 578, 15, 253, + 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, + 27, 327, 29, -1, -1, 32, -1, -1, 4, 5, + 6, 7, 39, -1, -1, 42, 12, 13, 14, -1, + 47, 48, 49, -1, -1, -1, 53, 54, -1, -1, + -1, 58, 28, 44, 45, 46, 47, 48, 49, 50, + 51, -1, 69, 70, 71, 72, 1, 74, 3, 4, + -1, -1, -1, 8, 9, -1, 11, -1, -1, -1, + 15, -1, 17, 18, 19, 20, 21, 22, 23, 24, + 25, 26, 27, 69, 29, -1, -1, 32, -1, -1, + 4, 5, 6, 7, 39, -1, -1, 42, 12, 13, + 14, -1, 47, 48, 49, -1, -1, -1, 53, 54, + -1, -1, -1, 58, 28, 45, 46, 47, 48, 49, + 50, 51, -1, -1, 69, 70, 71, 72, 1, 74, + 3, 4, -1, -1, -1, 8, 9, -1, 11, -1, + -1, -1, 15, -1, 17, 18, 19, 20, 21, 22, + 23, 24, 25, 26, 27, 69, 29, -1, -1, 32, + -1, -1, 4, 5, 6, 7, 39, -1, 10, 42, + 12, 13, 14, -1, 47, 48, 49, -1, -1, -1, + 53, 54, -1, -1, -1, 58, 28, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 69, -1, 71, 72, + 1, 74, 3, 4, -1, -1, -1, 8, 9, -1, + 11, -1, -1, -1, 15, -1, 17, 18, 19, 20, + 21, 22, 23, 24, 25, 26, 27, 4, 29, 6, + 7, 32, -1, -1, -1, 12, 13, 14, 39, -1, + -1, 42, -1, -1, -1, -1, 47, 48, 49, -1, + -1, 28, 53, 54, -1, -1, 1, 58, 3, 4, + -1, -1, -1, 8, 9, -1, 11, -1, 69, -1, + 71, 72, -1, 74, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 29, -1, -1, 32, -1, -1, + -1, -1, 69, 70, 39, -1, -1, 42, -1, -1, + -1, -1, 47, 48, 49, -1, -1, -1, 53, 54, + -1, -1, -1, 58, 59, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 70, 71, 72, 1, 74, + 3, 4, -1, -1, -1, 8, 9, 1, 11, -1, + 4, 5, 6, 7, -1, -1, 10, -1, 12, 13, + 14, -1, -1, -1, -1, -1, 29, -1, -1, 32, + -1, -1, -1, -1, 28, -1, 39, -1, -1, 42, + -1, -1, -1, -1, 47, 48, 49, -1, -1, -1, + 53, 54, -1, -1, -1, 58, 59, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 70, 71, 72, + 1, 74, 3, 4, 68, -1, -1, 8, 9, -1, + 11, 4, 5, 6, 7, 4, 5, 6, 7, 12, + 13, 14, -1, 12, 13, 14, -1, -1, 29, -1, + -1, 32, -1, -1, -1, 28, -1, -1, 39, 28, + -1, 42, -1, -1, -1, -1, 47, 48, 49, -1, + -1, -1, 53, 54, -1, -1, -1, 58, 59, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 70, + 71, 72, 1, 74, 3, 4, 69, -1, -1, 8, + 9, 36, 11, 38, 39, 40, 41, 42, 43, 44, + 45, 46, 47, 48, 49, 50, 51, -1, -1, -1, + 29, -1, -1, 32, -1, -1, -1, -1, -1, -1, + 39, -1, -1, 42, -1, -1, -1, -1, 47, 48, + 49, -1, -1, -1, 53, 54, 1, -1, 3, 58, + 59, -1, -1, 8, 9, 1, 11, -1, 4, 5, + 6, 7, 71, 72, -1, 74, 12, 13, 14, -1, + -1, -1, -1, -1, 29, -1, -1, 32, -1, -1, + -1, 27, 28, -1, 39, 31, -1, 42, -1, 35, + -1, -1, 47, 48, 49, -1, -1, -1, 53, 54, + -1, -1, -1, 58, -1, -1, -1, -1, -1, -1, + -1, -1, 58, 59, -1, -1, 71, 72, -1, 74, + -1, -1, -1, 69, -1, -1, 1, 73, 74, 4, + 5, 6, 7, -1, -1, 3, -1, 12, 13, 14, + 8, 9, -1, 11, -1, -1, -1, -1, -1, -1, + -1, -1, 27, 28, -1, -1, 31, -1, -1, -1, + 35, 29, -1, -1, 32, -1, -1, -1, -1, -1, + -1, 39, -1, -1, 42, -1, -1, -1, -1, 47, + 48, 49, -1, 3, -1, 53, 54, -1, 8, 9, + 58, 11, -1, -1, 69, -1, -1, -1, 73, 74, + -1, -1, -1, 71, 72, -1, -1, 75, -1, 29, + -1, -1, 32, -1, -1, -1, -1, -1, 3, 39, + -1, -1, 42, 8, 9, -1, 11, 47, 48, 49, + -1, -1, -1, 53, 54, -1, -1, -1, 58, -1, + -1, -1, -1, -1, 29, -1, -1, 32, -1, -1, + -1, 71, 72, 3, 39, 75, -1, 42, 8, 9, + -1, 11, 47, 48, 49, -1, -1, -1, 53, 54, + -1, -1, -1, 58, -1, -1, -1, -1, -1, 29, + -1, -1, 32, -1, -1, -1, 71, 72, 3, 39, + 75, -1, 42, 8, 9, -1, 11, 47, 48, 49, + -1, -1, -1, 53, 54, -1, -1, -1, 58, -1, + -1, -1, -1, -1, 29, -1, -1, 32, -1, -1, + -1, 71, 72, -1, 39, 75, -1, 42, -1, -1, + -1, -1, 47, 48, 49, -1, -1, -1, 53, 54, + -1, -1, -1, 58, 40, 41, 42, 43, 44, 45, + 46, 47, 48, 49, 50, 51, 71, 72, -1, -1, + 75, 3, 4, 5, 6, 7, 8, 9, -1, 11, + 12, 13, 14, 15, -1, 17, 18, 19, 20, 21, + 22, 23, 24, 25, 26, 27, 28, 29, -1, -1, + 32, -1, -1, -1, -1, -1, -1, 39, -1, -1, + 42, -1, -1, -1, -1, 47, 48, 49, -1, -1, + -1, 53, 54, -1, -1, -1, 58, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 69, -1, 71, + 72, -1, 74, 3, 4, -1, -1, -1, 8, 9, + -1, 11, -1, -1, -1, 15, -1, 17, 18, 19, + 20, 21, 22, 23, 24, 25, 26, 27, -1, 29, + -1, -1, 32, -1, -1, -1, -1, -1, -1, 39, + -1, -1, 42, -1, -1, -1, -1, 47, 48, 49, + -1, 3, -1, 53, 54, -1, 8, 9, 58, 11, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 69, + -1, 71, 72, -1, 74, -1, -1, 29, -1, -1, + 32, -1, -1, -1, -1, -1, -1, 39, -1, -1, + 42, -1, -1, -1, -1, 47, 48, 49, -1, -1, + -1, 53, 54, -1, 3, 4, 58, 6, 7, 8, + 9, -1, 11, 12, 13, 14, -1, -1, -1, 71, + 72, -1, 74, -1, -1, -1, -1, -1, -1, 28, + 29, 3, -1, 32, -1, -1, 8, 9, -1, 11, + 39, -1, -1, 42, -1, -1, -1, -1, 47, 48, + 49, -1, -1, -1, 53, 54, -1, 29, -1, 58, + 32, -1, -1, -1, -1, -1, -1, 39, -1, -1, + 42, -1, 71, 72, -1, 47, 48, 49, -1, 3, + -1, 53, 54, -1, 8, 9, 58, 11, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 69, -1, 71, + 72, -1, -1, -1, -1, 29, 3, -1, 32, -1, + -1, 8, 9, -1, 11, 39, -1, -1, 42, -1, + -1, -1, -1, 47, 48, 49, -1, -1, -1, 53, + 54, -1, 29, 3, 58, 32, -1, -1, 8, 9, + -1, 11, 39, -1, -1, 42, -1, 71, 72, -1, + 47, 48, 49, -1, -1, -1, 53, 54, -1, 29, + -1, 58, 32, -1, -1, -1, -1, -1, -1, 39, + -1, -1, 42, -1, 71, 72, -1, 47, 48, 49, + -1, -1, -1, 53, 54, -1, -1, 1, 58, 3, + 4, 5, 6, 7, -1, -1, -1, -1, 12, 13, + 14, 71, 72, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 27, 28, 39, 40, 41, 42, 43, + 44, 45, 46, 47, 48, 49, 50, 51, 10, -1, + -1, -1, -1, -1, -1, 49, -1, -1, -1, -1, + -1, -1, -1, -1, 58, -1, 10, -1, -1, -1, + -1, -1, 34, 35, 36, 69, 38, 39, 40, 41, + 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, + 34, 35, 36, -1, 38, 39, 40, 41, 42, 43, + 44, 45, 46, 47, 48, 49, 50, 51, 3, 4, + 5, 6, 7, 75, -1, -1, -1, 12, 13, 14, + 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, + 51, 75, -1, 28, 34, 35, 36, -1, 38, 39, + 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, + 50, 51, -1, -1, 49, -1, -1, -1, -1, -1, + -1, -1, -1, 58, 59, -1, -1, -1, -1, -1, + -1, -1, 34, 35, 36, 75, 38, 39, 40, 41, + 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, + 31, -1, -1, 34, 35, 36, -1, 38, 39, 40, + 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, + 51, -1, -1, 75, 34, 35, 36, -1, 38, 39, + 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, + 50, 51 +}; +/* -*-C-*- Note some compilers choke on comments on `#line' lines. */ +#line 3 "bison.simple" + +/* Skeleton output parser for bison, + Copyright (C) 1984, 1989, 1990 Bob Corbett and Richard Stallman + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 1, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ + + +#ifndef alloca +#ifdef __GNUC__ +#define alloca __builtin_alloca +#else /* not GNU C. */ +#if (!defined (__STDC__) && defined (sparc)) || defined (__sparc__) +#include +#else /* not sparc */ +#if defined (MSDOS) && !defined (__TURBOC__) +#include +#else /* not MSDOS, or __TURBOC__ */ +#if defined(_AIX) +#include + #pragma alloca +#endif /* not _AIX */ +#endif /* not MSDOS, or __TURBOC__ */ +#endif /* not sparc. */ +#endif /* not GNU C. */ +#endif /* alloca not defined. */ + +/* This is the parser code that is written into each bison parser + when the %semantic_parser declaration is not specified in the grammar. + It was written by Richard Stallman by simplifying the hairy parser + used when %semantic_parser is specified. */ + +/* Note: there must be only one dollar sign in this file. + It is replaced by the list of actions, each action + as one case of the switch. */ + +#define yyerrok (yyerrstatus = 0) +#define yyclearin (yychar = YYEMPTY) +#define YYEMPTY -2 +#define YYEOF 0 +#define YYACCEPT return(0) +#define YYABORT return(1) +#define YYERROR goto yyerrlab1 +/* Like YYERROR except do call yyerror. + This remains here temporarily to ease the + transition to the new meaning of YYERROR, for GCC. + Once GCC version 2 has supplanted version 1, this can go. */ +#define YYFAIL goto yyerrlab +#define YYRECOVERING() (!!yyerrstatus) +#define YYBACKUP(token, value) \ +do \ + if (yychar == YYEMPTY && yylen == 1) \ + { yychar = (token), yylval = (value); \ + yychar1 = YYTRANSLATE (yychar); \ + YYPOPSTACK; \ + goto yybackup; \ + } \ + else \ + { yyerror ("syntax error: cannot back up"); YYERROR; } \ +while (0) + +#define YYTERROR 1 +#define YYERRCODE 256 + +#ifndef YYPURE +#define YYLEX yylex() +#endif + +#ifdef YYPURE +#ifdef YYLSP_NEEDED +#define YYLEX yylex(&yylval, &yylloc) +#else +#define YYLEX yylex(&yylval) +#endif +#endif + +/* If nonreentrant, generate the variables here */ + +#ifndef YYPURE + +int yychar; /* the lookahead symbol */ +YYSTYPE yylval; /* the semantic value of the */ + /* lookahead symbol */ + +#ifdef YYLSP_NEEDED +YYLTYPE yylloc; /* location data for the lookahead */ + /* symbol */ +#endif + +int yynerrs; /* number of parse errors so far */ +#endif /* not YYPURE */ + +#if YYDEBUG != 0 +int yydebug; /* nonzero means print parse trace */ +/* Since this is uninitialized, it does not stop multiple parsers + from coexisting. */ +#endif + +/* YYINITDEPTH indicates the initial size of the parser's stacks */ + +#ifndef YYINITDEPTH +#define YYINITDEPTH 200 +#endif + +/* YYMAXDEPTH is the maximum size the stacks can grow to + (effective only if the built-in stack extension method is used). */ + +#if YYMAXDEPTH == 0 +#undef YYMAXDEPTH +#endif + +#ifndef YYMAXDEPTH +#define YYMAXDEPTH 10000 +#endif + +#if __GNUC__ > 1 /* GNU C and GNU C++ define this. */ +#define __yy_bcopy(FROM,TO,COUNT) __builtin_memcpy(TO,FROM,COUNT) +#else /* not GNU C or C++ */ +#ifndef __cplusplus + +/* This is the most reliable way to avoid incompatibilities + in available built-in functions on various systems. */ +static void +__yy_bcopy (from, to, count) + char *from; + char *to; + int count; +{ + register char *f = from; + register char *t = to; + register int i = count; + + while (i-- > 0) + *t++ = *f++; +} + +#else /* __cplusplus */ + +/* This is the most reliable way to avoid incompatibilities + in available built-in functions on various systems. */ +static void +__yy_bcopy (char *from, char *to, int count) +{ + register char *f = from; + register char *t = to; + register int i = count; + + while (i-- > 0) + *t++ = *f++; +} + +#endif +#endif + +#line 169 "bison.simple" +int +yyparse() +{ + register int yystate; + register int yyn; + register short *yyssp; + register YYSTYPE *yyvsp; + int yyerrstatus; /* number of tokens to shift before error messages enabled */ + int yychar1; /* lookahead token as an internal (translated) token number */ + + short yyssa[YYINITDEPTH]; /* the state stack */ + YYSTYPE yyvsa[YYINITDEPTH]; /* the semantic value stack */ + + short *yyss = yyssa; /* refer to the stacks thru separate pointers */ + YYSTYPE *yyvs = yyvsa; /* to allow yyoverflow to reallocate them elsewhere */ + +#ifdef YYLSP_NEEDED + YYLTYPE yylsa[YYINITDEPTH]; /* the location stack */ + YYLTYPE *yyls = yylsa; + YYLTYPE *yylsp; + +#define YYPOPSTACK (yyvsp--, yyssp--, yylsp--) +#else +#define YYPOPSTACK (yyvsp--, yyssp--) +#endif + + int yystacksize = YYINITDEPTH; + +#ifdef YYPURE + int yychar; + YYSTYPE yylval; + int yynerrs; +#ifdef YYLSP_NEEDED + YYLTYPE yylloc; +#endif +#endif + + YYSTYPE yyval; /* the variable used to return */ + /* semantic values from the action */ + /* routines */ + + int yylen; + +#if YYDEBUG != 0 + if (yydebug) + fprintf(stderr, "Starting parse\n"); +#endif + + yystate = 0; + yyerrstatus = 0; + yynerrs = 0; + yychar = YYEMPTY; /* Cause a token to be read. */ + + /* Initialize stack pointers. + Waste one element of value and location stack + so that they stay on the same level as the state stack. */ + + yyssp = yyss - 1; + yyvsp = yyvs; +#ifdef YYLSP_NEEDED + yylsp = yyls; +#endif + +/* Push a new state, which is found in yystate . */ +/* In all cases, when you get here, the value and location stacks + have just been pushed. so pushing a state here evens the stacks. */ +yynewstate: + + *++yyssp = yystate; + + if (yyssp >= yyss + yystacksize - 1) + { + /* Give user a chance to reallocate the stack */ + /* Use copies of these so that the &'s don't force the real ones into memory. */ + YYSTYPE *yyvs1 = yyvs; + short *yyss1 = yyss; +#ifdef YYLSP_NEEDED + YYLTYPE *yyls1 = yyls; +#endif + + /* Get the current used size of the three stacks, in elements. */ + int size = yyssp - yyss + 1; + +#ifdef yyoverflow + /* Each stack pointer address is followed by the size of + the data in use in that stack, in bytes. */ + yyoverflow("parser stack overflow", + &yyss1, size * sizeof (*yyssp), + &yyvs1, size * sizeof (*yyvsp), +#ifdef YYLSP_NEEDED + &yyls1, size * sizeof (*yylsp), +#endif + &yystacksize); + + yyss = yyss1; yyvs = yyvs1; +#ifdef YYLSP_NEEDED + yyls = yyls1; +#endif +#else /* no yyoverflow */ + /* Extend the stack our own way. */ + if (yystacksize >= YYMAXDEPTH) + { + yyerror("parser stack overflow"); + return 2; + } + yystacksize *= 2; + if (yystacksize > YYMAXDEPTH) + yystacksize = YYMAXDEPTH; + yyss = (short *) alloca (yystacksize * sizeof (*yyssp)); + __yy_bcopy ((char *)yyss1, (char *)yyss, size * sizeof (*yyssp)); + yyvs = (YYSTYPE *) alloca (yystacksize * sizeof (*yyvsp)); + __yy_bcopy ((char *)yyvs1, (char *)yyvs, size * sizeof (*yyvsp)); +#ifdef YYLSP_NEEDED + yyls = (YYLTYPE *) alloca (yystacksize * sizeof (*yylsp)); + __yy_bcopy ((char *)yyls1, (char *)yyls, size * sizeof (*yylsp)); +#endif +#endif /* no yyoverflow */ + + yyssp = yyss + size - 1; + yyvsp = yyvs + size - 1; +#ifdef YYLSP_NEEDED + yylsp = yyls + size - 1; +#endif + +#if YYDEBUG != 0 + if (yydebug) + fprintf(stderr, "Stack size increased to %d\n", yystacksize); +#endif + + if (yyssp >= yyss + yystacksize - 1) + YYABORT; + } + +#if YYDEBUG != 0 + if (yydebug) + fprintf(stderr, "Entering state %d\n", yystate); +#endif + + yybackup: + +/* Do appropriate processing given the current state. */ +/* Read a lookahead token if we need one and don't already have one. */ +/* yyresume: */ + + /* First try to decide what to do without reference to lookahead token. */ + + yyn = yypact[yystate]; + if (yyn == YYFLAG) + goto yydefault; + + /* Not known => get a lookahead token if don't already have one. */ + + /* yychar is either YYEMPTY or YYEOF + or a valid token in external form. */ + + if (yychar == YYEMPTY) + { +#if YYDEBUG != 0 + if (yydebug) + fprintf(stderr, "Reading a token: "); +#endif + yychar = YYLEX; + } + + /* Convert token to internal form (in yychar1) for indexing tables with */ + + if (yychar <= 0) /* This means end of input. */ + { + yychar1 = 0; + yychar = YYEOF; /* Don't call YYLEX any more */ + +#if YYDEBUG != 0 + if (yydebug) + fprintf(stderr, "Now at end of input.\n"); +#endif + } + else + { + yychar1 = YYTRANSLATE(yychar); + +#if YYDEBUG != 0 + if (yydebug) + { + fprintf (stderr, "Next token is %d (%s", yychar, yytname[yychar1]); + /* Give the individual parser a way to print the precise meaning + of a token, for further debugging info. */ +#ifdef YYPRINT + YYPRINT (stderr, yychar, yylval); +#endif + fprintf (stderr, ")\n"); + } +#endif + } + + yyn += yychar1; + if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != yychar1) + goto yydefault; + + yyn = yytable[yyn]; + + /* yyn is what to do for this token type in this state. + Negative => reduce, -yyn is rule number. + Positive => shift, yyn is new state. + New state is final state => don't bother to shift, + just return success. + 0, or most negative number => error. */ + + if (yyn < 0) + { + if (yyn == YYFLAG) + goto yyerrlab; + yyn = -yyn; + goto yyreduce; + } + else if (yyn == 0) + goto yyerrlab; + + if (yyn == YYFINAL) + YYACCEPT; + + /* Shift the lookahead token. */ + +#if YYDEBUG != 0 + if (yydebug) + fprintf(stderr, "Shifting token %d (%s), ", yychar, yytname[yychar1]); +#endif + + /* Discard the token being shifted unless it is eof. */ + if (yychar != YYEOF) + yychar = YYEMPTY; + + *++yyvsp = yylval; +#ifdef YYLSP_NEEDED + *++yylsp = yylloc; +#endif + + /* count tokens shifted since error; after three, turn off error status. */ + if (yyerrstatus) yyerrstatus--; + + yystate = yyn; + goto yynewstate; + +/* Do the default action for the current state. */ +yydefault: + + yyn = yydefact[yystate]; + if (yyn == 0) + goto yyerrlab; + +/* Do a reduction. yyn is the number of a rule to reduce with. */ +yyreduce: + yylen = yyr2[yyn]; + yyval = yyvsp[1-yylen]; /* implement default value of the action */ + +#if YYDEBUG != 0 + if (yydebug) + { + int i; + + fprintf (stderr, "Reducing via rule %d (line %d), ", + yyn, yyrline[yyn]); + + /* Print the symboles being reduced, and their result. */ + for (i = yyprhs[yyn]; yyrhs[i] > 0; i++) + fprintf (stderr, "%s ", yytname[yyrhs[i]]); + fprintf (stderr, " -> %s\n", yytname[yyr1[yyn]]); + } +#endif + + + switch (yyn) { + +case 1: +#line 210 "c-parse.y" +{ if (pedantic) + pedwarn ("ANSI C forbids an empty source file"); + ; + break;} +case 2: +#line 214 "c-parse.y" +{ + ; + break;} +case 3: +#line 223 "c-parse.y" +{yyval.ttype = NULL_TREE; ; + break;} +case 5: +#line 224 "c-parse.y" +{yyval.ttype = NULL_TREE; ; + break;} +case 9: +#line 231 "c-parse.y" +{ STRIP_NOPS (yyvsp[-2].ttype); + if ((TREE_CODE (yyvsp[-2].ttype) == ADDR_EXPR + && TREE_CODE (TREE_OPERAND (yyvsp[-2].ttype, 0)) == STRING_CST) + || TREE_CODE (yyvsp[-2].ttype) == STRING_CST) + assemble_asm (yyvsp[-2].ttype); + else + error ("argument of `asm' is not a constant string"); ; + break;} +case 10: +#line 242 "c-parse.y" +{ if (pedantic) + error ("ANSI C forbids data definition with no type or storage class"); + else if (!flag_traditional) + warning ("data definition has no type or storage class"); ; + break;} +case 11: +#line 247 "c-parse.y" +{; + break;} +case 12: +#line 249 "c-parse.y" +{; + break;} +case 13: +#line 251 "c-parse.y" +{ pedwarn ("empty declaration"); ; + break;} +case 14: +#line 253 "c-parse.y" +{ shadow_tag (yyvsp[-1].ttype); ; + break;} +case 17: +#line 257 "c-parse.y" +{ if (pedantic) + pedwarn ("ANSI C does not allow extra `;' outside of a function"); ; + break;} +case 18: +#line 263 "c-parse.y" +{ if (! start_function (yyvsp[-2].ttype, yyvsp[0].ttype, 0)) + YYERROR1; + reinit_parse_for_function (); ; + break;} +case 19: +#line 267 "c-parse.y" +{ store_parm_decls (); ; + break;} +case 20: +#line 269 "c-parse.y" +{ finish_function (0); ; + break;} +case 21: +#line 271 "c-parse.y" +{ ; + break;} +case 22: +#line 273 "c-parse.y" +{ if (! start_function (yyvsp[-2].ttype, yyvsp[0].ttype, 0)) + YYERROR1; + reinit_parse_for_function (); ; + break;} +case 23: +#line 277 "c-parse.y" +{ store_parm_decls (); ; + break;} +case 24: +#line 279 "c-parse.y" +{ finish_function (0); ; + break;} +case 25: +#line 281 "c-parse.y" +{ ; + break;} +case 26: +#line 283 "c-parse.y" +{ if (! start_function (NULL_TREE, yyvsp[0].ttype, 0)) + YYERROR1; + reinit_parse_for_function (); ; + break;} +case 27: +#line 287 "c-parse.y" +{ store_parm_decls (); ; + break;} +case 28: +#line 289 "c-parse.y" +{ finish_function (0); ; + break;} +case 29: +#line 291 "c-parse.y" +{ ; + break;} +case 32: +#line 300 "c-parse.y" +{ yyval.code = ADDR_EXPR; ; + break;} +case 33: +#line 302 "c-parse.y" +{ yyval.code = NEGATE_EXPR; ; + break;} +case 34: +#line 304 "c-parse.y" +{ yyval.code = CONVERT_EXPR; ; + break;} +case 35: +#line 306 "c-parse.y" +{ yyval.code = PREINCREMENT_EXPR; ; + break;} +case 36: +#line 308 "c-parse.y" +{ yyval.code = PREDECREMENT_EXPR; ; + break;} +case 37: +#line 310 "c-parse.y" +{ yyval.code = BIT_NOT_EXPR; ; + break;} +case 38: +#line 312 "c-parse.y" +{ yyval.code = TRUTH_NOT_EXPR; ; + break;} +case 39: +#line 316 "c-parse.y" +{ yyval.ttype = build_compound_expr (yyvsp[0].ttype); ; + break;} +case 40: +#line 321 "c-parse.y" +{ yyval.ttype = NULL_TREE; ; + break;} +case 42: +#line 327 "c-parse.y" +{ yyval.ttype = build_tree_list (NULL_TREE, yyvsp[0].ttype); ; + break;} +case 43: +#line 329 "c-parse.y" +{ chainon (yyvsp[-2].ttype, build_tree_list (NULL_TREE, yyvsp[0].ttype)); ; + break;} +case 45: +#line 335 "c-parse.y" +{ yyval.ttype = build_indirect_ref (yyvsp[0].ttype, "unary *"); ; + break;} +case 46: +#line 338 "c-parse.y" +{ yyvsp[0].itype = pedantic; + pedantic = 0; ; + break;} +case 47: +#line 341 "c-parse.y" +{ yyval.ttype = yyvsp[0].ttype; + pedantic = yyvsp[-2].itype; ; + break;} +case 48: +#line 344 "c-parse.y" +{ yyval.ttype = build_unary_op (yyvsp[-1].code, yyvsp[0].ttype, 0); ; + break;} +case 49: +#line 347 "c-parse.y" +{ tree label = lookup_label (yyvsp[0].ttype); + TREE_USED (label) = 1; + yyval.ttype = build1 (ADDR_EXPR, ptr_type_node, label); + TREE_CONSTANT (yyval.ttype) = 1; ; + break;} +case 50: +#line 367 "c-parse.y" +{ if (TREE_CODE (yyvsp[0].ttype) == COMPONENT_REF + && DECL_BIT_FIELD (TREE_OPERAND (yyvsp[0].ttype, 1))) + error ("`sizeof' applied to a bit-field"); + yyval.ttype = c_sizeof (TREE_TYPE (yyvsp[0].ttype)); ; + break;} +case 51: +#line 372 "c-parse.y" +{ yyval.ttype = c_sizeof (groktypename (yyvsp[-1].ttype)); ; + break;} +case 52: +#line 374 "c-parse.y" +{ yyval.ttype = c_alignof_expr (yyvsp[0].ttype); ; + break;} +case 53: +#line 376 "c-parse.y" +{ yyval.ttype = c_alignof (groktypename (yyvsp[-1].ttype)); ; + break;} +case 55: +#line 382 "c-parse.y" +{ tree type = groktypename (yyvsp[-2].ttype); + yyval.ttype = build_c_cast (type, yyvsp[0].ttype); ; + break;} +case 56: +#line 385 "c-parse.y" +{ tree type = groktypename (yyvsp[-5].ttype); + char *name; + if (pedantic) + pedwarn ("ANSI C forbids constructor expressions"); + if (TYPE_NAME (type) != 0) + { + if (TREE_CODE (TYPE_NAME (type)) == IDENTIFIER_NODE) + name = IDENTIFIER_POINTER (TYPE_NAME (type)); + else + name = IDENTIFIER_POINTER (DECL_NAME (TYPE_NAME (type))); + } + else + name = ""; + yyval.ttype = digest_init (type, build_nt (CONSTRUCTOR, NULL_TREE, nreverse (yyvsp[-2].ttype)), + NULL_PTR, 0, 0, name); + if (TREE_CODE (type) == ARRAY_TYPE && TYPE_SIZE (type) == 0) + { + int failure = complete_array_type (type, yyval.ttype, 1); + if (failure) + abort (); + } + ; + break;} +case 58: +#line 412 "c-parse.y" +{ yyval.ttype = parser_build_binary_op (yyvsp[-1].code, yyvsp[-2].ttype, yyvsp[0].ttype); ; + break;} +case 59: +#line 414 "c-parse.y" +{ yyval.ttype = parser_build_binary_op (yyvsp[-1].code, yyvsp[-2].ttype, yyvsp[0].ttype); ; + break;} +case 60: +#line 416 "c-parse.y" +{ yyval.ttype = parser_build_binary_op (yyvsp[-1].code, yyvsp[-2].ttype, yyvsp[0].ttype); ; + break;} +case 61: +#line 418 "c-parse.y" +{ yyval.ttype = parser_build_binary_op (yyvsp[-1].code, yyvsp[-2].ttype, yyvsp[0].ttype); ; + break;} +case 62: +#line 420 "c-parse.y" +{ yyval.ttype = parser_build_binary_op (yyvsp[-1].code, yyvsp[-2].ttype, yyvsp[0].ttype); ; + break;} +case 63: +#line 422 "c-parse.y" +{ yyval.ttype = parser_build_binary_op (yyvsp[-1].code, yyvsp[-2].ttype, yyvsp[0].ttype); ; + break;} +case 64: +#line 424 "c-parse.y" +{ yyval.ttype = parser_build_binary_op (yyvsp[-1].code, yyvsp[-2].ttype, yyvsp[0].ttype); ; + break;} +case 65: +#line 426 "c-parse.y" +{ yyval.ttype = parser_build_binary_op (yyvsp[-1].code, yyvsp[-2].ttype, yyvsp[0].ttype); ; + break;} +case 66: +#line 428 "c-parse.y" +{ yyval.ttype = parser_build_binary_op (yyvsp[-1].code, yyvsp[-2].ttype, yyvsp[0].ttype); ; + break;} +case 67: +#line 430 "c-parse.y" +{ yyval.ttype = parser_build_binary_op (yyvsp[-1].code, yyvsp[-2].ttype, yyvsp[0].ttype); ; + break;} +case 68: +#line 432 "c-parse.y" +{ yyval.ttype = parser_build_binary_op (yyvsp[-1].code, yyvsp[-2].ttype, yyvsp[0].ttype); ; + break;} +case 69: +#line 434 "c-parse.y" +{ yyval.ttype = parser_build_binary_op (yyvsp[-1].code, yyvsp[-2].ttype, yyvsp[0].ttype); ; + break;} +case 70: +#line 436 "c-parse.y" +{ yyval.ttype = parser_build_binary_op (TRUTH_ANDIF_EXPR, yyvsp[-2].ttype, yyvsp[0].ttype); ; + break;} +case 71: +#line 438 "c-parse.y" +{ yyval.ttype = parser_build_binary_op (TRUTH_ORIF_EXPR, yyvsp[-2].ttype, yyvsp[0].ttype); ; + break;} +case 72: +#line 440 "c-parse.y" +{ yyval.ttype = build_conditional_expr (yyvsp[-4].ttype, yyvsp[-2].ttype, yyvsp[0].ttype); ; + break;} +case 73: +#line 442 "c-parse.y" +{ yyval.ttype = build_modify_expr (yyvsp[-2].ttype, NOP_EXPR, yyvsp[0].ttype); + C_SET_EXP_ORIGINAL_CODE (yyval.ttype, MODIFY_EXPR); ; + break;} +case 74: +#line 445 "c-parse.y" +{ yyval.ttype = build_modify_expr (yyvsp[-2].ttype, yyvsp[-1].code, yyvsp[0].ttype); + C_SET_EXP_ORIGINAL_CODE (yyval.ttype, MODIFY_EXPR); ; + break;} +case 75: +#line 451 "c-parse.y" +{ + tree context; + + yyval.ttype = lastiddecl; + if (!yyval.ttype || yyval.ttype == error_mark_node) + { + if (yychar == YYEMPTY) + yychar = YYLEX; + if (yychar == '(') + { + { + /* Ordinary implicit function declaration. */ + yyval.ttype = implicitly_declare (yyvsp[0].ttype); + assemble_external (yyval.ttype); + TREE_USED (yyval.ttype) = 1; + } + } + else if (current_function_decl == 0) + { + error ("`%s' undeclared, outside of functions", + IDENTIFIER_POINTER (yyvsp[0].ttype)); + yyval.ttype = error_mark_node; + } + else + { + { + if (IDENTIFIER_GLOBAL_VALUE (yyvsp[0].ttype) != error_mark_node + || IDENTIFIER_ERROR_LOCUS (yyvsp[0].ttype) != current_function_decl) + { + error ("`%s' undeclared (first use this function)", + IDENTIFIER_POINTER (yyvsp[0].ttype)); + + if (! undeclared_variable_notice) + { + error ("(Each undeclared identifier is reported only once"); + error ("for each function it appears in.)"); + undeclared_variable_notice = 1; + } + } + yyval.ttype = error_mark_node; + /* Prevent repeated error messages. */ + IDENTIFIER_GLOBAL_VALUE (yyvsp[0].ttype) = error_mark_node; + IDENTIFIER_ERROR_LOCUS (yyvsp[0].ttype) = current_function_decl; + } + } + } + else if (TREE_TYPE (yyval.ttype) == error_mark_node) + yyval.ttype = error_mark_node; + else if (C_DECL_ANTICIPATED (yyval.ttype)) + { + /* The first time we see a build-in function used, + if it has not been declared. */ + C_DECL_ANTICIPATED (yyval.ttype) = 0; + if (yychar == YYEMPTY) + yychar = YYLEX; + if (yychar == '(') + { + /* Omit the implicit declaration we + would ordinarily do, so we don't lose + the actual built in type. + But print a diagnostic for the mismatch. */ + if (TREE_CODE (yyval.ttype) != FUNCTION_DECL) + error ("`%s' implicitly declared as function", + IDENTIFIER_POINTER (DECL_NAME (yyval.ttype))); + else if ((TYPE_MODE (TREE_TYPE (TREE_TYPE (yyval.ttype))) + != TYPE_MODE (integer_type_node)) + && (TREE_TYPE (TREE_TYPE (yyval.ttype)) + != void_type_node)) + pedwarn ("type mismatch in implicit declaration for built-in function `%s'", + IDENTIFIER_POINTER (DECL_NAME (yyval.ttype))); + /* If it really returns void, change that to int. */ + if (TREE_TYPE (TREE_TYPE (yyval.ttype)) == void_type_node) + TREE_TYPE (yyval.ttype) + = build_function_type (integer_type_node, + TYPE_ARG_TYPES (TREE_TYPE (yyval.ttype))); + } + else + pedwarn ("built-in function `%s' used without declaration", + IDENTIFIER_POINTER (DECL_NAME (yyval.ttype))); + + /* Do what we would ordinarily do when a fn is used. */ + assemble_external (yyval.ttype); + TREE_USED (yyval.ttype) = 1; + } + else + { + assemble_external (yyval.ttype); + TREE_USED (yyval.ttype) = 1; + } + + if (TREE_CODE (yyval.ttype) == CONST_DECL) + { + yyval.ttype = DECL_INITIAL (yyval.ttype); + /* This is to prevent an enum whose value is 0 + from being considered a null pointer constant. */ + yyval.ttype = build1 (NOP_EXPR, TREE_TYPE (yyval.ttype), yyval.ttype); + TREE_CONSTANT (yyval.ttype) = 1; + } + ; + break;} +case 77: +#line 552 "c-parse.y" +{ yyval.ttype = combine_strings (yyvsp[0].ttype); ; + break;} +case 78: +#line 554 "c-parse.y" +{ char class = TREE_CODE_CLASS (TREE_CODE (yyvsp[-1].ttype)); + if (class == 'e' || class == '1' + || class == '2' || class == '<') + C_SET_EXP_ORIGINAL_CODE (yyvsp[-1].ttype, ERROR_MARK); + yyval.ttype = yyvsp[-1].ttype; ; + break;} +case 79: +#line 560 "c-parse.y" +{ yyval.ttype = error_mark_node; ; + break;} +case 80: +#line 562 "c-parse.y" +{ if (current_function_decl == 0) + { + error ("braced-group within expression allowed only inside a function"); + YYERROR; + } + /* We must force a BLOCK for this level + so that, if it is not expanded later, + there is a way to turn off the entire subtree of blocks + that are contained in it. */ + keep_next_level (); + push_label_level (); + yyval.ttype = expand_start_stmt_expr (); ; + break;} +case 81: +#line 575 "c-parse.y" +{ tree rtl_exp; + if (pedantic) + pedwarn ("ANSI C forbids braced-groups within expressions"); + pop_label_level (); + rtl_exp = expand_end_stmt_expr (yyvsp[-2].ttype); + /* The statements have side effects, so the group does. */ + TREE_SIDE_EFFECTS (rtl_exp) = 1; + + /* Make a BIND_EXPR for the BLOCK already made. */ + yyval.ttype = build (BIND_EXPR, TREE_TYPE (rtl_exp), + NULL_TREE, rtl_exp, yyvsp[-1].ttype); + /* Remove the block from the tree at this point. + It gets put back at the proper place + when the BIND_EXPR is expanded. */ + delete_block (yyvsp[-1].ttype); + ; + break;} +case 82: +#line 592 "c-parse.y" +{ yyval.ttype = build_function_call (yyvsp[-3].ttype, yyvsp[-1].ttype); ; + break;} +case 83: +#line 594 "c-parse.y" +{ yyval.ttype = build_array_ref (yyvsp[-3].ttype, yyvsp[-1].ttype); ; + break;} +case 84: +#line 596 "c-parse.y" +{ + yyval.ttype = build_component_ref (yyvsp[-2].ttype, yyvsp[0].ttype); + ; + break;} +case 85: +#line 600 "c-parse.y" +{ + tree expr = build_indirect_ref (yyvsp[-2].ttype, "->"); + + yyval.ttype = build_component_ref (expr, yyvsp[0].ttype); + ; + break;} +case 86: +#line 606 "c-parse.y" +{ yyval.ttype = build_unary_op (POSTINCREMENT_EXPR, yyvsp[-1].ttype, 0); ; + break;} +case 87: +#line 608 "c-parse.y" +{ yyval.ttype = build_unary_op (POSTDECREMENT_EXPR, yyvsp[-1].ttype, 0); ; + break;} +case 89: +#line 615 "c-parse.y" +{ yyval.ttype = chainon (yyvsp[-1].ttype, yyvsp[0].ttype); ; + break;} +case 92: +#line 623 "c-parse.y" +{ c_mark_varargs (); + if (pedantic) + pedwarn ("ANSI C does not permit use of `varargs.h'"); ; + break;} +case 93: +#line 633 "c-parse.y" +{ ; + break;} +case 98: +#line 645 "c-parse.y" +{ current_declspecs = TREE_VALUE (declspec_stack); + declspec_stack = TREE_CHAIN (declspec_stack); + resume_momentary (yyvsp[-2].itype); ; + break;} +case 99: +#line 649 "c-parse.y" +{ current_declspecs = TREE_VALUE (declspec_stack); + declspec_stack = TREE_CHAIN (declspec_stack); + resume_momentary (yyvsp[-2].itype); ; + break;} +case 100: +#line 653 "c-parse.y" +{ shadow_tag_warned (yyvsp[-1].ttype, 1); + pedwarn ("empty declaration"); ; + break;} +case 101: +#line 656 "c-parse.y" +{ pedwarn ("empty declaration"); ; + break;} +case 102: +#line 665 "c-parse.y" +{ ; + break;} +case 107: +#line 680 "c-parse.y" +{ yyval.itype = suspend_momentary (); + pending_xref_error (); + declspec_stack = tree_cons (NULL_TREE, current_declspecs, + declspec_stack); + current_declspecs = yyvsp[0].ttype; ; + break;} +case 108: +#line 689 "c-parse.y" +{ current_declspecs = TREE_VALUE (declspec_stack); + declspec_stack = TREE_CHAIN (declspec_stack); + resume_momentary (yyvsp[-2].itype); ; + break;} +case 109: +#line 693 "c-parse.y" +{ current_declspecs = TREE_VALUE (declspec_stack); + declspec_stack = TREE_CHAIN (declspec_stack); + resume_momentary (yyvsp[-2].itype); ; + break;} +case 110: +#line 697 "c-parse.y" +{ current_declspecs = TREE_VALUE (declspec_stack); + declspec_stack = TREE_CHAIN (declspec_stack); + resume_momentary (yyvsp[-1].itype); ; + break;} +case 111: +#line 701 "c-parse.y" +{ current_declspecs = TREE_VALUE (declspec_stack); + declspec_stack = TREE_CHAIN (declspec_stack); + resume_momentary (yyvsp[-1].itype); ; + break;} +case 112: +#line 705 "c-parse.y" +{ shadow_tag (yyvsp[-1].ttype); ; + break;} +case 113: +#line 707 "c-parse.y" +{ pedwarn ("empty declaration"); ; + break;} +case 114: +#line 716 "c-parse.y" +{ yyval.ttype = tree_cons (NULL_TREE, yyvsp[-1].ttype, yyvsp[0].ttype); ; + break;} +case 115: +#line 718 "c-parse.y" +{ yyval.ttype = chainon (yyvsp[0].ttype, tree_cons (NULL_TREE, yyvsp[-1].ttype, yyvsp[-2].ttype)); ; + break;} +case 116: +#line 722 "c-parse.y" +{ yyval.ttype = NULL_TREE; ; + break;} +case 117: +#line 724 "c-parse.y" +{ yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); ; + break;} +case 118: +#line 726 "c-parse.y" +{ if (extra_warnings) + warning ("`%s' is not at beginning of declaration", + IDENTIFIER_POINTER (yyvsp[0].ttype)); + yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); ; + break;} +case 119: +#line 738 "c-parse.y" +{ yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, NULL_TREE); + TREE_STATIC (yyval.ttype) = 1; ; + break;} +case 120: +#line 741 "c-parse.y" +{ yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, NULL_TREE); ; + break;} +case 121: +#line 743 "c-parse.y" +{ yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); + TREE_STATIC (yyval.ttype) = 1; ; + break;} +case 122: +#line 746 "c-parse.y" +{ if (extra_warnings && TREE_STATIC (yyvsp[-1].ttype)) + warning ("`%s' is not at beginning of declaration", + IDENTIFIER_POINTER (yyvsp[0].ttype)); + yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); + TREE_STATIC (yyval.ttype) = TREE_STATIC (yyvsp[-1].ttype); ; + break;} +case 123: +#line 760 "c-parse.y" +{ yyval.ttype = tree_cons (NULL_TREE, yyvsp[-1].ttype, yyvsp[0].ttype); ; + break;} +case 124: +#line 762 "c-parse.y" +{ yyval.ttype = chainon (yyvsp[0].ttype, tree_cons (NULL_TREE, yyvsp[-1].ttype, yyvsp[-2].ttype)); ; + break;} +case 125: +#line 766 "c-parse.y" +{ yyval.ttype = NULL_TREE; ; + break;} +case 126: +#line 768 "c-parse.y" +{ yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); ; + break;} +case 129: +#line 778 "c-parse.y" +{ /* For a typedef name, record the meaning, not the name. + In case of `foo foo, bar;'. */ + yyval.ttype = lookup_name (yyvsp[0].ttype); ; + break;} +case 130: +#line 782 "c-parse.y" +{ yyval.ttype = TREE_TYPE (yyvsp[-1].ttype); ; + break;} +case 131: +#line 784 "c-parse.y" +{ yyval.ttype = groktypename (yyvsp[-1].ttype); ; + break;} +case 139: +#line 806 "c-parse.y" +{ yyval.ttype = NULL_TREE; ; + break;} +case 140: +#line 808 "c-parse.y" +{ if (TREE_CHAIN (yyvsp[-1].ttype)) yyvsp[-1].ttype = combine_strings (yyvsp[-1].ttype); + yyval.ttype = yyvsp[-1].ttype; + ; + break;} +case 141: +#line 815 "c-parse.y" +{ yyval.ttype = start_decl (yyvsp[-3].ttype, current_declspecs, 1); ; + break;} +case 142: +#line 818 "c-parse.y" +{ decl_attributes (yyvsp[-1].ttype, yyvsp[-3].ttype); + finish_decl (yyvsp[-1].ttype, yyvsp[0].ttype, yyvsp[-4].ttype); ; + break;} +case 143: +#line 821 "c-parse.y" +{ tree d = start_decl (yyvsp[-2].ttype, current_declspecs, 0); + decl_attributes (d, yyvsp[0].ttype); + finish_decl (d, NULL_TREE, yyvsp[-1].ttype); ; + break;} +case 144: +#line 828 "c-parse.y" +{ yyval.ttype = start_decl (yyvsp[-3].ttype, current_declspecs, 1); ; + break;} +case 145: +#line 831 "c-parse.y" +{ decl_attributes (yyvsp[-1].ttype, yyvsp[-3].ttype); + finish_decl (yyvsp[-1].ttype, yyvsp[0].ttype, yyvsp[-4].ttype); ; + break;} +case 146: +#line 834 "c-parse.y" +{ tree d = start_decl (yyvsp[-2].ttype, current_declspecs, 0); + decl_attributes (d, yyvsp[0].ttype); + finish_decl (d, NULL_TREE, yyvsp[-1].ttype); ; + break;} +case 147: +#line 842 "c-parse.y" +{ yyval.ttype = NULL_TREE; ; + break;} +case 148: +#line 844 "c-parse.y" +{ yyval.ttype = yyvsp[-2].ttype; ; + break;} +case 149: +#line 849 "c-parse.y" +{ yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, NULL_TREE); ; + break;} +case 150: +#line 851 "c-parse.y" +{ yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-2].ttype); ; + break;} +case 151: +#line 856 "c-parse.y" +{ if (strcmp (IDENTIFIER_POINTER (yyvsp[0].ttype), "packed")) + warning ("`%s' attribute directive ignored", + IDENTIFIER_POINTER (yyvsp[0].ttype)); + yyval.ttype = yyvsp[0].ttype; ; + break;} +case 152: +#line 861 "c-parse.y" +{ /* If not "mode (m)", then issue warning. */ + if (strcmp (IDENTIFIER_POINTER (yyvsp[-3].ttype), "mode") != 0) + { + warning ("`%s' attribute directive ignored", + IDENTIFIER_POINTER (yyvsp[-3].ttype)); + yyval.ttype = yyvsp[-3].ttype; + } + else + yyval.ttype = tree_cons (yyvsp[-3].ttype, yyvsp[-1].ttype, NULL_TREE); ; + break;} +case 153: +#line 871 "c-parse.y" +{ /* if not "aligned(n)", then issue warning */ + if (strcmp (IDENTIFIER_POINTER (yyvsp[-3].ttype), "aligned") != 0 + || TREE_CODE (yyvsp[-1].ttype) != INTEGER_CST) + { + warning ("`%s' attribute directive ignored", + IDENTIFIER_POINTER (yyvsp[-3].ttype)); + yyval.ttype = yyvsp[-3].ttype; + } + else + yyval.ttype = tree_cons (yyvsp[-3].ttype, yyvsp[-1].ttype, NULL_TREE); ; + break;} +case 154: +#line 882 "c-parse.y" +{ /* if not "format(...)", then issue warning */ + if (strcmp (IDENTIFIER_POINTER (yyvsp[-7].ttype), "format") != 0 + || TREE_CODE (yyvsp[-3].ttype) != INTEGER_CST + || TREE_CODE (yyvsp[-1].ttype) != INTEGER_CST) + { + warning ("`%s' attribute directive ignored", + IDENTIFIER_POINTER (yyvsp[-7].ttype)); + yyval.ttype = yyvsp[-7].ttype; + } + else + yyval.ttype = tree_cons (yyvsp[-7].ttype, + tree_cons (yyvsp[-5].ttype, + tree_cons (yyvsp[-3].ttype, yyvsp[-1].ttype, NULL_TREE), + NULL_TREE), + NULL_TREE); ; + break;} +case 156: +#line 902 "c-parse.y" +{ yyval.ttype = build_nt (CONSTRUCTOR, NULL_TREE, NULL_TREE); + if (pedantic) + pedwarn ("ANSI C forbids empty initializer braces"); ; + break;} +case 157: +#line 906 "c-parse.y" +{ yyval.ttype = build_nt (CONSTRUCTOR, NULL_TREE, nreverse (yyvsp[-1].ttype)); ; + break;} +case 158: +#line 908 "c-parse.y" +{ yyval.ttype = build_nt (CONSTRUCTOR, NULL_TREE, nreverse (yyvsp[-2].ttype)); ; + break;} +case 159: +#line 910 "c-parse.y" +{ yyval.ttype = NULL_TREE; ; + break;} +case 160: +#line 917 "c-parse.y" +{ yyval.ttype = build_tree_list (NULL_TREE, yyvsp[0].ttype); ; + break;} +case 161: +#line 919 "c-parse.y" +{ yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-2].ttype); ; + break;} +case 162: +#line 922 "c-parse.y" +{ yyval.ttype = build_tree_list (tree_cons (yyvsp[-4].ttype, NULL_TREE, + build_tree_list (yyvsp[-2].ttype, NULL_TREE)), + yyvsp[0].ttype); ; + break;} +case 163: +#line 926 "c-parse.y" +{ yyval.ttype = tree_cons (tree_cons (yyvsp[-4].ttype, NULL_TREE, + build_tree_list (yyvsp[-2].ttype, NULL_TREE)), + yyvsp[0].ttype, + yyvsp[-7].ttype); ; + break;} +case 164: +#line 931 "c-parse.y" +{ yyval.ttype = build_tree_list (yyvsp[-2].ttype, yyvsp[0].ttype); ; + break;} +case 165: +#line 933 "c-parse.y" +{ yyval.ttype = tree_cons (yyvsp[-2].ttype, yyvsp[0].ttype, yyvsp[-5].ttype); ; + break;} +case 166: +#line 935 "c-parse.y" +{ yyval.ttype = build_tree_list (yyvsp[-2].ttype, yyvsp[0].ttype); ; + break;} +case 167: +#line 937 "c-parse.y" +{ yyval.ttype = tree_cons (yyvsp[-2].ttype, yyvsp[0].ttype, yyvsp[-4].ttype); ; + break;} +case 168: +#line 942 "c-parse.y" +{ push_c_function_context (); + if (! start_function (current_declspecs, yyvsp[0].ttype, 1)) + { + pop_c_function_context (); + YYERROR1; + } + reinit_parse_for_function (); + store_parm_decls (); ; + break;} +case 169: +#line 957 "c-parse.y" +{ finish_function (1); + pop_c_function_context (); ; + break;} +case 170: +#line 963 "c-parse.y" +{ push_c_function_context (); + if (! start_function (current_declspecs, yyvsp[0].ttype, 1)) + { + pop_c_function_context (); + YYERROR1; + } + reinit_parse_for_function (); + store_parm_decls (); ; + break;} +case 171: +#line 978 "c-parse.y" +{ finish_function (1); + pop_c_function_context (); ; + break;} +case 174: +#line 994 "c-parse.y" +{ yyval.ttype = yyvsp[-1].ttype; ; + break;} +case 175: +#line 996 "c-parse.y" +{ yyval.ttype = build_nt (CALL_EXPR, yyvsp[-2].ttype, yyvsp[0].ttype, NULL_TREE); ; + break;} +case 176: +#line 1001 "c-parse.y" +{ yyval.ttype = build_nt (ARRAY_REF, yyvsp[-3].ttype, yyvsp[-1].ttype); ; + break;} +case 177: +#line 1003 "c-parse.y" +{ yyval.ttype = build_nt (ARRAY_REF, yyvsp[-2].ttype, NULL_TREE); ; + break;} +case 178: +#line 1005 "c-parse.y" +{ yyval.ttype = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ; + break;} +case 180: +#line 1016 "c-parse.y" +{ yyval.ttype = build_nt (CALL_EXPR, yyvsp[-2].ttype, yyvsp[0].ttype, NULL_TREE); ; + break;} +case 181: +#line 1021 "c-parse.y" +{ yyval.ttype = build_nt (ARRAY_REF, yyvsp[-3].ttype, yyvsp[-1].ttype); ; + break;} +case 182: +#line 1023 "c-parse.y" +{ yyval.ttype = build_nt (ARRAY_REF, yyvsp[-2].ttype, NULL_TREE); ; + break;} +case 183: +#line 1025 "c-parse.y" +{ yyval.ttype = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ; + break;} +case 185: +#line 1034 "c-parse.y" +{ yyval.ttype = build_nt (CALL_EXPR, yyvsp[-2].ttype, yyvsp[0].ttype, NULL_TREE); ; + break;} +case 186: +#line 1039 "c-parse.y" +{ yyval.ttype = yyvsp[-1].ttype; ; + break;} +case 187: +#line 1041 "c-parse.y" +{ yyval.ttype = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ; + break;} +case 188: +#line 1043 "c-parse.y" +{ yyval.ttype = build_nt (ARRAY_REF, yyvsp[-3].ttype, yyvsp[-1].ttype); ; + break;} +case 189: +#line 1045 "c-parse.y" +{ yyval.ttype = build_nt (ARRAY_REF, yyvsp[-2].ttype, NULL_TREE); ; + break;} +case 191: +#line 1051 "c-parse.y" +{ yyval.ttype = start_struct (RECORD_TYPE, yyvsp[-1].ttype); + /* Start scope of tag before parsing components. */ + ; + break;} +case 192: +#line 1055 "c-parse.y" +{ yyval.ttype = finish_struct (yyvsp[-2].ttype, yyvsp[-1].ttype); + /* Really define the structure. */ + ; + break;} +case 193: +#line 1059 "c-parse.y" +{ yyval.ttype = finish_struct (start_struct (RECORD_TYPE, NULL_TREE), + yyvsp[-1].ttype); ; + break;} +case 194: +#line 1062 "c-parse.y" +{ yyval.ttype = xref_tag (RECORD_TYPE, yyvsp[0].ttype); ; + break;} +case 195: +#line 1064 "c-parse.y" +{ yyval.ttype = start_struct (UNION_TYPE, yyvsp[-1].ttype); ; + break;} +case 196: +#line 1066 "c-parse.y" +{ yyval.ttype = finish_struct (yyvsp[-2].ttype, yyvsp[-1].ttype); ; + break;} +case 197: +#line 1068 "c-parse.y" +{ yyval.ttype = finish_struct (start_struct (UNION_TYPE, NULL_TREE), + yyvsp[-1].ttype); ; + break;} +case 198: +#line 1071 "c-parse.y" +{ yyval.ttype = xref_tag (UNION_TYPE, yyvsp[0].ttype); ; + break;} +case 199: +#line 1073 "c-parse.y" +{ yyvsp[0].itype = suspend_momentary (); + yyval.ttype = start_enum (yyvsp[-1].ttype); ; + break;} +case 200: +#line 1076 "c-parse.y" +{ yyval.ttype = finish_enum (yyvsp[-3].ttype, nreverse (yyvsp[-2].ttype)); + resume_momentary (yyvsp[-4].itype); ; + break;} +case 201: +#line 1079 "c-parse.y" +{ yyvsp[0].itype = suspend_momentary (); + yyval.ttype = start_enum (NULL_TREE); ; + break;} +case 202: +#line 1082 "c-parse.y" +{ yyval.ttype = finish_enum (yyvsp[-3].ttype, nreverse (yyvsp[-2].ttype)); + resume_momentary (yyvsp[-4].itype); ; + break;} +case 203: +#line 1085 "c-parse.y" +{ yyval.ttype = xref_tag (ENUMERAL_TYPE, yyvsp[0].ttype); ; + break;} +case 207: +#line 1096 "c-parse.y" +{ if (pedantic) pedwarn ("comma at end of enumerator list"); ; + break;} +case 208: +#line 1101 "c-parse.y" +{ yyval.ttype = yyvsp[0].ttype; ; + break;} +case 209: +#line 1103 "c-parse.y" +{ yyval.ttype = chainon (yyvsp[-1].ttype, yyvsp[0].ttype); + pedwarn ("no semicolon at end of struct or union"); ; + break;} +case 210: +#line 1108 "c-parse.y" +{ yyval.ttype = NULL_TREE; ; + break;} +case 211: +#line 1110 "c-parse.y" +{ yyval.ttype = chainon (yyvsp[-2].ttype, yyvsp[-1].ttype); ; + break;} +case 212: +#line 1112 "c-parse.y" +{ if (pedantic) + pedwarn ("extra semicolon in struct or union specified"); ; + break;} +case 213: +#line 1127 "c-parse.y" +{ yyval.ttype = yyvsp[0].ttype; + current_declspecs = TREE_VALUE (declspec_stack); + declspec_stack = TREE_CHAIN (declspec_stack); + resume_momentary (yyvsp[-1].itype); ; + break;} +case 214: +#line 1132 "c-parse.y" +{ if (pedantic) + pedwarn ("ANSI C forbids member declarations with no members"); + shadow_tag(yyvsp[0].ttype); + yyval.ttype = NULL_TREE; ; + break;} +case 215: +#line 1137 "c-parse.y" +{ yyval.ttype = yyvsp[0].ttype; + current_declspecs = TREE_VALUE (declspec_stack); + declspec_stack = TREE_CHAIN (declspec_stack); + resume_momentary (yyvsp[-1].itype); ; + break;} +case 216: +#line 1142 "c-parse.y" +{ if (pedantic) + pedwarn ("ANSI C forbids member declarations with no members"); + shadow_tag(yyvsp[0].ttype); + yyval.ttype = NULL_TREE; ; + break;} +case 217: +#line 1147 "c-parse.y" +{ yyval.ttype = NULL_TREE; ; + break;} +case 219: +#line 1153 "c-parse.y" +{ yyval.ttype = chainon (yyvsp[-2].ttype, yyvsp[0].ttype); ; + break;} +case 220: +#line 1158 "c-parse.y" +{ yyval.ttype = grokfield (yyvsp[-3].filename, yyvsp[-2].lineno, yyvsp[-1].ttype, current_declspecs, NULL_TREE); + decl_attributes (yyval.ttype, yyvsp[0].ttype); ; + break;} +case 221: +#line 1162 "c-parse.y" +{ yyval.ttype = grokfield (yyvsp[-5].filename, yyvsp[-4].lineno, yyvsp[-3].ttype, current_declspecs, yyvsp[-1].ttype); + decl_attributes (yyval.ttype, yyvsp[0].ttype); ; + break;} +case 222: +#line 1165 "c-parse.y" +{ yyval.ttype = grokfield (yyvsp[-3].filename, yyvsp[-2].lineno, NULL_TREE, current_declspecs, yyvsp[0].ttype); ; + break;} +case 224: +#line 1176 "c-parse.y" +{ yyval.ttype = chainon (yyvsp[0].ttype, yyvsp[-2].ttype); ; + break;} +case 225: +#line 1182 "c-parse.y" +{ yyval.ttype = build_enumerator (yyvsp[0].ttype, NULL_TREE); ; + break;} +case 226: +#line 1184 "c-parse.y" +{ yyval.ttype = build_enumerator (yyvsp[-2].ttype, yyvsp[0].ttype); ; + break;} +case 227: +#line 1189 "c-parse.y" +{ yyval.ttype = build_tree_list (yyvsp[-1].ttype, yyvsp[0].ttype); ; + break;} +case 228: +#line 1191 "c-parse.y" +{ yyval.ttype = build_tree_list (yyvsp[-1].ttype, yyvsp[0].ttype); ; + break;} +case 229: +#line 1196 "c-parse.y" +{ yyval.ttype = NULL_TREE; ; + break;} +case 231: +#line 1202 "c-parse.y" +{ yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, NULL_TREE); ; + break;} +case 232: +#line 1204 "c-parse.y" +{ yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); ; + break;} +case 233: +#line 1209 "c-parse.y" +{ yyval.ttype = NULL_TREE; ; + break;} +case 234: +#line 1211 "c-parse.y" +{ yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); ; + break;} +case 235: +#line 1216 "c-parse.y" +{ yyval.ttype = yyvsp[-1].ttype; ; + break;} +case 236: +#line 1219 "c-parse.y" +{ yyval.ttype = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ; + break;} +case 237: +#line 1221 "c-parse.y" +{ yyval.ttype = make_pointer_declarator (yyvsp[0].ttype, NULL_TREE); ; + break;} +case 238: +#line 1223 "c-parse.y" +{ yyval.ttype = build_nt (CALL_EXPR, yyvsp[-2].ttype, yyvsp[0].ttype, NULL_TREE); ; + break;} +case 239: +#line 1225 "c-parse.y" +{ yyval.ttype = build_nt (ARRAY_REF, yyvsp[-3].ttype, yyvsp[-1].ttype); ; + break;} +case 240: +#line 1227 "c-parse.y" +{ yyval.ttype = build_nt (ARRAY_REF, yyvsp[-2].ttype, NULL_TREE); ; + break;} +case 241: +#line 1229 "c-parse.y" +{ yyval.ttype = build_nt (CALL_EXPR, NULL_TREE, yyvsp[0].ttype, NULL_TREE); ; + break;} +case 242: +#line 1231 "c-parse.y" +{ yyval.ttype = build_nt (ARRAY_REF, NULL_TREE, yyvsp[-1].ttype); ; + break;} +case 243: +#line 1233 "c-parse.y" +{ yyval.ttype = build_nt (ARRAY_REF, NULL_TREE, NULL_TREE); ; + break;} +case 250: +#line 1255 "c-parse.y" +{ emit_line_note (input_filename, lineno); + pushlevel (0); + clear_last_expr (); + push_momentary (); + expand_start_bindings (0); + ; + break;} +case 252: +#line 1268 "c-parse.y" +{ if (pedantic) + pedwarn ("ANSI C forbids label declarations"); ; + break;} +case 255: +#line 1279 "c-parse.y" +{ tree link; + for (link = yyvsp[-1].ttype; link; link = TREE_CHAIN (link)) + { + tree label = shadow_label (TREE_VALUE (link)); + C_DECLARED_LABEL_FLAG (label) = 1; + declare_nonlocal_label (label); + } + ; + break;} +case 256: +#line 1293 "c-parse.y" +{; + break;} +case 258: +#line 1298 "c-parse.y" +{ yyval.ttype = convert (void_type_node, integer_zero_node); ; + break;} +case 259: +#line 1300 "c-parse.y" +{ emit_line_note (input_filename, lineno); + expand_end_bindings (getdecls (), 1, 0); + yyval.ttype = poplevel (1, 1, 0); + pop_momentary (); ; + break;} +case 260: +#line 1305 "c-parse.y" +{ emit_line_note (input_filename, lineno); + expand_end_bindings (getdecls (), kept_level_p (), 0); + yyval.ttype = poplevel (kept_level_p (), 0, 0); + pop_momentary (); ; + break;} +case 261: +#line 1310 "c-parse.y" +{ emit_line_note (input_filename, lineno); + expand_end_bindings (getdecls (), kept_level_p (), 0); + yyval.ttype = poplevel (kept_level_p (), 0, 0); + pop_momentary (); ; + break;} +case 264: +#line 1327 "c-parse.y" +{ emit_line_note (yyvsp[-5].filename, yyvsp[-4].lineno); + expand_start_cond (truthvalue_conversion (yyvsp[-1].ttype), 0); + yyvsp[-3].itype = stmt_count; + if_stmt_file = yyvsp[-5].filename; + if_stmt_line = yyvsp[-4].lineno; + position_after_white_space (); ; + break;} +case 265: +#line 1340 "c-parse.y" +{ stmt_count++; + emit_line_note (yyvsp[-2].filename, yyvsp[-1].lineno); + /* See comment in `while' alternative, above. */ + emit_nop (); + expand_start_loop_continue_elsewhere (1); + position_after_white_space (); ; + break;} +case 266: +#line 1347 "c-parse.y" +{ expand_loop_continue_here (); ; + break;} +case 267: +#line 1351 "c-parse.y" +{ yyval.filename = input_filename; ; + break;} +case 268: +#line 1355 "c-parse.y" +{ yyval.lineno = lineno; ; + break;} +case 269: +#line 1360 "c-parse.y" +{ ; + break;} +case 270: +#line 1365 "c-parse.y" +{ ; + break;} +case 271: +#line 1370 "c-parse.y" +{ ; + break;} +case 273: +#line 1376 "c-parse.y" +{ int next; + position_after_white_space (); + next = getc (finput); + ungetc (next, finput); + if (pedantic && next == '}') + pedwarn ("ANSI C forbids label at end of compound statement"); + ; + break;} +case 274: +#line 1388 "c-parse.y" +{ stmt_count++; ; + break;} +case 275: +#line 1390 "c-parse.y" +{ stmt_count++; + emit_line_note (yyvsp[-3].filename, yyvsp[-2].lineno); + c_expand_expr_stmt (yyvsp[-1].ttype); + clear_momentary (); ; + break;} +case 276: +#line 1395 "c-parse.y" +{ expand_start_else (); + yyvsp[-1].itype = stmt_count; + position_after_white_space (); ; + break;} +case 277: +#line 1399 "c-parse.y" +{ expand_end_cond (); + if (extra_warnings && stmt_count == yyvsp[-3].itype) + warning ("empty body in an else-statement"); ; + break;} +case 278: +#line 1403 "c-parse.y" +{ expand_end_cond (); + if (extra_warnings && stmt_count == yyvsp[0].itype) + warning_with_file_and_line (if_stmt_file, if_stmt_line, + "empty body in an if-statement"); ; + break;} +case 279: +#line 1411 "c-parse.y" +{ expand_end_cond (); ; + break;} +case 280: +#line 1413 "c-parse.y" +{ stmt_count++; + emit_line_note (yyvsp[-2].filename, yyvsp[-1].lineno); + /* The emit_nop used to come before emit_line_note, + but that made the nop seem like part of the preceding line. + And that was confusing when the preceding line was + inside of an if statement and was not really executed. + I think it ought to work to put the nop after the line number. + We will see. --rms, July 15, 1991. */ + emit_nop (); ; + break;} +case 281: +#line 1423 "c-parse.y" +{ /* Don't start the loop till we have succeeded + in parsing the end test. This is to make sure + that we end every loop we start. */ + expand_start_loop (1); + emit_line_note (input_filename, lineno); + expand_exit_loop_if_false (NULL_PTR, + truthvalue_conversion (yyvsp[-1].ttype)); + position_after_white_space (); ; + break;} +case 282: +#line 1432 "c-parse.y" +{ expand_end_loop (); ; + break;} +case 283: +#line 1435 "c-parse.y" +{ emit_line_note (input_filename, lineno); + expand_exit_loop_if_false (NULL_PTR, + truthvalue_conversion (yyvsp[-2].ttype)); + expand_end_loop (); + clear_momentary (); ; + break;} +case 284: +#line 1442 "c-parse.y" +{ expand_end_loop (); + clear_momentary (); ; + break;} +case 285: +#line 1446 "c-parse.y" +{ stmt_count++; + emit_line_note (yyvsp[-5].filename, yyvsp[-4].lineno); + /* See comment in `while' alternative, above. */ + emit_nop (); + if (yyvsp[-1].ttype) c_expand_expr_stmt (yyvsp[-1].ttype); + /* Next step is to call expand_start_loop_continue_elsewhere, + but wait till after we parse the entire for (...). + Otherwise, invalid input might cause us to call that + fn without calling expand_end_loop. */ + ; + break;} +case 286: +#line 1458 "c-parse.y" +{ yyvsp[0].lineno = lineno; + yyval.filename = input_filename; ; + break;} +case 287: +#line 1461 "c-parse.y" +{ + /* Start the loop. Doing this after parsing + all the expressions ensures we will end the loop. */ + expand_start_loop_continue_elsewhere (1); + /* Emit the end-test, with a line number. */ + emit_line_note (yyvsp[-2].filename, yyvsp[-3].lineno); + if (yyvsp[-4].ttype) + expand_exit_loop_if_false (NULL_PTR, + truthvalue_conversion (yyvsp[-4].ttype)); + /* Don't let the tree nodes for $9 be discarded by + clear_momentary during the parsing of the next stmt. */ + push_momentary (); + yyvsp[-3].lineno = lineno; + yyvsp[-2].filename = input_filename; ; + break;} +case 288: +#line 1476 "c-parse.y" +{ /* Emit the increment expression, with a line number. */ + emit_line_note (yyvsp[-4].filename, yyvsp[-5].lineno); + expand_loop_continue_here (); + if (yyvsp[-3].ttype) + c_expand_expr_stmt (yyvsp[-3].ttype); + pop_momentary (); + expand_end_loop (); ; + break;} +case 289: +#line 1484 "c-parse.y" +{ stmt_count++; + emit_line_note (yyvsp[-5].filename, yyvsp[-4].lineno); + c_expand_start_case (yyvsp[-1].ttype); + /* Don't let the tree nodes for $3 be discarded by + clear_momentary during the parsing of the next stmt. */ + push_momentary (); + position_after_white_space (); ; + break;} +case 290: +#line 1492 "c-parse.y" +{ expand_end_case (yyvsp[-3].ttype); + pop_momentary (); ; + break;} +case 291: +#line 1495 "c-parse.y" +{ stmt_count++; + emit_line_note (yyvsp[-3].filename, yyvsp[-2].lineno); + if ( ! expand_exit_something ()) + error ("break statement not within loop or switch"); ; + break;} +case 292: +#line 1500 "c-parse.y" +{ stmt_count++; + emit_line_note (yyvsp[-3].filename, yyvsp[-2].lineno); + if (! expand_continue_loop (NULL_PTR)) + error ("continue statement not within a loop"); ; + break;} +case 293: +#line 1505 "c-parse.y" +{ stmt_count++; + emit_line_note (yyvsp[-3].filename, yyvsp[-2].lineno); + c_expand_return (NULL_TREE); ; + break;} +case 294: +#line 1509 "c-parse.y" +{ stmt_count++; + emit_line_note (yyvsp[-4].filename, yyvsp[-3].lineno); + c_expand_return (yyvsp[-1].ttype); ; + break;} +case 295: +#line 1513 "c-parse.y" +{ stmt_count++; + emit_line_note (yyvsp[-7].filename, yyvsp[-6].lineno); + STRIP_NOPS (yyvsp[-2].ttype); + if ((TREE_CODE (yyvsp[-2].ttype) == ADDR_EXPR + && TREE_CODE (TREE_OPERAND (yyvsp[-2].ttype, 0)) == STRING_CST) + || TREE_CODE (yyvsp[-2].ttype) == STRING_CST) + expand_asm (yyvsp[-2].ttype); + else + error ("argument of `asm' is not a constant string"); ; + break;} +case 296: +#line 1524 "c-parse.y" +{ stmt_count++; + emit_line_note (yyvsp[-9].filename, yyvsp[-8].lineno); + c_expand_asm_operands (yyvsp[-4].ttype, yyvsp[-2].ttype, NULL_TREE, NULL_TREE, + yyvsp[-6].ttype == ridpointers[(int)RID_VOLATILE], + input_filename, lineno); ; + break;} +case 297: +#line 1531 "c-parse.y" +{ stmt_count++; + emit_line_note (yyvsp[-11].filename, yyvsp[-10].lineno); + c_expand_asm_operands (yyvsp[-6].ttype, yyvsp[-4].ttype, yyvsp[-2].ttype, NULL_TREE, + yyvsp[-8].ttype == ridpointers[(int)RID_VOLATILE], + input_filename, lineno); ; + break;} +case 298: +#line 1539 "c-parse.y" +{ stmt_count++; + emit_line_note (yyvsp[-13].filename, yyvsp[-12].lineno); + c_expand_asm_operands (yyvsp[-8].ttype, yyvsp[-6].ttype, yyvsp[-4].ttype, yyvsp[-2].ttype, + yyvsp[-10].ttype == ridpointers[(int)RID_VOLATILE], + input_filename, lineno); ; + break;} +case 299: +#line 1545 "c-parse.y" +{ tree decl; + stmt_count++; + emit_line_note (yyvsp[-4].filename, yyvsp[-3].lineno); + decl = lookup_label (yyvsp[-1].ttype); + if (decl != 0) + { + TREE_USED (decl) = 1; + expand_goto (decl); + } + ; + break;} +case 300: +#line 1556 "c-parse.y" +{ stmt_count++; + emit_line_note (yyvsp[-5].filename, yyvsp[-4].lineno); + expand_computed_goto (convert (ptr_type_node, yyvsp[-1].ttype)); ; + break;} +case 302: +#line 1567 "c-parse.y" +{ register tree value = check_case_value (yyvsp[-1].ttype); + register tree label + = build_decl (LABEL_DECL, NULL_TREE, NULL_TREE); + + stmt_count++; + + if (value != error_mark_node) + { + tree duplicate; + int success = pushcase (value, label, &duplicate); + if (success == 1) + error ("case label not within a switch statement"); + else if (success == 2) + { + error ("duplicate case value"); + error_with_decl (duplicate, "this is the first entry for that value"); + } + else if (success == 3) + warning ("case value out of range"); + else if (success == 5) + error ("case label within scope of cleanup or variable array"); + } + position_after_white_space (); ; + break;} +case 303: +#line 1591 "c-parse.y" +{ register tree value1 = check_case_value (yyvsp[-3].ttype); + register tree value2 = check_case_value (yyvsp[-1].ttype); + register tree label + = build_decl (LABEL_DECL, NULL_TREE, NULL_TREE); + + stmt_count++; + + if (value1 != error_mark_node && value2 != error_mark_node) + { + tree duplicate; + int success = pushcase_range (value1, value2, label, + &duplicate); + if (success == 1) + error ("case label not within a switch statement"); + else if (success == 2) + { + error ("duplicate case value"); + error_with_decl (duplicate, "this is the first entry for that value"); + } + else if (success == 3) + warning ("case value out of range"); + else if (success == 4) + warning ("empty case range"); + else if (success == 5) + error ("case label within scope of cleanup or variable array"); + } + position_after_white_space (); ; + break;} +case 304: +#line 1619 "c-parse.y" +{ + tree duplicate; + register tree label + = build_decl (LABEL_DECL, NULL_TREE, NULL_TREE); + int success = pushcase (NULL_TREE, label, &duplicate); + stmt_count++; + if (success == 1) + error ("default label not within a switch statement"); + else if (success == 2) + { + error ("multiple default labels in one switch"); + error_with_decl (duplicate, "this is the first default label"); + } + position_after_white_space (); ; + break;} +case 305: +#line 1634 "c-parse.y" +{ tree label = define_label (input_filename, lineno, yyvsp[-1].ttype); + stmt_count++; + emit_nop (); + if (label) + expand_label (label); + position_after_white_space (); ; + break;} +case 306: +#line 1646 "c-parse.y" +{ emit_line_note (input_filename, lineno); ; + break;} +case 307: +#line 1648 "c-parse.y" +{ emit_line_note (input_filename, lineno); ; + break;} +case 308: +#line 1653 "c-parse.y" +{ yyval.ttype = NULL_TREE; ; + break;} +case 310: +#line 1660 "c-parse.y" +{ yyval.ttype = NULL_TREE; ; + break;} +case 313: +#line 1667 "c-parse.y" +{ yyval.ttype = chainon (yyvsp[-2].ttype, yyvsp[0].ttype); ; + break;} +case 314: +#line 1672 "c-parse.y" +{ yyval.ttype = build_tree_list (yyvsp[-3].ttype, yyvsp[-1].ttype); ; + break;} +case 315: +#line 1677 "c-parse.y" +{ yyval.ttype = tree_cons (NULL_TREE, combine_strings (yyvsp[0].ttype), NULL_TREE); ; + break;} +case 316: +#line 1679 "c-parse.y" +{ yyval.ttype = tree_cons (NULL_TREE, combine_strings (yyvsp[0].ttype), yyvsp[-2].ttype); ; + break;} +case 317: +#line 1685 "c-parse.y" +{ pushlevel (0); + clear_parm_order (); + declare_parm_level (0); ; + break;} +case 318: +#line 1689 "c-parse.y" +{ yyval.ttype = yyvsp[0].ttype; + parmlist_tags_warning (); + poplevel (0, 0, 0); ; + break;} +case 320: +#line 1697 "c-parse.y" +{ tree parm; + if (pedantic) + pedwarn ("ANSI C forbids forward parameter declarations"); + /* Mark the forward decls as such. */ + for (parm = getdecls (); parm; parm = TREE_CHAIN (parm)) + TREE_ASM_WRITTEN (parm) = 1; + clear_parm_order (); ; + break;} +case 321: +#line 1705 "c-parse.y" +{ yyval.ttype = yyvsp[0].ttype; ; + break;} +case 322: +#line 1707 "c-parse.y" +{ yyval.ttype = tree_cons (NULL_TREE, NULL_TREE, NULL_TREE); ; + break;} +case 323: +#line 1713 "c-parse.y" +{ yyval.ttype = get_parm_info (0); ; + break;} +case 324: +#line 1715 "c-parse.y" +{ yyval.ttype = get_parm_info (0); + if (pedantic) + pedwarn ("ANSI C requires a named argument before `...'"); + ; + break;} +case 325: +#line 1720 "c-parse.y" +{ yyval.ttype = get_parm_info (1); ; + break;} +case 326: +#line 1722 "c-parse.y" +{ yyval.ttype = get_parm_info (0); ; + break;} +case 327: +#line 1727 "c-parse.y" +{ push_parm_decl (yyvsp[0].ttype); ; + break;} +case 328: +#line 1729 "c-parse.y" +{ push_parm_decl (yyvsp[0].ttype); ; + break;} +case 329: +#line 1736 "c-parse.y" +{ yyval.ttype = build_tree_list (yyvsp[-1].ttype, yyvsp[0].ttype) ; ; + break;} +case 330: +#line 1738 "c-parse.y" +{ yyval.ttype = build_tree_list (yyvsp[-1].ttype, yyvsp[0].ttype) ; ; + break;} +case 331: +#line 1740 "c-parse.y" +{ yyval.ttype = build_tree_list (yyvsp[-1].ttype, yyvsp[0].ttype); ; + break;} +case 332: +#line 1742 "c-parse.y" +{ yyval.ttype = build_tree_list (yyvsp[-1].ttype, yyvsp[0].ttype) ; ; + break;} +case 333: +#line 1744 "c-parse.y" +{ yyval.ttype = build_tree_list (yyvsp[-1].ttype, yyvsp[0].ttype); ; + break;} +case 334: +#line 1751 "c-parse.y" +{ pushlevel (0); + clear_parm_order (); + declare_parm_level (1); ; + break;} +case 335: +#line 1755 "c-parse.y" +{ yyval.ttype = yyvsp[0].ttype; + parmlist_tags_warning (); + poplevel (0, 0, 0); ; + break;} +case 337: +#line 1763 "c-parse.y" +{ tree t; + for (t = yyvsp[-1].ttype; t; t = TREE_CHAIN (t)) + if (TREE_VALUE (t) == NULL_TREE) + error ("`...' in old-style identifier list"); + yyval.ttype = tree_cons (NULL_TREE, NULL_TREE, yyvsp[-1].ttype); ; + break;} +case 338: +#line 1773 "c-parse.y" +{ yyval.ttype = build_tree_list (NULL_TREE, yyvsp[0].ttype); ; + break;} +case 339: +#line 1775 "c-parse.y" +{ yyval.ttype = chainon (yyvsp[-2].ttype, build_tree_list (NULL_TREE, yyvsp[0].ttype)); ; + break;} +case 340: +#line 1781 "c-parse.y" +{ yyval.ttype = build_tree_list (NULL_TREE, yyvsp[0].ttype); ; + break;} +case 341: +#line 1783 "c-parse.y" +{ yyval.ttype = chainon (yyvsp[-2].ttype, build_tree_list (NULL_TREE, yyvsp[0].ttype)); ; + break;} +} + /* the action file gets copied in in place of this dollarsign */ +#line 440 "bison.simple" + + yyvsp -= yylen; + yyssp -= yylen; +#ifdef YYLSP_NEEDED + yylsp -= yylen; +#endif + +#if YYDEBUG != 0 + if (yydebug) + { + short *ssp1 = yyss - 1; + fprintf (stderr, "state stack now"); + while (ssp1 != yyssp) + fprintf (stderr, " %d", *++ssp1); + fprintf (stderr, "\n"); + } +#endif + + *++yyvsp = yyval; + +#ifdef YYLSP_NEEDED + yylsp++; + if (yylen == 0) + { + yylsp->first_line = yylloc.first_line; + yylsp->first_column = yylloc.first_column; + yylsp->last_line = (yylsp-1)->last_line; + yylsp->last_column = (yylsp-1)->last_column; + yylsp->text = 0; + } + else + { + yylsp->last_line = (yylsp+yylen-1)->last_line; + yylsp->last_column = (yylsp+yylen-1)->last_column; + } +#endif + + /* Now "shift" the result of the reduction. + Determine what state that goes to, + based on the state we popped back to + and the rule number reduced by. */ + + yyn = yyr1[yyn]; + + yystate = yypgoto[yyn - YYNTBASE] + *yyssp; + if (yystate >= 0 && yystate <= YYLAST && yycheck[yystate] == *yyssp) + yystate = yytable[yystate]; + else + yystate = yydefgoto[yyn - YYNTBASE]; + + goto yynewstate; + +yyerrlab: /* here on detecting error */ + + if (! yyerrstatus) + /* If not already recovering from an error, report this error. */ + { + ++yynerrs; + +#ifdef YYERROR_VERBOSE + yyn = yypact[yystate]; + + if (yyn > YYFLAG && yyn < YYLAST) + { + int size = 0; + char *msg; + int x, count; + + count = 0; + for (x = 0; x < (sizeof(yytname) / sizeof(char *)); x++) + if (yycheck[x + yyn] == x) + size += strlen(yytname[x]) + 15, count++; + msg = (char *) malloc(size + 15); + if (msg != 0) + { + strcpy(msg, "parse error"); + + if (count < 5) + { + count = 0; + for (x = 0; x < (sizeof(yytname) / sizeof(char *)); x++) + if (yycheck[x + yyn] == x) + { + strcat(msg, count == 0 ? ", expecting `" : " or `"); + strcat(msg, yytname[x]); + strcat(msg, "'"); + count++; + } + } + yyerror(msg); + free(msg); + } + else + yyerror ("parse error; also virtual memory exceeded"); + } + else +#endif /* YYERROR_VERBOSE */ + yyerror("parse error"); + } + +yyerrlab1: /* here on error raised explicitly by an action */ + + if (yyerrstatus == 3) + { + /* if just tried and failed to reuse lookahead token after an error, discard it. */ + + /* return failure if at end of input */ + if (yychar == YYEOF) + YYABORT; + +#if YYDEBUG != 0 + if (yydebug) + fprintf(stderr, "Discarding token %d (%s).\n", yychar, yytname[yychar1]); +#endif + + yychar = YYEMPTY; + } + + /* Else will try to reuse lookahead token + after shifting the error token. */ + + yyerrstatus = 3; /* Each real token shifted decrements this */ + + goto yyerrhandle; + +yyerrdefault: /* current state does not do anything special for the error token. */ + +#if 0 + /* This is wrong; only states that explicitly want error tokens + should shift them. */ + yyn = yydefact[yystate]; /* If its default is to accept any token, ok. Otherwise pop it.*/ + if (yyn) goto yydefault; +#endif + +yyerrpop: /* pop the current state because it cannot handle the error token */ + + if (yyssp == yyss) YYABORT; + yyvsp--; + yystate = *--yyssp; +#ifdef YYLSP_NEEDED + yylsp--; +#endif + +#if YYDEBUG != 0 + if (yydebug) + { + short *ssp1 = yyss - 1; + fprintf (stderr, "Error: state stack now"); + while (ssp1 != yyssp) + fprintf (stderr, " %d", *++ssp1); + fprintf (stderr, "\n"); + } +#endif + +yyerrhandle: + + yyn = yypact[yystate]; + if (yyn == YYFLAG) + goto yyerrdefault; + + yyn += YYTERROR; + if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != YYTERROR) + goto yyerrdefault; + + yyn = yytable[yyn]; + if (yyn < 0) + { + if (yyn == YYFLAG) + goto yyerrpop; + yyn = -yyn; + goto yyreduce; + } + else if (yyn == 0) + goto yyerrpop; + + if (yyn == YYFINAL) + YYACCEPT; + +#if YYDEBUG != 0 + if (yydebug) + fprintf(stderr, "Shifting error token, "); +#endif + + *++yyvsp = yylval; +#ifdef YYLSP_NEEDED + *++yylsp = yylloc; +#endif + + yystate = yyn; + goto yynewstate; +} +#line 1786 "c-parse.y" + -- 2.20.1