### 人员 1：基础表达式与赋值支持（lc，已完成）

- 任务 1.1：支持更多二元运算符（Sub, Mul, Div, Mod）
- 任务 1.2：支持一元运算符（正负号）
- 任务 1.3：支持赋值表达式
- 任务 1.4：支持逗号分隔的多个变量声明

### 人员 2：控制流支持

- 任务 2.1：支持 if-else 条件语句
- 任务 2.2：支持 while 循环语句
- 任务 2.3：支持 break/continue 语句
- 任务 2.4：支持比较和逻辑表达式

### 人员 3：函数与全局变量支持

- 任务 3.1：支持全局变量声明与初始化
- 任务 3.2：支持函数参数处理
- 任务 3.3：支持函数调用生成
- 任务 3.4：支持 const 常量声明

<br />

<br />

## 人员 1 完成情况详细说明（更新于 2026-03-30）

### ✅ 已完成任务

人员 1 已完整实现 Lab2 IR 生成的基础功能模块，包括：

1. **二元运算符**（任务 1.1）
   - 实现 `Sub`, `Mul`, `Div`, `Mod` 四种运算符
   - 修改文件：`include/ir/IR.h`, `src/ir/IRBuilder.cpp`, `src/ir/IRPrinter.cpp`, `src/irgen/IRGenExp.cpp`
2. **一元运算符**（任务 1.2）
   - 实现正负号运算符（`+`, `-`）
   - 新增 `UnaryInst` 类支持一元指令
   - 负号生成 `sub 0, x` 指令（LLVM IR 标准形式）
3. **赋值表达式**（任务 1.3）
   - 实现变量赋值语句的 IR 生成
   - 修改文件：`src/irgen/IRGenStmt.cpp`
4. **多变量声明**（任务 1.4）
   - 支持逗号分隔的变量声明（如 `int a, b, c;`）
   - 支持带初始化的多变量声明（如 `int a = 1, b = 2;`）

### 🧪 测试验证

- **Lab1 语法分析**：✅ 通过（10/11 functional 测试，1 个数组测试超出范围）
- **Lab2 语义分析**：✅ 通过（6 正例 + 4 反例）
- **IR 生成测试**：✅ 通过（7/7 自定义测试用例）
  - 测试脚本：`./scripts/test_lab2_ir1.sh`
  - 测试用例目录：`test/test_case/irgen_lab1_4/`

### 📝 代码质量

- 所有修改已通过编译测试
- 未影响原有 Lab1 和 Lab2 Sema 功能
- 代码风格与项目保持一致
- 关键函数添加了注释说明

### 🔄 协作接口

人员 1 的实现为后续任务提供了以下接口：

- **表达式生成**：`visitAddExp`, `visitMulExp`, `visitUnaryExp`
- **语句生成**：`visitStmt`（支持赋值和 return）
- **变量管理**：`storage_map_` 维护变量名到栈槽位的映射
- **IR 构建**：`IRBuilder::CreateBinary`, `IRBuilder::CreateNeg`, `IRBuilder::CreateStore`

后续人员可以在此基础上扩展更复杂的功能（控制流、函数调用等）。
