]> git.saurik.com Git - bison.git/commitdiff
Merge remote-tracking branch 'origin/maint'
authorAkim Demaille <akim@lrde.epita.fr>
Fri, 4 May 2012 12:38:53 +0000 (14:38 +0200)
committerAkim Demaille <akim@lrde.epita.fr>
Fri, 4 May 2012 12:38:53 +0000 (14:38 +0200)
* origin/maint: (22 commits)
  tests: ignore code coverage/profiling failure messages
  doc: fix some invalid @ref.
  build: fix previous commit.
  install-pdf: fix.
  NEWS: Update.
  %printer: support both yyo and yyoutput.
  doc: mfcalc: demonstrate %printer.
  tests: style changes.
  build: require Flex.
  build: flex.m4: check for Flex.
  build: flex.m4: quote properly.
  build: flex.m4.
  build: autoconf: update.
  glr: eliminate last bits of unwanted locations.
  NEWS: 2.6 will drop K&R.
  TODO: remove dead items.
  TODO: import from master.
  gnulib: update.
  maint: update NEWS.
  doc: fix index.
  doc: fix documentation of YYERROR.
  c++: more YY_NULL

Conflicts:
TODO
bootstrap
data/c.m4
data/glr.c
data/lalr1.cc
doc/bison.texinfo

NEWS
TODO
bootstrap
bootstrap.conf
configure.ac
data/glr.c
doc/bison.texinfo
gnulib
m4/flex.m4 [new file with mode: 0644]
submodules/autoconf
tests/local.at

diff --git a/NEWS b/NEWS
index bb96c36e238ba91e2d10b7243db4652c4cb20e1a..8f77271b6b2924225ecb5fe0f01942ddf0c7c13e 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -71,28 +71,25 @@ Bison News
 
 * Changes in version 2.5.1 (????-??-??):
 
-** Several portability problems in the test suite have been fixed:
+** Future changes:
 
-  This includes warnings with some compilers, unexpected behavior of
-  tools such as diff, warning messages from the test suite itself,
-  etc.
+  The next major release will drop support for K&R C.
 
-  __attribute__ is not longer disabled when __STRICT_ANSI__ is defined
-  (i.e., when -std is passed to GCC).
+** yacc.c: YYBACKUP works as expected.
 
-** Warnings during the build procedure have been eliminated.
+** glr.c improvements:
 
-** Many minor improvements have been made to the manual:
+*** Location support is eliminated when not requested:
 
-  The layout for grammar has changed to a more compact scheme.  Named
-  references are motivated.  The description of the automaton
-  description file is updated.
+  GLR parsers used to include location-related code even when
+  locations were not requested, and therefore not even usable.
 
-** YYBACKUP works as expected.
+*** __attribute__ is preserved:
 
-** liby is no longer asking for "rpl_fprintf" on some platforms.
+  __attribute__ is no longer disabled when __STRICT_ANSI__ is defined
+  (i.e., when -std is passed to GCC).
 
-** Several Java fixes:
+** lalr1.java: several fixes:
 
   The Java parser no longer throws ArrayIndexOutOfBoundsException if
   the first token leads to a syntax error.  Some minor clean ups.
@@ -108,6 +105,42 @@ Bison News
   methods) accept new arguments for line and column.  Several issues
   in the documentation were fixed.
 
+** liby is no longer asking for "rpl_fprintf" on some platforms.
+
+** Changes in the manual:
+
+*** %printer is documented
+
+  The %printer directive, supported since at least Bison 1.50, is
+  finally documented.  The %mfcalc example is extended to demonstrate
+  its use of printer.
+
+  The C++ parsers now also support yyoutput (as an alias to
+  debug_stream ()) for consistency with the C skeletons.
+
+*** Several improvements have been made:
+
+  The layout for grammar excerpts was changed to a more compact
+  scheme.  Named references are motivated.  The description of the
+  automaton description file (*.output) is updated to the current
+  format.  Incorrect index entries were fixed.  Some other errors were
+  fixed.
+
+** Changes to the build system:
+
+*** Warnings during the build procedure have been eliminated.
+
+*** Several portability problems in the test suite have been fixed:
+
+  This includes warnings with some compilers, unexpected behavior of
+  tools such as diff, warning messages from the test suite itself,
+  etc.
+
+*** The install-pdf target work properly:
+
+  Running "make install-pdf" (or -dvi, -html, -info, and -ps) no
+  longer halts in the middle of its course.
+
 * Changes in version 2.5 (2011-05-14):
 
 ** Grammar symbol names can now contain non-initial dashes:
