/[bison]/bison/src/parse-gram.c
ViewVC logotype

Diff of /bison/src/parse-gram.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.10 by akim, Mon Jun 17 07:04:24 2002 UTC revision 1.11 by akim, Mon Jun 17 07:04:49 2002 UTC
# Line 68  Line 68 
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"
# Line 222  int current_prec = 0; Line 223  int current_prec = 0;
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
# Line 252  typedef struct yyltype Line 253  typedef struct yyltype
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    
# Line 447  static const signed char yyrhs[] = Line 448  static const signed char yyrhs[] =
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    
# Line 1183  yyreduce: Line 1184  yyreduce:
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]);
# Line 1191  yyreduce: Line 1192  yyreduce:
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);
# Line 1287  yyreduce: Line 1288  yyreduce:
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;
# Line 1300  yyreduce: Line 1301  yyreduce:
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;
# Line 1313  yyreduce: Line 1314  yyreduce:
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);
# Line 1388  yyreduce: Line 1389  yyreduce:
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);
# Line 1397  yyreduce: Line 1398  yyreduce:
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);
# Line 1406  yyreduce: Line 1407  yyreduce:
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);
# Line 1416  yyreduce: Line 1417  yyreduce:
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);
# Line 1494  yyreduce: Line 1495  yyreduce:
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';
# Line 1502  yyreduce: Line 1503  yyreduce:
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      }      }
# Line 1519  yyreduce: Line 1520  yyreduce:
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;
# Line 1740  yyreturn: Line 1741  yyreturn:
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.  |

Legend:
Removed from v.1.10  
changed lines
  Added in v.1.11

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26