On Fri, 15 Dec 2006, Paul Eggert wrote: > >> In theory, it should be > >> possible to have any of the following combinations: > >> > >> impure LALR(1) pull C > >> pure LALR(1) pull C > >> impure GLR pull C > >> pure GLR pull C > >> impure LALR(1) push C > >> pure LALR(1) push C > >> impure GLR push C > >> pure GLR push C > >> (Now repeat the list for C++.) > > In practice, I think nobody cares about impure parsers (i.e., parsers > with a single global static state) except for the traditional case > (LALR(1) pull C). As far as I'm concerned, we can drop support for > impure parsers, except for that special case. Will that help simplify > things?
I agree completely and that's what we're doing now. I meant the above to demonstrate that %push-parser and %pure-parser are logically orthogonal concerns so declaring them together should not be an error. Of course, we've decided that all Bison-generated push parsers are pure, so declaring them together should be required or redundant (my preference) instead. > I haven't been following the technical details Bob and Paul, I can't seem to communicate this adequately in English, so I think the best way to explain my view is to write the patch that implements it. It should be very short, but it may be a few hours before I can get some time. Can we pick up the discussion again after that?