@@ -1511,7 +1544,7 @@ Bison News
 ** The output file does not define const, as this caused problems when used
   with common autoconfiguration schemes.  If you still use ancient compilers
   that lack const, compile with the equivalent of the C compiler option
-  `-Dconst='.  autoconf's AC_C_CONST macro provides one way to do this.
+  `-Dconst='.  Autoconf's AC_C_CONST macro provides one way to do this.
 
 ** Added `-g' and `--graph'.
 
@@ -1558,7 +1591,7 @@ Bison News
 \f
 * Changes in version 1.26:
 
-** Bison now uses automake.
+** Bison now uses Automake.
 
 ** New mailing lists: <bug-bison@gnu.org> and <help-bison@gnu.org>.
 
@@ -1580,7 +1613,7 @@ the grammar file, and reports all the errors found in it.
 
 ** Tokens can now be specified as multiple-character strings: for
 example, you could use "<=" for a token which looks like <=, instead
-of chosing a name like LESSEQ.
+of choosing a name like LESSEQ.
 
 ** The %token_table declaration says to write a table of tokens (names
 and numbers) into the parser file.  The yylex function can use this
@@ -1615,10 +1648,6 @@ Line numbers in output file corrected.
 
 Output file does not redefine const for C++.
 
-Local Variables:
-mode: outline
-End:
-
 -----
 
 Copyright (C) 1995-2012 Free Software Foundation, Inc.
@@ -1637,3 +1666,24 @@ GNU General Public License for more details.
 
 You should have received a copy of the GNU General Public License
 along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+ LocalWords:  yacc YYBACKUP glr GCC lalr ArrayIndexOutOfBoundsException nullptr
+ LocalWords:  cplusplus liby rpl fprintf mfcalc Wyacc stmt cond expr mk sym lr
+ LocalWords:  IELR ielr Lookahead YYERROR nonassoc LALR's api lookaheads yychar
+ LocalWords:  destructor lookahead YYRHSLOC YYLLOC Rhs ifndef YYFAIL cpp sr rr
+ LocalWords:  preprocessor initializer Wno Wnone Werror FreeBSD prec livelocks
+ LocalWords:  Solaris AIX UX RHEL Tru LHS gcc's Wundef YYENABLE NLS YYLTYPE VCG
+ LocalWords:  yyerror cpp's Wunused yylval yylloc prepend yyparse yylex yypush
+ LocalWords:  Graphviz xml nonterminals midrule destructor's YYSTYPE typedef ly
+ LocalWords:  CHR chr printf stdout namespace preprocessing enum pre include's
+ LocalWords:  YYRECOVERING nonfree destructors YYABORT YYACCEPT params enums de
+ LocalWords:  struct yystype DJGPP lex param Haible NUM alloca YYSTACK NUL goto
+ LocalWords:  YYMAXDEPTH Unescaped UCNs YYLTYPE's yyltype typedefs inline Yaccs
+ LocalWords:  Heriyanto Reenable dprec Hilfinger Eggert MYEOF Folle Menezes EOF
+ LocalWords:  Lackovic define's itemset Groff Gettext malloc NEWS'ed YYDEBUG
+ LocalWords:  namespaces strerror const autoconfiguration Dconst Autoconf's FDL
+ LocalWords:  Automake TMPDIR LESSEQ
+
+Local Variables:
+mode: outline
+End:
diff --git a/TODO b/TODO
index 13c1f85877e1e1dd22ac69e3b1f8c629af0da95f..d86d8d8b588bd588d952900f5af80f12ded78acb 100644 (file)
--- a/TODO
+++ b/TODO
@@ -136,11 +136,6 @@ Do some people use YYPURE, YYLSP_NEEDED like we do in the test suite?
 They should not: it is not documented.  But if they need to, let's
 find something clean (not like YYLSP_NEEDED...).
 
