mirror of
https://git.savannah.gnu.org/git/bison.git
synced 2026-03-09 12:23:04 +00:00
* data/bison.c++: Catch up with bison.simple:
2002-05-24 Paul Hilfinger <Hilfinger@CS.Berkeley.EDU> and Paul Eggert <eggert@twinsun.com>: `error' handing. 2002-05-26 Akim Demaille <akim@epita.fr>: stos_, token_number_, and popping traces.
This commit is contained in:
20
ChangeLog
20
ChangeLog
@@ -1,13 +1,21 @@
|
||||
2002-05-28 Akim Demaille <akim@epita.fr>
|
||||
|
||||
* data/bison.c++: Catch up with bison.simple:
|
||||
2002-05-24 Paul Hilfinger <Hilfinger@CS.Berkeley.EDU>
|
||||
and Paul Eggert <eggert@twinsun.com>: `error' handing.
|
||||
2002-05-26 Akim Demaille <akim@epita.fr>: stos_, token_number_,
|
||||
and popping traces.
|
||||
|
||||
2002-05-27 Paul Hilfinger <Hilfinger@CS.Berkeley.EDU>
|
||||
|
||||
* src/output.c (output_skeleton): Put an explicit path in front of
|
||||
the skeleton file name, rather than relying on the -I directory,
|
||||
to partially alleviate effects of having a skeleton file lying around
|
||||
in the current directory.
|
||||
|
||||
|
||||
2002-05-27 Paul Hilfinger <Hilfinger@CS.Berkeley.EDU>
|
||||
|
||||
* src/conflicts.c (log_resolution): Correct typo:
|
||||
* src/conflicts.c (log_resolution): Correct typo:
|
||||
obstack_printf should be obstack_fgrow1.
|
||||
|
||||
2002-05-26 Akim Demaille <akim@epita.fr>
|
||||
@@ -75,7 +83,7 @@
|
||||
|
||||
2002-05-24 Paul Hilfinger <Hilfinger@CS.Berkeley.EDU>
|
||||
and Paul Eggert <eggert@twinsun.com>
|
||||
|
||||
|
||||
* data/bison.simple (yyparse): Correct error handling to conform to
|
||||
POSIX and yacc. Specifically, after syntax error is discovered,
|
||||
do not reduce further before shifting the error token.
|
||||
@@ -88,15 +96,15 @@
|
||||
* data/bison.simple (yyr1): Don't use yy_token_number_type as element
|
||||
type; it isn't always big enough, since it doesn't necessarily
|
||||
include non-terminals.
|
||||
(yytranslate): Expand definition of yy_token_number_type, so that
|
||||
(yytranslate): Expand definition of yy_token_number_type, so that
|
||||
the latter can be removed.
|
||||
(yy_token_number_type): Remove, only one use.
|
||||
* data/bison.c++ (r1_): Parallel change to yyr1 in bison.simple---
|
||||
don't use TokenNumberType as element type.
|
||||
|
||||
|
||||
* tests/regression.at: Modify expected output to agree with change
|
||||
to yyr1 and yytranslate.
|
||||
|
||||
|
||||
2002-05-13 Florian Krohm <florian@edamail.fishkill.ibm.com>
|
||||
|
||||
* src/reader.c (parse_action): Use copy_character instead of
|
||||
|
||||
103
data/bison.c++
103
data/bison.c++
@@ -272,6 +272,8 @@ namespace yy
|
||||
static const RhsNumberType rhs_[[]];
|
||||
static const b4_uint_type(b4_prhs_max) prhs_[[]];
|
||||
static const b4_uint_type(b4_rline_max) rline_[[]];
|
||||
static const b4_uint_type(b4_stos_max) stos_[[]];
|
||||
static const short token_number_[[]];
|
||||
#endif
|
||||
|
||||
/* Even more tables. */
|
||||
@@ -567,47 +569,62 @@ yy::b4_name::parse ()
|
||||
token. */
|
||||
|
||||
errstatus = 3;
|
||||
goto yyerrhandle;
|
||||
|
||||
/* Pop the current state because it cannot handle the error token. */
|
||||
yyerrdefault:
|
||||
yyerrpop:
|
||||
if (!state_stack_.height ())
|
||||
goto yyabortlab;
|
||||
state_ = (state_stack_.pop (), state_stack_[[0]]);
|
||||
semantic_stack_.pop ();
|
||||
location_stack_.pop ();;
|
||||
for (;;)
|
||||
{
|
||||
n_ = pact_[[state_]];
|
||||
if (n_ != flag_)
|
||||
{
|
||||
n_ += terror_;
|
||||
if (0 <= n_ && n_ <= last_ && check_[[n_]] == terror_)
|
||||
{
|
||||
n_ = table_[[n_]];
|
||||
if (0 < n_)
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/* Pop the current state because it cannot handle the error token. */
|
||||
if (!state_stack_.height ())
|
||||
goto yyabortlab;
|
||||
|
||||
#if YYDEBUG
|
||||
if (debug_)
|
||||
{
|
||||
YYFPRINTF (stderr, "Error: state stack now");
|
||||
for (StateStack::ConstIterator i = state_stack_.begin ();
|
||||
i != state_stack_.end (); ++i)
|
||||
YYFPRINTF (stderr, " %d", *i);
|
||||
YYFPRINTF (stderr, "\n");
|
||||
}
|
||||
if (debug_)
|
||||
{
|
||||
if (stos_[[state_]] < ntokens_)
|
||||
{
|
||||
YYFPRINTF (stderr, "Error: popping token %d (%s",
|
||||
token_number_[[stos_[state_]]],
|
||||
name_[[stos_[state_]]]);
|
||||
# ifdef YYPRINT
|
||||
YYPRINT (stderr, token_number_[[stos_[state_]]],
|
||||
semantic_stack_.top ());
|
||||
# endif
|
||||
YYFPRINTF (stderr, ")\n");
|
||||
}
|
||||
else
|
||||
{
|
||||
YYFPRINTF (stderr, "Error: popping nonterminal (%s)\n",
|
||||
name_[[stos_[state_]]]);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
yyerrhandle:
|
||||
n_ = pact_[[state_]];
|
||||
if (n_ == flag_)
|
||||
goto yyerrdefault;
|
||||
state_ = (state_stack_.pop (), state_stack_[[0]]);
|
||||
semantic_stack_.pop ();
|
||||
location_stack_.pop ();;
|
||||
|
||||
n_ += terror_;
|
||||
if (n_ < 0 || n_ > last_ || check_[[n_]] != terror_)
|
||||
goto yyerrdefault;
|
||||
|
||||
n_ = table_[[n_]];
|
||||
if (n_ < 0)
|
||||
{
|
||||
if (n_ == flag_)
|
||||
goto yyerrpop;
|
||||
n_ = -n_;
|
||||
goto yyreduce;
|
||||
#if YYDEBUG
|
||||
if (debug_)
|
||||
{
|
||||
YYFPRINTF (stderr, "Error: state stack now");
|
||||
for (StateStack::ConstIterator i = state_stack_.begin ();
|
||||
i != state_stack_.end (); ++i)
|
||||
YYFPRINTF (stderr, " %d", *i);
|
||||
YYFPRINTF (stderr, "\n");
|
||||
}
|
||||
#endif
|
||||
}
|
||||
else if (!n_)
|
||||
goto yyerrpop;
|
||||
|
||||
if (n_ == final_)
|
||||
goto yyacceptlab;
|
||||
@@ -686,6 +703,24 @@ yy::b4_name::check_[[]] =
|
||||
b4_check
|
||||
};
|
||||
|
||||
#if YYDEBUG
|
||||
/* STOS_[[STATE-NUM]] -- The (internal number of the) accessing
|
||||
symbol of state STATE-NUM. */
|
||||
const b4_uint_type(b4_stos_max)
|
||||
yy::b4_name::stos_[[]] =
|
||||
{
|
||||
b4_stos
|
||||
};
|
||||
|
||||
/* TOKEN_NUMBER_[[YYLEX-NUM]] -- Internal token number corresponding
|
||||
to YYLEX-NUM. */
|
||||
const short
|
||||
yy::b4_name::token_number_[[]] =
|
||||
{
|
||||
b4_toknum
|
||||
};
|
||||
#endif
|
||||
|
||||
/* YYR1[[YYN]] -- Symbol number of symbol that rule YYN derives. */
|
||||
const b4_uint_type(b4_r1_max)
|
||||
yy::b4_name::r1_[[]] =
|
||||
|
||||
@@ -371,7 +371,8 @@ static const char *const yytname[[]] =
|
||||
};
|
||||
#endif
|
||||
|
||||
/* YYTOKNUM[[YYN]] -- Index in YYTNAME corresponding to YYLEX. */
|
||||
/* YYTOKNUM[[YYLEX-NUM]] -- Internal token number corresponding to
|
||||
token YYLEX-NUM. */
|
||||
static const short yytoknum[[]] =
|
||||
{
|
||||
b4_toknum
|
||||
|
||||
Reference in New Issue
Block a user