编译原理之语法分析(自底向上)(包含源码)
编译器之语法分析
- 自底向上
- 基本概念
- 算符优先
- SLR
- 规范LR
- LALR
自底向上
基本概念
自底向上形成语法树的过程就是及逆行归约,将一堆单词串放在一起,形成某个产生式的样子,然后规约成某个产生式,所以关键就是什么时候进行产生式的归约。
算符优先
这里要注意的就是优先级的比较,比如a<b一定式意味着a会先出现在b的前面,而前后体现在树上就是a一定在b的左边,不管是树的左上方还是左下方,所以,我们对于一棵树的遍历也应该知道,一定是先左后右。
而且,两个终结符(不局限于运算符)比较的时候不代表中间没有别的终结符中间可以有很多终结符,但是他们最后可以不断规约为一个非终结符,使得两个符号碰在一起,所以,能不能碰到一起这个判定一定式通过文法自行判定的。
句柄的寻找就是在两个终结符中间的一串,当我们遇到栈顶的符号优先级大于输入缓冲区中的符号的时候,我们需要在栈中寻找,找到优先级小于当前栈顶符号的符号,找到之后,真正的符号串应该是不包含找到的这个符号,从这个符号开始,知道当前栈中的所有字符,也就是意味着,栈中的字符不仅仅式非终结符,还应该包括终结符
SLR
这里面的goto函数对应的都是移进的动作,如果某个状态包含.在最后的,就对应着归约动作,归约写在产生式左部非终结符的follow集列中
规范LR
规范LR的SLR的区别就是规范LR明确的规定了规约动作应该在什么时候出现,而不仅仅是在follow集合之后
这个末尾的字符的产生就是后面的first集合,这个是只有在.后面的是非终结符会产生新的产生式,这个时候,新产生式的末尾跟的就是原本这个非终结符后面的first集合
LALR
LALR在原本的基础上增加了同心的概念,在LR(1)项目集中,如果一个项目中的所有产生式都一样,只是产生式后面的搜索符不一样的话,可以将二者合并。
编译原理之语法分析(自底向上)(包含源码)相关推荐
- HanLP自然语言处理包开源(包含源码)
HanLP自然语言处理包开源(包含源码) 支持中文分词(N-最短路分词.CRF分词.索引分词.用户自定义词典.词性标注),命名实体识别(中国人名.音译人名.日本人名.地名.实体机构名识别),关键词提取 ...
- 【2021软件创新实验室暑假集训】SpringMVC框架(设计原理、简单使用、源码探究)
系列文章目录 20级 Java篇 [2021软件创新实验室暑假集训]计算机的起源与大致原理 [2021软件创新实验室暑假集训]Java基础(一) [2021软件创新实验室暑假集训]Java基础(二) ...
- maven 上传jar 包含源码
2019独角兽企业重金招聘Python工程师标准>>> maven 上传jar 包含源码 1.pom配置如下 <build><plugins><!-- ...
- 单元测试Struts2Spring项目的Action和Service(包含源码)
最近,认真实践了单元测试Struts2.Spring等Java项目,今天特意写的是单元测试Struts2Spring项目的Action和Service. 由于已经写过不少Web开发框架单元测试的代码, ...
- java编译使用androidsdk,详解Android源码的编译
本文将为大家介绍的是如何设置Android源码的编译环境,包括Linux下的配置.主要基于Android 1.0环境,希望对大家了解Android开发有所帮助. 本次编译过程主要参考官方文档(http ...
- vs+cmake完美编译RTS游戏,类似魔兽争霸源码
网上的一个RTS游戏,网上的代码比较老,不能直接编译.这个仓库是我整理编译通过的.代码版权归于原作者. 源码下载 vs+cmake完美编译RTS游戏,类似魔兽争霸源码下载-其他文档类资源-CSDN文库 ...
- H5音乐播放器(包含源码与示例)
H5音乐播放器(包含源码与示例) 基于Angular+ionic的H5音乐播放器,源码:https://gitee.com/CrimsonHu/h5-music-player 示例地址 建议使用原版c ...
- 实时编译、动态执行C/C++源码函数
实时编译.动态执行C/C++源码函数 语法格式:fileCLASS *pObj = <file.cpp> 该语法获得源代码file.cpp的函数接口对象指针pObj,通过pObj调用fil ...
- 北大青鸟java y2_北大青鸟Y2Java3个月分结业测试题 包含源码
[实例简介] 北大青鸟Y2Java方向结业测试题,包含源码 [实例截图] [核心代码] 3道题 └── 新建文件夹 ├── 1 │ ├── 2013-1-13 6.0Y2Java 机试.rar │ ...
- ubuntu 14.04.5 编译Android 4.4.4 r1源码(最新)
本文博客链接:http://blog.csdn.net/qq1084283172/article/details/54426189 吐槽:ubuntu系统真是让人又爱又恨,也有可能是VMware Wo ...
最新文章
- Windows 服务全攻略(1)
- 让串口可以自动分辨一帧数据
- 全球及中国沼气发电行业现状及项目发展动态调研报告2021年版
- Yahoo! 的数据仓库: 世界上最大最忙
- SAP Spartacus auto focus Directive响应模型变化的一些触发时机例子
- java pdf中文乱码_java转pdf(html转为pdf),解决中文乱码,标签不规范等问题
- 设计模式笔记--委派
- 关于如何理解链表结构体指针引用LinkNode * L的问题
- django xadmin 安装和使用
- PC微信多开源代码-消息钩子+ZwQuerySystemInformation
- 动态IP和静态IP有什么区别
- 微信支付 H5 版本 PHP
- 怎么用python骂人_人生苦短我用Python,本文助你快速入门
- mysql存储过程和mysql函数
- PDFBox实现图片转PDF --JAVA
- origin双y轴数据散点图显示
- NLP机器翻译任务中,如何用Bleu score评价翻译质量(学习心得)
- 【Linux】文件与路径
- 微生物实验室布局设计宗旨
- 使用01字典树解决最大异或问题