Я знаю, что для этого есть простое решение, но я понятия не имею, как его реализовать.
Я ищу, как реализовать ответ, а не то, что мне нужно сделать. Половина ответа уже находится на этой странице: Перекрестные ссылки и область видимости Xtext
Моя проблема связана с грамматикой ниже:
DomainModel:
"DOMAINMODEL" name=ID "{"
"ENTITYS" "{"
(Entitys+=Entity)*
"}"
"ENTITY_RELATIONSHIP" "{"
(Relationships+=Relationship)*
"}"
"}";
Entity:
name=ID "{"
(Attributes+=Attribute)*
"}";
Attribute:
StringAttribute | NumberAttribute | ImageAttribute;
StringAttribute:
"STRING" name=ID;
NumberAttribute:
"NUMBER" name=ID;
ImageAttribute:
"IMAGE" name=ID;
// Relationship = [new table name] : [shared key name] -> ref_table(ref_id)
Relationship:
name=ID ":" newEntityName=ID "->" refEntityName=[Entity|ID]"("refName=[Attribute|ID]")"; // <- Problem here
Когда я пишу модель, я не могу получить "refName=[Attribute|ID]" для ссылки на атрибуты внутри объекта. В коде ниже
DOMAINMODEL auctionHouse{
ENTITYS {
lots{
NUMBER id0
NUMBER lotNo
STRING name
STRING priceEstimate
STRING description
}
auctions{
NUMBER id1
NUMBER date
STRING description
}
auction_lots{
NUMBER id2
STRING lot_id
NUMBER auction_id
}
}
ENTITY_RELATIONSHIP {
auction_lots : lot_id -> lots(id0) // <- Will not find 'id0'
auction_lots : auction_id -> auctions(id1) // <- Will not find 'id1'
}
}
Как расширить сферу? Как я могу различать два атрибута с одинаковым именем, но в разных областях?
|
не является альтернативой в контексте перекрестной ссылки, а используется для указания синтаксиса анализируемой строки. eclipse.org/Xtext/documentation/102_domainmodelwalkthrough.html 04.10.2016