Я пишу DSL, используя XBase, и добавил новое правило парсера, которое возвращает 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 не может быть преобразован в тип»