资源目录
压缩包内文档预览:
编号:21836409
类型:共享资源
大小:13.06MB
格式:ZIP
上传时间:2019-09-06
上传人:QQ24****1780
认证信息
个人认证
王**(实名认证)
浙江
IP属地:浙江
25
积分
- 关 键 词:
-
大学
编译
原理
实用教程
杨德芳
课件
ppt
- 资源描述:
-
大学编译原理实用教程-杨德芳-课件PPT,大学,编译,原理,实用教程,杨德芳,课件,ppt
- 内容简介:
-
第三章 词法分析,本章学习目标,词法分析程序的主要任务是对源程序进行扫描,从中识别出单词。它是编译程序的第一步,也是编译过程中不可缺少的部分。本章的主要内容是: 正则表达式和有限自动机 文法、正规表达式、正规集及自动机的相互转换 词法分析器的C语言实现 词法分析器的自动生成,3.1词法分析器与单词符号,3.1.1 词法分析 词法分析是编译过程的第一个阶段。这个阶段的任务是从左到右一个字符一个字符地读入源程序,对构成源程序的字符流进行扫描和分解,从而识别出一个一个的单词。编译程序中完成词法分析任务的程序段,称为词法分析程序。词法分析程序对源程序进行扫描,从中识别出一个个的单词符号,因此,词法分析程序又称为词法分析器,又称扫描器。,词法分析器作为编译程序的一部分,它与语法分析程序之间接口方式有两种。一种方式是词法分析程序独立工作,把字符流的源程序变为单词序列,输出在一个中间文件上,这个文件称为语法分析程序的输入而继续编译,如图3-1所示就是将词法分析单独作为一遍的接口方式。源程序词法分析程序单词序列图3-1词法分析单独作为一遍 取符号源程序词法分析程序语法分析程序图3-2词法分析作为语法分析子程序送符号 另一种方法,也是常用的一种方法就是把词法分析程序设计成一个子程序,每当语法分析程序需要一个单词时,就调用该程序。词法分析程序每得到一次调用,就从源程序文件中读入一个字符,直到识别出一个单词为止。这种方法省去了中间文件。,3.1.2单词符号,单词符号是程序设计语言的基本语法单位和最小语义单位。单词符号一般分为五类。 (1)关键字(又称保留字或基本字)如if,then ,else,while,do,begin和end。 (2)标识符,用于表示变量名、过程名等。 (3)常数,如123,实数型45.67等。 (4)运算符,如+,-,*,/,=等。 (5)界限符,如逗号、分号和括号等。 程序设计语言中的关键字、运算符和界限符的数量都是确定的。而常数和标识符的数量是不确定的。,1单词类别的表示,单词类别表示单词的种类,它是语法分析所需要的信息。一个语言的单词符号如何划分种类、分为几种,如何编码都属于技术性的问题,主要取决于处理上的方便。单词符号有5个类别:关键字、标识符、常数、运算符和界限符,可以用1、2、3、4、5来表示。也可以用一字符一类别码的编码形式,如保留字可以采用一字一类别。分界符也可以采用一字一类别。对于一字一类别的单词,单词的类型就是单词的自身值,词法分析程序就不必输出其值了。常数的自身值是其自身的二进制。,2单词的自身值,单词自身的值是编译程序中其他阶段所需要的信息。对于单词符号来说,如果一个种别只含有一个单词符号,那么这个单词符号,其种别就安全地代表了它的自身值。如果一个种别含有多个单词符号,那么对于它的每个单词符号,除了给出种别编码之外,还应该给出单词符号自身的值,以便把同一种单词区别开来。注意,标识符自身的值就是标识符自身的字符串。而常数自身的值是常数本身的二进制数值。,3.1.3 一个简单的词法分析程序的设计,1预处理 词法分析器在识别单词符号之前,需要对输入区的源程序进行预处理。预处理包括删除无用的空格、跳格、回车和换行等编辑性字符以及注释部分。每一次对一串定长的输入字符进行预处理,并装进一个指定的缓冲区。 2状态转换图 利用状态转换图可以设计词法分析器。状态转换图是一个有向图,仅包含有限个结点,每个结点表示一个状态,其中有一个初始结点,至少有一个终态结点,结点间弧的标记是输入字符或字符类。,例3.2 有状态转换图3-4所示,其中,0结点用S标记,表示初态结点;2结点用E标记,表示终态结点。从初态结点出发到某一终态结点所经过的路径,称为能为该状态转换图所接受的符号串。,词法分析程序的构造如下: 初始化:arr:=;getch;getnbc; case ch of az: begin while letter or digit do begin concat; getch end; retract; c:=reserve; if c=0 then return (1,arr) ; else return(c, ); end;,09: begin while digit do begin concat;getch; end; retract; return(2,dtb); end; +: return(31, ); : return (32, ) *: return (33, ); /: return (34, ); =: return (37,
- 温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

人人文库网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。