LIM Home Page

Copyright © 1997, Digital Equipment Corporation. All rights reserved.


LIM is a text processing language in the general family of lex, yacc, sed, awk, and trans, but is based on Dijkstra's calculus of guarded commands. The name is an acronym for Language of the Included Miracle, because LIM programs can violate the so-called Law of the Excluded Miracle. For details see "A Discipline of Programming", Edsger W. Dijkstra, Prentice-Hall, 1976, and "A generalization of Dijkstra's calculus", Greg Nelson, Trans. on Programming Languages and Systems, October 1989, or SRC Research Report 16.

A LIM command may be guarded by a predicate. The command is said to fail if the predicate is false when the command is executed. The main novelty in LIM is that failing commands never have side effects. If a long computation has side effects and then fails, it is as though the side effects never happened. This property of the language makes it easy to write parsers and pretty-printers, since they require the ability to speculatively perform some action. In fact, the LIM distribution includes a pretty-printer for the LIM language that is itself written in LIM.

Downloading LIM

LIM is written in C, and uses lex/yacc or flex/bison. It has been successfully built on the Digital Ultrix and Digital Unix operating systems. It should compile on most other Unix platforms.

To download LIM, follow these steps:

Installing LIM

Once you have downloaded and unpacked the LIM sources, follow these steps from your "lim" directory to build LIM on your system:

Once you have successfully installed lim, you may be interested in downloading and installing mtex, a set of LIM scripts for producing man pages in HTML and nroff format from a single LaTeX-like source format. For more information about mtex, see the mtex home page.

[ Systems Research Center (SRC) Software Home Page ]

Last modified on Thu Aug 28 22:46:04 PDT 1997 by heydon