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

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

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

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


person Jay Zhu    schedule 14.06.2013    source источник


Ответы (1)


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

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

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

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

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

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

person A.H.    schedule 16.06.2013