3.0 KiB
3.0 KiB
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 草案