词法分析器是什么?

学习目标

通过本集的学习,你将能够:

  • 理解词法分析的任务
  • 掌握 Token 概念
  • 了解词法分析器的位置

1. 词法分析的任务

1.1 什么是词法分析?

词法分析是编译的第一个阶段,将字符流转换成 Token 流。

输入:字符流
"int x = 42;"

输出:Token 流
[INT, ID("x"), ASSIGN, NUM(42), SEMICOLON]

1.2 词法分析器的位置

编译流程:
源代码 → [词法分析器] → Token → [语法分析器] → AST

2. Token 概念

2.1 什么是 Token?

Token 是程序的最小语法单元。

Token 种类:
- 关键字:if, while, int
- 标识符:x, my_var
- 常量:42, 3.14, "hello"
- 运算符:+, -, *, /
- 分隔符:(, ), {, }, ;

2.2 Token 的表示

Token = (类型, 属性值)

示例:
(ID, "x")
(NUM, 42)
(KEYWORD, "if")
(OP, "+")

3. 实用案例

3.1 简单词法分析示例

输入:
if (x > 0) {
    print(x);
}

Token 输出:
[IF, LPAREN, ID("x"), GT, NUM(0), RPAREN, LBRACE,
 ID("print"), LPAREN, ID("x"), RPAREN, SEMICOLON, RBRACE]

4. 自测问题

  1. 词法分析的任务是什么?
  2. 什么是 Token?
  3. 词法分析器在编译流程中的位置是什么?
  4. 举出几种 Token 类型。

5. 下集预告

下一集我们将学习 Token 的设计!

参考资料

  • 《编译原理》(龙书)
« 上一篇 编程语言简史与展望 下一篇 » Token 的设计