Связывание Xtext с генератором кода StringTemplate
В моем текущем проекте я пытаюсь связать спецификацию DSL, написанную на xtext, и генератор кода, написанный на StringTemplate.
например, синтаксис моей спецификации DSL следующий. Я ввожу эту информацию через удобные средства редактирования, предоставляемые xText.
structs:
TempStruct
tempValue : double;
unitOfMeasurement : String;
abilities :
sensors:
TemperatureSensor
generate tempMeasurement : TempStruct;
attribute responseFormat : String;
Грамматика вышеупомянутой спецификации DSL выглядит следующим образом:
VocSpec:
'structs' ':'
(structs += Struct)+
'abilities' ':'
('sensors' ':' (sensors += Sensor)+ )+
;
Sensor:
name = ID
((attributes += Attributes ) |
(sources += Sources))*
;
Sources:
'generate' name=ID ':' type = Type ';'
;
Attributes:
'attribute' name=ID ':' type = Type ';'
;
Struct:
name = ID
(fields += Field)+
;
Field:
name=ID ':' type += Type ';'
;
XText генерирует семантическую модель, соответствующую вышеупомянутой спецификации. В нашем примере xText генерирует семантическую модель, которая содержит файлы, такие какstruct.java
, Field.java
, Attribute.java
, Sensor.java
, так далее.
Я ясно вижу, что эта семантическая модель может быть связана сStringTemplate
файл.
StringTemplate
Файл принимает объект класса. Например,StringTemplate
файл занимаетTemperatureSensor
(экземпляр датчика) в качестве ввода и генерировать код Java.
Мой вопрос заключается в том, как мне создать экземпляр семантической модели (сгенерированной xText) и что мне нужно сделать, чтобы связать файлы StringTemplate?