快速修复 xtext 中的终端规则

Quick fix for terminal rules in xtext

我的 DSL 语法看起来像(只显示必要的部分)

assemblerProgram: // standard way of defining model
content += CommandLine+
;

CommandLine: 
ControlInstructions | Pointaddress ;

Pointaddress:
name = POINTINGADD

terminal POINTINGADD:('_')('a'..'z'|'A'..'Z')? ('a'..'z'|'A'..'Z'|'_'|'0'..'9')*;

其中 POINTINGADD 是一个终端规则,规定名称应以“_”开头。

现在我想快速修复这个终端规则。可能吗?我应该走哪条路?

提前致谢。

如果您想实现 "semantic" quickfix(即对模型而不是文本进行操作),最好使用更宽松的语法,它接受没有前导下划线的名称, 然后创建一个验证来抱怨这个并分配一个特定的错误代码,它最终可以用来触发 quickfix

或者,确实在处理语法错误时,文档建议使用ISyntaxErrorMessageProvider,但我还没有使用过这种方法。