In computing TMG (TransMoGrifier) is a recursive descent compiler-compiler[5] developed by Robert M. McClure and presented in 1965.[6][7][8] TMG ran on systems including OS/360 and early Unix.[9] It was used to build EPL, an early version of PL/I.[9]
Designed by | Robert M. McClure |
---|---|
Developer | Robert M. McClure |
First appeared | 1963[1] |
Dialects | |
Unix dialect (by Douglas McIlroy) | |
Influenced | |
TROL (by Donald Knuth)[2] |
Developer | Douglas McIlroy |
---|---|
First appeared | 1969 |
Filename extensions | .t |
Dialects | |
PDP-7 version, PDP-11 version | |
Influenced by | |
ALGOL 68,[3] B, PL/I, SNOBOL[4] | |
Influenced | |
B, Yacc |
Douglas McIlroy ported TMG to an early version of Unix. According to Ken Thompson, McIlroy wrote TMG in TMG on a piece of paper and "decided to give his piece of paper his piece of paper," hand-compiling assembly language that he entered and assembled on Thompson's Unix system running on PDP-7.[10] Thompson used TMG in 1970 as a tool to offer Fortran, but due to memory limitations of PDP-7 ended up creating the B programming language which was much influenced by BCPL.[6]
The recursive descent algorithm of TMG was studied formally by Alexander Birman and Jeffrey Ullman. The formal description of the algorithms was named TMG recognition scheme (or simply TS).[11]
See also
editReferences
edit- ^ "Early Translator Writing Systems - Brooker-Morris Compiler Compiler 1966". Atlas Computer Laboratory. Archived from the original on 31 January 2020. Retrieved 2020-04-12.
TMG, ... comes later but appears to have not been influenced by the earlier systems [Alick Glennie's 1960 Syntax Machine, Ned Irons 1960 PSYCO compiler, or Brooker and Morris's 1960 Compiler-Compiler].
- ^ Knuth, Donald (1990). "The Genesis of Attribute Grammars" (PDF). In P. Deransart; M. Jourdan (eds.). Proceedings of the International Conference on Attribute Grammars and Their Applications (Paris, France). Lecture Notes in Computer Science. Vol. 461. New York: Springer-Verlag. pp. 1–12. doi:10.1007/3-540-53101-7_1. ISBN 978-3-540-53101-2.
- ^ Ritchie, Dennis M. (April 1993). The Development of the C Language (PDF). Association for Computing Machinery, Inc.
- ^ McIlroy, M. D. (September 13, 1972). A Manual for the Tmg Compiler-writing Language (Technical report). Murray Hill, New Jersey: Bell Laboratories. Retrieved 31 January 2020.
- ^ "M. Douglas McIlroy". Dartmouth College. Archived from the original on 1 February 2020. Retrieved 2020-04-12.
Some things I have worked on: Languages and compilers: macros, Lisp, PL/I, TMG (a compiler-compiler), regular expressions; influenced Snobol, Altran, C++ ...
- ^ a b Ritchie, Dennis M. "The Evolution of the Unix Time-sharing System*". Archived from the original on 8 September 2014. Retrieved 9 April 2004.
Every program for the original PDP-7 Unix system was written in assembly language, and bare assembly language it was—for example, there were no macros. Moreover, there was no loader or link-editor, so every program had to be complete in itself. The first interesting language to appear was a version of McClure's TMG that was implemented by McIlroy. Soon after TMG became available, Thompson decided that we could not pretend to offer a real computing service without Fortran, so he sat down to write a Fortran in TMG. As I recall, the intent to handle Fortran lasted about a week. What he produced instead was a definition of and a compiler for the new language B.
- ^ McClure, R.M. (1965). "TMG—A Syntax-Directed Compiler". In L. Winner (ed.). Proceedings of the 1965 20th national conference (ACM '65). ACM. pp. 262–274. doi:10.1145/800197.806050. ISBN 978-1-4503-7495-8. S2CID 44606611.
- ^ McIlroy, M. D. (1987). A Research UNIX Reader: Annotated Excerpts from the Programmer's Manual, 1971-1986 (PDF) (Technical report). CSTR. Bell Labs. 139. Archived (PDF) from the original on 11 April 2020.
Doug (M. Douglas) McIlroy exercised the right of a department head to muscle in on the original two-user PDP-7 system. Later he contributed an eclectic bag of utilities: tmg for compiler writing, speak for reading text aloud, diff, and join. He also collected dictionaries and made tools to use them: look (v7, after a model by Ossanna), dict (v8), and spell (v7). ... On the tiny PDP-7 the assembler was supplemented by tmg, Doug McIlroy's version of Bob McClure's compiler-compiler. ... V2 saw a burst of languages: a new tmg, ... and Ritchie's first C,
- ^ a b "TMG". www.multicians.org. Archived from the original on 2 January 2020. Retrieved 2020-04-12.
... TMG that runs under OS360 (sic) ... Mike Green took Bob McClure's 7090/7040 version and implemented the compiler-compiler on the 360; ... TMG was the compiler definition tool used by Ken Thompson to write the compiler for the B language on his PDP-7 in 1970. B was the immediate ancestor of C.
- ^ Ken Thompson (6 May 2019). "VCF East 2019 -- Brian Kernighan interviews Ken Thompson". YouTube. Retrieved 2019-10-28.
- ^ Birman, Alexander; Ullman, Jeffrey D (1973). "Parsing algorithms with backtrack". Information and Control. 23 (1). Elsevier B.V: 1–34. doi:10.1016/S0019-9958(73)90851-6. ISSN 0019-9958.
External links
edit- "TMG – Compiler writing language". HOPL: Online Historical Encyclopaedia of Programming Languages. Archived from the original on September 21, 2007.
- Port of Unix TMG on GitHub