Доброе утро,
я новичок в тексте. Я написал грамматику для моего 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 для тестирования, все в порядке.
спасибо за вашу помощь