diagnostics: replace "user token number" by "token code"

Yet, don't change the structure identifier to avoid introducing
conflicts in Vincent Imbimbo's PR (which, amusingly enough, is about
conflicts).

* src/symtab.c: here.
* tests/diagnostics.at, tests/input.at: Adjust.
This commit is contained in:
Akim Demaille
2020-04-12 08:39:20 +02:00
parent ecf5cb7e0e
commit a555b41990
4 changed files with 20 additions and 34 deletions

16
TODO
View File

@@ -5,6 +5,7 @@
- YYERRCODE, YYUNDEF, YYEOF - YYERRCODE, YYUNDEF, YYEOF
- i18n in Java - i18n in Java
- symbol.type_get should be kind_get, and it's not documented. - symbol.type_get should be kind_get, and it's not documented.
- token code instead of token user number etc.
** User token number, internal symbol number, external token number, etc. ** User token number, internal symbol number, external token number, etc.
There is some confusion over these terms, which is even a problem for There is some confusion over these terms, which is even a problem for
@@ -28,21 +29,6 @@ The token numbered as 0.
Therefore each time the scanner returns an (external) token number, Therefore each time the scanner returns an (external) token number,
it must be mapped to the (internal) symbol number. it must be mapped to the (internal) symbol number.
*** The code
uses "user token number" in most places.
if (sym->content->class != token_sym)
complain (&loc, complaint,
_("nonterminals cannot be given an explicit number"));
else if (*user_token_numberp != USER_NUMBER_UNDEFINED
&& *user_token_numberp != user_token_number)
complain (&loc, complaint, _("redefining user token number of %s"),
sym->tag);
else if (user_token_number == INT_MAX)
complain (&loc, complaint, _("user token number of %s too large"),
sym->tag);
*** M4 *** M4
Make it consistent with the rest (it uses "user_number" and "number"). Make it consistent with the rest (it uses "user_number" and "number").

View File

