Компилятор компиляторов — программа, воспринимающая синтаксическое или семантическое описание языка программирования и генерирующая компилятор для этого языка[1].

Синтаксис выражается в виде БНФ или её производной и должен удовлетворять правилам того метода синтаксического анализа, который будет использоваться в генерируемом компиляторе.

Семантика языка обычно описывается путём ассоциирования процедуры генерации кода с каждой синтаксической конструкцией, причём необходимая процедура вызывается всякий раз, когда соответствующая конструкция распознаётся программой синтаксического анализа. Таким образом, пользователю компилятора компиляторов в любом случае нужно разработать исполняющие структуры и выбрать способ преобразования каждой входной синтаксической конструкции в операции выходного языка или в машинные операции, после чего нужно написать собственно процедуры генерации кода. Следовательно, компилятор компиляторов — это полезное средство, помогающее писать компиляторы, но не более того.

Строго говоря, генератор программы синтаксического анализа представляет собой часть компилятора компиляторов, однако оба термина часто используются как синонимы.

Примечания править

  1. Толковый словарь по вычислительным системам = Dictionary of Computing / Под ред. В. Иллингуорта и др.: Пер. с англ. А. К. Белоцкого и др.; Под ред. Е. К. Масловского. — М.: Машиностроение, 1990. — 560 с. — 70 000 (доп.) экз. — ISBN 5-217-00617-X (СССР), ISBN 0-19-853913-4 (Великобритания).

См. также править