X-Git-Url: https://git.saurik.com/bison.git/blobdiff_plain/7d6bad195977b0204fc8406cac57cf5a4f1c769b..3e8d1bd05331163c8047b2ab2a4c9fc38de5f35e:/src/output.c diff --git a/src/output.c b/src/output.c index 2b6842d7..d7b6e6d1 100644 --- a/src/output.c +++ b/src/output.c @@ -1,6 +1,6 @@ /* Output the generated parsing program for Bison. - Copyright (C) 1984, 1986, 1989, 1992, 2000-2013 Free Software + Copyright (C) 1984, 1986, 1989, 1992, 2000-2015 Free Software Foundation, Inc. This file is part of Bison, the GNU Compiler Compiler. @@ -90,20 +90,19 @@ Name (char const *name, \ \ lmin = min; \ lmax = max; \ - /* Build `NAME_min' and `NAME_max' in the obstack. */ \ + /* Build 'NAME_min' and 'NAME_max' in the obstack. */ \ obstack_printf (&format_obstack, "%s_min", name); \ MUSCLE_INSERT_LONG_INT (obstack_finish0 (&format_obstack), lmin); \ obstack_printf (&format_obstack, "%s_max", name); \ MUSCLE_INSERT_LONG_INT (obstack_finish0 (&format_obstack), lmax); \ } -GENERATE_MUSCLE_INSERT_TABLE(muscle_insert_unsigned_int_table, unsigned int) -GENERATE_MUSCLE_INSERT_TABLE(muscle_insert_int_table, int) -GENERATE_MUSCLE_INSERT_TABLE(muscle_insert_base_table, base_number) -GENERATE_MUSCLE_INSERT_TABLE(muscle_insert_rule_number_table, rule_number) -GENERATE_MUSCLE_INSERT_TABLE(muscle_insert_symbol_number_table, symbol_number) -GENERATE_MUSCLE_INSERT_TABLE(muscle_insert_state_number_table, state_number) - +GENERATE_MUSCLE_INSERT_TABLE (muscle_insert_unsigned_int_table, unsigned int) +GENERATE_MUSCLE_INSERT_TABLE (muscle_insert_int_table, int) +GENERATE_MUSCLE_INSERT_TABLE (muscle_insert_base_table, base_number) +GENERATE_MUSCLE_INSERT_TABLE (muscle_insert_rule_number_table, rule_number) +GENERATE_MUSCLE_INSERT_TABLE (muscle_insert_symbol_number_table, symbol_number) +GENERATE_MUSCLE_INSERT_TABLE (muscle_insert_state_number_table, state_number) /*----------------------------------------------------------------. | Print to OUT a representation of CP quoted and escaped for M4. | @@ -227,7 +226,7 @@ prepare_rules (void) /* LHS of the rule R. */ r1[r] = rules[r].lhs->number; /* Length of rule R's RHS. */ - r2[r] = rule_rhs_length(&rules[r]); + r2[r] = rule_rhs_length (&rules[r]); /* Line where rule was defined. */ rline[r] = rules[r].location.start.line; /* Dynamic precedence (GLR). */ @@ -417,31 +416,31 @@ prepare_symbol_definitions (void) /* Whether the symbol has an identifier. */ value = symbol_id_get (sym); - SET_KEY("has_id"); + SET_KEY ("has_id"); MUSCLE_INSERT_INT (key, !!value); /* Its identifier. */ - SET_KEY("id"); + SET_KEY ("id"); MUSCLE_INSERT_STRING (key, value ? value : ""); /* Its tag. Typically for documentation purpose. */ - SET_KEY("tag"); + SET_KEY ("tag"); MUSCLE_INSERT_STRING (key, sym->tag); - SET_KEY("user_number"); + SET_KEY ("user_number"); MUSCLE_INSERT_INT (key, sym->user_token_number); - SET_KEY("is_token"); + SET_KEY ("is_token"); MUSCLE_INSERT_INT (key, i < ntokens && sym != errtoken && sym != undeftoken); - SET_KEY("number"); + SET_KEY ("number"); MUSCLE_INSERT_INT (key, sym->number); - SET_KEY("has_type"); + SET_KEY ("has_type"); MUSCLE_INSERT_INT (key, !!sym->type_name); - SET_KEY("type"); + SET_KEY ("type"); MUSCLE_INSERT_STRING (key, sym->type_name ? sym->type_name : ""); { @@ -451,18 +450,18 @@ prepare_symbol_definitions (void) /* "printer", not "%printer". */ char const *pname = code_props_type_string (j) + 1; code_props const *p = symbol_code_props_get (sym, j); - SET_KEY2("has", pname); + SET_KEY2 ("has", pname); MUSCLE_INSERT_INT (key, !!p->code); if (p->code) { - SET_KEY2(pname, "file"); + SET_KEY2 (pname, "file"); MUSCLE_INSERT_STRING (key, p->location.start.file); - SET_KEY2(pname, "line"); + SET_KEY2 (pname, "line"); MUSCLE_INSERT_INT (key, p->location.start.line); - SET_KEY(pname); + SET_KEY (pname); MUSCLE_INSERT_STRING_RAW (key, p->code); } } @@ -705,6 +704,11 @@ output (void) /* Process the selected skeleton file. */ output_skeleton (); + /* If late errors were generated, destroy the generated source + files. */ + if (complaint_status) + unlink_generated_sources (); + obstack_free (&format_obstack, NULL); }