と、あまり上から目線で書くつもりはないのだけど、最近Context Freeをずっと触っているので、CFDG関連のリソースをまとめてみます。公式サイトのドキュメントが充実しているのでそればかりです。

本体のLesson, Lesson2

[Help]-[Lesson]で起動
最初はここから。Lesson2は途中で終わっているけど気にしない。

Design ideas

http://www.contextfreeart.org/mediawiki/index.php/Design_ideas
より実践的なテクニックはこちらで。大体のことはできるようになる。この辺りからじゃんじゃん作りましょう。

Reference Card

http://www.contextfreeart.org/mediawiki/index.php/Reference_Card
文法的に不安になるときはこちらが便利。自分の場合PDFを印刷してPCの傍らに置いています。

CFDG HOWTO

http://www.contextfreeart.org/mediawiki/index.php/CFDG_HOWTO
更に詳細な仕様を見たい場合はこちらを。まあほとんど見ないけど。そうは言っても、読んでいくと新しい発見なんかもあって、自分の場合target hueとか全然知らなかった。
http://www.contextfreeart.org/mediawiki/index.php/Shape_adjustments

CFDG About

http://www.contextfreeart.org/mediawiki/index.php/Context_Free_Art:About
個人的には、CFDGは再帰の終了条件(というか描画の終わり方)が重要だと思っているのだけど、それに関して

5. Continue from step 2 until the to do list is empty, 
or everything on it is too small to be seen. 

という記述が(ひっそりと)書かれている。

これは、

  1. 描画するものがなくなるか
  2. 見えなくなるまで小さくなったとき

ということである。

コードで書いてみると、、、

// 描画するものがなくなるパターン
// ruleを複数記述して一つは何も描画しないものを用意する
startshape main

rule main {
  foo {}
}

rule foo {
  CIRCLE {}
  foo {x 1}
}
rule foo .1 {
} 
// 見えなくなるまで小さくなるパターン
// 再帰する度にサイズを小さくしている
startshape main

rule main {
  foo {}
}

rule foo {
  CIRCLE {}
  foo {x 1 s .5}
}

CFDGに条件式が文法的にサポートされていれば確かにこんな記述にはならないのだけど、この辺りが世のプログラム言語とあまりに違い過ぎて、個人的には面白いと思うところです。