早上好, 我是xtext的新手。我为dsl编写了语法,在生成器中,模型中生成的方法给我们错误的结果: 语法错误是: 功能:
'Feature' name=ID '{'
'verb' verb= [Activity]
'objects' '('(classes+=[Class] (','classes+=[Class])*)?')'
'common' '('(common+=[Feature] (','common+=[Feature])*)?')'
'optional' '('(optional+=[Feature] (','optional+=[Feature])*)?')'
'variabilities' '(' (variabilities+=[FeatureVariability] (','variabilities+=FeatureVariability])*)?')'
'generalization' '('(generalization+=[Feature] (','generalization+=Feature])*)?')'
'}';
然后具有具有以下功能的模型:
功能f2 {
verb act1
objects (C4, C3)
common()
optional(f32, f31)
variabilities()
generalization()
}
功能f3 {
verb act1
objects (C1, C2, C3)
common()
optional(f31, f32)
variabilities()
generalization()
}
Feature f31{
verb act2
objects (C3)
common()
optional()
variabilities()
generalization()
}
Feature f32{
verb act1
objects (C1, C2, C3)
common()
optional()
variabilities()
generalization()
}
功能f4 {
verb act1
objects (C1, C2, C3)
common()
optional(f32, f31)
variabilities()
generalization()
}
功能f1 {
verb act1
objects (C1, C4)
common(f2)
optional(f31)
variabilities()
generalization()}
当我显示要素名称时,公用的大小公用的contains,可选
size optionnal大小,optionnal包含,我得到以下结果:
功能名称:f2,公共尺寸:2个公共功能f32,f31
功能名称:f2,可选尺寸:2个可选功能f32,f31
功能名称:f3,公共尺寸:2个公共功能f31,f32
功能名称:f3,可选尺寸:2个可选功能f31,f32
功能名称:f31,通用大小:0个通用功能
功能名称:f31,可选尺寸:0个可选功能
功能名称:f32,通用大小:0个通用功能
功能名称:f32,可选尺寸:0个可选功能
功能名称:f4,公共尺寸:2个公共功能f32,f31
功能名称:f4,可选尺寸:2个可选功能f32,f31
功能名称:f1,公共尺寸:2个公共功能f2,f31
功能名称:f1,可选尺寸:2个可选功能f2,f31
但是当我使用Junit进行测试时,一切正常。 谢谢您的帮助
答案 0 :(得分:0)
请确保如果您在验证器和生成器中使用功能列表,请不要对模型2进行模型转换,例如
feature.common + feature.optional