gpt4 book ai didi

c++ - 如果在声明类型之前引用了类型,如何在 Xtext IDE 中显示错误

转载 作者:行者123 更新时间:2023-11-28 02:19:59 25 4
gpt4 key购买 nike

我们有一个自定义的基于 Xtext 的 DSL,并通过 Xtend 从用这个 DSL 编写的文档生成 C++ 代码。下面是 DSL 的一个简单示例:

component CMP
{
type A
{
B member_1;
}

type B
{
string member_1;
}
}

最终,为每个 component 元素生成一个包含 C++ 结构(基于 type 元素)的头文件。现在出现以下问题:在我的 DSL 中 AB 可以正确解析(即使 B 声明晚于 A)。但是,当我们生成 C++ 代码并执行类似 resource.contents.filter(TypeElement) 的操作来遍历所有 type 元素时,它们的传递顺序与在文档。这会导致生成的 C++ header 出现编译器错误,因为 B 的声明晚于 A,并且如果没有前向声明,编译器将无法解析。

我想要的是在这种情况下在 IDE 中显示错误(即,如果存在对文档后面出现的 type 的引用)。是否有针对此类场景的某种标准验证器?如果不是,那么处理此问题的最恰当方法是什么?

提前致谢!

最佳答案

前向引用没有标准验证器。您需要根据交叉引用目标的值自行定义一个。将 ILocationInFileProvider 注入(inject)您的验证器以获取引用实例的区域并将其与引用所有者的区域进行比较。这将起到检测前向引用的作用。

关于c++ - 如果在声明类型之前引用了类型,如何在 Xtext IDE 中显示错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32869219/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com