编译原理第三章词法素材培训讲学.ppt

编译原理第三章词法素材培训讲学.ppt

ID:59720478

大小:3.19 MB

页数:47页

时间:2020-11-20

编译原理第三章词法素材培训讲学.ppt_第1页
编译原理第三章词法素材培训讲学.ppt_第2页
编译原理第三章词法素材培训讲学.ppt_第3页
编译原理第三章词法素材培训讲学.ppt_第4页
编译原理第三章词法素材培训讲学.ppt_第5页
资源描述:

《编译原理第三章词法素材培训讲学.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、编译原理第三章词法素材词法分析器的功能:输入源程序,输出单词符号。单词符号:一个程序语言的基本语法符号。分为以下5种。1、关键字:由程序语言定义的具有固定意义的标识符。也可称为保留字或基本字。例如:Pascal中的begin,end,if等。它是确定的。2、标识符:用来表示各种名字,如变量名、数组名、过程名等。它是不限的。3、常数:常数的类型一般有整型、实型、布尔型、文字型等。它是不限的。4、运算符:如+、-、*、/等。它是确定的。5、界符:如逗号、分号、括号、/*,*/等。它是确定的。确定不限单词符号的表示形式:词法分析器所输出的单

2、词符号常常表示成二元式(单词种别,单词自身的值)。单词种别可以用以下形式表示:1、一类单词统一用一个整数值代表其属性。例如:1代表关键字,2代表标识符等。2、每一个单词一个类别。例如:1代表BEGIN,2代表END等。单词自身的值可以表示成:常量的二进制表示;常量、变量等在符号表种的地址码,等等。注意:一个语言的单词符号如何分种,分几种,怎样编码,是一个技术问题。标识符一般同归为一种。常数则宜按类型(整、实、布尔)分。关键字可以将其全体视为一种,也可一字一种。运算符可采用一符一种,但也可把具有一定共性的视为一种。界符则一般采用一符一种

3、。如何进行分种主要取决于处理上的方便。若是一符一种分种,单词自身值就不需要了。否则,要查符号表。例:151-FORTRAN编译程序的词法分析器在扫描输入串IF(5·EQ·M)GOTO100后,它输出的单词符号串是:逻辑IF(34,_)左括号(2,_)整常数(20,‘5’的二进制表示)等号(6,_)标识符(26,‘M’)右括号(16,_)GOTO(30,_)标号(19,‘100’的二进制表示)IF为关键字,种别编码34,采用一符一种的编码方式。常数类型,种别编码20,单词自身的值为‘5’的二进制表示。‘(’为界符,种别编码2,采用一符一

4、种的编码方式。等号为运算符,种别编码6,采用一符一种的编码方式。M为标识符,种别编码26,单词自身值为‘M’。‘)’为界符,种别编码16,采用一符一种的编码方式。GOTO为关键字,种别编码30,采用一符一种的编码方式。100为标号,种别编码19,单词内部的值用100的二进制表示。例:下述C++代码段:while(i>=j)i--;经词法分析器处理以后,它将被转换为如下的单词符号串(while,_)((,_)(id,指向i的符号表指针)(>=,_)(id,指向j的符号表指针)(),_)(id,指向i的符号表指针)(--,_)(;,_)1

5、、把词法分析从语法分析中脱离出来的优点:使编译程序的结构更加简洁、清晰和条理化。词法分析和语法分析方法不同,词法分析可以使用正则文法自动构造scanner简单。有利于提高语法分析的效率。可以改善词法分析的细节,甚至于一个语法分析配几个scanner,把不同的输入变成一种内部表示。2、把词法分析作为独立的一遍scanner当作一遍。把scanner当作子程序。外存scanner语法分析源程序单词符号scanner作为一遍语法分析scanner源程序scanner作为子程序设计前提:把scanner作为一个独立的子程序;词法分析器的任务为

6、输出单词符号。必要性:编辑性字符如空白符、回车符等,除了出现在文字和常数中以外,在别处出现都没有意义。功能:剔除无用字符。实现:预处理子程序。输入列表预处理子程序扫描器扫描缓冲区输入缓冲区单词符号图2.1词法分析器语法分析器预处理部分扫描器若识别输入语句IF(5.EQ.M)GOTO100,若缓冲区情况如下所示:IF(5.EQ.M)GO起点指示器搜索指示器输入缓冲区TO100IF(5.EQ.M)GO起点指示器搜索指示器输入缓冲区TO100IF(5.EQ.M)GO起点指示器搜索指示器两个互补输入缓冲区120个字符扫描缓冲区的结构:缓冲区大

7、小:120个字符。采用两个指示器:起点指示器、搜索指示器。两个互补区。单词符号识别的简单方法:超前搜索。关键字识别:例如:在标准FORTRAN中1、DO99K=1,102、IF(5.EQ.M)I=103、DO99K=1.104、IF(5)=55其中的DO、IF为关键字其中的DO、IF为标识符的一部分标识符的识别多数语言的标识符是字母开头的“字母/数字”串,而且在程序中标识符的出现后都跟着算符或界符。因此,不难识别。常数的识别对于某些语言的常数的识别也需要使用超前搜索。算符和界符的识别对于诸如C++语言中的“++”、“--”,这种复合成

8、的算符,需要超前搜索。转换图:是一张有限方向图。在状态转换图中,结点代表状态,用圆圈表示。状态之间用箭弧连接。箭弧上的标记(字符)代表在射出结状态下可能出现的输入字符或字符类。状态转换图的功能:用于识别一定的字符串。初态

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

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

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