XText: Как создать парсер для нескольких целевых языков

Я определил свой DSL в XText, и он автоматически генерирует Java-версию синтаксического анализатора языка и генерирует скелет генерации кода, что действительно здорово.

Проблема в том, что мой DSL предназначен для использования в проектах, которые реализуются на нескольких языках. Вы можете себе представить, что нам, возможно, потребуется проанализировать DSL в C#, Java и Ruby, по крайней мере.

Итак, вопрос: есть ли способ сгенерировать парсер для нескольких языков с помощью xtext?

1 ответ

Решение

Чисто разбираемый материал - только малая часть полного набора Xtext. Интеграция в Eclipse IDE и генератор Xtend - это два больших куска кода. А Xtext опирается на модель EMF Ecore. Ни одна из этих частей не доступна на других языках.

Так что запуск Xtext из простого C# и Ruby невозможен.

Что ты можешь сделать:

  • Вы можете упаковать анализатор и генератор в отдельный jar-файл и вызывать его как внешний процесс из любого места (в том числе из C# и Ruby). Это было бы как javac для вас собственный DSL.

  • Вы можете запустить свой Ruby-код в JRuby и вызывать Xtext оттуда. Поскольку все работает в одной и той же JVM, у вас будет лучший контроль, чем при запуске внешней программы.

  • Вы можете использовать Xtext для того, чтобы получить удобный редактор со всеми интересными вещами, но реализовать независимую грамматику для любого языка, который вы хотите.

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