语法分析--自上而下分析的基本问题
语法分析基本概念
语法分析的前提:对语言的语法结构进行描述,采用正规式和有限自动机描述和识别语言的单词符号, 用上下文无关文法来描述语法规则
语法分析的任务:分析一个文法的句子的结构
语法分析器的功能 :按照文法的产生式(语言的语法规则),识别输入符号串是否为一个句子(合式程序)
自下而上(Bottom-up):从输入串开始,逐步进行归约,直到文法的开始符号,归约:根据文法的产生式规则,把串中出现的产生式的右部替换成左部符号,从树叶节点开始,构造语法树,算符优先分析法、LR分析法
自上而下(Top-down):从文法的开始符号出发,反复使用各种产生式,寻找"匹配"的推导,推导:根据文法的产生式规则,把串中出现的产生式的左部符号替换成右部,从树的根开始,构造语法树,递归下降分析法、预测分析程序
自上而下分析面临的问题
基本思想:从文法的开始符号出发,向下推导,推出句子,针对输入串,试图用一切可能的办法,从文法开始符号(根结点)出发,自上而下地为输入串建立一棵语法树
多个产生式候选带来的问题,
回溯问题:分析过程中,当一个非终结符用某一个候选匹配成功时,这种匹配可能是暂时的,出错时,不得不“回溯”
文法左递归问题: 一个文法是含有左递归的,如果存在非终结符P
- 面临的问题
- 文法左递归问题
- 回溯问题
- 构造不带回溯的自上而下分析算法
- 消除文法的左递归性
- 消除回溯
消除文法的左递归
直接左递归的消除
间接左递归的消除
消除左递归的算法
由于对非终结符排序的不同,最后所得的文法在形式上可能不一样。但不难证明,它们都是等价的
消除回溯
为了消除回溯必须保证:对文法的任何非终结符,当要它去匹配输入串时,能够根据它所面临的输入符号准确地指派它的一个候选去执行任务,并且此候选的工作结果应是确信无疑的
FIRST和FOLLOW集合的构造
FIRST集合
令G是一个不含左递归的文法,对G的所有非终结符的每个候选α定义它的终结首符集FIRST(α)为:
提取公共左因子
FOLLOW集合
L: 从左到右扫描输入串 L: 最左推导 1:每一步只需向前查看一个符号
FIRST和FOLLOW集合的构造
构造每个文法符号的FIRST集合
构造FOLLOW(A)
构造每个非终结符的FOLLOW集合
对最后的FIRST、FOLLOW集合有点迷,真的有点迷,晚上不该看这个的!!o(╥﹏╥)o
语法分析--自上而下分析的基本问题相关推荐
- 语法分析-自上而下分析 知识总结
语法分析-自上而下分析 基本思想 回溯与左递归 LL(1)文法 构建不带回溯的自上而下分析算法 消除文法的左递归性 克服回溯 1. FRIST集 2. 提取公共左因子 3. FOLLOW集 4. 构造 ...
- 编译原理复习(4)语法分析--自上而下分析
语法分析--自上而下分析 语法分析器的功能 语法分析方法分类 自上而下分析法 自下而上分析法 LL(1)分析法 左递归的消除 消除回溯,提取公共左因子 求法,例FIRST(X): FOLLOW集构造方 ...
- 第五章 语法分析——自上而下分析
一.知识总结 本章介绍自下而上语法分析方法.所谓自下而上分析法就是从输入串开始,逐步进行"归约",直至鬼月到文法的开始符号.或者说,从语法树的末端开始,步步向上"归约&q ...
- 语法分析—自上而下分析
1.美图 2.位置 语法分析器的功能 语法分析的任务是分析一个文法的句子结构. 语法分析器的功能:按照文法的产生式(语言的语法规则),识别输入符号串是否为一个句子(合式程序). 语法分析的方法 不行 ...
- 编译原理 --- 语法分析概念,自上而下分析面临的问题以及如何消除左递归问题
第一部分 --- 语法分析基本概念 1.上面这个箭头 --> 符号表示的意思是P被 α 定义 A是一个非终止符,γ是一个和α,β属于同一个集合的元素 1.一个双箭头符号表示的是直接推出,而一个双 ...
- 语法分析:自上而下分析(递归下降分析法+预测分析法)
语法分析:自上而下分析 目录 语法分析:自上而下分析 知识背景 递归下降分析法 内容一:根据文法生成子程序 内容二:调用文法开始符号所对应的子程序 预测分析法 内容一:构造预测分析表 内容二:预测分析 ...
- 语法分析——自上而下
衔接上一章的词法分析,这章就到了语法分析.语法分析大体上分了两种:自上而下和自下而上.这章的主要内容是前者,下一章会对后者进行介绍.其实学到了这里应该清楚语法分析和词法分析的关系了.在实际编译的过 ...
- 第四章 自上而下分析
第四章 词法分析--自上而下分析 4.1语法分析器功能 语法分析是编译过程的核心部分. 它的任务是在词法分析识别出单词符号串的基础上,分析并判定程序的语法结构是否符合语法规则. 自上而下分析面临的问题 ...
- 【编译原理】自上而下分析与LL文法
初入语法分析. 语法分析是编译原理的核心部分,这一点从语法分析在编译原理教科书中所占的篇幅可见一斑,不论是陈火旺老师的<编译原理>还是Ullman等人的"龙书".语法分 ...
最新文章
- python argparse库_Python的argparse库使用详解
- IOS 百度地图获取当前屏幕的经纬度
- TensorFlow:实战Google深度学习框架(二)实现简单神经网络
- 进入法院黑名单之后,买彩票中了500万还能领奖吗?
- PyCharm设置字体大小与颜色
- linux学习-将seafile启动脚本设置为开机启动服务
- 新浪微博MySQL优化的小结和反思 | 数据库专题02
- Linux下读写UART串口的代码
- 基于Echarts5实现的动态排序柱状图
- 开源无人机如何实现空对地框选撞击?
- 如何用OD的跟踪功能分析虚拟机保护
- OSChina 周四乱弹 —— 你从小继承了程序员基因
- 【手绘漫画】面试必考之图解逆转单链表/单链表逆序
- 地图导航中的路径规划算法(综述)
- Python中通过property实现属性的修改、删除、查看
- UI设计色彩趋势总结
- 华为南研所2015年面试经历总结
- 数据挖掘——机器学习
- GC日志可视化分析工具GCeasy和GCViewer
- 绘制半长轴和半短轴分别为a,b的椭圆