Как конвертировать мой DSL в существующий язык программирования?

Я хочу создать предметно-ориентированный язык, который можно преобразовать в существующий язык (например, python, SQL). Я стараюсь избегать создания полноценного компилятора и изучаю Xtext и Xpand. Они выглядят правдоподобно, поскольку Xtext будет использоваться для разработки грамматики и создания дерева разбора, Xpand будет использовать дерево разбора для создания кода существующего языка (пожалуйста, исправьте меня, если я ошибаюсь).

Что вы думаете об этом? Как вы думаете, есть лучшие альтернативы XText и Xpand, которые я могу использовать для достижения своей цели?

1 ответ

Вы могли бы рассмотреть набор инструментов реинжиниринга программного обеспечения DMS.

Он предназначен для анализа, анализа и преобразования программ общего назначения (например, произвольного языка или DSL). Он автоматически генерирует AST из неконтекстной грамматики, предоставляет поддержку для создания таблиц символов и анализа потоков, имеет преобразования от источника к источнику, позволяющие выполнять переводы, и полные симпатичные принтеры из AST. Цель всего этого механизма - обеспечить минимальные усилия для создания и поддержки надежных инструментов.

(Я являюсь руководителем этого. Я считаю, что DMS гораздо более зрелый, чем Xtext, для этой цели, используется уже более 13 лет. YMMV).

Другие вопросы по тегам