bug-bison
[Top][All Lists]
Advanced

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

Re: incorrect call generated to yydestruct-wrong number of parameters


From: Akim Demaille
Subject: Re: incorrect call generated to yydestruct-wrong number of parameters
Date: Wed, 9 Jun 2010 14:03:23 +0200

Le 9 juin 2010 à 03:39, Zona Walcott a écrit :

> I have specified 2 parameters for parse-param  as:
> %parse-param {void* scan_info, PNode *pp }
> %lex-param {void *scan_info}

This is incorrect.  Use %parse-param several times, once for each argument.

----------------------

   If you use a reentrant parser, you can optionally pass additional
parameter information to it in a reentrant way.  To do so, use the
declaration `%parse-param':

 -- Directive: %parse-param {ARGUMENT-DECLARATION}
     Declare that an argument declared by the braced-code
     ARGUMENT-DECLARATION is an additional `yyparse' argument.  The
     ARGUMENT-DECLARATION is used when declaring functions or
     prototypes.  The last identifier in ARGUMENT-DECLARATION must be
     the argument name.

   Here's an example.  Write this in the parser:

     %parse-param {int *nastiness}
     %parse-param {int *randomness}

Then call the parser like this:

     {
       int nastiness, randomness;
       ...  /* Store proper data in `nastiness' and `randomness'.  */
       value = yyparse (&nastiness, &randomness);
       ...
     }




reply via email to

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