1、第三章 有穷自动机与词法分析器任课教师王养廷主要内容n词法分析n有穷自动机3.1 词法分析n 词法分析功能 源程序文件 ASCII编码 文本文件 例如: “A1”保存为 4131 单词 源程序的语法成分 例如: if, (, 3.1 词法分析n 词法分析功能 Token 单词的内部表示,例如:程序表示 ASCII码 Token.class Token.semanIf 6966 01 6966then 7468656e 02 7468656ebegin 626569676e 03 626569676eend 656e64 04 656e64+ 2b 05 2b( 28 06 283.1 词法分析
2、n 词法分析功能 标识符 用户定义的符号 作为一类来处理 常量 可以作为一类或多类 保留字 用来分隔语法成分 一般每个一类 与保留字的区别(算法设计?)3.1 词法分析n 词法分析功能 词法分析输入:源程序 词法分析输出: Token序列 词法分析功能:把源程序转换成 Token序列 词法分析器种类 作为语法分析的一个子程序,每次产生一个Token 作为编译器独立的一遍、生成 Token序列3.1 词法分析n 词法分析功能 单词识别 从字符串中分离出单个单词 主要的单词 标识符 正整数 保留字 符号 3.1 词法分析n 词法分析功能 词法分析复杂性,例子:DO 10 I = 1 , 100DO 10 I = 1. 100 3.1 词法分析 (续 )n 单词内部表示 标识符的内部表示 指针方法 其它符号的内部表示 为什么单独处理标识符$id x1. x1z12 .3.1 词法分析 (续 )n 保留字 什么识保留字 分析保留子的方法 保留字表,数据实现 非保留字表,程序实现n 空格、制表符、换行符 它们可以作为分隔符 有的语言空格符无词法意义 例如:下面两行等价 beginx begin x 字符串中的空格需要单独处理 换行可以用于行计数