xtext 生成的方法在生成器中是错误的
xtext generated method are wrong in the generator
早上好,
我是 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()}
当我显示特征名称时,common 的大小 common 的包含,可选
大小可选大小,可选包含,我有以下结果:
特征name:f2,common:2 共同特征的大小f32,f31
特征name:f2,大小optional:2可选特征f32,f31
特征name:f3,common:2 共同特征的大小f31,f32
特征name:f3,大小optional:2可选特征f31,f32
特征name:f31、common:0个共同特征的大小
特征 name:f31,optional:0 可选特征的大小
特征name:f32、common:0个共同特征的大小
特征 name:f32,optional:0 可选特征的大小
特征name:f4,common:2个共同特征的大小f32,f31
特征name:f4,大小optional:2可选特征f32,f31
特征name:f1,common:2个共同特征的大小f2,f31
特征name:f1,大小optional:2可选特征f2,f31
但是当我用Junit测试的时候,一切正常。
感谢您的帮助
确保如果你在验证器和生成器中使用你的特征列表,你不会意外地进行模型到模型转换,例如
feature.common + feature.optional
早上好, 我是 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()}
当我显示特征名称时,common 的大小 common 的包含,可选
大小可选大小,可选包含,我有以下结果:
特征name:f2,common:2 共同特征的大小f32,f31
特征name:f2,大小optional:2可选特征f32,f31
特征name:f3,common:2 共同特征的大小f31,f32
特征name:f3,大小optional:2可选特征f31,f32
特征name:f31、common:0个共同特征的大小
特征 name:f31,optional:0 可选特征的大小
特征name:f32、common:0个共同特征的大小
特征 name:f32,optional:0 可选特征的大小
特征name:f4,common:2个共同特征的大小f32,f31
特征name:f4,大小optional:2可选特征f32,f31
特征name:f1,common:2个共同特征的大小f2,f31
特征name:f1,大小optional:2可选特征f2,f31
但是当我用Junit测试的时候,一切正常。 感谢您的帮助
确保如果你在验证器和生成器中使用你的特征列表,你不会意外地进行模型到模型转换,例如
feature.common + feature.optional