X-Git-Url: https://git.saurik.com/bison.git/blobdiff_plain/95612cfa608188fc323ed3f8560cc6aea953ff32..2b5ff972bf1e77f1b174345ce0e9500d639c326b:/src/output.c diff --git a/src/output.c b/src/output.c index 177e6c05..e20ac599 100644 --- a/src/output.c +++ b/src/output.c @@ -1,4 +1,4 @@ -/* Output the generated parsing program for bison, +/* Output the generated parsing program for Bison. Copyright (C) 1984, 1986, 1989, 1992, 2000, 2001, 2002 Free Software Foundation, Inc. @@ -229,13 +229,14 @@ prepare_rules (void) /* Separator in RHS. */ rhs[i++] = -1; /* Line where rule was defined. */ - rline[r] = rules[r].location.first_line; + rline[r] = rules[r].location.start.line; /* Dynamic precedence (GLR). */ dprec[r] = rules[r].dprec; /* Merger-function index (GLR). */ merger[r] = rules[r].merger; } - assert (i == nritems); + if (i != nritems) + abort (); muscle_insert_item_number_table ("rhs", rhs, ritem[0], 1, nritems); muscle_insert_unsigned_int_table ("prhs", prhs, 0, 0, nrules); @@ -294,8 +295,8 @@ user_actions_output (FILE *out) fprintf (out, " case %d:\n", r + 1); fprintf (out, "]b4_syncline([[%d]], ", - rules[r].action_location.first_line); - escaped_file_name_output (out, rules[r].action_location.file); + rules[r].action_location.start.line); + escaped_file_name_output (out, rules[r].action_location.start.file); fprintf (out, ")[\n"); fprintf (out, " %s\n break;\n\n", rules[r].action); @@ -345,7 +346,8 @@ token_definitions_output (FILE *out) /* At this stage, if there are literal aliases, they are part of SYMBOLS, so we should not find symbols which are the aliases here. */ - assert (number != USER_NUMBER_ALIAS); + if (number == USER_NUMBER_ALIAS) + abort (); /* Skip error token. */ if (symbol == errtoken) @@ -397,9 +399,9 @@ symbol_destructors_output (FILE *out) destructor, typename. */ fprintf (out, "%s[", first ? "" : ",\n"); - escaped_file_name_output (out, symbol->destructor_location.file); + escaped_file_name_output (out, symbol->destructor_location.start.file); fprintf (out, ", [[%d]], [[%s]], [[%d]], [[%s]], [[%s]]]", - symbol->destructor_location.first_line, + symbol->destructor_location.start.line, symbol->tag, symbol->number, symbol->destructor, @@ -432,9 +434,9 @@ symbol_printers_output (FILE *out) printer, typename. */ fprintf (out, "%s[", first ? "" : ",\n"); - escaped_file_name_output (out, symbol->printer_location.file); + escaped_file_name_output (out, symbol->printer_location.start.file); fprintf (out, ", [[%d]], [[%s]], [[%d]], [[%s]], [[%s]]]", - symbol->printer_location.first_line, + symbol->printer_location.start.line, symbol->tag, symbol->number, symbol->printer, @@ -526,10 +528,7 @@ output_skeleton (void) strcpy (full_path, pkgdatadir); full_path[pkgdatadirlen] = '/'; strcpy (full_path + pkgdatadirlen + 1, m4sugar); - in = fopen (full_path, "r"); - if (! in) - error (EXIT_FAILURE, errno, "%s", full_path); - xfclose (in); + xfclose (xfopen (full_path, "r")); strcpy (full_path + pkgdatadirlen + 1, skeleton); /* Create an m4 subprocess connected to us via two pipes. */ @@ -591,8 +590,7 @@ prepare (void) MUSCLE_INSERT_INT ("pure", pure_parser); MUSCLE_INSERT_INT ("synclines_flag", !no_lines_flag); - /* FIXME: This is wrong: the muscles should decide whether they hold - a copy or not, but the situation is too obscure currently. */ + /* File names. */ MUSCLE_INSERT_STRING ("prefix", spec_name_prefix ? spec_name_prefix : "yy"); /* User Code. */