编译原理第三章词法综述.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
* * 词法分析的任务: 从左至右逐个字符地扫描源程序,产生一个个的单词符号,把作为字符串的源程序改造成为单词符号串的中间程序。 词法分析器/扫描器:执行词法分析的程序。 源程序 扫描器 scanner 1、关键字 词法分析器的功能如下图所示: 2、标识符 5、界符 4、运算符 3、常数 由程序语言定义的具有固定意义的标识符。也可称为保留字或基本字。例如:Pascal中的begin,end,if等。 界符:如逗号、分号、括号、/*,*/ 等。它是确定的。 运算符:如+、-、*、/ 等。它是确定的。 常数的类型一般有整型、实型、布尔型、文字型等。它是不限的。 用来表示各种名字,如变量名、数组名、过程名等。它是不限的。 词法分析器的功能:输入源程序,输出单词符号。 单词符号:一个程序语言的基本语法符号。分为以下5种。 1、关键字:由程序语言定义的具有固定意义的标识符。也可称为保留字或基本字。例如:Pascal中的begin,end,if等。它是确定的。 2、标识符:用来表示各种名字,如变量名、数组名、过程名等。它是不限的。 3、常数:常数的类型一般有整型、实型、布尔型、文字型等。它是不限的。 4、运算符:如+、-、*、/ 等。它是确定的。 5、界符:如逗号、分号、括号、/*,*/ 等。它是确定的。 确定 不限 单词符号的表示形式:词法分析器所输出的单词符号常常表示成 二元式(单词种别,单词自身的值)。 单词种别可以用以下形式表示: 1、一类单词统一用一个整数值代表其属性。例如:1代表关键字,2代表标识符等。 2、每一个单词一个类别。例如:1代表BEGIN,2代表END等。 单词自身的值可以表示成:常量的二进制表示;常量、变量等在符号表种的地址码,等等。 注意:一个语言的单词符号如何分种,分几种,怎样编码,是一个技术问题。标识符一般同归为一种。常数则宜按类型(整、实、布尔)分。关键字可以将其全体视为一种,也可一字一种。运算符可采用一符一种,但也可把具有一定共性的视为一种。界符则一般采用一符一种。如何进行分种主要取决于处理上的方便。 若是一符一种分种,单词自身值就不需要了。否则,要查符号表。 例:151-FORTRAN编译程序的词法分析器在扫描输入串 IF (5·EQ·M) GOTO 100 后,它输出的单词符号串是: 逻辑IF (34,_) 左括号 (2,_) 整常数 (20,‘5’的二进制表示) 等号 (6,_) 标识符 (26,‘M’) 右括号 (16,_) GOTO (30,_) 标号 (19,‘100’的二进制表示) IF为关键字,种别编码34,采用一符一种的编码方式。 常数类型,种别编码20,单词自身的值为‘5’的二进制表示。 ‘(’为界符,种别编码2,采用一符一种的编码方式。 等号为运算符,种别编码6,采用一符一种的编码方式。 M为标识符,种别编码26,单词自身值为‘M’。 ‘)’为界符,种别编码16,采用一符一种的编码方式。 GOTO为关键字,种别编码30,采用一符一种的编码方式。 100为标号,种别编码19,单词内部的值用100的二进制表示。 例:下述C++代码段:while ( i = j ) i - -; 经词法分析器处理以后,它将被转换为如下的单词符号串 ( while ,_ ) ( ( ,_ ) ( id ,指向i的符号表指针 ) ( = ,_ ) ( id ,指向j的符号表指针 ) ( ) ,_ ) ( id ,指向i的符号表指针 ) ( - - ,_ ) ( ; ,_ ) 1、把词法分析从语法分析中脱离出来的优点: 使编译程序的结构更加简洁、清晰和条理化。 词法分析和语法分析方法不同,词法分析可以使用正则文法自动构造scanner简单。 有利于提高语法分析的效率。 可以改善词法分析的细节,甚至于一个语法分析配几个scanner,把不同的输入变成一种内部表示。 2、把词法分析作为独立的一遍 scanner当作一遍。 把scanner当作子程序。 外存 scanner 语法分析 源程序 单词符号 scanner作为一遍 语法 分析 scanner 源程序 scanner作为子程序 设计前提: 把scanner作为一个独立的子程序; 词法分析器

文档评论(0)

***** + 关注
实名认证
文档贡献者

我是自由职业者,从事文档的创作工作。

1亿VIP精品文档

相关文档