我正在寻找一个语言解析器用 PHP 编写。
目标是阅读自定义语言,而不是阅读 PHP 代码。
基本上,我想指定一种语言语法,提供一个代码片段并取回表示它的结构。然后我可以遍历该结构来执行代码片段。我相信该结构将是 AST,但我不知道这是否是唯一的选择(我对解析器及其词汇表并不熟悉)。
我查看了 Doctrine DQL parser但它看起来不像是通用语言解析器。
最佳答案
这不是完整的列表,如果您正在寻找 PHP 运行时词法分析器/解析器,一个特别的项目是 Phlexy由 NikiC 提供。
您可以在 PHP-Parser 中找到一个用例也是他写的。这是 PHP 语言的解析器,具有抽象语法树 (AST),部分从语法文件生成。
我还没有做到这一点,从我自己多年来的研究来看,PHP 用户空间中这样的项目并不多,NikiC 的这两个库就是一个很好的例子。
如果您正在寻找一个更遵循 flex 规则的词法分析器,我在 XDOM 中写了一个它对 CSS 选择器语法进行词法分析,它也与解析器一起使用,但解析器并不基于语法文件,即使它存在于 CSS 规范中。词法分析器基于 .lex 文件。
关于php - 用 PHP 编写的语言解析器库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16387277/