Как можно написать компилятор языка на этом языке

02.02.2018

Можно ли сделать компилятор созданного языка с применением лишь этого языка? Не так давно данного вопроса не возникало, когда только стали появляться компьютеры и не было создано никаких прорамм. Не было и компиляторов. Язык ассемблера стал первым компилируемым языком.

Написание компилятора для определенного языка на этом языке является методом раскрутки. Существует несколько способов написания компилятора:

  1. Написание компилятора и введение кода руками в первую компиляцию. После этого можно получить готовый компилятор. Первопроходцы не имели других способов. Так что им приходилось действовать таким образом. Компилятор является непростой вещью, так что создать множество строк кода и не сделать ни одной ошибки очень сложно. Но так как исключить ошибки не получится, придется несколько раз делать повторение ручной компиляции. Но можно пойти в обход.
  2. Создание первого компилятора на другом программном языке. В этой ситуации писать придется не языка полностью, а лишь для подмножества. Последнее захватывает только те части языка, которых хватает для создания компилятора. Затем, воспользовавшись первым компилятором, можно сделать компилятор на подмножествах собственного языка. Пошаговые действия приведут от небольшого подмножества к полноценной версии. Число этапов при этом может быть сведено к одному.

На странице http://askdev.info/questions/48/how-can-a-languages-compiler-be-written-in-that-language вы сможете прочесть комментарии относительно написания нового компилятора.

Компиляторы языков, которые уже существуют, являются более надежными. Они проверены, так что в них невозможно найти ошибки. Такие компиляторы имеют IDE и прочие необходимые инструменты. Для языков, которые создаются по новой, такие удобства невозможно найти.

Написание компилятора не является удачной идеей. Оно опасна невозможностью применения производителя синтаксических анализаторов. Начальная версия компилятора создается на ином языке. А последующие версии записываются на этом языке. Они скомпилированы с более старой версией.

Раскрутка компилятора позволяет проверить возможности языка. Она не требует изучения сторонних языков. Также она позволяет производить дальнейшее совершенствование транслятора на языках высокого уровня. Может улучшаться и кода транслятора, что приведет к улучшению качества кода программ.

RENDER.RU