mirror of
https://git.savannah.gnu.org/git/bison.git
synced 2026-03-09 20:33:03 +00:00
Merge remote-tracking branch 'origin/maint'
* origin/maint: bump to 2012 in skeletons. build: remove ancient Autoconf tests. doc: c++: complete the location documentation. c++: locations: provide convenience constructors. c++: locations: remove useless "inline". glr: do not use locations when they are not requested c++: use nullptr for C++11. build: simplify and improve the compiler warnings for tests. gnulib: update. maint: formatting changes. NEWS: update. Java: Fix syntax error handling without error token. tests: beware of -pedantic on large #line numbers. tests: when using the C++ compiler, use its flags too. Conflicts: data/glr.c data/glr.cc data/lalr1.cc data/location.cc data/yacc.c tests/Makefile.am
This commit is contained in:
@@ -345,7 +345,7 @@ thing:
|
||||
;
|
||||
%%
|
||||
/* Alias to ARGV[1]. */
|
||||
const char *source = 0;
|
||||
const char *source = YY_NULL;
|
||||
|
||||
static int
|
||||
yylex (]AT_LEX_FORMALS[)
|
||||
|
||||
@@ -16,30 +16,47 @@
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
# We need a C compiler.
|
||||
: ${CC='@CC@'}
|
||||
|
||||
# We want no optimization.
|
||||
CFLAGS='@O0CFLAGS@ @WARN_CFLAGS_TEST@ @WERROR_CFLAGS@'
|
||||
|
||||
# Sometimes a test group needs to ignore gcc warnings, so it locally
|
||||
# sets CFLAGS to this.
|
||||
NO_WERROR_CFLAGS='@O0CFLAGS@ @WARN_CFLAGS_TEST@'
|
||||
|
||||
# We need `config.h'.
|
||||
CPPFLAGS="-I$abs_top_builddir/lib @CPPFLAGS@"
|
||||
|
||||
## ------------------- ##
|
||||
## C/C++ Compilation. ##
|
||||
## ------------------- ##
|
||||
|
||||
: ${CC='@CC@'}
|
||||
: ${CXX='@CXX@'}
|
||||
|
||||
# Is the compiler GCC?
|
||||
GCC='@GCC@'
|
||||
|
||||
# The C++ compiler.
|
||||
: ${CXX='@CXX@'}
|
||||
# We want no optimization.
|
||||
O0CFLAGS=`echo '@CFLAGS@' | sed 's/-O[0-9] *//'`
|
||||
O0CXXFLAGS=`echo '@CXXFLAGS@' | sed 's/-O[0-9] *//'`
|
||||
|
||||
# Sometimes a test group needs to ignore gcc warnings, so it locally
|
||||
# sets CFLAGS to this.
|
||||
NO_WERROR_CFLAGS="$O0CFLAGS @WARN_CFLAGS@ @WARN_CFLAGS_TEST@"
|
||||
NO_WERROR_CXXFLAGS="$O0CXXFLAGS @WARN_CXXFLAGS@ @WARN_CXXFLAGS_TEST@"
|
||||
|
||||
# But most of the time, we want -Werror.
|
||||
CFLAGS="$NO_WERROR_CFLAGS @WERROR_CFLAGS@"
|
||||
CXXFLAGS="$NO_WERROR_CXXFLAGS @WERROR_CXXFLAGS@"
|
||||
|
||||
# If 'exit 77'; skip all C++ tests; otherwise ':'.
|
||||
BISON_CXX_WORKS='@BISON_CXX_WORKS@'
|
||||
|
||||
# We want no optimization with C++, too.
|
||||
CXXFLAGS='@O0CXXFLAGS@ @WARN_CXXFLAGS_TEST@ @WERROR_CFLAGS@'
|
||||
# Handle --compile-c-with-cxx here, once CXX and CXXFLAGS are known.
|
||||
if "$at_arg_compile_c_with_cxx"; then
|
||||
CC=$CXX
|
||||
O0CFLAGS=$O0CXXFLAGS
|
||||
NO_WERROR_CFLAGS=$NO_WERROR_CXXFLAGS
|
||||
CFLAGS=$CXXFLAGS
|
||||
fi
|
||||
|
||||
|
||||
## ------- ##
|
||||
## Other. ##
|
||||
## ------- ##
|
||||
|
||||
# Are special link options needed?
|
||||
LDFLAGS='@LDFLAGS@'
|
||||
|
||||
@@ -241,7 +241,7 @@ int yylex (]AT_LEX_FORMALS[);
|
||||
are stored in a union, from which objects with constructors are
|
||||
excluded in C++). */
|
||||
%initial-action {
|
||||
@$.initialize (0);
|
||||
@$.initialize ();
|
||||
}
|
||||
])])])[
|
||||
|
||||
|
||||
@@ -781,3 +781,69 @@ AT_CHECK([[$EGREP -v ' */?\*' YYParser.java | grep 'Position']], [1], [ignore])
|
||||
AT_CHECK([[$EGREP -v ' */?\*' YYParser.java | grep 'Location']], [1], [ignore])
|
||||
|
||||
AT_CLEANUP
|
||||
|
||||
|
||||
# ----------------------------------------------- #
|
||||
# Java syntax error handling without error token. #
|
||||
# ----------------------------------------------- #
|
||||
|
||||
AT_SETUP([Java syntax error handling without error token])
|
||||
|
||||
AT_DATA([[YYParser.y]], [[%language "Java"
|
||||
|
||||
%lex-param { String s }
|
||||
|
||||
%code imports {
|
||||
import java.io.IOException;
|
||||
}
|
||||
|
||||
%code lexer {
|
||||
String Input;
|
||||
int Position;
|
||||
|
||||
public YYLexer (String s)
|
||||
{
|
||||
Input = s;
|
||||
Position = 0;
|
||||
}
|
||||
|
||||
public void yyerror (String s)
|
||||
{
|
||||
System.err.println (s);
|
||||
}
|
||||
|
||||
public Object getLVal ()
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
public int yylex () throws IOException
|
||||
{
|
||||
if (Position >= Input.length ())
|
||||
return EOF;
|
||||
else
|
||||
return Input.charAt (Position++);
|
||||
}
|
||||
}
|
||||
|
||||
%code {
|
||||
public static void main (String args []) throws IOException
|
||||
{
|
||||
YYParser p = new YYParser (args [0]);
|
||||
p.parse ();
|
||||
}
|
||||
}
|
||||
%%
|
||||
input:
|
||||
'a' 'a'
|
||||
;
|
||||
]])
|
||||
AT_BISON_CHECK([[YYParser.y]])
|
||||
AT_JAVA_COMPILE([[YYParser.java]])
|
||||
AT_JAVA_PARSER_CHECK([[YYParser aa]], [[0]], [[]], [[]])
|
||||
AT_JAVA_PARSER_CHECK([[YYParser ab]], [[0]], [[]], [[syntax error
|
||||
]])
|
||||
AT_JAVA_PARSER_CHECK([[YYParser ba]], [[0]], [[]], [[syntax error
|
||||
]])
|
||||
|
||||
AT_CLEANUP
|
||||
|
||||
@@ -760,7 +760,7 @@ static const yytype_uint8 yyrline[] =
|
||||
static const char *const yytname[] =
|
||||
{
|
||||
"$end", "error", "$undefined", "\"if\"", "\"const\"", "\"then\"",
|
||||
"\"else\"", "$accept", "statement", "struct_stat", "if", "else", 0
|
||||
"\"else\"", "$accept", "statement", "struct_stat", "if", "else", YY_NULL
|
||||
};
|
||||
static const yytype_uint16 yytoknum[] =
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user