我使用了新推出的xtext 2.8.3的强大功能,即合成代币,但我面临的是
无法解析对EStructuralFeature' name'的引用。
问题是除非我输入第一个字符,否则提案不会显示。 我已经覆盖了以下方法,但效果不佳
complete_BEGIN(EObject model, RuleCall ruleCall, ContentAssistContext context,
ICompletionProposalAcceptor acceptor)
和我的范围
override getScope(EObject context, EReference reference) {
if (reference.name == "eType") {
val elements = Lists.newArrayList(EcoreUtil2.getRootContainer(context).eAllContents.filter(EClassifier))
return Scopes::scopeFor(elements)
} else if (reference.name == "feature" && context.eContainer instanceof Instance) {
var eClass = (context.eContainer as Instance).getEType()
Scopes::scopeFor((eClass as EClass).EStructuralFeatures)
}
super.getScope(context, reference)
}
和我使用它们的语法是
InstaceFeature:
feature+=[ecore::EStructuralFeature] value=ValueLiteral;
//
Instance returns ecore::EClass:
{Instance}
name=ID '=' 'new' eType=[ecore::EClass]
(BEGIN
features+=InstaceFeature*
END)?;
我想要执行的是feature
中的InstanceFeature
将包含eType=[ecore::EClass]
对象中Instance
的结构化功能列表。