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:
Akim Demaille
2012-04-01 12:56:55 +02:00
19 changed files with 407 additions and 229 deletions

View File

@@ -345,7 +345,7 @@ thing:
;
%%
/* Alias to ARGV[1]. */
const char *source = 0;
const char *source = YY_NULL;
static int
yylex (]AT_LEX_FORMALS[)

View File

@@ -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@'

View File

@@ -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 ();
}
])])])[

View File

@@ -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

View File

@@ -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[] =
{