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