Validation xtext自定义验证程序错误标记

Validation xtext自定义验证程序错误标记,validation,xtext,Validation,Xtext,我有一张桌子 CREATE TABLE demo { a int, b int, PRIMARY KEY (a, b, c) }; 每行是一个 Columns : k=ID v=ComparatorType (is_pk?=K_PRIMARY K_KEY)? | is_pk?=K_PRIMARY K_KEY '(' cs+=ID (',' cs+=ID )* ')' ; 我这样调用我的错误函数 error('PRIMARY KEYS id need to decl

我有一张桌子

CREATE TABLE demo {
   a int,
   b int, 
   PRIMARY KEY (a, b, c)
};
每行是一个

Columns
  : k=ID v=ComparatorType (is_pk?=K_PRIMARY K_KEY)?
  | is_pk?=K_PRIMARY K_KEY '(' cs+=ID (',' cs+=ID )* ')'
;
我这样调用我的错误函数

error('PRIMARY KEYS id need to declare in advance', 
  MyPackage.Literals.COLUMNS__CS,
  PRIMARY_KEYS_DONT_EXIST)  

它可以找到语法错误,但xtext将在
主键
行的第一个元素处标记error,在我的示例中是
a
。有没有办法在
c
或整个
(a,b,c)
处标记错误?

您可以将应标记为附加参数的索引传递给error函数。如果您不仅想标记c,当然可以为每个索引创建多个错误。

太好了!阅读文档时不知道我能做到这一点Hi@Sebastian new我正在为此编写quickfix。如何在
ISemanticModification中检索
索引
。应用
?好问题,不幸的是,这个问题上没有可以通过语义修改解决的部分。你能申请一张Xtext的票吗?同时,您可能希望通过NodeModelUtils.findLeafNodeAtOffset重构位置,并从那里开始查找索引和值