【问题标题】:flex+bison in a php extensionphp 扩展中的 flex+bison
【发布时间】:2012-04-09 00:15:18
【问题描述】:

我使用 flex 和 bison 在 c 中创建了一个小型解析器。解析器将结果写入一些全局变量,调用函数从那里读取。

我正在尝试将我的解析器打包为 php 扩展。根据我从 php 文档中了解到的情况,不推荐使用真正的全局变量,因为它们不是线程安全的,我必须改用模块全局变量。

为了使用模块全局变量,您必须传入函数 TSRMLS_DC 作为其最后一个参数。

您知道我是否可以修改 yyparse 以接受 TSRMLS_DC 作为参数。或者是否有其他方法可以访问全局变量?

【问题讨论】:

    标签: yacc php-extension php-internals


    【解决方案1】:

    我不会使用全局变量,而是使用更现代的解析器生成器,它也是可重入的。看看我是如何为meta extension 做的(我使用了稍微改变的柠檬和re2c)。

    【讨论】:

      猜你喜欢
      • 2010-11-03
      • 1970-01-01
      • 1970-01-01
      • 2013-10-24
      • 2011-07-11
      • 2010-11-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多