(2017/3/20)现代编译原理C语言描述(虎书)chapter 3学习笔记
来源:互联网 发布:js倒计时5分钟代码 编辑:程序博客网 时间:2024/04/28 13:58
Section3.3: LR分析
- LL(k)分析技术的一个弱点是,它在仅仅看到右部的前k个单词时就必须预测要使用的是哪一个产生式
- 更有效的方法:LR(k)分析,它可以将这种判断推迟至已看到与正在考虑的这个产生式的整个右部对应的输入单词以后(多于k个单词)
- LR(k)代表从左至右分析、最右推导、超前查看k个单词
- 该分析器有一个栈和一个输入,输入中的前k个单词为超前查看的单词
- 移进:将第一个输入单词压入至栈顶
- 规约:选择一个文法规则X->ABC,依次从栈顶弹出C、B、A,然后从X压入栈
- 将栈和输入合并起来形成的一行总是构成一个最右推导
Section3.3.1: LR分析引擎
- 查看栈顶状态和输入符号,从而得到相应的工作
- sn:移进到状态n
- gn:转换到状态n
- rk:用规则k规约
- a:接收
- :错误(用表中的空项表示)
Section3.3.2:LR(0)分析器生成器
- 在实际中,编译器并不使用k>1的表,在一定程度上是因为这个表十分巨大,但更主要的是因为程序设计语言可以用LR(1)文法来描述
- LR(0)文法是一种只需查看栈就可进行分析的文法,它的移进/规约判断不需要任何超前查看
- 使用文法3-8来举例说明LR(0)分析器的生成过程
- 输入以S开始意味着它可能以产生式S的任何一个右部开始,状态1
- 文法规则与指出其右部位置的原点组合在一起称为项(item)
- 移进动作(shift action)
移进x:
移进一个左括号: - 转换动作(goto action)
- 规约动作(reduction action):closure and goto
- LR(0)分析器和分析表
Section3.3.3:SLR 分析器的生成
#####未完待续
0 0
- (2017/3/20)现代编译原理C语言描述(虎书)chapter 3学习笔记
- (2017/3/19)现代编译原理C语言描述(虎书)chapter 3学习笔记
- c语言程序设计现代方法(学习笔记)
- C语言程序设计—现代方法之Chapter 3 格式化输入输出(一)
- 《现代操作系统》学习笔记(2)之文件描述符(关键词:操作系统/文件描述符)
- Chapter 1 操作系统概述 上(现代操作系统笔记)
- Chapter 1 操作系统概述 下(现代操作系统笔记)
- R语言学习笔记3--描述统计
- 编译原理学习周入门教程--(3)文法和语言
- C语言学习笔记(3)
- C语言学习笔记系列(6)编译调试
- c语言学习笔记(10)编译器编译过程分析
- c语言学习笔记(12)条件编译使用分析
- C语言学习笔记---001C语言的介绍,编译过程原理,工具等
- 我的OpenCV学习笔记(21):C语言描述的OpenCV程序
- 《现代通信原理》学习(一)绪论
- 数据结构(C语言描述)
- C语言现代方法 书籍笔记
- onSaveInstanceState和onRestoreInstanceState方法
- 使用 WebRTC 广播 IP 摄像头视频流
- java多线程管理concurrent包用法详解
- mysql多台服务器数据同步
- 正确使用Volatile关键字
- (2017/3/20)现代编译原理C语言描述(虎书)chapter 3学习笔记
- graph
- Android中Dialog中自定义EditView导致软键盘无法弹出
- String 类的方法总结
- java 重定向和转发的区别
- 犹抱琵琶半遮面 三星手机S8将于月底发布
- mybatis处理数组集合等方法
- socket之聊天功能实现
- Android 属性动画 源码解析 深入了解其内部实现