-
-* Documentation
-Before releasing, make sure the documentation ("Understanding your
-parser") refers to the current `output' format.
-
 * Report
 
 ** Figures
@@ -237,12 +232,6 @@ this issue.  Does anybody have it?
 Some history of Bison and some bibliography would be most welcome.
 Are there any Texinfo standards for bibliography?
 
-** %printer
-Wow, %printer is not documented.  Clearly mark YYPRINT as obsolete.
-
-* Java, Fortran, etc.
-
-
 * Coding system independence
 Paul notes:
 
@@ -268,29 +257,6 @@ Show reductions.
 ** Skeleton strategy
 Must we keep %token-table?
 
-* BTYacc
-See if we can integrate backtracking in Bison.  Charles-Henri de
-Boysson <de-boy_c@epita.fr> has been working on this, but never gave
-the results.
-
-Vadim Maslow, the maintainer of BTYacc was once contacted.  Adjusting
-the Bison grammar parser will be needed to support some extra BTYacc
-features.  This is less urgent.
-
-** Keeping the conflicted actions
-First, analyze the differences between byacc and btyacc (I'm referring
-to the executables).  Find where the conflicts are preserved.
-
-** Compare with the GLR tables
-See how isomorphic the way BTYacc and the way the GLR adjustments in
-Bison are compatible.  *As much as possible* one should try to use the
-same implementation in the Bison executables.  I insist: it should be
-very feasible to use the very same conflict tables.
-
-** Adjust the skeletons
-Import the skeletons for C and C++.
-
-
 * Precedence
 
 ** Partial order
index 57202fa6a972ad76dd04285d6e738576ed0ad3b3..16dc15c9fb7d3edce634f2b4d696690b879379a3 100755 (executable)
--- a/bootstrap
+++ b/bootstrap
@@ -1,6 +1,6 @@
 #! /bin/sh
 # Print a version string.
-scriptversion=2012-01-18.21; # UTC
+scriptversion=2012-04-16.16; # UTC
 
 # Bootstrap this package from checked-out sources.
 
@@ -423,7 +423,7 @@ check_versions() {
       $use_git || continue
     fi
     # Honor $APP variables ($TAR, $AUTOCONF, etc.)
-    appvar=`echo $app | tr '[a-z]-' '[A-Z]_'`
+    appvar=`echo $app | LC_ALL=C tr '[a-z]-' '[A-Z]_'`
     test "$appvar" = TAR && appvar=AMTAR
     case $appvar in
         GZIP) ;; # Do not use $GZIP:  it contains gzip options.
@@ -604,7 +604,7 @@ if $bootstrap_sync; then
 fi
 
 gnulib_tool=$GNULIB_SRCDIR/gnulib-tool
-<$gnulib_tool || exit
+<$gnulib_tool || exit $?
 
 # Get translations.
 
@@ -807,7 +807,8 @@ for file in $gnulib_files; do
   symlink_to_dir "$GNULIB_SRCDIR" $file || exit
 done
 
-bootstrap_post_import_hook
+bootstrap_post_import_hook \
+  || { echo >&2 "$me: bootstrap_post_import_hook failed"; exit 1; }
 
 # Remove any dangling symlink matching "*.m4" or "*.[ch]" in some
 # gnulib-populated directories.  Such .m4 files would cause aclocal to fail.
@@ -862,6 +863,8 @@ if test $with_gettext = yes; then
     }
   ' po/Makevars.template >po/Makevars || exit 1
 
+  cat $GNULIB_SRCDIR/build-aux/po/Makefile.in.in > po/Makefile.in.in || exit 1
+
   if test -d runtime-po; then
     # Similarly for runtime-po/Makevars, but not quite the same.
     rm -f runtime-po/Makevars
index 9e74861d59c6f470a99e315bff11b45a2979b172..e6243a8d3a731ba3f9107916f23d8f9117534789 100644 (file)
@@ -85,4 +85,4 @@ bootstrap_epilogue()
 # the bootstrap entry from the file .x-update-copyright, and add any
 # needed copyright years to the copyright statement in the bootstrap
 # script.
