]> git.saurik.com Git - bison.git/blobdiff - ChangeLog
(yyinitGLRStack, yyreturn): Don't call malloc again if the first call
[bison.git] / ChangeLog
index d894b4549ad8d4709e4475b7b4d6af9fdb9388d8..65d48d6464c2ac193ff868b3c2c67b90d5477c38 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,146 @@
+2005-07-18  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Destructor cleanups and regularization among the three skeletons.
+       * NEWS: Document the behavior changes.
+       * data/glr.c (yyrecoverSyntaxError): Don't bother to pop the
+       stack before failing, as the cleanup code will do it for us now.
+       * data/lalr1.cc (yyerrlab): Likewise.
+       * data/glr.c (yyparse): Pop everything off the stack before
+       freeing it, so that destructors get called properly.
+       * data/lalr1.cc (yyreturn): Likewise.
+       * data/yacc.c (yyreturn): Pop and destroy the start symbol, too.
+       This is more consistent.
+       * doc/bison.texinfo (Destructor Decl): Mention more reasons
+       why destructors might be called.  1.875 -> 2.1.
+       (Destructor Decl, Decl Summary, Table of Symbols):
+       Some English-language cleanups for %destructor.
+       * tests/actions.at (_AT_CHECK_PRINTER_AND_DESTRUCTOR):
+       Add output line for destructor of start symbol.
+       * tests/calc.at (AT_CHECK_CALC): Add one to line counts,
+       because of that same extra output line.
+
+       * NEWS: Document minor wording changes in diagnostics of
+       Bison-generated parsers.
+       * data/glr.c (yyMemoryExhausted): Renamed from yyStackOverflow.
+       Remove unused formals.  All uses changed.
+       (yyreportAmbiguity): "ambiguity detected" -> "syntax is ambiguous".
+       (yyparse): Rename yyoverflowlab to yyexhaustedlab.
+       * data/yacc.c (yyparse): "parser stack overflow" -> "memory exhausted".
+       Rename yyoverflowab to yyexhaustedlab.
+       When memory exhaustion occurs during syntax-error reporting,
+       report it separately rather than in a single diagnostic; this
+       eases translation.
+       * doc/bison.texinfo (Memory Management): Renamed from Stack Overflow.
+       (Memory Exhausted): Renamed from Parser Stack Overflow.
+       Revamp wording slightly to prefer "memory exhaustion".
+       * tests/actions.at: "parser stack overflow" -> "memory exhausted".
+
+       * data/c.m4 (b4_yysymprint_generate): Use YYFPRINTF, not fprintf.
+
+       Add i18n support to the GLR skeleton.  Partially fix the C++
+       skeleton; a C++ expert needs to finish this.  Remove debugging
+       msgids; there's little point to having them translated, since they
+       can be understood only by someone who can read the
+       (English-language) source code.
+
+       Generate runtime-po/bison-runtime.pot automatically, so that we
+       don't have to worry about garbage getting in that file.  We'll
+       make sure after the next official release that old msgids don't
+       get lost.  See
+       <http://lists.gnu.org/archive/html/bison-patches/2005-07/msg00119.html>.
+
+       * runtime-po/Makefile.in.in, runtime-po/bison-runtime.pot: Remove.
+       Now auto-generated.
+       * PACKAGING: Don't claim that Gawk, GCC, Perl use this method yet.
+       Fix typos in explanations of the runtime file.
+       * bootstrap: Change gettext keyword from YYI18N to YY_.
+       Use standard Makefile.in.in in runtime-po, since we'll arrange
+       for backward-compatible bison-runtime.po files in a different way.
+       * data/glr.c (YY_): New macro, from yacc.c.
+       (yyuserAction, yyreportAmbiguity, yyreportSyntaxError, yyparse):
+       Translate messages intended for users.
+       (yyreportSyntaxError): Change "virtual memory" to "memory" to match
+       the wording in the other skeletons.  We don't know that the memory
+       is virtual.
+       * data/lalr1.cc (YY_): Renamed from _.  All uses changed.
+       Use same method that yacc.c uses.
+       Don't translate debugging messages.
+       (yy::yyreport_syntax_error): Put in a FIXME for the i18n stuff;
+       it doesn't work (yet), and requires C++ expertise to fix.
+       * data/yacc.c (YY_): Renamed from YY18N.  All uses changed.
+       Move defn to a more logical place, to be consistent with other
+       skeletons.
+       Don't translate debugging messages.
+       Don't assume line numbers fit in unsigned int; use unsigned long fmts.
+       * doc/bison.texinfo: Mention <libintl.h>.  Change glibc cross reference
+       to gettext cross reference.  Add indexing terms.  Mention YYENABLE_NLS.
+       * runtime-po/POTFILES.in: Add data/glr.c, data/lalr1.cc.
+
+       Fix yyerror / yylex test glitches noted by twlevo@xs4all.nl.
+       * tests/cxx-type.at (_AT_TEST_GLR_CXXTYPES): Have yyerror return
+       void, not int.
+       * tests/glr-regression.at (Badly Collapsed GLR States):
+       Likewise.
+       (Improper handling of embedded actions and dollar(-N) in GLR parsers):
+       yylex should return 0 at EOF rather than aborting.
+
+       Improve tests for stack overflow in GLR parser.
+       Problem reported by twlevo@xs4all.nl.
+       * data/glr.c (struct yyGLRStack): Remove yyerrflag member.
+       All uses removed.
+       (yyStackOverflow): Just longjmp, but with value 2 so that caller
+       can handle the problem.
+       (YYCHK1): Use goto (a la yacc.c) rather than setting a flag.
+       (yyparse): New local variable yyresult to record the result.
+       Use result of setjmp to set it, rather than storing itinto
+       struct.
+       (yyDone): Remove label.
+       (yyacceptlab, yyabortlab, yyoverflowlab, yyreturn): New labels,
+       to mimic yacc.c.  Do not discard lookahead if it's EOF (possible
+       if YYABORT is used).
+       * tests/actions.at (_AT_CHECK_PRINTER_AND_DESTRUCTOR): Exit with
+       yyparse status; put status > 1 into diagnostic.
+       Check that status==2 works.
+       * tests/calc.at, tests/cxx-type.at, tests/glr-regression.at:
+       Use exit status 3 for failure to open (which shouldn't happen).
+
+2005-07-17  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * tests/conflicts.at (%nonassoc and eof):  Don't exit with status
+       1 on syntax error; just let yyparse do its thing.
+       * tests/glr-regression.at (Badly Collapsed GLR States): Likewise.
+       * tests/torture.at (AT_DATA_STACK_TORTURE): Likewise.
+       (Exploding the Stack Size with Alloca):
+       (Exploding the Stack Size with Malloc):
+       Expect exit status 2, not 1, since the parser is supposed to blow
+       its stack.  Problem reported by twlevo@xs4all.nl.
+
+       * data/glr.c (yyparse): Don't assume that the initial calls
+       to YYMALLOC succeed; in that case, yyparse incorrectly returned 0.
+       Print a stack-overflow message and fail instead.
+       Initialize the line-number information before creating the stack,
+       so that the stack-overflow message can report line zero safely.
+
+2005-07-14  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Fix problems reported by twlevo@xs4all.nl.
+       * data/glr.c (YYSTACKEXPANDABLE): Don't define if already defined.
+       (yyuserMerge): Provide a default case if b4_mergers is empty.
+       * tests/cxx-type.at (_AT_TEST_GLR_CXXTYPES): Define YYSTACKEXPANDABLE.
+       * tests/glr-regression.at
+       (Improper handling of embedded actions and dollar(-N) in GLR parsers):
+       Add casts to pacify C++ compilers.
+       * tests/glr-regression.at (Improper merging of GLR delayed action
+       sets): Declare yylex before using it.
+       * tests/Makefile.am (maintainer-check-g++): Fix a stray
+       $(GXX) that escaped the renaming of GXX to CXX.  Remove bogus
+       test for valgrind; valgrind is independent of g++.
+       (maintainer-check-posix): Add _POSIX2_VERSION=200112, to check
+       for compatibility with POSIX 1003.1-2001 (if running coreutils).
+       * tests/cxx-type.at (_AT_TEST_GLR_CXXTYPES): Port to stricter C++.
+       Use a destructor, so that we can expand the stack.  Change
+       YYSTYPE to char * so that we can free it.  Cast result of malloc.
+
 2005-07-13  Paul Hilfinger  <hilfingr@CS.Berkeley.EDU>
 
        * data/glr.c (yyuserAction): Fix uninitialized variable that caused