以下は、クロス リファレンスを使用した xtext 文法の簡単な表現です。
コンテナとオブジェクトの 2 つのエンティティと、それぞれに対する操作があります。オブジェクトを独自の名前で、またはコンテナ名で修飾して参照できるようにしたいと考えています。どちらの場合も相互参照が利用できるようにしてほしい。
私が持っている文法は次のとおりです。
Model:
operations+=Operation*;
ContainerEntity:
name=ID;
ObjectEntity:
(first=[ContainerEntity] '.')? name=ID
;
Operation:
CreateContainer | CreateObject | ContainerOp | ObjectOp
;
CreateContainer:
'Container' container=ContainerEntity ';'
;
CreateObject:
'Object' object=ObjectEntity ';'
;
ContainerOp:
'ContainerOp' name=[ContainerEntity] ';'
;
ObjectOp:
'ObjectOp' name=[ObjectEntity] ';'
;
そして、編集者の声明は次のとおりです。
Container c;
Object o;
ContainerOp c;
ObjectOp o;
ObjectOp c.o; // ERROR: Couldn't resolve reference to ObjectEntity 'c'.
「c」を として認識しないことに注意してくださいContainerEntity
。私が説明した方法でこれを機能させるにはどうすればよいですか?