- 1、本文档共95页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
本章小结 1、掌握FIRST集和FOLLOW集的计算方法; 2、掌握对文法改造方法(提取左公因子和左递归改右递归); 3、会判别文法是否是LL(1)文法(3个条件); 4、会编写递归下降分析程序; 5、会构造LL(1)分析表; 6、理解LL(1)分析流程。 * * * * * 若S为识别符号,则把“#”加入FOLLOW(S)中 令#∈FOLLOW(S) 若A∷=αBβ (β≠ε),则把FIRST(β)-{ε}加入FOLLOW(B) 若A∷=αB 或A∷=αBβ,且β?ε则把FOLLOW(A)加 入FOLLOW(B) * * * * -对改写后文法的每个非终结符号编写一个函数。 对于产生式 E→TE’ -用E1表示E’ E() { if(ch∈FIRST(TE’)) { T(); E1(); } else error(); } * * 对于产生式 E’→ +TE’|? -用E1表示E’ -E1() { if(ch==‘+’) { ch = getnextsymbol(); T(); E1(); } else if(ch∈FOLLOW(E’))return; else error(); } * 对于产生式 T→FT’ -用T1表示T’ T() { if(ch∈FIRST(FT’)) { F(); T1(); } else error(); } * 对于产生式T’→*FT’|? -用T1表示T’ T1 () { if(ch==‘*’) {ch = getnextsymbol(); F (); T1 (); } else if(ch∈FOLLOW(T’))return; else error(); } * * 对于产生式F→(E)|i F ( ) { if(ch==‘i’) ch = getnextsymbol(); else if(ch==‘(’) { ch = getnextsymbol(); E ( ); if(ch ==‘)’)ch = getnextsymbol(); } else error(); } * * * 递归分析程序的主程序 -假设开始符号对应的过程为S( ),则主程序为 { /*首先读入一个符号,以满 足约定*/ ch = getnextsymbol(); S( ); } * * 递归分析程序的运行 输入:i * i + i # T’ E’ i * i E T F T’ + F E’ ? T i F ? 调用 进入 返回 E→TE’ E’→+TE’|? T→FT’ T’→*FT’|? F→(E)|i * T’ ? FOLLOW(E)={#,)} FOLLOW(T)= {+,),#} FIRST(TE’)={(,i} FIRST(+TE’)={+} FIRST(ε)={ε} FIRST(FT’)={(,i} FIRST(*FT’) ={*} FIRST((E))={(} FIRST(i)={i} * 递归下降分析程序适合手工编写分析程序 -优点: 实现思想简单明了。程序结构和语法规则有直接的对应关系。 因为每个过程表示一个非终结符号的处理,添加语义加工工作比较方便。 需要书写程序的语言支持递归调用。 -缺点: 递归算法的实现效率低 处理能力相对有限 通用性差,难以自动生成 * 递归下降分析程序总结 1)编写文法,消除二义性; 2)消除左递归、提取左因子; 3)求FIRST集、FOLLOW集; 4)检查是不是 LL(1) 文法 若不是 LL(1),说明文法的复杂性超过自顶向下方法的分析能力 5)直接根据产生式设计相应的程序 * * TEST语言的递归下降分析实现 TEST语言的语法规则如下: 1)program→{declaration_liststatement_list} 2)declaration_list→declaration_listdeclaration_stat | ε 3)declaration_stat→int ID; 4)statement_list→statement_liststatement| ε 5)statement→ if_stat|while_stat|for_stat|read_stat |write_stat|command_stat |exp
您可能关注的文档
最近下载
- UG说课课件文档.ppt VIP
- 动词不定式的用法-三个和尚.pptx VIP
- 湖州师范学院2021-2022学年第1学期《高等数学(上)》期末考试试卷(A卷)及标准答案.pdf
- 国家社会科学基金项目2024年度课题指南.docx VIP
- 国家中小学智慧教育平台的应用培训.pptx VIP
- 幼儿园小班社会活动课件《我的家》.pptx VIP
- 初中英语《Unit1Willpeoplehaverobots》单元教学设计以及思维导图.pdf
- 2024年度国家社会科学基金项目课题指南2.pptx VIP
- GBT3098[GBT309812010,紧固件机械性能,螺栓螺钉和螺柱].pdf
- 景观设计基础教案.pdf VIP
文档评论(0)