如何在语法或解析错误上引发有意义的错误 [英] How to throw meaningful error on syntax or parsing error
问题描述
我有一个解析jcl的语法
I have a grammar for parsing jcl
jcl如下所示 /*注释行 //PR1290 @ JOB(10),"ISPW COB SN900E"
The jcl looks like below /*comment line //PR1290@ JOB (10),'ISPW COB SN900E'
词法分析器和解析器工作正常. 假设而不是//如果jcl从/开始,当前lexer在以下位置抛出1:0令牌识别错误:'/P'
lexer and parser is working perfectly fine. Suppose instead of // if jcl starts from / currently lexer is throwing 1:0 token recognition error at: '/P'
解析器不会抛出任何可行的替代输入R1290 @ JOB
Parser will throw no viable alternative input R1290@ JOB
我正在寻找在编辑时抛出类似于eclipse的错误.
I am looking for throwing error similar to eclipse while editing.
public void Test(){
//test
//}
上面将说语法错误insert}来完成方法主体.
Above will say syntax error insert } to complete method body..
与此类似的事情,我想指出正确的错误消息,指出"jcl行应以//开头"
Something similar to this I want to point out right error message saying "jcl lines should start with // "
下面的示例jcl行 //NAME Operationname parameter = parametervalue
Example jcl line is below //NAME Operationname parameter=parametervalue
如果//丢失,我想抛出一句话,该行应以//开头 操作名称应为JOB或PROC 如果缺少关键字,则输入有效的关键字参数
If // is missing i want to throw saying line should start with // Operation name should be either JOB or PROC if keyword is missing then enter valid keyword parameter
并且如果缺少任何参数,我想指出该写意向用户显示完整消息.
and if any parameter is missing i want to point out that write meaning full message to user.
我正在使用antlr 4.7.2版本
I am using antlr 4.7.2 version
推荐答案
您可以先添加自己的错误侦听器...
You can start with adding your own error listener ...
请参见 https://learning.oreilly. com/library/view/the-definitive-antlr/9781941222621/f_0062.html
我觉得足够了,但您可能会需要更多
I find it enough but you will likely need more
这篇关于如何在语法或解析错误上引发有意义的错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!