Компилятор пишется так...
Журнал "Монитор" № 4 1992 год
Компилятор пишется так...
Писать компилятор приходится чаще, чем обычно думают. Практически всякая большая система включает в себя входной язык - от примитивного до весьма сложного. Вспомним хотя бы dBASE - это ведь не язык программирования, а система баз данных. На нее даже программы пишутся. А раз нужен входной язык, то бывает нужен и компилятор. И часто нужен быстро. Конечно, всякий предпочтет компактный, быстрый, хорошо оптимизирующий компилятор, но далеко не всякому понравится такой компилятор писать.
Чтобы писать сложные, эффективные и быстрые компиляторы, есть много рецептов. Но здесь речь пойдет не о них. Как написать компилятор просто - вот в чем вопрос! Ведь такой компилятор и короче, и отлаживается легче. Здесь не будет каких-то хитрых алгоритмов, позволяющих достигать чудес эффективности или каких- то особенных способов организации данных. Увы, с этими способами одна проблема: заставить их работать может только чудо. А в этой статье - только практические рекомендации, а работают они надежно!
Оптимизацию и генерацию кода мы рассматривать не будем. Оптимизация - тема для отдельной статьи, а генерация кода - занятие для самоубийцы. Соломоново решение в данном случае - переводить программу не в коды машины, а на язык, который у вас уже есть. Так и делаем. Время компиляции, конечно, увеличивается, но зато мы избавляемся от большого количества неприятной возни.
Оставить комментарий
Комментарии
Из всей писанины я только понял одну простую фразу:
"Компилятор писать лучше на каком-то языке, а не в машинных кодах"
Ну и не совсем это компилятор будет.Вернее компилировать в машинный код то он будет, но то что получится будет называться интерпретатор в "язык который уже есть" либо просто "подключаемая библиотека"
Вот я пишу свой мелкий ассемблер. Заодно по ходу разбираюсь в машинных кодах...