]> git.saurik.com Git - bison.git/commitdiff
yysyntax_error: improve invocation readability.
authorJoel E. Denny <joeldenny@joeldenny.org>
Sun, 31 Oct 2010 22:56:34 +0000 (18:56 -0400)
committerJoel E. Denny <joeldenny@joeldenny.org>
Sun, 31 Oct 2010 22:59:20 +0000 (18:59 -0400)
* data/yacc.c (yyparse, yypush_parse): For yysyntax_error
invocation, get rid of the while loop, which is misleading
because there are really at most two iterations.

ChangeLog
data/yacc.c

index 1ea3e5e4b109e316f6e6a3249ff36fcff9a77e9c..3f7a2ee05899b71c450fa966b8024aac2ec48fa4 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2010-10-31  Joel E. Denny  <joeldenny@joeldenny.org>
+
+       yysyntax_error: improve invocation readability.
+       * data/yacc.c (yyparse, yypush_parse): For yysyntax_error
+       invocation, get rid of the while loop, which is misleading
+       because there are really at most two iterations.
+
 2010-10-31  Joel E. Denny  <joeldenny@joeldenny.org>
 
        * ChangeLog: Correct some errors in previous entries.
index e41e2e9ca06f5815ff3e326fb707d67f3f126a13..a32971767640f77c6e754b3ad2dabce7a3a74be0 100644 (file)
@@ -1477,28 +1477,34 @@ yyerrlab:
 #if ! YYERROR_VERBOSE
       yyerror (]b4_yyerror_args[YY_("syntax error"));
 #else
-      while (1)
-        {
-          int yysyntax_error_status =
-            yysyntax_error (&yymsg_alloc, &yymsg, yystate, yytoken);
-          if (yysyntax_error_status == 2 && 0 < yymsg_alloc)
-            {
-              if (yymsg != yymsgbuf)
-                YYSTACK_FREE (yymsg);
-              yymsg = (char *) YYSTACK_ALLOC (yymsg_alloc);
-              if (yymsg)
-                continue;
-              yymsg = yymsgbuf;
-              yymsg_alloc = sizeof yymsgbuf;
-            }
-          if (yysyntax_error_status == 0)
-            yyerror (]b4_yyerror_args[yymsg);
-          else
-            yyerror (]b4_yyerror_args[YY_("syntax error"));
-          if (yysyntax_error_status == 2)
-            goto yyexhaustedlab;
-          break;
-        }
+# define YYSYNTAX_ERROR yysyntax_error (&yymsg_alloc, &yymsg, yystate, \
+                                        yytoken)
+      {
+        char const *yymsgp = YY_("syntax error");
+        int yysyntax_error_status = YYSYNTAX_ERROR;
+        if (yysyntax_error_status == 0)
+          yymsgp = yymsg;
+        else if (yysyntax_error_status == 2 && 0 < yymsg_alloc)
+          {
+            if (yymsg != yymsgbuf)
+              YYSTACK_FREE (yymsg);
+            yymsg = (char *) YYSTACK_ALLOC (yymsg_alloc);
+            if (!yymsg)
+              {
+                yymsg = yymsgbuf;
+                yymsg_alloc = sizeof yymsgbuf;
+              }
+            else
+              {
+                yysyntax_error_status = YYSYNTAX_ERROR;
+                yymsgp = yymsg;
+              }
+          }
+        yyerror (]b4_yyerror_args[yymsgp);
+        if (yysyntax_error_status == 2)
+          goto yyexhaustedlab;
+      }
+# undef YYSYNTAX_ERROR
 #endif
     }