《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 问题

编写一个解释器程序,解释器通过标准输入模拟接受一个加法语句,通过标准输出模拟返回解释的结果,该节中加法语句有如下要求:

  1. 加数为 0-9 的数字
  2. 无空白字符
  3. 只实现纯加法,无减法

4 代码实现

由于我一次性写完了前两章,所以本节的代码请见下一节的学习笔记

《Let’s Build A Simple Interpreter》学习笔记(一)

http://localhost/2025/09/22/interpreter-1/

Author

Zero'F_Fa

Posted on

2025-09-22

Updated on

2025-10-21

Licensed under

Comments