Skip to content

AST 转换总结

  • 如果说 parse 阶段是一个 词法分析的过程 构造基础的 ast 节点对象
  • 那么 transform 节点就是 语法分析的阶段 把 ast 节点做了一层转换 构造出 语义化更强 信息更佳丰富的 codegenNode 在后续代码生成的阶段有着非常重要的作用
  • 在转换过程中
    • 创建了 transform 上下文 负责维护了整个转换过程中的一些状态数据 以及提供一些修改上下文数据的函数
    • 然后通过 深度优化的遍历方式 遍历了所有的 ast 节点
    • 为节点执行相应的转换函数 构造对应的辅助生成代码节点 codegenNode
    • 配置了 hoistStatic 再次遍历节点 找到所有可以被静态提升的节点和属性 修改他们对应的 codegenNode
    • 最后 为根节点创建 codegenNode 并保留 转换 ast节点过程中创建的一些上下文数据

Welcome to the site