-# FIXME: temporary bootstrap_sync=true
+bootstrap_sync=true
index 4005b50da4538ce1920e9d9075a03ad1e8a6e75a..763fe2a9770ad0a8370498690ef4d330da4370b4 100644 (file)
@@ -116,6 +116,9 @@ AC_SUBST([YACC_LIBRARY])
 
 # Checks for programs.
 AC_PROG_LEX
+if test "$FLEX" != yes; then
+  AC_MSG_ERROR([Flex is required])
+fi
 AC_PROG_YACC
 AC_PROG_RANLIB
 AC_PROG_GNU_M4
index dcf2c007f4091b27d2ffc4e15f107fcd8fbdb6de..509ee123f5997afca57ae67bf0df578cb5de605a 100644 (file)
@@ -215,23 +215,19 @@ b4_token_enums(b4_tokens)
 [[typedef int YYSTYPE;
 # define YYSTYPE_IS_TRIVIAL 1]])])[
 #endif
-
+]b4_locations_if([[
 #if ! defined YYLTYPE && ! defined YYLTYPE_IS_DECLARED
 typedef struct YYLTYPE
 {
-]b4_locations_if([
   int first_line;
   int first_column;
   int last_line;
   int last_column;
-],[
-  char yydummy;
-])[
 } YYLTYPE;
 # define YYLTYPE_IS_DECLARED 1
 # define YYLTYPE_IS_TRIVIAL 1
 #endif
-
+]])[
 ]b4_percent_code_get([[provides]])[]dnl
 ])
 
@@ -511,9 +507,8 @@ m4_if(b4_prefix[], [yy], [],
 #define b4_prefix[]char yychar
 #define b4_prefix[]lval yylval
 #define b4_prefix[]lloc yylloc])],
-[YYSTYPE yylval;
-
-YYLTYPE yylloc;
+[YYSTYPE yylval;]b4_locations_if([[
+YYLTYPE yylloc;]])[
 
 int yynerrs;
 int yychar;])[
@@ -716,9 +711,9 @@ struct yyGLRState {
     yySemanticOption* yyfirstVal;
     /** Semantic value for this state.  */
     YYSTYPE yysval;
-  } yysemantics;
+  } yysemantics;]b4_locations_if([[
   /** Source location for this state.  */
-  YYLTYPE yyloc;
+  YYLTYPE yyloc;]])[
 };
 
 struct yyGLRStateSet {
@@ -740,8 +735,8 @@ struct yySemanticOption {
   yyGLRState* yystate;
   /** The lookahead for this reduction.  */
   int yyrawchar;
-  YYSTYPE yyval;
-  YYLTYPE yyloc;
+  YYSTYPE yyval;]b4_locations_if([[
+  YYLTYPE yyloc;]])[
   /** Next sibling in chain of options.  To facilitate merging,
    *  options are chained in decreasing order by address.  */
   yySemanticOption* yynext;
@@ -762,8 +757,8 @@ struct yyGLRStack {
 [
   int yyerrcnt;
   int yyrawchar;
-  YYSTYPE yyval;
-  YYLTYPE yyloc;
+  YYSTYPE yyval;]b4_locations_if([[
+  YYLTYPE yyloc;]])[
 ])[
   YYJMP_BUF yyexception_buffer;
   yyGLRStackItem* yyitems;
@@ -829,8 +824,8 @@ yyfillin (yyGLRStackItem *yyvsp, int yylow0, int yylow1)
       else
         /* The effect of using yysval or yyloc (in an immediate rule) is
          * undefined.  */
-        yyvsp[i].yystate.yysemantics.yyfirstVal = YY_NULL;
-      yyvsp[i].yystate.yyloc = s->yyloc;
+        yyvsp[i].yystate.yysemantics.yyfirstVal = YY_NULL;]b4_locations_if([[
+      yyvsp[i].yystate.yyloc = s->yyloc;]])[
       s = yyvsp[i].yystate.yypred = s->yypred;
     }
 }
index 434b6e67096a33bf5aa68f809d2ba7d8aa64a5a9..4aac8d3d9f40d71ce4e5fd93e5c20ec5477ee0b0 100644 (file)
@@ -6006,7 +6006,7 @@ This function is available if either the @samp{%define api.push-pull push} or
 @samp{%define api.push-pull both} declaration is used.
 @xref{Push Decl, ,A Push Parser}.
 
-@deftypefun yypstate *yypstate_new (void)
+@deftypefun {yypstate*} yypstate_new (void)
 The function will return a valid parser instance if there was memory available
 or 0 if no memory was available.
 In impure mode, it will also return 0 if a parser instance is currently
@@ -6439,17 +6439,17 @@ union specified by the @code{%union} declaration.
 @xref{Action Types, ,Data Types of Values in Actions}.
 @end deffn
 
-@deffn {Macro} YYABORT;
+@deffn {Macro} YYABORT @code{;}
 Return immediately from @code{yyparse}, indicating failure.
 @xref{Parser Function, ,The Parser Function @code{yyparse}}.
 @end deffn
 
-@deffn {Macro} YYACCEPT;
+@deffn {Macro} YYACCEPT @code{;}
 Return immediately from @code{yyparse}, indicating success.
 @xref{Parser Function, ,The Parser Function @code{yyparse}}.
 @end deffn
 
-@deffn {Macro} YYBACKUP (@var{token}, @var{value});
+@deffn {Macro} YYBACKUP (@var{token}, @var{value})@code{;}
 @findex YYBACKUP
 Unshift a token.  This macro is allowed only for rules that reduce
 a single value, and only when there is no lookahead token.
@@ -6467,18 +6467,15 @@ In either case, the rest of the action is not executed.
 @end deffn
 
 @deffn {Macro} YYEMPTY
-@vindex YYEMPTY
 Value stored in @code{yychar} when there is no lookahead token.
 @end deffn
 
 @deffn {Macro} YYEOF
-@vindex YYEOF
 Value stored in @code{yychar} when the lookahead is the end of the input
 stream.
 @end deffn
 
-@deffn {Macro} YYERROR;
-@findex YYERROR
+@deffn {Macro} YYERROR @code{;}
 Cause an immediate syntax error.  This statement initiates error
 recovery just as if the parser itself had detected an error; however, it
 does not call @code{yyerror}, and does not print any message.  If you
@@ -6502,7 +6499,7 @@ Actions}).
 @xref{Lookahead, ,Lookahead Tokens}.
 @end deffn
 
