bug-bison
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Additional Parameter to %merge function in glr-parsers


From: Michel Rosien
Subject: Re: Additional Parameter to %merge function in glr-parsers
Date: Tue, 7 Jun 2005 13:37:42 +0200

Thanks for the reply

If it's not possible, and you only call 'yyparse()' once,
then I think you might as well use a globally or statically declared
pointer to point to the object referenced by your parameter.

This is what I do as a 'quick hack' now but doesn't it kind of defeat the purpose of
%pure-parser?
The problem I have now is that I want to call my parser recursively and then the global pointer
solution doesn't work

I can solve it I think by maintaining some kind of global stack of pointers that I push/pop each time I enter/leave a recursive call of yyparse(). But to me it seems this is a very big work-arround that shouldn't be necessary.

Could it be a good idea to extend yyUserMerge to allow for an extra parameter?

Regards,

Michel Rosien

----- Original Message ----- From: "Laurence Finston" <address@hidden>
To: "Michel Rosien" <address@hidden>
Cc: <address@hidden>
Sent: Tuesday, June 07, 2005 12:06 PM
Subject: Re: Additional Parameter to %merge function in glr-parsers


On Mon, 6 Jun 2005, Michel Rosien wrote:

Is it possible to pass an additional parameter to the %merge function in glr-parsers?

I don't know, and I didn't find anything in the documentation that
addresses this question.

I can pass an additional parameter to the yyparse function with %parse-param {...}
(bison 2.0 documentation, page 63, 107)
How can I pass that same argument to the %merge function?
(bison 2.0 documentation, page 19)

If it's not possible, and you only call 'yyparse()' once,
then I think you might as well use a globally or statically declared
pointer to point to the object referenced by your parameter.  If you
have multiple calls to 'yyparse()', and it needs to be thread-safe,
then I suggest using thread-specific data containing a pointer
to that object (see "man pthread_key_create").  It might also turn
out to be advantageous to use a pointer to a pointer.

Laurence Finston
http://www.gnu.org/software/3dldf/LDF.html







reply via email to

[Prev in Thread] Current Thread [Next in Thread]