用PHP编写的语言分析器库

Mat*_*oli 8 php parsing abstract-syntax-tree parser-generator

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

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

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

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

hak*_*kre 6

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

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

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

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

  • OP 不想解析 PHP 代码;他想解析一种自定义语言。显然,PHP-Parser 使用 [kmyacc 的分叉版本](https://github.com/nikic/PHP-Parser/blob/624f71fa6f9cf0708d9e8625b3bea564c5fe7a24/grammar/rebuildParsers.php#L16) 通过模板以某种方式针对 PHP。 (2认同)