2014-10-22 17 views
0

我正在寫使用一個的XBase DSL和我添加這在語法返回XExpression一個新的解析器規則自定義類:進口在XbaseCompiler

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無法解析爲類型「

回答

1

ITreeAppendable有附加Class,JvmTypeLightweightTypeReference的實例的方法。平原

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

應該做的伎倆。