编译原理手记07-LR分析法
来源:互联网 发布:英文翻译最好的软件 编辑:程序博客网 时间:2024/06/01 09:41
自上而上的语法分析是根据语法树的叶子节点来推回到树根的语法分析技术。这种由叶子到树根的推导叫做归约。
做个更进一步的解释,比如有一个最右推导E -> i1+i2,如果我们依次读入到i1、+、i2的话,就可以"推出"他们所组成的产生式的开始符E,这种最右推导的逆向过程就叫做归约。
理解了归约就明白了自下而上分析法的核心思想。
下面来讲解LR分析法,LR的意思是从左到右扫描输入,反向构造最右推导序列。
LR分析相比自上而下的语法分析,最重要的数据结构不是树,而是栈。我们用栈的栈顶元素来表示语法分析当前所处的状态,然后根据对输入串的扫描,不断改变栈顶存储的状态。下面给出了LR语法分析的模型:
LR分析器的工作流程就是:用栈顶标记的状态和当前输入串作为参数去查找分析表,然后根据查询的结果决定下一步的操作。
分析表由两部组成,分别是ACTION和GOTO:
ACTION决定分析器接下来执行的操作,查询ACTION可以得到4种结果
1. 移入 2. 归约 3. 确认 4. 报错
GOTO用来跳转到下一个状态,它接受两个参数,即GOTO(当前栈顶状态,当前输入串) -> 下一个状态
1 0
- 编译原理手记07-LR分析法
- LR(1)分析法 ---编译原理-----
- 编译原理LR分析法c++实现
- 编译原理-LR(0)分析法
- 编译原理实验——LR(0)分析法
- 【编译原理】自下而上的语法分析之LR分析法
- 编译原理(九) LR(0)文法分析法-算法描述
- 编译原理手记02-词法分析
- 编译原理 LR文法
- 编译原理 LR分析(主要是LR(0)分析)
- 编译原理(九) LR(0)文法分析法(算法描述和C++代码实现)
- 编译原理(九) LR(0)文法分析法(算法描述和C++代码实现)
- 编译原理之LR(0)分析算法的c实现
- JAVA语言实现编译原理的LR分析过程模拟
- 编译原理 LR(0)项目集规范族的构造 LR(0)分析表+分析语句 详解分析+代码
- 编译原理手记03-词法分析与符号表
- 编译原理与编译构造 LR文法
- 编译原理手记01-概要
- BOJ 2314 Going Home //二分图KM模板变形
- poj 3468..(存线段树个人模板(自敲)pushdown函数还不理解)
- 中国将取消农业非农业户口区分 全文
- C++ GDI+ DrawString 保存字符串文字为透明图片
- javascript中引用jquery写的图片放大跟随小实例
- 编译原理手记07-LR分析法
- JavaScript演示String对象
- http://www.cnblogs.com/kuangbin/p/3164106.html
- JFreeChart
- 华为编程大赛——阿姆斯特朗数
- wine字体
- Java Map 如何实现Key 的唯一性?
- select模型的使用
- ecside table row column 属性