编译原理第3章.ppt

  1. 1、本文档共86页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

第三章词法分析这一章将讨论词法分析程序的构造。词法分析的任务:从左至右逐个字符地对源程序进行扫描,产生一个个的单词符号,把作为字符串的源程序改造成为单词符号串的中间程序。前一部分讨论手工构造方法,后一部分讨论自动构造方法。3.1对于词法分析器的要求词法分析器的功能和输出形式词法分析器的功能是输入源程序,输出单词符号。单词符号是一个程序语言的基本语法符号。程序语言的单词符号一般可分为下列五种。(1)关键字(保留字或基本字)(2)标识符(3)常数(整型、实型、布尔型、文字型等)(4)运算符。(5)界符(逗号、分号、括号、/*,*/等)。词法分析器所输出的单词符号常常表示成如下的二元式:(单词种别,单词符号的属性值)考虑下述c++代码段:while(i>=j)i--;经词法分析器处理后,它将被转换为如下的单词符号序列:<while,-><(,-><id,指向i的符号表项的指针><>=,-><id,指向i的符号表项的指针><),-><id,指向i的符号表项的指针<--,-><;,->词法分析器作为一个独立子程序可使整个编译程序的结构更简沽、清晰和条理化。也可以把词法分析器安排成一个子程序,每当语法分析器需要一个单词符号时就调用这个子程序。每一次调用,词法分析器就从输人串中识别出一个单词符号,把它交给语法分析器。3.2词法分析器的设计一、设计第一步:输入、预处理词法分析器工作的第一步是输入源程序文本。输入串一般是放在一个缓冲区中,这个缓冲区称输入缓冲区。预处理工作包括对空白符、跳格符、回车符和换行符等编辑性字符的处理,及删除注解等。设想构造一个预处理子程序,他完成上面的工作。每当词法分析器调用它时就处理出一串确定长度的输入字符,并将其装入词法分析器所指定的缓冲区中(称为扫描缓冲区)。这样分析器就可以在此缓冲区中直接进行单词符号的识别工作。当词法分析器调用预处理子程序处理出一串输入字符串放进扫描缓冲区之后,分析器就从此缓冲区中逐一识别单词符号。当缓冲区里的字符串被处理完之后,它又调用预处理程序装入新串。设计第二步:二、单词符号的识别:超前有哪些信誉好的足球投注网站分析器对扫描缓冲区进行扫描时一般用两个指示器,一个指向当前正在识别的单词的开始位置(指向新单词的首字符),另一个用于向前有哪些信誉好的足球投注网站以寻找单词的终点。超前扫描关健字的识别:(如FORTRAN语言)1D099K=1,102IF(5.EQ.M)I=103D099K=1.104IF(5)=55这四个语句都是正确的FORTRAN语句。语句1和2分别是DO和IF语句,它们都是以某基本字开头的。语句3和4是赋值语句,它们都是以用户自定义的标识符开头的。◆从1、2中识别出关键字DO和IF,我们必须要能够区别1、3和区别2、4。※语句1、3的区别在于等号之后的第一个界符:一个为逗号,另个为句末符。※语句2、4的主要区别在于右括号后的第一个字符:一个为字母,另一个为等号。★为了识别1、2句中的关键字,我们必须超前扫描许多个字符,超前到能够肯定词性的地方为止。对于1、3来说,尽管都以‘D’和‘O’两个字母开头,但不能一见‘DO’就认定是DO语句。我们们必须超前有哪些信誉好的足球投注网站,跳过所有的字母和数字,看看是否有等号。如果有,再向前有哪些信誉好的足球投注网站。若下一个界符是逗号,则可以肯定DO应为关键字。否则,DO不构成关键字,它只是用户标识符的头两个字母。所以为了区别1和3,我们必须超前扫描到等号后的第一个界符处。★对于2和4来说,必须超前扫描到与IF后的左括号相对应的那个右括号之后的第一个字符为止。若此字符是字母,则得逻辑IF。若此字符为数字,则得算术IF。否则,应认为是用户自定义标识符IF.标识符的识别、常数的识别及算符和界符的识别相类似可以参考课本P40,P41这里就不再多述。标识符的识别常数的识别算符和界符的识别三、状态转换图转换图是一张有限方向图。在状态转换图中,结点代表状态,用圆圈表示。状态之间用箭弧连结。箭弧上的标记(字符)代表在射出结点(即箭弧始结点)状态下可能出现的输入字符或字符类。一张转换图只包含有限个状态(即有限个结点),其中有一个被认为是初态,而且实际上至少要有一个终态(用双圈表示)。一个状态转换图可用于识别(或接受)一定的字符串。四、状态转换图的实现(1)ch字符变量,存放必威体育精装版读进的源程序字符。(2)strToken字符数组,存放构成单词符号的字符串。(3)GetChar子程序过程,将下一输入字符读到ch中,有哪些信誉好的足球投注网站指示器前移一字符位置。(4)GetBC子程

文档评论(0)

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

科技工作者

1亿VIP精品文档

相关文档