第三章 词法分析 ■ 词法分析的任务:从左至右逐个字符地 对源程序进行扫描,产生一个个单词符 号。 ■词法分析器(Lexical Analyzer)又称扫描 器(Scanner):执行词法分析的程序 国防科技大学计算机系602教研室
国防科技大学计算机系602教研室 第三章 词法分析 ◼ 词法分析的任务:从左至右逐个字符地 对源程序进行扫描,产生一个个单词符 号。 ◼ 词法分析器(Lexical Analyzer) 又称扫描 器(Scanner):执行词法分析的程序
3.1对于词法分析器的要求 一、词法分析器的功能和输出形式 ■于 功能:输入源程序、输出单词符号 ■ 单词符号的种类: 口基本字:如begin,repeat, 。。 口标识符一表示各种名字:如变量名、数组 名和过程名 口常数:各种类型的常数 口运算符:+,一,米,/, 口界符:逗号、分号、括号和空白 国防科技大学计算机系602教研室
国防科技大学计算机系602教研室 3.1 对于词法分析器的要求 一、词法分析器的功能和输出形式 ◼ 功能:输入源程序、输出单词符号 ◼ 单词符号的种类: 基本字:如 begin,repeat, 标识符——表示各种名字:如变量名、数组 名和过程名 常数:各种类型的常数 运算符:+,-,*,/, 界符:逗号、分号、括号和空白
输出的单词符号的表示形式: (单词种别,单词自身的值) ■ 单词种别通常用整数编码表示。 口若一个种别只有一个单词符号,则种别编 码就代表该单词符号。假定基本字、运算 符和界符都是一符一种。 口若一个种别有多个单词符号,则对于每个 单词符号,给出种别编码和自身的值。 ■标识符单列一种;标识符自身的值表示成 按机器字节划分的内部码。 ■常数按类型分种;常数的值则表示成标准 的二进制形式。 国防科技大学计算机系602教研室
国防科技大学计算机系602教研室 ◼ 输出的单词符号的表示形式: (单词种别,单词自身的值) ◼ 单词种别通常用整数编码表示。 若一个种别只有一个单词符号,则种别编 码就代表该单词符号。假定基本字、运算 符和界符都是一符一种。 若一个种别有多个单词符号,则对于每个 单词符号,给出种别编码和自身的值。 ◼标识符单列一种;标识符自身的值表示成 按机器字节划分的内部码。 ◼常数按类型分种;常数的值则表示成标准 的二进制形式
例 C程序 while (i>=j)i--; ■输出单词符号: while,- < (-> <id,指向i的符号表项的指针> <>=, -> <id,指向j的符号表项的指针> <),- id, 指向的符号表项的指针> < > < > 国防科技大学计算机系602教研室
国防科技大学计算机系602教研室 例 C程序 ◼ while (i>=j) i--; ◼ 输出单词符号: < while, - > < (, - > < id, 指向i的符号表项的指针 > < >=, - > < id, 指向j的符号表项的指针 > < ), - > < id, 指向i的符号表项的指针 > < --, - > < ;, - >
例 FORTRAN程序 ■ IF (5.EQ.M) G0T0100 ■ 输出单词符号: 逻辑IF (34,-) 左括号 (2,-) 整常数 (20, ‘5的二进制) (6,-) 标识符 (26, M) 右括号 (16,-) GOTO (30,-) 标号 (19, ‘100'的二进制) 国防科技大学计算机系602教研室
国防科技大学计算机系602教研室 例 FORTRAN程序 ◼ IF (5.EQ.M) GOTO 100 ◼ 输出单词符号: 逻辑IF (34,-) 左括号 (2,-) 整常数 (20, ‘5’的二进制) 等号 (6,-) 标识符 (26, ‘M’) 右括号 (16,-) GOTO (30,-) 标号 (19, ‘100’的二进制)