Ich bin neu in der Arbeit mit Xtext und Xtend und ich bin auf ein Problem gestoßen, von dem ich hoffe, dass mir jemand helfen kann, es zu lösen. Was ich versuche zu erreichen ist, Variablen von einer externen Quelle aufzulösen, anstatt sie explizit in der DSL zu deklarieren. Ich habe das folgende Beispiel zu demonstrieren: ist die Grammatik:Auflösen von Variablen in meinem DSL von einer externen Quelle
grammar org.xtext.example.mydsl.MyDsl with org.eclipse.xtext.xbase.Xbase
generate myDsl "http://www.xtext.org/example/mydsl/MyDsl"
Model:
configUrl=ConfigUrl
devices+=Device*
test=Test
;
ConfigUrl:
"ConfigURL=" url=STRING
;
Device:
'Device' name=ID
'has channels: ' (channels+=Channel (',' channels+=Channel)*)?
;
Channel:
name=ID
;
Test:
'DoSomething' channel=[Channel|QualifiedName]
;
und hier ist ein Beispiel für die Verwendung:
ConfigURL="http://localhost:8080/devices"
Device Light has channels: state
DoSomething Light.state
Statt explizit die Geräte in der DSL erklärt würde ich lösen möchte sie von und externe Quelle (die Variable ConfigURL). Soweit ich das beurteilen kann, hängt das, was ich suche, mit der Scoping-Funktionalität von Xtend zusammen. Ich habe mir die Dokumentation angeschaut, aber nicht viel gefunden, was mir weiterhelfen kann. Außerdem scheint es, dass sich einige Dinge geändert haben und die Beispiele, auf die ich gestoßen bin, veraltet sind.
Danke,