我正在寻找用 PHP 编写的语言解析器。
目标是阅读自定义语言,而不是阅读 PHP 代码。
基本上,我想指定一种语言语法,给出一个代码片段并返回一个表示它的结构。然后我可以遍历该结构来执行代码片段。我相信结构将是AST,但我不知道这是否是唯一的选择(我不熟悉解析器及其词汇表)。
我查看了Doctrine DQL 解析器,但它看起来不像是通用语言解析器。
我正在寻找用 PHP 编写的语言解析器。
目标是阅读自定义语言,而不是阅读 PHP 代码。
基本上,我想指定一种语言语法,给出一个代码片段并返回一个表示它的结构。然后我可以遍历该结构来执行代码片段。我相信结构将是AST,但我不知道这是否是唯一的选择(我不熟悉解析器及其词汇表)。
我查看了Doctrine DQL 解析器,但它看起来不像是通用语言解析器。
这不是一个完整的列表,如果您正在寻找 PHP 运行时词法分析器/解析器,一个特殊的项目是NikiC的 Phlexy。
您可以在他编写的PHP-Parser中找到一个用例。这是一个用于 PHP 语言的解析器,具有抽象语法树 (AST),部分由语法文件生成。
我还没有做到这一点,从我自己多年来的研究来看,PHP 用户空间中这样的项目并不多,而 NikiC 的这两个库确实是一个很好的例子。
如果您正在寻找一个遵循更多 flex 规则的词法分析器,我在XDOM中编写了一个词法分析 CSS 选择器语法的词法分析器,它也带有一个解析器,但解析器不是基于语法文件,即使它存在于 CSS 规范中. 词法分析器基于 .lex 文件。
假设 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/