快速修复 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,但我还没有使用过这种方法。
我的 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,但我还没有使用过这种方法。