精选课件编译原理与实现03第3章 词法分析.ppt

精选课件编译原理与实现03第3章 词法分析.ppt

  1. 1、本文档共24页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第3章 词法分析 3.1词法分析的功能 3.1词法分析的功能 3.2 程序语言的单词符号种类及词法分析输出 3.2 程序语言的单词符号种类及词法分析输出 3.3 正则文法及状态图 3.3.1 状态图 3.3.1 状态图 3.3.2 状态图的用法 3.3.2 状态图的用法 3.3.2 状态图的用法 3.4 词法分析程序的设计与实现 TEST语言的各类单词符号的正则文法规则如下: TEST语言的各类单词符号的正则文法规则如下: TEST语言的各类单词符号的正则文法规则如下: TEST语言的各类单词符号的正则文法规则如下: 3.4.2 TEST语言词法分析程序的构造 3.4.2 TEST语言词法分析程序的构造 3.4.2 TEST语言词法分析程序的构造 3.4.3 TEST语言的词法分析程序实现 3.4.3 TEST语言的词法分析程序实现 习题 * 词法分析程序又称词法分析器或扫描器,是编译过程的第一步,是下一步进行语法分析的基础。 3.1词法分析的功能 3.2 程序语言的单词符号种类及词法分析输出 3.3 正则文法及状态图 3.4 词法分析程序的设计与实现 扫描源程序字符流,按照源语言的词法规则识别出各类单词符号,并产生用于语法分析的符号序列,即将字符串源程序转换成符号串源程序。程序设计语言的保留字或关键字、标识符、常数、各种运算符等都是单词符号的例子。词法分析程序要做的工作是:从源程序的第一个字符开始,顺序读字符,一次读一个,根据所读进的字符识别各类单词,同时去掉源程序中的空白和注释。词法分析检查的错误主要是挑出源程序中出现的非法符号。所谓非法符号是指不是程序设计语言中允许出现的符号,就像自然语句中的错字。 词法分析与语法分析之间的关系通常有两种形式: 1.词法分析作为独立的一遍 词法分析可作为单独一遍来实现。这种词法分析的输出存入一个中间文件供语法分析使用。这样通过词法分析,就可以将字符串源程序转换成符号串源程序,如图3.1。 字符串源程序 词法分析 符号串源程序 图3.1 词法分析单独作为一遍 2.词法分析程序作为语法分析程序的子程序 有些编译程序将词法分析和语法分析安排在同一遍中,此时词法分析作为语法分析程序的一个子程序。每当语法分析需要一个新的符号时,就调用词法分析子程序,词法分析子程序从字符串源程序中识别出一个具有独立意义的单词,将其符号返给语法分析。这种方法避免了中间文件,省去了送取符号工作,有利于提高编译程序的效率,如图3.2。 字符串源程序 词法分析器 语法分析器 图3.2 词法分析作为语法分析子程序 取符号 送符号 词法分析的功能是为识别出的具有独立意义的单词,而输出的就是这些单词的符号。在程序设计语言中,单词符号是最基本的语法单位,具有确定的语法意义。通常程序语言的单词符号有: 保留字:如if、while、for等等。这些保留字在程序语言中具有固定的意义,是编译程序识别各类语法成分的依据,用户不能用它们作标识符。 标识符:由用户定义,用来表示各种名字,如变量名、函数名、数组名等等。 无符号数:如125、0.788、15.2 分界符:如+、-、*、/、;、(、)等单分界符,还有=、=、!=、++等双分界符 . 词法分析的输出常采用二元式,如图3.3所示。 单词值 单词类别 图3.3 词法分析程序的输出形式 单词类别通常用一个整数类码或单词记号表示,单词记号比整数码含义明确。例如,保留字FOR,可直接用同样的字符串FOR作为单词记号来表示,而如果用整数类码,含义就不直观。用汇编编写词法分析程序,单词类别常用整数表示,因为用单词记号处理起来比较麻烦。而如果用高级语言编写词法分析程序,那么采用单词记号则更自然些,因为高级语言提供了字符串处理函数,处理助记符号不再烦琐。一个语言的单词类别如何分类、分成几类、怎样编码,主要取决于技术处理上的方便。标识符一般归为一类,常数则按类型(整数、实数等)分类。保留字即可将全体定为一类,也可一字一类。分界符可单独作为一类,也可采用一符一类的分法。采用一字一类或采用一符一类的分法实现处理起来更方便一些。因为,如果一个类别只含一个单词符号,那么,对于这个单词符号,类别编码就完全代表它自身的值,词法分析就不必输出其值了。 程序设计语言的单词符号可用3型文法来描述,3型文法也称为正则文法。对于正则文法所描述的语言可以用一种有穷自动机来识别。我们的目的是实现词法分析程序,所以为了简化问题,我们直接介绍这种自动机的非形式表示,即状态图。 3.3.1 状态图 所谓“状态图”就是一张有穷的有向图。图中的结点代表状态,用圆圈表示,状态间用有向弧线连接,连接弧上标记有符号,表示在弧线射出端的状态下,读入弧线上标记的符号可转换到弧线指向

文档评论(0)

jsntrgzxy + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档