【发布时间】: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 无法解析为类型”
【问题讨论】: