xtext生成的方法在生成器中是错误的

时间:2018-08-30 12:02:00

标签: eclipse xtext emf xtend

早上好, 我是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进行测试时,一切正常。 谢谢您的帮助

1 个答案:

答案 0 :(得分:0)

请确保如果您在验证器和生成器中使用功能列表,请不要对模型2进行模型转换,例如

feature.common + feature.optional