Я обновил существующий не слишком сложный язык с Xtext 1 до Xtext 2 и попытался разработать новый, используя Xtext2 и XBase. Мне пришлось повторно выполнить шаг генерации кода, а также изменить рукописные валидаторы, потому что места ошибок и предупреждений должны указываться с использованием литералов, а не целых чисел. Э.Г.
error("File does not exist with path: " + path, fileReference, ViatraTestDslPackage.FILE__PATH);
следует заменить на
error("File does not exist with path: " + path, ViatraTestDslPackage.Literals.FILE__PATH);
Точно так же рабочий процесс должен быть изменен, чтобы включить некоторые новые функции: API схемы использует разные фрагменты (outline.OutlineTreeProviderFragment и outline.QuickOutlineFragment), для поддержки переименования и сравнения необходимо добавить новые фрагменты (refactoring.RefactorElementNameFragment и сравните.Сравните фрагмент).
В моих экспериментах с XBase кажется, что добавление этого в язык, который уже поддерживает некоторые выражения, может быть трудоемким, потому что либо старые выражения должны быть заменены выражениями XBase (или, по крайней мере, изменены таким образом, чтобы сделать их доступными в выражениях XBase), в противном случае вам придется поддерживать два вида выражений в генераторе кода или интерпретаторе.
Завершая мой ответ, я полагаю, если у вас есть простой редактор Xtext 1.0, где вы в основном полагались на автоматически созданные функции, переход на Xtext 2.0 кажется простым и рекомендуемым; однако, если вы настраивали много вещей в написанном вручную коде, будьте осторожны, потому что миграция может быть непростой, и я не нашел настоящего руководства по миграции.