@@ -166,9 +166,9 @@ symbol_free (void *ptr)
/* If needed, swap first and second so that first has the earliest /* If needed, swap first and second so that first has the earliest
location (according to location_cmp). location (according to location_cmp).
Many symbol features (e.g., user token numbers) are not assigned Many symbol features (e.g., token codes) are not assigned during
during the parsing, but in a second step, via a traversal of the parsing, but in a second step, via a traversal of the symbol table
symbol table sorted on tag. sorted on tag.
However, error messages make more sense if we keep the first However, error messages make more sense if we keep the first
declaration first. declaration first.
@@ -576,13 +576,13 @@ symbol_user_token_number_set (symbol *sym, int user_token_number, location loc)
int *user_token_numberp = &sym->content->user_token_number; int *user_token_numberp = &sym->content->user_token_number;
if (sym->content->class != token_sym) if (sym->content->class != token_sym)
complain (&loc, complaint, complain (&loc, complaint,
_("nonterminals cannot be given an explicit number")); _("nonterminals cannot be given a token code"));
else if (*user_token_numberp != USER_NUMBER_UNDEFINED else if (*user_token_numberp != USER_NUMBER_UNDEFINED
&& *user_token_numberp != user_token_number) && *user_token_numberp != user_token_number)
complain (&loc, complaint, _("redefining user token number of %s"), complain (&loc, complaint, _("redefining code of token %s"),
sym->tag); sym->tag);
else if (user_token_number == INT_MAX) else if (user_token_number == INT_MAX)
complain (&loc, complaint, _("user token number of %s too large"), complain (&loc, complaint, _("code of token %s too large"),
sym->tag); sym->tag);
else else
{ {
@@ -739,7 +739,7 @@ complain_user_token_number_redeclared (int num, symbol *first, symbol *second)
{ {
symbols_sort (&first, &second); symbols_sort (&first, &second);
complain (&second->location, complaint, complain (&second->location, complaint,
_("user token number %d redeclaration for %s"), _("code %d reassigned to token %s"),
num, second->tag); num, second->tag);
subcomplain (&first->location, complaint, subcomplain (&first->location, complaint,
_("previous declaration for %s"), _("previous declaration for %s"),
@@ -1044,8 +1044,8 @@ symbols_token_translations_init (void)
{ {
bool num_256_available_p = true; bool num_256_available_p = true;
/* Find the highest user token number, and whether 256, the POSIX /* Find the highest token code, and whether 256, the POSIX preferred
preferred user token number for the error token, is used. */ token code for the error token, is used. */
max_user_token_number = 0; max_user_token_number = 0;
for (int i = 0; i < ntokens; ++i) for (int i = 0; i < ntokens; ++i)
{ {

View File

@@ -181,7 +181,7 @@ exp:
input.y:12.8-10: <note>note:</note> previous declaration input.y:12.8-10: <note>note:</note> previous declaration
12 | %token <note>foo</note> 123123 12 | %token <note>foo</note> 123123
| <note>^~~</note> | <note>^~~</note>
input.y:13.12-17: <error>error:</error> redefining user token number of foo input.y:13.12-17: <error>error:</error> redefining code of token foo
13 | %token foo <error>123</error> 13 | %token foo <error>123</error>
| <error>^~~~~~</error> | <error>^~~~~~</error>
input.y:14.8-10: <warning>warning:</warning> symbol foo redeclared [<warning>-Wother</warning>] input.y:14.8-10: <warning>warning:</warning> symbol foo redeclared [<warning>-Wother</warning>]

View File

@@ -269,10 +269,10 @@ AT_BISON_CHECK([-fcaret input.y], [1], [],
[[input.y:1.13-24: error: nonterminals cannot be given a string alias [[input.y:1.13-24: error: nonterminals cannot be given a string alias
1 | %nterm expr "expression"; 1 | %nterm expr "expression";
| ^~~~~~~~~~~~ | ^~~~~~~~~~~~
input.y:2.13-15: error: nonterminals cannot be given an explicit number input.y:2.13-15: error: nonterminals cannot be given a token code
2 | %nterm term 123; 2 | %nterm term 123;
| ^~~ | ^~~
input.y:3.13-15: error: nonterminals cannot be given an explicit number input.y:3.13-15: error: nonterminals cannot be given a token code
3 | %nterm fact 124 "factor"; 3 | %nterm fact 124 "factor";
| ^~~ | ^~~
input.y:3.17-24: error: nonterminals cannot be given a string alias input.y:3.17-24: error: nonterminals cannot be given a string alias
@@ -322,7 +322,7 @@ AT_BISON_CHECK([-fcaret input.y], [1], [],
input.y:1.8-12: note: previous declaration input.y:1.8-12: note: previous declaration
1 | %token error 123 1 | %token error 123
| ^~~~~ | ^~~~~
input.y:2.14-16: error: redefining user token number of error input.y:2.14-16: error: redefining code of token error
2 | %token error 124 2 | %token error 124
| ^~~ | ^~~
]]) ]])
@@ -1194,7 +1194,7 @@ AT_BISON_CHECK([-fcaret input.y], [1], [],
[[input.y:2.17-21: warning: symbol "foo" used more than once as a literal string [-Wother] [[input.y:2.17-21: warning: symbol "foo" used more than once as a literal string [-Wother]
2 | BAR 42 "foo" 2 | BAR 42 "foo"
| ^~~~~ | ^~~~~
input.y:2.10-12: error: user token number 42 redeclaration for BAR input.y:2.10-12: error: code 42 reassigned to token BAR
2 | BAR 42 "foo" 2 | BAR 42 "foo"
| ^~~ | ^~~
input.y:1.15-19: note: previous declaration for "foo" input.y:1.15-19: note: previous declaration for "foo"
@@ -1544,7 +1544,7 @@ AT_CHECK_REQUIRE(100.0, 63)
AT_SETUP([String aliases for character tokens]) AT_SETUP([String aliases for character tokens])
# Bison once thought a character token and its alias were different # Bison once thought a character token and its alias were different
# symbols with the same user token number. # symbols with the same code.
AT_BISON_OPTION_PUSHDEFS AT_BISON_OPTION_PUSHDEFS
AT_DATA_GRAMMAR([input.y], AT_DATA_GRAMMAR([input.y],
@@ -1643,9 +1643,9 @@ start: DECIMAL_1 HEXADECIMAL_2;
]]) ]])
AT_BISON_CHECK([redecl.y], [1], [], AT_BISON_CHECK([redecl.y], [1], [],
[[redecl.y:10.10-22: error: user token number 11259375 redeclaration for HEXADECIMAL_1 [[redecl.y:10.10-22: error: code 11259375 reassigned to token HEXADECIMAL_1
redecl.y:9.8-16: note: previous declaration for DECIMAL_1 redecl.y:9.8-16: note: previous declaration for DECIMAL_1
redecl.y:12.10-18: error: user token number 16702650 redeclaration for DECIMAL_2 redecl.y:12.10-18: error: code 16702650 reassigned to token DECIMAL_2
redecl.y:11.10-22: note: previous declaration for HEXADECIMAL_2 redecl.y:11.10-22: note: previous declaration for HEXADECIMAL_2
]]) ]])
@@ -1659,9 +1659,9 @@ start: TOO_LARGE_DEC TOO_LARGE_HEX
AT_BISON_CHECK([too-large.y], [1], [], AT_BISON_CHECK([too-large.y], [1], [],
[[too-large.y:9.22-42: error: integer out of range: '999999999999999999999' [[too-large.y:9.22-42: error: integer out of range: '999999999999999999999'
too-large.y:9.22-42: error: user token number of TOO_LARGE_DEC too large too-large.y:9.22-42: error: code of token TOO_LARGE_DEC too large
too-large.y:10.24-44: error: integer out of range: '0xFFFFFFFFFFFFFFFFFFF' too-large.y:10.24-44: error: integer out of range: '0xFFFFFFFFFFFFFFFFFFF'
too-large.y:10.24-44: error: user token number of TOO_LARGE_HEX too large too-large.y:10.24-44: error: code of token TOO_LARGE_HEX too large
]]) ]])
AT_BISON_OPTION_POPDEFS AT_BISON_OPTION_POPDEFS