On Thu, Sep 21, 2006 at 11:13:54AM +0000, Frans Englich wrote:
> On Saturday 16 September 2006 14:53, Bob Rossi wrote:
> > Hi,
> >
> > The user interface to the push parser currently looks like this:
> >
> > int
> > yyparse (void)
> > {
> > struct yypvars *ctx = yypvarsinit ();
> > int status;
> > do {
> > yychar_set (ctx, yylex ());
> > yylval_set (ctx, yylval);
> > #ifdef YYLTYPE_IS_TRIVIAL
> > yylloc_set (ctx, yylloc);
> > #endif
> > yypushparse (ctx);
> > status = yyresult_get (ctx);
> > } while (status == 4);
> > free (ctx);
> > return status;
> > }
> >
> > In particular, I don't like this line:
> > } while (status == 4);
> >
> > The number 4 should be put in either a #define, or a function call.
> > Which one is preferable? The #define would probably be more efficient.
> > If so, what would be a good name?
>
> How about using an enum? It would be a pity to use defines since they're
> evil,
> and there has been efforts to remove defines in favour of enums(yytokentype).
> Enums increases type safety.
Paul, what do you think of this idea? Either we could leave what you
installed last night, or we could make an enum that represents all the
return values yypushparse (and yyparse) could return, and have the user
compare the result to the enum.
Bob Rossi