Я читаю файл C с помощью .readlines (), чтобы получить все отдельные строки файла кода C как элементы списка. Если какой-либо из элементов списка (например, C строка кода) является частью многострочного комментария, его необходимо заменить на '' (т.е. удалить его, но он будет занимать соответствующий индекс списка), чтобы индексация следующих строк была не изменено. Пожалуйста, проверьте мой код для деталей.
import re
#open and read sample.c so that code lines of sample.c are the element of list 'flist'
with open('sample.c',mode='r') as myfile:
flist = myfile.readlines()
pattern1 = re.compile(r'\/{2}.*') # to match //
pattern2 = re.compile('\/\*.*\*\/') # to match /*......*/ in a single line or element of flist
pattern3 = re.compile('\/\*') # to match /*
pattern4 = re.compile('\*\/') # to match */
# to delete comments present in a single code line or can say in an individual element of 'flist', it's working fine.
for index,line in enumerate(flist):
if pattern2.search(line):
flist[index] = pattern2.sub("",line)
if pattern1.search(line):
flist[index] = pattern1.sub("",line)
# to delete comment starting in one line and ending in the subsequent line, **this following part is not working**
cmnt_e = True
cmnt_s = False
for index,line in enumerate(flist):
if pattern3.search(line) and cmnt_e == True:
cmnt_s = True
cmnt_e = False
if pattern3.search(line) and cmnt_s == True:
cmnt_e = True
cmnt_s = False
if cmnt_s == True and cmnt_e == False:
flist[index] = ''