Section 3.7.1 page 82 pure parser
---- code ---- int status; yypstate *ps = yypstate_new (); do { status = yypush_parse (ps, yylex (), NULL); } while (status == YYPUSH_MORE); 82 Bison 3.0 yypstate_delete (ps); ---- end code ---- It was reported in a bug report that the yypush_parse() calling sequence description differs from the example. Even if this is the correct interface it can't be used. So, just as below, what is the interface with yylex() and how does information between yylex() and yypush_parse() occur? Since this is a 'pure' parser,, yylval and yylloc can not be global, so what is the correct interface? yypstate can not be a vehicle since it is not based to yylex(), and it can't be global because that violates independence requirement for reentrancy. impure parser (no doubt can not interface with a unicorn). ---- code ---- extern int yychar; int status; yypstate *ps = yypstate_new (); do { yychar = yylex (); status = yypush_parse (ps); } while (status == YYPUSH_MORE); yypstate_delete (ps); ---- end code ---- And yylex() returns an int. What happened to yylval and yylloc? Is the assumption that the example is complete "That’s it." because this example doesn't use this data? Shouldn't data tunneling be mentioned to explain how information generated in the lexor is now passed to the parser? It is true that this is mentioned elsewhere, but so in yyychar? _______________________________________________ help-bison@gnu.org https://lists.gnu.org/mailman/listinfo/help-bison