smuuf / php-peg
PHP 的 PEG 解析器生成器。
3.0.0
2022-04-25 23:35 UTC
Requires
- php: >=7.4
Requires (Dev)
- nette/tester: ^2.4
- phpstan/phpstan: ^1.5
README
免责声明
这是combyna/php-peg的延续,它是对原始的hafriedlander/php-peg的“最小侵入性分支”。
最初可用的几种 PEG 解析器类型中,现在只剩下 Basic
和 Packrat
(推荐)。
此分支的显著功能
- 修复和优化:Packrat 解析器重构。 使用数组而不是字符串简化逻辑。从内存角度来看,数组最终似乎更适合这项工作。这也解决了 Packrat 缓存中访问未定义索引的偶尔问题。
- 现代代码风格: 代码库使用新的 (PHP7+) 语言特性和与当前现代 PHP 更熟悉的代码格式。
- 移除 CLI 接口: 直接调用
\hafriedlander\Peg\Compiler::compile($grammarDefinitionFile)
,方式随意。 - 测试: 测试套件已重写,使用
Nette Tester
而不是 PHPUnit。 - 修复: 通过简化搜索语法定义的正则表达式,避免了灾难性的回溯问题(有时在编译较大的语法时发生)。
- 优化: 使用带有绝对命名空间的本地 PHP 常量和函数,速度略有提升(在生成的代码中也有所改变)。
- 优化: 在可能的情况下使用严格比较(甚至在生成的代码中)。
文档
请参阅原始库的文档。