自底向上分析——LR方法
来源:互联网 发布:泰国移动4g网络制式 编辑:程序博客网 时间:2024/05/21 08:56
自底向上分析——LR方法
LR(k)表示在分析时要求向前看k个符号(即看输入流的前k个符号),以便唯一地确定分析动作。LR(k)一词来自:Left-to-right parse,Rightmost-derivation,k-token lookahead。LR分析主要有LR(0)分析法,SLR(1)分析法,LR(1)分析法以及SALR(1)分析法。
LR方法的思想:从输入流依次把符号移入到符号栈中,直至栈顶部中出现一个句柄;之后对句柄进行规约,直至栈顶部中不出现句柄为止;再重复上述过程,直至最终规约为一个开始符,且输入流为空。注意:真正的LR分析器并不用符号栈,而是用状态栈。LR分析法的主要动作是移入和归约。
增广文法:为处理方便,LR分析法通常要求文法的开始符不出现在任何产生式的右端。若不满足要求,则只需增加一条产生式:
基本概念
归约顺序:一个句型可有多个简单短语,因此,归约顺序可有多种。LR分析法采用用的是从左到右,即每次归约最左简单短语(称为句柄)的办法。也就是说,从左到右地扫描输入串,并且一旦出现一个简单短语,就立即进行归约(否则会出现倒退进行归约的不合理的现象)。
短语:称句型
简单短语:称句型αηβ中的η是一个简单短语,若有
句柄:一个句型中可能有多个简单短语,而句柄是其中最左的简单短语。是自底向上分析的核心动作归约的单位。
规范推导:称一个句型推导为规范推导,如果它是最右推导的。
规范句型:规范推导导出的句型。不一定每个句型都有规范推导。
规范归约:如果归约的是最左简单短语(句柄),则称其归约为规范归约(从左到右的归约)。规范推导和规范归约存在互逆的关系。
规范结论:如果给定句型是规范句型,则经规范归约后得到的仍是规范句型。
活前缀
规范前缀:称规范句型的前缀为规范前缀,如果其后部分不包含非终极符。显然,每个规范句型的前缀都是规范前缀。
活前缀:称一个规范前缀
α 不含简单短语;α 含一个简单短语,但其后没有符号。活前缀的含义:它表示至今被处理的终极符串部分在语法上是正确的。活前缀在分析格局中的逻辑关系如下图所示。它表示符号栈内容是活前缀
α ,符号栈内容和输入串连起来恰好形成规范句型(如果输入串是正确句子)。
- 自底向上分析——LR方法
- LR分析器,自下向上分析法
- 层次聚类——自底向上方法
- 自底向上分析Elasticsearch
- 文法分析小结:自底向上的分析方法和自顶向下的分析方法有哪些
- 语法分析之自底向上分析
- 自底向上分析网络体系结构
- 归并排序—自底向上和自顶向下
- 《数据结构与算法分析》详细对比自顶向下与自底向上红黑树——C实现自顶向下插入与删除
- 自底向上分析法与其他分析法
- 数据结构与算法分析(Java语言描述)(6)—— 归并排序(自底向上)
- 算法系列—自底向上归并排序
- 嵌入式工程师必知必会 —— 读书笔记2、自学自底向上的设计方法(小型嵌入式系统)
- 自底向上设计
- 自底向上设计
- 自底向上设计
- Fibonacci(自底向上)
- 自然语言理解-自底向上chart句法分析
- windows下 apache+php+mysql环境搭建
- myelipse的team没有提交等选项:
- Android硬件访问服务-JNI
- Mysql常用SQL语句集锦
- 20170723日常总结
- 自底向上分析——LR方法
- Codevs1074:食物链——题解
- 求解最长递增子序列的长度
- zoj3886(线段树,区间取模)
- 编码转换
- 频繁项挖掘-Apriori算法
- 《深入理解Java虚拟机》读书笔记(3)---第3章 垃圾收集器与内存分配策略(二)
- MySQL错误:删除数据库的时候报错ERROR 1010 (HY000)
- ThreadLocal