您所在位置: 网站首页 / 编译原理第4章 语法分析 (2).ppt / 文档详情
编译原理第4章 语法分析 (2).ppt 立即下载
2024-09-12
约5.1千字
约59页
0
571KB
举报 版权申诉
预览加载中,请您耐心等待几秒...

编译原理第4章 语法分析 (2).ppt

编译原理第4章语法分析(2).ppt

预览

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

15 金币

下载文档

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

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

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

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

第四章语法分析第四章语法分析§1、概述一.语法分析器的功能语法分析:在词法分析的基础上,根据语法规则,从单词符号串中识别出各种语法成分,同时进行语法检查,检查各种语法成分在语法结构上的正确性。
二.语法分析方法§2、自上而下分析方法一、带回溯的自上而下分析法二、存在的问题以及解决的方法1.左递归:①消除直接左递归一般情况:有多个直接左递归:
		P→Pα1|Pα2|…|Pαm|β1|β2|…|βn
	其中,每个α都不等于ε,而每个β都不以P开头,则上式改写为	
			P→β1P′|β2P′|…|βnP′
			P′→α1P′|α2P′|…|αmP′|ε	
例如:	A→Ac|Aad|bd|e
改写为:	A→bdA′|eA′
			A′→cA′|adA′|ε方法二:采用扩充的BNF表示法改写文法规则式
用花括号{α}表示符号串α出现0次或多次。即α*
	标识符:I→l{l|d}	或	I→l{l|d}7
	即将	A→Aα|β		改写成	A→β{α}
中括号[α]表示α是可供选择的符号串。
	<条件语句>→ifBthen<语句>[else<语句>]
使用圆括号,可以在规则中提因子。
	U→XY|XW|…|XZ		U→X(Y|W|…|Z)
例如:算术表达式文法左递归
		E→E+T|T			E→T{+T}
		T→T*F|F			T→F{*F}
		F→(E)|i			F→(E)|i②消除所有左递归的算法例如:消除下面文法的左递归。
文法:S→Qc|c	Q→Rb|b		R→Sa|a
(1)排列:R,Q,S
(2)对R:	没有直接左递归,不执行内循环
	对Q:	将R代入Q变为Q→Sab|ab|b,也没有直接左递归,不执行内循环。
	对S:	将Q代入S变为S→Sabc|abc|bc|c
			消除S的直接左递归,得下面文法:
	S→abcS′|bcS′|cS′
	S′→abcS′|ε			(3)S→abcS′|bcS′|cS′
	Q→Sab|ab|b			S′→abcS′|ε
	R→Sa|a
若排列方法不同,得到的文法也可能不同,但等价2.回溯问题条件一:对文法中每一个非终结符A,如有规则:
			A→α1|α2|…|αn则下面条件成立
			FIRST(αi)∩FIRST(αj)=Ф(i≠j)
上例中:
		FIRST(ab)∩FIRST(a)={a}∩{a}={a}≠Ф
改写方法:提取公共左因子
			A→δβ1|δβ2|…|δβn|γ1|γ2|…γm
	则:	A→δA′|γ1|γ2|…γm
			A′→β1|β2|…|βn
例如:<if语句>→ifEthenS1elseS2|ifEthenS1
	改写为:	<if语句>→ifEthenS1B′
				B′→elseS2|ε问题:若满足条件FIRST(αi)∩FIRST(αj)=Ф
		是否完全避免回溯呢?
上例中:S→cAd	A→ad|a
改写为:S→cAd	A→aA′A′→d|ε
输入符号w=cad匹配d可能失败,差条件
定义:非终结符号A的后继符号的集合:
		FOLLOW(A)={a|S=>…Aa…,α∈VT}
当S=>…A,则规定#∈FOLLOW(A)(#为界符)
条件二:若αi=>ε时,
		FIRST(αi)∩FOLLOW(A)=Ф
上例中:FIRST(d)∩FOLLOW(A′)={d}≠Ф
∴产生回溯小结:构造不带回溯的自上而下分析的条件是:
1.文法不含左递归
2.对文法中每一个非终结符A,如有规则:
		A→α1|α2|…|αn则下面条件成立
		FIRST(αi)∩FIRST(αj)=Ф(i≠j)
3.对文法中每一个非终结符A,若它的某个产生式首符集包含ε时,则:
		FIRST(A)∩FOLLOW(A)=Ф
满足以上条件的文法称为LL(1)文法。
		对于一个LL(1)文法,可以构造无回溯的自上而下分析。FIRST(α)的求法:(A→α是文法G的产生式)FOLLOW(A)的求法:(其中A是任一非终结符)例:已知文法G[S]:
	S→aSb|P		P→bPc|bQc	Q→Qa|a
消除文法左递归后是不是LL(1)文法?
解:消除文法左递归得到:
		S→aSb|P		P→bPc|bQc	
		Q→aQ′		Q′→aQ′|ε
	提取公共左因子后得文法:
	S→aSb|P	P→bP′		P′→Pc|Qc	
	Q→aQ′		Q′→aQ′|ε
计算FIRST和FOLLOW集合:
FIRST(S)={a,b}	FIRST(P)={b}	FIRST(P′)={a,b}
FIRST(Q)={a}	FIRST(Q′)={a,ε}
Follow(S)={b,#}	Follow(P)={b,c,#}Follow(P′)={b,c,#}Follow(Q)={c}	Follow(Q′)=
查看更多
单篇购买
VIP会员(1亿+VIP文档免费下)

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

编译原理第4章 语法分析 (2)

文档大小:571KB

限时特价:扫码查看

• 请登录后再进行扫码购买
• 使用微信/支付宝扫码注册及付费下载,详阅 用户协议 隐私政策
• 如已在其他页面进行付款,请刷新当前页面重试
• 付费购买成功后,此文档可永久免费下载
全场最划算
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专属身份标识

高级客服

一对一高级客服服务

多端互通

电脑端/手机端权益通用