编译原理第五章.ppt

编译原理第五章.ppt

ID:51593161

大小:109.00 KB

页数:15页

时间:2020-03-25

编译原理第五章.ppt_第1页
编译原理第五章.ppt_第2页
编译原理第五章.ppt_第3页
编译原理第五章.ppt_第4页
编译原理第五章.ppt_第5页
资源描述:

《编译原理第五章.ppt》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、第5章词法分析5.1引言5.2取单词5.3读标识符5.4取无正负号数5.5词法分析器的自动生成5.1引言词法分析工作:主要任务:分析由字符组成的源程序,把它们识别为一个一个具有独立意义的单词,并识别出其有关属性,再转换成长度统一的属性字,以供其它部分分析使用。简单地说,就是扫描源程序,识别单词,转换成属性字。词法分析的处理方式有两种,对应的词法分析程序也有两种。1).不包括处理说明部分,仅完成读取单词并转换成属性字,而不把单词的全部属性都识别出来,说明部分由语法分析完成;2).包括处理说明部分,在词法分析时就把单词的全部属

2、性都识别出来。….源程序词法分析程序语法分析程序Tokengettoken说明:本章讨论的词法分析是包括了说明部分的词法分析。词法分析的两种处理结构:编译系统可以把词法分析工作作为一趟来处理,也可以作为一个子程序来处理。1).把词法分析工作单独作为一趟来处理,则词法分析是主程序,此时需要生成一个中间语言编写的程序(L1程序),并由一个中间文件来保存。输入流:高级语言编写的源程序,由字符组成。 输出流:有属性字组成的与源程序等价的程序。这个程序就是中间程序L1。它是第一级中间语言编写的。是源程序的一种机内表示形式。2).把词

3、法分析工作作为子程序来处理。此时,语法分析程序是主程序。语法分析程序调用词法分析程序,词法分析程序返回被识别后并转换成的属性字。在这种方式下,词法分析程序与语法分析程序是交互作用的。源程序L1程序词法分析符号表字符单词源程序词法分析符号表字符单词语法分析回送单词词法分析的流程图: 词法分析程序的主要任务简单地说来可归结为:扫描源程序,识别单词,转换成属性字。对于单独成趟的词法分析程序,其流程图见书P101图5-3。5.2取单词:在程序设计语言中,单词是具有独立意义的最小语法单位。语言字符集中的每个字母或数字只是用来组成单词

4、,本身不能构成独立的语法单位。单词的种类: 词法分析程序就是读词程序,其输入流是由高级语言的源程序。源程序由字符组成的单词构成。词法分析程序必须完成读词、转换成属性字的任务。而字符可分成字母,数字、特定符号和无效字符等几类。对于字符,有以下文法:<字符>::=<字母>

5、<数字>

6、<特定符号>

7、<无效字 符> <字母>::=A

8、B

9、C

10、…

11、Z

12、a

13、b

14、c

15、…

16、z<数字>::=1

17、2

18、3

19、…

20、9 <特定符号>::=+

21、-

22、*

23、/

24、:=

25、<

26、<=

27、…

28、. <无效字符>::=<回车符>

29、<换行符>

30、<制表符>在PASCAL语言中,

31、单词常有保留字、特殊符号、常量和标识符。取单词程序框图: 取单词的程序框图见书P102图5-4。在框图中的sy是一个枚举类型symbol。定义如下:symbol= (ident,constsy,notop,mul,div,add,sub,eql,geq,gtr,neq,leq,lss,…,ofsy,dosy,tosy,downtosy);在读词的时候,需要运用自动机的技术,采用状态转换的方法。单词的状态转换图: 见书P103图5-5。取单词子程序: 在介绍取单词子程序之前,首先定义一个文本文件source和保留字记录数组r

32、eservedword如下:varsource:text;//假设是源程序文件c:char;//存放每次读入的字符reservedword:array[1..n]ofrecord//专门存放保留字name:array[1..10]ofchar;//保留字的名由10个字符组成。sym:symbolend;5.3读标识符读单词的过程包括了读标识符,标识符由符号组成。以下给出标识符的文法、标识符的状态转换图。读标识符的子程序见书。标识符的文法规则:<标识符>::=<字母>{<字母>

33、<数字>} <字母>::=A

34、B

35、C

36、…

37、Z

38、

39、a

40、b

41、c

42、…

43、z<数字>::=1

44、2

45、3

46、…

47、9标识符的状态转换图:S2S0S1字母字母数字非字母数字5.4取无正负号数在读单词的过程中包括了取数。而数又包括正负数,这里我们仅给出无正负号数的文法,和状态转换图,其程序框图见书。无正负号数的文法规则:<无正负号数>::=<无正负号整数>

48、<无正负号实 数><无正负号实数>::=<无正负号整数>.<数字串> [E<比例因子>]

49、<无正负号 整数>E<比例因子><比例因子>::=<有正负号整数> <有正负号整数>::=[<正负号>]<无正负号整数><正负号>::=+

50、- <

51、无正负号整数>::=<数字串> <数字串>::=<数字>{<数字>} <数字>::=1

52、2

53、3

54、…

55、9无正负号数的状态转换图S2S0S1数字数字其它S3.数字S4其它S5EES6+-S7数字数字S4其它数字取无正负号数的程序图: 见书P107图5-8。5.5词法分析器的自动生成(自学)课外作业(P10

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。