忽略JAVACC中的MSGTokenError

时间:2013-07-25 02:56:46

标签: error-handling javacc

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

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

1 个答案:

答案 0 :(得分:1)

您可以通过包含

来消除所有TokenMgrErrors
<*> TOKEN : { <UNEXPECTED: ~[] > }

作为最终规则。这会将你所有的问题推到语法层面,你可以更容易地处理它们。