mirror of
https://git.savannah.gnu.org/git/bison.git
synced 2026-03-09 12:23:04 +00:00
* src/output.c (prepare): Move the definition of `tokens_number',
`nterms_number', `undef_token_number', `user_token_number_max' to... (prepare_tokens): Here. (prepare_tokens): Rename as... (prepare_symbols): this. (prepare): Move the definition of `rules_number' to... (prepare_rules): here. (prepare): Move the definition of `last', `final_state_number', `states_number' to... (prepare_states): here. * data/yacc.c, data/lalr1.cc, data/glr.c: Normalize `>' into `<'.
This commit is contained in:
15
ChangeLog
15
ChangeLog
@@ -1,3 +1,18 @@
|
||||
2002-10-20 Akim Demaille <akim@epita.fr>
|
||||
|
||||
* src/output.c (prepare): Move the definition of `tokens_number',
|
||||
`nterms_number', `undef_token_number', `user_token_number_max'
|
||||
to...
|
||||
(prepare_tokens): Here.
|
||||
(prepare_tokens): Rename as...
|
||||
(prepare_symbols): this.
|
||||
(prepare): Move the definition of `rules_number' to...
|
||||
(prepare_rules): here.
|
||||
(prepare): Move the definition of `last', `final_state_number',
|
||||
`states_number' to...
|
||||
(prepare_states): here.
|
||||
* data/yacc.c, data/lalr1.cc, data/glr.c: Normalize `>' into `<'.
|
||||
|
||||
2002-10-20 Akim Demaille <akim@epita.fr>
|
||||
|
||||
* src/tables.h, src/tables.c, src/output.c: Comment changes.
|
||||
|
||||
27
data/glr.c
27
data/glr.c
@@ -231,6 +231,7 @@ static YYLTYPE yyloc_default;
|
||||
|
||||
/* YYFINAL -- State number of the termination state. */
|
||||
#define YYFINAL ]b4_final_state_number[
|
||||
/* YYLAST -- Last index in YYTABLE. */
|
||||
#define YYLAST ]b4_last[
|
||||
|
||||
/* YYNTOKENS -- Number of terminals. */
|
||||
@@ -739,7 +740,7 @@ yyLRgotoState (yyStateNum yystate, yySymbol yylhs)
|
||||
static inline bool
|
||||
yyisShiftAction (int yyaction)
|
||||
{
|
||||
return yyaction > 0;
|
||||
return 0 < yyaction;
|
||||
}
|
||||
|
||||
static inline bool
|
||||
@@ -825,14 +826,14 @@ yyexpandGLRStack (yyGLRStack* yystack)
|
||||
size_t yysize, yynewSize;
|
||||
size_t yyn;
|
||||
yysize = yystack->yynextFree - yystack->yyitems;
|
||||
if (yysize >= YYMAXDEPTH)
|
||||
if (YYMAXDEPTH <= yysize)
|
||||
yyFail (yystack, "parsing stack overflow (%d items)", yysize);
|
||||
yynewSize = 2*yysize;
|
||||
if (yynewSize > YYMAXDEPTH)
|
||||
if (YYMAXDEPTH < yynewSize)
|
||||
yynewSize = YYMAXDEPTH;
|
||||
yyinitGLRStack (&yynewStack, yynewSize);
|
||||
for (yyp0 = yystack->yyitems, yyp1 = yynewStack.yyitems, yyn = yysize;
|
||||
yyn > 0;
|
||||
0 < yyn;
|
||||
yyn -= 1, yyp0 += 1, yyp1 += 1)
|
||||
{
|
||||
*yyp1 = *yyp0;
|
||||
@@ -1024,7 +1025,7 @@ yydoAction (yyGLRStack* yystack, int yyk, yyRuleNum yyrule,
|
||||
int yyi;
|
||||
yyGLRState* yys;
|
||||
yyGLRStackItem yyrhsVals[YYMAXRHS];
|
||||
for (yyi = yynrhs-1, yys = yystack->yytops.yystates[yyk]; yyi >= 0;
|
||||
for (yyi = yynrhs-1, yys = yystack->yytops.yystates[yyk]; 0 <= yyi;
|
||||
yyi -= 1, yys = yys->yypred)
|
||||
{
|
||||
assert (yys->yypred != NULL);
|
||||
@@ -1078,7 +1079,7 @@ yyglrReduce (yyGLRStack* yystack, size_t yyk, yyRuleNum yyrule,
|
||||
YYDPRINTF ((stderr, "Reducing stack %d by rule %d (line %d),",
|
||||
yyk, yyrule - 1, yyrline[yyrule]));
|
||||
/* Print the symbols being reduced, and their result. */
|
||||
for (yyi = yyprhs[yyrule]; yyrhs[yyi] >= 0; yyi++)
|
||||
for (yyi = yyprhs[yyrule]; 0 <= yyrhs[yyi]; yyi++)
|
||||
YYFPRINTF (stderr, "%s ", yytokenName (yyrhs[yyi]));
|
||||
YYFPRINTF (stderr, " -> %s\n", yytokenName (yyr1[yyrule]));
|
||||
}
|
||||
@@ -1099,7 +1100,7 @@ yyglrReduce (yyGLRStack* yystack, size_t yyk, yyRuleNum yyrule,
|
||||
yyStateNum yynewLRState;
|
||||
|
||||
for (yys = yystack->yytops.yystates[yyk], yyn = yyrhsLength (yyrule);
|
||||
yyn > 0; yyn -= 1)
|
||||
0 < yyn; yyn -= 1)
|
||||
{
|
||||
yys = yys->yypred;
|
||||
assert (yys != NULL);
|
||||
@@ -1222,7 +1223,7 @@ yypreference (yySemanticOption* y0, yySemanticOption* y1)
|
||||
return 0;
|
||||
if (p0 < p1)
|
||||
return 3;
|
||||
if (p0 > p1)
|
||||
if (p1 < p0)
|
||||
return 2;
|
||||
return 0;
|
||||
}
|
||||
@@ -1235,7 +1236,7 @@ static YYRESULTTAG
|
||||
yyresolveStates (yyGLRState* yys, int yyn, yyGLRStack* yystack)
|
||||
{
|
||||
YYRESULTTAG yyflag;
|
||||
if (yyn > 0)
|
||||
if (0 < yyn)
|
||||
{
|
||||
assert (yys->yypred != NULL);
|
||||
yyflag = yyresolveStates (yys->yypred, yyn-1, yystack);
|
||||
@@ -1263,7 +1264,7 @@ yyresolveAction (yySemanticOption* yyopt, yyGLRStack* yystack,
|
||||
|
||||
yynrhs = yyrhsLength (yyopt->yyrule);
|
||||
YYCHK (yyresolveStates (yyopt->yystate, yynrhs, yystack));
|
||||
for (yyi = yynrhs-1, yys = yyopt->yystate; yyi >= 0;
|
||||
for (yyi = yynrhs-1, yys = yyopt->yystate; 0 <= yyi;
|
||||
yyi -= 1, yys = yys->yypred)
|
||||
{
|
||||
assert (yys->yypred != NULL);
|
||||
@@ -1294,14 +1295,14 @@ static void yyreportTree (yySemanticOption* yyx, int yyindent)
|
||||
yyGLRState* yys;
|
||||
yyGLRState* yystates[YYMAXRHS];
|
||||
|
||||
for (yyi = yynrhs, yys = yyx->yystate; yyi > 0; yyi -= 1, yys = yys->yypred)
|
||||
for (yyi = yynrhs, yys = yyx->yystate; 0 < yyi; yyi -= 1, yys = yys->yypred)
|
||||
yystates[yyi] = yys;
|
||||
if (yys == NULL)
|
||||
yystates[0] = &YYLEFTMOST_STATE;
|
||||
else
|
||||
yystates[0] = yys;
|
||||
|
||||
if (yys->yyposn+1 > yyx->yystate->yyposn)
|
||||
if (yyx->yystate->yyposn < yys->yyposn + 1)
|
||||
YYFPRINTF (stderr, "%*s%s -> <Rule %d, empty>\n",
|
||||
yyindent, "", yytokenName (yylhsNonterm (yyx->yyrule)),
|
||||
yyx->yyrule);
|
||||
@@ -1735,7 +1736,7 @@ yyparse (YYPARSE_PARAM_ARG)
|
||||
yytoken = YYEMPTY;
|
||||
yyposn += 1;
|
||||
yyglrShift (&yystack, 0, yyaction, yyposn, yylval, yyllocp);
|
||||
if (yystack.yyerrState > 0)
|
||||
if (0 < yystack.yyerrState)
|
||||
yystack.yyerrState -= 1;
|
||||
YYDPRINTF ((stderr, "Entering state %d\n",
|
||||
yystack.yytops.yystates[0]->yylrState));
|
||||
|
||||
@@ -257,6 +257,7 @@ namespace yy
|
||||
|
||||
/* Constants. */
|
||||
static const int eof_;
|
||||
/* LAST_ -- Last index in TABLE_. */
|
||||
static const int last_;
|
||||
static const int nnts_;
|
||||
static const int empty_;
|
||||
@@ -374,7 +375,7 @@ yy::b4_parser_class_name::parse ()
|
||||
}
|
||||
|
||||
n_ += ilooka_;
|
||||
if (n_ < 0 || n_ > last_ || check_[[n_]] != ilooka_)
|
||||
if (n_ < 0 || last_ < n_ || check_[[n_]] != ilooka_)
|
||||
goto yydefault;
|
||||
|
||||
/* Reduce or error. */
|
||||
@@ -442,7 +443,7 @@ yy::b4_parser_class_name::parse ()
|
||||
YYCDEBUG << "Reducing via rule " << n_ - 1
|
||||
<< " (line " << rline_[[n_]] << "), ";
|
||||
for (b4_int_type_for([b4_prhs]) i = prhs_[[n_]];
|
||||
rhs_[[i]] >= 0; ++i)
|
||||
0 <= rhs_[[i]]; ++i)
|
||||
YYCDEBUG << name_[[rhs_[i]]] << ' ';
|
||||
YYCDEBUG << "-> " << name_[[r1_[n_]]] << std::endl;
|
||||
}
|
||||
@@ -483,7 +484,7 @@ yy::b4_parser_class_name::parse ()
|
||||
/* Shift the result of the reduction. */
|
||||
n_ = r1_[[n_]];
|
||||
state_ = pgoto_[[n_ - ntokens_]] + state_stack_[[0]];
|
||||
if (state_ >= 0 && state_ <= last_ && check_[[state_]] == state_stack_[[0]])
|
||||
if (0 <= state_ && state_ <= last_ && check_[[state_]] == state_stack_[[0]])
|
||||
state_ = table_[[state_]];
|
||||
else
|
||||
state_ = defgoto_[[n_ - ntokens_]];
|
||||
|
||||
13
data/yacc.c
13
data/yacc.c
@@ -319,6 +319,7 @@ b4_location_if(
|
||||
|
||||
/* YYFINAL -- State number of the termination state. */
|
||||
#define YYFINAL b4_final_state_number
|
||||
/* YYLAST -- Last index in YYTABLE. */
|
||||
#define YYLAST b4_last
|
||||
|
||||
/* YYNTOKENS -- Number of terminals. */
|
||||
@@ -811,7 +812,7 @@ yyparse (YYPARSE_PARAM_ARG)
|
||||
yysetstate:
|
||||
*yyssp = yystate;
|
||||
|
||||
if (yyssp >= yyss + yystacksize - 1)
|
||||
if (yyss + yystacksize - 1 <= yyssp)
|
||||
{
|
||||
/* Get the current used size of the three stacks, in elements. */
|
||||
YYSIZE_T yysize = yyssp - yyss + 1;
|
||||
@@ -843,10 +844,10 @@ yyparse (YYPARSE_PARAM_ARG)
|
||||
goto yyoverflowlab;
|
||||
# else
|
||||
/* Extend the stack our own way. */
|
||||
if (yystacksize >= YYMAXDEPTH)
|
||||
if (YYMAXDEPTH <= yystacksize)
|
||||
goto yyoverflowlab;
|
||||
yystacksize *= 2;
|
||||
if (yystacksize > YYMAXDEPTH)
|
||||
if (YYMAXDEPTH < yystacksize)
|
||||
yystacksize = YYMAXDEPTH;
|
||||
|
||||
{
|
||||
@@ -872,7 +873,7 @@ yyparse (YYPARSE_PARAM_ARG)
|
||||
YYDPRINTF ((stderr, "Stack size increased to %lu\n",
|
||||
(unsigned long int) yystacksize));
|
||||
|
||||
if (yyssp >= yyss + yystacksize - 1)
|
||||
if (yyss + yystacksize - 1 <= yyssp)
|
||||
YYABORT;
|
||||
}
|
||||
|
||||
@@ -1005,7 +1006,7 @@ yyreduce:
|
||||
yyn - 1, yyrline[yyn]);
|
||||
|
||||
/* Print the symbols being reduced, and their result. */
|
||||
for (yyi = yyprhs[yyn]; yyrhs[yyi] >= 0; yyi++)
|
||||
for (yyi = yyprhs[yyn]; 0 <= yyrhs[yyi]; yyi++)
|
||||
YYFPRINTF (stderr, "%s ", yytname[yyrhs[yyi]]);
|
||||
YYFPRINTF (stderr, " -> %s\n", yytname[yyr1[yyn]]);
|
||||
}
|
||||
@@ -1126,7 +1127,7 @@ yyerrlab1:
|
||||
/* Pop the error token. */
|
||||
YYPOPSTACK;
|
||||
/* Pop the rest of the stack. */
|
||||
while (yyssp > yyss)
|
||||
while (yyss < yyssp)
|
||||
{
|
||||
YYDPRINTF ((stderr, "Error: popping "));
|
||||
YYDSYMPRINT ((stderr,
|
||||
|
||||
36
src/output.c
36
src/output.c
@@ -107,19 +107,25 @@ GENERATE_MUSCLE_INSERT_TABLE(muscle_insert_item_number_table, item_number_t)
|
||||
GENERATE_MUSCLE_INSERT_TABLE(muscle_insert_state_number_table, state_number_t)
|
||||
|
||||
|
||||
/*-----------------------------------------------------------------.
|
||||
| Prepare the muscles related to the tokens: translate, tname, and |
|
||||
/*------------------------------------------------------------------.
|
||||
| Prepare the muscles related to the symbols: translate, tname, and |
|
||||
| toknum. |
|
||||
`-----------------------------------------------------------------*/
|
||||
`------------------------------------------------------------------*/
|
||||
|
||||
static void
|
||||
prepare_tokens (void)
|
||||
prepare_symbols (void)
|
||||
{
|
||||
MUSCLE_INSERT_INT ("tokens_number", ntokens);
|
||||
MUSCLE_INSERT_INT ("nterms_number", nvars);
|
||||
MUSCLE_INSERT_INT ("undef_token_number", undeftoken->number);
|
||||
MUSCLE_INSERT_INT ("user_token_number_max", max_user_token_number);
|
||||
|
||||
muscle_insert_symbol_number_table ("translate",
|
||||
token_translations,
|
||||
token_translations[0],
|
||||
1, max_user_token_number + 1);
|
||||
|
||||
/* tname -- token names. */
|
||||
{
|
||||
int i;
|
||||
int j = 0;
|
||||
@@ -215,6 +221,8 @@ prepare_rules (void)
|
||||
muscle_insert_short_table ("dprec", dprec, 0, 0, nrules);
|
||||
muscle_insert_short_table ("merger", merger, 0, 0, nrules);
|
||||
|
||||
MUSCLE_INSERT_INT ("rules_number", nrules);
|
||||
|
||||
free (rhs);
|
||||
free (prhs);
|
||||
free (rline);
|
||||
@@ -238,6 +246,10 @@ prepare_states (void)
|
||||
values[i] = states[i]->accessing_symbol;
|
||||
muscle_insert_symbol_number_table ("stos", values,
|
||||
0, 1, nstates);
|
||||
|
||||
MUSCLE_INSERT_INT ("last", high);
|
||||
MUSCLE_INSERT_INT ("final_state_number", final_state->number);
|
||||
MUSCLE_INSERT_INT ("states_number", nstates);
|
||||
}
|
||||
|
||||
|
||||
@@ -566,20 +578,6 @@ prepare (void)
|
||||
MUSCLE_INSERT_STRING ("output_parser_name", parser_file_name);
|
||||
MUSCLE_INSERT_STRING ("output_header_name", spec_defines_file);
|
||||
|
||||
/* Symbols. */
|
||||
MUSCLE_INSERT_INT ("tokens_number", ntokens);
|
||||
MUSCLE_INSERT_INT ("nterms_number", nvars);
|
||||
MUSCLE_INSERT_INT ("undef_token_number", undeftoken->number);
|
||||
MUSCLE_INSERT_INT ("user_token_number_max", max_user_token_number);
|
||||
|
||||
/* Rules. */
|
||||
MUSCLE_INSERT_INT ("rules_number", nrules);
|
||||
|
||||
/* States. */
|
||||
MUSCLE_INSERT_INT ("last", high);
|
||||
MUSCLE_INSERT_INT ("final_state_number", final_state->number);
|
||||
MUSCLE_INSERT_INT ("states_number", nstates);
|
||||
|
||||
/* User Code. */
|
||||
obstack_1grow (&pre_prologue_obstack, 0);
|
||||
obstack_1grow (&post_prologue_obstack, 0);
|
||||
@@ -609,7 +607,7 @@ output (void)
|
||||
{
|
||||
obstack_init (&format_obstack);
|
||||
|
||||
prepare_tokens ();
|
||||
prepare_symbols ();
|
||||
prepare_rules ();
|
||||
prepare_states ();
|
||||
prepare_actions ();
|
||||
|
||||
@@ -85,8 +85,10 @@
|
||||
default (from YYDEFACT or YYDEFGOTO) should be used. Otherwise,
|
||||
YYTABLE[P+I] should be used.
|
||||
|
||||
YYFINAL = the state number of the termination state. YYFLAG = most
|
||||
negative short int. Used to flag ?? */
|
||||
YYFINAL = the state number of the termination state.
|
||||
|
||||
YYLAST ( = high) the number of the last element of YYTABLE, i.e.,
|
||||
sizeof (YYTABLE) - 1. */
|
||||
|
||||
extern int nvectors;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user