1、 LR分析器

解释:
分析栈包括符号栈和相应状态栈
分析表包括ACTION表和GOTO表
Ⅰ动作表元素action[Si,aj] 表示当前栈顶状态为S,输入符号为a时所执行的动作。有四种情况:S(移进),r(归约),acc(接受),error(出错)。
Ⅱ状态转换表元素goto[Si,xj] 表示当前栈顶状态为S,文法符号为x时应转入的状态。
所有LR分析器的总控(驱动)程序都一样,区别他们的是分析表。

工作原理:是在总控程序的控制下,从左到右扫描输入符号串,根据分析栈中的状态和文法及当前输入符号,按分析表完成相应的分析工作。

2.LR分析过程
当我们已经具备了LR分析器,来看看它是怎样工作的吧!
(1) 让初始状态S0进状态栈,句子的左界符#进符号栈。
(2) 句子除去左界符的部分为输入符号,根据输入符号和状态栈栈顶元素,再查动作表,执行相应动作。
移进:S下面会有个下标,代表不同的状态,查动作表查到S,则Si进状态栈,输入符号进符号栈。
归约:r下面也有个下表,代表不同的产生式,查动作表查到r,则按ri代表的产生式进行规约,即符号栈里产生式右边的弹栈,再将产生式左边的压进符号栈。注意,此时要查状态转换表了,goto[Si-n,xj]中n表示产生式右边符号串的长度,xj对应此时符号栈栈顶元素。然后原Si,Si-1,Si-n+1和xj都要弹栈,查表查到的Si(表中可能只会显示i)进栈。
接受:查动作表查到acc则表明分析成功,停止分析。
出错:查动作表查到空白,则报告出错信息。

我们用到GOTO表iff在ACTION表中查到reduce(归约)

  1. 自底向上分析法的关键问题=>确定句柄=>求可归前缀

最左规约作为规范规约,我们容易观察到用哪个产生式规约完全取决于当前句型的前部

可归前缀:每次采取归约动作前的符号串部分(识别它就是LR分析法的关键)

活前缀:规范句型中形成可归前缀之前包括可归前缀的所有前缀

可归前缀是句柄在后端的活前缀

对任何一个上下文无关文法,只要能构造出它的识别可归前缀的有限自动机,就可以构造其相应的分析表。

LR分析法从理解到运用相关推荐

  1. 编译原理教程_6 LR分析法

    文章原稿 https://gitee.com/fakerlove/fundamentals-of-compiling 文章目录 6. LR分析法 6.1 简介 (1)LR分析法的优缺点 (2)分析表的 ...

  2. lr1分析器c语言实验报告怎么写,编译原理课程的设计构造LR分析法语法分析器.doc...

    编译原理课程的设计构造LR分析法语法分析器 太 原 学 院 课程设计报告书 课程名称 设计题目 构造LR(0)分析法语法分析器 专业班级 学 号 姓 名 指导教师 2016年 12 月 15日 目 录 ...

  3. 编译原理(六)自底向上分析之LR分析法

    自底向上分析之LR分析法 说明:以老师PPT为标准,借鉴部分教材内容,AlvinZH学习笔记. 基本概念 1. LR分析:从左到右扫描(L)自底向上进行规约(R),是规范规约,也即最右推导(规范推导) ...

  4. 编译原理:语法分析实验(LR分析法)

    语法分析实验 一.实验目的 根据LR分析法的原理,对指定文法构造识别活前缀的DFA,做出相应的LR分析表,并编程实现相应的语法分析程序.或根据预测分析法的原理,对指定文法构造预测分析表,并编程实现相应 ...

  5. 【编译原理笔记06】语法分析,移入-归约分析:自底向上的分析,LR(0)分析法,LR(0)分析表的构建(基于自动机)

    本次笔记内容: 4-8 自底向上的分析概述 4-9 LR分析法概述 4-10 LR0分析 4-11 LR0分析表构造 本节课幻灯片,见于我的 GitHub 仓库:第6讲 语法分析_3.pdf 本节课介 ...

  6. 编译原理学习笔记(六)~LR分析

    LR分析法 概念:LR文法(Knuth,1963)是最大的.可以构造出相应移入归约语法分析器的文法类 名词解释: L:对输入进行从左到右的扫描 R:反向构造出一个最右推导序列 LR(k)分析:需要向前 ...

  7. 最全!最完整的递归下降分析法代码!!! (实验报告,代码)

    根据某一文法编制调试递归下降分析程序,以便对任意输入的符号串进行分析.本次实验的目的主要是加深对递归下降分析法的理解. 程序要求: 程序输入/输出示例: 对下列文法,用递归下降分析法对任意输入的符号串 ...

  8. 编译原理 LR分析(主要是LR(0)分析)

    一.LR分析的基本原理 1.LR分析的基本思想 LR方法的基本思想就是,在规范归约的过程中,一方面要记住已移进和归约出的整个字符串,也就是说要记住历史:一方面能够根据所用的产生式的推测未来可能碰到的输 ...

  9. 数学建模模型学习(1)--层次分析法

    前面我已经写了两篇博客,是关于matlab基础的,如果没有matlab基础,对于后面这些文章的代码来计算会比较吃力. (一)matlab常用基本语法和函数总结 (二)用matlab求得矩阵的最大特征值 ...

最新文章

  1. python22期自动化-Day2
  2. WCF(学习笔记)【参见WCF教程】
  3. Linux 下搭建 Java Web 开发环境
  4. excel二极管伏安特性曲线_从交流电转直流电出发调研二极管的使用
  5. vmware:Cannot open the disk 'XXX' or one of the snapshot disks it depends on.
  6. centos配置java环境变量_【开发笔记】-CentOS配置Java环境变量
  7. 【Matlab】建立最优控制LQR控制器模型
  8. 深度森林DF21、deep forest、gcForest
  9. badbody下_badboy下载_badboy测试工具2.0.5官方免费版 - 系统之家
  10. CNNIC中国互联网络发展状况统计报告
  11. 软件文档的作用和分类
  12. 概率论笔记4.1.4数学期望的性质/条件期望
  13. python批量打印_python 批量打印PDF
  14. python生成热度图_Python - 场景热力图绘制[转]
  15. Maven导入jar包失败问题,lastUpdated问题解决
  16. 阅读源码-理解torch.utils.data、torch.utils.data.Dataset、torch.utils.data.DataLoader的工作方式
  17. ChinaJoy现场展示
  18. python3爬取网易云歌单数据清洗_实例 | 使用网易云音乐数据演示数据整合与数据清洗...
  19. axios是干什么的
  20. 映美Jolimark FP-650K 打印机驱动

热门文章

  1. 从理论到实践 全面理解HTTP/2
  2. centos6 搭建heartbeat
  3. 查看CentOS的网络带宽出口
  4. BZOJ1315 : Ural1557Network Attack
  5. 我常用的那些linux命令
  6. java image filters[02]-过滤器初探
  7. iOS 应用发布到AppStore流程
  8. iOS之runtime详解api(三)
  9. Python之机器学习K-means算法实现
  10. 什么是POM maven