MLISP2(ID:3303/mli005)Second version of MLISP, Stanford, Enea, 1972 "MLISP2 is a high-level programming language based on LISP. Features: 1. The notation of MLISP, 2. Extensibility - the ability to extend the language and to define new languages, 3. Pattern matching - the abiiity to match input against context free or sensitive patterns, 4. Backtracking-- the ability to set decision points, manipulate contexts and backtrack." Places Related languages
References: in Proceedings of the Third International Joint Conference on Artificial Intelligence IJCAI-73, Stanford, CA: Stanford University 1973 view details in ACM Computing Reviews 15(04) April 1974 view details Institution: Stanford University, Department of Computer Science Title: MLISP2. Author: Smith, David Canfield Author: Enea, Horace J. Date: May 1973 Abstract: MLISP2 is a high-level programming language based on LISP. Features: 1. The notation of MLISP. 2. Extensibility---the ability to extend the language and to define new languages. 3. Pattern matching---the ability to match input against context free or sensitive patterns. 4. Backtracking--the ability to set decision points, manipulate contexts and backtrack. pdf Extract: Introduction Introduction MLISP2 is a high-level, LISP-based programming language recently developed at the Stanford Artificial Intelligence Project. The language has been operational for: two years, and the development at phase of it has been completed. This is a final report on the 1anguage. MLISP2 is specially tailored for writing translators for other languages. To this end, two powerful control structures have been added to an ordinary LISP base: pattern matching and back tracking. This report serves the dual purpose of explaining our particular version and use of these control structures, as well as serving as a users? manual for anyone wanting to write MLISP2 programs, Actually, MLISP2 is a transitional language. Laurence Tesler and the authors are presently implementing a language called LISP70 which will include and (for most applications) supersede MLISP2, MLISP and LISP. Therefore, perhaps it is worthwhile to briefly justify the current report, Many of the concepts developed in MLISP2 are being used in LISP70, though some of them are undergoing extensive revisions. But more importantly, MLISP2 is an extremely effective translator-writing system. It clearly isolates some general principles that may profitably b e incorporated in other systems. This report concentrates on the nature of these principles, how they are implemented, and how they are most effectively used, Since this report emphasizes the research aspects of MLISP2, the users' manual aspect necessarilly is somewhat incomplete. This report is not a complete description of the MLISP2 language. Rather it is a supplement to the MLISP users? manual, and it only discusses in depth the differences (mainly additions) between MLISP2 and MLISP. Extract: History History MLISP2 is the latest in a continuing development processing programming languages. The progression, capabilities, is: LISP -> MLISP -> MLISP2 -> (LISP70) Where LISP70 has not been completed at the time of this writing. MLISP is a programming language based on LISP. MLISP programs are translated to LISP and then executed or compiled to LAP. The advantage of MLISP over LISP is primarily notational: the MLISP notation makes it easier to write and understand LISP programs. In addition, certain list-processing deficiencies in LISP are remedied (see the MLISP manual). MLISP2 is an extension of MLISP, originally created for the following reasons: 1. To make the syntax of MLISP more easily modifiable. 2. To provide a vehicle for easily implementing compilers for other languages. 3. To add backtracking as a control structure, making MLISP a more useful language for heuristic problems. The MLISP2 and MLISP languages are separate and have separate capabilities. Since MLISP is simply a more convenient notation for LISP, it is suitable for exactly the same tasks as LISP. MLISP2 preserves the list-processing capabilities of LISP, but it has a substantially modified and augmented environment tailored for efficient backtracking and pattern matching, This extra overhead is unnecessary for simple list-processing tasks. MLISP2 is mostly upwardly compatible with MLISP; MLISP2 differences are mainly in the form of additions to MLISP. We classify the differences between MLISP2 and MLISP as either ?major? or ?minor.? The major changes modify the control structure or execution environment of MLISP: they substantially alter its capabilities. For example, the SELECT expression (backtracking) and the LET expression (extensibility) are major changes. The minor changes are modifications to MLISP, hopefully in the form of improvements, which do not substantially alter its capabilities but which make it more convenient to use. For example, the DOT notation and the RECOMPILE expression are minor changes. The main productions needed to understand the MLISP2 language are PROGRAM, EXPRESSION, PRIMARY, SIMPEX and BASIC. The main production needed to understand the extensibility mechanism in the language is LET. The main production needed to understand the backtracking facility is SELECT. in ACM Computing Reviews 15(04) April 1974 view details in SIGPLAN Notices 13(11) Nov 1978 view details |