假设我想用C编写一个小型编译器,它从选择的自定义语言(排版)生成PHP字节码。我该怎么做呢?PHP提供API吗?或者我是否需要破解部分默认PHP编译器?
Edit:更一般地说,我可以用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之间的转换目前存在。