From c97dbc46af721eaa7648aa63c3f4c537f9d0932f Mon Sep 17 00:00:00 2001 From: Akim Demaille Date: Sun, 13 Dec 2020 08:28:09 +0100 Subject: [PATCH] glr.c: comment changes * data/skeletons/glr.c (yycompressStack): Reduce scope, and import some nice comments from glr2.cc. --- data/skeletons/glr.c | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/data/skeletons/glr.c b/data/skeletons/glr.c index 8bbb784b..e3550d3a 100644 --- a/data/skeletons/glr.c +++ b/data/skeletons/glr.c @@ -1967,18 +1967,24 @@ yyresolveStack (yyGLRStack* yystackp]b4_user_formals[) return yyok; } +/** Called when returning to deterministic operation to clean up the extra + * stacks. */ static void yycompressStack (yyGLRStack* yystackp) { - yyGLRState* yyp, *yyq, *yyr; + /* yyr is the state after the split point. */ + yyGLRState *yyr; if (yystackp->yytops.yysize != 1 || yystackp->yysplitPoint == YY_NULLPTR) return; - for (yyp = yystackp->yytops.yystates[0], yyq = yyp->yypred, yyr = YY_NULLPTR; - yyp != yystackp->yysplitPoint; - yyr = yyp, yyp = yyq, yyq = yyp->yypred) - yyp->yypred = yyr; + { + yyGLRState *yyp, *yyq; + for (yyp = yystackp->yytops.yystates[0], yyq = yyp->yypred, yyr = YY_NULLPTR; + yyp != yystackp->yysplitPoint; + yyr = yyp, yyp = yyq, yyq = yyp->yypred) + yyp->yypred = yyr; + } yystackp->yyspaceLeft += yystackp->yynextFree - yystackp->yyitems; yystackp->yynextFree = YY_REINTERPRET_CAST (yyGLRStackItem*, yystackp->yysplitPoint) + 1;