【发布时间】:2013-08-12 22:09:33
【问题描述】:
我知道以前有人问过这个问题(例如:见Remove comments from C/C++ code),但我没有找到任何令人满意的结果。
我正在解析一组复杂的 C/C++ 代码,首先必须对其进行规范化,其中包括从输入源代码中消除 cmets。
我尝试过的所有反注释工具都在一定程度上失败了,其中包括:
- 评论
- stripcmt
- cloc
注意:我也试过“gcc -fpreprocessed -E”,但结果并不完美;输出有一些奇怪的宏注释,用于跟踪某些代码行。
为了说明特定工具 (cloc) 的问题,从 this header file 中删除 cmets 也会导致删除非 cmets,例如该文件开头的所有包含。
也就是说,是否有任何可靠的注释删除工具可用于在异常复杂的代码中去除 cmets?
非常感谢。
【问题讨论】:
-
正如 Dana Robinson 在对 this answer 的评论中指出的那样,您也可以添加
-P标志来禁止行号跟踪注释。 -
True... 使用 -P 似乎可以解决问题:)
-
如果你在解析 C/C++,为什么 lexing/tossing out cmets 很困难?这在词汇层面应该是小菜一碟。你真的在解析 C++ 吗? [查看我的简历,了解可以消除 cmets 的漂亮打印机]
-
Ira,我会小心你的说法,因为我之前提到的所有三个工具都很标准,但都失败了。虽然不是地球上最难的问题,但创建自动机需要时间(除非使用 jflex)。为了回答你的问题,解析是在去注释之后完成的。
-
你为什么要问?也许定制 GCC,例如MELT 可能会有用!
标签: c++ c linux refactoring