mirror of
https://git.savannah.gnu.org/git/bison.git
synced 2026-03-22 18:53:04 +00:00
Merge remote-tracking branch 'origin/maint'
* origin/maint: glr: more assertions glr: shorten scopes glr: formatting changes glr: better use of tracing macros examples: improve the output of the "variant" example variant: remove useless assertion tests: remove stray debugging traces tests: do not use grep -q build: don't require flex for ordinary builds maint: update .gitignore build: port to pre-5.8.7 perl tests: minor change to make it easier to test other skeletons uniqstr: fix assertion
This commit is contained in:
9
.gitignore
vendored
9
.gitignore
vendored
@@ -1,7 +1,14 @@
|
|||||||
|
*.eps
|
||||||
|
*.o
|
||||||
|
*.pdf
|
||||||
|
*.png
|
||||||
|
*.stamp
|
||||||
|
*~
|
||||||
|
.deps
|
||||||
|
.dirstamp
|
||||||
/*.cache
|
/*.cache
|
||||||
/*.flc
|
/*.flc
|
||||||
/*.prj
|
/*.prj
|
||||||
/*~
|
|
||||||
/.tarball-version
|
/.tarball-version
|
||||||
/.version
|
/.version
|
||||||
/ABOUT-NLS
|
/ABOUT-NLS
|
||||||
|
|||||||
3
NEWS
3
NEWS
@@ -2,6 +2,9 @@ GNU Bison NEWS
|
|||||||
|
|
||||||
* Noteworthy changes in release ?.? (????-??-??) [?]
|
* Noteworthy changes in release ?.? (????-??-??) [?]
|
||||||
|
|
||||||
|
** Bug fixes
|
||||||
|
|
||||||
|
Portability issues in the test suite.
|
||||||
|
|
||||||
* Noteworthy changes in release 3.0 (2013-07-25) [stable]
|
* Noteworthy changes in release 3.0 (2013-07-25) [stable]
|
||||||
|
|
||||||
|
|||||||
1
THANKS
1
THANKS
@@ -31,6 +31,7 @@ Cris van Pelt cris@amf03054.office.wxs.nl
|
|||||||
Csaba Raduly csaba_22@yahoo.co.uk
|
Csaba Raduly csaba_22@yahoo.co.uk
|
||||||
Dagobert Michelsen dam@baltic-online.de
|
Dagobert Michelsen dam@baltic-online.de
|
||||||
Daniel Frużyński daniel@poradnik-webmastera.com
|
Daniel Frużyński daniel@poradnik-webmastera.com
|
||||||
|
Daniel Galloway dg1751@att.com
|
||||||
Daniel Hagerty hag@gnu.org
|
Daniel Hagerty hag@gnu.org
|
||||||
David J. MacKenzie djm@gnu.org
|
David J. MacKenzie djm@gnu.org
|
||||||
David Kastrup dak@gnu.org
|
David Kastrup dak@gnu.org
|
||||||
|
|||||||
@@ -175,7 +175,10 @@ AC_SUBST([YACC_LIBRARY])
|
|||||||
# Checks for programs.
|
# Checks for programs.
|
||||||
AM_MISSING_PROG([DOT], [dot])
|
AM_MISSING_PROG([DOT], [dot])
|
||||||
AC_PROG_LEX
|
AC_PROG_LEX
|
||||||
$LEX_IS_FLEX || AC_MSG_ERROR([Flex is required])
|
$LEX_IS_FLEX || test "X$LEX" = X: || {
|
||||||
|
AC_MSG_WARN([bypassing lex because flex is required])
|
||||||
|
LEX=:
|
||||||
|
}
|
||||||
AC_PROG_YACC
|
AC_PROG_YACC
|
||||||
AC_PROG_RANLIB
|
AC_PROG_RANLIB
|
||||||
AC_PROG_GNU_M4
|
AC_PROG_GNU_M4
|
||||||
|
|||||||
23
data/glr.c
23
data/glr.c
@@ -836,12 +836,10 @@ yydestroyGLRState (char const *yymsg, yyGLRState *yys]b4_user_formals[)
|
|||||||
if (yydebug)
|
if (yydebug)
|
||||||
{
|
{
|
||||||
if (yys->yysemantics.yyfirstVal)
|
if (yys->yysemantics.yyfirstVal)
|
||||||
YYFPRINTF (stderr, "%s unresolved ", yymsg);
|
YYFPRINTF (stderr, "%s unresolved", yymsg);
|
||||||
else
|
else
|
||||||
YYFPRINTF (stderr, "%s incomplete ", yymsg);
|
YYFPRINTF (stderr, "%s incomplete", yymsg);
|
||||||
yy_symbol_print (stderr, yystos[yys->yylrState],
|
YY_SYMBOL_PRINT ("", yystos[yys->yylrState], YY_NULL, &yys->yyloc);
|
||||||
YY_NULL]b4_locuser_args([&yys->yyloc])[);
|
|
||||||
YYFPRINTF (stderr, "\n");
|
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@@ -966,6 +964,7 @@ yyaddDeferredAction (yyGLRStack* yystackp, size_t yyk, yyGLRState* yystate,
|
|||||||
{
|
{
|
||||||
yySemanticOption* yynewOption =
|
yySemanticOption* yynewOption =
|
||||||
&yynewGLRStackItem (yystackp, yyfalse)->yyoption;
|
&yynewGLRStackItem (yystackp, yyfalse)->yyoption;
|
||||||
|
YYASSERT (!yynewOption->yyisState);
|
||||||
yynewOption->yystate = yyrhs;
|
yynewOption->yystate = yyrhs;
|
||||||
yynewOption->yyrule = yyrule;
|
yynewOption->yyrule = yyrule;
|
||||||
if (yystackp->yytops.yylookaheadNeeds[yyk])
|
if (yystackp->yytops.yylookaheadNeeds[yyk])
|
||||||
@@ -1082,7 +1081,7 @@ yyexpandGLRStack (yyGLRStack* yystackp)
|
|||||||
}
|
}
|
||||||
if (yystackp->yysplitPoint != YY_NULL)
|
if (yystackp->yysplitPoint != YY_NULL)
|
||||||
yystackp->yysplitPoint = YYRELOC (yystackp->yyitems, yynewItems,
|
yystackp->yysplitPoint = YYRELOC (yystackp->yyitems, yynewItems,
|
||||||
yystackp->yysplitPoint, yystate);
|
yystackp->yysplitPoint, yystate);
|
||||||
|
|
||||||
for (yyn = 0; yyn < yystackp->yytops.yysize; yyn += 1)
|
for (yyn = 0; yyn < yystackp->yytops.yysize; yyn += 1)
|
||||||
if (yystackp->yytops.yystates[yyn] != YY_NULL)
|
if (yystackp->yytops.yystates[yyn] != YY_NULL)
|
||||||
@@ -1201,6 +1200,7 @@ yyglrShiftDefer (yyGLRStack* yystackp, size_t yyk, yyStateNum yylrState,
|
|||||||
size_t yyposn, yyGLRState* yyrhs, yyRuleNum yyrule)
|
size_t yyposn, yyGLRState* yyrhs, yyRuleNum yyrule)
|
||||||
{
|
{
|
||||||
yyGLRState* yynewState = &yynewGLRStackItem (yystackp, yytrue)->yystate;
|
yyGLRState* yynewState = &yynewGLRStackItem (yystackp, yytrue)->yystate;
|
||||||
|
YYASSERT (yynewState->yyisState);
|
||||||
|
|
||||||
yynewState->yylrState = yylrState;
|
yynewState->yylrState = yylrState;
|
||||||
yynewState->yyposn = yyposn;
|
yynewState->yyposn = yyposn;
|
||||||
@@ -1320,11 +1320,10 @@ yyglrReduce (yyGLRStack* yystackp, size_t yyk, yyRuleNum yyrule,
|
|||||||
|
|
||||||
if (yyforceEval || yystackp->yysplitPoint == YY_NULL)
|
if (yyforceEval || yystackp->yysplitPoint == YY_NULL)
|
||||||
{
|
{
|
||||||
YYRESULTTAG yyflag;
|
YYSTYPE yysval;]b4_locations_if([[
|
||||||
YYSTYPE yysval;]b4_locations_if([
|
YYLTYPE yyloc;]])[
|
||||||
YYLTYPE yyloc;])[
|
|
||||||
|
|
||||||
yyflag = yydoAction (yystackp, yyk, yyrule, &yysval]b4_locuser_args([&yyloc])[);
|
YYRESULTTAG yyflag = yydoAction (yystackp, yyk, yyrule, &yysval]b4_locuser_args([&yyloc])[);
|
||||||
if (yyflag == yyerr && yystackp->yysplitPoint != YY_NULL)
|
if (yyflag == yyerr && yystackp->yysplitPoint != YY_NULL)
|
||||||
{
|
{
|
||||||
YYDPRINTF ((stderr, "Parse on stack %lu rejected by rule #%d.\n",
|
YYDPRINTF ((stderr, "Parse on stack %lu rejected by rule #%d.\n",
|
||||||
@@ -2493,6 +2492,8 @@ yypdumpstack (yyGLRStack* yystackp)
|
|||||||
(unsigned long int) (yyp - yystackp->yyitems));
|
(unsigned long int) (yyp - yystackp->yyitems));
|
||||||
if (*(yybool *) yyp)
|
if (*(yybool *) yyp)
|
||||||
{
|
{
|
||||||
|
YYASSERT (yyp->yystate.yyisState);
|
||||||
|
YYASSERT (yyp->yyoption.yyisState);
|
||||||
YYFPRINTF (stderr, "Res: %d, LR State: %d, posn: %lu, pred: %ld",
|
YYFPRINTF (stderr, "Res: %d, LR State: %d, posn: %lu, pred: %ld",
|
||||||
yyp->yystate.yyresolved, yyp->yystate.yylrState,
|
yyp->yystate.yyresolved, yyp->yystate.yylrState,
|
||||||
(unsigned long int) yyp->yystate.yyposn,
|
(unsigned long int) yyp->yystate.yyposn,
|
||||||
@@ -2504,6 +2505,8 @@ yypdumpstack (yyGLRStack* yystackp)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
YYASSERT (!yyp->yystate.yyisState);
|
||||||
|
YYASSERT (!yyp->yyoption.yyisState);
|
||||||
YYFPRINTF (stderr, "Option. rule: %d, state: %ld, next: %ld",
|
YYFPRINTF (stderr, "Option. rule: %d, state: %ld, next: %ld",
|
||||||
yyp->yyoption.yyrule - 1,
|
yyp->yyoption.yyrule - 1,
|
||||||
(long int) YYINDEX (yyp->yyoption.yystate),
|
(long int) YYINDEX (yyp->yyoption.yystate),
|
||||||
|
|||||||
@@ -178,8 +178,7 @@ m4_define([b4_variant_define],
|
|||||||
template <typename T>
|
template <typename T>
|
||||||
void
|
void
|
||||||
move (self_type& other)
|
move (self_type& other)
|
||||||
{]b4_parse_assert_if([
|
{
|
||||||
YYASSERT (!yytname_);])[
|
|
||||||
build<T> ();
|
build<T> ();
|
||||||
swap<T> (other);
|
swap<T> (other);
|
||||||
other.destroy<T> ();
|
other.destroy<T> ();
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ AM_CXXFLAGS = \
|
|||||||
|
|
||||||
doc = $(top_srcdir)/doc/bison.texi
|
doc = $(top_srcdir)/doc/bison.texi
|
||||||
extexi = $(top_srcdir)/examples/extexi
|
extexi = $(top_srcdir)/examples/extexi
|
||||||
extract = VERSION="$(VERSION)" $(PERL) -f $(extexi) $(doc) --
|
extract = VERSION="$(VERSION)" $(PERL) $(extexi) $(doc) --
|
||||||
extracted =
|
extracted =
|
||||||
CLEANFILES += $(extracted) examples/extracted.stamp
|
CLEANFILES += $(extracted) examples/extracted.stamp
|
||||||
examples/extracted.stamp: $(doc) $(extexi)
|
examples/extracted.stamp: $(doc) $(extexi)
|
||||||
|
|||||||
@@ -16,7 +16,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
%debug
|
%debug
|
||||||
%skeleton "lalr1.cc"
|
%language "c++"
|
||||||
%defines
|
%defines
|
||||||
%define api.token.constructor
|
%define api.token.constructor
|
||||||
%define api.value.type variant
|
%define api.value.type variant
|
||||||
@@ -48,11 +48,17 @@ typedef std::list<std::string> strings_type;
|
|||||||
namespace std
|
namespace std
|
||||||
{
|
{
|
||||||
std::ostream&
|
std::ostream&
|
||||||
operator<< (std::ostream& o, const strings_type& s)
|
operator<< (std::ostream& o, const strings_type& ss)
|
||||||
{
|
{
|
||||||
std::copy (s.begin (), s.end (),
|
o << "(" << &ss << ") {";
|
||||||
std::ostream_iterator<strings_type::value_type> (o, "\n"));
|
const char *sep = "";
|
||||||
return o;
|
for (strings_type::const_iterator i = ss.begin(), end = ss.end();
|
||||||
|
i != end; ++i)
|
||||||
|
{
|
||||||
|
o << sep << *i;
|
||||||
|
sep = ", ";
|
||||||
|
}
|
||||||
|
return o << "}";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -77,7 +77,8 @@ uniqstr_vsprintf (char const *format, ...)
|
|||||||
void
|
void
|
||||||
uniqstr_assert (char const *str)
|
uniqstr_assert (char const *str)
|
||||||
{
|
{
|
||||||
if (!hash_lookup (uniqstrs_table, str))
|
uniqstr *s = hash_lookup (uniqstrs_table, str);
|
||||||
|
if (!s || s != (uniqstr *)str)
|
||||||
{
|
{
|
||||||
error (0, 0,
|
error (0, 0,
|
||||||
"not a uniqstr: %s", quotearg (str));
|
"not a uniqstr: %s", quotearg (str));
|
||||||
|
|||||||
@@ -72,13 +72,12 @@ int main ()
|
|||||||
std::cout << "Works" << std::endl;
|
std::cout << "Works" << std::endl;
|
||||||
}
|
}
|
||||||
EOF
|
EOF
|
||||||
ls
|
|
||||||
$CXX $CXXFLAGS $CPPFLAGS $LDFLAGS $LIBS -o conftest conftest.cc
|
$CXX $CXXFLAGS $CPPFLAGS $LDFLAGS $LIBS -o conftest conftest.cc
|
||||||
case $? in
|
case $? in
|
||||||
0);;
|
0);;
|
||||||
*) BISON_CXX_WORKS="as_fn_error 77 cannot-compile-simple-program";;
|
*) BISON_CXX_WORKS="as_fn_error 77 cannot-compile-simple-program";;
|
||||||
esac
|
esac
|
||||||
rm -f conftest*
|
rm -fr conftest*
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Whether the compiler supports POSIXLY_CORRECT defined.
|
# Whether the compiler supports POSIXLY_CORRECT defined.
|
||||||
|
|||||||
17
tests/c++.at
17
tests/c++.at
@@ -174,11 +174,10 @@ AT_CLEANUP
|
|||||||
m4_pushdef([AT_TEST],
|
m4_pushdef([AT_TEST],
|
||||||
[AT_SETUP([Variants $1])
|
[AT_SETUP([Variants $1])
|
||||||
|
|
||||||
AT_BISON_OPTION_PUSHDEFS([%skeleton "lalr1.cc" %debug $1])
|
AT_BISON_OPTION_PUSHDEFS([%debug $1])
|
||||||
# Store strings and integers in a list of strings.
|
# Store strings and integers in a list of strings.
|
||||||
AT_DATA_GRAMMAR([list.y],
|
AT_DATA_GRAMMAR([list.y],
|
||||||
[[%debug
|
[[%debug
|
||||||
%skeleton "lalr1.cc"
|
|
||||||
%define api.value.type variant
|
%define api.value.type variant
|
||||||
]m4_bpatsubst([$1], [\\n], [
|
]m4_bpatsubst([$1], [\\n], [
|
||||||
])[
|
])[
|
||||||
@@ -320,13 +319,13 @@ AT_BISON_OPTION_POPDEFS
|
|||||||
AT_CLEANUP
|
AT_CLEANUP
|
||||||
])
|
])
|
||||||
|
|
||||||
AT_TEST([])
|
AT_TEST([[%skeleton "lalr1.cc" ]])
|
||||||
AT_TEST([%define parse.assert])
|
AT_TEST([[%skeleton "lalr1.cc" %define parse.assert]])
|
||||||
AT_TEST([%locations %define parse.assert])
|
AT_TEST([[%skeleton "lalr1.cc" %locations %define parse.assert]])
|
||||||
AT_TEST([[%define parse.assert %code {\n#define TWO_STAGE_BUILD\n}]])
|
AT_TEST([[%skeleton "lalr1.cc" %define parse.assert %code {\n#define TWO_STAGE_BUILD\n}]])
|
||||||
AT_TEST([[%define parse.assert %define api.token.constructor]])
|
AT_TEST([[%skeleton "lalr1.cc" %define parse.assert %define api.token.constructor]])
|
||||||
AT_TEST([[%define parse.assert %define api.token.constructor %define api.token.prefix {TOK_}]])
|
AT_TEST([[%skeleton "lalr1.cc" %define parse.assert %define api.token.constructor %define api.token.prefix {TOK_}]])
|
||||||
AT_TEST([[%locations %define parse.assert %define api.token.constructor %define api.token.prefix {TOK_}]])
|
AT_TEST([[%skeleton "lalr1.cc" %locations %define parse.assert %define api.token.constructor %define api.token.prefix {TOK_}]])
|
||||||
|
|
||||||
m4_popdef([AT_TEST])
|
m4_popdef([AT_TEST])
|
||||||
|
|
||||||
|
|||||||
@@ -725,18 +725,23 @@ AT_CLEANUP
|
|||||||
|
|
||||||
AT_SETUP([Java constructor init and init_throws])
|
AT_SETUP([Java constructor init and init_throws])
|
||||||
|
|
||||||
|
m4_pushdef([AT_Witness],
|
||||||
|
[super("Test Thread"); if (true) throw new InterruptedException();])
|
||||||
|
|
||||||
AT_CHECK_JAVA_MINIMAL([[
|
AT_CHECK_JAVA_MINIMAL([[
|
||||||
%define extends {Thread}
|
%define extends {Thread}
|
||||||
%code init { super("Test Thread"); if (true) throw new InterruptedException(); }
|
%code init { ]AT_Witness[ }
|
||||||
%define init_throws {InterruptedException}
|
%define init_throws {InterruptedException}
|
||||||
%lex-param {int lex_param}]])
|
%lex-param {int lex_param}]])
|
||||||
AT_CHECK([[grep -q 'super("Test Thread"); if (true) throw new InterruptedException();' YYParser.java]])
|
AT_CHECK([[grep ']AT_Witness[' YYParser.java]], 0, [ignore])
|
||||||
|
|
||||||
AT_CHECK_JAVA_MINIMAL_W_LEXER([[
|
AT_CHECK_JAVA_MINIMAL_W_LEXER([[
|
||||||
%define extends {Thread}
|
%define extends {Thread}
|
||||||
%code init { super("Test Thread"); if (true) throw new InterruptedException(); }
|
%code init { ]AT_Witness[ }
|
||||||
%define init_throws {InterruptedException}]], [], [[return EOF;]])
|
%define init_throws {InterruptedException}]], [], [[return EOF;]])
|
||||||
AT_CHECK([[grep -q 'super("Test Thread"); if (true) throw new InterruptedException();' YYParser.java]])
|
AT_CHECK([[grep ']AT_Witness[' YYParser.java]], 0, [ignore])
|
||||||
|
|
||||||
|
m4_popdef([AT_Witness])
|
||||||
|
|
||||||
AT_CLEANUP
|
AT_CLEANUP
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user