自 下 而 上 分 析 法 的 一 般 原 理
自 下 而 上 分 析 法 的 一 般 原 理
编译中存在着多种自下而上的分析法,但不管哪种自下而上的分析法都是按照“移进 - 归约”法的原理建立起来的一种语法分析方法。这种分析法的基本思想是用一个寄存文法符号的先进后出栈,将输入符号一个一个地按从左到右扫描顺序移入栈中,边移入边分析,当栈顶符号串形成某条规则右部时就进行一次归约,即用该规则左部非终结符替换相应规则右部符号串,我们把栈顶被归约的这一串符号称为可归约串。重复这一过程直到整个输入串分析完毕。最终若栈中剩下句子右界符“ $ ”和文法的开始符号,则所分析的输入符号串是文法的正确句子,否则,就不是文法的正确句子,报告错误。
下面举例说明这种自下而上的分析过程。
【例 4.11 】设有文法 G [ A ]:
( 1 ) A → aBcDe
( 2 ) B → b
( 3 ) B → Bb
( 4 ) D → d
对输入串 abbcde 进行语法分析,检查该符号串是否是该文法的正确句子。
首先设一个符号栈并将输入符号串的左界符“ $ ”移入栈,分析时将输入符号串按从左到右扫描顺序移入栈中,其整个分析过程如表 4.3 所示。
在上述分析过程中,当分析到第(4 )步时,栈内符号串是 aBb ,栈顶符号串 b 和 Bb 分别是规则B → b 和 B → Bb 的右部,为什么此时知道栈顶符号串 Bb 是可归约串,而 b 不是可归约串呢?由此可见,实现自下而上分析法的关键问题是如何精确定义可归约串这个直观概念,以及怎样识别“可归约串”。事实上,存在多种不同的方法刻画“可归约串”,对它的不同定义形成不同的自下而上的分析方法。在规范归约分析法中,是用句柄来刻画可归约串,而在算符优先分析法中,是用最左素短语来刻画可归约串。根据识别可归约串的不同方法,也同样形成不同的自下而上的分析方法,简单优先分析法和 LR 分析法都是规范归约分析法,即都是用句柄刻画可归约串。但它们识别句柄的方法不同,LR 分析法是根据历史、现实、展望三者信息来确定栈顶符号串是否形成句柄,而简单优先分析法是根据文法符号之间的优先关系来确定栈顶符号串是否形成句柄。
自 下 而 上 分 析 法 的 一 般 原 理相关推荐
- LOL手游诺手对线技巧,上分率提高60%,战神玩家推荐玩法
LOL手游在国服B轮测试开启后,官方在测试期间不断改善,更是让玩家们感到暖心,作为经典的MOBA游戏,官方也为了长远发展,也让英雄联盟这个"大IP"有了更多的重视粉丝.眼下又是LO ...
- 几何匹配和分合算法的图像识别技术
第一章 引言 1.1 面像定位概述及其与面像识别的关系 这个设计所涉及到的是面像的定位和识别.简单来说,所谓面像的定位,就是在照片(静态图像)或视频(动态图像)中标出面像所在的位置,把面像 ...
- CV入门赛最全思路上分技巧汇总!
↑↑↑关注后"星标"Datawhale 每日干货 & 每月组队学习,不错过 Datawhale干货 作者:安晟,算法工程师,Datawhale成员 赛题数据及背景 http ...
- 求约束条件下极值的拉格朗日乘子法
学过中学数学的都知道,对于无约束条件的函数求极值,主要利用导数求解法. 例如求解函数f(x,y)=x3-4x2+2xy-y2+1的极值.步骤如下: (1)求出f(x,y)的一阶偏导函数f'x(x,y) ...
- 卡牌大师怎么玩_用卡牌大师如何上分
联盟界流传一句话,如果只玩一个英雄.德玛可以上白金,瑞文可以上砖石,而卡牌可以上王者.所以说玩好卡牌是可以快速上分的,卡牌拥有稳定的控制,AOE伤害,大招的快速支援,可以说是英雄里近乎完美的机制,不过 ...
- 天池CV学习赛:街景字符识别-思路与上分技巧汇总
Datawhale 和 天池 合作的零基础入门CV - 街景字符编码识别比赛的正式赛已经结束.本文对一些比赛思路和上分技巧进行了汇总和整理,希望对大家深入学习CV能够有帮助. 本文分为以下几部分: 如 ...
- SOLO参赛,赛道二周冠军“达尔文”分享上分秘诀
6月16日,2021腾讯广告算法大赛复赛已经正式拉开帷幕.本届赛事共有上千家高校和企事业单位的4335人报名.不仅如此,此次赛事还与计算机国际学术顶会ACM Multimedia强强联合.围绕视频广告 ...
- 米莱狄机器人怎么那么多_王者荣耀米莱狄攻略,团战技能好了就丢,操作最简单上分法师...
说起最容易上分的英雄大家会想到哪个呢?大家第一反应可能是猴子.牛魔这类高胜率英雄,但在王者荣耀的S16赛季,突然崛起了一个新的冷门英雄:米莱狄. 在没有团控,没有秒人的能力前提下,米莱狄因为技能CD的 ...
- 文本分类上分微调技巧实战
目录 引言 How to Fine-Tune BERT for Text Classification 论文 微调策略 ITPT:继续预训练 学术论文分类挑战赛微调 huggingface工具介绍 b ...
最新文章
- kotlin ++ --_顺便说一句-探索Kotlin代表团
- 爱因斯坦牛顿达尔文投胎中国后
- 云机搭jdk1.8和apache-tomcat
- 【自动驾驶】Eigen:矩阵Matrix的使用
- 有趣的MS Live Labs
- Centos7安装Nginx1.14.0
- python字符串截取拼接_Python字符串拼接、截取及替换方法总结分析
- 【助教】关于代码提交相关注意事项
- R语言:ggplot2精细化绘图——以实用商业化图表绘图为例(转)
- MIME媒体类型:简介,作用(描述并标记多媒体内容),示例
- 基础 - 字符读取函数scanf、getchar、gets、cin(清空缓存区解决单字符回车问题)
- git21天打卡day11-删除分支
- hadoop元数据mysql中表字段_Hive元数据表汇总分析
- 38. DOM 操作
- windows命令行下ftp连接超时的可能原因
- linux 云锁 端口,问一下,云锁安装后还可以修改端口吗?
- 数据中心为什么需要大二层网络
- 高可用、高可扩展的原生WebView通信架构的思考
- html给页面整体添加左右边距_左右边距相对于页面宽度过大
- iOS9 3D Touch 标签菜单 peek and pop force 压力触控 功能开发高级版教程