Пожалуй расскажу о себе.
Начал я писать компилятор. Эм когда же я начал? Начал я в школе предыдущие выпускиники поступили на ВМК и писали компиляторы. Вот тогда я и начал писать свой компилятор. Начал из зависти стараясь их догнать. Хотя сейчас я их перегнал. На самом деле это была попытка. Потом не однократно возвращался и всё мне не нравилось не складывалось. Потом уже проявился мой знак задиака. Я телец и потому упрямство мне присуще. Начал читать Эхо Рави Сити, компиляторы. Пожалуй это вторая книга которую я перечитывал помногу раз. Не помню какая это была по пытка 4 или 10. Потом отложил и снова вернулся когда прочитал про BISON. А в это время связался с товарищами из ВМК оказывается компилятор они и неделали только транслятор и тот не окончательный.
Последняя попытка самая удачная. С чего она началась? Прочитал я книгу четырёх о ООП, и тут захотелось попробовать принципы описанные в книге на живом примере. А компилятор как не как лучше подходил под это. Очень сожалею, что не прочитал эту книгу раньше.
Собственно тут уже всё и пошло. Не скажу что как по маслу. Просто стуктура компилятора мне теперь нравится и значит я на правильном пути. Многое понял, многое прочитал.
И вот пожалуй уже 2 года как пишу компилятор, предыдущие попытки не в счёт. Сейчас на работе завал полный поэтому компилятор не трогаю устою сильно пытаемся догнать за последние месяцы то что должны были делать целый год. Пока что компилятор завис на системной библиотеке делаю строки и параллельно ввод и вывод.
Почему завис? У пёрся в тера-инкогнито.
Казалось бы чего проще бери и читай, но тут возникает куча вопросов: Как прочитать данные если неизвестна их длина? А как прочитать если мы попадём на конец файл?Кидать исключение, создавать нули. Потоки файлы кто в иерархии главнее? От кого наследовать. Как написать программу что-бы она не зависала? А если у нас не файлы а каналы или FIFO? А что делать если у нас это не файл а устройство или сетевой сокет?
И тут ты понимаешь что я же хотел сделать в вод с терминала. А там оказывается своя сущность, со своими правилами игры.
И самое главное как сделать что-бы ввод/вывод не тормозил? И не тормозил через 10 лет, когда компьютеры будут в 1000 раз быстрее.
Как минимум нужен буфурезированный ввод/вывод.
Поэтому пришлось учитывать все эти нюансы.
Если бы я писал свою ОС то я бы их разделил, но компилятор я делаю под существующие ОС. Есть такая область как теория управления. Абсолютно не паханный край. Никто ещё не описал чувствую себя первопроходцем. Уже собираю материал.
Вчера вот закончил изучение сигналов. Оказывается в виндоусе это сделано через .опу. Когда как в линуксе нормально.
Какая цель компилятора? Чисто конкретно меня интересует оптимизатор для других моих программ. А сейчас ещё и фазер для паскаля.