【发布时间】:2022-04-01 17:14:34
【问题描述】:
我在处理和分析 PHP 代码方面做了大量工作。通常我只使用Tokenizer 来执行此操作。对于大多数应用程序来说,这就足够了。但有时使用词法分析器进行解析不够可靠(显然)。
因此,我正在寻找一些用 PHP 编写的 PHP 解析器。我找到了hnw/PhpParser 和kumatch/stagehand-php-parser。两者都是通过使用 PHP 而不是 C 将 zend_language_parser.y 自动转换为 .y 文件创建的(然后编译为 LALR(1) 解析器)。但是这种自动转换无法使用。
那么,有没有用 PHP 编写的像样的 PHP 解析器? (我需要一个用于 PHP 5.2 和一个用于 5.3。但只要其中一个也是一个很好的起点。)
【问题讨论】:
-
你的目标是什么?你想在这里完成什么?
-
@Charles:我会用它来做很多事情。任何需要 AST 表示形式的 PHP 源代码的东西;)
-
@mario:那个丢了很多信息。它实际上仅用于提取有关文件的一些信息的任务。所以它只保留类语句、方法语句或返回语句之类的东西,而忽略了我实际上最感兴趣的所有内容:代码。
-
我认为您不会找到任何用 PHP 编码的大规模、健壮的语言解析器。只是没有要求。
-
上周我自己编写了一个解析器的初始版本:github.com/nikic/PHP-Parser 我针对我的代码库进行了测试,它运行良好。我将努力改进界面,使其真正可用。