网站大量收购闲置独家精品文档,联系QQ:2885784924

第三语法分析.pptVIP

  1. 1、本文档共108页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第三语法分析

第三章 语法分析 词法分析:字母是元素,组成字符串,记号的集合,线性结构 语法分析:记号是元素,组成句子,句子的集合,树结构 语法的双重含义 语法规则:上下文无关文法(子集-LL文法、LR文法) 语法分析:下推自动机(LL或LR分析器),自上而下、自下而上分析 主要内容 语法分析的若干问题 上下文无关文法 自上而下分析 自下而上分析 上机:函数绘图语言的语法分析器 3.1 语法分析的若干问题 语法分析器的作用 语法分析器是编译器前端的重要组成部分,许多编译器,特别是由自动生成工具构造的编译器,往往其前端的中心部件就是语法分析器。 语法分析器在编译器中的位置和作用: 3.1 语法分析的若干问题 语法分析器的两个重要作用: 根据词法分析器提供的记号流,为语法正确的输入构造分析树(或语法树),这是本章重点,在以后各节中详细讨论; 检查输入中的语法(可能包括词法)错误,并调用出错处理器进行适当处理,下边简单介绍语法错误处理的基本原则,而在以后的讨论中忽略此问题。 3.1 语法分析的若干问题 语法错误的处理原则 源程序中可能出现的错误 两类:语法错误和语义错误 词法错误如非法字符或拼写错关键字、标识符等 @ intege 20times 语法错误指结构出错,如少分号、begin/end不配对等 begin x:=a+b y:=x; 静态语义错误:如类型不一致、参数不匹配等 a,b:integer; x:array[1..10] of integer; x:=a+b; 动态语义错误(逻辑错误):如死循环、除数为变量零等 while (t) { ...}; a:=a/b; 3.1 语法分析的若干问题 大多数错误的诊断和恢复集中在语法分析阶段。一个原因是大多数错误是语法错误,另一个原因是语法分析方法的准确性,它们能以非常有效的方法诊断语法错误。 编译时想要准确诊断语义或逻辑错误有时是很困难的。 语法错误处理的目标 对语法错误的处理,一般希望达到以下基本目标: 清楚而准确地报告错误的出现,地点正确、不漏报、不错报也不多报; 迅速地从每个错误中恢复过来(以便分析继续进行); 不应使对语法正确的源程序的分析速度降低太多。 3.1 语法分析的若干问题 语法错误的基本恢复策略 紧急方式恢复:抛弃若干输入,直到遇到同步记号。 短语级恢复:采用串替换的方式对剩余输入进行局部纠正(抛弃+插入)。 出错产生式:用出错产生式捕捉错误(预测错误)。预置型的短语级恢复方式。 全局纠正:对错误输入序列x,找相近序列y,使得x变换成y所需的修改、插入、删除次数最少。 3.1 语法分析的若干问题 [例3.1] 下述两条是有语法错误的语句,其中第一条赋值句结束时忘记加分号,采用紧急恢复方式和短语级恢复方式的可能结果分别如下所示。 x := a + b y := c + d; 紧急方式: x := a + b + d; -- 丢弃b后若干记号,直到遇到+ 短语级恢复:x := a + b; -- 加入分号,使之成为一个赋值句 y := c + d; 3.2 上下文无关文法(CFG) CFG的定义与表示 上下文无关文法,Context Free Grammar,CFG 定义3.1 CFG是一个四元组: G =(N,T,P,S),其中 (1) N是非终结符(Nonterminals)的有限集合; (2) T是终结符(Terminals)的有限集合,且N∩T=Φ; (3) P是产生式(Productions)的有限集合,形如: A→α,其中A∈N(左部),α∈(N∪T)*(右部), 若α=ε,则称A→ε为空产生式(也可以记为A →); (4) S是非终结符,称为文法的开始符号(Start symbol)。 3.2 上下文无关文法(CFG) [例3.2] 简单算术表达式的上下文无关文法可表示如下: N = {E} T = {+,*,(,),-,id} S = E P: E → E + E (1) E → E * E (2) E →(E) (3) (G3.1) E → -E (4) E → id (5) 产生式的一般读法 记号 → 读作“定义为”或者“可导出”。 “E → E + E” 表述为“算术表达式定义为两个算术表达式相加”;或者“一个算术表达式加上另一个算术表达式,仍然是一个算术表达式”。 3.2 上下文无关文法(CFG) 由产生式集表示CFG 前提: 若文法正确 结论: 文法开始符号S是第一个产生式的左部; N

文档评论(0)

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

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

1亿VIP精品文档

相关文档