24/12/27莆田学院许振和1第3章词法分析(一)24/12/27莆田学院许振和2主要内容:词法分析的任务,手工实现词法分析程序,正规式与有穷自动机,词法分析程序的自动生成重点掌握:词法分析器的功能和接口,用状态转换图设计和实现词法分析程序,正规文法、正规式和有穷状态自动机的概念及相互转换本章要求24/12/27莆田学院许振和3词法分析(一)内容一、词法分析概述二、词法分析程序的设计方法24/12/27莆田学院许振和4词法分析在编译器的位置每个阶段将源程序从一种表示转换成另一种表示。词法分析器错误处理器符号管理表语法分析器语义分析器中间代码生成器代码优化器代码生成器编译的各个阶段源程序目标程序编译器是分阶段执行的。24/12/27莆田学院许振和5一、词法分析概述词法分析器可以分为两个阶段:第一阶段是扫描阶段;第二阶段是词法分析阶段。词法分析器有两种实现模式:完全独立模式、相对独立模式24/12/27莆田学院许振和61.词法分析器的功能功能:逐个读入源程序字符并按照构词规则切分成一系列单词主要任务:读入源程序,输出单词符号其他任务:滤掉空格,跳过注释、换行符追踪换行标志,指出源程序出错的行列位置宏展开,……关键:找出单词的分隔符源程序词法分析程序Token串语法分析程序24/12/27莆田学院许振和7单词:是语言中具有独立意义的最小单位,常用单词分类:保留字:具有固定意义的标识符运算符界符标识符:表示各种名字常数对于一个程序设计语言,保留字、运算符和界符都是确定的,可以给以固定的编号(种别码)。标识符是根据构词规则定义的,常数是符合定义的各种类型的常数24/12/27莆田学院许振和8种别码:是对能识别的单词的分类编码有多种编码方式:标识符一般统一为一种:一个编号常数按类型分别编码:整数、实数、布尔、字符关键字一般一字一种运算符一般一符一种界符一般一符一种24/12/27莆田学院许振和9某语言单词的种别码定义举例单词种别码单词种别码单词种别码and1procedure21*41array2program22*/42begin3read23+43bool4real24,44call5repeat25—45case6set26、46char7then27··47constant8to28/48do9true29/*49else10until30:50end11var31:=51false12while32;52for13write33<53if14标识符34<=54input15整常数35<>55integer16实常数36=56not17字符常数37>57of18‘38>=58or19(39[59output20)40]6024/12/27莆田学院许振和102.词法分析阶段的必要性为什么在编译过程通常是把源程序的结构分析分为词法分析和语法分析两个阶段?其主要原因:(1)简化编译器的设计;(2)提高编译器的效率;(3)增加编译系统的可移植性;(4)可以和语法分析结合在一起作为一遍,由语法分析程序调用词法分析程序来获得当前单词供语法分析使用。24/12/27莆田学院许振和113.记号、模式和词素在输入中有一组字符串会产生相同的记号(作为输出的单词),这个字符串构成的集合由一个与该记号相关联的称为模式的规则来描述,这个模式被说成匹配该集合中的每个字符串。记号——又称单词,是词法分析的基本单位。词素——是源程序的字符序列,由一个记号的模式来匹配。例如,在C语句中:constpi=3.1416;其中的子串pi是记号“标识符”的词素。模式——是描述程序中表示记号的词素集合的规则。24/12/27莆田学院许振和124.单词的机内表示编译器使用二元式标识特定的标识符:<单词类别,该单词所在符号表项的地址>又称种别码。单词值单词值关键字和分界符若采用一字和一符一种编码时,单词值无意义;倘若一类一种编码,单词值可取整数的内部编码或自身的符号串表示。标识符的单词值可取单词符号本身;常数的单词值通常取二进制表示。24/12/27莆田学院许振和135.词法错误处理词法分析器根据各类单词的构词规则分离、识别单词符号,所以它只对源程序进行非常局部的检查,仅能发现非法的单词符号。词法分析器也可以采用下列可能的错误恢复动作:(1)删除一个多余的字符;(2)插人一个遗漏的字符;(3)用一个正确的符号代替一个不正确的符号;(4)交换两个相邻的字符。24/12/27莆田学院许振和14应尽可能发现更多的错误...