程序设计语言 编译原理(第三版)第4章.ppt 立即下载
2024-08-17
约1.3千字
约53页
0
1MB
举报 版权申诉
预览加载中,请您耐心等待几秒...

程序设计语言 编译原理(第三版)第4章.ppt

程序设计语言编译原理(第三版)第4章.ppt

预览

免费试读已结束,剩余 48 页请下载文档后查看

10 金币

下载文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

第四章语法分析—自上而下分析§4.1语法分析器的功能§4.1语法分析器的功能§4.2自上而下面临的问题§4.2自上而下面临的问题§4.2自上而下面临的问题§4.2自上而下面临的问题§4.2自上而下面临的问题§4.3LL(1)分析法§4.3LL(1)分析法§4.3LL(1)分析法§4.3LL(1)分析法解答:令非终结符排序为R、Q、S
i=1,		无法执行for
i=2,j=1	QRb|b
		RSa|a	QSab|ab|b返回二、消除回溯,提取公共左因子例:Aα1|α2|…|αn
设A所面临的第一个输入符号为a,若A能根据不同的输入符号指派相应的候选αi作为全权代表去执行任务,那就肯定无需回溯。在这里A已不再是让某个候选去试探性地执行任务,而是根据所面临的输入符号a准确地指派唯一的一个候选。2.当不得回溯时,对文法有什么要求?
	∀非终结符A的各个候选的首符集的交集均为空。3.提取公共左因子
A.事实上,许多文法均存在这样的非终结符,
其所有候选的终结首符集并非两两不相交。
例如:语句if条件then语句else语句
		if条件then语句
代价:大量引进新的非终结符和ℇ_产生式.三、分析条件例:文法
	EE+T|T
	TT*F|F
	F(E)|i2.由上分析是不是就意味着:当非终结符A面临输入符号a,且a不属于A的任意候选首符集,但A的某个候选首符集包含ℇ时,就一定可以使A自动匹配?Follow(A)={a|A⇒…Aa…,a∈VT}
若S⇒…A,则规定#∈follow(A)3.LL(1)文法4.LL(1)文法的自上而下分析(有效的无回溯的)一.实现思想
对应文法中每个非终结符编写一个递归过程,每个过程
的功能是识别由该非终结符推出的串,当某非终结符的产生
式有多个侯选时能够按LL(1)形式可唯一地确定选择某个侯
选进行推导.2.子程序的功能
对某个非终结符,用规则的右部符号串去匹配输入串.分析
过程是按文法规则自上而下一级一级地调用有关子程序来完成.§4.4递归下降分析程序构造预测分析器模型§4.5预测分析程序§4.5预测分析程序一、预测分析程序工作过程(1)初始化:依次把’#’和文法开始符号压入分析栈,
将输入串第一个符号读入a;
下面用预测分析方法对输入串i+i*i#进行分析,给出栈的变化过程如下:3步骤预测分析器模型§4.5预测分析程序§4.5预测分析程序1.A→a......例:求下题的FIRST集
E→TE'E'→+TE'|εT→FT'T'→*FT'|εF→(E)|i2.Follow(A)集合构造,A∈VN(2)B→αAβ
E→TE'E'→+TE'|εT→FT'T'→*FT'|εF→(E)|i练习:求下题的FIRST和FOLLOW集合。
S→a|(T)
T→ST’
T’→,ST’|ε
3.LL(1)分析表的构造例:
E→TE'E'→+TE'|εT→FT'T'→*FT'|εF→(E)|i4.6LL(1)中的错误处理第4章总结将‘#’和文法开始符号依次进栈STACK;
§4.5预测分析程序§4.5预测分析程序2.Follow(A)集合构造,A∈VN
查看更多
单篇购买
VIP会员(1亿+VIP文档免费下)

扫码即表示接受《下载须知》

程序设计语言 编译原理(第三版)第4章

文档大小:1MB

限时特价:扫码查看

• 请登录后再进行扫码购买
• 使用微信/支付宝扫码注册及付费下载,详阅 用户协议 隐私政策
• 如已在其他页面进行付款,请刷新当前页面重试
• 付费购买成功后,此文档可永久免费下载
全场最划算
12个月
199.0
¥360.0
限时特惠
3个月
69.9
¥90.0
新人专享
1个月
19.9
¥30.0
24个月
398.0
¥720.0
6个月会员
139.9
¥180.0

6亿VIP文档任选,共次下载特权。

已优惠

微信/支付宝扫码完成支付,可开具发票

VIP尽享专属权益

VIP文档免费下载

赠送VIP文档免费下载次数

阅读免打扰

去除文档详情页间广告

专属身份标识

尊贵的VIP专属身份标识

高级客服

一对一高级客服服务

多端互通

电脑端/手机端权益通用