【问题标题】:Xtext - Couldn't resolve reference to JvmOperationXtext - 无法解析对 JvmOperation 的引用
【发布时间】:2015-05-03 01:49:45
【问题描述】:

我正在尝试使用 XText 创建一种小型 DSL 语言。

grammar org.xtext.example.mydsl.MyDsl with org.eclipse.xtext.xbase.Xbase import "http://www.eclipse.org/xtext/common/JavaVMTypes" as jvmTypes generate myDsl "http://www.xtext.org/example/mydsl/MyDsl"

StartState:
'startState'
     'evaluate' ref=JvmTypeReference "-" op=[jvmTypes::JvmOperation]
'end';

以下是 ScopeProvider 的实现:

public class MyScopeProvider extends AbstractDeclarativeScopeProvider {

IScope scope_StartState_op(StartState call, EReference reference) {
    JvmType type = call.getRef().getType();
    List<IEObjectDescription> descriptions = new ArrayList<IEObjectDescription>();

    if (type instanceof JvmGenericType) {
        JvmGenericType gt = (JvmGenericType) type;
        for (JvmMember member : gt.getMembers()) {
            if (member instanceof JvmOperation) {
                descriptions.add(EObjectDescription.create(member.getSimpleName(), member));
            }
        }
    }
    return new SimpleScope(descriptions);
}}

我在结果编辑器中输入以下内容

startState evaluate controller.Controller - perform end

在这里,我可以按预期使方法(执行在 controller.Controller 类中的执行)的代码完成工作。但是我需要帮助来解决代码完成后发生的以下错误。

无法解析对 JvmOperation 'perform' 的引用。

另外,我尝试关注Peter's Blog,但没有成功

【问题讨论】:

  • 您使用哪个 xtext 版本?语法的声明行是怎样的?它适用于我使用 2.8.2 并继承 org.eclipse.xtext.xbase.Xtype
  • @ChristianDietrich - 我在问题顶部添加了语法。请看一看。我也在 Luna Service Release 2 (4.4.2) Build id: 20150219-0600 上使用 Xtext 2.8.2
  • @ChristianDietrich - 非常感谢您的提示。我使用的是org.eclipse.xtext.xbase.Xbase 而不是org.eclipse.xtext.xbase.Xtype

标签: xtext


【解决方案1】:

发布我自己问题的答案。语法应该如下所示。

grammar org.xtext.example.mydsl.MyDsl with org.eclipse.xtext.xbase.Xtype import "http://www.eclipse.org/xtext/common/JavaVMTypes" as jvmTypes generate myDsl "http://www.xtext.org/example/mydsl/MyDsl"

StartState: 'startState' 'evaluate' ref=JvmTypeReference "-" op=[jvmTypes::JvmOperation] 'end';

范围提供者和用法没有变化。

【讨论】:

    猜你喜欢
    • 2017-10-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多