1

以下是带有交叉引用的 xtext 语法的简单表示。

有两个实体——一个容器和一个对象——以及每个实体上的操作。我希望能够通过对象自己的名称或容器名称来引用对象。我希望在任何一种情况下都可以使用交叉引用。

我的语法是:

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. 我该怎么做才能按照我描述的方式进行这项工作?

4

0 回答 0