大多数编译器可分成三个阶段:

  1. 解析:将源代码转换成一种通用的 **数据结构(AST)**来表示
    1. 词法分析:将源代码分割成每一个 最小单元(Token)
    2. 语法分析:
      1. 通过 Token ****转换成 ****AST
      2. AST 可以表示代码语句的每一个 片段 以及它们之间的 关系
  2. 转换:通过 AST 做一些 处理,已达到编译器目的
    1. 只是把 AST 拿过来对它进行一些修改
    2. 可以在同一种语言下操作 AST,也可以将其翻译成新的语言
  3. 代码生成:处理完成后,转换成新的代码
    1. 有时会和 转换 环节重叠,但代码生成最主要的部分还是根据 AST 来输出代码

transformer function:

Untitled

https://github.com/starkwang/the-super-tiny-compiler-cn