111 lines
3.0 KiB
Markdown
111 lines
3.0 KiB
Markdown
# ngra 技术构想与里程碑路线图(草案)
|
||
|
||
> 当前阶段:项目尚在早期准备期(正则状态机 + CPU 线代库同步开发),
|
||
> ngra 核心尚未正式开工,因此本文仅作为整体方向与路线规划。
|
||
|
||
---
|
||
|
||
## 1. ngra 的核心定位
|
||
|
||
ngra 是一个以 **“语法岛划分 + token 序列驱动”** 为核心的结构化前端系统,
|
||
目标是支持多语言解析、可扩展语义分析,并最终作为跨语言编译链的一部分。
|
||
|
||
核心原则:
|
||
|
||
- 强制内置 token 集,避免不受控的字符正则扩展
|
||
- 规则描述以 **token 序列 + 结构规则** 为主
|
||
- 优先工程可行性与可维护性,而非极端语法自由度
|
||
|
||
---
|
||
|
||
## 2. 解析策略
|
||
|
||
### 2.1 语法岛 + 并行语义模型
|
||
- **第一阶段:语法岛划分**
|
||
- 得到最外层符号结构(schema / entity / function / block 等)
|
||
- **第二阶段:并行语义分析**
|
||
- 岛屿之间并行解析与语义分析
|
||
- 外层上下文以只读快照共享
|
||
|
||
### 2.2 宏处理策略
|
||
- 宏视为结构级符号
|
||
- 进行“替换 → 局部重解析”
|
||
- 避免在完整语法解析中引入宏的动态不确定性
|
||
|
||
---
|
||
|
||
## 3. 输出形式
|
||
|
||
ngra 的输出形态计划分为两级:
|
||
|
||
- **High AST**:语义节点
|
||
- **Low-level C# AST**:可降级、可转译的中间表示
|
||
|
||
后续可进一步扩展为 LLVM-like IR 或面向 GLSL 的特化 IR。
|
||
|
||
---
|
||
|
||
## 4. 里程碑路线图(先 EXPRESS 后 Lua)
|
||
|
||
### 里程碑 1:EXPRESS 前端(ISO 10303-11)
|
||
**目标**:解决 STEP 文件解析的关键技术依赖
|
||
**原因**:EXPRESS 是 STEP 模型解释的核心语言,必须优先完成
|
||
|
||
交付内容:
|
||
- EXPRESS 的 token 规则集
|
||
- 语法岛划分策略(schema / entity / type / rule)
|
||
- EXPRESS AST + 语义检查(最小闭环)
|
||
- STEP 文件解析所需的语义映射基础
|
||
|
||
---
|
||
|
||
### 里程碑 2:Lua 前端(通用前端验证)
|
||
**目标**:验证 ngra 可作为图灵完备语言前端
|
||
**理由**:Lua 语法稳定、结构清晰,适合验证通用性
|
||
|
||
交付内容:
|
||
- Lua 最小子集语法
|
||
- Lua AST → Low-level C# AST
|
||
- 最小执行闭环(不依赖外部解释器)
|
||
|
||
---
|
||
|
||
### 里程碑 3:内部脚本系统
|
||
**目标**:将 ngra 发展为可扩展脚本前端
|
||
|
||
交付内容:
|
||
- 统一 AST/IR 接口
|
||
- Low-level C# 执行/编译通道
|
||
- 标准化 token / 规则机制
|
||
|
||
---
|
||
|
||
### 里程碑 4:C# → GLSL(GPGPU 编译链)
|
||
**目标**:将符合约束的 C# 子集转译为着色器语言
|
||
|
||
交付内容:
|
||
- C# 可转译子集规范
|
||
- Low-level C# → GLSL 编译器
|
||
- GPGPU 运行时绑定支持
|
||
|
||
---
|
||
|
||
## 5. 当前阶段说明
|
||
|
||
当前阶段尚处于准备期:
|
||
|
||
- 正则状态机仍在开发
|
||
- 同时进行 CPU 线性代数库开发
|
||
- ngra 核心尚未正式启动
|
||
|
||
因此本文仅作为 **方向与路线规划**,具体实现细节将在核心启动后展开。
|
||
|
||
---
|
||
|
||
## 6. 后续可展开内容(待定)
|
||
|
||
- EXPRESS 最小语法子集
|
||
- Lua 最小可运行语法集
|
||
- Low-level C# AST 草图
|
||
- C# → GLSL 子集约束清单
|
||
- 规则 DSL 草案 |