mirror of
https://git.savannah.gnu.org/git/bison.git
synced 2026-03-18 08:43:03 +00:00
Merge branch 'maint'
* origin/maint: maint: post-release administrivia version 2.6.2 NEWS: update. yacc: remove trailing end of line at end of file thanks: fix a contributor name gnulib: update tests: synch line -> syncline, for consistency tests: synclines: style changes tests: synclines: fix perl invocation regen c++: trailing end-of-lines in %parse-param tests: simplify Conflicts: cfg.mk data/glr.cc data/yacc.c src/parse-gram.c src/parse-gram.h src/parse-gram.y
This commit is contained in:
@@ -1 +1 @@
|
|||||||
2.6.1
|
2.6.2
|
||||||
|
|||||||
16
NEWS
16
NEWS
@@ -143,6 +143,22 @@ GNU Bison NEWS
|
|||||||
* Noteworthy changes in release ?.? (????-??-??) [?]
|
* Noteworthy changes in release ?.? (????-??-??) [?]
|
||||||
|
|
||||||
|
|
||||||
|
* Noteworthy changes in release 2.6.2 (2012-08-03) [stable]
|
||||||
|
|
||||||
|
** Bug fixes
|
||||||
|
|
||||||
|
Buffer overruns, complaints from Flex, and portability issues in the test
|
||||||
|
suite have been fixed.
|
||||||
|
|
||||||
|
** Spaces in %lex- and %parse-param (lalr1.cc, glr.cc)
|
||||||
|
|
||||||
|
Trailing end-of-lines in %parse-param or %lex-param would result in
|
||||||
|
invalid C++. This is fixed.
|
||||||
|
|
||||||
|
** Spurious spaces and end-of-lines
|
||||||
|
|
||||||
|
The generated files no longer end (nor start) with empty lines.
|
||||||
|
|
||||||
* Noteworthy changes in release 2.6.1 (2012-07-30) [stable]
|
* Noteworthy changes in release 2.6.1 (2012-07-30) [stable]
|
||||||
|
|
||||||
Bison no longer executes user-specified M4 code when processing a grammar.
|
Bison no longer executes user-specified M4 code when processing a grammar.
|
||||||
|
|||||||
2
THANKS
2
THANKS
@@ -103,7 +103,7 @@ Sergei Steshenko sergstesh@yahoo.com
|
|||||||
Shura debil_urod@ngs.ru
|
Shura debil_urod@ngs.ru
|
||||||
Stefano Lattarini stefano.lattarini@gmail.com
|
Stefano Lattarini stefano.lattarini@gmail.com
|
||||||
Steve Murphy murf@parsetree.com
|
Steve Murphy murf@parsetree.com
|
||||||
Summum Bonum sum@geekhouse.org
|
Sum Wu sum@geekhouse.org
|
||||||
Thiru Ramakrishnan thiru.ramakrishnan@gmail.com
|
Thiru Ramakrishnan thiru.ramakrishnan@gmail.com
|
||||||
Tim Josling tej@melbpc.org.au
|
Tim Josling tej@melbpc.org.au
|
||||||
Tim Landscheidt tim@tim-landscheidt.de
|
Tim Landscheidt tim@tim-landscheidt.de
|
||||||
|
|||||||
1
cfg.mk
1
cfg.mk
@@ -64,7 +64,6 @@ $(call exclude, \
|
|||||||
prohibit_always-defined_macros+=?|^src/(parse-gram.c|system.h)$$ \
|
prohibit_always-defined_macros+=?|^src/(parse-gram.c|system.h)$$ \
|
||||||
prohibit_always-defined_macros+=?|^tests/regression.at$$ \
|
prohibit_always-defined_macros+=?|^tests/regression.at$$ \
|
||||||
prohibit_defined_have_decl_tests=?|^lib/timevar.c$$ \
|
prohibit_defined_have_decl_tests=?|^lib/timevar.c$$ \
|
||||||
prohibit_empty_lines_at_EOF=^src/parse-gram.h$$ \
|
|
||||||
prohibit_magic_number_exit=^doc/bison.texi$$ \
|
prohibit_magic_number_exit=^doc/bison.texi$$ \
|
||||||
prohibit_magic_number_exit+=?|^tests/(conflicts|regression).at$$ \
|
prohibit_magic_number_exit+=?|^tests/(conflicts|regression).at$$ \
|
||||||
prohibit_strcmp=^doc/bison\.texi$$ \
|
prohibit_strcmp=^doc/bison\.texi$$ \
|
||||||
|
|||||||
@@ -2593,5 +2593,5 @@ b4_copyright([Skeleton interface for Bison GLR parsers in C],
|
|||||||
]b4_cpp_guard_open([b4_spec_defines_file])[
|
]b4_cpp_guard_open([b4_spec_defines_file])[
|
||||||
]b4_shared_declarations[
|
]b4_shared_declarations[
|
||||||
]b4_cpp_guard_close([b4_spec_defines_file])[
|
]b4_cpp_guard_close([b4_spec_defines_file])[
|
||||||
]])])
|
]])])dnl
|
||||||
m4_divert_pop(0)
|
m4_divert_pop(0)
|
||||||
|
|||||||
@@ -208,8 +208,7 @@ m4_pushdef([b4_parse_param], m4_defn([b4_parse_param_orig]))dnl
|
|||||||
|
|
||||||
#endif
|
#endif
|
||||||
]m4_popdef([b4_parse_param])dnl
|
]m4_popdef([b4_parse_param])dnl
|
||||||
b4_namespace_close[
|
b4_namespace_close])
|
||||||
]])
|
|
||||||
|
|
||||||
|
|
||||||
# Let glr.c believe that the user arguments include the parser itself.
|
# Let glr.c believe that the user arguments include the parser itself.
|
||||||
|
|||||||
@@ -1933,7 +1933,6 @@ yypushreturn:]])[
|
|||||||
#endif
|
#endif
|
||||||
return yyresult;
|
return yyresult;
|
||||||
}
|
}
|
||||||
|
|
||||||
]b4_epilogue[]dnl
|
]b4_epilogue[]dnl
|
||||||
b4_defines_if(
|
b4_defines_if(
|
||||||
[@output(b4_spec_defines_file@)@
|
[@output(b4_spec_defines_file@)@
|
||||||
|
|||||||
2
gnulib
2
gnulib
Submodule gnulib updated: 678815ea7c...bd54a45e6e
@@ -775,11 +775,13 @@ add_param (param_type type, char *decl, location loc)
|
|||||||
|
|
||||||
/* Strip the surrounding '{' and '}', and any blanks just inside
|
/* Strip the surrounding '{' and '}', and any blanks just inside
|
||||||
the braces. */
|
the braces. */
|
||||||
while (*--p == ' ' || *p == '\t')
|
--p;
|
||||||
continue;
|
while (isspace ((unsigned char) *p))
|
||||||
|
--p;
|
||||||
p[1] = '\0';
|
p[1] = '\0';
|
||||||
while (*++decl == ' ' || *decl == '\t')
|
++decl;
|
||||||
continue;
|
while (isspace ((unsigned char) *decl))
|
||||||
|
++decl;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (! name_start)
|
if (! name_start)
|
||||||
|
|||||||
@@ -386,11 +386,9 @@ AT_YYERROR_SEES_LOC_IF([
|
|||||||
fprintf (stderr, ": ");])
|
fprintf (stderr, ": ");])
|
||||||
fprintf (stderr, "%s\n", s);
|
fprintf (stderr, "%s\n", s);
|
||||||
}])[
|
}])[
|
||||||
|
|
||||||
]AT_DEFINES_IF([],
|
]AT_DEFINES_IF([],
|
||||||
[AT_CALC_LEX
|
[AT_CALC_LEX
|
||||||
AT_CALC_MAIN])[
|
AT_CALC_MAIN])])
|
||||||
]])
|
|
||||||
|
|
||||||
AT_DEFINES_IF([AT_DATA_SOURCE([[calc-lex.c]AT_SKEL_CC_IF([[c]])],
|
AT_DEFINES_IF([AT_DATA_SOURCE([[calc-lex.c]AT_SKEL_CC_IF([[c]])],
|
||||||
[[#include "calc.h]AT_SKEL_CC_IF([[h]])["
|
[[#include "calc.h]AT_SKEL_CC_IF([[h]])["
|
||||||
@@ -500,6 +498,20 @@ AT_CHECK([cat stderr], 0, [expout])
|
|||||||
])
|
])
|
||||||
|
|
||||||
|
|
||||||
|
# AT_CHECK_SPACES([FILE])
|
||||||
|
# -----------------------
|
||||||
|
# Make sure we did not introduce bad spaces. Checked here because all
|
||||||
|
# the skeletons are (or should be) exercized here.
|
||||||
|
m4_define([AT_CHECK_SPACES],
|
||||||
|
[# No initial empty lines.
|
||||||
|
AT_CHECK([sed -ne '/./q;=;p;' $1])
|
||||||
|
# No trailing spaces.
|
||||||
|
# FIXME: For 2.7: AT_CHECK([sed -ne '/[ ]$/{=;p;}' $1])
|
||||||
|
# No final empty lines.
|
||||||
|
AT_CHECK([sed -ne '${/^$/{=;p;};}' $1])
|
||||||
|
])
|
||||||
|
|
||||||
|
|
||||||
# AT_CHECK_CALC([BISON-OPTIONS])
|
# AT_CHECK_CALC([BISON-OPTIONS])
|
||||||
# ------------------------------
|
# ------------------------------
|
||||||
# Start a testing chunk which compiles `calc' grammar with
|
# Start a testing chunk which compiles `calc' grammar with
|
||||||
@@ -514,6 +526,8 @@ AT_BISON_OPTION_PUSHDEFS([$1])
|
|||||||
|
|
||||||
AT_DATA_CALC_Y([$1])
|
AT_DATA_CALC_Y([$1])
|
||||||
AT_FULL_COMPILE([calc], AT_DEFINES_IF([[lex], [main]]))
|
AT_FULL_COMPILE([calc], AT_DEFINES_IF([[lex], [main]]))
|
||||||
|
AT_CHECK_SPACES([calc.AT_SKEL_CC_IF([cc], [c])])
|
||||||
|
AT_DEFINES_IF([AT_CHECK_SPACES([calc.AT_SKEL_CC_IF([hh], [h])])])
|
||||||
|
|
||||||
# Test the priorities.
|
# Test the priorities.
|
||||||
_AT_CHECK_CALC([$1],
|
_AT_CHECK_CALC([$1],
|
||||||
|
|||||||
@@ -908,7 +908,6 @@ m4_define([AT_CHECK_DANCER],
|
|||||||
[AT_SETUP([Dancer $1])
|
[AT_SETUP([Dancer $1])
|
||||||
AT_BISON_OPTION_PUSHDEFS([$1])
|
AT_BISON_OPTION_PUSHDEFS([$1])
|
||||||
_AT_DATA_DANCER_Y([$1])
|
_AT_DATA_DANCER_Y([$1])
|
||||||
AT_BISON_CHECK([-o dancer.c dancer.y])
|
|
||||||
AT_FULL_COMPILE([dancer])
|
AT_FULL_COMPILE([dancer])
|
||||||
AT_PARSER_CHECK([./dancer], 1, [],
|
AT_PARSER_CHECK([./dancer], 1, [],
|
||||||
[syntax error, unexpected ':'
|
[syntax error, unexpected ':'
|
||||||
@@ -993,7 +992,6 @@ m4_define([AT_CHECK_EXPECT2],
|
|||||||
[AT_SETUP([Expecting two tokens $1])
|
[AT_SETUP([Expecting two tokens $1])
|
||||||
AT_BISON_OPTION_PUSHDEFS([$1])
|
AT_BISON_OPTION_PUSHDEFS([$1])
|
||||||
_AT_DATA_EXPECT2_Y([$1])
|
_AT_DATA_EXPECT2_Y([$1])
|
||||||
AT_BISON_CHECK([-o expect2.c expect2.y])
|
|
||||||
AT_FULL_COMPILE([expect2])
|
AT_FULL_COMPILE([expect2])
|
||||||
AT_PARSER_CHECK([./expect2], 1, [],
|
AT_PARSER_CHECK([./expect2], 1, [],
|
||||||
[syntax error, unexpected '+', expecting A or B
|
[syntax error, unexpected '+', expecting A or B
|
||||||
@@ -1578,3 +1576,87 @@ Stack now 0
|
|||||||
m4_popdef([AT_LAC_CHECK])
|
m4_popdef([AT_LAC_CHECK])
|
||||||
|
|
||||||
AT_CLEANUP
|
AT_CLEANUP
|
||||||
|
|
||||||
|
|
||||||
|
## ---------------------- ##
|
||||||
|
## Lex and parse params. ##
|
||||||
|
## ---------------------- ##
|
||||||
|
|
||||||
|
# AT_TEST(SKELETON)
|
||||||
|
# -----------------
|
||||||
|
# Check that the identifier of the params is properly fetched
|
||||||
|
# even when there are trailing blanks.
|
||||||
|
|
||||||
|
m4_pushdef([AT_TEST],
|
||||||
|
[AT_SETUP([[Lex and parse params: $1]])
|
||||||
|
|
||||||
|
AT_BISON_OPTION_PUSHDEFS([%locations %skeleton $1])
|
||||||
|
|
||||||
|
## FIXME: Improve parsing of parse-param and use the generated
|
||||||
|
## yyerror.
|
||||||
|
AT_DATA_GRAMMAR([input.y],
|
||||||
|
[[%defines
|
||||||
|
%locations
|
||||||
|
%skeleton $1
|
||||||
|
%union { int ival; }
|
||||||
|
%parse-param { int x }
|
||||||
|
// Spaces, tabs, and new lines.
|
||||||
|
%parse-param { @&t@
|
||||||
|
int y @&t@
|
||||||
|
@&t@
|
||||||
|
@&t@
|
||||||
|
}
|
||||||
|
|
||||||
|
%{
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
|
||||||
|
]AT_SKEL_CC_IF([], [[
|
||||||
|
static
|
||||||
|
void
|
||||||
|
yyerror (int x, int y, const char *msg)
|
||||||
|
{
|
||||||
|
fprintf (stderr, "x: %d, y: %d, %s\n", x, y, msg);
|
||||||
|
}]])[
|
||||||
|
|
||||||
|
]AT_YYLEX_DECLARE[
|
||||||
|
%}
|
||||||
|
|
||||||
|
%%
|
||||||
|
exp: 'a' { fprintf (stdout, "x: %d, y: %d\n", x, y); };
|
||||||
|
%%
|
||||||
|
]AT_YYLEX_DEFINE(["a"])[
|
||||||
|
|
||||||
|
]AT_SKEL_CC_IF(
|
||||||
|
[AT_YYERROR_DEFINE
|
||||||
|
|
||||||
|
int
|
||||||
|
yyparse (int x, int y)
|
||||||
|
{
|
||||||
|
yy::parser parser(x, y);
|
||||||
|
return parser.parse ();
|
||||||
|
}
|
||||||
|
])[
|
||||||
|
|
||||||
|
int
|
||||||
|
main (void)
|
||||||
|
{
|
||||||
|
return !!yyparse(1, 2);
|
||||||
|
}
|
||||||
|
]])
|
||||||
|
|
||||||
|
AT_FULL_COMPILE([input])
|
||||||
|
AT_CHECK([./input], 0, [[x: 1, y: 2
|
||||||
|
]])
|
||||||
|
AT_BISON_OPTION_POPDEFS
|
||||||
|
|
||||||
|
AT_CLEANUP
|
||||||
|
])
|
||||||
|
|
||||||
|
## FIXME: test Java, and iterate over skeletons.
|
||||||
|
AT_TEST("yacc.c")
|
||||||
|
AT_TEST("glr.c")
|
||||||
|
AT_TEST("lalr1.cc")
|
||||||
|
AT_TEST("glr.cc")
|
||||||
|
|
||||||
|
m4_popdef([AT_TEST])
|
||||||
|
|||||||
@@ -64,22 +64,22 @@ m4_define([AT_SYNCLINES_COMPILE],
|
|||||||
# distcc[35882] (dcc_connect_by_name) ERROR: failed to look up host "chrisimac": Unknown host
|
# distcc[35882] (dcc_connect_by_name) ERROR: failed to look up host "chrisimac": Unknown host
|
||||||
# distcc[35882] Warning: failed to distribute input.c to chrisimac/4, running locally instead
|
# distcc[35882] Warning: failed to distribute input.c to chrisimac/4, running locally instead
|
||||||
|
|
||||||
AT_CHECK([[perl -p -0777 -f - stderr <<\EOF
|
AT_CHECK([[perl -p -0777 - stderr <<\EOF
|
||||||
s/^distcc\[\d+\] .*\n//gm;
|
s/^distcc\[\d+\] .*\n//gm;
|
||||||
s/^([^:]*:\d+)[.:][^:]*:(.*)$/$][1:$][2/gm;
|
s/^([^:]+:\d+)[.:][^:]+:(.+)$/$][1:$][2/gm;
|
||||||
s/^([^:]*:\d+:)[^#]*( #error)/$][1$][2/gm;
|
s/^([^:]+:\d+):[^#]*( #error)/$][1:$][2/gm;
|
||||||
s/^[^:]*: In function '[^']*':\n//gm;
|
s/^[^:]*: In function '[^']+':\n//gm;
|
||||||
s/^\ +#error.*\n\ *\^\n//gm;
|
s/^\ +#error.*\n\ *\^\n//gm;
|
||||||
EOF
|
EOF
|
||||||
]],
|
]],
|
||||||
0, [stdout])
|
0, [stdout])
|
||||||
])
|
])
|
||||||
|
|
||||||
# AT_TEST_SYNCLINE(TITLE, INPUT, ERROR-MSG)
|
# AT_TEST(TITLE, INPUT, ERROR-MSG)
|
||||||
# -----------------------------------------
|
# --------------------------------
|
||||||
# Check that compiling the parser produced from INPUT cause GCC
|
# Check that compiling the parser produced from INPUT cause GCC
|
||||||
# to issue ERROR-MSG.
|
# to issue ERROR-MSG.
|
||||||
m4_define([AT_TEST_SYNCLINE],
|
m4_pushdef([AT_TEST],
|
||||||
[AT_SETUP([$1])
|
[AT_SETUP([$1])
|
||||||
AT_BISON_OPTION_PUSHDEFS
|
AT_BISON_OPTION_PUSHDEFS
|
||||||
# It seems impossible to find a generic scheme to check the location
|
# It seems impossible to find a generic scheme to check the location
|
||||||
@@ -116,12 +116,12 @@ AT_CLEANUP
|
|||||||
])
|
])
|
||||||
|
|
||||||
|
|
||||||
## --------------------- ##
|
## ------------------- ##
|
||||||
## Prologue synch line. ##
|
## Prologue syncline. ##
|
||||||
## --------------------- ##
|
## ------------------- ##
|
||||||
|
|
||||||
|
|
||||||
AT_TEST_SYNCLINE([Prologue synch line],
|
AT_TEST([Prologue syncline],
|
||||||
[[%{
|
[[%{
|
||||||
#error "2"
|
#error "2"
|
||||||
]AT_YYERROR_DECLARE_EXTERN[
|
]AT_YYERROR_DECLARE_EXTERN[
|
||||||
@@ -135,11 +135,11 @@ exp: '0';
|
|||||||
])
|
])
|
||||||
|
|
||||||
|
|
||||||
## ------------------- ##
|
## ----------------- ##
|
||||||
## %union synch line. ##
|
## %union syncline. ##
|
||||||
## ------------------- ##
|
## ----------------- ##
|
||||||
|
|
||||||
AT_TEST_SYNCLINE([%union synch line],
|
AT_TEST([%union syncline],
|
||||||
[[%union {
|
[[%union {
|
||||||
#error "2"
|
#error "2"
|
||||||
char dummy;
|
char dummy;
|
||||||
@@ -156,11 +156,11 @@ exp: '0';
|
|||||||
])
|
])
|
||||||
|
|
||||||
|
|
||||||
## ------------------------- ##
|
## ----------------------- ##
|
||||||
## Postprologue synch line. ##
|
## Postprologue syncline. ##
|
||||||
## ------------------------- ##
|
## ----------------------- ##
|
||||||
|
|
||||||
AT_TEST_SYNCLINE([Postprologue synch line],
|
AT_TEST([Postprologue syncline],
|
||||||
[[%{
|
[[%{
|
||||||
]AT_YYERROR_DECLARE_EXTERN[
|
]AT_YYERROR_DECLARE_EXTERN[
|
||||||
]AT_YYLEX_DECLARE_EXTERN[
|
]AT_YYLEX_DECLARE_EXTERN[
|
||||||
@@ -180,11 +180,11 @@ exp: '0';
|
|||||||
])
|
])
|
||||||
|
|
||||||
|
|
||||||
## ------------------- ##
|
## ----------------- ##
|
||||||
## Action synch line. ##
|
## Action syncline. ##
|
||||||
## ------------------- ##
|
## ----------------- ##
|
||||||
|
|
||||||
AT_TEST_SYNCLINE([Action synch line],
|
AT_TEST([Action syncline],
|
||||||
[[%{
|
[[%{
|
||||||
]AT_YYERROR_DECLARE_EXTERN[
|
]AT_YYERROR_DECLARE_EXTERN[
|
||||||
]AT_YYLEX_DECLARE_EXTERN[
|
]AT_YYLEX_DECLARE_EXTERN[
|
||||||
@@ -199,11 +199,11 @@ exp:
|
|||||||
])
|
])
|
||||||
|
|
||||||
|
|
||||||
## --------------------- ##
|
## ------------------- ##
|
||||||
## Epilogue synch line. ##
|
## Epilogue syncline. ##
|
||||||
## --------------------- ##
|
## ------------------- ##
|
||||||
|
|
||||||
AT_TEST_SYNCLINE([Epilogue synch line],
|
AT_TEST([Epilogue syncline],
|
||||||
[[%{
|
[[%{
|
||||||
]AT_YYERROR_DECLARE_EXTERN[
|
]AT_YYERROR_DECLARE_EXTERN[
|
||||||
]AT_YYLEX_DECLARE_EXTERN[
|
]AT_YYLEX_DECLARE_EXTERN[
|
||||||
@@ -215,3 +215,5 @@ exp: '0';
|
|||||||
]],
|
]],
|
||||||
[input.y:8: #error "8"
|
[input.y:8: #error "8"
|
||||||
])
|
])
|
||||||
|
|
||||||
|
m4_popdef([AT_TEST])
|
||||||
|
|||||||
Reference in New Issue
Block a user