Vinculando Xtext com o gerador de código StringTemplate
No meu projeto atual, estou tentando vincular a especificação DSL escrita em xtext e gerador de código escrito em StringTemplate.
Por exemplo, a sintaxe da minha especificação DSL é a seguinte. Estou inserindo essas informações por meio de excelentes recursos de editor fornecidos pelo xText.
structs:
TempStruct
tempValue : double;
unitOfMeasurement : String;
abilities :
sensors:
TemperatureSensor
generate tempMeasurement : TempStruct;
attribute responseFormat : String;
A gramática da especificação de DSL acima mencionada é a seguinte:
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 ';'
;
O xText gera um modelo semântico correspondente à especificação acima mencionada. Em nosso exemplo, o xText gera um modelo semântico, que contém arquivos comostruct.java
, Field.java
, Attribute.java
, Sensor.java
etc.
Eu posso ver claramente que este modelo semântico pode ser ligado aoStringTemplate
Arquivo. oStringTemplate
arquivo leva objeto da classe. Por exemplo,StringTemplate
arquivo levaTemperatureSensor
(instância do Sensor) como Entrada e gera o código Java.
Minha pergunta é como instanciar o modelo semântico (gerado por xText) e o que eu preciso fazer para vincular com arquivos StringTemplate?