import sys
bhasCCommentBegin = False
# @brief: Handle Comment of Cpp Language
# The comment of cpp style will be delete if exist lines[i]
def HandleCPlusPlusComment(lines,i):
index = lines[i].find("//")
if index !=-1:
lines[i]=lines[i][0:index]
lines[i]+="\r\n"
# @brief: Handle Comment of C Language
# @ret -1:the Line is Comment Line,should delete this line
# @ret -2:Only begin Comment found in this Line
# @ret 0:Not find CComment
def HandleCComment(lines,i):
global bhasCCommentBegin
while True:
if not bhasCCommentBegin:
index = lines[i].find("/*")
if index != -1:
bhasCCommentBegin = True
index2 = lines[i].find("*/",index+2)
if index2 != -1:
lines[i]=lines[i][0:index]+lines[i][index2+2:]
bhasCCommentBegin = False #continue look for comment
else:
lines[i]=lines[i][0:index] # only find "begin comment
lines[i]+="\r\n"
return -2
else:
return 0 #not find
else:
index2=lines[i].find("*/")
if index2 !=-1:
bhasCCommentBegin = False
lines[i]=lines[i][index2+2:] #continue look for comment
else:
return -1 #should delete this
# @brief: Remove Comment of file
# Check if there are C style comment firstly,and then check cpp style comment
# At last print the result handled
def RemoveComment(file):
global bhasCCommentBegin
f = open(file,"r")
lines = f.readlines()
f.close()
length =len(lines)
i=0
while i<length:
ret = HandleCComment(lines,i)
if ret == -1:
if bhasCCommentBegin == False:
print "There must be some wrong"
del lines[i]
i -= 1
length -= 1
elif ret== 0:
HandleCPlusPlusComment(lines,i)
else:
pass
i+=1
Output(lines)
def Output(lines):
for line in lines:
print line,
if __name__== '__main__':
RemoveComment(sys.argv[1])