在XbaseCompiler中导入自定义类

时间:2014-10-22 11:48:58

标签: xtext xbase

我正在使用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无法解析为#34;

类型

1 个答案:

答案 0 :(得分:1)

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

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

应该这样做。