【发布时间】:2015-04-21 17:34:34
【问题描述】:
尝试使用元建模概念、eclipse 和 xtext 为 Mongoose 和 MondoDb 制作元模型。
我正在尝试将我在 test.mydsl 文件中创建的对象分配给同一文件中的另一个对象,但我的 test.mydsl 文件中出现错误。
我正在尝试将创建的 Schema(sc1) 对象分配给 Collection(col) 对象,但目前出现错误
错误信息
“验证”功能 'paket.impl.NCollectionImpl@67d76e14{平台:/resource/test/classes/test.mydsl#//@collections.0}' 包含未解析的代理 'paket.impl.SchemaImpl@361d8284{platform:/resource/test/classes/test.mydsl#|0}'
我的 Schema 和 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)*)?
'}';
我的 test.mydsl
Database<db1>{
Schema<sc1>{
var ja=lp
ime:{
type:String,
min:123.0
}
}
Collection<col, sc1>
{
}
}
我尝试了所有,但没有成功。
有什么想法吗?
谢谢
编辑:
也许我不够清楚。主要问题是 NCollection 规则中的“验证”属性。 当我创建我的 Schema 对象(test.mydsl 中的 sc1)然后尝试将它作为“sc1”传递给 Collection(test.mydsl 中的 col)时,“validate”属性不能像字符串一样接受它,我不知道如何像 Schema 对象一样传递它。 我希望这个解释会有所帮助。
【问题讨论】:
标签: eclipse dsl xtext metamodel ecore