词法分析器是什么?
学习目标
通过本集的学习,你将能够:
- 理解词法分析的任务
- 掌握 Token 概念
- 了解词法分析器的位置
1. 词法分析的任务
1.1 什么是词法分析?
词法分析是编译的第一个阶段,将字符流转换成 Token 流。
输入:字符流
"int x = 42;"
输出:Token 流
[INT, ID("x"), ASSIGN, NUM(42), SEMICOLON]1.2 词法分析器的位置
编译流程:
源代码 → [词法分析器] → Token → [语法分析器] → AST2. 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. 自测问题
- 词法分析的任务是什么?
- 什么是 Token?
- 词法分析器在编译流程中的位置是什么?
- 举出几种 Token 类型。
5. 下集预告
下一集我们将学习 Token 的设计!
参考资料
- 《编译原理》(龙书)