Hi Akim. On 07/14/2012 09:24 AM, Akim Demaille wrote: > > Le 14 juil. 2012 à 09:13, Akim Demaille a écrit : > >> The failure is due to the input: >> >> %{ >> int yylex () { return 0; } >> void yyerror (const char *s) { return; } >> %} >> %% >> foobar : 'f' 'o' 'o' 'b' 'a' 'r' {}; >> >> %{%} goes into the header when there is one, and it also goes >> in the implementation file, so, since glr.c include its header, >> you get two definitions. > > No, that's not it, I overlooked the test case. The issue > is simpler: the header file contains the definition of these > guys, and it is included in two different compilation units. > > Attached is an updated patch. > >> I don't see it since 2.6 has several improvements in this area. > > I don't see it because this section does not appear in the > header file since the superior %code approach was added. > Thanks for working this out. Feel free to push it out to yacc-work; I'll give that branch more testing today or tomorrow (on Solaris and BSD systems), then we'll be able to merge it into maint.
Thanks, Stefano