Как конвертировать мой DSL в существующий язык программирования?
Я хочу создать предметно-ориентированный язык, который можно преобразовать в существующий язык (например, python, SQL). Я стараюсь избегать создания полноценного компилятора и изучаю Xtext и Xpand. Они выглядят правдоподобно, поскольку Xtext будет использоваться для разработки грамматики и создания дерева разбора, Xpand будет использовать дерево разбора для создания кода существующего языка (пожалуйста, исправьте меня, если я ошибаюсь).
Что вы думаете об этом? Как вы думаете, есть лучшие альтернативы XText и Xpand, которые я могу использовать для достижения своей цели?
1 ответ
Вы могли бы рассмотреть набор инструментов реинжиниринга программного обеспечения DMS.
Он предназначен для анализа, анализа и преобразования программ общего назначения (например, произвольного языка или DSL). Он автоматически генерирует AST из неконтекстной грамматики, предоставляет поддержку для создания таблиц символов и анализа потоков, имеет преобразования от источника к источнику, позволяющие выполнять переводы, и полные симпатичные принтеры из AST. Цель всего этого механизма - обеспечить минимальные усилия для создания и поддержки надежных инструментов.
(Я являюсь руководителем этого. Я считаю, что DMS гораздо более зрелый, чем Xtext, для этой цели, используется уже более 13 лет. YMMV).