用于 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 的独立语法和解析器的主要内容,如果未能解决你的问题,请参考以下文章