On Thu, 23 Apr 2009, Joel E. Denny wrote: > > > > + /* We need a lookahead either to distinguish different reductions > > > > + (i.e., there are two or more), or to distinguish a reduction from > > > > a > > > > + shift. Otherwise, it is straightforward, and the state is > > > > + `consistent'. However, for states that have any rules, treat only > > > > > > I don't understand "states that have any rules". > > > > It's been a couple of years since I wrote that, but I believe I was trying > > to be consistent with "default rules". I agree it's ugly for many > > reasons. I will change it to "states that have any reductions". > > I realize now that the sentence is clearer if the phrase is completely > removed, so I removed it. That's probably what you were telling me. Let > me know if it's still not clear.
The sentence is wrong when that phrase is removed. I'm not sure what I was thinking. The following patch, pushed to branch-2.5 and master, fixes that. It still might not be as well written as it could be, but at least it's correct. >From 2de160e12ea0b0313a3a4f2120b30a3eeaad0c76 Mon Sep 17 00:00:00 2001 From: Joel E. Denny <[email protected]> Date: Fri, 24 Jul 2009 09:59:42 -0400 Subject: [PATCH] * src/lalr.c (state_lookahead_tokens_count): Correct comment. diff --git a/src/lalr.c b/src/lalr.c index 4aa05b9..8742b4e 100644 --- a/src/lalr.c +++ b/src/lalr.c @@ -344,10 +344,11 @@ state_lookahead_tokens_count (state *s, bool default_reduction_only_for_accept) /* We need a lookahead either to distinguish different reductions (i.e., there are two or more), or to distinguish a reduction from a shift. Otherwise, it is straightforward, and the state is - `consistent'. However, treat only the accepting state as - consistent (because there is never a lookahead token that makes - sense there, and so no lookahead token should be read) if the user - has otherwise disabled default reductions. */ + `consistent'. However, do not treat a state with any reductions as + consistent unless it is the accepting state (because there is never + a lookahead token that makes sense there, and so no lookahead token + should be read) if the user has otherwise disabled default + reductions. */ if (rp->num > 1 || (rp->num == 1 && sp->num && TRANSITION_IS_SHIFT (sp, 0)) || (rp->num == 1 && rp->rules[0]->number != 0 -- 1.5.4.3
