用于 php 的独立语法和解析器

Posted

技术标签:

【中文标题】用于 php 的独立语法和解析器【英文标题】:standalone grammar and parser for php 【发布时间】:2011-04-06 06:21:09 【问题描述】:

我正在寻找一个现成的 php 语法和解析器(至少 5.2),理想情况下是一个可以将 php 代码解析为可读 AST 的实用程序/库,例如xml。解析器本身不必用 php 编写,源语言并不重要。

【问题讨论】:

我猜PHP没有官方的语法。 【参考方案1】:

为了回答我自己的问题,我设法在我的 OSX 机器上编译了 phc,解析器部分似乎运行良好

 phc --dump-xml=ast foo.php > bar.xml

创建 AST 的 xml 表示。

【讨论】:

【参考方案2】:

我们的DMS Software Reengineering Toolkit 是通用编译器技术,用于解析/分析/转换任意计算机语言。 它解析为 AST,并支持构建符号表和各种类型的流程图。

它有一个PHP Front End,它完全符合 PHP 5.x,自动构建完整的 AST,使用 DMS 作为基础。它可以导出 XML,但我们的经验(以及 DMS 的设计)表明,通过使用 AST 数据结构留在“内部”DMS,使用 DMS 庞大的 AST 操作和模式匹配工具库进行工作,您可以获得更多的好处,然后生成您的结果,而不是尝试处理您将获得的大量 XML。

此前端已用于许多生产工具中。

编辑:2016 年 10 月:现在处理 PHP 5.6 和 PHP 7。

【讨论】:

【参考方案3】:

phpParseTree

Parse_Tree 扩展生成一个 来自 php 代码的 XML 解析树。

【讨论】:

这似乎只产生一个包裹在 XML 标记中的标记流。尽管目标网站说了什么,但它看起来并不像解析树。

以上是关于用于 php 的独立语法和解析器的主要内容,如果未能解决你的问题,请参考以下文章

JAVA之DOM和SAX解析器

是否有用于 PHP 的宽松、宽松的 XML 解析器?

解析Perl 5并检查语法树

PHP XML Expat 解析器

sharding jdbc之解析引擎

PHP — 基础语法