Verknüpfung von Xtext mit dem StringTemplate-Codegenerator

In meinem aktuellen Projekt versuche ich, die in xtext geschriebene DSL-Spezifikation und den in StringTemplate geschriebenen Codegenerator zu verknüpfen.

Beispielsweise lautet die Syntax meiner DSL-Spezifikation wie folgt. Ich gebe diese Informationen über nette Editorfunktionen von xText ein.

structs:
    TempStruct
        tempValue : double;
            unitOfMeasurement : String;

abilities :
    sensors:    
        TemperatureSensor
            generate tempMeasurement : TempStruct;
            attribute responseFormat : String;  

Die Grammatik der oben genannten DSL-Spezifikation lautet wie folgt:

       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 ';' 
        ;

Der xText generiert ein semantisches Modell, das der oben genannten Spezifikation entspricht. In unserem Beispiel generiert xText ein semantisches Modell, das Dateien wie zstruct.java, Field.java, Attribute.java, Sensor.java, usw.

Ich kann deutlich sehen, dass dieses semantische Modell mit dem verknüpft werden kannStringTemplate Datei. DasStringTemplate Datei nimmt Objekt der Klasse. Zum Beispiel,StringTemplate Datei nimmtTemperatureSensor (Instanz von Sensor) als Eingabe und Generierung von Java-Code.

Meine Frage ist, wie ich das (von xText generierte) semantische Modell instanziieren kann und was ich tun muss, um mit StringTemplate-Dateien zu verknüpfen?

Antworten auf die Frage(1)

Ihre Antwort auf die Frage