Отдельный генератор кода Xtext из проекта грамматики

я пишу генератор кода, и я думал об отделении генератора кода от грамматики. Мне удалось сгенерировать код «MyDslGenerator.java», но моя проблема заключается в том, как интегрировать этот проект с проектом грамматики. Идея этого состоит в том, чтобы разделить мой проект на модули, имея одну часть, отвечающую за грамматику и генерацию пользовательского интерфейса, и другую часть, отвечающую за генерацию кода. Каждый раз, когда я пытаюсь настроить генератор кода, который находится в другом проекте, я получаю сообщение об ошибке, например, что некоторые методы не были реализованы. Как лучше всего отделить мой генератор кода от моего проекта?


person keysuke    schedule 22.05.2014    source источник


Ответы (1)


как насчет наличия двух версий и привязки их во время выполнения и пользовательского интерфейса. в качестве альтернативы я не знаю, работает ли все еще http://kthoms.wordpress.com/2011/09/28/moving-an-xtend-generator-into-its-own-plugin/ (по крайней мере, идея должна оставаться в силе)

person Christian Dietrich    schedule 27.05.2014
comment
Я прочитал этот пост некоторое время назад, но безуспешно, потому что генератор встроен в проект xtext. Я пытался сгенерировать только класс генератора кода в другом проекте и вызвать его так же, как вы, используя контекстное меню, но я получаю ошибки классов, которые не были реализованы. После некоторых исследований многие люди говорят, что мне нужно реализовать интерфейс IGenerator, но как мне вызвать метод doGenerate из другого плагина?? - person keysuke; 28.05.2014
comment
Ваш плагин должен подключаться к AS builderparticipant - person Christian Dietrich; 28.05.2014
comment
Я попытался создать подключение плагина в качестве участника компоновщика, но я получаю, что реализация для org.eclipse.core.resources.IWorkspaceRoot не была привязана, и реализация для org.eclipse.xtext.generator.IGenerator не была привязана. Что все это значит? - person keysuke; 29.05.2014
comment
Я решил проблему с реализацией, но теперь получаю следующее: org.eclipse.xtext.builder.impl.RegistryBuilderParticipant$BuilderParticipantReader — плагину org.xtext.example.mydsl.generator не удалось загрузить класс org.xtext .example.mydsl.ui.MyDslExecutableExtensionFactory. - person keysuke; 29.05.2014
comment
Конечно, класс должен быть создан или импортирован через зависимость от плагина. - person Christian Dietrich; 29.05.2014
comment
После повторения шагов я думаю, что это работает, потому что, если я изменю что-нибудь во внешнем плагине генератора, что может сломать генератор, это действительно так. Но я думаю, что что-то упустил, я поместил println('внешний генератор') внутрь Generator.xtend, но после выполнения команды сохранения для генерации моего кода в моей консоли что-нибудь появляется. - person keysuke; 31.05.2014
comment
На какой консоли вы смотрите? - person Christian Dietrich; 31.05.2014
comment
Кстати, это просто объяснила идею, поскольку с тех пор в некоторых API произошли изменения, вам также нужно перенести идею. - person Christian Dietrich; 31.05.2014
comment
Консоль из eclipse, а не из приложения, когда я делаю то же самое в проекте по умолчанию, он работает, и я получаю печатный текст в своей среде разработки. Как я могу заставить плагин внешнего генератора генерировать мой код? - person keysuke; 31.05.2014
comment
Привет, я попробовал, и это сработало хорошо, но это все еще своего рода обходной путь, который вам нужно знать, что вы делаете. - person Christian Dietrich; 31.05.2014
comment
Привет, Кристиан, я наконец исправил, моя проблема в том, что я забыл добавить реализацию IGenerator в свой RuntimeModule. Теперь мой проект прекрасно работает. Спасибо за помощь ;) - person keysuke; 02.06.2014