rb/polygen-php

Polygen的PHP实现 - 一个随机句子生成器。

v1.2.1 2022-06-05 10:14 UTC

This package is not auto-updated.

Last update: 2024-09-23 15:19:07 UTC


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 运行这两个套件。