Xtext 在 xtext 文件中分配对象

Xtext assign object in xtext file

尝试使用元建模概念、eclipse 和 xtext 为 Mongoose 和 MondoDb 制作元模型。

我试图将我在 test.mydsl 文件中创建的对象分配给同一文件中的另一个对象,但我在 test.mydsl 文件中遇到错误。

我正在尝试将创建的 Schema(sc1) 对象分配给 Collection(col) 对象,但当前出现错误

错误信息

the feature 'validate' of 'paket.impl.NCollectionImpl@67d76e14{platform:/resource/test/classes/test.mydsl#//@collections.0}' contains an unresolved proxy '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" 属性。 当我创建我的 Schema 对象(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.

的属性有特殊处理