它为什么存在
parser 把源 schema 翻译成 Shape IR,generator 再从 Shape IR 输出目标格式。这样新增格式时,就不必让每个功能都围绕源格式重新实现一遍。
这会带来更清晰的架构,也为 diagnostics、比较和后续分析能力打下更好的基础。
文档文章
What is Shape IR?
Shape IR 是共享语义层,让多格式转换工作保持一致和可扩展。
Shape IR 是共享表示层,让 toolkit 可以在不绑定单一源格式的前提下理解 schema。
它不只是一个实现细节,而是贯穿 parser、generator 和未来分析层的产品概念。
parser 把源 schema 翻译成 Shape IR,generator 再从 Shape IR 输出目标格式。这样新增格式时,就不必让每个功能都围绕源格式重新实现一遍。
这会带来更清晰的架构,也为 diagnostics、比较和后续分析能力打下更好的基础。
一个好的中间表示,应该比任意源格式都更收敛,但又足够支撑你关心的工作流。
真实 IR 会比这个草图更丰富,但核心思想不变: 先把语义放进可复用的结构里,再去面向具体目标格式输出。
简化版 Shape IR 草图
type Shape =
| {kind: "string"}
| {kind: "number"}
| {kind: "array"; element: Shape}
| {kind: "object"; fields: Record<string, Shape>};