Xtext中有效的内容提议和引用成员引用

时间:2015-06-29 21:22:08

标签: java antlr xtext eclipse-emf xtend


我使用了新推出的xtext 2.8.3的强大功能,即合成代币,但我面临的是

  1. 落后于提案
  2. 验证错误
  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的结构化功能列表。

0 个答案:

没有答案