[英]Xtext assign object in xtext file
嘗試使用元建模概念,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),然后嘗試將其作為“ sc1”傳遞給Collection(test.mydsl中的col)時,“ validate”屬性無法像字符串一樣接受它,並且我不接受知道如何像Schema對象一樣傳遞它。 我希望這種解釋會有所幫助。
請嘗試使用name=EString
而不是Name=EString
因為Xtext對屬性name
施加了特殊的默認語義。 另外,我建議您查閱文檔。
編碼
validate=[Schema|EString]
說:我想要一個通過字符串的模式引用,即"sc1"
而不是名稱。 Xtext不知道如何將字符串轉換為引用。 使用此代替:
validate=[Schema]
這是短的
validate=[Schema|ID]
這將使用Schema
的名稱作為參考。 請注意,您必須編寫
('Schema' '<' name=EString) '>'
即小寫的name
,使其工作。 Xtext對名為name
屬性進行了特殊處理。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.