5、4.1词法分析概述
编译程序总框
词法分析的任务
- 词法分析的任务
- 从左到右做个字符地对源程序进行扫描,产生一个单词符号
- 词法分析器(Lexical Analyzer)
- 扫描器(Scanner)
- 执行词法分析的程序
词法分析器的功能
- 功能
- 输入源程序、输出单词符号
- 单词符号的种类
- 基本字:如begin, repeat, for, ....
- 标识符:用来表示各种名字,如变量名、数组名和过程名
- 常数:各种类型的常数
- 运算符:+,-,*,/,....
- 界符:逗号,分号,括号和空白
词法分析器的输出
- 输出的单词符号的表示形式:
- (单词种别,单词自身的值)
- 单词种别通常用整数编码表示
- 若一个种别只有一个单词符号,则种别编码就代表该单词符号。假定基本字、运算符和界符都是一符一种
- 若一个种别有多个单词符号,则对于每个单词符号,给出种别编码和自身的值
- 标识符单列一种;标识符自身的值表示成按机器字节划分 的内部码
- 常数按类型分种;常数的值则表示成标准的二进制形式。
例 PASCAL程序
- if(5 = m) goto 100
- 输出单词符号
例 C程序
- while(i >= j) i--;
- 输出单词符号
词法分析器作为一个独立子程序
- 词法分析器作为一个独立的阶段
- 结构清晰简洁,有利于集中考虑词法分析一些枝节问题
- 但不一定不作为单独的一遍
- 强其处理为一个子程序
词法分析器在编译器中地位