我正在寻找一种语言解析器用PHP编写。
目标是阅读自定义语言,而不是阅读PHP代码。
基本上,我想指定语言语法,给出代码片段并返回表示它的结构。然后我可以遍历该结构来执行代码片段。我相信结构将是 AST ,但我不知道这是否是唯一的选择(我与解析器及其词汇不相关)。
我查看了Doctrine DQL parser,但它似乎不是通用语言解析器。
答案 0 :(得分:6)
这不是一个完整的列表,如果您正在寻找PHP运行时词法分析器/解析器,NikiC会有一个特殊项目Phlexy。
您可以在PHP-Parser内找到他编写的用例。这是PHP语言的解析器,带有抽象语法树(AST),部分是从语法文件生成的。
我从来没有把它做到这么远,从我多年来的研究来看,PHP用户空间中没有很多这样的项目,NikiC的这两个库真的是一个非常好的例子。
如果你正在寻找一个遵循更多flex规则的词法分析器,我在XDOM中写了一个lexes CSS选择器语法,它也是一个解析器,但解析器不是基于语法文件虽然它存在于CSS规范中。词法分析器基于.lex文件。
答案 1 :(得分:-1)
据说php有一个可以做词法分析器/解析器的库: http://php.net/manual/en/parle.examples.php 对于Windows,看起来您可以获取预编译的二进制文件。 http://php.net/manual/en/parle.installation.php 说这里可用的版本:http://windows.php.net/downloads/pecl/releases/parle/