сгенерированный xtext метод неверен в генераторе - PullRequest
0 голосов
/ 30 августа 2018

Доброе утро, я новичок в тексте. Я написал грамматику для моего dsl и в genrator метод, сгенерированный в модели, дает неправильный результат: неправильная грамматика: Характеристика:

'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()
    }

Feature 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()}    

когда я отображаю имена функций, общие размеры содержат общие, необязательные

размер необязательный размер, необязательное содержимое, у меня есть следующие результаты:

имя элемента: 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 голосов
/ 31 августа 2018

убедитесь, что вы работаете со своими списками функций в валидаторе и генераторе, что вы не выполняете случайным образом преобразование model2model, например,

feature.common + feature.optional

...