我知道有一个简单的解决方案,但我不知道如何实现它。
我正在寻找如何实现答案而不是我需要做的事情。一半的答案已经在这个页面上: 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'
}
}
如何扩大范围?如何区分名称相同但范围不同的两个属性?