xtext - AbstractDeclarativeValidator.warning 和 error 应该使用哪些参数?

标签 xtext eclipse-emf

我有一个关于 xtext 的有效语法,并且正在开始验证代码。

为此,我在为我创建的验证器 xtext 中添加了一个方法。

当然,当表达式无效时,我希望能够在给定的 AST 节点上发出警告。

我尝试了明显的:

@Check
public void testCheck(Expression_Multiplication m){
    if(!(m.getLeft() instanceof Expression_Number)){
        warning("Multiplication should be on numbers.",m.getLeft());
    }
    if(!(m.getRight() instanceof Expression_Number)){
        warning("Multiplication should be on numbers.",m.getRight());
    }
}

没有成功,因为 Expression_Number 扩展 EObject ,但不是 EStructuralFeature .
warning(String message, EStructuralFeature feature)
warning 还有许多其他原型(prototype), 但没有一个只需要 StringEobject .使用 null或从 eContainingFeature 中提取的各种值记录错误,有时会在正确的位置显示警告。搜索示例,我发现这些值通常来自名为 Literals 的类的静态字段。或 ***Package ,项目中生成的包含EStructuralFeature s,但我不知道要使用哪一个,或者为什么我需要其中一个。

所以问题是:

如何在给定的 AST 元素上放置警告?

最佳答案

EStructuralFeature 是您的 AST 的属性。您将找到一个生成的 EPackage 类,其中包含常量。

我想你的情况是这样的:

MyDslPackage.Literals.EXPRESSION_MULTIPLICATION__LEFT


MyDslPackage.Literals.EXPRESSION_MULTIPLICATION__RIGHT

关于xtext - AbstractDeclarativeValidator.warning 和 error 应该使用哪些参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17026243/

相关文章:

java - 在Java中使用OCL验证xmi模型

java - 在 Eclipse 中使用不同版本加载相同插件两次

eclipse - 什么是 Eclipse 建模框架?

java - 变量命名接口(interface)

parsing - Xtext 中的语法错误

java - Xtext- doGenerate 在作为 warfile 运行时返回 xtend 符号

eclipse - java.lang.OutOfMemory错误: PermGen space in Eclipse Helios

eclipse-emf - EProxy URI 无法在 ecore 模型中解析

java - 找不到 JRE 定义 : "J2SE-1.8". 启动中止