メタモデリングの概念、Eclipse、xtext を使用して、Mongoose と MondoDb のメタ モデルを作成しようとしています。
test.mydsl ファイルで作成したオブジェクトを同じファイル内の別のオブジェクトに割り当てようとしていますが、test.mydsl ファイルでエラーが発生します。
作成した Schema(sc1) オブジェクトを Collection(col) オブジェクトに割り当てようとしていますが、現在エラーが発生しています
エラーメッセージ
「paket.impl.NCollectionImpl@67d76e14{platform:/resource/test/classes/test.mydsl#//@collections.0}」の機能「validate」には、未解決のプロキシ「paket.impl.SchemaImpl@361d8284{platform」が含まれています:/resource/test/classes/test.mydsl#|0}'
私のスキーマとコレクションの文法
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)*)?
'}';
私のtest.mydsl
Database<db1>{
Schema<sc1>{
var ja=lp
ime:{
type:String,
min:123.0
}
}
Collection<col, sc1>
{
}
}
全部試しましたがだめでした。
何をすべきか?
ありがとう
編集:
たぶん、私は十分に明確ではありませんでした。主な問題は、NCollection ルールの「validate」属性にあります。スキーマ オブジェクト (test.mydsl の sc1) を作成し、それを Collection (test.mydsl の col) に "sc1" として渡そうとすると、"validate" 属性は文字列のようにそれを受け入れることができません。スキーマオブジェクトのように渡す方法を知っています。この説明がお役に立てば幸いです。