尝试为Mongoose和MondoDb建立一个元模型,使用元模型概念、eclipse和xtext。
我正在尝试将我在test.mydsl文件中创建的对象分配给同一个文件中的另一个对象,但是我的test.mydsl文件中出现了错误。
我正在尝试将已创建的架构(Sc1)对象分配给Collection(col)对象,但当前出现了一个错误
错误消息
'paket.impl.NCollectionImpl@67d76e14{platform:/resource/test/classes/test.mydsl#//@collections.0}‘的“验证”功能包含一个未解析的代理'paket.impl.SchemaImpl@361d8284{platform:/resource/test/classes/test.mydsl#|0}’
模式和集合的my语法
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)*)?
'}';my test.mydsl
Database<db1>{
Schema<sc1>{
var ja=lp
ime:{
type:String,
min:123.0
}
}
Collection<col, sc1>
{
}
}我都试过了,但都没成功。
有什么好办法吗?
谢谢
编辑:
也许我还不够清楚。主要问题是NCollection规则中的“验证”属性。当我创建我的Schema对象(sc1 in test.mydsl),然后尝试将它作为"sc1“传递给Collection(col test.mydsl)时,”验证“属性不能像字符串一样接受它,并且我不知道如何像模式对象一样传递它。我希望这个解释能有所帮助。
发布于 2015-04-20 10:25:59
请尝试使用name=EString而不是Name=EString,因为Xtext为属性name强加了一个特殊的默认语义。此外,我建议查看文档。
发布于 2015-04-21 09:34:34
密码
validate=[Schema|EString]说:我想要一个通过字符串的模式引用,即"sc1",而不是名称。Xtext不知道如何将字符串转换为引用。用这个代替:
validate=[Schema]这是缩写
validate=[Schema|ID]它将使用Schema的名称作为引用。请注意,您必须写
('Schema' '<' name=EString) '>'即小写name使其工作。Xtext对名为name的属性有特殊处理。
https://stackoverflow.com/questions/29744024
复制相似问题