ML/I
From Wikipedia, the free encyclopedia
ML/I (Macro Language One) is a general purpose macro processor. It appears to be more flexible than m4. It was developed in 1966, but is still available and is still used.
ML/I accepts input in completely free form, treating data as a stream of bytes rather than a series of lines or records. It does not require any particular flagging of macro calls, which makes it particularly useful for processing arbitrary text. Replacements of text can be simple (e.g. PIG is to be replaced by DOG) or complex (e.g. replace the item between the third and fourth commas after the last full stop, by the contents of some counter).
ML/I was used to implement several items of portable software, including itself. It was originally written in a special descriptive language, then mapped into a sutiable language for each target system. This mapping was done using ML/I itself. There were two different forms of this descriptive language; high level and low level.
ML/I was mapped (by hand) to BCPL in 1981, and later to C in 1984, by Bob Eager. That version has since been enhanced, and is now available for multiple platforms via the ML/I web site, http://www.ml1.org.uk . The same web site provides further information about ML/I, as well as documentation (including a tutorial, simple introductory guide, and full user manual).