今天突然有人问我有没有写过自动去除标准C++源文件COMMENT 的程序.这让我一下想起当初面微软的时候现场写的1个程序,当初考虑的实在太不周全,导致直接被BS.如今我可以从容的写这个程序,不过在写完这个程序突然发现1个问题.原来这个貌似简单的程序有这么多的陷阱.
1.COMMENT 有两种形式"//","/*...*/".
对于"//"情况固然简单因为只要单行处理即可.
但是碰到"/*"情况即可分成多行:
/*ddddddd
fffffffff*/
2.这两种形式可能在字符串中显示如
string s = "abcd//";
string s = "/*ddddd*/";
3.即使显示在字符串中也可能出现如下形式:
string s = "/*/*/
////**/";
即是字符串连接的情况.
这些情况都将直接造成程序复杂性.
另外一种想法是按照编译器去检查COMMENT的方式,好久没翻阅编译原理的书了,对表达式的规约也许是个很不错的方法.得好好再学习了.另外,只能较笨挫的完成程序了事,学无止境啊.
本文探讨了自动去除标准C++源文件中的注释所面临的复杂性和陷阱。文章列举了几种注释形式,并讨论了它们如何出现在代码的不同上下文中,包括字符串内及跨行连接的情况。此外,还提出了按编译器方式检查注释的一种思路。

1540

被折叠的 条评论
为什么被折叠?



