导入XbaseCompiler中的自定义类

斯图尔特

我正在使用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无法解析为类型”

塞巴斯蒂安·扎尔内科夫

ITreeAppendable具有方法追加的情况下ClassJvmTypeLightweightTypeReference平原

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

应该做到的。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章