X-Git-Url: https://git.saurik.com/bison.git/blobdiff_plain/d5eb0826afb8ede89bfe314671f2b37db55bd817..05c93b7d844e59ecaa5dec3bd6d9091f5aa5d1b0:/src/tables.h diff --git a/src/tables.h b/src/tables.h index 9b52f092..8b5c1fa4 100644 --- a/src/tables.h +++ b/src/tables.h @@ -1,5 +1,6 @@ /* Prepare the LALR and GLR parser tables. - Copyright (C) 2002, 2004, 2009 Free Software Foundation, Inc. + + Copyright (C) 2002, 2004, 2009-2012 Free Software Foundation, Inc. This file is part of Bison, the GNU Compiler Compiler. @@ -48,7 +49,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 +88,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 +100,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;