What is ML/I?

It is probably best to start by explaining roughly what a macro processor does. In its simplest form, a macro processor is a program that copies a stream of text from one place to another, making some kind of systematic set of replacements as it does so. Macro processors may be embedded in other programs (for example, many assembler programs incorporate a macro processor, and the C language mandates the presence of a preprocessor which incorporates some crude macro processing facilities). Macro processors may also be stand alone programs, which means that it is easy to use them for processing any kind of text at all.

More powerful macro processors add a degree of intelligence into their operation, instead of blindly making replacements of one piece of text by another; for example, they can deal with text where the format of what is to be replaced may have a complex, perhaps repetitive, structure.

ML/I is a general, stand alone, programmable macro processor. It is general in the sense that it can be used to process any kind of text. The text may be in any programming language or natural language, or it may be numerical data. It is stand alone in that it depends on no other program for its operation. It is programmable in that it can be programmed to carry out fairly complex operations when faced with varying kinds of input. In short, it is a very powerful tool.

Historically, the most important use of ML/I has been to provide users with a simple means of adding extra statements (or other syntactic forms) to an existing programming language in order to make the language more suitable for their own field of application. This process of extension may be carried to the level where the extended language could be regarded as a new language in its own right. Other possible uses of ML/I are program parameterisation (e.g. a parameter might determine whether debugging statements are to be included in a program) and various applications in text editing or correction and in data format conversion. It has been used, for instance, to format and convert files marked up with HTML. Lastly, it has been used as part of a microprogam translator for a bit slice computer implementation.

However, these are just a few applications. ML/I is very flexible, and there are many, many other uses for it.


An excerpt from the above was placed on Wikipedia as a public service, as part of an article I wrote on macro processors. It was summarily deleted by the Wikipedia police, without effective warning or consultation, because it allegedly violated their copyright guidelines (because it was on this website). No-one tried to contact me first. I gave up.

Valid XHTML 1.0! Valid CSS!

This site is copyright © 2018 Bob Eager
Last updated: 11 Oct 2018