【问题标题】:Import for custom class in XbaseCompiler在 XbaseCompiler 中导入自定义类
【发布时间】:2014-10-22 11:48:58
【问题描述】:

我正在使用 XBase 编写 DSL,并且我添加了一个新的解析器规则,它在语法中返回 XExpression

DatastepExpression returns xbase::XExpression: {DatastepExpression} 'data' name=ID '{' '}';

并在XbaseTypeComputer 子类中添加了相应的函数:

protected def _computeTypes(DatastepExpression expression, ITypeComputationState state) {
    var type = getTypeForName(typeof(FileDataset), state)
    state.acceptActualType(type)
}

现在我正在尝试将方法添加到 XbaseCompiler 子类中:

override protected doInternalToJavaStatement(XExpression expr, ITreeAppendable it, boolean isReferenced) {
    switch expr {
        DatastepExpression: {
            newLine
            append('''FileDataset «expr.name»;''')
        }
        default:
            super.doInternalToJavaStatement(expr, it, isReferenced)
    }
}

FileDataset 是我的语言 API 中的自定义类。 如何让这个类出现在生成文件顶部的导入中?

目前,当我用我的语言(在运行时 Eclipse 中)创建一个新文件时,生成的 Java 文件包含 FileDataset 变量声明,但它下面有一条红色波浪线和错误“FileDataset 无法解析为类型”

【问题讨论】:

    标签: xtext xbase


    【解决方案1】:

    ITreeAppendable 具有附加ClassJvmTypeLightweightTypeReference 实例的方法。一个普通的

    it.append(FileDataset).append(' ').append(expr.name)
    

    应该可以解决问题。

    【讨论】:

      猜你喜欢
      • 2011-12-13
      • 2012-11-19
      • 2023-03-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-01
      • 2015-08-20
      相关资源
      最近更新 更多