Files

3.0 KiB
Raw Permalink Blame History

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