У меня есть DSL в Xtext: Я хочу проверить, что если ObjectB имеет Element, объекты, содержащие Object (ObjectA), не имеют Element. Я получаю предупреждение в ObjectB, но не к объекту А.xtext проверка подобъектов
Domainmodel:
ObjectA | ObjectB
;
ObjectB:
'ObjectB'
'{'
(element = Element)?
(objects += ObjectA)*
'}'
;
ObjectA:
'ObjectA'
'{'
(element = Element)?
'}'
;
Element:
'Element' name=ID
;
Я хотел бы предупреждение, как парование также в Objecta:
@check
def ObjectinObject(ObjectB object)
{
if(object.element != null)
{
for (ObjectA e : object.objects)
{
if(e.element != null)
{//The fallowing Code will make Warning at the element and the subelement
warning('warning', DomainmodelPackage$Literals::DOMAINMODEL__ELEMENT)
warning('warning2',e.element ,DomainmodelPackage$Literals::ELEMENT__NAME)
}
}
}
}
спасибо, что мне очень помогло. Я немного потрудился и заставил его работать. У меня не было OBJECT_A__OBJECTS в качестве литералов, просто Object_B__OBJECTS, но это тоже не сработало. это было на самом деле: предупреждение («warning2», e.element, DomainmodelPackage $ Literals :: ELEMENT__NAME) – Iron