版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、1,编译原理,第四章 语法分析自上而下分析,2,第四章 语法分析自上而下分析,语法分析器的功能 自上而下分析面临的问题 LL(1)分析法 递归下降分析程序构造 预测分析程序,3,第四章 语法分析自上而下分析,语法分析器的功能 自上而下分析面临的问题 LL(1)分析法 消除文法的左递归 克服回溯 递归下降分析程序构造 预测分析程序,4,4.3.2 消除回溯、提左因子,为了消除回溯必须保证 对文法的任何非终结符,当要它去匹配输入串时,能够根据它所面临的输入符号准确地指派它的一个候选去执行任务,并且此候选的工作结果应是确信无疑的。 A 1 | 2 | | n,如何做到?,5,令G是一个不含左递归的文
2、法,对G的所有非终结符的每个候选定义它的终结首符集FIRST()为:,特别是,若 ,则规定FIRST()。,如果非终结符A的所有候选首符集两两不相交,即A的任何两个不同候选i和 j FIRST(i)FIRST( j) 当要求A匹配输入串时,A就能根据它所面临的第一个输入符号a,准确地指派某一个候选前去执行任务。这个候选就是那个终结首符集含a的。,6,提取公共左因子 假定关于A的规则是 A 1 | 2 | | n | 1 | 2 | | m (其中,每个 不以开头) 那么,可以把这些规则改写成 AA | 1 | 2 | | m A 1 | 2 | | n 经过反复提取左因子,就能够把每个非终结符
3、(包括新引进者)的所有候选首符集变成为两两不相交,7,ETE E+TE | TFT T*FT | F(E) | i i + i,4.3.3 LL(1)分析条件,8,i + i,IP,E,G(E): ETE E+TE | TFT T*FT | F(E) | i,#,9,i + i,IP,E,T,E,G(E): ETE E+TE | TFT T*FT | F(E) | i,#,10,i + i,IP,E,T,E,F,T,G(E): ETE E+TE | TFT T*FT | F(E) | i,#,11,i + i,IP,E,T,E,F,T,i,G(E): ETE E+TE | TFT T*FT |
4、 F(E) | i,#,12,i + i,IP,E,T,E,F,T,i,G(E): ETE E+TE | TFT T*FT | F(E) | i,#,13,i + i,IP,E,T,E,F,T,i,G(E): ETE E+TE | TFT T*FT | F(E) | i,#,14,i + i,IP,E,T,E,F,T,i,+,T,E,G(E): ETE E+TE | TFT T*FT | F(E) | i,#,15,i + i,IP,E,T,E,F,T,i,+,T,E,G(E): ETE E+TE | TFT T*FT | F(E) | i,#,16,i + i,IP,E,T,E,F,T,i,
5、+,T,E,F,T,G(E): ETE E+TE | TFT T*FT | F(E) | i,#,17,i + i,IP,E,T,E,F,T,i,+,T,E,F,T,i,G(E): ETE E+TE | TFT T*FT | F(E) | i,#,18,i + i,IP,E,T,E,F,T,i,+,T,E,F,T,i,G(E): ETE E+TE | TFT T*FT | F(E) | i,#,19,i + i,IP,E,T,E,F,T,i,+,T,E,F,T,i,G(E): ETE E+TE | TFT T*FT | F(E) | i,#,20,i + i,IP,E,T,E,F,T,i,+,
6、T,E,F,T,i,G(E): ETE E+TE | TFT T*FT | F(E) | i,#,21,i + i,IP,E,T,E,F,T,i,G(E): ETE E+TE | TFT T*FT | F(E) | i,S *T+,#,22,假定S是文法G的开始符号,对于G的任何非终结符A,我们定义A的FOLLOW集合,特别是,若 ,则规定 FOLLOW(A),4.3.3 LL(1)分析条件,23,构造不带回溯的自上而下分析的文法条件,1. 文法不含左递归 2. 对于文法中每一个非终结符A的各个产生式的候选首符集两两不相交。即,若 A 1| 2| n 则 FIRST( i)FIRST( j)
7、(ij) 3. 对文法中的每个非终结符A,若它存在某个候选首符集包含,则 FIRST( i)FOLLOW(A)= i=1,2,.,n 如果一个文法G满足以上条件,则称该文法G为LL(1)文法。,第一个L:从左到右扫描输入串 第二个L:最左推导 1:分析时每一步只需向前查看一个符号,24,对于一个满足上述条件的文法,可以对其输入串进行有效的无回溯的自上而下分析。假设要用非终结符A进行匹配,面临的输入符号为a,A的所有产生式为 A 1 | 2 | | n 1. 若aFIRST( i),则指派 i执行匹配任务; 2. 若a不属于任何一个候选首符集,则: (1) 若属于某个FIRST(i )且 aFO
8、LLOW(A), 则让A与自动匹配。 (2) 否则,a的出现是一种语法错误。,LL(1)分析法,25,如何构造FIRST和FOLLOW集合,26,构造FIRST(), = X, XVTVN = X1X2Xn, XiVTVN,27,构造FIRST(), = X, XVTVN = X1X2Xn, XiVTVN,28,对每一文法符号XVTVN构造FIRST(X) 连续使用下面的规则,直至每个集合FIRST不再增大为止: 1. 若XVT,则FIRST(X)X。 2. 若XVN,且有产生式Xa,则把a加入到FIRST(X)中;若X也是一条产生式,则把也加到FIRST(X)中。,构造每个文法符号的FIRS
9、T集合,29,3. 若XY是一个产生式且YVN,则把FIRST(Y)中的所有非-元素都加到FIRST(X)中; 若XY1Y2Yk是一个产生式,Y1,Yi-1都是非终结符, 对于任何j,1ji-1,FIRST(Yj)都含有(即Y1Yi-1 *), 则把FIRST(Yi)中的所有非-元素都加到FIRST(X)中 若所有的FIRST(Yj)均含有,j1,2,k,则把加到FIRST(X)中。,构造每个文法符号的FIRST集合,30,构造FIRST(), = X, XVTVN = X1X2Xn, XiVTVN,31,对文法G的任何符号串=X1X2Xn构造集合FIRST() 1. 置FIRST()FIRS
10、T(X1); 2. 若对任何1ji-1,FIRST(Xj),则把FIRST(Xi)加至FIRST()中;特别是,若所有的FIRST(Xj)均含有,1jn,则把也加至FIRST()中。显然,若则FIRST()。,构造任何符号串的FIRST集合,32,构造FOLLOW(A),33,对于文法G的每个非终结符A构造FOLLOW(A)的办法是,连续使用下面的规则,直至每个FOLLOW不再增大为止: 1. 对于文法的开始符号S,置于FOLLOW(S)中; 2. 若AB是一个产生式,则把FIRST()加至FOLLOW(B)中;,3. 若AB是一个产生式,或AB是一个产生式而 (即FIRST(), 则把FOL
11、LOW(A)加至FOLLOW(B)中。,构造每个非终结符的FOLLOW集合,34,例4.6 对于文法G(E) ETE E+TE | TFT T*FT | F(E) | i 构造每个非终结符的FIRST和FOLLOW集合,35,对每一文法符号XVTVN构造FIRST(X) 连续使用下面的规则,直至每个集合FIRST不再增大为止: 1. 若XVT,则FIRST(X)X。 2. 若XVN,且有产生式Xa,则把a加入到FIRST(X)中;若X也是一条产生式,则把也加到FIRST(X)中。 3. 若XY是一个产生式且YVN,则把FIRST(Y)中的所有非-元素都加到FIRST(X)中; 若XY1Y2Yk
12、是一个产生式,Y1,Yi-1都是非终结符, 对于任何j,1ji-1,FIRST(Yj)都含有(即Y1Yi-1 * ), 则把FIRST(Yi)中的所有非-元素都加到FIRST(X)中 若所有的FIRST(Yj)均含有,j1,2,k,则把加到FIRST(X)中。,构造每个文法符号的FIRST集合,36,对于文法G的每个非终结符A构造FOLLOW(A)的办法是,连续使用下面的规则,直至每个FOLLOW不再增大为止: 1. 对于文法的开始符号S,置于FOLLOW(S)中; 2. 若AB是一个产生式,则把FIRST()加至FOLLOW(B)中;,3. 若AB是一个产生式,或AB是一个产生式而 (即FIRST(), 则把FOLLOW(A)加至FOLLOW(B)中。,构造每个非终结符的FOLLOW集合,37,例4.6 对于文法G(E) ETE E+TE | TFT T*FT | F(E) | i 构造每个非终结符的FIRST和FOLLOW集合,FIRST(E) =(,i FIRST(E
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年度执业护士资格考试专业实务同步检测模拟试卷及答案详解
- 2026年etf考试题库及答案详解
- 2026年温岭公务员考试题库及答案详解
- 2026年大专单招常识题库及答案详解
- 2026年衬衫工艺测试题库及答案详解
- 2026年中级会计职称中级会计实务测试模拟试卷(II卷)及答案详解
- 2026年北京寒假考试题库及答案详解
- 2026年钢结构考试题库及答案详解
- 2026年特食抽查考核保健食品题库及答案详解
- 2026年初级护士考试题库及答案详解
- 固体废物贮存场所建设规范
- 产时电子胎心监护判读和管理:2025年美国妇产科医师学会临床实践指南解读
- 学校总务处管理制度汇编
- 排水管网勘察测绘方案
- 2025-2026学年浙教版(新教材)初中科学八年级第二学期教学计划附进度表
- (完整版)钢箱梁工程监理实施细则
- 山地清山合同范本
- 电视台导演岗位面试题目与解析
- 安全联锁保护系统管理制度
- 幼儿园大班语言《泡泡变成包》课件
- 计算机软件与理论复试面试题及答案
评论
0/150
提交评论