我使用的是JavaCC 5.0版。与Eclipse Galileo合作。
但是当我在我的jj文件中设置选项“static = true”时,生成的TokenManager文件有许多警告,例如“应该以静态方式访问SimpleCharStream类型的静态方法readChar()”。此外,我的jj文件中的所有导入都已复制到TokenManager,在那里它们被标记为未使用。有没有办法防止这种情况发生?
看来这是issue was fixed in JavaCC v4.1,那我为什么还要面对这个呢?
答案 0 :(得分:1)
当您将现有生成的类切换为静态时,JavaCC不会删除它们。如果您对类进行了更改,或者提供了自己的版本,则会出现这种情况。
删除所有生成的类,设置'static = true',然后重新开始。一切都应该有效。
如果您正在自动化构建(例如使用Ant),最好始终删除并重新生成JavaCC生成的类,只是为了确保您正在测试的内容是可重现的。
对于Eclipse ...当您对JavaCC输入文件进行更改时,可以告诉它运行您的Ant脚本。
答案 1 :(得分:0)
这些警告是由于代码正确但不推荐。由于手动修复生成的代码不是一个好主意,我的建议是在Eclipse中禁用这些警告(Java>编译器>错误/警告)。
我建议您使用项目特定设置来禁用这些警告(因此它不会在所有项目中禁用),您也可以将所有生成的代码放在项目中并使您的代码依赖于此项目,因此您可以为您的代码保留这些警告。