Hi List,
This is the only place I found to ask for "lemon parser" error.
When trying to use the "%token_destructor" directive:
%include {
#include <stdio.h>
void token_dtor (struct Token * t)
{
fprintf(stderr, "In token_destructor: t -> value=%s\n", t -> value);
}
}
%token_destructor { token_dtor($$); }
I got the following error:
error: too many arguments to function 'yy_destructor'
I tried to understand how "lemon" generated the calls for that function and
found that:
1) The definition of "yy_destructor" is with only 2 arguments:
static void yy_destructor(YYCODETYPE yymajor, YYMINORTYPE *yypminor){
switch( yymajor ){
/* Here is inserted the actions which take place when a
...
2) "Lemon" generates different calls to "yy_destructor", sometimes with 2 or
3 parameters :
yy_destructor( yymajor, &yytos->minor); <- HERE with 2 arguments,
which is fine
yy_destructor(yypParser,4,&yymsp[0].minor); <- HERE with 3 arguments, which
is an error
yy_destructor(yypParser,5,&yymsp[-2].minor); <- same
yy_destructor(yypParser,6,&yymsp[0].minor); <- same
...
Sometime, the "yy_destructor" si called with 2 arguments as defined and some
other time,
it's called with 3 arguments.
Is it a bug or am I missing something?
Thanks in advance
Frederic
_______________________________________________
sqlite-users mailing list
[email protected]
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users