import re

def remove_comments(code):
    # 单行注释的正则表达式
    single_line_comment = r'//.*$'
    # 多行注释的正则表达式
    # 这里我们使用非贪婪匹配来确保在第一个'*/'处停止
    multi_line_comment =r'/\*.*?\*/'


    # 使用正则表达式替换多行注释
    code = re.sub(multi_line_comment, '', code, flags=re.DOTALL)
    # 使用正则表达式替换单行注释
    code = re.sub(single_line_comment, '', code, flags=re.MULTILINE) 

    return code

def load_and_remove_comments(file_path):
    with open(file_path, 'r', encoding='utf-8') as file:
        code = file.read()

    # 移除注释
    cleaned_code = remove_comments(code)

    return cleaned_code

if __name__ == '__main__': 

    # 假设当前目录中存在c8051F020.h文件
    header_file_path = 'c8051F020.h'
    cleaned_header = load_and_remove_comments(header_file_path)
    
    # 打印清理后的代码，或者你可以将其写入新文件
    print(cleaned_header)
    with open('c8051F020_no_comments.h', 'w', encoding='utf-8') as file:
         file.write(cleaned_header)