0

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

  1. 如果输入的某些前缀满足 G,但并非所有符号都从输入中读取,则将这种情况视为正常情况,并通过调用 G() 返回 AST 以找到找到的前缀。
  2. 如果输入没有满足 G 的前缀,则从 G() 返回 null。

目前,我在每种情况下都得到了 TokenMgrError 。我开始修改生成的文件(即,将 Error 更改为 Exception 并添加适当的 try/catch/throws 语句),但我发现它很乏味。此外,JAVACC 生成的修改文件的自动生成也不起作用。有没有更聪明的方法来做到这一点?

4

1 回答 1

1

您始终可以通过包括在内来消除所有 TokenMgrErrors

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

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

于 2013-07-26T16:18:16.853 回答