




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第四章语法分析—自上而下分析
4.1语法分析器的功能4.2自上而下分析面临的问题4.3LL(1)分析法4.4递归下降分析程序构造(略)4.5预测分析程序4.6LL(1)分析中的错误处理(略)1§4.1语法分析器的功能1、任务:在词法分析识别出单词符号串的 基础上,分析并判定程序的语法 结构是否符合语法规则。2、语法分析器的地位:单词符号取下一单词符号语法分析树符号表词法分析器语法分析器编译程序后续部分源程序2§4.1语法分析器的功能3、本质:按文法的产生式,识别输入符 号串是否为一个句子。4、语法分析方法分类:
自上而下分析法 自下而上分析法 3§4.2自上而下面临的问题一、基本思想:1、自上而下:从文法的开始符号出发,向下 推导,推出句子2、主旨:对任何输入串,试图用一切可能的 办法,从开始符号出发,自上而下 地为输入串建立一棵语法树。4§4.2自上而下面临的问题二、举例: 自上而下方法的分析过程本质上是一种试探过程,是反复使用不同产生式谋求匹配输入串的过程。5§4.2自上而下面临的问题SxA
ySxAy**SxAy*例:文法SxAy A**|* 输入串α:x*y6§4.2自上而下面临的问题实现上述带回溯试探发的简单途径: 让每个非终结符对应一个递归子程序。每个这种子程序可作为一个布尔过程。一旦发现它的某个候选与输入串相匹配,就用这个候选去扩展语法树,并返回“真”值;否则,保持原来的语法树和IP值不变,并返回“假”值。7§4.2自上而下面临的问题三、困难和缺点1、文法的左递归性问题使自上而下的分析过程陷入无限循环2、回溯问题3、虚假匹配难以消除4、当最终报告分析不成功时,难于知道输入串中出错的确切位置5、采用了一种穷尽一切可能的试探法,效率很低,代价极高8§4.3LL(1)分析法一、左递归的消除:1、规则:(直接左递归消除)PPα|βPPα1|Pα2|…Pαm|β1|β2|…|βn PβP’ P’αP’|ℇ Pβ1p’|β2P’|…|βnP’ P’α1P’|α2P’|…|αmP’|ℇ9§4.3LL(1)分析法例题:已经文法:EE+T|T TT*F|F F(E)|iETE’E’+TE’|ℇTFT’T’*FT’|ℇF(E)|i10§4.3LL(1)分析法2、消除左递归:(1)把文法G的所有VN按任一种顺序排列成P1,P2,…,Pn;按此顺序执行;(2)FORi=1TonDo Begin Forj:=1Toi-1Do 把形如PiPjγ的规则改写成 Piδ1γ|δ2γ|…|δkγ 其中Pjδ1|δ2|…|δk是关 于Pj的所有规则; 消除关于Pi规则的直接左递归性 End11§4.3LL(1)分析法(3)化简由(2)所得的文法,即去除那些从开 始符号出发永远无法到达的非终结符的产 生规则例题:(间接左递归)已知文法G:SQc|c QRb|b RSa|a 试消除其左递归?解答12二、消除回溯,提取左因子§4.3LL(1)分析法1、消除回溯必须保证:
对文法的任何非终结符,当要它去匹配输入串时,能够根据它所面临的输入符号准确地指派它的一个候选去执行任务,并且此候选的工作结果应是确信无疑的。即:
若此候选获得成功匹配,那么,这种匹配决不会是虚假的; 若此候选无法完成匹配任务,则任何其它候选也肯定无法完成。13§4.3LL(1)分析法例:Aα1|α2|…|αn
设A所面临的第一个输入符号为a,若A能根据不同的输入符号指派相应的候选αi作为全权代表去执行任务,那就肯定无需回溯。在这里A已不再是让某个候选去试探性地执行任务,而是根据所面临的输入符号a准确地指派唯一的一个候选。14§4.3LL(1)分析法2、当不得回溯时,对文法有什么要求? ∀非终结符A的各个候选的首符集的交集均为空。分析:Aαfirst(α)={a|α⇒a…,a∈VT} 若α⇒ℇ,则规定ℇ∈first(α)即:first(α)是α的所有可能推导的开头终结符或可能的ℇ。此时,当要求A匹配输入串时,A根据它所面临的第一个输入符号a,准确地指派某一个候选前去执行任务;这个候选就是那个终结首符集含a的α. **15§4.3LL(1)分析法3、A、事实上,许多文法均存在这样的非终结符,其所有候选的终结首符集并非两两不相交。 例如:语句if条件then语句else语句 if条件then语句B、任何把一个文法改造成任何非终结符的所有 候选首符集两两不相交呢?提取公共左因子16§4.3LL(1)分析法代价:大量引进新的非终结符和ℇ_产生式例:Aδβ1|δβ2|…|δβn|γ1|γ2|…|γm (其中,每个γ不以δ开头)⇒ AδA’|γ1|γ2|…|γm A’β1|β2|…|βn经过反复提取坐因子,就能把每个非终结符(包括新引进者)的所有候选首符集变成两两不相交.17§4.3LL(1)分析法三、分析条件1、当一个文法不含左递归,并且满足每个非终结符的所有候选首符集两两不相交的条件,是不是就一定能进行有效的自上而下分析了呢?18§4.3LL(1)分析法例:文法 EE+T|T TT*F|F F(E)|i经消去直接左递归后变成 ETE’
E’+TE’|ℇ TFT’ T’*FT’|ℇ F(E)|iETE’FT’+E’ Ti ℇ ℇ
FT’
iℇ输入串:i+i; 如右图所示19§4.3LL(1)分析法2、由上分析是不是就意味着:当非终结符A面临输入符号a,且a不属于A的任意候选首符集,但A的某个候选首符集包含ℇ时,就一定可以使A自动匹配?分析:只有当a是在文法的某个句型中允许跟在A后的终结符时,才可能允许A自动匹配,否则,a在这里的出现是一种语法错误。20§4.3LL(1)分析法Follow(A)={a|A⇒…Aa…,a∈VT}若S⇒…A,则规定#∈follow(A)即:follow(A)是所有句型中出现在紧接A之后的终结符或“#”。当A面临输入符号a,且a∉first(A),但ℇ∈first(A),只有当a∈first(A)时,才可能允许A自动匹配。 **21§4.3LL(1)分析法3、构造不带回溯的自上而下分析的文法的条件:(1)文法不含左递归(2)文法中每一个非终结符A的各个产生式 的候选首符集两两不相交即:若Aα1|α2|…αn 则first(αi)∩first(αj)=Φ (i≠j)(3)对文法中的每个非终结符A,若它存在某个候 选首符集包含ℇ,则first(A)∩follow(A)=Φ若一个文法G满足以上条件,则称该文法G为LL(1)文法22§4.3LL(1)分析法4、对LL(1)文法,可对其输入串进行有效的无回溯的自上而下分析:Aα1|α2|…|αn对非终结符A进行匹配,此时面临的输入符号为a(1)若a∈first(αi),则指派αi去执行匹配任务(2)若a不属于任何一个候选首符计,则若ℇ∈first(αi
),且a∈follow(A),则让A与ℇ自动匹配否则,a的出现是一种语法错误23§4.5预测分析程序——即LL(1)分析法介绍一、构造First和Follow1、构造First(x),x∈VT∪VN连续使用下述规则,直至每一个集合First不再增大为止。规则:(1)若X∈VT,则FIRST(X)={X}。(2)若X∈VN,且有产生式Xa…,则把a加入到FIRST(X)中;若Xℇ也是一条产生式,则把ℇ也加到FIRST(X)中。24§4.5预测分析程序——即LL(1)分析法介绍(3)若XY…是一个产生式且Y∈VN,则把FIRST(Y)中的所有非ℇ—元素都加到FIRST(X)中;若XY1Y2…Yk是一个产生式,Y1,…Yi-1都是非终结符,而且,对于任何j,1≤j≤i-1,FIRST(Yj)都含有ℇ(即Y1…Yi-1⇒ℇ),则FIRST(Yi)中的所有非ℇ—元素都加到FIRST(X)中;特别是,若所有的FIRST(Yj)均含有ℇ,j=1,2,…,k,则把ℇ加到FIRST(X)中。*25§4.5预测分析程序——即LL(1)分析法介绍2、构造Follow(A),A∈VN连续使用下述规则,直至每一个集合Follow不再增大为止。规则:(1)对于文法的开始符号S,置#于FOLLOW(S)中;(2)若AαBβ是一个产生式,则把FIRST(β)\{ℇ}加至FOLLOW(B)中;(3)若AαB是一个产生式,或AαBβ是一个产生式而β⇒ℇ(即ℇ∈FIRST(β)),则把FOLLOW(A)加至FOLLOW(B)中。26§4.5预测分析程序——即LL(1)分析法介绍举例:对于文法EE+T|T;TT*F|F;F(E)|i我们可构造出每个非终结符的FIRST和FOLLOW集合:FIRST(E)={(,i} FOLLOW(E)={),#}FIRST(E’)={+,ℇ} FOLLOW(E’)={),#}FIRST(T)={(,i} FOLLOW(T)={+,),#}FIRST(T’)={*,ℇ} FOLLOW(T’)={+,),#}FIRST(F)={(,i} FOLLOW(F)={*,+,),#}27§4.5预测分析程序——即LL(1)分析法介绍二、构造分析表构造分析表M的算法是:(1)对文法G的每个产生式A执行第2步和第3步;(2)对每个终结符a∈FIRST(α),把Aα加至M[A,a]中;(3)若ℇ∈FIRST(α),则对任何Bfollow(A)把Aα加至M[A,b]中;(4)把所有无定义的M[A,a]标上“出错标志”。28§4.5预测分析程序——即LL(1)分析法介绍举例:文法EE+T|T;TT*F|F;F(E)|i的 LL(1)分析表如下所示i+*()#EETE’ETE’E’E’+TE’E’ℇE’ℇTTFT’TFT
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 云大考研复试题目及答案
- 2024食品质检员备考的注意事项及答案
- 六年级语文考试分析和答题技巧题及答案
- 古代文学史考试重要试题及答案
- 统计学中的数据编码与分析能力试题及答案
- 2024年汽车美容师行业创新技术试题及答案
- 旅游景区游客体验管理
- 2024年六年级语文提高策略试题及答案
- 2024年二手车评估师考试现场操作流程试题及答案
- 汽车美容师服务礼仪与沟通技巧试题及答案
- 基于PLC的自动灌溉控制系统设计-本科毕业设计
- 《节约与保护水资源作业设计方案-2023-2024学年初中地理商务星球版》
- Shangrila510呼吸机操作流程及要点说明
- 2024年4月贵州省高三年级适应性考试地理试卷
- (高清版)DZT 0073-2016 电阻率剖面法技术规程
- 2024年福建省2024届高三3月省质检(高中毕业班适应性练习卷)英语试卷(含答案)
- 新申请艾滋病筛查实验室验收指南
- 仓储设备操作安全操作培训
- 上海电机学院计算机C语言专升本题库及答案
- 2023年宁波房地产市场年度报告
- 员工身心健康情况排查表
评论
0/150
提交评论