ImageVerifierCode 换一换
格式:DOCX , 页数:34 ,大小:93.01KB ,
资源ID:14260676      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/14260676.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(语法分析自上而下分析Word下载.docx)为本站会员(b****1)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

语法分析自上而下分析Word下载.docx

1、从文法G的开始符号S出发,通过反复使用产生式,逐步推导出与输入的符号串完全相匹配的句子。采用最左推导,以文法开始符号为根结点,逐步为输入串自上而下地构造一棵语法树。面临的输入符号为a,A所有的产生式:A1 |2 | |n若aFISRT(i),则指派去执行匹配任务。若a不属于任何一个候选首字符集,则:a、若 属于某个FISRT(i)且aFOLLOW(A),则让A与自动匹配;b、否则,a的出现是一种错误。例:设有文法G和输入符号串W:a*a+a G:S aAa A BaA B + -*/推导过程: SaAaBaAa*aAa*aBaAa*a+aAa*a+a=W构造语法树: S a A B a A *

2、 B a A + 自上而下分析法自上而下分析法又可分为确定和不确定的两种。不确定的分析法(带回溯)是一种穷举的试探方法,效率低、代价高,极少使用。确定的分析法(不带回溯)实现方法简单、直观,便于手工构造或自动生成语法分析器,是目前常用的方法之一。但是对文法有一定的限制。2、自下而上分析法自下而上分析过程分析过程是归约过程。从给定的输入串W开始,不断寻找与文法G中某个产生式P的侯选式(右部)进行匹配,并用P代替也称为归约。自下而上分析法算符优先分析法定义算符(广义讲是文法的终结符号)之间的某种优先和结合关系,借助这种关系来寻找并确定可归约字符串,并进行归约。LR分析法是一类自左向右对输入串进行扫

3、描的自下而上分析方法,分析过程是规范归约的序列。适用于语法分析器的自动构造。 第二节 自上而下分析面临的问题一、不确定的自上而下分析方法 是从文法的开始S出发,试图用一切可能的方法向下推导,产生句子,这种分析过程的本质是一种试探推导过程。文法G S aAdA aba构造W=aad的最左推导:SaAdaad。 构造语法树:产生树的根结点,即文法的开始符号。选用文法G的文法规则去延伸树。判断当前延伸的子结与输入串扫描到的字符是否匹配。若不匹配注销掉当前延伸的子树,选用文法规则的另一个产生式延伸分析树。直到输入串与语法树末端结点相匹配,分析结束。 S S S a A d a A d a A d a

4、b a这种试探识别句子的过程,只会使分析的过程不确定。二、不确定性的原因由于分析过程中选择的侯选式不确定,造成输入串匹配的假象,甚至会导致算法实现的失败。1、左递归问题由于采用最左推导,左递归将使得输入串的分析过程陷入无限循环之中。2、回溯问题采用试探的方法,如匹配不成功回溯到前面分析的某一步。可能出现假匹配,造成对输入串识别的失败。不能准确报告输入串的出错位置。三、确定的自上而下分析方法1、确定的自上而下分析方法的必要条件消除文法中的左递归;消除文法中的回溯问题。2、消除文法的左递归 文法的左递归可以通过对文法产生式进行改写,使之不含有左递归的非终结符号。左递归一般有两种情况,直接左递归和间

5、接左递归。直接左递归如果文法中任意一个非终结符P,若PP(VNUVT),并且在最左推导中有PP形式,称为直接左递归。间接左递归在最左推导中有PP形式,称为间接左递归。消除直接左递归 PP | 改写为:PP P P 表达式文法 E E+T T E TEE +TE T T*F F T FTT *FTF (E) i消除文法的左递归一般规则PP1P2 Pm12 n i P1P2Pn P P1P2Pm P 消除间接左递归AB BC 间接左递归: ABCA CASQc|cQRb|bRSa|a最左推导:SQcRbcSabc(间接左递归)清除间接左递归非终结符排序为R,Q,S。R不存在直接左递归,把R代入Q的

