编译器原理
date
Feb 3, 2022
slug
compiler-core
status
Published
tags
原理
summary
大多数编译器可分成三个阶段:解析、转换、代码生成。
type
Post
大多数编译器可分成三个阶段:
- 解析:将源代码转换成一种通用的 数据结构(AST)来表示
- 词法分析:将源代码分割成每一个 最小单元(Token)
- 语法分析:
- 通过 Token 转换成 AST
- AST 可以表示代码语句的每一个 片段 以及它们之间的 关系
- 转换:通过 AST 做一些 处理,已达到编译器目的
- 只是把 AST 拿过来对它进行一些修改
- 可以在同一种语言下操作 AST,也可以将其翻译成新的语言
- 代码生成:处理完成后,转换成新的代码
- 有时会和 转换 环节重叠,但代码生成最主要的部分还是根据 AST 来输出代码
transformer function:
![notion image](https://www.notion.so/image/https%3A%2F%2Ffile.notion.so%2Ff%2Ff%2F19e70c3d-bb81-4c2b-8a13-4b3cac21334b%2F5c6be073-ab07-4d67-97b9-ee8985416598%2FUntitled.png%3Fid%3Df701211f-b7a0-4620-bcf0-ecb2dc48bd77%26table%3Dblock%26spaceId%3D19e70c3d-bb81-4c2b-8a13-4b3cac21334b%26expirationTimestamp%3D1722052800000%26signature%3DVhx57ecGr7jSM9mvMXp2agIOvaOj619o7Lhv0YmM5Q4?table=block&id=f701211f-b7a0-4620-bcf0-ecb2dc48bd77&cache=v2)