mirror of
https://git.savannah.gnu.org/git/bison.git
synced 2026-03-18 16:53:02 +00:00
(output_skeleton): Use get_errno instead of errno.
This commit is contained in:
98
src/output.c
98
src/output.c
@@ -21,18 +21,22 @@
|
|||||||
|
|
||||||
|
|
||||||
#include "system.h"
|
#include "system.h"
|
||||||
#include "quotearg.h"
|
|
||||||
#include "error.h"
|
#include <error.h>
|
||||||
#include "subpipe.h"
|
#include <get-errno.h>
|
||||||
#include "getargs.h"
|
#include <quotearg.h>
|
||||||
#include "files.h"
|
#include <subpipe.h>
|
||||||
#include "gram.h"
|
#include <timevar.h>
|
||||||
|
|
||||||
#include "complain.h"
|
#include "complain.h"
|
||||||
|
#include "files.h"
|
||||||
|
#include "getargs.h"
|
||||||
|
#include "gram.h"
|
||||||
|
#include "muscle_tab.h"
|
||||||
#include "output.h"
|
#include "output.h"
|
||||||
#include "reader.h"
|
#include "reader.h"
|
||||||
#include "symtab.h"
|
#include "symtab.h"
|
||||||
#include "tables.h"
|
#include "tables.h"
|
||||||
#include "muscle_tab.h"
|
|
||||||
|
|
||||||
/* From src/scan-skel.l. */
|
/* From src/scan-skel.l. */
|
||||||
void scan_skel (FILE *);
|
void scan_skel (FILE *);
|
||||||
@@ -100,11 +104,11 @@ Name (const char *name, \
|
|||||||
GENERATE_MUSCLE_INSERT_TABLE(muscle_insert_unsigned_int_table, unsigned int)
|
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_int_table, int)
|
||||||
GENERATE_MUSCLE_INSERT_TABLE(muscle_insert_short_table, short)
|
GENERATE_MUSCLE_INSERT_TABLE(muscle_insert_short_table, short)
|
||||||
GENERATE_MUSCLE_INSERT_TABLE(muscle_insert_base_table, base_t)
|
GENERATE_MUSCLE_INSERT_TABLE(muscle_insert_base_table, base_number)
|
||||||
GENERATE_MUSCLE_INSERT_TABLE(muscle_insert_rule_number_table, rule_number_t)
|
GENERATE_MUSCLE_INSERT_TABLE(muscle_insert_rule_number_table, rule_number)
|
||||||
GENERATE_MUSCLE_INSERT_TABLE(muscle_insert_symbol_number_table, symbol_number_t)
|
GENERATE_MUSCLE_INSERT_TABLE(muscle_insert_symbol_number_table, symbol_number)
|
||||||
GENERATE_MUSCLE_INSERT_TABLE(muscle_insert_item_number_table, item_number_t)
|
GENERATE_MUSCLE_INSERT_TABLE(muscle_insert_item_number_table, item_number)
|
||||||
GENERATE_MUSCLE_INSERT_TABLE(muscle_insert_state_number_table, state_number_t)
|
GENERATE_MUSCLE_INSERT_TABLE(muscle_insert_state_number_table, state_number)
|
||||||
|
|
||||||
|
|
||||||
/*----------------------------------------------------------------------.
|
/*----------------------------------------------------------------------.
|
||||||
@@ -162,9 +166,9 @@ prepare_symbols (void)
|
|||||||
symbols[i]->tag);
|
symbols[i]->tag);
|
||||||
/* Width of the next token, including the two quotes, the comma
|
/* Width of the next token, including the two quotes, the comma
|
||||||
and the space. */
|
and the space. */
|
||||||
int strsize = strlen (cp) + 2;
|
int width = strlen (cp) + 2;
|
||||||
|
|
||||||
if (j + strsize > 75)
|
if (j + width > 75)
|
||||||
{
|
{
|
||||||
obstack_sgrow (&format_obstack, "\n ");
|
obstack_sgrow (&format_obstack, "\n ");
|
||||||
j = 2;
|
j = 2;
|
||||||
@@ -172,7 +176,7 @@ prepare_symbols (void)
|
|||||||
|
|
||||||
MUSCLE_OBSTACK_SGROW (&format_obstack, cp);
|
MUSCLE_OBSTACK_SGROW (&format_obstack, cp);
|
||||||
obstack_sgrow (&format_obstack, ", ");
|
obstack_sgrow (&format_obstack, ", ");
|
||||||
j += strsize;
|
j += width;
|
||||||
}
|
}
|
||||||
/* Add a NULL entry to list of tokens (well, 0, as NULL might not be
|
/* Add a NULL entry to list of tokens (well, 0, as NULL might not be
|
||||||
defined). */
|
defined). */
|
||||||
@@ -204,19 +208,19 @@ prepare_symbols (void)
|
|||||||
static void
|
static void
|
||||||
prepare_rules (void)
|
prepare_rules (void)
|
||||||
{
|
{
|
||||||
rule_number_t r;
|
rule_number r;
|
||||||
unsigned int i = 0;
|
unsigned int i = 0;
|
||||||
item_number_t *rhs = XMALLOC (item_number_t, nritems);
|
item_number *rhs = XMALLOC (item_number, nritems);
|
||||||
unsigned int *prhs = XMALLOC (unsigned int, nrules);
|
unsigned int *prhs = XMALLOC (unsigned int, nrules);
|
||||||
unsigned int *rline = XMALLOC (unsigned int, nrules);
|
unsigned int *rline = XMALLOC (unsigned int, nrules);
|
||||||
symbol_number_t *r1 = XMALLOC (symbol_number_t, nrules);
|
symbol_number *r1 = XMALLOC (symbol_number, nrules);
|
||||||
unsigned int *r2 = XMALLOC (unsigned int, nrules);
|
unsigned int *r2 = XMALLOC (unsigned int, nrules);
|
||||||
short *dprec = XMALLOC (short, nrules);
|
short *dprec = XMALLOC (short, nrules);
|
||||||
short *merger = XMALLOC (short, nrules);
|
short *merger = XMALLOC (short, nrules);
|
||||||
|
|
||||||
for (r = 0; r < nrules; ++r)
|
for (r = 0; r < nrules; ++r)
|
||||||
{
|
{
|
||||||
item_number_t *rhsp = NULL;
|
item_number *rhsp = NULL;
|
||||||
/* Index of rule R in RHS. */
|
/* Index of rule R in RHS. */
|
||||||
prhs[r] = i;
|
prhs[r] = i;
|
||||||
/* RHS of the rule R. */
|
/* RHS of the rule R. */
|
||||||
@@ -264,9 +268,9 @@ prepare_rules (void)
|
|||||||
static void
|
static void
|
||||||
prepare_states (void)
|
prepare_states (void)
|
||||||
{
|
{
|
||||||
state_number_t i;
|
state_number i;
|
||||||
symbol_number_t *values =
|
symbol_number *values =
|
||||||
(symbol_number_t *) alloca (sizeof (symbol_number_t) * nstates);
|
(symbol_number *) alloca (sizeof (symbol_number) * nstates);
|
||||||
for (i = 0; i < nstates; ++i)
|
for (i = 0; i < nstates; ++i)
|
||||||
values[i] = states[i]->accessing_symbol;
|
values[i] = states[i]->accessing_symbol;
|
||||||
muscle_insert_symbol_number_table ("stos", values,
|
muscle_insert_symbol_number_table ("stos", values,
|
||||||
@@ -286,7 +290,7 @@ prepare_states (void)
|
|||||||
static void
|
static void
|
||||||
user_actions_output (FILE *out)
|
user_actions_output (FILE *out)
|
||||||
{
|
{
|
||||||
rule_number_t r;
|
rule_number r;
|
||||||
|
|
||||||
fputs ("m4_define([b4_actions], \n[[", out);
|
fputs ("m4_define([b4_actions], \n[[", out);
|
||||||
for (r = 0; r < nrules; ++r)
|
for (r = 0; r < nrules; ++r)
|
||||||
@@ -340,8 +344,8 @@ token_definitions_output (FILE *out)
|
|||||||
fputs ("m4_define([b4_tokens], \n[", out);
|
fputs ("m4_define([b4_tokens], \n[", out);
|
||||||
for (i = 0; i < ntokens; ++i)
|
for (i = 0; i < ntokens; ++i)
|
||||||
{
|
{
|
||||||
symbol_t *symbol = symbols[i];
|
symbol *sym = symbols[i];
|
||||||
int number = symbol->user_token_number;
|
int number = sym->user_token_number;
|
||||||
|
|
||||||
/* At this stage, if there are literal aliases, they are part of
|
/* At this stage, if there are literal aliases, they are part of
|
||||||
SYMBOLS, so we should not find symbols which are the aliases
|
SYMBOLS, so we should not find symbols which are the aliases
|
||||||
@@ -350,27 +354,27 @@ token_definitions_output (FILE *out)
|
|||||||
abort ();
|
abort ();
|
||||||
|
|
||||||
/* Skip error token. */
|
/* Skip error token. */
|
||||||
if (symbol == errtoken)
|
if (sym == errtoken)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
/* If this string has an alias, then it is necessarily the alias
|
/* If this string has an alias, then it is necessarily the alias
|
||||||
which is to be output. */
|
which is to be output. */
|
||||||
if (symbol->alias)
|
if (sym->alias)
|
||||||
symbol = symbol->alias;
|
sym = sym->alias;
|
||||||
|
|
||||||
/* Don't output literal chars or strings (when defined only as a
|
/* Don't output literal chars or strings (when defined only as a
|
||||||
string). Note that must be done after the alias resolution:
|
string). Note that must be done after the alias resolution:
|
||||||
think about `%token 'f' "f"'. */
|
think about `%token 'f' "f"'. */
|
||||||
if (symbol->tag[0] == '\'' || symbol->tag[0] == '\"')
|
if (sym->tag[0] == '\'' || sym->tag[0] == '\"')
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
/* Don't #define nonliteral tokens whose names contain periods
|
/* Don't #define nonliteral tokens whose names contain periods
|
||||||
or '$' (as does the default value of the EOF token). */
|
or '$' (as does the default value of the EOF token). */
|
||||||
if (strchr (symbol->tag, '.') || strchr (symbol->tag, '$'))
|
if (strchr (sym->tag, '.') || strchr (sym->tag, '$'))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
fprintf (out, "%s[[[%s]], [%d]]",
|
fprintf (out, "%s[[[%s]], [%d]]",
|
||||||
first ? "" : ",\n", symbol->tag, number);
|
first ? "" : ",\n", sym->tag, number);
|
||||||
|
|
||||||
first = 0;
|
first = 0;
|
||||||
}
|
}
|
||||||
@@ -392,20 +396,20 @@ symbol_destructors_output (FILE *out)
|
|||||||
for (i = 0; i < nsyms; ++i)
|
for (i = 0; i < nsyms; ++i)
|
||||||
if (symbols[i]->destructor)
|
if (symbols[i]->destructor)
|
||||||
{
|
{
|
||||||
symbol_t *symbol = symbols[i];
|
symbol *sym = symbols[i];
|
||||||
|
|
||||||
/* Filename, lineno,
|
/* Filename, lineno,
|
||||||
Symbol-name, Symbol-number,
|
Symbol-name, Symbol-number,
|
||||||
destructor, typename. */
|
destructor, typename. */
|
||||||
fprintf (out, "%s[",
|
fprintf (out, "%s[",
|
||||||
first ? "" : ",\n");
|
first ? "" : ",\n");
|
||||||
escaped_file_name_output (out, symbol->destructor_location.start.file);
|
escaped_file_name_output (out, sym->destructor_location.start.file);
|
||||||
fprintf (out, ", [[%d]], [[%s]], [[%d]], [[%s]], [[%s]]]",
|
fprintf (out, ", [[%d]], [[%s]], [[%d]], [[%s]], [[%s]]]",
|
||||||
symbol->destructor_location.start.line,
|
sym->destructor_location.start.line,
|
||||||
symbol->tag,
|
sym->tag,
|
||||||
symbol->number,
|
sym->number,
|
||||||
symbol->destructor,
|
sym->destructor,
|
||||||
symbol->type_name);
|
sym->type_name);
|
||||||
|
|
||||||
first = 0;
|
first = 0;
|
||||||
}
|
}
|
||||||
@@ -427,20 +431,20 @@ symbol_printers_output (FILE *out)
|
|||||||
for (i = 0; i < nsyms; ++i)
|
for (i = 0; i < nsyms; ++i)
|
||||||
if (symbols[i]->destructor)
|
if (symbols[i]->destructor)
|
||||||
{
|
{
|
||||||
symbol_t *symbol = symbols[i];
|
symbol *sym = symbols[i];
|
||||||
|
|
||||||
/* Filename, lineno,
|
/* Filename, lineno,
|
||||||
Symbol-name, Symbol-number,
|
Symbol-name, Symbol-number,
|
||||||
printer, typename. */
|
printer, typename. */
|
||||||
fprintf (out, "%s[",
|
fprintf (out, "%s[",
|
||||||
first ? "" : ",\n");
|
first ? "" : ",\n");
|
||||||
escaped_file_name_output (out, symbol->printer_location.start.file);
|
escaped_file_name_output (out, sym->printer_location.start.file);
|
||||||
fprintf (out, ", [[%d]], [[%s]], [[%d]], [[%s]], [[%s]]]",
|
fprintf (out, ", [[%d]], [[%s]], [[%d]], [[%s]], [[%s]]]",
|
||||||
symbol->printer_location.start.line,
|
sym->printer_location.start.line,
|
||||||
symbol->tag,
|
sym->tag,
|
||||||
symbol->number,
|
sym->number,
|
||||||
symbol->printer,
|
sym->printer,
|
||||||
symbol->type_name);
|
sym->type_name);
|
||||||
|
|
||||||
first = 0;
|
first = 0;
|
||||||
}
|
}
|
||||||
@@ -551,7 +555,7 @@ output_skeleton (void)
|
|||||||
|
|
||||||
out = fdopen (filter_fd[0], "w");
|
out = fdopen (filter_fd[0], "w");
|
||||||
if (! out)
|
if (! out)
|
||||||
error (EXIT_FAILURE, errno, "fdopen");
|
error (EXIT_FAILURE, get_errno (), "fdopen");
|
||||||
|
|
||||||
/* Output the definitions of all the muscles. */
|
/* Output the definitions of all the muscles. */
|
||||||
fputs ("m4_init()\n", out);
|
fputs ("m4_init()\n", out);
|
||||||
@@ -572,7 +576,7 @@ output_skeleton (void)
|
|||||||
timevar_push (TV_M4);
|
timevar_push (TV_M4);
|
||||||
in = fdopen (filter_fd[1], "r");
|
in = fdopen (filter_fd[1], "r");
|
||||||
if (! in)
|
if (! in)
|
||||||
error (EXIT_FAILURE, errno, "fdopen");
|
error (EXIT_FAILURE, get_errno (), "fdopen");
|
||||||
scan_skel (in);
|
scan_skel (in);
|
||||||
xfclose (in);
|
xfclose (in);
|
||||||
reap_subpipe (pid, m4);
|
reap_subpipe (pid, m4);
|
||||||
|
|||||||
Reference in New Issue
Block a user