context-free-art: Generate art from context-free grammars

[ bsd3, graphics, library, program ] [ Propose Tags ]

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
Versions [faq] 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 Tue Oct 22 09:05:55 UTC 2019
Category Graphics
Home page https://github.com/414owen/context-free-art
Uploaded by 414owen at Fri Oct 18 21:23:07 UTC 2019
Distributions NixOS:0.3.0.1
Executables tests
Downloads 296 total (71 in the last 30 days)
Rating (no votes yet) [estimated by Bayesian average]
Your Rating
  • λ
  • λ
  • λ
Status Hackage Matrix CI
Docs uploaded by user
Build status unknown [no reports yet]

Modules

[Index] [Quick Jump]

Downloads

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