-@deffn {Macro} yyclearin;
+@deffn {Macro} yyclearin @code{;}
 Discard the current lookahead token.  This is useful primarily in
 error rules.
 Do not invoke @code{yyclearin} in a deferred semantic action (@pxref{GLR
@@ -6510,7 +6507,7 @@ Semantic Actions}).
 @xref{Error Recovery}.
 @end deffn
 
-@deffn {Macro} yyerrok;
+@deffn {Macro} yyerrok @code{;}
 Resume generating error messages immediately for subsequent syntax
 errors.  This is useful primarily in error rules.
 @xref{Error Recovery}.
@@ -10827,20 +10824,20 @@ The location information of the grouping made by the current rule.
 @xref{Java Location Values}.
 @end defvar
 
-@deffn {Statement} {return YYABORT;}
+@deftypefn {Statement} return YYABORT @code{;}
 Return immediately from the parser, indicating failure.
 @xref{Java Parser Interface}.
-@end deffn
+@end deftypefn
 
-@deffn {Statement} {return YYACCEPT;}
+@deftypefn {Statement} return YYACCEPT @code{;}
 Return immediately from the parser, indicating success.
 @xref{Java Parser Interface}.
-@end deffn
+@end deftypefn
 
-@deffn {Statement} {return YYERROR;}
-Start error recovery without printing an error message.
+@deftypefn {Statement} {return} YYERROR @code{;}
+Start error recovery (without printing an error message).
 @xref{Error Recovery}.
-@end deffn
+@end deftypefn
 
 @deftypefn {Function} {boolean} recovering ()
 Return whether error recovery is being done. In this state, the parser
@@ -11856,10 +11853,11 @@ after a syntax error.  @xref{Error Recovery}.
 @end deffn
 
 @deffn {Macro} YYERROR
