Артур Ефимов писал(а):
Я с небольшой командой тоже решил написать компилятор Оберона. Читаю различные материалы по этому поводу и в первую очередь книгу «Построение компиляторов» Н. Вирта. Идея в том, чтобы сделать что-то наподобие FreePascal, но для Оберона-2 или Компонентного Паскаля, чтобы способствовать распространению языка в массах. BlackBox меня не устраивает своей запутанностью и узкой направленностью, а в OO2C я совершенно случайно нашёл досадную ошибку в оптимизаторе, которая ломает программу, и я не знаю, как её исправить и как проверить, нет ли там ещё подобных ошибок. VOC я не смог нормально перевести на Windows.
Уважаемый Артур!
Мне очень знакомы поиски "своей" реализации Оберон-транслятора.

Долго облизывался на
XDS, отложил по причине
закрытости и неисправленных ошибок.
POW! отмёл за явной заброшенностью.
BlackBox очень понравился, но даёт весьма рыхлый машинный код, а также нету поддержки 64 бит.
OPCL я ковырял долго, но смущает отсутствие биндингов к WinAPI, полу-ручная линковка .exe и, опять же, нет поддержки 64 бит.
GPCP не умеет генерить нативный машкод и тоже весьма позаброшен.
voc только для Linux'а (хотя автор обещает версию для Windows, но у него нет серьёзной мотивации, т.к. он сам не пользуется Windows).
OO2C тоже заброшен, сложен, внутренне отличается от классики (ETH Oberon), и тоже версия для Windows создаётся какими-то магическими пассами. А хочется "из коробки"...
Оценив свои скромные силы, стало ясно, что хороший компилятор мы не потянем. Компилятор BlackBox написан очень серьёзной командой профессионалов, но и у него свои недостатки, которые не представляется возможным исправить так уж легко (неэффективность машкода, отсутствие поддержки команд > i486, отсутствие поддержки 64 бит).
Поэтому мы (команда
XDev), исходя из своих требований, стали ваять собственную реализацию, но облегчили себе жизнь тем, что воспользовались готовым транслятором
Ofront (Оберон-2 в Си) Йозефа Темпла. А именно
версией, которая работает как подсистема BlackBox. Проект XDev умеет собирать код для различных платформ и процессоров, даёт промышленное качество кода (за счёт использования мощного оптимизирующего компилятора MinGW (GCC)) и имеет поддержку 64 бит. Также проект открытый, может, не очень активно, но развивается. Но нужно больше библиотек. Правда, скорее всего, соберутся библиотеки от
voc, но они же Linux-ориентированные. Что-то я сам портирую, кое-что и не доделано. Мало документации. Так что проект, скорее, даже just-for-fun, чем на публику. Но он есть, пользуйтесь, пожалуйста, если интересно.
Частью проекта
XDev выступает модифицированный нами транслятор
OfrontPlus. (общие улучшения, а также добавлены некоторые фичи из Компонентного Паскаля). И вообще, если есть дельные предложения, давайте их реализуем, отчего же нет.
Ещё достоинства Ofront (и XDev): 1) есть живая поддержка — люди, разбирающиеся во внутреннем устройстве Ofront (Йозеф Темпл, Норайр Чилингарян, Олег Комлев, я); 2) наличие двух живых форков —
OfrontPlus и
voc; 3) наличие на базе Ofront
транслятора Компонентного Паскаля; 4) возможность использовать разные компиляторы Си; 5) у меня есть версия транслятора Ofront для командной строки Windows, правда, она отстаёт от
OfrontPlus. 6) Си-код, продуцированный Ofront'ом, выглядит чище, чем у OO2C.
Так что советую подумать ещё. Разработка своего компилятора во много раз сложнее, чем исправление найденной Вами в OO2C ошибки. А есть ли там ещё подобные ошибки — покажет только опыт использования.