我正在使用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
具有方法追加的情况下Class
,JvmType
或LightweightTypeReference
。平原
it.append(FileDataset).append(' ').append(expr.name)
应该做到的。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句