6、规则:QSab | ab | b再把Q代入S:SSabc | abc | bc | c消除S的左递归:SabcS | bcS | cSSabcS | Q和R的产生式不再被引用,将Q和R删除。非终结符排序为S,Q,R。S不存在直接左递归,Q的产生式不包含S,再把S代入得到R:RRbca | bca | ca | a RbcaR | caR | aRRbcaR | SQc|c 不能删除QRb|b 不能删除 RbcaR|caR|aR| 3、消除回溯,提取左因子消除回朔文法G不包含左递归,则G中非终结符号的每个候选式首字符集FIRST()为:FIRST()=aa,aVT ,(VNUVT)*若,则 FI

7、RST()。提取最左公共因子采用提取最左公共因子的方法改写文法,使得所有侯选式的首字符集两两不相交。A12 n 12 m提取公因子:A(12 n) 12 m改写后为:AA 12 mA12 n 4、确定的自上而下分析方法预测分析法(LL(1)分析法)。递归子程序法。 第三节 预测分析法(LL(1)分析法)一、LL(1)分析方法 1、是按自左(第一个“L”)向右的顺序扫描输入字符串;2、在分析过程中产生句子的最左(第二个“L”)推导;3、 “1”表示在分析过程中,每一步推导,最多只能向前查看(向右扫描)一个字符。二、LL(K)分析方法如果分析过程的每一步推导,要向前查看K个输入字符,则称为LL(K

8、)分析法。三、LL(1)文法的定义该文法是上下文无关的一个子集,是自上而下分析技术的一类文法。四、LL(1)分析法的必要条件 1、文法中的非终结符号不包含左递归;2、对于文法中的每一个非终结符A的各个产生式的侯选首字符集两两不相交。对于产生式A:若 ,证明侯选式,的首字符集是否相交。FIRST()FIRST()= 若,证明FIRST(A)和FOLLOW(A)是否相交。FIRST(A)FOLLOW(A)=五、构造FIRST集合的算法 对每一文法符号X(VNUVT)* 1、若XVT ,则 FIRST(X)=X。2、若XVN ,且有产生式Xa,aVT,则aFIRST(X)。3、若XVN ,X,则FI

9、RST(X)4、若XVN ,且Y1,Y2,Yi VN,而有产生式X Y1,Yn。当Y1,Y2,Yi-1都时,(其中1in),则FIRST(Y1,)-,FIRST(Yi-1)-,FIRST(Yi)都包含在FIRST(X)中。若FIRST(Yj)包含把加到FIRST(X)中。例 文法GE TEE+TE|T FTT*FT|F(E)|iFIRST(E)=FIRST(T)=FIRST(F)=(,i )FIRST(E)= +,FIRST(T)= *,六、构造FOLLOW集合的算法 FOLLOW (A)=a | S.Aa. , a VT 若SA, 则 # FOLLOW (A)FOLLOW (A)为所有句型中

10、紧跟在非终结符A后面的所有终结符集合。构造算法:1、对文法开始符号S,将“#”置于FOLLOW(S)中。即FOLLOW(S) = # 。2、若A B 是一个产生式,则把FIRST()-加至FOLLOW(B)中。3、若A B是一个产生式,或AB 是一个产生式,而(即FIRST();则把FOLLOW(A)加至FOLLOW(B)中。 例 文法G求FOLLOW(E):因为 F(E) ,所以FIRST()加入FOLLOW(E)中,FOLLOW(E) = ) ;又因为ETE,E是文法的开始符号,则#加至FOLLOW(E)中,所以FOLLOW(E)= # U FOLLOW(E)= #,) 。 求FOLLOW

11、(E):因为ETE, 满足算法(3)若A B是一个产生式,则把FOLLOW(A)加至FOLLOW(B)中,所以FOLLOW(E)= FOLLOW(E)U FOLLOW(E)= #,) 求FOLLOW(T):因为ETE, 满足算法若A B 是一个产生式,则把FIRST()加至FOLLOW(B)中,所以FOLLOW(T) = FOLLOW(T) U FIRST(E)= +又因为E,满足算法(3)若AB 是一个产生式,而,则把FOLLOW(A)加至FOLLOW(B)中。所以FOLLOW(T) = FOLLOW(E) U FOLLOW(T)= #,) U += #,),+ 求FOLLOW(T):因为TFT,满足算法(3)若A B是一个产生式,则FOLLOW(T) = FOLLOW(T) U FOLLOW(T)求FOLLOW(F):因为TFT, 满足算法FOLLOW(F) =

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1