Skip to content

Commit eae828d

Browse files
committed
111
1 parent 299897e commit eae828d

File tree

2 files changed

+212
-0
lines changed

2 files changed

+212
-0
lines changed

examples/mini-ts/readme.md

Lines changed: 211 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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) 文件。

projects/gaia-frontend/Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ wit-bindgen = "0.46"
1919
[dependencies.gaia-assembler]
2020
path = "../../../project-gaia/projects/gaia-assembler"
2121
features = []
22+
default-features = false
2223

2324
[dev-dependencies]
2425

0 commit comments

Comments
 (0)