# JSON Viewer Tokens 模块总结

## 核心功能
这个模块主要负责 JSON 文本的词法分析(tokenization)和语法高亮，基于 VS Code 的实现进行了定制化改造。

## 主要模块

### 1. tokenize.ts
- 定义了基础的词法分析支持接口和状态管理
- 实现了 JSON 的词法分析器，可以识别以下类型的 token:
  - 分隔符 (括号、冒号、逗号等)
  - 关键字 (null, true, false)
  - 字符串
  - 数字
  - 注释 (行注释和块注释)
- 支持多层级的括号颜色区分

### 2. tokenizationJsonModelPart.ts
- 管理整个文档的词法分析状态
- 提供了 token 存储和更新的接口
- 处理文档内容变化时的 token 重新计算

### 3. jsonModelToken.ts
- 实现了带状态追踪的词法分析器
- 提供了后台分析的功能，通过 `IdleDeadline` 来避免阻塞主线程
- 包含了 token 状态的缓存管理
- 实现了增量式的词法分析，只重新分析发生变化的部分

### 4. offsetRange.ts
- 提供了处理偏移量范围的工具类
- 支持范围的各种运算操作:
  - 合并 (join)
  - 相交 (intersect)
  - 偏移 (delta)
  - 包含判断等
- 用于精确控制需要重新分析的文本范围

## 工作流程
1. 当 JSON 文本发生变化时，系统会标记受影响的行号范围
2. 后台分析器会在空闲时间对这些行进行重新分析
3. 分析结果会被缓存，并触发界面更新
4. 整个过程是增量式的，只处理必要的部分，保证了性能

