根据JavaCC documentation,如果我想自定义词法分析器中错误给出的消息:
要自定义词法分析器的错误报告,必须对词法分析器类进行子类化,并在子类中重新定义此
LexicalError()
中的[TokenMgrError
]方法。为了帮助创建错误报告方案,可以使用以下变量:
但是,与TOKEN_FACTORY
选项不同,我没有看到如何使生成的代码使用该子类。
另一方面,查看TokenMgrError
源代码,一些注释表明源文件应该直接编辑,而不是子类。但是,如果我这样做,下次更改.jj
文件并让Ant重新生成解析器和词法分析器代码时,我会收到此警告:
警告:TokenMgrError.java:文件已过时。请重命名或删除此文件,以便为您生成新文件。
那么,我该怎么做呢?
答案 0 :(得分:1)
如果需要,您可以修改TokenMgrError
。它没有太大的缺点。
如果您继承了令牌管理器,那么您也可以继承TokenMgrError
。您只需要确保覆盖创建TokenMgrError
的所有例程。要让解析器使用您的子类,您只需像这样创建解析器
MyParser parser = new MyParser( new MySubclassTokenManagr(...) ) ;