hoa / regex
Hoa\Regex 库。
Requires
- hoa/consistency: ~1.0
- hoa/exception: ~1.0
- hoa/math: ~1.0
- hoa/protocol: ~1.0
- hoa/ustring: ~4.0
- hoa/visitor: ~2.0
This package is auto-updated.
Last update: 2021-09-20 08:31:44 UTC
README
Hoa 是一组 模块化、可扩展 和 结构化 的 PHP 库。
此外,Hoa 致力于成为工业界和学术界之间的桥梁。
Hoa\Regex
此库提供分析正则表达式和基于正则表达式生成字符串的工具(Perl 兼容正则表达式)。
了解更多.
安装
使用 Composer,要将此库包含到依赖项中,您需要要求 hoa/regex
$ composer require hoa/regex '~1.0'
有关更多安装过程,请参阅 源代码页面。
测试
在运行测试套件之前,必须安装开发依赖项
$ composer install
然后,要运行所有测试套件
$ vendor/bin/hoa test:run
有关更多信息,请参阅 贡献指南。
快速使用
为了快速了解,我们建议查看两个示例。首先,分析一个正则表达式,即 lex、解析和生成 AST。其次,通过使用各向同性随机方法遍历其 AST,根据正则表达式生成字符串。
分析正则表达式
我们需要 Hoa\Compiler
库 来对以下正则表达式进行 lex、解析和生成 AST: ab(c|d){2,4}e?
。因此
// 1. Read the grammar. $grammar = new Hoa\File\Read('hoa://Library/Regex/Grammar.pp'); // 2. Load the compiler. $compiler = Hoa\Compiler\Llk\Llk::load($grammar); // 3. Lex, parse and produce the AST. $ast = $compiler->parse('ab(c|d){2,4}e?'); // 4. Dump the result. $dump = new Hoa\Compiler\Visitor\Dump(); echo $dump->visit($ast); /** * Will output: * > #expression * > > #concatenation * > > > token(literal, a) * > > > token(literal, b) * > > > #quantification * > > > > #alternation * > > > > > token(literal, c) * > > > > > token(literal, d) * > > > > token(n_to_m, {2,4}) * > > > #quantification * > > > > token(literal, e) * > > > > token(zero_or_one, ?) */
我们了解到整个表达式由两个标记的单一连接组成: a
和 b
,随后是量化,然后是另一个量化。第一个量化是一个选择(在两个标记之间选择)的交替: c
和 d
,2 到 4 次。第二个量化是 e
标记,它可以出现 0 或 1 次。
我们可以使用 Hoa\Visitor
库 来遍历树。
基于正则表达式生成字符串
要基于正则表达式的 AST 生成字符串,我们将使用 Hoa\Regex\Visitor\Isotropic
访问者
$generator = new Hoa\Regex\Visitor\Isotropic(new Hoa\Math\Sampler\Random()); echo $generator->visit($ast); /** * Could output: * abdcde */
字符串随机生成并匹配给定的正则表达式。
文档
Hoa\Regex 的黑客手册 包含有关如何使用此库及其工作方式的详细信息。
要本地生成文档,请执行以下命令:
$ composer require --dev hoa/devtools $ vendor/bin/hoa devtools:documentation --open
更多文档可以在项目的网站上找到:[hoa-project.net](https://hoa-project.net/)
获取帮助
获取帮助主要有两种方式
- 在
#hoaproject
IRC 频道中, - 在 [users.hoa-project.net](https://users.hoa-project.net) 的论坛上。
贡献
你想贡献吗?谢谢!一个详细的 贡献指南 解释了你需要知道的一切。
许可
Hoa 采用新的 BSD 许可证 (BSD-3-Clause)。请参阅 LICENSE
获取详细信息。