用PHP编写的语言分析器库

问题描述 投票:7回答:2

我正在寻找一个用PHP编写的语言解析器。

目标是阅读自定义语言,而不是阅读PHP代码。

基本上,我想指定语言语法,给出代码片段并返回表示它的结构。然后我可以遍历该结构来执行代码片段。我相信结构将是一个AST,但我不知道这是否是唯一的选择(我与解析器及其词汇不相关)。

我看了一下Doctrine DQL parser,但它看起来不像是通用语言解析器。

php parsing parser-generator abstract-syntax-tree
2个回答
6
投票

这不是一个完整的列表,如果你正在寻找PHP运行时词法分析器/解析器,一个特殊的项目是NikiC的Phlexy

您可以在PHP-Parser中找到一个用例,也可以在他写的内容中找到。这是PHP语言的解析器,带有抽象语法树(AST),部分是从语法文件生成的。

我从来没有把它做到这么远,从我自己多年来的研究来看,PHP用户空间中没有很多这样的项目,而这两个来自NikiC的库真的是一个非常好的例子。

如果你正在寻找一个遵循更多flex规则的词法分析器,我在XDOM中写了一个lexes CSS选择器语法,它也是一个解析器但是解析器不是基于语法文件,即使它存在于CSS规范中。词法分析器基于.lex文件。


-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/

© www.soinside.com 2019 - 2024. All rights reserved.