> Le 18 août 2015 à 16:40, Kaz Kylheku <[email protected]> a écrit :
>
> On 18.08.2015 06:35, I blundered:
>> Hi Akim,
>> The example I gave is (to my best knowledge and effort)
>> POSIX-conforming Yacc code.
>
> Hi Akim, and everyone,
>
> Sorry for the above nonsense; of course it obviously is
> not due to the
>
> %pure-parser
> %parse-param{private_context *ctx}
>
> which is important to the issue!
>
> If you use an extension, then the yacc implementation
> can put whatever it wants in y.tab.h, of course;
> conformance has largely gone out the window.
>
> Though not standard, %pure-parser and %parse-param are implemented by other
> parser generators, though, like Berkeley Yacc. (Because reentrant parsing is
> a very
> important extension!)
>
> On the other hand, %code doesn't port to byacc:
>
> byacc: e - line 10 of "test.y", syntax error
> %code { abc }
> ^
Well, in that case I would include the forward declaration of your struct in
file that include your *.tab.h.
Or, given that the declaration of yyparse is issued quite late in the *.tab.h
file, couldn't you portably use %{...%} to forward declare your
private_context? The same mechanism as the one used to declare the symbols
needed by yystype.