/ / Xtext Zuweisungsobjekt in der Xtext-Datei - Eclipse, dsl, xtext, Metamodel, Ecore

Xtext Zuweisen von Objekten in X Text-Datei - Eclipse, DSL, Xtext, Metamodell, Ecore

Versuch, ein Metamodell für Mongoose und MondoDb zu erstellen, wobei Metamodellierungskonzepte, Eclipse und Xtext verwendet werden.

Ich versuche, ein Objekt, das ich in meiner test.mydsl-Datei erstellt habe, einem anderen Objekt in derselben Datei zuzuweisen. Ich erhalte jedoch einen Fehler in meiner test.mydsl-Datei.

Ich versuche, das erstellte Schema (sc1) -Objekt dem Collection (col) -Objekt zuzuweisen, erhalte aber derzeit einen Fehler

Fehlermeldung

das Feature "validieren" von "paket.impl.NCollectionImpl @ 67d76e14 {Plattform: /resource/test/classes/test.mydsl # // @ Collections.0} " enthält einen nicht aufgelösten Proxy "paket.impl.SchemaImpl@361d8284 {Plattform: /resource/test/classes/test.mydsl# | 0}"

meine Grammatik für Schema und Collection

Schema returns Schema:
{Schema}
("Schema" "<" Name=EString) ">"
"{"
(schemaExpression+=Expression ( "," schemaExpression+=Expression)*)?
(verificationDocumentElement+=VerDocElement ( "," verificationDocumentElement+=VerDocElement)*)?
"}";

NCollection returns NCollection:
{NCollection}
("Collection" "<" Name=EString) "," (validate=[Schema|EString])? ">"
"{"
(document+=Document ( "," document+=Document)*)?
"}";

mein test.mydsl

Database<db1>{

Schema<sc1>{
var ja=lp
ime:{
type:String,
min:123.0
}

}
Collection<col, sc1>
{

}
}

Ich habe alles versucht, aber erfolglos.

Irgendwelche Ideen, was zu tun ist?

Vielen Dank

BEARBEITEN:

Vielleicht war ich nicht klar genug. Das Hauptproblem ist das Attribut "validate" in der NCollection-Regel. Wenn ich mein Schema-Objekt (sc1 in test.mydsl) erstelle und dann versuche, es als "sc1" an Collection (col in test.mydsl) zu übergeben, kann das "validate" -Attribut es nicht als Zeichenfolge akzeptieren und ich kann es nicht wissen, wie es als Schema-Objekt übergeben wird. Ich hoffe, diese Erklärung hilft.

Antworten:

0 für die Antwort № 1

Der Code

validate=[Schema|EString]

sagt: Ich möchte einen Schemabezug über einen String, d. h. "sc1" anstelle des Namens Xtext kann keine Zeichenfolge in eine Referenz konvertieren. Verwenden Sie stattdessen Folgendes:

validate=[Schema]

was ist kurz für

validate=[Schema|ID]

Das wird den Namen der verwenden Schema als Referenz. Beachten Sie, dass Sie schreiben müssen

("Schema" "<" name=EString) ">"

Kleinschreibung name Damit es funktioniert. Xtext hat eine spezielle Behandlung für aufgerufene Eigenschaften name.


0 für die Antwort № 2

Bitte versuchen Sie es zu benutzen name=EStringAnstatt von Name=EString da Xtext eine spezielle Standardsemantik für das Attribut auferlegt name. Ich empfehle auch, in die Dokumentation zu schauen.