context-free-art: Generate art from context-free grammars
Create art via context free grammar production rules.
Context free grammar primer
Context free grammars consist of a set of terminal symbols, a set of non-terminal symbols, and production rules that map non-terminals to other symbols.
With a context-free grammar, we can generate strings of terminals that conform to the specified language.
Our language will describe graphics.
Example
import Art.ContextFree import Data.List.NonEmpty -- Let's define a Production rule a = Circle 1 -- This will produce an IO Svg from the blaze-svg package -- to turn it into a string we can use one of the `blaze-svg` renderers graphic1 = interpret $ Circle 1 -- let's create a non-terminal, 'a', which renders a terminal, 'Circle 1' -- and has an 85% chance of rendering itself, placed to its right a = NonTerminal $ (100, Circle 1) :| [(85, b)] b = Mod [Move (2, 0)] a
Downloads
- context-free-art-0.2.0.1.tar.gz [browse] (Cabal source package)
- Package description (revised from the package)
Note: This package has metadata revisions in the cabal description newer than included in the tarball. To unpack the package including the revisions, use 'cabal get'.
Maintainer's Corner
For package maintainers and hackage trustees
Candidates
Versions [RSS] | 0.1.0.0, 0.2.0.0, 0.2.0.1, 0.2.0.2, 0.2.0.3, 0.3.0.0, 0.3.0.1 |
---|---|
Change log | CHANGELOG.md |
Dependencies | base (>=4.12.0.0 && <5), bifunctors (>=5.5), blaze-markup, blaze-svg (>=0.3.6), HUnit (>=1.6), random (>=1.1), text (>=1.2), text-show (>=3.8) [details] |
License | BSD-3-Clause |
Author | Owen Shepherd |
Maintainer | 414owen@gmail.com |
Revised | Revision 3 made by 414owen at 2019-10-22T09:05:55Z |
Category | Graphics |
Home page | https://github.com/414owen/context-free-art |
Uploaded | by 414owen at 2019-10-18T21:23:07Z |
Distributions | NixOS:0.3.0.1 |
Executables | tests |
Downloads | 2586 total (8 in the last 30 days) |
Rating | (no votes yet) [estimated by Bayesian average] |
Your Rating | |
Status | Docs uploaded by user Build status unknown [no reports yet] |