lindsys.icn: Program to generate sentences in 0L-systems

May 10, 2006; Ralph E. Griswold
This file is in the public domain.
This program reads in a 0L-system (Lindenmayer system) consisting of
rewriting rules in which a string is rewritten with every character
replaced simultaneously (conceptually) by a specified string of
symbols.

Rules have the form

     S->SSS...

where S is a character.

In addition to rules, there are keywords that describe attributes of the
system.  These include the "axiom", the string on which rewriting is
started and "gener", the number of generations.

The keyword "name" may be used to identify different L-systems in
a file.  If a name is given, it must be the first line of the L-system.

If the keyword "end" is present, it is taken as the termination of
the grammar.  Otherwise, the end of the file serves this purpose.

Other keywords may be present, but are ignored.  For example,

     comment:This produces a great tree.

is ignored.

Keywords are followed by a colon.

  An example 0L-system is:

     name:dragon
     X->-FX++FY-
     Y->+FX--FY+
     F->
     -->-
     +->+
     axiom:FX

Here, the initial string is "FX".

Note that "-" is a legal character in a 0L-system -- context determines
whether it's 0L character or part of the "->" that stands for "is
replaced by".

If no rule is provided for a character, the character is not changed
by rewriting. Thus, the example above can be expressed more concisely
as

     name:dragon
     X->-FX++FY-
     Y->+FX--FY+
     F->
     axiom:FX

The file containing the 0L-system is read from standard input.

The command-line options are:

     -g i    number of generations if not given, default 3
     -a s    axiom (overrides axiom given in the grammar)
     -A      generate all intermediate results, not just the last

Note:  An earlier version of this program had the ability to
extract an L-System specification by name from a file with
multiple specifications.  This version does not -- the former
functionality was deemed too cumbersome.

References:

   Formal Languages, Arto Salomaa, Academic Press, 1973. pp. 234-252.

   The Algorithmic Beauty of Plants, Przemyslaw Prusinkiewicz and
   Aristid Lindenmayer, Springer Verlag, 1990.

   Lindenmayer Systems, Fractals, and Plants, Przemyslaw Prusinkiewicz
   and James Hanan, Springer Verlag, 1989.
____________________________________________________________

See linden.dat for an example of input data.

See also linden.icn for a graphics version.

Source code | Program Library Page | Icon Home Page