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
.
的属性有特殊处理
尝试使用元建模概念、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
.