tysonandre / php-parser-to-php-ast
使用 nikic/php-parser 的纯 PHP 代替品,用于 nikic/php-ast。还可以用于生成包含某些类型语法错误的文件的 php-ast 树。
0.2.1
2020-03-12 00:43 UTC
Requires
- php: >=7.1
- nikic/php-parser: ~3.1.1
Requires (Dev)
- phan/phan: ^2.6.0
- phpunit/phpunit: ^5.7
Suggests
- ext-ast: ~0.1.5
This package is auto-updated.
Last update: 2024-09-12 10:36:10 UTC
README
此工具将 PHP-Parser 中的 AST(抽象语法树)转换为 php-ast。它可以作为 php-ast 的 PHP 实现版本。它还可以用作最佳努力解析器,用于语法正确的 PHP 代码。
另请参阅 https://github.com/TysonAndre/tolerant-php-parser-to-php-ast(正在进行中,可能效果更好)
支持的 php-ast AST 版本:40、45、50
当前状态
没有失败的测试
- 需要规范化命名空间(大部分已完成)
- 基于此的测试套件涵盖了 Phan 的常见情况,但仍然存在边缘情况。请参阅 #4
- 请参阅 nikic/php-ast#78
剩余工作
- 将 PhpParser 异常转换为
\ParseError
实例
使用方法
将其作为 php-ast 的慢速替代品使用
将其作为对 php-ast 具有容错能力的替代品使用:(例如,用于 IDE)
- 目前有两种模式:忽略错误和添加占位符(例如,
__INCOMPLETE_VARIABLE__
)。 - 忽略错误仅处理在编辑文件时出现的某些常见情况。
- 占位符可能在未来发生变化。
- tests/ASTConverter/ErrorTolerantConversionTest.php
- 如果性能是问题,则缓存文件的先前结果(与用于生成文件的版本结合使用
ASTConversion::ASTCONVERTER_VERSION
)
运行单元测试
要运行单元测试,您必须安装 nikic/php-ast。应安装支持 AST 版本 40 和/或 50 的版本(首选 ~0.1.5
)
- 然后运行
vendor/bin/phpunit
可能的未来增强功能
- microsoft/tolerant-php-parser#113 请参阅 https://github.com/tysonandre/tolerant-php-parser-to-php-ast(在 AST 格式之间进行转换的库已损坏(尚未完成实现)且效率低下,等待 tolerant-php-parser 的稳定 API)