New languages from old: The extension of programming languages by embedding, with a case study

Embedding is the extension of a programming language without altering the processor for that language, and preferably using only the facilities of that language. While a single subroutine is the simplest form of semantic extension by embedding, embedding can produce powerful application-oriented languages (AOL) in a relatively economical fashion. A first approximation to a design discipline for writing embedded AOLs is presented. SNOBOL4 is discussed as a particularly receptive host language, in that it has flexible subroutine, data-structure, and storage allocation facilities, has a run-time compiler which can be called from a SNOBOL4 program, and is widely available for almost all research computer systems. A description is given of AUTOMAT, a SNOBOL4-embedded AOL for classroom or research experiments with abstract sequential machines. The generalized transition table is introduced as a data structure in which finite-state machines (FSM), Turing machines, pushdown automata, and the like can be represented as special cases. Data structures for sets, partitions and covers, sparse matrices, and tapes are provided as well. The AUTOMAT AOL currently includes over 100 operators developed according to the proposed method. Applications thus far include an extensive FSM utility system, universal simulators for FSM and other models, FSM minimization, and Krohn-Rhodes decomposition. Performance statistics are presented.

[1]  Michael Bliss Feldman Automat: a programming system for the study of transition-table automatamodels , 1973 .

[2]  Joseph Weizenbaum Symmetric list processor , 1963, CACM.

[3]  John E. Hopcroft,et al.  An n log n algorithm for minimizing states in a finite automaton , 1971 .

[4]  Neil D. Jones,et al.  Program control via transition matrices: a novel application of micro-programming , 1976 .

[5]  Abraham Ginzburg,et al.  Algebraic theory of automata , 1968 .

[6]  Jerome A. Feldman,et al.  On the Synthesis of Finite-State Machines from Samples of Their Behavior , 1972, IEEE Transactions on Computers.

[7]  Jean E. Sammet,et al.  Programming languages - history and fundamentals , 1969, Prentice-Hall series in automatic computation.

[8]  Bruce H. Barnes,et al.  A Programmer's View of Automata , 1972, CSUR.

[9]  Tsunehiko Kameda,et al.  On the State Minimization of Nondeterministic Finite Automata , 1970, IEEE Transactions on Computers.

[10]  Daniel G. Bobrow,et al.  List Processing and Extension of Language Facility by Embedding , 1964, IEEE Trans. Electron. Comput..

[11]  Daniel J. Rosenkrantz,et al.  Compiler design theory , 1976 .

[12]  James F. Gimpel,et al.  Algorithms in Snobol4 , 1976 .

[13]  George E. Collins PM, a system for polynomial manipulation , 1966, CACM.

[14]  C. L. Sheng,et al.  A Decomposition Method of Determining Maximum Compatibles , 1972, IEEE Transactions on Computers.

[15]  Charles H. Kriebel,et al.  Review of "Programming Languages: History and Fundamentals, by (Miss) Jean E. Sammet." Prentice-Hall, Inc. (1969) , 1969, DATB.

[16]  R. E. Wengert,et al.  A simple automatic derivative evaluation program , 1964, Commun. ACM.

[17]  Michael B. Feldman,et al.  Embedding extended arithmetic in SNOBOL4 , 1977, SIGP.