快速修复xtext中的终端规则

时间:2015-06-12 07:47:02

标签: java eclipse dsl 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是一个终端规则,它说该名称应以“_”开头。

现在我想对此终端规则实施快速修复。可能吗?我应该走哪条路?

提前谢谢。

1 个答案:

答案 0 :(得分:0)

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

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