使用python脚本查找C文件中是否存在注释嵌套



这是一个代码,用于查明示例.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

在Python正则表达式(RE(语法中,*是一个特殊字符,表示前一RE的0个或多个重复的匹配。模式'*/'之所以说"repeatnothing",是因为"没有什么可重复的"。如果不使用repeat说明符,那么要做的就是用字符转义它,比如:*。修改后的行使程序按预期工作:

        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}')

最新更新