# CSharpStringExtractor.ts 方法内部注释计划

## 目标
为 `e:\DATA\Projects\ZhiYou\UnityI18N\scancscode\src\CSharpStringExtractor.ts` 文件中的方法内部逻辑增加详细注释，特别是识别 TypeScript/C# 代码语句边界的逻辑。

## 需要注释的关键逻辑

### 1. 状态机变量说明
在 `extractStrings` 方法和其他提取方法中，需要注释以下状态变量的作用：
- `inString`: 是否在字符串内部
- `inComment`: 是否在注释内部
- `escapeNext`: 是否遇到转义字符（下一个字符需要跳过）
- `stringDelimiter`: 字符串分隔符（单引号或双引号）
- `parenthesesDepth`: 圆括号深度
- `braceDepth`: 大括号深度

### 2. 核心方法内部逻辑注释

| 方法 | 行号 | 需要注释的关键逻辑 |
|------|------|-------------------|
| `extractStrings` | 146-274 | 语句边界识别、字符串识别、注释识别 |
| `extractClassMemberStrings` | 376-565 | 类成员字符串提取的状态机 |
| `extractObjectInitializerStrings` | 566-922 | 对象初始化器字符串提取 |
| `extractCommentStrings` | 923-1203 | 注释识别和字符串提取 |
| `processFunctionCallArguments` | 923-1203 | 函数参数处理、括号匹配 |
| `findMatchingParenthesis` | 1486-1537 | 括号匹配算法 |
| `splitArguments` | 1486-1565 | 参数分割逻辑 |
| `processStringTemplates` | 1821-2024 | 插值字符串处理 |
| `processTextAssignments` | 2054-2147 | .text/.title 赋值处理 |
| `processStringConcatenation` | 2148-2387 | 字符串拼接处理 |

### 3. 语句边界识别逻辑注释

#### 3.1 分号分割语句
- 识别分号作为语句结束标记
- 跳过字符串和括号内的分号

#### 3.2 字符串边界识别
- 识别双引号和单引号字符串
- 处理转义字符（如 `\"`、`\\`）
- 处理插值字符串（`$"..."`、`$@"..."`）

#### 3.3 注释边界识别
- 识别单行注释 `//`
- 识别多行注释 `/* */`
- 跳过 XML 文档注释 `///`

#### 3.4 括号匹配
- 圆括号 `()` 深度计数
- 大括号 `{}` 深度计数
- 方括号 `[]` 深度计数

## 注释添加策略

### 策略1: 在关键状态变量声明处添加注释
```typescript
// 是否在字符串内部（避免将字符串内的分号当作语句分隔符）
let inString = false;
```

### 策略2: 在状态转换处添加注释
```typescript
// 遇到反斜杠，设置转义标志，下一个字符不作为分隔符处理
if (char === '\\') {
    escapeNext = true;
}
```

### 策略3: 在条件判断处添加注释
```typescript
// 只有在字符串外部且括号深度为0时才认为到达语句边界
if (char === ';' && !inString && parenthesesDepth === 0) {
```

## 实施步骤

### 阶段1: 注释 extractStrings 方法中的状态机 (约30分钟)
- 注释 while 循环中的状态转换逻辑
- 注释字符分类处理（字符串、注释、转义、括号）

### 阶段2: 注释其他提取方法 (约60分钟)
- extractClassMemberStrings
- extractObjectInitializerStrings  
- extractCommentStrings

### 阶段3: 注释辅助方法 (约60分钟)
- findMatchingParenthesis
- splitArguments
- splitExpression

### 阶段4: 注释字符串处理方法 (约60分钟)
- processStringTemplates
- processTextAssignments
- processStringConcatenation

## 注意事项
1. 只添加注释，不修改任何代码逻辑
2. 注释使用中文
3. 保持代码的可读性和格式
4. 确保不引入编译错误
