reference - XText:允许无效的交叉引用

标签 reference grammar xtext cross-reference

我需要构建一个包含交叉引用的语法,这可能是无效的,即指向一个不存在的目标。包含此类引用的文件不应产生错误,而只会产生警告。生成器会将此作为特殊情况处理。

我如何使用 XText 做到这一点?

最佳答案

无法在 EMF 中创建对不存在目标的有效交叉引用。

我建议使用 EAttributes 而不是 EReferences:

  • 在 {YourDSL} 语法中将 feature=[EClass|ID] 更改为 feature=ID
  • 提供范围计算实用程序,就像在 {YourDSL}ScopeProvider 类的 *scope_EClass_feature(context, reference)* 方法中所做的那样。由于此范围方法仅使用给定引用的 eType,因此重新实现应该很简单。
  • {YourDSL}ProposalProvider 中使用此范围计算实用程序来为引入的 EAttribute 建议值。
  • 您可以选择在验证规则中使用此实用程序,以在 EAttribute 不“有效”时向其添加警告/信息。
  • 最后使用生成器中的实用程序根据有效的目标 eObject 创建输出。

关于reference - XText:允许无效的交叉引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13634242/

相关文章:

C++ 如何使用 vector<T> 专门化模板?

java - XText:7 种语言教程无法解析示例 1 脚本中对 JvmIdentifyingElement 的引用

validation - 如何从我的 Xtext 验证器访问项目的首选项?

perl - 如何使用perl中的函数引用执行包中的函数?

ios - 查找对 System.IO.FileSystem.Watcher.dll 的引用

C++对指针的引用

validation - 如何在原始文档中获取对象的位置(#-行)?

C++ 通过引用传递数组

grammar - 是EBNF标准的在线版本不正确,还是Mr.的章节名称不正确?帕蒂斯?

python - 解析 "simple"语法