Andrew I-kang Li

  gray line


About me

About shape grammars


gray line

The interpreter project

Set up

Create a grammar

Run a grammar

Get out of trouble

gray line

The Yingzao fashi project

gray line
Contact me

i (at) andrew (dot) li

gray line

Sierpinski gasket

This website is about my work in computational design.

My main project now is creating a software tool for designers who use shape grammars. Shape grammars let you describe the process by which a design is derived, from the first line to the completed version. And they let you describe that process in a graphic way, i.e., in drawings. (For a slightly more detailed explanation, please see this page.)

The tool is a general interpreter, which executes grammars that you create. The second-generation version is available at this website:

The reason I’m creating this shape grammar tool is that I need it to continue work that I began years ago.

It started with a study of the 12th-century Chinese building manual Yingzao fashi 營造法式 [Building standards]. I have a website devoted to explaining structural carpentry (da muzuo 大木作) as presented in that manual:

In the next stage, I used a shape grammatical approach to study how to teach and understand that book, which I laid out in my dissertation:

Since then, I have been following two parallel tracks. The first track is more theoretical (it doesn’t involve software).

I laid out a framework for using shape grammatical analysis in understanding Chinese architectural history beyond the Yingzao fashi, a framework that I use in my teaching. This is the paper:

More generally, I proposed a formal framework for using computational methods to teach architectural history, which I discuss in this paper:

Even more generally, I considered how studying style is still a subjective activity, even when we use objective tools like grammars. This is the paper:

The second track of work is about grammar tools and implementations (i.e., software). I made a Flash implementation of a grammar of building sections in the Yingzao fashi. It was an experiment with how a user can interact with a grammar.

That was so much fun that I had to try what is known as a general interpreter, one that will execute any grammar. The first-generation version had two parts: a modeling application for editing and recording the grammars, and a stand-alone interpreter for doing the calculations. Read about it in this paper.

In the second-generation version, both editing and calculation take place inside the modeling application, so users do not have to shift back and forth between two applications. This may sound like a small thing, but it is an important simplification, both mechanically and cognitively. The website is here:

gray line

This is a Sierpiński gasket, a fractal that can be specified by a one-rule grammar, which you can see here.

gray line