大三上课件编译原理com03.pptx

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

1第三章语法分析词法分析:记号的集合,字符串由字母组成,线性结构语法分析:句子的集合,句子由记号组成,非线性结构(树)语法的双重含意:语法规则:上下文无关文法(子集:LL文法或LR文法)语法分析:自上而下分析、自下而上分析、

下推自动机(LL或LR分析器),本章主要内容:与语法分析相关的若干问题上下文无关文法自上而下分析自下而上分析上机作业-第二部分:函数绘图语言的语法分析器

23.1语法分析的若干问题

3.1.1语法分析器的作用位置:作用(任务):根据词法分析器提供的记号流,为语法正确的输入构造分析树(或语法树),这是本章的重点;检查输入中的语法(可能包括词法)错误,并调用出错处理器进行适当处理。

33.1.2语法错误的处理原则词法错误语法错误静态语义错误:动态语义错误(逻辑错误):1源程序中可能出现的错误(两类):语法错误语义错误指非法字符或拼写错关键字、标识符等@ begn 20times指语法结构出错,如少分号、括号不匹配、

begin/end不配对等 x=(a+b*c y=2*/3;如类型不一致、参数不匹配等inta,x[10];x=a;a=3+“end”;如死循环、变量为零时作除数等for(i=0;i!=a;i++){...}//a0时,死循环i=a/b;//运行时,b可能为0

4对语法错误的处理,一般希望达到以下基本目标:清楚而准确地报告错误的出现,地点正确、不漏报、不错报也不多报;迅速从每个错误中恢复过来(以便分析继续进行);对语法正确源程序的分析速度,不应降低太多。2语法错误处理的目标3.1.2语法错误的处理原则(续1)紧急方式恢复:抛弃若干输入,直到遇到同步记号。短语级恢复:采用串替换的方式对剩余输入进行局部纠正(替代、抛弃、插入)。出错产生式:用出错产生式捕捉错误(预测错误)。

如YACC,预置型的短语级恢复方式。全局纠正:对错误输入序列x,找相近序列y,使得x变换成y所需的修改、插入、删除次数最少。3语法错误的基本恢复策略

53.1.2语法错误的处理原则(续2)紧急恢复:x:=a+b+d; --丢弃b后若干记号,直到遇到”+”或:x:=a+b; --丢弃b后若干记号,直到遇到”;”短语级恢复:x:=a+b; --加入分号,使之成为一个赋值句 y:=c+d;例3.1下述输入中存在语法错误:第一条赋值句结束时忘记加分号:x:=a+by:=c+d;采用紧急恢复策略和短语级恢复策略的可能结果如下。

63.2上下文无关文法(ContextFreeGrammar,CFG)

3.2.1CFG的定义与表示定义3.1CFG是一个四元组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是非终结符,称为文法的开始符号(Startsymbol)。注:S∈N■

73.2.1CFG的定义与表示(续1)N=T= S=P:例3.2简单算术表达式的上下文无关文法可表示如下:1产生式的一般读法可以将产生式中的→读作“定义为”或者“可导出”。更一般的,“E→E+E”可用自然语言表述为“算术表达式定义为两个算术表达式相加”。或者 “一个算术表达式加上另一个算术表达式,仍然是一个算术表达式”。{E}{+,*,(,),-,id} EP:E→E+E(1)E→E*E(2)E→(E)(3)(G3.1)E→-E(4)E→id(5)

83.2.1CFG的定义

文档评论(0)

183****7931 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档