This page is only an introduction to MLRR. You will find all information you need in " MLRR-doc.pdf ". See The Download page.
The goal of this program is to transcribe a symbolic input, i.e. a string of symbols belonging to some alphabet, into a symbolic output according to a regular grammar described in terms of a system of rewriting rules. "Symbols" and "alphabet" have to be understood here as generic terms: they can be characters, phonemes, syllables, words, phrases, etc.
Rules are defined by the user and saved into a text file, whose special syntax is developed below (§3). All rules are based on classical regular rewriting rules, originally developed in the context of generative phonology:
[L] A [R] -> B ( 1 )
which expresses that symbol A is transcribed into symbol B when surrounded by symbols (or sequences thereof) L and R. In this formalism, A is called the target, L and R are contexts, and B is the decision of the rule.
The most original aspect of this program is that the rules it is able to compile can be multi-layer rewriting rules (MLRR), by simply adding conditions to rule (1), coming from information on other layers of information than the input layer. This is done by adding another context on the same line :
[L1] A1 [R1] ; ... ; [Ln] An [Rn] -> B1 ; ... ; Bm ( 2 )
which expresses that symbol (or sequences thereof) A1 is transcribed into symbol (or sequences thereof) B1;...;Bm when surrounded by L1 and R1 provided that symbols A2, ..., An (which are synchronized with A1 but belong to other layers) are respectively surrounded by symbols L2 and R2, ..., Ln and Rn. The layers indexed as 1,..., n and 1, ..., m are defined at the beginning of the rules file. As a result, the read() and parse() functions have been made generic, i.e. the same functions are used (no recompilation is necessary), whatever the actual type and number of layers involved.