java - 如何在语法或解析错误上抛出有意义的错误
问题描述
我有一个解析 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 版本
解决方案
您可以从添加自己的错误侦听器开始...
见https://learning.oreilly.com/library/view/the-definitive-antlr/9781941222621/f_0062.html
我觉得足够了,但你可能需要更多
推荐阅读
- ios - iOS 中的 Firebase 分析调试
- sql-server - 有什么方法可以从 SQL Server 2016 Profiler 连接到 SQL Server 2000
- php - 如何解码谷歌标签管理器 JSON
- glide-golang - golang build 命令返回意外的目录布局
- ruby-on-rails - 密码重置后设计自动登录不起作用
- sharepoint - Sharepoint 到 Alfresco 数据列表的迁移
- c - 如何修复确认错误canbus stm32
- python - IndexError:列表索引超出范围。这是在加密时
- python - 如何解决 __array_function__ 内部源错误?
- java - 数字是抽象的;无法实例化