假设我想用 C 编写一个小型编译器,它可以从选择的自定义语言 ( typoscript ) 生成 PHP 字节码。我该怎么做?PHP 是否提供 API?或者我需要破解默认 PHP 编译器的部分内容吗?
编辑:在更一般的说明中,我可以用 C 语言编写它并生成 PHP 操作码(因此它可以与其他 PHP 代码兼容),而不是用 PHP 编写解析器吗?
编辑 2:这可以作为 PHP 的扩展来完成,所以我会研究一下。
假设我想用 C 编写一个小型编译器,它可以从选择的自定义语言 ( typoscript ) 生成 PHP 字节码。我该怎么做?PHP 是否提供 API?或者我需要破解默认 PHP 编译器的部分内容吗?
编辑:在更一般的说明中,我可以用 C 语言编写它并生成 PHP 操作码(因此它可以与其他 PHP 代码兼容),而不是用 PHP 编写解析器吗?
编辑 2:这可以作为 PHP 的扩展来完成,所以我会研究一下。
出色地。字节码的生成是一回事,然后是字节码的加载。
对于生成的字节码的加载,我建议查看 APC(操作码缓存模块)。它可以读取操作码并执行它。改为适应读取您的字节码应该相当简单。至于字节码的生成,我认为你不会在 PHP 自己的源代码树之外找到任何东西。(当然,您可以从正在运行的 php 引擎中转储操作码,但这不是您要的)
但我不得不问你期望得到什么。由于唯一的 PHP 理解 PHP 字节码,因此代码仍然需要在 PHP 的虚拟机中运行。因此,您只需在解析和解释源代码时节省 cpu 时间。通过使用 APC 进行缓存,即使是“延迟”也消失了。
您可以使用 Facebook ( http://en.wikipedia.org/wiki/HipHop_for_PHP ) 中的 HipHop 将 PHP 代码编译为二进制文件。但是,我认为目前不存在 Typo 脚本和 PHP 之间的转换。