Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
День 15. Я далеко продвинулся в реализации компилятора и он работает на удивление хорошо. Нетривиальные программы, например эта — решающая задачу о восьми ферзях, компилируются и запускаются.
Прочитал ваш комментарий и задумался: а как иначе-то можно?
это будет скорее монотонная работа
I accept small patches, but because this is my hobby project to learn about compilers, it's unlikely to accept large patches.
А что, настоящий_настоящий программист должен раз в жизни написать себе компилятор?
Он компилирует программы на стеке, используя стек машины как стек
It compiles source programs onto a stack machine that uses the machine stack as the stack
вот вам весь Си на 2х страницах
Надо ещё реализовать семантику, добавить оптимизации, добавить генерацию кода
И то, что автор уложился в 40 дней характеризует его как человека, который может быстро писать много кода и потом не утонуть в нём.
Надо ещё реализовать семантику, добавить оптимизации, добавить генерацию кода.Вы статью-то вообще читали? Там нет никаких оптимизация, а семантика и кодогенерация слиты в одну сущность. Нечто вроде Turbo Pascal'я, хотя, скорее всего, ещё примитивнее.
надо знать ABI,Какой ABI? Вы о чём?
знать алгоритмы оптимизации.Нет там оптимизации. От слова «совсем». Даже структур, которые обычно используются оптимизаторами нет. Совсем.
Да хотя бы ту же спецификацию C надо знать, а она побольше двух страниц.Для чего её нужно знать? Чтобы потом не реализоывать? На 40й день компилятор компилировал только сам себя! На 73й он отказался от идеи довести компилятор «до ума» и научить его компилировать хотя бы TCC!
Там нет никаких оптимизация, а семантика и кодогенерация слиты в одну сущность. Нечто вроде Turbo Pascal'я, хотя, скорее всего, ещё примитивнее.
Какой ABI? Вы о чём?
Нет там оптимизации. От слова «совсем». Даже структур, которые обычно используются оптимизаторами нет. Совсем.
Для чего её нужно знать? Чтобы потом не реализоывать?
На 40й день компилятор компилировал только сам себя! На 73й он отказался от идеи довести компилятор «до ума» и научить его компилировать хотя бы TCC!
Когда знаешь алгоритмы и под рукой есть книжка с драконом, это в самом деле не rocket science, но я помню, убил на него много времени
ореол серьезности, который окружает написание транслятора, несколько ярче, чем сама работа
Если задаться целью строить не академический табличный транслятор, то и того проще.
Не знаю, как вам, а мне этот дневник было интересно читать, так как я когда-то сам через что-то похожее проходил.
Как я написал компилятор C за 40 дней