dev-dev
dev-devA PHP implementation of Polygen - A random sentence generator.
The Requires
- guzzlehttp/streams 3.0
- php ^5.6 || ^7.0
The Development Requires
by Riccardo Bastianini
A PHP implementation of Polygen - A random sentence generator.
Polygen is a tool that parses text files containing a grammar definition and generates text according to that definition. Polygen-PHP does the same, but in PHP 5.6+ and is compatible with the same grammar files, so now you can use Polygen on your website even if it's on a shared hosting service., (*1)
For example, the following grammar file, (*2)
S ::= this is Subject and is Quantity Adjective; Subject ::= a grammar | polygen; Quantity ::= rather | quite | very; Adjective ::= interesting | remarkable | dumb;
might result in the following sentences being generated: * this is a grammar and is rather dumb * this is polygen and is quite remarkable * this is a grammar and is very interesting, (*3)
... and so on., (*4)
There are many more features in the language, check out the official Polygen documentation to learn everything about it., (*5)
You can install Polygen-PHP using composer: composer require rb/polygen-php
, (*6)
<?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".
It's not necessary to parse the source grammar every time a production is wanted: once a Polygen document is obtained, it
can be serialize()
d to a string and stored as a string constant. This way, the parsing can be done only once at
"compile time", then at runtime, it's sufficient to unserialize()
the string back to a Polygen document, and it can be
used as usual to obtain a production., (*7)
There is also a CLI tool that you can use. It's not refined at all, since it is intended for debugging only, but the
basics work.
If you require this package as a dependency of your project, Composer must have placed the CLI tool in your vendor/bin
folder, so you can run it with ./vendor/bin/polygen.php
.
A small usage will be printed if launched with no parameters (or with -h
or --help
parameters)., (*8)
There are two test suites, Unit and Integration you can run both with vendor/bin/phpunit
., (*9)
A PHP implementation of Polygen - A random sentence generator.