2013-06-14 3 views
0

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

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

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

Заранее благодарим за любую помощь!

ответ

2

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

So running Xtext изнутри C# и Ruby невозможно.

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

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

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

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