Context Free, es el típico programa de verano: simple, no sirve para nada, pero te pasas un monton de horas enganchado. Bien podian haberlo llamado Georgie Damm Soft.

El programa consiste en una ventana partida en dos. A la izquierda se introduce un codigo (muy elemental) y a la derecha se muestra la imagen resultante de renderizar las lineas. Con un poco de tiento podemos realizar figuras muy complejas, fractales, basados en dos primitivas simples: cuadrado y circulo (SQUARE , CIRCLE). La gracia consiste en generar formas recursivas (infinitas a la que te descuidas).
No he conseguido encontrar una lista completa de la sintaxis utilizada, pero creo haberla descubierto ya toda: SQUARE, CIRCLE, rotate, x (trasladar en eje X), y (trasladar en eje Y), size, brightness.
Un mini-tuto rapidillo:

El programa tiene 2 ordenes basicas: startshape nombre_de_la_regla y rule nombre_de_la_regla.
Para crear una linea bastaría deberiamos

startshape linearule linea {
SQUARE{} SQUARE {y 1}
SQUARE {y 2} SQUARE {y 3}
SQUARE {y 4} SQUARE {y 5}
SQUARE {y 6} SQUARE {y 7}
SQUARE {y 8} SQUARE {y 9}
}

Esto crea 9 cuadrados y los situa en y=0, y=1, y=2, etc…
startshape ejecuta la regla llamada “linea”.

A continuación creamos otra regla que llame a regla llamada “linea” tres veces, y rote cada elemento 120 grados. A esta nueva regla la llamaremos aspa, por lo que tenemos que cambiar la llamada de startshape a aspa, así:

startshape asparule aspa {
linea {r 120}
linea {r 240}
linea {r 360}
}
rule linea {
SQUARE{} SQUARE {y 1}
SQUARE {y 2} SQUARE {y 3}
SQUARE {y 4} SQUARE {y 5}
SQUARE {y 6} SQUARE {y 7}
SQUARE {y 8} SQUARE {y 9}
}

Ya tenemos creado nuestro constructor base.
¿y si ahora metemos en la regla linea una llamada a la regla aspa?
Pues si no tenemos la precaución de añadirle una propiedad SIZE creariamos un bonito bucle-sin-fin, pero si le ponemos s 0.55 (s = size) tal que así:
startshape asparule aspa{
linea {r 120}
linea {r 240}
linea {r 360}
}
rule linea {
SQUARE{}
SQUARE {y 1}
SQUARE {y 2}
SQUARE {y 3}
SQUARE {y 4}
SQUARE {y 5}
SQUARE {y 6}
SQUARE {y 7}
SQUARE {y 8}
SQUARE {y 9}
aspa{s 0.55 y 9.55 b 0.1}
}

Generaría algo como esto:

32790 cuadraditos formando un fractal


Añadiendo una rotación de 30 grados a la ultima linea.


Un helecho (codigo)