课题7:编译器日志增强器

难度:低

概述:为编译器的各个阶段(解析、IR生成、优化、代码生成)添加分级、带颜色的日志输出,支持--log-level和--log-file命令行参数。

详细任务: 1. 使用Python logging模块,创建多个logger(按模块)。 2. 添加argparse参数:--log-level {DEBUG,INFO,WARN,ERROR},--log-file FILE。 3. 替换现有print语句为logger.info或logger.debug。 4. 为关键操作添加日志:开始解析、优化Pass应用、指令数统计、代码生成完成。 5. 实现彩色输出(使用colorlog或ANSI码),不同级别不同颜色。 6. 支持同时输出到控制台和文件(文件可保留DEBUG级别)。 7. 确保高日志级别时低级别字符串不会被构造(使用logger.isEnabledFor)。

交付产物: - 修改后的编译器主文件和各个模块 - 使用示例:python main.py test.dsl --log-level DEBUG --log-file build.log - 文档:日志级别含义、如何为新增模块添加日志

12周每周目标: - W1:学习logging模块基础(Logger、Handler、Formatter、级别)。编写demo。 - W2:分析编译器现有print语句,规划哪些应转为日志,划分级别。 - W3:在main.py中初始化logging,添加控制台Handler,设置格式%(asctime)s - %(name)s - %(levelname)s - %(message)s。 - W4:替换前端(解析)中的print为logger.info/debug,添加--log-level参数。 - W5:替换IR生成和优化阶段的print,为每个阶段创建子logger(如logger = logging.getLogger('ir'))。 - W6:替换后端代码生成的print,确保所有输出通过日志。 - W7:安装colorlog,根据级别设置颜色(ERROR红色,WARNING黄色,INFO绿色,DEBUG灰色)。 - W8:添加--log-file参数,将日志同时写入文件。 - W9:优化日志信息,避免噪音,关键步骤输出简洁的统计信息。 - W10:测试不同级别和参数组合,确保性能影响小(使用if logger.isEnabledFor)。 - W11:添加进度指示(如“Parsing... Done in 0.02s”)。 - W12:撰写文档:日志级别说明、配置方法、常见使用场景。