В вычислительной технике TMG (TransMoGrifier) — это рекурсивный спусковой компилятор-компилятор [5], разработанный Робертом М. МакКлюром и представленный в 1965 году. [6] [7] [8] TMG работал на таких системах, как OS/360 и ранний Unix . [9] Он использовался для построения EPL, ранней версии PL/I . [9]
Дуглас Макилрой перенес TMG на раннюю версию Unix. По словам Кена Томпсона , Макилрой написал TMG в TMG на листке бумаги и «решил дать своему листку бумаги свой листок бумаги», вручную скомпилировав язык ассемблера , который он ввел и собрал на системе Unix Томпсона, работающей на PDP-7 . [10] Томпсон использовал TMG в 1970 году как инструмент для предложения Fortran , но из-за ограничений памяти PDP-7 в конечном итоге создал язык программирования B , на который сильно повлиял BCPL . [6]
Алгоритм рекурсивного спуска TMG был формально изучен Александром Бирманом и Джеффри Ульманом . Формальное описание алгоритмов было названо схемой распознавания TMG (или просто TS ). [11]
TMG, ... появляется позже, но, по-видимому, не была подвержена влиянию более ранних систем [Alick Glennie's 1960 Syntax Machine, Ned Irons 1960 PSYCO compiler или Brooker and Morris's 1960 Compiler-Compiler].
Некоторые вещи, над которыми я работал: Языки и компиляторы: макросы, Lisp, PL/I, TMG (компилятор-компилятор), регулярные выражения; повлиял на Snobol, Altran, C++ ...
Каждая программа для оригинальной системы Unix PDP-7 была написана на языке ассемблера, и это был чистый язык ассемблера — например, не было макросов. Более того, не было загрузчика или редактора ссылок, поэтому каждая программа должна была быть завершенной сама по себе. Первым интересным языком, который появился, была версия TMG МакКлюра, реализованная МакИлроем. Вскоре после того, как TMG стал доступен, Томпсон решил, что мы не можем претендовать на предложение настоящих вычислительных услуг без Fortran, поэтому он сел писать Fortran на TMG. Насколько я помню, намерение заняться Fortran длилось около недели. Вместо этого он создал определение и компилятор для нового языка B.
Дуг (М. Дуглас) Макилрой
воспользовался правом руководителя отдела, чтобы вмешаться в исходную двухпользовательскую систему PDP-7. Позже он внес эклектичный пакет утилит:
tmg
для написания компилятора,
speak
для чтения текста вслух,
diff
и
join
. Он также собрал словари и создал инструменты для их использования:
look
(v7, по образцу Ossanna),
dict
(v8) и
spell
(v7). ... На крошечном PDP-7 ассемблер был дополнен tmg, версией компилятора-компилятора Боба МакКлюра, созданной Дугом Макилроем. ... V2 увидела взрыв языков: новый
tmg
, ... и первый C
Ритчи
,
... TMG, работающий под управлением OS360 (sic) ... Майк Грин взял версию 7090/7040 Боба МакКлюра и реализовал компилятор-компилятор на 360; ... TMG был инструментом определения компилятора, который Кен Томпсон использовал для написания компилятора для языка
B
на своем PDP-7 в 1970 году. B был непосредственным предком
C
.