Compilation Principle
6 篇
笔记列表 6
2 Lexical Analysis
职责 词法分析器(Scanner / Lexer)是编译器的第一个阶段,做三件事: 切分:把连续的字符流切成有意义的单元 归类:给每个单元打上类别 过滤:丢掉空白、换行、注释 输出是一串 Token,每个 Token 形如 <类别…
3 Syntax Analysis
职责 输入 Token 流,输出语法树。做两件事: 判定:这串 Token 是否合法 构造:如果合法,把它的层级结构还原出来 第二点才是目的。编译器要的不是"通过/不通过",而是一棵能往下走的树。 x = …
4 Syntax-Directed Translation
要解决的问题 语法分析只回答"结构对不对"。但编译器真正要的是在识别结构的同时做点事:算类型、建符号表、生成代码。 语法制导翻译(Syntax-Directed Translation, SDT)就是这套机制:把语义动作…
5 Intermediate Code Generation
为什么需要 IR 没有 IR:M 种语言 × N 种目标机 = M×N 个编译器。 有 IR:M 个前端 + N 个后端 = M+N 个模块。 除此之外 IR 还有两个不可替代的作用: 优化需要一个稳定的平台。在 AST 上做数据流分析很…
Compilation Principle
自动关联目录:Compilation Principle 编译原理回答的是一个很具体的工程问题:如何把人写的字符流,机械地、可验证地、可优化地翻译成机器能执行的指令流。 它不是"背文法"的学科。真正有价值的部分是三件事:…
1 Overview
编译器在做什么 编译器的输入是字符序列,输出是指令序列。它做的全部事情可以概括为一句话: 逐步把"无结构的文本"转换成"有结构的中间表示",每转换一次就丢弃一点源语言的表层信息、补充一点机器需要的信…