搜索
查看
编辑修改
首页
UNITY
NODEJS
PYTHON
AI
GIT
PHP
GO
CEF3
JAVA
HTML
CSS
搜索
IT小白
这个屌丝很懒,什么也没留下!
关注作者
热门标签
jquery
HTML
CSS
PHP
ASP
PYTHON
GO
AI
C
C++
C#
PHOTOSHOP
UNITY
iOS
android
vue
xml
爬虫
SEO
LINUX
WINDOWS
JAVA
MFC
CEF3
CAD
NODEJS
GIT
Pyppeteer
article
热门文章
1
Flink DataSource介绍
2
【VUE项目实战】16、主页Header和左侧菜单栏布局_vue3实现header和侧边菜单栏
3
GLM-4
4
二叉树的创建和基本操作(详解)
5
Java集成ElasticSearch及配置类工具类整理_java es配置和util
6
SOA方法—商业银行应用架构变革之路_soa银行攻略
7
面试AI岗,为什么我在100人中拿到了唯一年薪70万的offer?
8
数据中心液冷及冷却液行业分析:算力提升驱动,氟化液迎来机遇
9
Jenkins配置gitlab仓库时,提示“Failed to connect to repository : returned status code 128”_repo: error: "git" failed with exit status 128
10
@PostMapping注解解析
当前位置:
article
> 正文
编译原理复习——语法分析(自底向上)_lr分析法自底向上规约可找出出错的地方
作者:IT小白 | 2024-04-29 12:58:54
赞
踩
lr分析法自底向上规约可找出出错的地方
方法描述
自左向右逐个扫描输入串,一边把输入符号
移进
分析栈
,一边检查位于栈顶的一串符号是
否与某个产生式的右部相同,如果相同,就把
栈顶的这串符号
归约
为左部的非终结符;如果
不同,则继续移入输入符号,进行判断。上述
过程一直重复到
输入串结束
,栈内
恰好为
S
。
归约
自底向上分析法是“移进
—
归约”法
①移进
——读入一单词并压入栈内,指针下移一位
②归约
——检查栈顶若干符号是否为分析表中产生式右部,
若是,用左部替换
③识别成功
——栈内为文法开始符号,指针指向#
④其他出错
自底向上分析的思路
在自左向右移进输入串的过程中,一旦发现
栈
顶呈现可归约串
就立即归约。
所以自底向上分析的中心问题是:
怎么判断栈顶符号串的可归约性和
如何归约
句柄的另一种定义
:
句型的句柄是和某产生式右部匹配的子串,并且,
把它归约成该产生式左部的非终结符代表了
最右推
导过程的逆过程
的一步
规范规约
假定
α
是文法
G
的一个句子,称序列
α
n
,
α
n
-
1,
… α
0
是
α
的一个规范归约,则此序列满足:
α
n
=
α
α
0
为文法开始符,即
α
0
=
S
对任何
i
,
0<i≤n,
α
i
-
1
是从
α
i
经把
句柄
替换为
相应
产生式
的
左部
符号而得到的
最右推导的逆过程
等价于
最左归约
等价于
规范归约
在求解语法分析自顶向下分析中我们采用的是LL(1)分析,那么在语法分析自底向上分析中我们采用的是LR(1)分析。
LR(K)
L
:
自左向右扫描输入串
R
:
最右推导的逆过程
(
规范归约,最左规约
)
K
:
向右查看
输入串符号的个数
(K
省略时
,
表
示
K
等于
1
,
当
K=1
时,能满足当前绝大多数
高级语言编译程序的需要
)
LR
分析过程是规范归约过程
LR
分析法的特点
LR
分析器(程序)基本上
可以识别所有
上下
文无关文法写的编程设计语言的结构,分析能
力强且适用范围广
LR
分析法是当前
最一般
“
移进
-
归约
”分析方
法
LR
分析法在
自左向右
扫描输入串时能发现其
中错误,并能
指出出错地点
LR
分析程序可以自动生成
LR
分析表的分类
LR(0)
:最简单分析表,分析表的局限性大
,
是
其它
LR
分析法的
基础
SLR(1)
:简单分析表,分析表稍有局限性,
但较易实现
LR(1)
:分析表能力最强,但代价过高
LALR(1)
:称为向前看
LR
分析表,分析表能
力介于
SLR(1)
和
LR(1)之
间,适用于大多数程
序设计语言的结构,并且可以比较有效地实现
说明:四种分析表对应四类文法
LR
分析方法的基本思想
LR
分析器的每一步工作都是由
栈顶状态
和
现
行输入
符号
所唯一决定的。
一个
LR
分析器实质上是一个
DFA
S是移进操作 r是规约操作 GOTO则是状态转换的操作当一个状态遇到了非终结符是会进行GOTO
下面是一个LR分析表来举一下例子:
最后我们也是希望通过学习得到这样的一个分析表来实现
我们看到有两个部分一个是ACTION部分还有一个是GOTO状态转换部分
Action[s
n
, a
i
]:
当前状态
s
n
面对输入符号
a
i
时采叏的动作
(1) 移进 –
s
j
(2) 归约 –
r
j
(3) 接受 –
acc
(4) 报错 –
空白 / ‘出错’ / ‘error’ 一般都是空白
(1)
移进
–
Action[s
n
, a
i
] =
s
j
把现行输入符号
a
i
和下一状态
j
分别移进状态栈和符号栈
状态栈和符号栈的个数是一样的
GOTO
[ s
n
,
a
i
]
=
j
(2)
归约
-
Action[s
n
, a
i
] =
r
j
用第
j
条产生式
A→
β
归约
.
|β| =r
(3)
接受
–
Action[s
n
, a
i
] = acc,
宣布分析成功
(4)
报错
–
Action[s
n
, a
i
] =
空白,出错标识,报错
例子:
声明:
本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:
https://www.wpsshop.cn/w/IT小白/article/detail/507866
推荐阅读
article
在
安卓
手
机上安装
Ubuntu
详细教程(无需
root
)_
安卓
无
root
装
ubuntu
...
在
安卓
手
机上安装
Ubuntu
详细教程(无需
root
)本文法针对
安卓
手
机上安装
Ubuntu
系统提出了一种方法,安装其他Li...
赞
踩
article
or
g
.
postgresql
.
util
.PSQLException: ERROR: syntax e...
在写这个的时候遇到这个异常,首先说明这个不是你的sql代码错误,这是一个简单的转化问题
or
g
.
postgresql
.ut...
赞
踩
article
工作中
Git
如何切换
远程
仓库
地址
_
改变
远程
仓库
地址
...
部门之前的
仓库
不用了,重新建了一个
仓库
,但是上传代码还是上传到了之前的
仓库
里面了,所以得进行修改,下面将修改
地址
的方法进...
赞
踩
article
微信
小
程序
——
picker
组件
,
下
拉列表
组件
_
微信
小
程序
picker
下
拉
选择
...
range-key string 当 range 是一个 object array 时, 通过 range-key。...
赞
踩
article
安装
虚拟机
报错
This
kernel
requires
an X86-64
CPU
,but onl...
报这个错误之前提示 “二进制转换与此平台上的长模式不兼容”
This
kernel
requires
an X86-64 ...
赞
踩
article
正在
验证
"
Xcode
"
的解决方法_
xcode
正在
验证
“
ios17.2
”...
1.从网址 http://pan.baidu.com/s/1eQ5xhia下载了
Xcode
6.2 ,安装到MAC 0...
赞
踩
article
stm32
毕设
基于
单片机
的
导盲
拐杖
设计
(源码+硬件+论文)...
stm32
毕设
基于
单片机
的
导盲
拐杖
设计
(源码+硬件+论文) ...
赞
踩
article
概率论
中
二项分布
期望与方差
的
详细
推导
_
二项分布
的
d(
x
)与e(
x
)公式
推导
...
概率论
中
二项分布
期望与方差
的
详细
推导
过程_
二项分布
的
d(
x
)与e(
x
)公式
推导
二项分布
的
d(
x
)与e(
x
)公式
推导
...
赞
踩
article
Hive
安装
第二步:
CentOS7
安装
jdk1.8.0,
MySQL
5.7,Hadoop2.10.1,...
CentOS7
安装
jdk1.8.0,
MySQL
5.7,Hadoop2.10.1,
Hive
2.3.71.
CentOS7
中安...
赞
踩
article
hive
的
安装
和使用_
hive
依赖
的
javahome
...
Hive
的
安装
和使用 我们
的
版本约定: JAVA_HOME=/usr/local/soft/jdk1.8.0_171 H...
赞
踩
article
【
Leetcode
】3.
Longest
Substring
Without
Repeating
C...
题目地址:https://leetcode.com/problems/longest-substring-without...
赞
踩
article
ofdm
解调
算法
_
从零开始
搭建
OFDM
系统
(2)...
IFFT / FFT调制
解调
前言之前我们已经完成了16QAM的符号映射,接下来就到了
OFDM
系统
的重头戏,IFFT/FF...
赞
踩
article
各种
排序
算法
详解集合(
时间
复杂度
、空间
复杂度
、
稳定性
分析)_1、各种
排序
算法
的
时间
空间
复杂度
、
稳定性
...
动图来源:https://blog.csdn.net/weixin_41190227/article/details/8...
赞
踩
article
如何从
gitee
上
下载
项目
并把它在
本地
运行
起来
...
有时候我们会想到在
gitee
上
下载
下来
项目
,那么怎么把
项目
下载
到
本地
并跑
起来
呢?
下载
第三方包,初始化好后,输入 npm ...
赞
踩
article
论文阅读--A
Comprehensive
Overhaul
of
Feature
Distilla...
第一个是经过ReLU激活之后的特征响应的大小第二个是每个神经元的激活状态。提出了一个margin ReLU激活函数,并且...
赞
踩
article
OFDM
调制
理解...
OFDM
调制
理解-----gnuradio上实例
OFDM
调制
基本原理正交频分复用(
OFDM
)的基本原理就是把高速的数据流...
赞
踩
article
【
STM32
单片机学习】第四课:
GPIO
控制
LED
(用
寄存器
编程)_
stm32gpiob
的
地址
...
【朱老师课程总结】第一部分、章节目录3.5.1.
STM32
的
GPIO
模块数据手册详解13.5.2.
STM32
的
GPIO
模...
赞
踩
article
【
Day
9】
Mybatis
CURD
+
XML
映射 +
动态
SQL
...
下面进行:增删改查——C(create)U(update)R(retrieve)D(delete)根据主键 id 进行删...
赞
踩
article
【粉丝福利 | 第5期】教你快速入门三大
层次
学习
企业
架构
框架
TOGAF
_
togaf
手册...
对于一名
架构
师来讲,如果说编程语言是知识库
层次
中的入门石,那么
企业
架构
框架
则相当于知识库
层次
中的金字塔尖。如果想成长为企...
赞
踩
article
智慧
校园
大
数据
云
平台
(1)_
智慧
校园
大
数据
采集
,
处理
流程图...
目录第1章 建设思路和建设目标 1.1、 总体建设内容概述 1.2、 总体建设理念 1.2.1、 搭
平台
1.2.2、 ...
赞
踩
相关标签
ubuntu
linux
安卓
嵌入式
PostgreSql
git
微信小程序
虚拟机
Linux
单片机
概率论
机器学习
hive
hadoop
sqoop
大数据
算法
leetcode
指针
字符串
ofdm解调算法
排序算法
gitee
前端