Error handling 忽略JAVACC中的MSGTokenError

Error handling 忽略JAVACC中的MSGTokenError,error-handling,javacc,Error Handling,Javacc,我使用JAVACC解析一些由bnf语法定义的字符串,这些字符串的首字母是非终结符G。 我想捕捉TokenMgrError抛出的错误。 我特别想处理以下两种情况: 如果输入的某个前缀满足G,但并非所有符号都从输入中读取,则将此情况视为正常,并通过调用G-()来返回找到的前缀AST.< 如果输入没有满足G的前缀,则从G()返回null 目前,我在每种情况下都得到了TokenMgrError。 我开始修改生成的文件(即,将Error改为Exception,并添加适当的try/catch/throws语

我使用JAVACC解析一些由bnf语法定义的字符串,这些字符串的首字母是非终结符G。 我想捕捉TokenMgrError抛出的错误。 我特别想处理以下两种情况:

  • 如果输入的某个前缀满足G,但并非所有符号都从输入中读取,则将此情况视为正常,并通过调用G-()来返回找到的前缀AST.<
  • 如果输入没有满足G的前缀,则从G()返回null 目前,我在每种情况下都得到了TokenMgrError。
    我开始修改生成的文件(即,将Error改为Exception,并添加适当的try/catch/throws语句),但我发现这很乏味。此外,自动生成JAVACC生成的修改过的文件不起作用。有没有更聪明的方法来实现这一点?

    您可以通过包括

    <*> TOKEN : { <UNEXPECTED: ~[] > }
    
    TOKEN:{}
    

    作为最后的规则。这会将所有问题推到语法级别,您通常可以更轻松地处理它们。

    您可以添加代码示例吗?关于异常而不是错误,请参阅