68 |
#include "files.h" |
#include "files.h" |
69 |
#include "getargs.h" |
#include "getargs.h" |
70 |
#include "output.h" |
#include "output.h" |
71 |
|
#include "symlist.h" |
72 |
#include "gram.h" |
#include "gram.h" |
73 |
#include "reader.h" |
#include "reader.h" |
74 |
#include "conflicts.h" |
#include "conflicts.h" |
223 |
#endif |
#endif |
224 |
|
|
225 |
#ifndef YYSTYPE |
#ifndef YYSTYPE |
226 |
#line 89 "parse-gram.y" |
#line 90 "parse-gram.y" |
227 |
typedef union { |
typedef union { |
228 |
symbol_t *symbol; |
symbol_t *symbol; |
229 |
symbol_list *list; |
symbol_list_t *list; |
230 |
int integer; |
int integer; |
231 |
char *string; |
char *string; |
232 |
associativity assoc; |
associativity assoc; |
233 |
} yystype; |
} yystype; |
234 |
/* Line 199 of /usr/local/share/bison/bison.simple. */ |
/* Line 199 of /usr/local/share/bison/bison.simple. */ |
235 |
#line 235 "parse-gram.c" |
#line 236 "parse-gram.c" |
236 |
# define YYSTYPE yystype |
# define YYSTYPE yystype |
237 |
# define YYSTYPE_IS_TRIVIAL 1 |
# define YYSTYPE_IS_TRIVIAL 1 |
238 |
#endif |
#endif |
253 |
|
|
254 |
|
|
255 |
/* Line 219 of /usr/local/share/bison/bison.simple. */ |
/* Line 219 of /usr/local/share/bison/bison.simple. */ |
256 |
#line 256 "parse-gram.c" |
#line 257 "parse-gram.c" |
257 |
|
|
258 |
#if ! defined (yyoverflow) || YYERROR_VERBOSE |
#if ! defined (yyoverflow) || YYERROR_VERBOSE |
259 |
|
|
448 |
/* YYRLINE[YYN] -- source line where rule number YYN was defined. */ |
/* YYRLINE[YYN] -- source line where rule number YYN was defined. */ |
449 |
static const unsigned short yyrline[] = |
static const unsigned short yyrline[] = |
450 |
{ |
{ |
451 |
0, 151, 151, 164, 166, 169, 171, 172, 173, 174, |
0, 152, 152, 165, 167, 170, 172, 173, 174, 175, |
452 |
175, 176, 177, 178, 179, 180, 181, 182, 183, 184, |
176, 177, 178, 179, 180, 181, 182, 183, 184, 185, |
453 |
185, 186, 189, 191, 192, 196, 204, 204, 210, 210, |
186, 187, 190, 192, 193, 197, 205, 205, 211, 211, |
454 |
215, 224, 239, 241, 242, 245, 247, 252, 254, 258, |
216, 225, 240, 242, 243, 246, 248, 253, 255, 259, |
455 |
263, 268, 274, 280, 290, 293, 302, 304, 310, 312, |
264, 269, 275, 281, 291, 294, 303, 305, 311, 313, |
456 |
315, 315, 320, 322, 325, 328, 330, 332, 336, 338, |
316, 316, 321, 323, 326, 329, 331, 333, 337, 339, |
457 |
339, 342, 348, 357, 365, 370, 376, 378 |
340, 343, 349, 358, 366, 371, 377, 379 |
458 |
}; |
}; |
459 |
#endif |
#endif |
460 |
|
|
1184 |
switch (yyn) |
switch (yyn) |
1185 |
{ |
{ |
1186 |
case 2: |
case 2: |
1187 |
#line 153 "parse-gram.y" |
#line 154 "parse-gram.y" |
1188 |
{ |
{ |
1189 |
yycontrol->errcode = 0; |
yycontrol->errcode = 0; |
1190 |
epilogue_set (yyvsp[0].string, yylsp[0]); |
epilogue_set (yyvsp[0].string, yylsp[0]); |
1192 |
break; |
break; |
1193 |
|
|
1194 |
case 6: |
case 6: |
1195 |
#line 171 "parse-gram.y" |
#line 172 "parse-gram.y" |
1196 |
{ prologue_augment (yyvsp[0].string, yylsp[0]); } |
{ prologue_augment (yyvsp[0].string, yylsp[0]); } |
1197 |
break; |
break; |
1198 |
|
|
1199 |
case 7: |
case 7: |
1200 |
#line 172 "parse-gram.y" |
#line 173 "parse-gram.y" |
1201 |
{ debug_flag = 1; } |
{ debug_flag = 1; } |
1202 |
break; |
break; |
1203 |
|
|
1204 |
case 8: |
case 8: |
1205 |
#line 173 "parse-gram.y" |
#line 174 "parse-gram.y" |
1206 |
{ muscle_insert (yyvsp[-1].string, yyvsp[0].string); } |
{ muscle_insert (yyvsp[-1].string, yyvsp[0].string); } |
1207 |
break; |
break; |
1208 |
|
|
1209 |
case 9: |
case 9: |
1210 |
#line 174 "parse-gram.y" |
#line 175 "parse-gram.y" |
1211 |
{ defines_flag = 1; } |
{ defines_flag = 1; } |
1212 |
break; |
break; |
1213 |
|
|
1214 |
case 10: |
case 10: |
1215 |
#line 175 "parse-gram.y" |
#line 176 "parse-gram.y" |
1216 |
{ error_verbose = 1; } |
{ error_verbose = 1; } |
1217 |
break; |
break; |
1218 |
|
|
1219 |
case 11: |
case 11: |
1220 |
#line 176 "parse-gram.y" |
#line 177 "parse-gram.y" |
1221 |
{ expected_conflicts = yyvsp[0].integer; } |
{ expected_conflicts = yyvsp[0].integer; } |
1222 |
break; |
break; |
1223 |
|
|
1224 |
case 12: |
case 12: |
1225 |
#line 177 "parse-gram.y" |
#line 178 "parse-gram.y" |
1226 |
{ spec_file_prefix = yyvsp[0].string; } |
{ spec_file_prefix = yyvsp[0].string; } |
1227 |
break; |
break; |
1228 |
|
|
1229 |
case 13: |
case 13: |
1230 |
#line 178 "parse-gram.y" |
#line 179 "parse-gram.y" |
1231 |
{ locations_flag = 1; } |
{ locations_flag = 1; } |
1232 |
break; |
break; |
1233 |
|
|
1234 |
case 14: |
case 14: |
1235 |
#line 179 "parse-gram.y" |
#line 180 "parse-gram.y" |
1236 |
{ spec_name_prefix = yyvsp[0].string; } |
{ spec_name_prefix = yyvsp[0].string; } |
1237 |
break; |
break; |
1238 |
|
|
1239 |
case 15: |
case 15: |
1240 |
#line 180 "parse-gram.y" |
#line 181 "parse-gram.y" |
1241 |
{ no_lines_flag = 1; } |
{ no_lines_flag = 1; } |
1242 |
break; |
break; |
1243 |
|
|
1244 |
case 16: |
case 16: |
1245 |
#line 181 "parse-gram.y" |
#line 182 "parse-gram.y" |
1246 |
{ spec_outfile = yyvsp[0].string; } |
{ spec_outfile = yyvsp[0].string; } |
1247 |
break; |
break; |
1248 |
|
|
1249 |
case 17: |
case 17: |
1250 |
#line 182 "parse-gram.y" |
#line 183 "parse-gram.y" |
1251 |
{ pure_parser = 1; } |
{ pure_parser = 1; } |
1252 |
break; |
break; |
1253 |
|
|
1254 |
case 18: |
case 18: |
1255 |
#line 183 "parse-gram.y" |
#line 184 "parse-gram.y" |
1256 |
{ skeleton = yyvsp[0].string; } |
{ skeleton = yyvsp[0].string; } |
1257 |
break; |
break; |
1258 |
|
|
1259 |
case 19: |
case 19: |
1260 |
#line 184 "parse-gram.y" |
#line 185 "parse-gram.y" |
1261 |
{ token_table_flag = 1; } |
{ token_table_flag = 1; } |
1262 |
break; |
break; |
1263 |
|
|
1264 |
case 20: |
case 20: |
1265 |
#line 185 "parse-gram.y" |
#line 186 "parse-gram.y" |
1266 |
{ report_flag = 1; } |
{ report_flag = 1; } |
1267 |
break; |
break; |
1268 |
|
|
1269 |
case 21: |
case 21: |
1270 |
#line 186 "parse-gram.y" |
#line 187 "parse-gram.y" |
1271 |
{ yacc_flag = 1; } |
{ yacc_flag = 1; } |
1272 |
break; |
break; |
1273 |
|
|
1274 |
case 24: |
case 24: |
1275 |
#line 193 "parse-gram.y" |
#line 194 "parse-gram.y" |
1276 |
{ |
{ |
1277 |
grammar_start_symbol_set (yyvsp[0].symbol, yylsp[0]); |
grammar_start_symbol_set (yyvsp[0].symbol, yylsp[0]); |
1278 |
} |
} |
1279 |
break; |
break; |
1280 |
|
|
1281 |
case 25: |
case 25: |
1282 |
#line 197 "parse-gram.y" |
#line 198 "parse-gram.y" |
1283 |
{ |
{ |
1284 |
typed = 1; |
typed = 1; |
1285 |
MUSCLE_INSERT_INT ("stype_line", yylsp[0].first_line); |
MUSCLE_INSERT_INT ("stype_line", yylsp[0].first_line); |
1288 |
break; |
break; |
1289 |
|
|
1290 |
case 26: |
case 26: |
1291 |
#line 205 "parse-gram.y" |
#line 206 "parse-gram.y" |
1292 |
{ current_class = nterm_sym; } |
{ current_class = nterm_sym; } |
1293 |
break; |
break; |
1294 |
|
|
1295 |
case 27: |
case 27: |
1296 |
#line 206 "parse-gram.y" |
#line 207 "parse-gram.y" |
1297 |
{ |
{ |
1298 |
current_class = unknown_sym; |
current_class = unknown_sym; |
1299 |
current_type = NULL; |
current_type = NULL; |
1301 |
break; |
break; |
1302 |
|
|
1303 |
case 28: |
case 28: |
1304 |
#line 210 "parse-gram.y" |
#line 211 "parse-gram.y" |
1305 |
{ current_class = token_sym; } |
{ current_class = token_sym; } |
1306 |
break; |
break; |
1307 |
|
|
1308 |
case 29: |
case 29: |
1309 |
#line 211 "parse-gram.y" |
#line 212 "parse-gram.y" |
1310 |
{ |
{ |
1311 |
current_class = unknown_sym; |
current_class = unknown_sym; |
1312 |
current_type = NULL; |
current_type = NULL; |
1314 |
break; |
break; |
1315 |
|
|
1316 |
case 30: |
case 30: |
1317 |
#line 216 "parse-gram.y" |
#line 217 "parse-gram.y" |
1318 |
{ |
{ |
1319 |
symbol_list *list; |
symbol_list_t *list; |
1320 |
for (list = yyvsp[0].list; list; list = list->next) |
for (list = yyvsp[0].list; list; list = list->next) |
1321 |
symbol_type_set (list->sym, list->location, yyvsp[-1].string); |
symbol_type_set (list->sym, list->location, yyvsp[-1].string); |
1322 |
LIST_FREE (symbol_list, yyvsp[0].list); |
LIST_FREE (symbol_list_t, yyvsp[0].list); |
1323 |
} |
} |
1324 |
break; |
break; |
1325 |
|
|
1326 |
case 31: |
case 31: |
1327 |
#line 226 "parse-gram.y" |
#line 227 "parse-gram.y" |
1328 |
{ |
{ |
1329 |
symbol_list *list; |
symbol_list_t *list; |
1330 |
++current_prec; |
++current_prec; |
1331 |
for (list = yyvsp[0].list; list; list = list->next) |
for (list = yyvsp[0].list; list; list = list->next) |
1332 |
{ |
{ |
1333 |
symbol_type_set (list->sym, list->location, current_type); |
symbol_type_set (list->sym, list->location, current_type); |
1334 |
symbol_precedence_set (list->sym, list->location, current_prec, yyvsp[-2].assoc); |
symbol_precedence_set (list->sym, list->location, current_prec, yyvsp[-2].assoc); |
1335 |
} |
} |
1336 |
LIST_FREE (symbol_list, yyvsp[0].list); |
LIST_FREE (symbol_list_t, yyvsp[0].list); |
1337 |
current_type = NULL; |
current_type = NULL; |
1338 |
} |
} |
1339 |
break; |
break; |
1340 |
|
|
1341 |
case 32: |
case 32: |
1342 |
#line 240 "parse-gram.y" |
#line 241 "parse-gram.y" |
1343 |
{ yyval.assoc = left_assoc; } |
{ yyval.assoc = left_assoc; } |
1344 |
break; |
break; |
1345 |
|
|
1346 |
case 33: |
case 33: |
1347 |
#line 241 "parse-gram.y" |
#line 242 "parse-gram.y" |
1348 |
{ yyval.assoc = right_assoc; } |
{ yyval.assoc = right_assoc; } |
1349 |
break; |
break; |
1350 |
|
|
1351 |
case 34: |
case 34: |
1352 |
#line 242 "parse-gram.y" |
#line 243 "parse-gram.y" |
1353 |
{ yyval.assoc = non_assoc; } |
{ yyval.assoc = non_assoc; } |
1354 |
break; |
break; |
1355 |
|
|
1356 |
case 35: |
case 35: |
1357 |
#line 246 "parse-gram.y" |
#line 247 "parse-gram.y" |
1358 |
{ current_type = NULL;} |
{ current_type = NULL;} |
1359 |
break; |
break; |
1360 |
|
|
1361 |
case 36: |
case 36: |
1362 |
#line 247 "parse-gram.y" |
#line 248 "parse-gram.y" |
1363 |
{ current_type = yyvsp[0].string; } |
{ current_type = yyvsp[0].string; } |
1364 |
break; |
break; |
1365 |
|
|
1366 |
case 37: |
case 37: |
1367 |
#line 253 "parse-gram.y" |
#line 254 "parse-gram.y" |
1368 |
{ yyval.list = symbol_list_new (yyvsp[0].symbol, yylsp[0]); } |
{ yyval.list = symbol_list_new (yyvsp[0].symbol, yylsp[0]); } |
1369 |
break; |
break; |
1370 |
|
|
1371 |
case 38: |
case 38: |
1372 |
#line 254 "parse-gram.y" |
#line 255 "parse-gram.y" |
1373 |
{ yyval.list = symbol_list_prepend (yyvsp[-1].list, yyvsp[0].symbol, yylsp[0]); } |
{ yyval.list = symbol_list_prepend (yyvsp[-1].list, yyvsp[0].symbol, yylsp[0]); } |
1374 |
break; |
break; |
1375 |
|
|
1376 |
case 39: |
case 39: |
1377 |
#line 260 "parse-gram.y" |
#line 261 "parse-gram.y" |
1378 |
{ |
{ |
1379 |
current_type = yyvsp[0].string; |
current_type = yyvsp[0].string; |
1380 |
} |
} |
1381 |
break; |
break; |
1382 |
|
|
1383 |
case 40: |
case 40: |
1384 |
#line 264 "parse-gram.y" |
#line 265 "parse-gram.y" |
1385 |
{ |
{ |
1386 |
symbol_class_set (yyvsp[0].symbol, current_class); |
symbol_class_set (yyvsp[0].symbol, current_class); |
1387 |
symbol_type_set (yyvsp[0].symbol, yylsp[0], current_type); |
symbol_type_set (yyvsp[0].symbol, yylsp[0], current_type); |
1389 |
break; |
break; |
1390 |
|
|
1391 |
case 41: |
case 41: |
1392 |
#line 269 "parse-gram.y" |
#line 270 "parse-gram.y" |
1393 |
{ |
{ |
1394 |
symbol_class_set (yyvsp[-1].symbol, current_class); |
symbol_class_set (yyvsp[-1].symbol, current_class); |
1395 |
symbol_type_set (yyvsp[-1].symbol, yylsp[-1], current_type); |
symbol_type_set (yyvsp[-1].symbol, yylsp[-1], current_type); |
1398 |
break; |
break; |
1399 |
|
|
1400 |
case 42: |
case 42: |
1401 |
#line 275 "parse-gram.y" |
#line 276 "parse-gram.y" |
1402 |
{ |
{ |
1403 |
symbol_class_set (yyvsp[-1].symbol, current_class); |
symbol_class_set (yyvsp[-1].symbol, current_class); |
1404 |
symbol_type_set (yyvsp[-1].symbol, yylsp[-1], current_type); |
symbol_type_set (yyvsp[-1].symbol, yylsp[-1], current_type); |
1407 |
break; |
break; |
1408 |
|
|
1409 |
case 43: |
case 43: |
1410 |
#line 281 "parse-gram.y" |
#line 282 "parse-gram.y" |
1411 |
{ |
{ |
1412 |
symbol_class_set (yyvsp[-2].symbol, current_class); |
symbol_class_set (yyvsp[-2].symbol, current_class); |
1413 |
symbol_type_set (yyvsp[-2].symbol, yylsp[-2], current_type); |
symbol_type_set (yyvsp[-2].symbol, yylsp[-2], current_type); |
1417 |
break; |
break; |
1418 |
|
|
1419 |
case 44: |
case 44: |
1420 |
#line 292 "parse-gram.y" |
#line 293 "parse-gram.y" |
1421 |
{;} |
{;} |
1422 |
break; |
break; |
1423 |
|
|
1424 |
case 45: |
case 45: |
1425 |
#line 294 "parse-gram.y" |
#line 295 "parse-gram.y" |
1426 |
{;} |
{;} |
1427 |
break; |
break; |
1428 |
|
|
1429 |
case 50: |
case 50: |
1430 |
#line 316 "parse-gram.y" |
#line 317 "parse-gram.y" |
1431 |
{ current_lhs = yyvsp[-1].symbol; current_lhs_location = yylsp[-1]; } |
{ current_lhs = yyvsp[-1].symbol; current_lhs_location = yylsp[-1]; } |
1432 |
break; |
break; |
1433 |
|
|
1434 |
case 51: |
case 51: |
1435 |
#line 317 "parse-gram.y" |
#line 318 "parse-gram.y" |
1436 |
{;} |
{;} |
1437 |
break; |
break; |
1438 |
|
|
1439 |
case 52: |
case 52: |
1440 |
#line 321 "parse-gram.y" |
#line 322 "parse-gram.y" |
1441 |
{ grammar_rule_end (yylsp[0]); } |
{ grammar_rule_end (yylsp[0]); } |
1442 |
break; |
break; |
1443 |
|
|
1444 |
case 53: |
case 53: |
1445 |
#line 322 "parse-gram.y" |
#line 323 "parse-gram.y" |
1446 |
{ grammar_rule_end (yylsp[0]); } |
{ grammar_rule_end (yylsp[0]); } |
1447 |
break; |
break; |
1448 |
|
|
1449 |
case 54: |
case 54: |
1450 |
#line 327 "parse-gram.y" |
#line 328 "parse-gram.y" |
1451 |
{ grammar_rule_begin (current_lhs, current_lhs_location); } |
{ grammar_rule_begin (current_lhs, current_lhs_location); } |
1452 |
break; |
break; |
1453 |
|
|
1454 |
case 55: |
case 55: |
1455 |
#line 329 "parse-gram.y" |
#line 330 "parse-gram.y" |
1456 |
{ grammar_current_rule_symbol_append (yyvsp[0].symbol, yylsp[0]); } |
{ grammar_current_rule_symbol_append (yyvsp[0].symbol, yylsp[0]); } |
1457 |
break; |
break; |
1458 |
|
|
1459 |
case 56: |
case 56: |
1460 |
#line 331 "parse-gram.y" |
#line 332 "parse-gram.y" |
1461 |
{ grammar_current_rule_action_append (yyvsp[0].string, yylsp[0]); } |
{ grammar_current_rule_action_append (yyvsp[0].string, yylsp[0]); } |
1462 |
break; |
break; |
1463 |
|
|
1464 |
case 57: |
case 57: |
1465 |
#line 333 "parse-gram.y" |
#line 334 "parse-gram.y" |
1466 |
{ grammar_current_rule_prec_set (yyvsp[0].symbol); } |
{ grammar_current_rule_prec_set (yyvsp[0].symbol); } |
1467 |
break; |
break; |
1468 |
|
|
1469 |
case 58: |
case 58: |
1470 |
#line 337 "parse-gram.y" |
#line 338 "parse-gram.y" |
1471 |
{ yyval.symbol = yyvsp[0].symbol; } |
{ yyval.symbol = yyvsp[0].symbol; } |
1472 |
break; |
break; |
1473 |
|
|
1474 |
case 59: |
case 59: |
1475 |
#line 338 "parse-gram.y" |
#line 339 "parse-gram.y" |
1476 |
{ yyval.symbol = yyvsp[0].symbol; } |
{ yyval.symbol = yyvsp[0].symbol; } |
1477 |
break; |
break; |
1478 |
|
|
1479 |
case 60: |
case 60: |
1480 |
#line 339 "parse-gram.y" |
#line 340 "parse-gram.y" |
1481 |
{ yyval.symbol = getsym (yyvsp[0].string, yylsp[0]); } |
{ yyval.symbol = getsym (yyvsp[0].string, yylsp[0]); } |
1482 |
break; |
break; |
1483 |
|
|
1484 |
case 61: |
case 61: |
1485 |
#line 344 "parse-gram.y" |
#line 345 "parse-gram.y" |
1486 |
{ yyval.string = yyvsp[0].string; } |
{ yyval.string = yyvsp[0].string; } |
1487 |
break; |
break; |
1488 |
|
|
1489 |
case 62: |
case 62: |
1490 |
#line 350 "parse-gram.y" |
#line 351 "parse-gram.y" |
1491 |
{ |
{ |
1492 |
yyval.symbol = getsym (yyvsp[0].string, yylsp[0]); |
yyval.symbol = getsym (yyvsp[0].string, yylsp[0]); |
1493 |
symbol_class_set (yyval.symbol, token_sym); |
symbol_class_set (yyval.symbol, token_sym); |
1495 |
break; |
break; |
1496 |
|
|
1497 |
case 63: |
case 63: |
1498 |
#line 359 "parse-gram.y" |
#line 360 "parse-gram.y" |
1499 |
{ |
{ |
1500 |
yyval.string = yyvsp[0].string + 1; |
yyval.string = yyvsp[0].string + 1; |
1501 |
yyval.string[strlen (yyval.string) - 1] = '\0'; |
yyval.string[strlen (yyval.string) - 1] = '\0'; |
1503 |
break; |
break; |
1504 |
|
|
1505 |
case 64: |
case 64: |
1506 |
#line 367 "parse-gram.y" |
#line 368 "parse-gram.y" |
1507 |
{ |
{ |
1508 |
yyval.string = xstrdup (""); |
yyval.string = xstrdup (""); |
1509 |
} |
} |
1510 |
break; |
break; |
1511 |
|
|
1512 |
case 65: |
case 65: |
1513 |
#line 371 "parse-gram.y" |
#line 372 "parse-gram.y" |
1514 |
{ |
{ |
1515 |
yyval.string = yyvsp[0].string; |
yyval.string = yyvsp[0].string; |
1516 |
} |
} |
1520 |
} |
} |
1521 |
|
|
1522 |
/* Line 1012 of /usr/local/share/bison/bison.simple. */ |
/* Line 1012 of /usr/local/share/bison/bison.simple. */ |
1523 |
#line 1523 "parse-gram.c" |
#line 1524 "parse-gram.c" |
1524 |
|
|
1525 |
yyvsp -= yylen; |
yyvsp -= yylen; |
1526 |
yyssp -= yylen; |
yyssp -= yylen; |
1741 |
return yyresult; |
return yyresult; |
1742 |
} |
} |
1743 |
|
|
1744 |
#line 380 "parse-gram.y" |
#line 381 "parse-gram.y" |
1745 |
|
|
1746 |
/*------------------------------------------------------------------. |
/*------------------------------------------------------------------. |
1747 |
| When debugging the parser, display tokens' locations and values. | |
| When debugging the parser, display tokens' locations and values. | |