|
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 workI 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
[Prev in Thread] | Current Thread | [Next in Thread] |