簡體   English   中英

Xtext文件中的Xtext分配對象

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM