我使用 JAVACC 解析由具有初始非终端 G 的 bnf 语法定义的一些字符串。我想捕获 TokenMgrError 引发的错误。特别是,我想处理以下两种情况:
- 如果输入的某些前缀满足 G,但并非所有符号都从输入中读取,则将这种情况视为正常情况,并通过调用 G() 返回 AST 以找到找到的前缀。
- 如果输入没有满足 G 的前缀,则从 G() 返回 null。
目前,我在每种情况下都得到了 TokenMgrError 。我开始修改生成的文件(即,将 Error 更改为 Exception 并添加适当的 try/catch/throws 语句),但我发现它很乏味。此外,JAVACC 生成的修改文件的自动生成也不起作用。有没有更聪明的方法来做到这一点?