我正在使用xtext制作一个非常简单的DSL。项目将包含定义消息名或引用消息名称的文件。我列举了一个简化的例子:
语法:
Model:
statements+=(MessageDefinition | MessageUsage)*;
MessageDefinition:
'[MESSAGE_DEF]' name=ID;
MessageUsage:
'[MESSAGE_USAGE]' usage=[MessageDefinition];
File1.ex:
[MESSAGE_DEF] EXAMPLE_1
[MESSAGE_DEF] EXAMPLE_2
[MESSAGE_USAGE] EXAMPLE_1
File2.ex:
[MESSAGE_USAGE] EXAMPLE_2
在本例中,来自EXAMPLE_1的交叉引用可以使“开放声明”的用法带我进入定义。但是,EXAMPLE_2上的交叉引用不起作用。我认为默认的作用域规则可以阻止不同的文件共享引用。
为了使项目中的所有文件共享交叉引用的相同全局范围,我需要添加什么?
其他信息:
该项目是在标准向导中使用"Xtext Project“创建的,我只从预先生成的代码中编辑了语法,其他的一切都是按默认值计算的。我想我需要添加一些自定义的作用域行为/规则来将所有文件加载到全局范围中,但我不确定应该如何做到这一点?
发布于 2016-11-20 20:45:26
如果您的语法和范围确定的话,它会很好地工作。
https://stackoverflow.com/questions/40709423
复制相似问题