mirror of
https://git.savannah.gnu.org/git/bison.git
synced 2026-03-09 12:23:04 +00:00
style: rename user_token_number as code
This should have been done in 3.6, but I wanted to avoid introducing conflicts into Vincent's work on counterexamples. It turns out it's completely orthogonal. * data/README.md, data/skeletons/bison.m4, data/skeletons/c++.m4, * data/skeletons/c.m4, data/skeletons/glr.c, data/skeletons/java.m4, * data/skeletons/lalr1.d, data/skeletons/lalr1.java, * data/skeletons/variant.hh, data/skeletons/yacc.c, src/conflicts.c, * src/derives.c, src/gram.c, src/gram.h, src/output.c, * src/parse-gram.c, src/parse-gram.y, src/print-xml.c, src/print.c, * src/reader.c, src/symtab.c, src/symtab.h, tests/input.at, * tests/types.at: s/user_token_number/code/g. Plus minor changes.
This commit is contained in:
@@ -710,13 +710,13 @@ rule_conflicts_print (void)
|
||||
complain (&r->location, complaint,
|
||||
_("shift/reduce conflicts for rule %d:"
|
||||
" %d found, %d expected"),
|
||||
r->user_number, sr, expected_sr);
|
||||
r->code, sr, expected_sr);
|
||||
int rr = count_rule_rr_conflicts (r);
|
||||
if (rr != expected_rr && (rr != 0 || expected_rr != -1))
|
||||
complain (&r->location, complaint,
|
||||
_("reduce/reduce conflicts for rule %d:"
|
||||
" %d found, %d expected"),
|
||||
r->user_number, rr, expected_rr);
|
||||
r->code, rr, expected_rr);
|
||||
}
|
||||
}
|
||||
if (warning_is_enabled (Wcounterexample))
|
||||
|
||||
@@ -47,7 +47,7 @@ print_derives (void)
|
||||
fprintf (stderr, " %s derives\n", symbols[i]->tag);
|
||||
for (rule **rp = derives[i - ntokens]; *rp; ++rp)
|
||||
{
|
||||
fprintf (stderr, " %3d ", (*rp)->user_number);
|
||||
fprintf (stderr, " %3d ", (*rp)->code);
|
||||
rule_rhs_print (*rp, stderr);
|
||||
fprintf (stderr, "\n");
|
||||
}
|
||||
|
||||
@@ -44,7 +44,7 @@ int nvars = 0;
|
||||
|
||||
symbol_number *token_translations = NULL;
|
||||
|
||||
int max_user_token_number = 256;
|
||||
int max_code = 256;
|
||||
|
||||
int required_version = 0;
|
||||
|
||||
|
||||
@@ -173,7 +173,7 @@ typedef struct
|
||||
{
|
||||
/* The number of the rule in the source. It is usually the index in
|
||||
RULES too, except if there are useless rules. */
|
||||
rule_number user_number;
|
||||
rule_number code;
|
||||
|
||||
/* The index in RULES. Usually the rule number in the source,
|
||||
except if some rules are useless. */
|
||||
@@ -262,7 +262,7 @@ extern symbol **symbols;
|
||||
by the user's yylex routine, it yields the internal token number
|
||||
used by the parser and throughout bison. */
|
||||
extern symbol_number *token_translations;
|
||||
extern int max_user_token_number;
|
||||
extern int max_code;
|
||||
|
||||
|
||||
|
||||
|
||||
10
src/output.c
10
src/output.c
@@ -274,12 +274,12 @@ prepare_symbols (void)
|
||||
MUSCLE_INSERT_INT ("tokens_number", ntokens);
|
||||
MUSCLE_INSERT_INT ("nterms_number", nvars);
|
||||
MUSCLE_INSERT_INT ("symbols_number", nsyms);
|
||||
MUSCLE_INSERT_INT ("user_token_number_max", max_user_token_number);
|
||||
MUSCLE_INSERT_INT ("code_max", max_code);
|
||||
|
||||
muscle_insert_symbol_number_table ("translate",
|
||||
token_translations,
|
||||
token_translations[0],
|
||||
1, max_user_token_number + 1);
|
||||
1, max_code + 1);
|
||||
|
||||
/* tname -- token names. */
|
||||
prepare_symbol_names ("tname");
|
||||
@@ -309,7 +309,7 @@ prepare_symbols (void)
|
||||
{
|
||||
int *values = xnmalloc (ntokens, sizeof *values);
|
||||
for (int i = 0; i < ntokens; ++i)
|
||||
values[i] = symbols[i]->content->user_token_number;
|
||||
values[i] = symbols[i]->content->code;
|
||||
muscle_insert_int_table ("toknum", values,
|
||||
values[0], 1, ntokens);
|
||||
free (values);
|
||||
@@ -565,8 +565,8 @@ prepare_symbol_definitions (void)
|
||||
SET_KEY ("tag");
|
||||
MUSCLE_INSERT_STRING (key, symbol_tag (sym));
|
||||
|
||||
SET_KEY ("user_number");
|
||||
MUSCLE_INSERT_INT (key, sym->content->user_token_number);
|
||||
SET_KEY ("code");
|
||||
MUSCLE_INSERT_INT (key, sym->content->code);
|
||||
|
||||
SET_KEY ("is_token");
|
||||
MUSCLE_INSERT_INT (key, i < ntokens);
|
||||
|
||||
@@ -2367,7 +2367,7 @@ yyreduce:
|
||||
(yyval.token_decl) = (yyvsp[-2].id);
|
||||
symbol_class_set ((yyvsp[-2].id), current_class, (yylsp[-2]), true);
|
||||
if (0 <= (yyvsp[-1].yykind_82))
|
||||
symbol_user_token_number_set ((yyvsp[-2].id), (yyvsp[-1].yykind_82), (yylsp[-1]));
|
||||
symbol_code_set ((yyvsp[-2].id), (yyvsp[-1].yykind_82), (yylsp[-1]));
|
||||
if ((yyvsp[0].alias))
|
||||
symbol_make_alias ((yyvsp[-2].id), (yyvsp[0].alias), (yylsp[0]));
|
||||
}
|
||||
@@ -2424,7 +2424,7 @@ yyreduce:
|
||||
(yyval.token_decl_for_prec) = (yyvsp[-1].id);
|
||||
symbol_class_set ((yyvsp[-1].id), token_sym, (yylsp[-1]), false);
|
||||
if (0 <= (yyvsp[0].yykind_82))
|
||||
symbol_user_token_number_set ((yyvsp[-1].id), (yyvsp[0].yykind_82), (yylsp[0]));
|
||||
symbol_code_set ((yyvsp[-1].id), (yyvsp[0].yykind_82), (yylsp[0]));
|
||||
}
|
||||
break;
|
||||
|
||||
@@ -2573,7 +2573,7 @@ yyreduce:
|
||||
}
|
||||
(yyval.id) = symbol_get (char_name ((yyvsp[0].CHAR)), (yylsp[0]));
|
||||
symbol_class_set ((yyval.id), token_sym, (yylsp[0]), false);
|
||||
symbol_user_token_number_set ((yyval.id), (yyvsp[0].CHAR), (yylsp[0]));
|
||||
symbol_code_set ((yyval.id), (yyvsp[0].CHAR), (yylsp[0]));
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
@@ -531,7 +531,7 @@ token_decl:
|
||||
$$ = $id;
|
||||
symbol_class_set ($id, current_class, @id, true);
|
||||
if (0 <= $num)
|
||||
symbol_user_token_number_set ($id, $num, @num);
|
||||
symbol_code_set ($id, $num, @num);
|
||||
if ($alias)
|
||||
symbol_make_alias ($id, $alias, @alias);
|
||||
}
|
||||
@@ -593,7 +593,7 @@ token_decl_for_prec:
|
||||
$$ = $id;
|
||||
symbol_class_set ($id, token_sym, @id, false);
|
||||
if (0 <= $num)
|
||||
symbol_user_token_number_set ($id, $num, @num);
|
||||
symbol_code_set ($id, $num, @num);
|
||||
}
|
||||
| string_as_id
|
||||
;
|
||||
@@ -763,7 +763,7 @@ id:
|
||||
}
|
||||
$$ = symbol_get (char_name ($1), @1);
|
||||
symbol_class_set ($$, token_sym, @1, false);
|
||||
symbol_user_token_number_set ($$, $1, @1);
|
||||
symbol_code_set ($$, $1, @1);
|
||||
}
|
||||
;
|
||||
|
||||
|
||||
@@ -379,7 +379,7 @@ print_grammar (FILE *out, int level)
|
||||
|
||||
/* Terminals */
|
||||
xml_puts (out, level + 1, "<terminals>");
|
||||
for (symbol_number i = 0; i < max_user_token_number + 1; i++)
|
||||
for (int i = 0; i < max_code + 1; i++)
|
||||
if (token_translations[i] != undeftoken->content->number)
|
||||
{
|
||||
char const *tag = symbols[token_translations[i]]->tag;
|
||||
|
||||
@@ -362,7 +362,7 @@ print_terminal_symbols (FILE *out)
|
||||
{
|
||||
/* TERMINAL (type #) : rule #s terminal is on RHS */
|
||||
fprintf (out, "%s\n\n", _("Terminals, with rules where they appear"));
|
||||
for (symbol_number i = 0; i < max_user_token_number + 1; i++)
|
||||
for (int i = 0; i < max_code + 1; ++i)
|
||||
if (token_translations[i] != undeftoken->content->number)
|
||||
{
|
||||
const char *tag = symbols[token_translations[i]]->tag;
|
||||
@@ -445,7 +445,7 @@ print_results (void)
|
||||
reduce_output (out);
|
||||
grammar_rules_partial_print (out,
|
||||
_("Rules useless in parser due to conflicts"),
|
||||
rule_useless_in_parser_p);
|
||||
rule_useless_in_parser_p);
|
||||
conflicts_output (out);
|
||||
|
||||
grammar_rules_print (out);
|
||||
|
||||
@@ -634,7 +634,7 @@ packgram (void)
|
||||
if (lhs != grammar)
|
||||
grammar_rule_check_and_complete (lhs);
|
||||
|
||||
rules[ruleno].user_number = ruleno;
|
||||
rules[ruleno].code = ruleno;
|
||||
rules[ruleno].number = ruleno;
|
||||
rules[ruleno].lhs = lhs->content.sym->content;
|
||||
rules[ruleno].rhs = ritem + itemno;
|
||||
@@ -782,7 +782,7 @@ check_and_convert_grammar (void)
|
||||
endtoken->content->class = token_sym;
|
||||
endtoken->content->number = 0;
|
||||
/* Value specified by POSIX. */
|
||||
endtoken->content->user_token_number = 0;
|
||||
endtoken->content->code = 0;
|
||||
{
|
||||
symbol *alias = symbol_get ("$end", empty_loc);
|
||||
symbol_class_set (alias, token_sym, empty_loc, false);
|
||||
|
||||
75
src/symtab.c
75
src/symtab.c
@@ -33,6 +33,13 @@
|
||||
#include "gram.h"
|
||||
#include "intprops.h"
|
||||
|
||||
/** Undefined token code. */
|
||||
#define CODE_UNDEFINED (-1)
|
||||
|
||||
/* Undefined symbol number. */
|
||||
#define NUMBER_UNDEFINED (-1)
|
||||
|
||||
|
||||
static struct hash_table *symbol_table = NULL;
|
||||
static struct hash_table *semantic_type_table = NULL;
|
||||
|
||||
@@ -99,7 +106,7 @@ sym_content_new (symbol *s)
|
||||
res->prec_loc = empty_loc;
|
||||
res->prec = 0;
|
||||
res->assoc = undef_assoc;
|
||||
res->user_token_number = USER_NUMBER_UNDEFINED;
|
||||
res->code = CODE_UNDEFINED;
|
||||
|
||||
res->class = unknown_sym;
|
||||
res->status = undeclared;
|
||||
@@ -571,24 +578,24 @@ symbol_class_set (symbol *sym, symbol_class class, location loc, bool declaring)
|
||||
`------------------------------------------------*/
|
||||
|
||||
void
|
||||
symbol_user_token_number_set (symbol *sym, int user_token_number, location loc)
|
||||
symbol_code_set (symbol *sym, int code, location loc)
|
||||
{
|
||||
int *user_token_numberp = &sym->content->user_token_number;
|
||||
int *codep = &sym->content->code;
|
||||
if (sym->content->class != token_sym)
|
||||
complain (&loc, complaint,
|
||||
_("nonterminals cannot be given a token code"));
|
||||
else if (*user_token_numberp != USER_NUMBER_UNDEFINED
|
||||
&& *user_token_numberp != user_token_number)
|
||||
else if (*codep != CODE_UNDEFINED
|
||||
&& *codep != code)
|
||||
complain (&loc, complaint, _("redefining code of token %s"),
|
||||
sym->tag);
|
||||
else if (user_token_number == INT_MAX)
|
||||
else if (code == INT_MAX)
|
||||
complain (&loc, complaint, _("code of token %s too large"),
|
||||
sym->tag);
|
||||
else
|
||||
{
|
||||
*user_token_numberp = user_token_number;
|
||||
*codep = code;
|
||||
/* User defined $end token? */
|
||||
if (user_token_number == 0 && !endtoken)
|
||||
if (code == 0 && !endtoken)
|
||||
{
|
||||
endtoken = sym->content->symbol;
|
||||
/* It is always mapped to 0, so it was already counted in
|
||||
@@ -735,7 +742,7 @@ symbol_pack (symbol *sym)
|
||||
}
|
||||
|
||||
static void
|
||||
complain_user_token_number_redeclared (int num, symbol *first, symbol *second)
|
||||
complain_code_redeclared (int num, symbol *first, symbol *second)
|
||||
{
|
||||
symbols_sort (&first, &second);
|
||||
complain (&second->location, complaint,
|
||||
@@ -758,13 +765,13 @@ symbol_translation (symbol *sym)
|
||||
&& !sym->is_alias)
|
||||
{
|
||||
/* A token which translation has already been set?*/
|
||||
if (token_translations[sym->content->user_token_number]
|
||||
if (token_translations[sym->content->code]
|
||||
!= undeftoken->content->number)
|
||||
complain_user_token_number_redeclared
|
||||
(sym->content->user_token_number,
|
||||
symbols[token_translations[sym->content->user_token_number]], sym);
|
||||
complain_code_redeclared
|
||||
(sym->content->code,
|
||||
symbols[token_translations[sym->content->code]], sym);
|
||||
else
|
||||
token_translations[sym->content->user_token_number]
|
||||
token_translations[sym->content->code]
|
||||
= sym->content->number;
|
||||
}
|
||||
}
|
||||
@@ -1040,53 +1047,53 @@ symbols_check_defined (void)
|
||||
static void
|
||||
symbols_token_translations_init (void)
|
||||
{
|
||||
bool num_256_available_p = true;
|
||||
bool code_256_available_p = true;
|
||||
|
||||
/* Find the highest token code, and whether 256, the POSIX preferred
|
||||
token code for the error token, is used. */
|
||||
max_user_token_number = 0;
|
||||
max_code = 0;
|
||||
for (int i = 0; i < ntokens; ++i)
|
||||
{
|
||||
sym_content *sym = symbols[i]->content;
|
||||
if (sym->user_token_number != USER_NUMBER_UNDEFINED)
|
||||
if (sym->code != CODE_UNDEFINED)
|
||||
{
|
||||
if (sym->user_token_number > max_user_token_number)
|
||||
max_user_token_number = sym->user_token_number;
|
||||
if (sym->user_token_number == 256)
|
||||
num_256_available_p = false;
|
||||
if (sym->code > max_code)
|
||||
max_code = sym->code;
|
||||
if (sym->code == 256)
|
||||
code_256_available_p = false;
|
||||
}
|
||||
}
|
||||
|
||||
/* If 256 is not used, assign it to error, to follow POSIX. */
|
||||
if (num_256_available_p
|
||||
&& errtoken->content->user_token_number == USER_NUMBER_UNDEFINED)
|
||||
errtoken->content->user_token_number = 256;
|
||||
if (code_256_available_p
|
||||
&& errtoken->content->code == CODE_UNDEFINED)
|
||||
errtoken->content->code = 256;
|
||||
|
||||
/* Set the missing user numbers. */
|
||||
if (max_user_token_number < 256)
|
||||
max_user_token_number = 256;
|
||||
/* Set the missing codes. */
|
||||
if (max_code < 256)
|
||||
max_code = 256;
|
||||
|
||||
for (int i = 0; i < ntokens; ++i)
|
||||
{
|
||||
sym_content *sym = symbols[i]->content;
|
||||
if (sym->user_token_number == USER_NUMBER_UNDEFINED)
|
||||
if (sym->code == CODE_UNDEFINED)
|
||||
{
|
||||
IGNORE_TYPE_LIMITS_BEGIN
|
||||
if (INT_ADD_WRAPV (max_user_token_number, 1, &max_user_token_number))
|
||||
if (INT_ADD_WRAPV (max_code, 1, &max_code))
|
||||
complain (NULL, fatal, _("token number too large"));
|
||||
IGNORE_TYPE_LIMITS_END
|
||||
sym->user_token_number = max_user_token_number;
|
||||
sym->code = max_code;
|
||||
}
|
||||
if (sym->user_token_number > max_user_token_number)
|
||||
max_user_token_number = sym->user_token_number;
|
||||
if (sym->code > max_code)
|
||||
max_code = sym->code;
|
||||
}
|
||||
|
||||
token_translations = xnmalloc (max_user_token_number + 1,
|
||||
token_translations = xnmalloc (max_code + 1,
|
||||
sizeof *token_translations);
|
||||
|
||||
/* Initialize all entries for literal tokens to the internal token
|
||||
number for $undefined, which represents all invalid inputs. */
|
||||
for (int i = 0; i < max_user_token_number + 1; ++i)
|
||||
for (int i = 0; i < max_code + 1; ++i)
|
||||
token_translations[i] = undeftoken->content->number;
|
||||
for (int i = 0; symbols_sorted[i]; ++i)
|
||||
symbol_translation (symbols_sorted[i]);
|
||||
|
||||
16
src/symtab.h
16
src/symtab.h
@@ -149,21 +149,13 @@ struct sym_content
|
||||
int prec;
|
||||
assoc assoc;
|
||||
|
||||
/** The user specified token number.
|
||||
|
||||
E.g., %token FOO 42.*/
|
||||
int user_token_number;
|
||||
/** Token code, possibly specified by the user (%token FOO 42). */
|
||||
int code;
|
||||
|
||||
symbol_class class;
|
||||
declaration_status status;
|
||||
};
|
||||
|
||||
/** Undefined user number. */
|
||||
# define USER_NUMBER_UNDEFINED -1
|
||||
|
||||
/* Undefined internal token number. */
|
||||
# define NUMBER_UNDEFINED (-1)
|
||||
|
||||
/** Fetch (or create) the symbol associated to KEY. */
|
||||
symbol *symbol_from_uniqstr (const uniqstr key, location loc);
|
||||
|
||||
@@ -235,8 +227,8 @@ void symbol_precedence_set (symbol *sym, int prec, assoc a, location loc);
|
||||
void symbol_class_set (symbol *sym, symbol_class class, location loc,
|
||||
bool declaring);
|
||||
|
||||
/** Set the \c user_token_number associated with \c sym. */
|
||||
void symbol_user_token_number_set (symbol *sym, int user_number, location loc);
|
||||
/** Set the \c code associated with \c sym. */
|
||||
void symbol_code_set (symbol *sym, int code, location loc);
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user