@@ -109,6 +109,25 @@ function add(a: number, b: number): number {
109109]
110110```
111111
112+ ** 词法分析流程图:**
113+
114+ ``` mermaid
115+ flowchart TD
116+ A[TypeScript源代码] --> B[字符扫描]
117+ B --> C{识别关键字}
118+ C -->|function| D[FUNCTION token]
119+ C -->|number| E[TYPE_NUMBER token]
120+ C -->|标识符| F[IDENTIFIER token]
121+ C -->|符号| G[SYMBOL token]
122+ C -->|数字| H[NUMBER token]
123+ D --> I[token序列]
124+ E --> I
125+ F --> I
126+ G --> I
127+ H --> I
128+ I --> J[词法分析完成]
129+ ```
130+
112131### 2. 语法分析器 (Parser)
113132
114133将词法单元解析为抽象语法树(AST):
@@ -130,6 +149,36 @@ interface FunctionDeclaration {
130149}
131150```
132151
152+ ** 语法分析流程图:**
153+
154+ ``` mermaid
155+ flowchart TD
156+ A[token序列] --> B[程序入口]
157+ B --> C{查找函数声明}
158+ C -->|function| D[解析函数]
159+ C -->|interface| E[解析接口]
160+ C -->|class| F[解析类]
161+ C -->|import| G[解析导入]
162+
163+ D --> H[函数名]
164+ D --> I[参数列表]
165+ D --> J[返回类型]
166+ D --> K[函数体]
167+
168+ H --> L[AST节点]
169+ I --> L
170+ J --> L
171+ K --> L
172+
173+ E --> L
174+ F --> L
175+ G --> L
176+
177+ L --> M{更多声明?}
178+ M -->|是| C
179+ M -->|否| N[AST构建完成]
180+ ```
181+
133182### 3. 抽象语法树 (AST)
134183
135184定义了 TypeScript 语言结构的数据结构:
@@ -167,6 +216,31 @@ function multiply: (number, number) -> number {
167216}
168217```
169218
219+ ** 代码生成流程图:**
220+
221+ ``` mermaid
222+ flowchart TD
223+ A[AST根节点] --> B[遍历AST]
224+ B --> C{节点类型}
225+
226+ C -->|函数声明| D[生成函数头]
227+ C -->|变量声明| E[生成变量定义]
228+ C -->|返回语句| F[生成返回指令]
229+ C -->|表达式| G[生成表达式代码]
230+ C -->|控制流| H[生成控制流代码]
231+
232+ D --> I[汇编代码片段]
233+ E --> I
234+ F --> I
235+ G --> I
236+ H --> I
237+
238+ I --> J{更多节点?}
239+ J -->|是| B
240+ J -->|否| K[汇编代码合并]
241+ K --> L[最终汇编代码]
242+ ```
243+
170244## 🧪 示例代码
171245
172246### 基础函数
@@ -214,6 +288,27 @@ class Calculator {
214288
215289## 🛠️ 开发指南
216290
291+ ### 编译流程总览
292+
293+ ``` mermaid
294+ flowchart LR
295+ A[TypeScript源码] --> B[词法分析器]
296+ B --> C[Token序列]
297+ C --> D[语法分析器]
298+ D --> E[AST抽象语法树]
299+ E --> F[类型检查器]
300+ F --> G[类型验证后的AST]
301+ G --> H[代码生成器]
302+ H --> I[Gaia汇编代码]
303+ I --> J[Gaia汇编器]
304+ J --> K[可执行代码]
305+
306+ style A fill:#e1f5fe
307+ style E fill:#f3e5f5
308+ style I fill:#e8f5e8
309+ style K fill:#fff3e0
310+ ```
311+
217312### 运行测试
218313
219314``` bash
@@ -258,6 +353,15 @@ npm run dev test/example.ts
258353- 泛型(基础)
259354- 模块导入/导出(基础)
260355
356+ ** 特性支持状态图:**
357+
358+ ``` mermaid
359+ pie title TypeScript特性支持状态
360+ "已支持" : 16
361+ "计划支持" : 9
362+ "暂不支持" : 7
363+ ```
364+
261365### 🚧 计划支持
262366
263367- 枚举类型
@@ -300,6 +404,33 @@ if (result.success) {
300404}
301405```
302406
407+ ** 集成架构图:**
408+
409+ ``` mermaid
410+ flowchart TB
411+ subgraph "Mini-TS 编译器"
412+ A[TypeScript源码] --> B[编译器核心]
413+ B --> C[Gaia汇编代码]
414+ end
415+
416+ subgraph "Gaia WASM32 前端"
417+ C --> D[@nyar/gaia-assembler-wasm32]
418+ D --> E[汇编器实例]
419+ E --> F[编译结果]
420+ end
421+
422+ subgraph "Node.js 环境"
423+ F --> G[JavaScript对象]
424+ G --> H[控制台输出]
425+ G --> I[文件写入]
426+ G --> J[网络传输]
427+ end
428+
429+ style A fill:#e3f2fd
430+ style C fill:#e8f5e9
431+ style F fill:#fff3e0
432+ ```
433+
303434## 🎯 TypeScript 特色功能
304435
305436### 类型系统
@@ -318,6 +449,31 @@ function processData(data: string[]): number {
318449}
319450```
320451
452+ ** 类型检查流程图:**
453+
454+ ``` mermaid
455+ flowchart TD
456+ A[AST节点] --> B{需要类型检查?}
457+ B -->|是| C[获取节点类型]
458+ B -->|否| D[跳过检查]
459+
460+ C --> E{类型匹配?}
461+ E -->|是| F[类型检查通过]
462+ E -->|否| G[类型错误]
463+
464+ F --> H[继续下一个节点]
465+ G --> I[报告错误]
466+ D --> H
467+
468+ H --> J{更多节点?}
469+ J -->|是| A
470+ J -->|否| K[类型检查完成]
471+
472+ style F fill:#e8f5e9
473+ style G fill:#ffebee
474+ style I fill:#ffebee
475+ ```
476+
321477### 接口和类
322478
323479``` typescript
@@ -341,6 +497,35 @@ class Rectangle implements Shape {
341497}
342498```
343499
500+ ** 类继承关系图:**
501+
502+ ``` mermaid
503+ classDiagram
504+ class Shape {
505+ <<interface>>
506+ +area(): number
507+ +perimeter(): number
508+ }
509+
510+ class Rectangle {
511+ -width: number
512+ -height: number
513+ +constructor(w: number, h: number)
514+ +area(): number
515+ +perimeter(): number
516+ }
517+
518+ class Circle {
519+ -radius: number
520+ +constructor(r: number)
521+ +area(): number
522+ +perimeter(): number
523+ }
524+
525+ Shape <|-- Rectangle : implements
526+ Shape <|-- Circle : implements
527+ ```
528+
344529### 泛型支持
345530
346531``` typescript
@@ -363,6 +548,32 @@ class Container<T> {
363548}
364549```
365550
551+ ** 泛型实例化流程图:**
552+
553+ ``` mermaid
554+ flowchart LR
555+ A[泛型定义] --> B{类型参数}
556+ B --> C[T]
557+ B --> D[U]
558+ B --> E[V]
559+
560+ C --> F[函数调用]
561+ D --> F
562+ E --> F
563+
564+ F --> G{传入具体类型}
565+ G --> H[number]
566+ G --> I[string]
567+ G --> J[boolean]
568+
569+ H --> K[实例化代码]
570+ I --> K
571+ J --> K
572+
573+ K --> L[生成特化版本]
574+ L --> M[编译执行]
575+ ```
576+
366577## 📄 许可证
367578
368579本项目采用 MIT 许可证,详见项目根目录的 [ License.md] ( ../../License.md ) 文件。
0 commit comments