# c++ 程序 文件
filename = '/data/workspace/source_got/ssr/src/Main.cpp'
with open(filename) as fr:
src = fr.read()
c_i = 0
sl = len(src)
# 去掉注释部分
lt1 = ['\'','\"','\n']
lt2 = ['/','*']
lt3 = ['//','/*','*/']
# 0-0 1-1 33-2 34-43
# 字符 字符串 单行注释 多行注释
lts = [False, False, False, False]
src_bk = ''
c_i = 0
while c_i < sl:
# 跳过转义
if (lts[0] or lts[1]) and src[c_i] == '\\':
src_bk += src[c_i:c_i+2]
c_i += 2
b_i = 1
if not (lts[0]|lts[1]|lts[2]|lts[3]):
if src[c_i] == lt1[0]:
lts[0] = not lts[0]
elif src[c_i] == lt1[1]:
lts[1] = not lts[1]
elif src[c_i] in lt2 and c_i+2 < sl:
if src[c_i:c_i +2] == lt3[0]:
lts[2] = not lts[2]
b_i += 1
elif src[c_i:c_i +2] == lt3[1]:
lts[3] = not lts[3]
b_i += 1
elif lts[0] and src[c_i] == lt1[0]:
lts[0] = not lts[0]
elif lts[1] and src[c_i] == lt1[1]:
lts[1] = not lts[1]
elif lts[2] and src[c_i] == lt1[2]:
lts[2] = not lts[2]
elif src[c_i] in lt2 and c_i+2 < sl \
and src[c_i:c_i +2] == lt3[2]:
lts[3] = not lts[3]
src_bk += ' '
c_i += 2
continue
ni = src[c_i:].find('\n')
if lts[2] or lts[3]:
if src[c_i] == '\n':
src_bk += src[c_i]
else:
src_bk += ' '
else:
src_bk += src[c_i:c_i+b_i]
# print(lts,src[c_i:c_i+ ni])
c_i += b_i
with open('b.txt','w') as fw:
fw.write(src_bk)
将c++程序的注释替换成空格-python
最新推荐文章于 2022-05-23 15:16:32 发布