文档文章

What is Shape IR?

Shape IR 是共享语义层,让多格式转换工作保持一致和可扩展。

概念10 分钟

Shape IR 是共享表示层,让 toolkit 可以在不绑定单一源格式的前提下理解 schema。

它不只是一个实现细节,而是贯穿 parser、generator 和未来分析层的产品概念。

适合人群
学习者
难度
中级
最近更新
2026年7月27日
Traversal
继续看 traversal 如何复用这层结构。
First transformation
马上在真实转换流程里体会这个概念。

它为什么存在

parser 把源 schema 翻译成 Shape IR,generator 再从 Shape IR 输出目标格式。这样新增格式时,就不必让每个功能都围绕源格式重新实现一遍。

这会带来更清晰的架构,也为 diagnostics、比较和后续分析能力打下更好的基础。

它在优化什么

一个好的中间表示,应该比任意源格式都更收敛,但又足够支撑你关心的工作流。

  • 表达结构语义,而不是源格式语法。
  • 解耦 parser 和 generator 的职责。
  • 为 traversal、diagnostics 和未来工具层提供复用基础。

可以怎样理解它

真实 IR 会比这个草图更丰富,但核心思想不变: 先把语义放进可复用的结构里,再去面向具体目标格式输出。

简化版 Shape IR 草图

ts
type Shape =
  | {kind: "string"}
  | {kind: "number"}
  | {kind: "array"; element: Shape}
  | {kind: "object"; fields: Record<string, Shape>};