从零到一构建解释器-【1-基础概念】
文章目录
- 扫描器
- 词法分析
- 语法分析
- 静态分析
- 中间代码
- 优化
- 代码生成
- 运行时
- 单遍编译器
- 数遍历解释器
- 转译器
- 即使编译
- 编译器与解释器
本教程参考【手搓解释器】
这里只是过一遍基本概念,后面会有涉及到具体解析
扫描器
词法分析
- 接受字符流
- 忽略无意义符号,如空格
- 提取每个标识符,关键字,单词,符号,数字等
- 变成单词流(token流)
语法分析
- token->成句子(表达式/语句/语法树)
- 顺便报告语法错误
静态分析
中间代码
优化
如何计算操作就在编译时替换,而不是原来的操作
代码生成
生产机器码,如果是面向真实CPU,就是直接放CPU上运行的,那么需要会面临难以移植的特性
但如果面向虚拟CPU,就是还要通过一个虚拟机来生成最终在真实的CPU上执行的机器码,这个时候我们叫这种面向虚拟CPU的为字节码
运行时
单遍编译器
词法分析 语法分析和代码生成交织
数遍历解释器
转译器
即使编译
编译器与解释器