




已阅读5页,还剩46页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
自顶向下的语法分析技术,计算机科学系,语法分析,阶段自词法分析后,编译过程的第二个阶段任务对单词序列进行分析,识别出合适的语法单位方法分类自顶向下自底向上,自顶向下分析方法,概念从开始符号出发,看能否推导出待检查的符号串,如果能,则表明此符号串是该文法的句型或句子,否则就不是。能否从根结点出发向下生长出一棵语法树,其叶结点组成的句子恰好为输入字符串。分类不确定的自顶向下分析方法确定的自顶向下分析方法,例子:不确定的自顶向下分析,GS:SaAbc|aBAbaBbeB|d输入串:abed是否是该文法的句子,特点,不确定的自顶向下分析出现回溯现象效率低编程复杂,例子:确定的自顶向下分析,GS:SaBc|bCdBeB|fCdC|c输入串:aefc是否是该文法的句子,例子,文法GS:SaA|dAbAS|判断W=abd,特点,确定的自顶向下分析不会出现回溯现象效率高编程简单,怎样才能采用确定的自顶向下分析?,怎样才能采用确定的自顶向下分析?LL1文法相关概念,首符号集,设有G=(VN,VT,P,S)是上下文无关文法产生式:AFIRST()=a|*a例子ABp|CtBrC9|23FIRST(Bp)=?,练习,已知文法GS:SeT|RTTDR|RdR|Da|bd则:FIRST(S)=FIRST(T)=FIRST(R)=FIRST(D)=,后跟符号集,设有G=(VN,VT,P,S)是上下文无关文法产生式:SAFOLLOW(A)=a|aFIRST()例子AdBCtBrC9|23FOLLOW(B)=,练习,已知文法GS:SeT|RTTDR|RdR|Da|bd则FOLLOW(R)=,选择集,对上下文无关文法的产生式A若不能推出,则SELECT(A)=FIRST()若能推出,则SELECT(A)=FIRST()-FOLLOW(A),狗的艺术照,狗的艺术照,狗的艺术照,狗的艺术照,狗的艺术照,狗的艺术照,狗的艺术照,狗的艺术照,LL1文法,基本思想从左到右扫描源程序,同时从开始符号生成句子的最左推导,并且只要向前查看一个输入符号,便能唯一确定当前应选择的规则。文法满足的条件无左递归无回溯LL1文法的含义L:从左到右扫描字符串L:采用最左推导1:只看右边一个字符,LL1文法的充分必要条件,一个上下文无关文法是LL1文法的充分必要条件是:对每个非终结符A的不同产生式,A,A满足FIRST(A)FIRST(A)=O对每个非终结符A的不同产生式,A,A满足FIRST(A)FOLLOW(A)=O,例子:文法的判别,若有文法GS:SaA|dAbAS|证明这是一个LL1文法证明:FIRST(SaA)FIRST(Sd)=FIRST(AbAS)FOLLOW(A)=,练习,若有文法GZ:Z(A)Aa|bBBAab判断这是否是一个LL1文法,练习,若有文法GS:SaAS|bAbA|判断这是否是一个LL1文法,不是LL1文法的原因,在采用确定的自顶向下分析前,首先判断该文法是否是一个LL1文法如果不是左公因子左递归,LL1文法的转换-提取左公因子,左公因子容易产生回溯提取左公因子法A1|2|nA(1|2|n)AAA=1|2|n,LL1文法的转换-消除左递归,文法的产生式中含有左递归,容易产生无限循环,应消除直接左递归AA间接左递归ABBA,例子(1),将文法SSaSb改为非左递归文法,答案,SbSSaS|,练习,【复旦大学】将文法GSSSa|Nb|cNSd|Ne|f改为无左递归的文法,确定的自顶向下分析技术,实现方法递归子程序法对每一个语法成分(用非终结符号代表)构成相应的分析子程序,以完成该非终结符所对应的语法成分的分析和识别任务。遇到该语法成分时,调用该程序。语法成分之间不可避免会含有递归,所以分析子程序间也会有递归调用。,子程序,子程序又分为简单子程序(不调用任何子程序)嵌套子程序(调用其它子程序;但不调用它本身)递归子程序(直接或间接调用它自身),递归分析的思想,递归下降分析器编译思想是简单的,从识别符号开始,在语法规则支配下进行语法分析,它逐个扫视源程序中的所有字符,根据文法和当前输入字符预测到下一个语法成份U时,便确定U为目标,并调用分析和识别U的子程序,在分析U的过程中,又有可能确立其它(或自身)子目标并调用相应子程序,如此继续下去。因此把这种分析方法称为面向目标的分析方法,在此又称它为预测分析方法。,例子:递归子程序法,文法S(A)|aAbAeA|dSAAdA|判断某输入字符串是否符合该文法,构造识别程序算法思路步骤1:判断该文法是否是LL1文法步骤2:对非终结符编写3个过程P(S)、P(A)、P(A),P(S),S(A)|aAbAeA|dSAAdA|,P(A),S(A)|aAbAeA|dSAAdA|,P(A),S(A)|aAbAeA|dSAAdA|,练习,词法分析和语法分析都是对字符串进行识别,二者有何区别?,答:在词法分析和语法分析中,都是对输入符号串进行识别。但词法分析的输入符号串是一个单词,而语法分析的输入符号串是一个句子或者说是一个程序。为讨论方便采用小写字母来表示终结符号,但一定要明白在词法分析中,小写字母表示组成单词的一个个字符;而在语法分析中,小写字母表示组成程序的一个个单词。从识别方式来说,词法分析和语法分析都是对输入符号串结构的识别,但由于单词和程序的结构有所区别,所以具体的识别方法不一样。,练习,自上而下的语法分析方法会带来的主要问题有()、()。,动物破产,回想当年,哥也是住豪宅的,动物破产,什么?我破产了?对不起,我震惊的厥过去了!,动物破产,神啊,让
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 昆明运输协管员招聘面试题及答案
- 空乘岗位面试题库及答案
- 科研人员面试题库及答案
- 安全教育培训评价制度课件
- 安全教育培训记录总结课件
- 家电数码市场发展方向
- 希望以上标题符合您的要求
- 社交媒体推广协议的条款
- 农业产业化龙头企业农业产业链可持续发展战略与带动效应研究报告
- 安全教育培训能力不足课件
- 2025-2026粤教粤科版(2024)科学三年级上册教学设计(附目录)
- 《鸿蒙应用开发项目教程》全套教学课件
- 2025年陕西省中考数学试题卷(含答案详解)
- 2025年注册计量师考试计量器具管理与维护试卷
- 国内公司外汇管理办法
- 高中数学教师学情分析现状的调查研究
- 起重作业安全知识考核试题(含答案)
- 第4课《古代诗歌四首》课件 2025-2026学年统编版语文七年级上册
- 肿瘤化疗静脉护理
- 就业创业政策解读课件
- 2025至2030年中国特种设备检验检测行业市场发展调研及竞争格局预测报告
评论
0/150
提交评论