语法分析基本概念

语法分析的前提:对语言的语法结构进行描述,采用正规式和有限自动机描述和识别语言的单词符号, 用上下文无关文法来描述语法规则

语法分析的任务:分析一个文法的句子的结构

语法分析器的功能 :按照文法的产生式(语言的语法规则),识别输入符号串是否为一个句子(合式程序)

自下而上(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

语法分析--自上而下分析的基本问题相关推荐

  1. 语法分析-自上而下分析 知识总结

    语法分析-自上而下分析 基本思想 回溯与左递归 LL(1)文法 构建不带回溯的自上而下分析算法 消除文法的左递归性 克服回溯 1. FRIST集 2. 提取公共左因子 3. FOLLOW集 4. 构造 ...

  2. 编译原理复习(4)语法分析--自上而下分析

    语法分析--自上而下分析 语法分析器的功能 语法分析方法分类 自上而下分析法 自下而上分析法 LL(1)分析法 左递归的消除 消除回溯,提取公共左因子 求法,例FIRST(X): FOLLOW集构造方 ...

  3. 第五章 语法分析——自上而下分析

    一.知识总结 本章介绍自下而上语法分析方法.所谓自下而上分析法就是从输入串开始,逐步进行"归约",直至鬼月到文法的开始符号.或者说,从语法树的末端开始,步步向上"归约&q ...

  4. 语法分析—自上而下分析

    1.美图 2.位置 语法分析器的功能 语法分析的任务是分析一个文法的句子结构. 语法分析器的功能:按照文法的产生式(语言的语法规则),识别输入符号串是否为一个句子(合式程序). 语法分析的方法 不行 ...

  5. 编译原理 --- 语法分析概念,自上而下分析面临的问题以及如何消除左递归问题

    第一部分 --- 语法分析基本概念 1.上面这个箭头 --> 符号表示的意思是P被 α 定义 A是一个非终止符,γ是一个和α,β属于同一个集合的元素 1.一个双箭头符号表示的是直接推出,而一个双 ...

  6. 语法分析:自上而下分析(递归下降分析法+预测分析法)

    语法分析:自上而下分析 目录 语法分析:自上而下分析 知识背景 递归下降分析法 内容一:根据文法生成子程序 内容二:调用文法开始符号所对应的子程序 预测分析法 内容一:构造预测分析表 内容二:预测分析 ...

  7. 语法分析——自上而下

      衔接上一章的词法分析,这章就到了语法分析.语法分析大体上分了两种:自上而下和自下而上.这章的主要内容是前者,下一章会对后者进行介绍.其实学到了这里应该清楚语法分析和词法分析的关系了.在实际编译的过 ...

  8. 第四章 自上而下分析

    第四章 词法分析--自上而下分析 4.1语法分析器功能 语法分析是编译过程的核心部分. 它的任务是在词法分析识别出单词符号串的基础上,分析并判定程序的语法结构是否符合语法规则. 自上而下分析面临的问题 ...

  9. 【编译原理】自上而下分析与LL文法

    初入语法分析. 语法分析是编译原理的核心部分,这一点从语法分析在编译原理教科书中所占的篇幅可见一斑,不论是陈火旺老师的<编译原理>还是Ullman等人的"龙书".语法分 ...

最新文章

  1. python argparse库_Python的argparse库使用详解
  2. IOS 百度地图获取当前屏幕的经纬度
  3. TensorFlow:实战Google深度学习框架(二)实现简单神经网络
  4. 进入法院黑名单之后,买彩票中了500万还能领奖吗?
  5. PyCharm设置字体大小与颜色
  6. linux学习-将seafile启动脚本设置为开机启动服务
  7. 新浪微博MySQL优化的小结和反思 | 数据库专题02
  8. Linux下读写UART串口的代码
  9. 基于Echarts5实现的动态排序柱状图
  10. 开源无人机如何实现空对地框选撞击?
  11. 如何用OD的跟踪功能分析虚拟机保护
  12. OSChina 周四乱弹 —— 你从小继承了程序员基因
  13. 【手绘漫画】面试必考之图解逆转单链表/单链表逆序
  14. 地图导航中的路径规划算法(综述)
  15. Python中通过property实现属性的修改、删除、查看
  16. UI设计色彩趋势总结
  17. 华为南研所2015年面试经历总结
  18. 数据挖掘——机器学习
  19. GC日志可视化分析工具GCeasy和GCViewer
  20. 绘制半长轴和半短轴分别为a,b的椭圆

热门文章

  1. 大学生计算机PHP实训报告,大学生计算机实训心得体会
  2. 为什么需要Secondary Index
  3. 【图文详解】canvas插件安装方法及常用插件推荐
  4. 微软服务器dda,Windows 10 版本2004 微软官方原版镜像
  5. 基于layui图片管理器
  6. 网络知识基础篇(网络分层和IP地址)
  7. 分析基于Jsp+Servlet+JavaBean的个人信息管理系统的运行流程
  8. Python3.x 标准模块库目录(下篇)
  9. 前端异常监控平台对比
  10. HCIE课程笔记18-局域网二层技术