Bison - 推送和纯解析器的附加参数

Fla*_*ius 6 c grammar parsing bison parser-generator

如何将一个aditional参数(不是类型的标记辅助YYSTYPE)传递给yypush_parse()函数?

解析器确实是可重入的,但是这个aditional变量对于我需要集成解析器的应用程序的线程安全性至关重要(它是PHP扩展,所以我们讨论的是TSRM).

我不能只是摆脱那个参数,因为在动作代码中我​​将调用函数,这些函数将以用户可访问的形式生成AST.

我试图破解YYPUSH_DECLS它并且就声明函数而言它起作用,但是几千个LOC下来实现了yypush_parse,我看不到任何方法来覆盖函数签名的实现yypush_parse开始.

YYPARSE_PARAM 仅在解析器不是推送器时使用(据我所知),但在我的情况下,我需要它是因为我必须在处理循环中执行的操作,在lexing之后和添加新的之前令牌到解析堆栈.

所以我想知道是否有%directive可能有所帮助的东西.

另一方面YYPARSE_PARAM,无论它是什么类型的解析器,我都认为应该根据它的定义使用它.遗憾的是,它不是.

Fla*_*ius 1

%parse-paramYYPARSE_PARAM已弃用,不应使用。