编译原理第三章词法素材培训讲学.ppt
《编译原理第三章词法素材培训讲学.ppt》由会员分享,可在线阅读,更多相关《编译原理第三章词法素材培训讲学.ppt(47页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、编译原理第三章原理第三章词法素材法素材词法分析器的词法分析器的功能功能:输入源程序,输出单词符号。:输入源程序,输出单词符号。单词符号单词符号:一个程序语言的基本语法符号。分为以下:一个程序语言的基本语法符号。分为以下5 5种。种。1 1、关键字关键字:由程序语言定义的具有固定意义的标识符。也:由程序语言定义的具有固定意义的标识符。也可称为保留字或基本字。例如:可称为保留字或基本字。例如:PascalPascal中的中的beginbegin,endend,ifif等。它是等。它是确定确定的。的。2 2、标识符标识符:用来表示各种名字,如变量名、数组名、过程:用来表示各种名字,如变量名、数组名、
2、过程名等。它是名等。它是不限不限的。的。3 3、常数常数:常数的类型一般有整型、实型、布尔型、文字型:常数的类型一般有整型、实型、布尔型、文字型等。它是等。它是不限不限的。的。4 4、运算符运算符:如:如+、-、*、/等。它是等。它是确定确定的。的。5 5、界符界符:如逗号、分号、括号、:如逗号、分号、括号、/*/*,*/等。它是等。它是确定确定的。的。单词符号的表示形式单词符号的表示形式:词法分析器所输出的单词符号常常表示成:词法分析器所输出的单词符号常常表示成 二元式(单词种别,单词自身的值)二元式(单词种别,单词自身的值)。单词种别单词种别可以用以下形式表示:可以用以下形式表示:1 1、
3、一类单词统一用一个整数值代表其属性。例如:、一类单词统一用一个整数值代表其属性。例如:1 1代表关键字,代表关键字,2 2代表标识符等。代表标识符等。2 2、每一个单词一个类别。例如:、每一个单词一个类别。例如:1 1代表代表BEGINBEGIN,2 2代表代表ENDEND等。等。单词自身的值单词自身的值可以表示成:常量的二进制表示;常量、变量等在符号表可以表示成:常量的二进制表示;常量、变量等在符号表种的地址码,等等。种的地址码,等等。注意:注意:一个语言的单词符号如何分种,分几种,怎样编码,是一个技术一个语言的单词符号如何分种,分几种,怎样编码,是一个技术问题。标识符一般同归为一种。常数则
4、宜按类型(整、实、布尔)分。问题。标识符一般同归为一种。常数则宜按类型(整、实、布尔)分。关键字可以将其全体视为一种,也可关键字可以将其全体视为一种,也可一字一种一字一种。运算符可采用一符一种,运算符可采用一符一种,但也可把具有一定共性的视为一种。界符则一般采用但也可把具有一定共性的视为一种。界符则一般采用一符一种一符一种。如何进。如何进行分种主要取决于处理上的方便。行分种主要取决于处理上的方便。若是一符一种分种,单词自身值就不需要了。否则,要查符号表。若是一符一种分种,单词自身值就不需要了。否则,要查符号表。例:例:151151FORTRANFORTRAN编译程序的词法分析器在扫描输入串编译
5、程序的词法分析器在扫描输入串 IF(5EQIF(5EQM)GOTO 100M)GOTO 100 后,它输出的后,它输出的单词符号串单词符号串是:是:逻辑逻辑IF IF (3434,_ _)左括号左括号 (2 2,_ _)整常数整常数 (2020,55的二进制表示)的二进制表示)等号等号 (6 6,_ _)标识符标识符 (2626,MM)右括号右括号 (1616,_ _)GOTO GOTO (3030,_ _)标号标号 (1919,100100的二进制表示)的二进制表示)IFIF为关键字,种别编码为关键字,种别编码3434,采用一符一种的编码方式。采用一符一种的编码方式。常数类型,种别编码常数类
6、型,种别编码2020,单词自身,单词自身的值为的值为55的二进制表示。的二进制表示。(为界符,种别编码为界符,种别编码2 2,采,采用一符一种的编码方式。用一符一种的编码方式。等号为运算符,种别编码等号为运算符,种别编码6 6,采用一符一种的编码方式。采用一符一种的编码方式。M M为标识符,种别编码为标识符,种别编码2626,单,单词自身值为词自身值为MM。)为界符,种别编码为界符,种别编码1616,采用一符一种的编码方式。采用一符一种的编码方式。GOTOGOTO为关键字,种别编码为关键字,种别编码3030,采用一符一种的编码方式。采用一符一种的编码方式。100100为标号,种别编码为标号,种
7、别编码1919,单词,单词内部的值用内部的值用100100的二进制表示。的二进制表示。例:下述例:下述C+C+代码段:代码段:while(i=j)i-while(i=j)i-;经词法分析器处理以后,它将被转换为如下的经词法分析器处理以后,它将被转换为如下的单词符号串单词符号串 (while(while,_)_)(,_)_)(id(id,指向,指向i i的符号表指针的符号表指针 )(=(=,_)_)(id(id,指向,指向j j的符号表指针的符号表指针 )()(),_)_)(id(id,指向,指向i i的符号表指针的符号表指针 )(-(-,_ _)(;,_)_)1 1、把词法分析从语法分析中脱离
8、出来的、把词法分析从语法分析中脱离出来的优点优点:使编译程序的使编译程序的结构结构更加简洁、清晰和条理化。更加简洁、清晰和条理化。词法分析和语法分析词法分析和语法分析方法方法不同,词法分析可以使用正则文法自动构造不同,词法分析可以使用正则文法自动构造scannerscanner简单。简单。有利于提高语法分析的有利于提高语法分析的效率效率。可以改善词法分析的细节,甚至于一个语法分析配几个可以改善词法分析的细节,甚至于一个语法分析配几个scannerscanner,把不同,把不同的输入变成一种内部表示。的输入变成一种内部表示。2 2、把词法分析作为独立的一、把词法分析作为独立的一遍遍scanner
9、scanner当作一遍。当作一遍。把把scannerscanner当作子程序。当作子程序。外存外存scannerscanner语法分析语法分析源程序单词符号scannerscanner作为一遍作为一遍语法语法分析分析scannerscanner源程序源程序scannerscanner作为子程序作为子程序设计前提设计前提:把把scannerscanner作为一个独立的子程序;作为一个独立的子程序;词法分析器的任务为输出单词符号。词法分析器的任务为输出单词符号。必要性必要性:编辑性字符如空白符、回车符等,除了出现在文字和编辑性字符如空白符、回车符等,除了出现在文字和 常数中以外,在别处出现都没有意
10、义。常数中以外,在别处出现都没有意义。功功 能能:剔除无用字符。剔除无用字符。实实 现现:预处理子程序。预处理子程序。输入列表预处理预处理子程序子程序扫描器扫描器扫描缓冲区扫描缓冲区输入缓冲区输入缓冲区单词符号图图2.1 2.1 词法分析器词法分析器语法分析器语法分析器预预处处理理部部分分扫扫描描器器若若识别识别输入语句输入语句 IF(5.EQ.M)GOTO 100,若缓冲区情况如下所示:,若缓冲区情况如下所示:IF(5.EQ.M)GO 起点指示器起点指示器 搜索指示器搜索指示器输入缓冲区输入缓冲区 TO 100 IF(5.EQ.M)GO 起点指示器起点指示器 搜索指示器搜索指示器输入缓冲区输
11、入缓冲区TO 100 IF(5.EQ.M)GO 起点指示器起点指示器搜索指示器搜索指示器两两 个个 互互 补补 输输 入入 缓缓 冲冲 区区120个字符个字符扫描缓冲区的扫描缓冲区的结构结构:缓冲区大小缓冲区大小:120120个字符。个字符。采用两个采用两个指示器指示器:起点指示器、搜索指示器。:起点指示器、搜索指示器。两个互补区两个互补区。单词符号识别的简单方法:单词符号识别的简单方法:超前搜索。关键字识别关键字识别:例如:在标准例如:在标准FORTRANFORTRAN中中 1 1、DO99KDO99K=1,10=1,10 2 2、IFIF(5.EQ.M)I=10(5.EQ.M)I=10 3
12、 3、DO99KDO99K=1.10=1.10 4 4、IFIF(5)=55(5)=55 其中的其中的DODO、IFIF为关键字为关键字其中的其中的DODO、IFIF为标识符为标识符的一部分的一部分标识符的识别标识符的识别 多数语言的标识符是字母开头的多数语言的标识符是字母开头的“字母字母/数字数字”串,串,而且在程序中标识符的出现后都跟着算符或界符。因此,而且在程序中标识符的出现后都跟着算符或界符。因此,不难识别。不难识别。常数的识别常数的识别 对于某些语言的常数的识别也需要使用超前搜索。对于某些语言的常数的识别也需要使用超前搜索。算符和界符的识别算符和界符的识别 对于诸如对于诸如C+C+语
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 编译 原理 第三 词法 素材 培训 讲学
限制150内