- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
内容回忆消除二义性消除左递归消除左因子递归下降预测分析〔递归下降子程序〕文法,状态迁移关系,EBNF,递归下降子程序下推自动机*1
3.4自上而下语法分析2非递归的预测分析不采用递归调用预测分析器的关键是如何选择一个非终结符的产生式非递归的预测分析器通过检查分析表来选择产生式〔表驱动的预测分析器〕a+b$输入缓冲区(被分析的符号串)预测分析程序分析表M输出流XYZ$栈(文法符号串)初始时栈中除了$以外,只含有文法的开始符号分析表是二维数组M[A,a]A为非终结符,a为终结符或者$
3a+b$输入缓冲区(被分析的符号串)预测分析程序分析表M输出流XYZ$栈(文法符号串)初始时栈中除了$以外,只含有文法的开始符号分析表是二维数组M[A,a]A为非终结符,a为终结符或者$PA3.4自上而下语法分析
分析器工作过程预测分析程序根据当前栈顶符号X和输入符号a决定分析器的动作〔4种情况〕如果X=a=$,分析器宣布分析成功并停机43.4自上而下语法分析a+b$输入缓冲区预测分析程序分析表M输出流XYZ$栈分析表是二维数组M[A,a]如果X=a?$,分析器弹出栈顶符号X,并推进输入指针,指向下一个输入符号如果X是终结符但不是a,那么分析器报揭发现语法错误〔调用错误处理〕如果X是非终结符,分析器访问分析表M,假设M[X,a]是X的产生式〔M[X,a]={X?UVW}〕,用UVW代替栈顶。如果M[X,a]提示错误,那么分析器调用错误恢复
5驱动器算法算法3.4非递归的预测分析输入 输入序列ω和文法G的预测分析表M输出 假设ω∈L(G),得到ω的一个最左推导;否那么指出一个错误方法 初始格局为:〔#S,ω#,分析器的第一个动作〕 令ip指向ω#中的第一个终结符,top指向S; loopx:=top^;a:=ip^; if x∈T then if x=a thenpop(x);next(ip); --匹配终结符 elseerror(1); endif; --出错:栈顶终结符不是a else if M[x,a]=X→Y1Y2...Yk thenpop(X);push(YkYk-1...Y2Y1); --展开非终结符 elseerror(2); endif; --出错:产生式不匹配 endif; exitwhenx=a=#; --分析成功 endloop;
预测分析表的构造非递归预测分析方法的特征是预测分析器与文法无关,所有预测分析器的驱动器都是相同的,而唯一不同的是预测分析表因此,所谓构造预测分析器,实际上就是构造给定文法的预测分析表63.4自上而下语法分析非终结符输入符号id+?...EE?TE?E?E??+TE?TT?FT?T?T???T???FT?FF?id
7栈输入输出$Eid?id+id$$E?Tid?id+id$E?TE?$E?T?Fid?id+id$T?FT?$E?T?idid?id+id$F?id$E?T??id+id$$E?T?F??id+id$T???FT?$E?T?Fid+id$$E?T?idid+id$F?id非终结符输入符号id+?...EE?TE?E?E??+TE?TT?FT?T?T???T???FT?FF?id预测分析器根据分析表检测输入id*id+id是否能有文法表达
83.4自上而下语法分析预测分析表的构造包括两局部1.首先根据文法构造两个集合,FIRST和FOLLOW2.然后根据两个集合构造预测分析表定义3.10文法符号序列α的FIRST集合为: FIRST(α)={a|α=*a...,a∈T},假设α=*ε,那么ε∈FIRST(α)定义3.11非终结符A的FOLLOW集合如下: FOLLOW(A)={a|S=*...Aa...,a∈T}, 假设A是某句型的最右符号,那么#∈FOLLOW(A)。通俗地讲,α的FIRST集合就是从α开始可导出的文法符号序列中的开头终结符。而A的FOLLOW集合,就是从开始符号可以导出的所有含A的文法符号序列中A之后的终结符。
例如:9L→E;L|εE→TE E→+TE|-TE|εT→FTT→*FT|/FT|mod
您可能关注的文档
- 一元一次方程讲评课.doc
- 一元一次方程应用题分类专题经典题目.doc
- 圆及圆的对称性教案(含垂径定理).docx
- 统计学原理第六章--动态数列.ppt
- 中国水资源的现状及其未来.doc
- SAS学习系列24.-逐步回归.docx
- 一次函数与反比例函数基础训练.doc
- 一年级上册20以内的进位加法单元测试2.doc
- 绿色食品其他农产品生产.ppt
- 罗浮山项目初步研判.ppt
- 2025-2026学年导游资格考试通关考试题库及答案详解【易错题】.docx
- 2025导游资格考试高频难、易错点题附参考答案详解【突破训练】.docx
- 2025-2026学年导游资格考试模拟题库及完整答案详解(易错题).docx
- 2025-2026学年度导游资格考试试题附参考答案详解(A卷).docx
- 2025导游资格考试综合提升测试卷带答案详解(综合卷).docx
- 2025-2026学年导游资格考试考试历年机考真题集附答案详解(模拟题).docx
- 导游资格考试能力提升B卷题库附完整答案详解【典优】.docx
- 2025-2026学年度导游资格考试题库及参考答案详解(基础题).docx
- 2025-2026学年导游资格考试考前冲刺练习试题带答案详解(实用).docx
- 2025-2026学年度导游资格考试考试综合练习含答案详解【B卷】.docx
文档评论(0)