YangHao's ink
编译原理 6 min read

编译流程总览

一份源代码从字符流到目标代码,要经过哪些阶段?先建立整体地图,再逐个深入。

一份源代码从字符流到目标代码,要经过哪些阶段?先建立整体地图,再逐个深入。

1. 前端 vs 后端

编译器通常分为前端(与源语言相关)和后端(与目标机器相关),中间用一层 IR(中间表示)解耦。

源代码 → 词法分析 → 语法分析 → 语义分析 → 中间代码 → 优化 → 目标代码
        └────────── 前端 ──────────┘        └──── 后端 ────┘

2. 各阶段职责

  • 词法分析:把字符流切成 token
  • 语法分析:按文法构建语法树
  • 语义分析:类型检查、符号表
  • 代码生成:IR → 汇编 / 机器码
💡

建立直觉:前端关心「程序说了什么」,后端关心「机器怎么做」,IR 是两者之间的通用语。

标签 #compiler#overview