rb / polygen-php
Polygen的PHP实现 - 一个随机句子生成器。
v1.2.1
2022-06-05 10:14 UTC
Requires
- php: ^5.6 || ^7.0
- drupol/phpermutations: ^1
- guzzlehttp/streams: ^3
- savvot/random: ^0.3
- webmozart/assert: ^1
Requires (Dev)
- mockery/mockery: ^1
- phpunit/phpunit: ^5.7.5
README
Polygen 是一个解析包含语法定义的文本文件并据此生成文本的工具。Polygen-PHP 做的是同样的事情,但它是用 PHP 5.6+ 编写的,且与相同的语法文件兼容,因此现在即使是在共享托管服务上,您也可以在您的网站上使用 Polygen。
例如,以下语法文件
S ::= this is Subject and is Quantity Adjective;
Subject ::= a grammar | polygen;
Quantity ::= rather | quite | very;
Adjective ::= interesting | remarkable | dumb;
可能会生成以下句子
- 这是一个语法,相当愚蠢
- 这是一个 polygen,相当出色
- 这是一个语法,非常有趣
... 以此类推。
该语言还有许多其他功能,请查看官方 Polygen 文档了解有关它的所有信息。
安装
您可以使用 composer 安装 Polygen-PHP: composer require rb/polygen-php
使用说明
<?php $polygen = new \Polygen\Polygen(); $your_grammar = \GuzzleHttp\Stream\Stream::factory('S ::= hello world;'); $document = $polygen->getDocument($your_grammar); var_dump($polygen->generate($document)); // Will print "hello world".
一次解析,多次生成(POPM)
每次想要生成内容时,不必每次都解析源语法:一旦获得 Polygen 文档,就可以将其 serialize()
到字符串中,并将其存储为字符串常量。这样,解析可以在“编译时间”只执行一次,然后在运行时,只需将字符串 unserialize()
回到 Polygen 文档,就可以像通常一样使用它来获取生成内容。
命令行使用
还有一个 CLI 工具您可以使用。它根本未经完善,因为它是为调试而设计的,但基本功能是可行的。如果您需要此包作为项目的依赖项,Composer 必须已将 CLI 工具放置在您的 vendor/bin 文件夹中,因此您可以使用 ./vendor/bin/polygen.php
运行它。如果没有参数(或带有 -h
或 --help
参数)启动,将打印出简短的使用说明。
已知问题
静态检查
- 我相信静态无限递归检查是损坏的,但我还没有证明这一点。只需尽量避免在声明之间存在循环引用的语法,一切都会好。
- 静态检查只报告错误,尚未实现警告。
运行测试
有两个测试套件,单元 和 集成,您可以使用 vendor/bin/phpunit
运行这两个套件。