欢迎来到天天文库
浏览记录
ID:52390267
大小:1.21 MB
页数:124页
时间:2020-04-05
《编译原理课件词法分析.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、编译程序的结构表格管理词法分析器语法分析器语义分析与中间代码产生优化器目标代码生成器源程序单词符号语法单位中间代码中间代码目标代码出错处理第三章词法分析词法分析的任务是:从左至右逐个字符地对源程序进行扫描,产生一个个单词符号,把作为字符串的源程序改造成为单词符号串的中间程序。词法分析是编译的基础。执行词法分析的程序称为词法分析器。3.1对词法分析器的要求3.1.1词法分析器功能和输出形式功能:输入源程序,输出单词符号(单词记号文件)单词符号(token):具有完整语义的最小的单位,不可分割。输出形式:根据单词符号的不同,构造表示单词符号的机内表示to
2、ken,以二元组形式表示,存放在文件中(形成源程序的内码文件)。二元组形式:(单词种别编码,单词的属性值)内码文件的形式for(i=0;i<=10,i--)(for,-)((,-)(i,符号表入口)(=,-)(整形常数,常数表入口)(;-)……….单词种别编码与单词符号属性值单词类型单词种别编码(用一个编码来代表一个单词)属性值((单词的语义)关键字一种编码/一符一种-标识符一种编码符号表项指针运算符一符一种-常数整、实、布尔型等分别编码常数表指针界符一符一种-考虑下述C++代码段:while(i>=j)i--;经词法分析器处理后,它将转换为如下的单
3、词符号序列:<(,->=,-><),-><--,-><;,->3.1.2词法分析器的构造方式-词法分析器作为独立子程序词法分析器安排成语法分析的子程序。好处在于:编译器结构清晰。源程序词法分析语法分析callreadtokenchar3.1.2词法分析器作为独立子程序词法分析器作为独立的遍工作方式:不是任何程序的子程序,独立的完成一遍任务。缺点:需要保存单词符号文件,占用内存源程序词法分析单词记号文件readtokenchar3.2词
4、法分析器的设计3.2.1输入、预处理外存上的输入串输入缓冲区扫描缓冲区读入预处理预处理空白符,制表符、回车符,注释语句等构造预处理程序词法分析器的工作分析器对扫描缓冲区进行扫描一进行单词的识别。扫描时一般使用两个指示器扫描缓冲区最好使用如下一分为二的区域:(循环队列的形式)。词法分析器的结构源程序串输入缓冲区列表预处理子程序扫描器单词符号扫描缓冲区3.2.2单词符号的识别:超前搜索超前搜索技术在单词识别的过程中,通过向前多读几个符号的形式,准确的进行单词的识别一旦确定识别到的单词之后,需要进行扫描指针的回退,保证单词识别工作的顺利进行DO99K=1,
5、10IF(5.EQ.M)I=10DO99K=1.10IF(5)=55关键字的识别像FORTRAN这样的语言,关键字不加保护(只要不引起矛盾,用户可以用它们作为普通标识符)借助于超前搜索技术实现。保留字(关键字不能用作标识符)的识别可以借助于保留字i表进行。1DO99K=1,102IF(5.EQ.M)I=103DO99K=1.104IF(5)=55标识符的识别标识符的定义:字母开头,字母和数字的组合标识符后通常有界符常数的识别算术常数有时需要超前搜索5.EQ.M逻辑常数:.T.,.F.,有界符,容易识别算符、界符的识别+,-,*,/,++,--所以需要
6、超前搜索词法分析器的构造基础小结构造预处理器,删除非执行代码注释语句,多余的分隔符,等等构造扫描器,对预处理结果进行扫描对常数、标识符、关键字、运算符的识别都要采用超前搜索技术扫描指针要及时地回退到适当的位置3.2.3状态转换图状态转换图:有限、有向图。用来描述单词规则的一种工具。在转换图中,结点代表状态(单词识别过程中的状态),用园圈表示。状态之间用箭弧连结。箭弧上的标记(字符)代表在射出结点(即箭弧始结点)状态下可能出现的输入字符或字符类。一张转换图只包含有限个状态(即有限个结点),其中有一个被认为是初态(用=>表示),而且实际上至少要有一个终态
7、(用双圈表示)。图3.2状态转换图=>标识符出口S标非字母数字字母字母、数字无符号整数出口S数非数字数字数字单字符分界符出口S单界+*,()其他字符双字符分界符出口S冒号其他字符:双界=非=****状态图的作用一个状态转换图可用于识别一定的字符串(描述词法规则)。终态上打个*号,表示多读进了一个不属于标识符部分的字符,应把它退还给输入串,如果在状态0时输入字符不为“字母”,则意味着这个转换图不工作。可以使用状态图进行词法分析器的开发=>3.2.4状态转换图的实现利用转换图容易编写词法分析器让每个状态结点对应一小段程序。在编制程序的过程中引进一组全局变
8、量和过程。将它们作为实现转换图的基本成分。例如:Key:记录单词识别过程中已识别到的字符串扫描指针回退函数判
此文档下载收益归作者所有