Let's have C be the reference, and match it elsewhere.  Maybe C is too
verbose and some adjustments are needed, but then that would be done
in another batch of patches.

* data/skeletons/lalr1.cc: Print the stack once we popped after
YYERROR, and before emptying the stack at the end of parsing.
---
 data/skeletons/lalr1.cc | 2 ++
 tests/c++.at            | 1 +
 2 files changed, 3 insertions(+)

diff --git a/data/skeletons/lalr1.cc b/data/skeletons/lalr1.cc
index c338e436..9197a267 100644
--- a/data/skeletons/lalr1.cc
+++ b/data/skeletons/lalr1.cc
@@ -1045,6 +1045,7 @@ b4_dollar_popdef])[]dnl
        this YYERROR.  */
     yypop_ (yylen);
     yylen = 0;
+    YY_STACK_PRINT ();
     goto yyerrlab1;
 
 
@@ -1116,6 +1117,7 @@ b4_dollar_popdef])[]dnl
     /* Do not reclaim the symbols of the rule whose action triggered
        this YYABORT or YYACCEPT.  */
     yypop_ (yylen);
+    YY_STACK_PRINT ();
     while (1 < yystack_.size ())
       {
         yy_destroy_ ("Cleanup: popping", yystack_[0]);
diff --git a/tests/c++.at b/tests/c++.at
index f1afd738..d896af19 100644
--- a/tests/c++.at
+++ b/tests/c++.at
@@ -679,6 +679,7 @@ Entering state 2
 Reading a token: Next token is token EOI ()
 Shifting token EOI ()
 Entering state 3
+Stack now 0 2 3
 Cleanup: popping token EOI ()
 Cleanup: popping nterm expr (40)
 destroy: 40
-- 
2.24.1


Reply via email to