SLR(1)分析思想

  • 1、SLR(1)能解决LR(0)问题前提:

    • a)、若LR(0)状态自动机中所有要规约项的左部Follow(左部)互不相交,则可以解决规约--规约冲突
    • b)、若LR(0)状态自动机中所有要规约项的的左部Follow(左部)与所有要移进项的符号集互不相交,则可以解决规约--移进冲突
  • 2、向前查看一个字符

    • a)、若下一个输入的字符属于规约式子的非终结符的Follow集,则规约
    • b)、若下一个输入的字符属于移进式子的下一字符,则移进

SLR(1)解决的问题

  • 概念

    • 当活前缀自动机存规约--移进冲突时,可以用SLR(1)解决部分规约--移进冲突问题

案例

  • 文法如下:
  • 活前缀自动机如下:
  • 可见,节点1、节点2和节点10存在规约–移进冲突
  • 但是,因为节点1存在S→E.属于接受状态,故而不存在规约–移进冲突
  • 所以,只有节点2、节点10存在规约–移进冲突
  • 存在规约--移进冲突的节点如下:
  • 解决(SLR(1)分析):
  • 1、易于求得Follow(E),如下:
  • 2、根据表达式的下一个字符决定是移进还是规约
    • a)若下一个字符为Follow(E)集合的字符,则执行规约
    • b)若下一字符为*,则执行移进操作
  • 3、根据自动机得到的SLR(1)的分析表为:

编译原理 - SLR(1)相关推荐

  1. [编译原理]SLR分析器

    题目: 考虑简单算术表达式文法G: E→E + T | T T→T * F | F F→(E) | id 试设计SLR(1)或者LR(1)分析程序,以输入的 (a+b)*c+(d+e) 符号串进行语法 ...

  2. 编译原理实验:Java实现SLR(1)语法分析器

    首先如果有熟悉Python的童鞋也可以看一看Python实现SLR(1)语法分析器,编译原理yyds!__FF_Y的博客-CSDN博客_python语法分析器,是我一个特别好的学长写的,这波属于传承了 ...

  3. [编译原理]构造LR分析器和SLR移进归约分析表

    目录 目标 1.基础知识引入 1.1 文法 1.2 拓广文法 1.3 全部的项目集 2. 计算文法的LR(0)项目集的.识别活前缀的DFA 2.1 分析得到各个项目集 2.2 构建SLR分析表中的移进 ...

  4. 编译原理之LL(1) 、LR(0)、SLR、LR(1)、LALR文法的对比

    原创 编译原理之LL(1) .LR(0).SLR.LR(1).LALR文法的对比 2018-01-12 21:42:09 棉花糖灬 阅读数 25323 收起 分类专栏: 那些有趣的知识 版权声明:本文 ...

  5. 编译原理——语法分析器(SLR)

    编译原理--语法分析器(SLR) 识别语法结构: 变量声明(不含变量初始化) if单条件分支语句以及if else 双条件分支语句 for循环和while循环语句 赋值语句 ,四则运算,逻辑判断复合语 ...

  6. Python实现SLR(1)语法分析器,编译原理yyds!

    Python实现SLR(1)语法分析器 实验课前一天晚上肝了个SLR语法分析器,当时还发朋友圈语法分析器和我晚上总得走一个,从第二天状态来看,应该是我们俩一起走了(笑 编写的时间比较仓促,所以代码有些 ...

  7. 学了编译原理能否用 Java 写一个编译器或解释器?

    16 个回答 默认排序​ RednaxelaFX JavaScript.编译原理.编程 等 7 个话题的优秀回答者 282 人赞同了该回答 能.我一开始学编译原理的时候就是用Java写了好多小编译器和 ...

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

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

  9. 我看过的编译原理方面的好文章

    本文不定期更新,最后更新于2019-7-6 编译原理 编译原理三大经典书籍(龙书 虎书 鲸书) 前端为什么要会正则表达式 - 知乎 一次性搞懂JavaScript正则表达式之引擎 - 掘金 没有AST ...

最新文章

  1. 产品Backlog(Product Backlog)是什么?
  2. java缓存流速度与硬盘_系统学习 Java IO (九)----缓冲流 BufferedInputStream/BufferedOutputStream...
  3. MSFT Outlook VBA处理新邮件的方法
  4. 前端学习(2672):ts初步概念和功能实现
  5. VS2012和XE2013的关联和设置问题
  6. 光驱安装centos7系统过程_centos7可以ping通外网_可以ping通内网其他机器_但是其他机器就是ping不通centos7_太神奇了---linux工作笔记041
  7. linux三剑客应用到工作中,LINUX 三剑客老大(AWK) 日常工作总结(示例代码)
  8. 1059: [ZJOI2007]矩阵游戏 - BZOJ
  9. Typinator for mac(打字员)附注册码支持m1
  10. python筛选数据求均值_Python数据分析之从100万条数据中筛选出前100热门电影
  11. 数字图像处理理论课件(清华大学计算机科学与技术系)
  12. 存储器分类和硬盘缓存介绍
  13. 错误解决:java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: Failed to star
  14. win11右键新建没有txt文本文档记事本怎么办
  15. span标签的间距问题
  16. 实验十四 水下无线传感网协议仿真实验
  17. C语言输出平行四边形,菱形
  18. LeCo-121. 买卖股票的最佳时机
  19. android 各国时区
  20. HTML文字溢出显示省略号和鼠标放在文字上显示全部文字信息

热门文章

  1. vc++开发学习二(模态对话框和非模态对话框的创建和销毁)
  2. java.util 1.8_JDK1.8源码(四)——java.util.Arrays 类
  3. Mybatis与JDBC的对比超详细笔记
  4. java api apk_java-如何在APK文件中保护此API
  5. 二维数组求最小值_求一列中满足条件的最大最小值
  6. python3爬虫-1
  7. 缓存淘汰算法--LRU算法
  8. css的重置和原子类的使用
  9. Android开发---开发文档翻译
  10. 利用stringBuilder操作html文件