这已经让我感到困惑了……我已经进行了研究,尝试了很多事情,但是失败了。是时候在这里问了。
我的语法有以下规则来定义类型:
MyTypeDeclaration returns XExpression:
=>({MyTypeDeclaration} type=JvmTypeReference name=ValidID '(')
(params+=FullJvmFormalParameter (',' params+=FullJvmFormalParameter)*)?
')' block=XBlockExpression
;
当然,在推断器中,我将其映射到一个类(具有父类MySupertype以便与其他Java类区分开)
members += f.toClass(f.fullyQualifiedName) [
superTypes += typeRef(MySupertype)
...
members += f.toConstructor [
for (p : f.params)
parameters += p.toParameter(p.name, p.parameterType)
body = f.block
]
...
]
我需要将此类作为函数调用,例如使用XFeatureCall。 XFeatureCall :: feature是一个JvmIdentifiableElement,映射时也是MyTypeDeclaration(在编译器中,我将添加“ new”前缀以调用类构造函数)。但是,自然地,XFeatureClass在其默认范围内不包括Java类。
问题是,如何更改此行为?我需要在XFeatureClass范围内包括MyTypeDeclaration实例(或更一般地说,将MySupertype作为超类的Java类)。我看着类型计算机,getLinkingCandidates和al,但对我来说似乎太不可思议了。
我使用2.15版本是因为我需要GWT ...
请帮忙,因为我现在真的被困住了...
谢谢
马丁