Вопрос может показаться очевидным, но я только начинаю с Xtext
. Итак, создав проект xtext и запустив файл mydsl.xtext
.
запускает новую итерацию затмения. Я создаю новый .mydsl-файл в новом проекте. Но я не знаю, что делать дальше! Как запустить файл .mydsl
? Как использовать мой DSL
??
Все учебники Xtext останавливаются после создания DSL
и не показывают, как его использовать. Я слежу the 15 minutes Xtext tutorial
Мой код - это код слова hello, заданный затмением, на самом деле ничего особенного.Как запустить файл Xtext .mydsl?
ответ
Результат проекта Xtext - это специфический для домена язык, который может быть проанализирован, проверен, привязан и использован для генерации кода внутри IDE (Eclipse или Intellij, насколько я знаю) и безголовый.
В зависимости от особенностей, которые вы хотите иметь в своем DSL, вам необходимо изменить и создать разные классы внутри вашего проекта XText.
Обычно первые шаги включают в себя:
- Создайте свою грамматику (
.xtext
файл), чтобы указать, как DSL должен быть разобран и выглядеть синтаксически. - Run поколение языка для грамматики (правой кнопкой мыши на файле
.xtext
-> работать как -> генерировать XText артефакты) - запустить другое затмение экземпляра (запустить как -> Eclipse, приложение), чтобы увидеть вашу грамматику в действии , Для этого создайте новый проект и поместите файл с файлом DSL, заканчивающимся внутри проекта. В диалоговом окне вы попросите добавить проект проекта DSLs к проекту. Согласитесь и попробуйте отредактировать файл. этот файл должен вести себя так, как указано в вашей xtext-грамматике.
Возможно, я ошибался, поэтому извините за это. я спрашиваю о следующем шаге. Я создал проект и файл с моим файлом DSL, и он ведет себя так, как ожидалось. но haw я запускаю последний файл. тот, который использует мой DSL.I думал, что ожидание может дать мне способ выполнить мои проекты maven или gradle. –
если вы хотите ява основной читать модель и выполнить генератор, вы можете посмотреть на этом фрагменте
package org.eclipse.xtext.example.domainmodel;
import java.util.ArrayList;
import java.util.List;
import org.eclipse.emf.common.util.URI;
import org.eclipse.emf.ecore.resource.Resource;
import org.eclipse.emf.ecore.resource.ResourceSet;
import org.eclipse.xtext.generator.GeneratorContext;
import org.eclipse.xtext.generator.GeneratorDelegate;
import org.eclipse.xtext.generator.IGeneratorContext;
import org.eclipse.xtext.generator.JavaIoFileSystemAccess;
import org.eclipse.xtext.util.CancelIndicator;
import org.eclipse.xtext.validation.CheckMode;
import org.eclipse.xtext.validation.IResourceValidator;
import org.eclipse.xtext.validation.Issue;
import com.google.common.collect.Lists;
import com.google.inject.Injector;
/**
* @author dietrich - Initial contribution and API
*/
public class Main {
public static void main(String[] args) {
// TODO traverse directory
List<String> files = Lists.newArrayList("model/a.dmodel", "model/b.dmodel");
Injector injector = new DomainmodelStandaloneSetup().createInjectorAndDoEMFRegistration();
ResourceSet rs = injector.getInstance(ResourceSet.class);
ArrayList<Resource> resources = Lists.newArrayList();
for (String file : files) {
Resource r = rs.getResource(URI.createFileURI(file), true);
resources.add(r);
}
IResourceValidator validator = injector.getInstance(IResourceValidator.class);
for (Resource r : resources) {
List<Issue> issues = validator.validate(r, CheckMode.ALL, CancelIndicator.NullImpl);
for (Issue i : issues) {
System.out.println(i);
}
}
GeneratorDelegate generator = injector.getInstance(GeneratorDelegate.class);
JavaIoFileSystemAccess fsa = injector.getInstance(JavaIoFileSystemAccess.class);
fsa.setOutputPath("src-gen-code/");
GeneratorContext context = new GeneratorContext();
context.setCancelIndicator(CancelIndicator.NullImpl);
for (Resource r : resources) {
generator.generate(r, fsa, context);
}
}
}
При сохранении. yourdsl файл в редакторе, который вы временно открыли, он автоматически построит его. Как только он будет успешно создан без ошибок, в вашем проекте на вашем рабочем месте будет создан каталог src-gen. Там у вас будут файлы, созданные только вашими dsl, на основе вашего yourdsl Generator.xtext.
- 1. XText, импортировать свой собственный mydsl файл
- 2. Xtext, импортировать другой проект в проект MyDsl
- 3. XText: Ссылка класс Java от MyDsl
- 4. ссылка кросс-файл в XText
- 5. Анализ грамматики Xtext с помощью Xtext
- 6. Запустить продукт Xtext напрямую
- 7. XText неоднозначность
- 8. Предопределенные определения в XText сценарии
- 9. XText - как использовать «импорт» в собственной грамматике
- 10. xtext importURI внешний файл
- 11. Xtext: Customize inferred genmodel
- 12. Xtext: Как проверить xtext lexer?
- 13. Как сгенерировать АСТ с помощью Xtext и Xtend?
- 14. Как отключить глобальную область действия в XText 2.9?
- 15. Почему переменная xtext загрязняет ключевые слова?
- 16. XText, работает плагин от выбора
- 17. Как разбить файл грамматики Xtext на несколько?
- 18. Xtext - Пользовательская строка без кавычек
- 19. Простая инструкция импорта в XText
- 20. XText Включение Backtracking правильно
- 21. Xtext - Не удалось найти ссылку на JvmOperation
- 22. Правило Xtext, состоящее из неработающих терминалов
- 23. XText w/XBase - Инициализировать сгенерированную переменную
- 24. изменить метку корневого узла xtext outline
- 25. Сгенерировать DSL-файл с XText из Java-модели
- 26. Xtext, get Iselection Вход в LaunchMydslShortcut
- 27. XText валидатор показывает Синтаксическую ошибку в неправильной линии
- 28. Перекрестная ссылка Xtext для языка с перечисляемыми типами
- 29. Есть ли файл грамматики java для Xtext?
- 30. Xtext ecore файл не может быть загружен
Когда новый экземпляр eclipse открывается, создайте новый проект и внутри него создайте новый файл с расширением вашего DSL-файла. Если вы все сделали правильно, этот файл будет открыт с помощью редактора Xtext вашего DSL, и редактирование должно работать так, как указано в вашей грамматике. – lwi