最全的代码注释删除算法

peterli 发布于 2012/08/17 21:26
阅读 791
收藏 0

编写一个函数,实现把c、c++程序代码中的注释去掉,并把结果返回。

编程时要考虑特殊情况:

(1)双引号""中的 “//”和“/*”

(2)单引号''中的"//"和“/*”

(3)“//”和"/*"的嵌套关系,比如:

///*

/*     //*/........

(4)如果还有其他情况,请指出来?

如果有比较详细的解决思路请告诉我,特别是针对特殊情况用什么方法处理。

 

加载中
0
redraiment
redraiment

1. C/C++ 语法里单引号是字符,所以不存在单引号中包含 // 或 /* 的情况,这样不符合语法;

2. // 单行注释遇到结尾 \,下一行也是注释

参看:http://www.oschina.net/code/snippet_58387_3948

peterli
peterli
谢谢楼上解答疑问
redraiment
redraiment
回复 @wsk. : 好吧,所以有一个能着色的编辑器很重要
兰穆达
兰穆达
说起第二条,我还记得c:\,的“bug”,哈哈
0
Lunar_Lin
Lunar_Lin
自己写逻辑, 状态机模式. 50行代码足以.
peterli
peterli
谢谢解答,
Lunar_Lin
Lunar_Lin
回复 @peterli_xue : 对于你的问题就是, 处于单行注释/状态,处于单行注释/*状态, 处于单行注释中, 处于多行注释/状态 处于多行注释//状态,文件结束状态等等, 事情就是一个个字符, 定义好状态和跳转的逻辑, 个人估计50行代码还算写的太长了.
Lunar_Lin
Lunar_Lin
回复 @peterli_xue : 核心来说就一句话, 定义很多种状态, 处于某种状态S1遇上事情A就干事情 S1.A 并跳转到下一个状态S5 直到跳到终止状态.
peterli
peterli
不懂状态机模式?
0
黄正文
黄正文

按正则表达式替换为空字符串就行了

返回顶部
顶部