+ }
+ catch (...)
+ {
+ YYCDEBUG << "Exception caught: cleaning lookahead and stack"
+ << std::endl;
+ // Do not try to display the values of the reclaimed symbols,
+ // as their printer might throw an exception.
+ if (yychar != yyempty_)
+ {
+ /* Make sure we have latest lookahead translation. See
+ comments at user semantic actions for why this is
+ necessary. */
+ yytoken = yytranslate_ (yychar);
+ yydestruct_ (YY_NULL, yytoken, &yylval, &yylloc);
+ }
+
+ while (1 < yystate_stack_.height ())
+ {
+ yydestruct_ (YY_NULL,
+ yystos_[yystate_stack_[0]],
+ &yysemantic_stack_[0],
+ &yylocation_stack_[0]);
+ yypop_ ();
+ }
+ throw;
+ }