mirror of
https://git.savannah.gnu.org/git/bison.git
synced 2026-03-13 14:23:04 +00:00
Actually handle the yytable zero value correctly this time.
* data/glr.c, data/lalr1.cc, data/lalr1.java, data/yacc.c: Don't
mention zero values in the YYTABLE comments.
* data/glr.c (yytable_value_is_error): Don't check for zero
value.
* data/lalr1.cc (yy_table_value_is_error_): Likewise.
* data/yacc.c (yytable_value_is_error): Likewise.
* data/lalr1.java (yy_table_value_is_error_): Likewise.
(yysyntax_error): Fix typo in code: use yytable_ not yycheck_.
* src/tables.h: In header comments, explain why it's useless to
check for a zero value in yytable.
(cherry picked from commit aa0cb40d61)
Conflicts:
data/bison.m4
data/lalr1.java
This commit is contained in:
14
src/tables.h
14
src/tables.h
@@ -48,7 +48,7 @@
|
||||
YYFINAL = the state number of the termination state.
|
||||
|
||||
YYTABLE = a vector filled with portions for different uses, found
|
||||
via YYPACT and YYPGOTO.
|
||||
via YYPACT and YYPGOTO, described below.
|
||||
|
||||
YYLAST ( = high) the number of the last element of YYTABLE, i.e.,
|
||||
sizeof (YYTABLE) - 1.
|
||||
@@ -87,7 +87,7 @@
|
||||
|
||||
If the value is negative, it is minus a rule number to reduce by.
|
||||
|
||||
If the value is zero or YYTABLE_NINF, it's a syntax error.
|
||||
If the value is YYTABLE_NINF, it's a syntax error.
|
||||
|
||||
YYPGOTO[I] = the index in YYTABLE of the portion describing what to
|
||||
do after reducing a rule that derives variable I + NTOKENS. This
|
||||
@@ -99,6 +99,16 @@
|
||||
YYCHECK[YYPGOTO[I] + S] != S), then the default state (that is,
|
||||
YYDEFGOTO[I]) should be used instead of YYTABLE. Otherwise,
|
||||
YYTABLE[YYPGOTO[I] + S] is the state to go to even if YYPGOTO[I] < 0.
|
||||
|
||||
When the above YYPACT, YYPGOTO, and YYCHECK tests determine that a
|
||||
value from YYTABLE should be used, that value is never zero, so it is
|
||||
useless to check for zero. When those tests indicate that the value
|
||||
from YYDEFACT or YYDEFGOTO should be used instead, the value from
|
||||
YYTABLE *might* be zero, which, as a consequence of the way in which
|
||||
the tables are constructed, also happens to indicate that YYDEFACT or
|
||||
YYDEFGOTO should be used. However, the YYTABLE value cannot be
|
||||
trusted when the YYDEFACT or YYDEFGOTO value should be used. In
|
||||
summary, forget about zero values in YYTABLE.
|
||||
*/
|
||||
|
||||
extern int nvectors;
|
||||
|
||||
Reference in New Issue
Block a user