我定义了一个无序的组,它的工作方式与我预期的一样。我唯一要更改的是错误msg,该错误在尚未建模无序组的元素时出现。有没有简单的方法来解决这个问题?我已经尝试过自定义检查,但是出现了意外的行为。
遵循我对无序组和错误msg的规则:
Element:
(name=ConfigurationName) &
(description=Description)? &
(tool=Tool) &
(model=Model) &
(interfaces=Interfaces)? &
(paramaters=Parameters)? &
(paramfile=ParamFile)?
;
rule ruleElement failed predicate: {getUnorderedGroupHelper().canLeave(grammarAccess.getElementAccess().getUnorderedGroup())}?
我想将此错误消息更改为类似的内容:“配置中需要以下元素:...。”
最佳答案
Xtext具有一项称为SyntaxErrorMessageProvider的服务,该服务用于重新编写解析器错误消息。您必须在解析器级别定义消息(因此将没有EMF模型可以使用),但是可以获取原始错误消息和上下文,遍历它们并提供您自己的错误消息。
要注册它,请打开«YourLanguage»RuntimeModule
类,并添加以下方法:
public Class<? extends ISyntaxErrorMessageProvider> bindISyntaxErrorMessageProvider() {
return «YourLanguage»SyntaxErrorMessageProvider.class;
}
其中
«YourLanguage«SyntaxErrorMessageProvider
是您引入的类,扩展了SyntaxErrorMessageProvider
类,您可以在其中实现自定义功能。