- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Part4语法分析ppt
数据库原理与Oracle——SQL语言 Part4语法分析 授课:胡静 语法分析器的作用 以语法分析器为核心的编译器模型 语法分析器所处的位置 语法分析的例子 语法分析的类比 针对自然语言的语法分析: 识别一个句子是不是符合语法规范识别每一个成分的功能。 语法分析器的作用 接收词法分析器提供的记号串 检查记号串是否能由源程序语言的文法产生 用易于理解的方式提示语法错误信息,并能从常见的错误中恢复过来 语法分析器工作原理 语言的结构是用上下文无关文法描述的,因此,语法分析器的工作本质上就是按照文法的产生式,识别输入符号串是否为一个句子。 语法分析器是从左向右的扫描输入字符串,每次读入一个符号,并判断,看是否能从文法的开始符号出发推导出这个输入串。或者,从概念上讲,就是要建立一棵与输入串匹配的语法分析树。 语法分析器分类 通用的语法分析方法,用来分析任何文法,生成编译器时效率太低 编译器使用的语法分析方法—处理文法的一些子类 自顶向下(建立分析树)—LL文法,其分析器常用手工实现 自底向上(建立分析树)—LR文法,其分析器常利用自动生成工具构造 自顶向下分析面临的困难 自顶向下分析面临的困难 自顶向下分析的主旨是,对任何输入串,试图用一切可能的办法,从文法的开始符号(根结)出发,自顶向下的为输入串建立一棵语法树。 这种分析过程本质上是一种试探过程,是反复使用不同产生式谋求匹配输入串的过程。 自顶向下分析的一般方法是带“回溯”的。 自顶向下分析的简单例子 假定文法G[S],以及输入串x*y(记为α)。 S→xAy A→**|* 初始化: 第一步扩展 自顶向下分析的简单例子 假定文法G[S],以及输入串x*y(记为α)。 S→xAy A→**|* 第二步扩展: 回溯 自顶向下分析方法的特点 困难 我们希望通过读取下一个符号就确定要使用哪一个产生式。 S → E+S | E E → num | (S) 这样做很难,这个文法不能够通过向前看一个符号的自顶向下分析方法来进行语法分析 LL(1)分析法 自顶向下分析存在的问题及解决方法 左递归文法 消除直接左递归 消除直接左递归-提取左因子 消除直接左递归——改写成右递归 直接左递归的消除 消除左递归的算法 如果一个文法不含回路(形如P=+P的推导),也不含以ε为右部的产生式,那么执行下述算法将保证消除左递归(但改写后的文法可能含有ε为右部的产生式)。 消除左递归的算法 消除左递归的例子 回溯问题 消除回溯的途径 消除回溯、提取左因子 令G是一个不含左递归的文法,对G的所有非终结符的每个候选α定义它的终结首符集FIRST(α)为: FIRST(α)={a | α=*a…, a∈VT} 若α=*ε,则规定ε∈FIRST(α) FIRST(α)是α的所有可能推导的开头终结符或可能的ε 如果非终结符A的所有候选首符集两两不相交,即A的任何两个不同候选αi和αj FIRST(αi) ∩FIRST(αj)=Φ 那么当要求A匹配输入串时,A就能根据它所面临的第一个输入符号a,准确的指派某一个候选前去执行任务。这个候选就是那个终结首符集含a的α。 消除回溯、提取左因子 提取左因子的方法 假定A的规则是: A→δβ1 |δβ2 | … |δβn |γ1 |γ2 | … |γm (其中,每个γ不以δ开头) 那么这些规则可以改写为: A→δA’ |γ1 |γ2 | … |γm A’→β1 |β2 | … |βn 经过反复提取左因子,就能够把每个非终结符(包括新引进者)的所有候选首符集便成为两两不相交。我们为此要付出的代价是大量引进新的非终结符和ε产生式。 消除回溯的方法二 文法的两个条件 扩充的巴科斯范式 前面的巴科斯范式只用到了两个元符号“→”和“|” 扩充几个元语言符号: 用花括号{α}表示闭包运算α*。 用{α}n0表示α可任意重复0次至n次。{α}00={α}0=ε. 用方括号[α]表示{α}10,即表示α的出现可有可无(等价于α |ε)。 例如,通常的“实数”可定义为: decimal→[sign]integer.{digit}[exponent] exponent→E[sign]integer integer→digit[digit] sign→+ | - 递归下降分析程序的构造 当文法满足上述两个文法条件时,我们就可以为它构造一个不带回溯的自顶向下分析程序,这个分析程序是由一组递归过程组成的。每个过程对应文法的一个非终结符。这样的一个分析程序称为递归下降分析器。 递归下降分析程序构造 LL(1)分析法 LL(1)分析法 LL(1)分析法 LL(1)分析法 LL(1)分析法 LL(1)分析法 LL(1)分析法 LL(1)
您可能关注的文档
- 教师面试技巧之教学技能篇教学综合应变技能.doc
- 教师面试试讲技能之讲授技能讲授优缺点.docx
- 教师面试问题预测80后教师有什么优缺点.doc
- 教您“榨干”银行利息24万换存法一年多300多.doc
- 教您套坡屋面的定额.docx
- No Signposts in the Sea(高级英语(上)第十五课)ppt.ppt
- 教您如何从技术指标角度来选择一款优质调音台.doc
- 教您如何写好房源描述增加房源点击提高上户量.doc
- 教您如何减少相机的抖动.doc
- 教您如何治疗和预防鼻窦炎x.docx
- 2025年经济师考试真题解析专项试卷(含答案).docx
- 杭州市建德市下涯镇社区工作者招聘考试真题.docx
- 2025年甘肃省张掖市高三数学上册期中考试试卷及答案.docx
- 2025年甘肃省武威市九年级数学上册期中考试试卷及答案.docx
- 2025年广东省广州市七年级地理上册期中考试试卷及答案.docx
- 2025年经济师中级旅游经济管理模拟试卷(含答案).docx
- 2025年甘肃省张掖市高一英语上册期中考试试卷及答案.docx
- 2025年甘肃省武威市八年级生物上册期中考试试卷及答案.docx
- 杭州市建德市大洋镇社区工作者招聘考试真题.docx
- 杭州市建德市更楼街道社区工作者招聘考试真题.docx
原创力文档


文档评论(0)