Shape grammar

From Wikipedia, the free encyclopedia

Shape grammars in computation are a specific class of production systems that generate geometric shapes. Typically, shapes are 2- or 3-dimensional, thus shape grammars are a way to study 2- and 3-dimensional languages. Shape grammars were first introduced in a seminal article by George Stiny and James Gips in 1971.[1] The mathematical and algorithmic foundations of shape grammars (in particular, for linear elements in two-dimensions) were developed in "Pictorial and Formal Aspects of Shapes and Shape Grammars" (Birkhäuser Basel, 1975) by George Stiny. Applications of shape grammars were first considered in "Shape Grammars and their Uses" (Birkhäuser Basel, 1975) by James Gips. These publications also contain two independent, though equivalent, constructions showing that shape grammars can simulate Turing machines.


A shape grammar consists of shape rules and a generation engine that selects and processes rules. A shape rule defines how an existing (part of a) shape can be transformed. A shape rule consists of two parts separated by an arrow pointing from left to right. The part left of the arrow is termed the Left-Hand Side (LHS). It depicts a condition in terms of a shape and a marker. The part right of the arrow is termed the Right-Hand Side (RHS). It depicts how the LHS shape should be transformed and where the marker is positioned. The marker helps to locate and orient the new shape.

A shape grammar minimally consists of three shape rules: a start rule, at least one transformation rule, and a termination rule. The start rule is necessary to start the shape generation process. The termination rule is necessary to make the shape generation process stop. The simplest way to stop the process is by a shape rule that removes the marker. Shape grammars differ from Chomsky grammars in a major respect: the production rules may be applied serially (as with Chomsky grammars) or in parallel (not allowed in Chomsky grammars), similar to the way "productions" are done in L-Systems.

A shape grammar system additionally has a working area where the created geometry is displayed. The generation engine checks the existing geometry, often referred to as Current Working Shape (CWS), for conditions that match the LHS of the shape rules. Shape rules with matching LHS are eligible for use. If more than one rule applies, the generation engine has to choose which rule to apply. In the alternative scenario, the engine first chooses one of the grammar rules and then tries to find all matches of the LHS of this rule in the CWS. If there are several matches, the engine can (depending on its configuration/implementation)

  • apply the rule to all matches in parallel,
  • apply the rule to all matches serially (which might lead to inconsistencies) or
  • choose one of the detected matches and apply the rule to only this match.

Shape grammars are most useful when confined to a small, well-defined generation problem such as housing layouts and structure refinement. Because shape rules typically are defined on small shapes, a shape grammar can quickly contain a lot of rules. The palladian villas shape grammar presented by William Mitchell[2] for example contains 69 rules, that are applied throughout eight stages.

Parametric shape grammars are an extension of shape grammars.[3] The new shape in the RHS of the shape rule is defined by parameters so that it can take into account more of the context of the already existing shapes. This typically affects internal proportions of the new shape so that a greater variety of forms can be created. In this way, attempts are made to make shape grammars respond to structural conditions, for example the width of beams in roof structures which depends on span.

Despite their popularity and applicability in academic circles, shape grammars have not found widespread use in generic Computer Aided Design applications.


Shape grammars were originally presented for painting and sculpture[1] but have been studied in particular in architecture (computer-aided architectural design), as they provide a formalism to create new designs. Other important domains shape grammars have been applied in are decorative arts, industrial design and engineering.[4]

Software Prototypes[edit]

This is a list of software prototypes that are available on the web (several of them are strictly speaking rather set grammar systems[5][6]):


  • Stiny, G. & Gips, J. (1972). Shape grammars and the generative specification of painting and sculpture. In Information Processing 71, 1460–1465. North-Holland Publishing Company. link to article
  • Stiny, G. (1975). Pictorial and Formal Aspects of Shape and Shape Grammars. Birkhäuser Basel. link to the book
  • Stiny, G. (1980). Introduction to shape and shape grammars. Environment and Planning B: Planning and Design 7(3), 343-351.
  • Knight, T.W. (1994). Transformations in Design: A Formal Approach to Stylistic Change and Innovation in the Visual Arts. Cambridge University Press.
  • Stiny, G. (2006). Shape: Talking about Seeing and Doing. MIT Press, Cambridge, MA. link to book

See also[edit]


  1. ^ a b Stiny, G. & Gips, J. (1972). Shape grammars and the generative specification of painting and sculpture. In Information Processing 71, 1460–1465. North-Holland Publishing Company.
  2. ^ Mitchell, W. (1990). The Logic of Architecture. MIT Press, London.
  3. ^ Stiny, G. (1980). Introduction to shape and shape grammars. Environment and Planning B: Planning and Design 7(3), 343-351.
  4. ^ Cagan, J. (2001). Engineering Shape Grammars: Where Have We Been and Where are We Going?. In: Antonsson, E. K. & Cagan, J. (eds). Formal Engineering Design Synthesis. Cambridge University Press, Cambridge, UK.
  5. ^ McKay, A.; Chase, S. C.; Shea, K.; Chau, H. H. (2012). Spatial grammar implementation: From theory to useable (sic) software. AI EDAM (Artificial Intelligence for Engineering Design, Analysis and Manufacturing) 26(02), 143-159.
  6. ^ Stiny, G. (1982). Spatial relations and grammars. Environment and Planning B: Planning and Design 9(1), 113–114.

External links[edit]