《Let’s Build A Simple Interpreter》学习笔记(一)
该笔记基于教程 Let’s Build A Simple Interpreter. from Ruslan’s Blog,原文使用 Python 为 Pascal 编写解释器,在该笔记中我将使用 Rust 进行解释器的编写。
1 核心概念
1.1 编译器与解释器的区别
编译器:先对源代码进行预处理翻译为机器码,再交给机器运行(预处理、执行)
解释器:直接执行源代码(边解释边执行)
1.2 标记(token)
概念: 一个具有类型和值的对象
结构: {TokenType, Value}
Value 在原字符串中形成一个词素(lexeme)
1.3 词法分析(lexical analysis)
概念: 将输入字符串分解成标记(token)的过程
工具: 词法分析器(lexer, scanner, tokenizer)
2 词法分析(编译第一步)
2.1 任务
字符流 -> token流: 指针在原字符串上移动,构建 token 流
2.2 检查错误
报告非法字符或不完整的词法单元。(转换 Token 失败)
3 问题
编写一个解释器程序,解释器通过标准输入模拟接受一个加法语句,通过标准输出模拟返回解释的结果,该节中加法语句有如下要求:
- 加数为 0-9 的数字
- 无空白字符
- 只实现纯加法,无减法
4 代码实现
由于我一次性写完了前两章,所以本节的代码请见下一节的学习笔记
《Let’s Build A Simple Interpreter》学习笔记(一)