-Macro to pretend that a syntax error has just been detected: call
-@code{yyerror} and then perform normal error recovery if possible
-(@pxref{Error Recovery}), or (if recovery is impossible) make
-@code{yyparse} return 1.  @xref{Error Recovery}.
+Cause an immediate syntax error.  This statement initiates error
+recovery just as if the parser itself had detected an error; however, it
+does not call @code{yyerror}, and does not print any message.  If you
+want to print an error message, call @code{yyerror} explicitly before
+the @samp{YYERROR;} statement.  @xref{Error Recovery}.
 
 For Java parsers, this functionality is invoked using @code{return YYERROR;}
 instead.
diff --git a/gnulib b/gnulib
index 0e9d9267fa36c5493b36c0a2b2e422da101ee4b4..1a0e0aefd4b1fbef0c6e5d990bc01499fd153a0d 160000 (submodule)
--- a/gnulib
+++ b/gnulib
@@ -1 +1 @@
-Subproject commit 0e9d9267fa36c5493b36c0a2b2e422da101ee4b4
+Subproject commit 1a0e0aefd4b1fbef0c6e5d990bc01499fd153a0d
diff --git a/m4/flex.m4 b/m4/flex.m4
new file mode 100644 (file)
index 0000000..2073a0d
--- /dev/null
@@ -0,0 +1,113 @@
+# flex.m4 serial 1
+# Copyright (C) 2012 Free Software Foundation, Inc.
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AC_PROG_LEX
+# -----------
+# Look for flex or lex.  Set its associated library to LEXLIB.
+# Check if lex declares yytext as a char * by default, not a char[].
+AN_MAKEVAR([LEX],  [AC_PROG_LEX])
+AN_PROGRAM([lex],  [AC_PROG_LEX])
+AN_PROGRAM([flex], [AC_PROG_LEX])
+AC_DEFUN_ONCE([AC_PROG_LEX],
+[AC_CHECK_PROGS([LEX], [flex lex], [:])
+if test "x$LEX" != "x:"; then
+  _AC_PROG_LEX_YYTEXT_DECL
+fi])
+
+
+# _AC_PROG_LEX_YYTEXT_DECL
+# ------------------------
+# Check whether this is Flex, for the Lex output root, the Lex library,
+# and whether Lex declares yytext as a char * by default.
+m4_define([_AC_PROG_LEX_YYTEXT_DECL],
+[AC_CACHE_CHECK([whether lex is flex],
+                [ac_cv_prog_flex],
+[cat >conftest.l <<_ACEOF[
+%option debug nodefault noinput nounput noyywrap never-interactive
+%x SC_CONF_TEST
+%%
+a { BEGIN SC_CONF_TEST; }
+]_ACEOF
+if _AC_DO_VAR([LEX conftest.l]); then
+  ac_cv_prog_flex=yes
+else
+  ac_cv_prog_flex=no
+fi
+])
+FLEX=
+if test $ac_cv_prog_flex = yes; then
+  AC_SUBST([FLEX], [yes])dnl
+fi
+
+cat >conftest.l <<_ACEOF[
+%%
+a { ECHO; }
+b { REJECT; }
+c { yymore (); }
+d { yyless (1); }
+e { /* IRIX 6.5 flex 2.5.4 underquotes its yyless argument.  */
+    yyless ((input () != 0)); }
+f { unput (yytext[0]); }
+. { BEGIN INITIAL; }
+%%
+#ifdef YYTEXT_POINTER
+extern char *yytext;
+#endif
+int
+main (void)
+{
+  return ! yylex () + ! yywrap ();
+}
+]_ACEOF
+_AC_DO_VAR([LEX conftest.l])
+AC_CACHE_CHECK([lex output file root], [ac_cv_prog_lex_root], [
+if test -f lex.yy.c; then
+  ac_cv_prog_lex_root=lex.yy
+elif test -f lexyy.c; then
+  ac_cv_prog_lex_root=lexyy
+else
+  AC_MSG_ERROR([cannot find output from $LEX; giving up])
+fi])
+AC_SUBST([LEX_OUTPUT_ROOT], [$ac_cv_prog_lex_root])dnl
+
+if test -z "${LEXLIB+set}"; then
+  AC_CACHE_CHECK([lex library], [ac_cv_lib_lex], [
+    ac_save_LIBS=$LIBS
+    ac_cv_lib_lex='none needed'
+    for ac_lib in '' -lfl -ll; do
+      LIBS="$ac_lib $ac_save_LIBS"
+      AC_LINK_IFELSE([AC_LANG_DEFINES_PROVIDED[`cat $LEX_OUTPUT_ROOT.c`]],
+       [ac_cv_lib_lex=$ac_lib])
+      test "$ac_cv_lib_lex" != 'none needed' && break
+    done
+    LIBS=$ac_save_LIBS
+  ])
+  test "$ac_cv_lib_lex" != 'none needed' && LEXLIB=$ac_cv_lib_lex
+fi
+AC_SUBST([LEXLIB])
+
+AC_CACHE_CHECK([whether yytext is a pointer],
+               [ac_cv_prog_lex_yytext_pointer],
+[# POSIX says lex can declare yytext either as a pointer or an array; the
+# default is implementation-dependent.  Figure out which it is, since
+# not all implementations provide the %pointer and %array declarations.
+ac_cv_prog_lex_yytext_pointer=no
+ac_save_LIBS=$LIBS
+LIBS="$LEXLIB $ac_save_LIBS"
+AC_LINK_IFELSE([AC_LANG_DEFINES_PROVIDED
+  [#define YYTEXT_POINTER 1
+`cat $LEX_OUTPUT_ROOT.c`]],
+  [ac_cv_prog_lex_yytext_pointer=yes])
+LIBS=$ac_save_LIBS
+])
+dnl
+if test $ac_cv_prog_lex_yytext_pointer = yes; then
+  AC_DEFINE([YYTEXT_POINTER], [1],
+           [Define to 1 if `lex' declares `yytext' as a `char *' by default,
+            not a `char[]'.])
+fi
+rm -f conftest.l $LEX_OUTPUT_ROOT.c
+])# _AC_PROG_LEX_YYTEXT_DECL
index f4be358c2b97736cda5a0d543fa3d34d3cde40bd..0db9c1a19fbbdbf8728ec8d9c5a020d070ec23b2 160000 (submodule)
@@ -1 +1 @@
-Subproject commit f4be358c2b97736cda5a0d543fa3d34d3cde40bd
+Subproject commit 0db9c1a19fbbdbf8728ec8d9c5a020d070ec23b2
index ff39787c70b20486cf5ce3aab8b1f04daf858bb4..02e45597f8261791edd1bfcb596c9c3c6c8ea601 100644 (file)
@@ -466,17 +466,26 @@ m4_define([AT_FULL_COMPILE], [
 ## Running a generated parser.  ##
 ## ---------------------------- ##
 
+
 # AT_PARSER_CHECK(COMMAND, EXIT-STATUS, EXPOUT, EXPERR, [PRE])
 # ------------------------------------------------------------
 # So that we can run `./testsuite PREPARSER='valgrind -q' for instance.
+#
+# Get rid of spurious messages when compiled with --coverage:
+# +profiling:/[...]/lib/fprintf.gcda:Merge mismatch for summaries
 m4_define([AT_PARSER_CHECK],
-[AT_CHECK([$5 $PREPARSER $1], [$2], [$3], [$4])])
+[AT_CHECK([$5 $PREPARSER $1], [$2], [$3], [stderr])
+AT_CHECK([sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr],
+         [0], [], [$4])
+])
+
 
 # AT_JAVA_PARSER_CHECK(COMMAND, EXIT-STATUS, EXPOUT, EXPERR, [PRE])
 # -----------------------------------------------------------------
 m4_define([AT_JAVA_PARSER_CHECK],
 [AT_CHECK([$5[ $SHELL ../../../javaexec.sh ]$1], [$2], [$3], [$4])])
 
+
 # AT_TEST_TABLES_AND_PARSE(TITLE, COND-VALUE, TEST-SPEC,
 #                          DECLS, GRAMMAR, INPUT,
 #                          BISON-STDERR, TABLES-OR-LAST-STATE,