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 № 1Der 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=EString
Anstatt von Name=EString
da Xtext eine spezielle Standardsemantik für das Attribut auferlegt name
. Ich empfehle auch, in die Dokumentation zu schauen.