eclipse cdt — ссылки на типы C ++ в грамматике Xtext / DSL

Я потратил несколько дней, пытаясь найти решение для ссылки на типы C ++ в Xtext DSL. На данный момент я достаточно знаком с механизмом Xtext / Eclipse для справочных типов Java / JVM.

Предположительно, чтобы сделать что-то похожее на механизм импорта JVM, мне нужно было бы сохранить существующий (возможно, довольно большой) индекс CDT в виде Ecore и импортировать этот Ecore в мою грамматику Xtext.

Другой альтернативой, которую я рассматриваю, является некоторый программный хук в существующий индекс CDT. Кажется, этот вариант может быть более сложным в том смысле, что для его реализации может потребоваться больше пользовательского кода.

Кто-нибудь обнаружил и успешно реализовал ссылку на типы C ++ в грамматике Xtext / DSL? Есть примеры? Любые предложения для лучшего решения? В этом отношении любое из моих предложенных решений кажется разумным / выполнимым?

Спасибо.

2

Решение

Чтобы действительно иметь возможность ссылаться на C ++ или любой не-Xtext элемент в DSL-файлах Xtext, вы должны включить ссылочные элементы в индекс Xtext.

Правильный способ сделать это — иметь IAllContainerState, который включает в себя индекс CDT, и создать IResourceDescription для файла C ++. Индекс CDT должен содержать информацию о содержащихся ресурсах, типах и именах, это может быть сопоставлено с понятиями, описанными в главе об определении объема: https://eclipse.org/Xtext/documentation/303_runtime_concepts.html#scoping

GenericResourceServiceProvider может использоваться для IResourceServiceProvider для ресурсов C ++.

Посмотрите на пакет org.eclipse.xtext.resource.generic и на то, как он используется для индексации моделей .ecore.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]