用PHP编写的语言解析器库

问题描述:

我正在寻找用PHP编写的语言解析器用PHP编写的语言解析器库

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

基本上,我想指定一种语言语法,给出一个代码片段并取回代表它的结构。然后我可以遍历该结构来执行代码片段。我相信这个结构将是一个AST,但我不知道这是否是唯一的选择(我对解析器和它们的词汇没有亲密感)。

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

+0

http://wezfurlong.org/blog/2006/nov/parser-and-lexer-generators-for-php/ - sourceforge上也有一个,但懒得为你搜索链接。你可以从柠檬开始,它通常是一个简单的开始,但是当你看到生成的PHP类的文件大小时不会崩溃。 – hakre 2013-05-05 17:50:39

+0

想要结束这个问题的人,请解释一下 – 2013-05-05 18:05:30

+0

@hakre有趣的是,柠檬生成一个用PHP编写的解析器?我会研究它。我宁愿有一个通用的解析PHP库,虽然(它避免了与柠檬来回,如果语言的发展)。 – 2013-05-05 18:07:15

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

您可以在PHP-Parser的内部找到用例,并且由他撰写。这是一个用抽象语法树(AST)解析PHP语言的语法,部分由语法文件生成。

我从来没有管理过它,从我自己的研究多年来,PHP用户空间中没有太多这样的项目,而这两个来自NikiC的库是一个非常好的例子。

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