Markov Jr. is an open source C# application that creates procedural content primarily via applying Markov rewrite rules to a 2D or 3D grid. A rewrite rule has an input and output pattern, which essentially specifies what pattern to look for in the existing grid, and what to replace it with.
For example, given a 2D grid, this would replace any white dot with a white cross:
***/*W*/*** :: *W*/WWW/*W*
The left hand side is the rule input, and the right hand side is the output. The /
character is used to delimit rows, and space is used to delimit Z-layers (in 3D grids). The input rule above translates to the 2D pattern: