xtext 无法解析对模型的引用



我正在尝试为我的DSL创建语法,这是一个示例。

Model :
'@Model' modelName=ID '{'
    fields+=Field*
    toBeImportedIn+=ModelExportList*
'}'
;
/* Some other Rules here */
WebServiceConsumer :
'@WebServiceConsumer' '(' serviceName=ID ',' webServiceURL=STRING ',' 
 modelName=[Model])'
;

当我尝试这样测试语法时,我会发现一个错误:"无法解决对'mymodel'的引用。"

@Model myModel{}
@WebServiceConsumer(serviceName,"URL goes here",myModel)

您可以默认情况下引用具有称为name的属性的内容。您可以通过实现自己的IQualifiedNameProvider,例如

来绕过此行为
package org.xtext.example.mydsl;
import org.eclipse.xtext.naming.DefaultDeclarativeQualifiedNameProvider;
import org.eclipse.xtext.naming.QualifiedName;
import org.xtext.example.mydsl.myDsl.Element;
import org.xtext.example.mydsl.myDsl.Package;
public class MyDslQNP extends DefaultDeclarativeQualifiedNameProvider{
    QualifiedName qualifiedName(Element e) {
        Package p = (Package) e.eContainer();
        return QualifiedName.create(p.getName(), e.getId());
    }
}

不要忘记绑定

public class MyDslRuntimeModule extends org.xtext.example.mydsl.AbstractMyDslRuntimeModule {
    override Class<? extends IQualifiedNameProvider> bindIQualifiedNameProvider() {
        return MyDslQNP;
    }
}

最新更新