JavaCC:自定义词法分析器错误消息

时间:2014-10-19 09:03:13

标签: java javacc

根据JavaCC documentation,如果我想自定义词法分析器中错误给出的消息:

  

要自定义词法分析器的错误报告,必须对词法分析器类进行子类化,并在子类中重新定义此LexicalError()中的[TokenMgrError]方法。为了帮助创建错误报告方案,可以使用以下变量:

但是,与TOKEN_FACTORY选项不同,我没有看到如何使生成的代码使用该子类。

另一方面,查看TokenMgrError源代码,一些注释表明源文件应该直接编辑,而不是子类。但是,如果我这样做,下次更改.jj文件并让Ant重新生成解析器和词法分析器代码时,我会收到此警告:

  

警告:TokenMgrError.java:文件已过时。请重命名或删除此文件,以便为您生成新文件。

那么,我该怎么做呢?

1 个答案:

答案 0 :(得分:1)

如果需要,您可以修改TokenMgrError。它没有太大的缺点。

如果您继承了令牌管理器,那么您也可以继承TokenMgrError。您只需要确保覆盖创建TokenMgrError的所有例程。要让解析器使用您的子类,您只需像这样创建解析器

MyParser parser = new MyParser( new MySubclassTokenManagr(...) ) ;