Выясните, есть ли в файле C вложенность комментариев, используя скрипт python. - PullRequest
0 голосов
/ 06 марта 2020

Это код, чтобы выяснить, есть ли в образце вложенность комментариев. c файл, но я получаю эту ошибку : ничего не повторяется . Может кто-нибудь сказать мне, где я иду не так?

import re

with open('sample.c',mode='r') as myfile:
    flist = myfile.readlines()

flag1 = False

for j in range(len(flist)):
    if re.search('/*',flist[j]):
        if flag1:
            print(f'Warning: Nested comment at line number {j+1}')
        else:
            flag1 = True
    if flag1:
        if re.search('*/',flist[j]):
            flag1 = False

1 Ответ

0 голосов
/ 06 марта 2020

В Python синтаксис регулярного выражения (RE), * - это специальный символ , указывающий совпадение 0 или более повторов предыдущего RE. Шаблон '*/' говорит: «Ничего не повторяй», потому что «нечего повторять». Если вы не используете спецификатор повтора, вам нужно экранировать его символом \, например: \*. Модифицированные строки заставляют программу работать как задумано:

        if re.search('/\*',flist[j]):
...
        if re.search('\*/',flist[j]):

Это все еще не обрабатывает случай, когда вложение комментариев происходит в одной строке.

/* this is a /* nested comment */ */

Для этого нам понадобится соответствовать нескольким экземплярам /*. Следующая модификация делает это.

        if flag1 or re.search('/\*.*/\*',flist[j]):
            print(f'Warning: Nested comment at line number {j+1}')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...