编译原理 - SLR(1)
SLR(1)分析思想
1、SLR(1)能解决LR(0)问题前提:
- a)、若
LR(0)状态自动机
中所有要规约项的左部Follow(左部)
互不相交,则可以解决规约--规约
冲突 - b)、若
LR(0)状态自动机
中所有要规约项的的左部Follow(左部)
与所有要移进项的符号集
互不相交,则可以解决规约--移进
冲突
- a)、若
2、向前查看一个字符
- a)、若下一个输入的字符属于
规约式子
的非终结符的Follow集,则规约
- b)、若下一个输入的字符属于
移进式子
的下一字符,则移进
- a)、若下一个输入的字符属于
SLR(1)解决的问题
- 概念
- 当活前缀
自动机存
在规约--移进
冲突时,可以用SLR(1)解决部分规约--移进
冲突问题
- 当活前缀
案例
- 文法如下:
- 活前缀自动机如下:
- 可见,节点1、节点2和节点10存在规约–移进冲突
- 但是,因为节点1存在S→E.属于接受状态,故而不存在规约–移进冲突
- 所以,只有节点2、节点10存在规约–移进冲突
- 存在
规约--移进
冲突的节点如下: - 解决(
SLR(1)分析
): - 1、易于求得Follow(E),如下:
- 2、根据表达式的下一个字符决定是
移进
还是规约
- a)若下一个字符为Follow(E)集合的字符,则执行
规约
- b)若下一字符为*,则执行
移进
操作
- a)若下一个字符为Follow(E)集合的字符,则执行
- 3、根据自动机得到的SLR(1)的分析表为:
编译原理 - SLR(1)相关推荐
- [编译原理]SLR分析器
题目: 考虑简单算术表达式文法G: E→E + T | T T→T * F | F F→(E) | id 试设计SLR(1)或者LR(1)分析程序,以输入的 (a+b)*c+(d+e) 符号串进行语法 ...
- 编译原理实验:Java实现SLR(1)语法分析器
首先如果有熟悉Python的童鞋也可以看一看Python实现SLR(1)语法分析器,编译原理yyds!__FF_Y的博客-CSDN博客_python语法分析器,是我一个特别好的学长写的,这波属于传承了 ...
- [编译原理]构造LR分析器和SLR移进归约分析表
目录 目标 1.基础知识引入 1.1 文法 1.2 拓广文法 1.3 全部的项目集 2. 计算文法的LR(0)项目集的.识别活前缀的DFA 2.1 分析得到各个项目集 2.2 构建SLR分析表中的移进 ...
- 编译原理之LL(1) 、LR(0)、SLR、LR(1)、LALR文法的对比
原创 编译原理之LL(1) .LR(0).SLR.LR(1).LALR文法的对比 2018-01-12 21:42:09 棉花糖灬 阅读数 25323 收起 分类专栏: 那些有趣的知识 版权声明:本文 ...
- 编译原理——语法分析器(SLR)
编译原理--语法分析器(SLR) 识别语法结构: 变量声明(不含变量初始化) if单条件分支语句以及if else 双条件分支语句 for循环和while循环语句 赋值语句 ,四则运算,逻辑判断复合语 ...
- Python实现SLR(1)语法分析器,编译原理yyds!
Python实现SLR(1)语法分析器 实验课前一天晚上肝了个SLR语法分析器,当时还发朋友圈语法分析器和我晚上总得走一个,从第二天状态来看,应该是我们俩一起走了(笑 编写的时间比较仓促,所以代码有些 ...
- 学了编译原理能否用 Java 写一个编译器或解释器?
16 个回答 默认排序 RednaxelaFX JavaScript.编译原理.编程 等 7 个话题的优秀回答者 282 人赞同了该回答 能.我一开始学编译原理的时候就是用Java写了好多小编译器和 ...
- 编译原理(六)自底向上分析之LR分析法
自底向上分析之LR分析法 说明:以老师PPT为标准,借鉴部分教材内容,AlvinZH学习笔记. 基本概念 1. LR分析:从左到右扫描(L)自底向上进行规约(R),是规范规约,也即最右推导(规范推导) ...
- 我看过的编译原理方面的好文章
本文不定期更新,最后更新于2019-7-6 编译原理 编译原理三大经典书籍(龙书 虎书 鲸书) 前端为什么要会正则表达式 - 知乎 一次性搞懂JavaScript正则表达式之引擎 - 掘金 没有AST ...
最新文章
- 产品Backlog(Product Backlog)是什么?
- java缓存流速度与硬盘_系统学习 Java IO (九)----缓冲流 BufferedInputStream/BufferedOutputStream...
- MSFT Outlook VBA处理新邮件的方法
- 前端学习(2672):ts初步概念和功能实现
- VS2012和XE2013的关联和设置问题
- 光驱安装centos7系统过程_centos7可以ping通外网_可以ping通内网其他机器_但是其他机器就是ping不通centos7_太神奇了---linux工作笔记041
- linux三剑客应用到工作中,LINUX 三剑客老大(AWK) 日常工作总结(示例代码)
- 1059: [ZJOI2007]矩阵游戏 - BZOJ
- Typinator for mac(打字员)附注册码支持m1
- python筛选数据求均值_Python数据分析之从100万条数据中筛选出前100热门电影
- 数字图像处理理论课件(清华大学计算机科学与技术系)
- 存储器分类和硬盘缓存介绍
- 错误解决:java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: Failed to star
- win11右键新建没有txt文本文档记事本怎么办
- span标签的间距问题
- 实验十四 水下无线传感网协议仿真实验
- C语言输出平行四边形,菱形
- LeCo-121. 买卖股票的最佳时机
- android 各国时区
- HTML文字溢出显示省略号和鼠标放在文字上显示全部文字信息
热门文章
- vc++开发学习二(模态对话框和非模态对话框的创建和销毁)
- java.util 1.8_JDK1.8源码(四)——java.util.Arrays 类
- Mybatis与JDBC的对比超详细笔记
- java api apk_java-如何在APK文件中保护此API
- 二维数组求最小值_求一列中满足条件的最大最小值
- python3爬虫-1
- 缓存淘汰算法--LRU算法
- css的重置和原子类的使用
- Android开发---开发文档翻译
- 利用stringBuilder操作html文件