Я хотел бы создать предметно-ориентированный язык как расширенный язык C++. Мне понадобятся в основном два типа конструкций:
- Конструкции верхнего уровня для специализированных типов или объявлений
- Конструкции в коде, то есть добавление примитивов для упрощения вызовов функций или идиом.
Этот язык будет использоваться для научных вычислений и в конечном итоге будет переведен на простой C++. C++ был выбран, поскольку он предлагает хороший компромисс между простотой использования, эффективностью и доступностью широкого спектра библиотек.
Предыдущая попытка использовать flex и bison не удалась из-за сложности синтаксиса C++. Существующий синтаксический анализатор все еще может дать сбой в некоторых конструкциях. Итак, мы хотим начать все сначала, но на лучших основаниях.
Знаете ли вы о подобных проектах? И если бы вы попытались это сделать, какие инструменты вы бы использовали? Какие могут быть основные подводные камни? У вас есть рекомендации по синтаксису?