Разработка трансляторов

![Разработка трансляторов [info]](http://l-stat.livejournal.com/img/userinfo.gif)
Хотя ply просто шикарен, я лучшей интеграции yacc с языком ни разу не видел (кроме, разве что, ocamlyacc и parsec в Haskell).
Вот теперь делема - в Питоне нету типов, а для Ocaml нету jinja (и я не нашёл шаблонизаторов вообще, а делать генерацию исходного кода при помощи print зело очень неудобно, плавали-знаём).
Назрел рефакторинг кодогенератора (переделка уже сделанного транслятора, который не в ввели в production из-за отдельных его проблем - которые при рефакторинге надо решить; потому до сих плюсовая версия на плюсовых шаблонах (привёт линковка по 15 минут! Без шаблонов было 5-10 (: ) работает)
Сижу и думаю, что делать. Альтернативы:
* писать с большим количеством
* реализовать DTL (Django Template Language) для Ocaml
* сделать биндинг питоновской jinja (реализация DTL) в ocaml
* написать свой кодоген c преферансом и гимнастками
* не выпендриваться и обойтись print'ами (гемморой в поддержке).
Почему-то в айти так в каждом вопросе - везде блин вилы, либо в поддержке, либо в разработке, либо в отказоустойчивости, либо в читаемости.
Я думаю, на Страшном Суде судить будут Лучшие Программисты (коим я, к сожалению, не являюсь) - типа
![Разработка трансляторов [info]](http://l-stat.livejournal.com/img/userinfo.gif)
![Разработка трансляторов [info]](http://l-stat.livejournal.com/img/userinfo.gif)
![Разработка трансляторов [info]](http://l-stat.livejournal.com/img/userinfo.gif)
Адвокатом от production будет
![Разработка трансляторов [info]](http://l-stat.livejournal.com/img/userinfo.gif)
![Разработка трансляторов [info]](http://l-stat.livejournal.com/img/userinfo.gif)
Мне же, пока что, в очередной раз нужно найти мучительный компромисс, за который меня распнут на страшном суде.