首页 > 解决方案 > 如何在语法或解析错误上抛出有意义的错误

问题描述

我有一个解析 jcl 的语法

jcl 如下所示 /*comment line //PR1290@ JOB (10),'ISPW COB SN900E'

词法分析器和解析器工作得很好。假设而不是 // 如果 jcl 从 / 开始,当前词法分析器在:'/P' 处抛出 1:0 令牌识别错误

解析器不会抛出可行的替代输入 R1290@ JOB

我正在寻找在编辑时抛出类似于 eclipse 的错误。

public void Test(){
//test 
//}

上面会说语法错误插入}来完成方法体..

与此类似的事情我想指出正确的错误消息“jcl lines应该以//开头”

示例 jcl 行如下 //NAME Operationname parameter=parametervalue

如果 // 丢失我想抛出说行应该以 // 操作名称应该是 JOB 或 PROC 如果关键字丢失然后输入有效的关键字参数

如果缺少任何参数,我想指出写给用户的完整信息。

我正在使用 antlr 4.7.2 版本

标签: javaparsingantlr4lexerantlrworks

解决方案


您可以从添加自己的错误侦听器开始...

https://learning.oreilly.com/library/view/the-definitive-antlr/9781941222621/f_0062.html

我觉得足够了,但你可能需要更多


推荐阅读