context-free-art: Generate art from context-free grammars
Create art via context free grammar production rules. Includes an SVG backend.
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. -- At every layer, this will have an 85% chance -- of rendering another circle a = Mod [Move (2, 0)] b b = NonTerminal $ (85, c) :| [] c = NonTerminal $ (100, Circle 1) :| [(100, a)]
Downloads
- context-free-art-0.2.0.0.tar.gz [browse] (Cabal source package)
- Package description (as included in the package)
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 && <4.13), bifunctors (>=5.5 && <5.6), blaze-markup, blaze-svg (>=0.3.6 && <0.4), extra (>=1.6 && <1.7), HUnit (>=1.6 && <1.7), random (>=1.1 && <1.2), text (>=1.2 && <1.3), text-show (>=3.8 && <3.9) [details] |
License | BSD-3-Clause |
Author | Owen Shepherd |
Maintainer | 414owen@gmail.com |
Category | Graphics |
Home page | https://github.com/414owen/context-free-art |
Uploaded | by 414owen at 2019-10-17T00:26:56Z |
Distributions | NixOS:0.3.0.1 |
Executables | tests |
Downloads | 2531 total (12 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] |