Diseñado por | Robert M. McClure |
---|---|
Revelador | Robert M. McClure |
Apareció por primera vez | 1963 ( 1963 ) | [1]
Dialectos | |
Dialecto Unix (por Douglas McIlroy ) | |
Influenciado | |
TROL (por Donald Knuth ) [2] |
Revelador | Douglas McIlroy |
---|---|
Apareció por primera vez | 1969 ( 1969 ) |
Extensiones de nombre de archivo | .t |
Dialectos | |
Versión PDP-7 , versión PDP-11 | |
Influenciado por | |
ALGOL 68 , [3] B , PL/I , SNOBOL [4] | |
Influenciado | |
B , Yacc |
En informática, TMG (TransMoGrifier) es un compilador-compilador descendente recursivo [5] desarrollado por Robert M. McClure y presentado en 1965. [6] [7] [8] TMG se ejecutaba en sistemas que incluían OS/360 y los primeros Unix . [9] Se utilizó para crear EPL, una versión temprana de PL/I . [9]
Douglas McIlroy portó TMG a una versión temprana de Unix. Según Ken Thompson , McIlroy escribió TMG en TMG en un trozo de papel y "decidió darle a su trozo de papel su trozo de papel", compilando a mano el lenguaje ensamblador que introdujo y ensambló en el sistema Unix de Thompson que funcionaba con PDP-7 . [10] Thompson utilizó TMG en 1970 como herramienta para ofrecer Fortran , pero debido a las limitaciones de memoria de PDP-7 terminó creando el lenguaje de programación B que estaba muy influenciado por BCPL . [6]
El algoritmo de descenso recursivo de TMG fue estudiado formalmente por Alexander Birman y Jeffrey Ullman . La descripción formal de los algoritmos se denominó esquema de reconocimiento TMG (o simplemente TS ). [11]
TMG, ... llega más tarde, pero parece que no ha sido influenciado por los sistemas anteriores [Syntax Machine de Alick Glennie de 1960, el compilador PSYCO de Ned Irons de 1960 o el compilador-compilador de Brooker y Morris de 1960].
Algunas cosas en las que he trabajado: Lenguajes y compiladores: macros, Lisp, PL/I, TMG (un compilador-compilador), expresiones regulares; influyó en Snobol, Altran, C++...
Todos los programas para el sistema Unix PDP-7 original se escribieron en lenguaje ensamblador, y era un lenguaje ensamblador puro; por ejemplo, no había macros. Además, no había cargador ni editor de enlaces, por lo que cada programa tenía que ser completo en sí mismo. El primer lenguaje interesante que apareció fue una versión del TMG de McClure que fue implementada por McIlroy. Poco después de que TMG estuviera disponible, Thompson decidió que no podíamos pretender ofrecer un servicio informático real sin Fortran, por lo que se sentó a escribir un Fortran en TMG. Según recuerdo, el intento de manejar Fortran duró aproximadamente una semana. Lo que produjo en cambio fue una definición y un compilador para el nuevo lenguaje B.
Doug (M. Douglas) McIlroy
ejerció el derecho de un jefe de departamento para intervenir en el sistema PDP-7 original para dos usuarios. Más tarde contribuyó con una ecléctica bolsa de utilidades:
tmg
para escribir compiladores,
speak
para leer texto en voz alta,
diff
y
join
. También recopiló diccionarios y creó herramientas para usarlos:
look
(v7, siguiendo un modelo de Ossanna),
dict
(v8) y
spell
(v7). ... En el pequeño PDP-7, el ensamblador se complementó con tmg, la versión de Doug McIlroy del compilador-compilador de Bob McClure. ... V2 vio una explosión de lenguajes: un nuevo
tmg
, ... y el primer
C
de Ritchie ,
... TMG que corre bajo OS360 (sic) ... Mike Green tomó la versión 7090/7040 de Bob McClure e implementó el compilador-compilador en el 360; ... TMG fue la herramienta de definición de compilador utilizada por Ken Thompson para escribir el compilador para el lenguaje
B
en su PDP-7 en 1970. B fue el ancestro inmediato de
C
.