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

时间:2011-04-15 12:19:34

标签: c parsing grammar bison parser-generator

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

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

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

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

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

所以我想知道是否有%directive或其他可能有用的东西。

另一方面,我认为YYPARSE_PARAM应该被定义,无论它是什么类型的解析器。遗憾的是,它不是。

1 个答案:

答案 0 :(得分:1)

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