error-handling - Xtext : Customizing Error msg by unordered groups

标签 error-handling message xtext unordered

我定义了一个无序的组,它的工作方式与我预期的一样。我唯一要更改的是错误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类,您可以在其中实现自定义功能。

关于error-handling - Xtext : Customizing Error msg by unordered groups,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14526524/

相关文章:

c# - 当 TextFieldParser 抛出错误时,如何从它捕获有问题的行?

node.js - RabbitMQ 在 ACK 后顺序接收消息

可选项目的 Xtext 无序列表

java - 是否有 Xtext 的 java 语法文件?

java - 找不到 JRE 定义 : "J2SE-1.8". 启动中止

php - 出色地处理从代码中不同位置浮出的非对象错误的属性

python - 处理 Python 函数中参数无效导致的 NameErrors

git - 在 Git 中创建新分支时可以添加消息/注释/评论吗?

iphone - 使用按钮和文本字段/ View (iPhone) 打开消息应用程序(SMS 应用程序)

node.js - 如何检查变量是否为NodeJS中的矩对象