/ / Xtext attribue un objet dans un fichier xtext - eclipse, dsl, xtext, métamodèle, ecore

Xtext attribue un objet dans un fichier xtext - eclipse, dsl, xtext, métamodèle, ecore

Essayer de créer un méta-modèle pour Mongoose et MondoDb, en utilisant les concepts de métamodélisation, eclipse et xtext.

J'essaie d'assigner un objet que j'ai créé dans mon fichier test.mydsl à un autre objet du même fichier, mais je reçois une erreur dans mon fichier test.mydsl

J'essaie d'assigner un objet de schéma créé (sc1) à un objet de collection (col), mais une erreur est en cours

Message d'erreur

la fonctionnalité "valider" de "paket.impl.NCollectionImpl @ 67d76e14 {platform: /resource/test/classes/test.mydsl # // @ collections0}} " contient un proxy non résolu "paket.impl.SchemaImpl@361d8284 {platform: /resource/test/classes/test.mydsl# | 0}"

ma grammaire pour Schema et 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)*)?
"}";

mon test.mydsl

Database<db1>{

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

}
Collection<col, sc1>
{

}
}

J'ai tout essayé, mais sans succès.

Une idée de ce qu'on peut faire?

Merci

MODIFIER:

Peut-être que je n'étais pas assez clair. Le problème majeur concerne l'attribut "validate" dans la règle NCollection. Lorsque je crée mon objet Schema (sc1 dans test.mydsl), puis que je tente de le transmettre à Collection (col dans test.mydsl) en tant que "sc1", l'attribut "validate" ne peut pas l'accepter comme chaîne, et je ne "t savoir comment le passer comme objet Schema. J'espère que cette explication aide.

Réponses:

0 pour la réponse № 1

Le code

validate=[Schema|EString]

dit: je veux une référence de schéma via une chaîne, c'est-à-dire "sc1" au lieu du nom. Xtext ne sait pas comment convertir une chaîne en une référence. Utilisez ceci à la place:

validate=[Schema]

qui est court pour

validate=[Schema|ID]

Cela utilisera le nom du Schema comme référence. Notez que vous devez écrire

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

c'est-à-dire minuscule name pour le faire fonctionner. Xtext a un traitement spécial pour les propriétés appelées name.


0 pour la réponse № 2

S'il vous plaît essayez d'utiliser name=EStringau lieu de Name=EString comme Xtext impose une sémantique par défaut spéciale pour l'attribut name. Aussi, je recommande de regarder dans la documentation.