Могу ли я использовать XText для DSL, включающего тип файла XML?
Вопрос
Я определил небольшой DSL, который в основном написан в виде различных типов XML -файлов в сочетании с некоторыми файлами свойств. Это работает очень хорошо, но я хочу создать редактор Eclipse, чтобы упростить редактирование этих файлов для начинающих (у меня уже есть рабочий анализатор).
Главный XML-файл может ссылаться на некоторые элементы из файлов .properties и наоборот. Главный XML -файл также может ссылаться на другие файлы XML. Определенные параметры должны быть доступны только в основном XML -файле на основе содержимого файлов. Структура языка исправлена, но параметры, доступные в каждом атрибуте или выбор атрибутов, сами меняются в зависимости от метаданных, содержащихся в плагинах .jar файлов.
Вопросы:
Поддерживает ли Xtext динамический синтаксис (изменение валидации в зависимости от внешних факторов)?
Поддерживает ли Xtext xml -файлы / .properties файлы?
Большое спасибо за вашу помощь заранее.
Решение
Пожалуйста, прочтите XTEXT Документация.
Поддерживает ли Xtext динамический синтаксис (изменение валидации в зависимости от внешних факторов)?
Xtext автоматически проверяет синтаксис с помощью определения грамматики. Кроме того, вы можете написать произвольные проверки на Java или чек.
Поддерживает ли Xtext xml -файлы / .properties файлы?
Если вы определите для них грамматику, конечно. ;) Ни один из них не слишком сложный.
Другие советы
Я не совсем понимаю, что вы хотите, но если у вас есть XSD, вы рассматриваете возможность превратить это в модель Ecore, а затем создать для этого грамматику XText? Или, если вы начинаете с нуля, сначала построите свою DSL -грамматику, затем экспортируйте Ecore как XSD и используйте помощников, как я только что опубликовал в своем http://blog2.vorburger.ch/2012/07/xtext-xml.html ? Hth.
Если вам не нужно иметь XML / XSD, и то, что вы, по сути, на самом деле больше имеют читаемый (скажем, похожий на JSON, но сильно напечатаны?) модель »(скажем, выраженная в Xcore, которая является DSL для модели EMF ECORE, которую вы можете импортировать из xsd ..), а затем, возможно, мой EMF простой нотация объекта Eson (Ex-accactory) в https://github.com/vorburger/factory Вам интересен?