> Le 18 août 2015 à 16:40, Kaz Kylheku <k...@kylheku.com> 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.