]> git.saurik.com Git - bison.git/commitdiff
lalr1.cc: document exception safety
authorAkim Demaille <akim@lrde.epita.fr>
Mon, 1 Oct 2012 09:41:26 +0000 (11:41 +0200)
committerAkim Demaille <akim@lrde.epita.fr>
Sat, 6 Oct 2012 17:53:45 +0000 (19:53 +0200)
* NEWS: here.
* doc/bison.texi (Destructor Decl, C++ Parser Interface): and there.

NEWS
doc/bison.texi

diff --git a/NEWS b/NEWS
index c8a4d3129e6376f1aef533f40f05860c4bc80da7..81afe649c4691761f9958c65f9e09e2883d47dcd 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -39,6 +39,15 @@ GNU Bison NEWS
 
   will use YY_CALC_LIB_PARSE_H_INCLUDED as guard.
 
 
   will use YY_CALC_LIB_PARSE_H_INCLUDED as guard.
 
+** Exception safety (lalr1.cc)
+
+  The parse function now catches exceptions, uses the %destructors to
+  release memory (the lookahead symbol and the symbols pushed on the stack)
+  before rethrowing the exception.
+
+  This feature is somewhat experimental.  User feedback would be
+  appreciated.
+
 * Noteworthy changes in release 2.6.2 (2012-08-03) [stable]
 
 ** Bug fixes
 * Noteworthy changes in release 2.6.2 (2012-08-03) [stable]
 
 ** Bug fixes
index ba18d9a9d32ff700b1d2e9c47ce757b8dd194531..ce1ebd116d11ac9993d85517a6ec369092f9bf07 100644 (file)
@@ -4701,6 +4701,10 @@ incoming terminals during the second phase of error recovery,
 the current lookahead and the entire stack (except the current
 right-hand side symbols) when the parser returns immediately, and
 @item
 the current lookahead and the entire stack (except the current
 right-hand side symbols) when the parser returns immediately, and
 @item
+the current lookahead and the entire stack (including the current right-hand
+side symbols) when the C++ parser (@file{lalr1.cc}) catches an exception in
+@code{parse},
+@item
 the start symbol, when the parser succeeds.
 @end itemize
 
 the start symbol, when the parser succeeds.
 @end itemize
 
@@ -9415,6 +9419,11 @@ Build a new parser object.  There are no arguments by default, unless
 
 @deftypemethod {parser} {int} parse ()
 Run the syntactic analysis, and return 0 on success, 1 otherwise.
 
 @deftypemethod {parser} {int} parse ()
 Run the syntactic analysis, and return 0 on success, 1 otherwise.
+
+@cindex exceptions
+The whole function is wrapped in a @code{try}/@code{catch} block, so that
+when an exception is thrown, the @code{%destructor}s are called to release
+the lookahead symbol, and the symbols pushed on the stack.
 @end deftypemethod
 
 @deftypemethod {parser} {std::ostream&} debug_stream ()
 @end deftypemethod
 
 @deftypemethod {parser} {std::ostream&} debug_stream ()