mirror of
https://git.savannah.gnu.org/git/bison.git
synced 2026-03-11 21:33:04 +00:00
More information about the symbols.
* src/output.c (type_names_output): Document all the symbols, including those that don't have a type-name. (symbol_definitions_output): Define "is_token" and "has_type_name". * data/lalr1.cc (b4_type_action_): Skip symbols that have an empty type-name, now that they are defined too in b4_type_names.
This commit is contained in:
36
src/output.c
36
src/output.c
@@ -320,28 +320,17 @@ static void
|
||||
type_names_output (FILE *out)
|
||||
{
|
||||
int i;
|
||||
const char *isep = "";
|
||||
symbol **syms = symbols_by_type_name ();
|
||||
fputs ("m4_define([b4_type_names],\n[", out);
|
||||
for (i = 0; i < nsyms; )
|
||||
if (syms[i]->type_name)
|
||||
{
|
||||
int j;
|
||||
const char *jsep = "";
|
||||
fprintf (out, "%s[", isep);
|
||||
isep = ",\n";
|
||||
for (j = i; j < nsyms; ++j)
|
||||
{
|
||||
if (syms[i]->type_name != syms[j]->type_name)
|
||||
break;
|
||||
fprintf (out, "%s%d", jsep, syms[j]->number);
|
||||
jsep = ", ";
|
||||
}
|
||||
fputs ("]", out);
|
||||
i = j;
|
||||
}
|
||||
else
|
||||
++i;
|
||||
for (i = 0; i < nsyms; /* nothing */)
|
||||
{
|
||||
// The index of the first symbol of the current type-name.
|
||||
int i0 = i;
|
||||
fputs (i ? ",\n[" : "[", out);
|
||||
for (; i < nsyms && syms[i]->type_name == syms[i0]->type_name; ++i)
|
||||
fprintf (out, "%s%d", i != i0 ? ", " : "", syms[i]->number);
|
||||
fputs ("]", out);
|
||||
}
|
||||
fputs ("])\n\n", out);
|
||||
free (syms);
|
||||
}
|
||||
@@ -431,9 +420,16 @@ symbol_definitions_output (FILE *out)
|
||||
SET_KEY("user_number");
|
||||
MUSCLE_INSERT_INT (key, sym->user_token_number);
|
||||
|
||||
SET_KEY("is_token");
|
||||
MUSCLE_INSERT_INT (key,
|
||||
i < ntokens && sym != errtoken && sym != undeftoken);
|
||||
|
||||
SET_KEY("number");
|
||||
MUSCLE_INSERT_INT (key, sym->number);
|
||||
|
||||
SET_KEY("has_type_name");
|
||||
MUSCLE_INSERT_INT (key, !!sym->type_name);
|
||||
|
||||
SET_KEY("type_name");
|
||||
MUSCLE_INSERT_STRING (key, sym->type_name ? sym->type_name : "");
|
||||
|
||||
|
||||
Reference in New Issue
Block a user