Files
stgsharp/future/ngra.md
T

111 lines
3.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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 草案