词法分析:从正则表达式到有限自动机
1. 词法分析概述
在将一个程序从一种语言翻译成另一种语言时,编译器首先需要将程序拆解,理解其结构和含义,然后以不同的方式重新组合。编译器的前端负责分析,后端负责合成。分析过程通常分为词法分析、语法分析和语义分析。
词法分析的任务是将输入的字符流拆分成一个个独立的单词或“词法单元(tokens)”。词法分析器会处理字符流,生成名称、关键字和标点符号流,同时会丢弃词法单元之间的空白字符和注释。将词法分析与语法分析分离的主要原因是,若语法分析器在每个可能的位置都要考虑空白字符和注释,会使分析过程变得过于复杂。
2. 词法单元
词法单元是在编程语言的语法中可以作为一个整体处理的字符序列。编程语言将词法单元分为有限的几种类型,常见的词法单元类型如下表所示:
| 类型 | 示例 |
| ---- | ---- |
| ID | foo, n14, last |
| NUM | 73, 000, 515, 082 |
| REAL | 66.1, .5, 10., 1e67, 5.5e - 10 |
| IF | if |
| COMMA | , |
| NOTEQ | != |
| LPAREN | ( |
| RPAREN | ) |
由字母字符组成的标点符号词法单元,如 IF 、 VOID 、 RETURN 等,被称为保留字,在大多数语言中不能用作标识符。非词法单元的示例包括注释、预处理指令、宏、空白字符(空格、制表符和
词法分析:从正则表达式到有限自动机
超级会员免费看
订阅专栏 解锁全文
615

被折叠的 条评论
为什么被折叠?



