summary |
shortlog |
log |
commit | commitdiff |
tree
raw |
patch |
inline | side by side (from parent 1:
e8b86af)
* NEWS: here.
* doc/bison.texi (Destructor Decl, C++ Parser Interface): and there.
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
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
@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 ()