From ad7458633d2f1f20da411de4cfe2e1975198e22e Mon Sep 17 00:00:00 2001 From: Paul Eggert Date: Sun, 22 May 2005 07:31:24 +0000 Subject: [PATCH] (yy::]b4_parser_class_name[::parse): Port yesterday's yacc.c fix. --- data/lalr1.cc | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/data/lalr1.cc b/data/lalr1.cc index 9863ae99..eef5a13c 100644 --- a/data/lalr1.cc +++ b/data/lalr1.cc @@ -544,6 +544,8 @@ yy::]b4_parser_class_name[::set_debug_level (debug_level_type l) int yy::]b4_parser_class_name[::parse () { + int yyresult_; + YYCDEBUG << "Starting parse" << std::endl; yynerrs_ = 0; @@ -813,14 +815,18 @@ yyerrlab1: /* Accept. */ yyacceptlab: - return 0; + yyresult_ = 0; + goto yyreturn; /* Abort. */ yyabortlab: - /* Free the lookahead. */ - yydestruct_ ("Error: discarding lookahead", yyilooka_, &yylval, &yylloc); - yylooka_ = yyempty_; - return 1; + yyresult_ = 1; + goto yyreturn; + +yyreturn: + if (yylooka_ != yyeof_ && yylooka_ != yyempty_) + yydestruct_ ("Error: discarding lookahead", yyilooka_, &yylval, &yylloc); + return yyresult_; } void -- 2.45.2