第五章 总结及作业(123)【编译原理】

news2024/11/28 16:45:09

第五章 作业【编译原理】

  • 前言
  • 推荐
  • 第五章 总结
      • 5.1自下而上分析基本问题
    • 5.1.1归约
      • 5.1.2规范归约简述
      • 5.1.3 符号栈的使用与语法树的表示
    • 5.2 算符优先分析
      • 5.2.1算符优先文法及优先表构造
      • 算法:构造FIRSTVT集
      • 算法:构造LASTVT集
      • 算法:构造优先表
      • 5.2.2算符优先分析算法
      • 算法:算符优先分析
      • 5.2.3优先函数
      • 5.2.4算符优先分析中的出错处理
    • *5.3分析法
      • 5.3.1LR分析器
      • 算法:LR分析器的工作原理
      • 5.3.2LR(0)项目集族和LR(0)分析表的构造
      • 5.3.3SLR分析表的构造
      • 5.3.4规范LR分析表的构造
      • 5.3.5 LALR分析表的构造
      • 5.3.6二义文法的应用
      • 5.3.7LR分析中的出错处理
    • 5.4语法分析器的自动产生工具YACC
  • 第五章 作业
    • 1
    • 2
    • 3
  • 随堂练习
    • 课前热身04-17
    • 随堂练习04-17
    • 课前热身04-24
  • 最后

前言

2023-5-3 22:12:46

以下内容源自《【编译原理】》
仅供学习交流使用

推荐

第四章 总结及作业(123)【编译原理】

第五章 总结

2023-5-10 15:20:36

5.1自下而上分析基本问题

5.1.1归约

移进-归约法:
我们所讨论的自下而上分析法是一种“移进–归约”法。这种方法的大意是,用一个寄存符号的先进后出栈,把输入符号一个一个地移进到栈里,当栈顶形成某个产生式的一个候选式时,即把栈顶的这一部分替换成(归约为)该产生式的左部符号。

引出问题:如何判断判断栈顶符号为可归约串

5.1.2规范归约简述

短语、直接短语、句柄

例5.1:
例5.2:
在这里插入图片描述

规范归约:
最左归约

5.1.3 符号栈的使用与语法树的表示

例5.3:

在这里插入图片描述
在这里插入图片描述

5.2 算符优先分析

算符优先分析与三种优先关系:

在这里插入图片描述

5.2.1算符优先文法及优先表构造

算符文法与算法优先文法:

在这里插入图片描述
在这里插入图片描述
FIRSTVT集与LASTVT集的定义:

FIRSIVT§={a|P=+>a···或P=+>Qa···,a∈VT而Q∈VN|
LASTVT§={a|P=+···a或P=+>···aQ,a∈VT,而Q∈VN}

先归约的符号优先级高:
在这里插入图片描述

算法:构造FIRSTVT集

在这里插入图片描述

在这里插入图片描述

算法:构造LASTVT集

两条规则:
(1)若有产生式P->···a或P->···aQ,则a∈LASTVT( P );
(2)若a∈LASTVT(Q),且有产生式P->···Q,则a∈ LASTVT( P );

算法:构造优先表

在这里插入图片描述

5.2.2算符优先分析算法

算法:算符优先分析

在这里插入图片描述

5.2.3优先函数

5.2.4算符优先分析中的出错处理

*5.3分析法

在这里插入图片描述

5.3.1LR分析器

算法:LR分析器的工作原理

LR方法的基本思想:
LR方法的基本思想是,在规范归约过程中,一方面记住已移进和归约出的整个符号串,即记住"历史",另一方面根据所用的产生式推木术可能碰到的输入符号,即对未来进行“展望”。当一串貌似句柄的符号串呈现于分析栈的顶端时,我们希望能够根据所记载的“历史"和"展望”以及“现实"的输人符号等三方面的材料,来确定栈顶的符号串是否构成相对某一产生式的句柄。

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

例:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

例5.7:

在这里插入图片描述

对于一个LR分析器来说,栈顶状态提供了所需的一切“历史"和“展望"信息。请注意一个非常重要的事实:如果仅由栈的内容和现实的输入符号就可以识别一个句柄,那么,就可以用–个有限自动机自底向上扫描栈的内容和检查现行输入符号来确定呈现于栈顶的句柄是什么(如果形成一个句柄时)。实际上,LR分析器就是这样的-一个有限自动机。只是,因栈顶的状态已概括了整个栈的内容,因此,无需扫描整个栈。栈顶状态就好像已代替我们进行了这种扫描。

5.3.2LR(0)项目集族和LR(0)分析表的构造

5.3.3SLR分析表的构造

5.3.4规范LR分析表的构造

5.3.5 LALR分析表的构造

5.3.6二义文法的应用

5.3.7LR分析中的出错处理

5.4语法分析器的自动产生工具YACC

2023-5-10 15:52:00

第五章 作业

1

1.令文法G为:
E→E+T|T
T→T*F|F
F→(E)|i

证明E+T*F是它的一个句型,指出这个句型的所有短语,直接短语和句柄。

E+T*F是文法G的一个句型
语法树如下:
在这里插入图片描述

短语:E+T*F,T*F
直接短语:T*F
句柄:T*F

2

2.考虑下面的表格结构文法G2:
S->a|∧|(T)
T→T,S|S
(1)给出(a,(a,a))和(((a,a),∧,(a)),a)的最左和最右推导。
(2)指出(((a,a),∧,(a)),a)的规范归约及每一步的句柄。根据这个规范归约,给出“移进-归约”的过程,并给出它的语法树自下而上的构造过程。

(1) (a,(a,a))
最左推导:S=>(T)=>(T,S)=>(S,S)=>(a,S)=>(a,(T))=>(a,(T,S))=>(a,(S,S))=>(a,(a,S))=>(a,(a,a))
最右推导:S=>(T)=>(T,S)=>(T,(T))=>(T,(T,S))=>(T,(T,a))=>(T,(S,a))=>(T,(a,a))=>(S,(a,a))=>(a,(a,a))
(2)(((a,a),∧,(a)),a)
最左推导:S=>(T)=>(T,S)=>(S,S)=>((T),S)=>((T,S),S)=>((T,S,S),S)
=>((S,S,S),S)=>(((T),S,S),S)=>(((T,S),S,S),S)=>(((S,S),S,S),S)=>(((a,S),S,S),S)
=>(((a,a),S,S),S)=>(((a,a),∧,S),S)=>(((a,a),∧,(T)),S)=>(((a,a),∧,(S)),S)
=>(((a,a),∧,(a)),S)=>(((a,a),∧,(a)),a)
最右推导:S=>(T)=>(T,S)=>(T,a)=>(S,a)=>((T),a)=>((T,S),a)=>((T,(T)),a)=>((T,(S)),a)
=>((T,(a)),a)=>((T,S,(a)),a)=>((T,∧,(a)),a)=>((S,∧,(a)),a)=>(((T),∧,(a)),a)
=>(((T,S),∧,(a)),a)=>(((T,a),∧,(a)),a)=>(((S,a),∧,(a)),a)=>(((a,a),∧,(a)),a)
(2)
(((a,a),∧,(a)),a)的规范归约:
	最右推导倒着来
具体可见符号栈+输入串的变化:
	共17步归约:6,7,10,11,13,14,17,18,22,23,25,26,28,29,32,33,35
	
(((a,a),∧,(a)),a):“移进-归约”的过程
步骤		符号栈				输入串 						操作			说明
1		#					(((a,a),∧,(a)),a)# 		预备
2		#(					((a,a),∧,(a)),a)# 		进
3		#((		    		(a,a),∧,(a)),a)# 		进
4		#(((				a,a),∧,(a)),a)# 			进
5		#(((a				,a),∧,(a)),a)# 			进
6		#(((S				,a),∧,(a)),a)# 			归			 S->a
7		#(((T				,a),∧,(a)),a)# 			归			 T->S
8		#(((T,				a),∧,(a)),a)# 			进	
9		#(((T,a			),∧,(a)),a)# 				进		
10		#(((T,S			),∧,(a)),a)# 				归	 		 S->a
11		#(((T				),∧,(a)),a)# 				归	 		 T->T,S
12		#(((T)				,∧,(a)),a)# 				进
13		#((S				,∧,(a)),a)# 				归			 S->(T)
14		#((T				,∧,(a)),a)# 				归			 T->S
15		#((T,				∧,(a)),a)# 				进			
16		#((T,∧				,(a)),a)# 					进	
17		#((T,S				,(a)),a)# 					归			 S->∧
18		#((T				,(a)),a)# 					归			 T->T,S
19		#((T,				(a)),a)# 					进			 
20		#((T,(				a)),a)# 					进			 
21		#((T,(a			)),a)# 					进	
22		#((T,(S			)),a)# 					归			 S->a
23		#((T,(T			)),a)# 					归			 T->S
24		#((T,(T)			),a)# 						进			
25		#((T,S				),a)# 						归		 	 S->(T)		
26		#((T				),a)# 						归			 T->T,S
27		#((T)				,a)# 						进			 
28		#(S					,a)# 						归			 S->(T)	
29		#(T					,a)# 						归			 T->S
30		#(T,				a)# 						进			  
31		#(T,a				)# 							进
32		#(T,S				)# 							归			 S->a
33		#(T					)# 							归			 T->T,S
34		#(T)				# 							进			
35		#S					# 							归			 S->(T)	
36		#S					# 							接受

(((a,a),∧,(a)),a)语法树如下
在这里插入图片描述

3

3.(1)计算练习2文法G2的FIRSTVT 和 LASTVT。
(2)计算G2的优先关系。G2是一个算符优先文法吗?
(3)计算G2的优先函数。
(4)给出输入串(a,(a,a))的算符优先分析过程。

(1)文法G2的FIRSTVT 和 LASTVT。
FIRSTVT(S)={a ∧ (}          LASTVT(S)={a ∧ )}
FIRSTVT(T)={a ∧ ( ,}      LASTVT(T)={a ∧ ) ,}
2)G2的优先关系矩阵:
	a	^	(	)	,	#
a				>	>	>
^				>	>	>
(	<	<	<	=	<
)				>	>	>
,	<	<	<	>	>
#	<	<	<			=
G2是一个算符优先文法
(4)输入串(a,(a,a))的算符优先分析过程:
步骤		符号栈		输入串 			操作			说明
(1)	#			(a,(a,a))#		预备
(2)    #(  		a,(a,a))#	    移进			[#][(]=<
(3)	#(a			,(a,a))#	    移进			[(][a]=<		
(4)	#(T 		,(a,a))#	    归约			[a][,]=>
(5)	#(T, 		(a,a))#	    移进			[(][,]=<
(6)	#(T,(		a,a))#	    	移进			[,][(]=<
(7)	#(T,(		a,a))#	    	移进			[(][a]=<
(8)	#(T,(a		,a))#	    	移进			[(][a]=<
(9)	#(T,(T		,a))#	    	归约			[a][,]=>
(10)	#(T,(T,	a))#	    	移进			[(][,]=<
(11)	#(T,(T,a	))#	    		移进			[,][a]=<
(12)	#(T,(T,S	))#	    		归约			[a][)]=>
(13)	#(T,(T)	)#	    		移进			[(][)]==
(14)	#(T,S		)#	    		归约			[)][)]=>
(15)	#(T			)#	    		归约			[,][)]=>
(16)	#(T)		#	    		移进			[(][)]==
(17)	#S			#	    		归约			[)][#]=>
(18)	#S#				    	 	接受		

2023-5-7 00:00:54

随堂练习

2023-5-3 22:12:50

课前热身04-17

1(多选题) 语法分析按照分析的方向分为:
A. 自上而下的语法分析
B. 自下而上的语法分析
C. 自左而右的语法分析
D. 自右而左的语法分析

正确答案: AB 我的答案: AB

2(简答题) 有文法G:
E—>T|E+T
T—>F|T*F
F—>(E)|i

请说明句型E+T*F+i的短语,直接短语和句柄。

在这里插入图片描述

短语:E+T*F+i,E+T*F,T*F,i
直接短语:T*F,i
句柄:T*F

随堂练习04-17

1(简答题) 请构造该文法中所有非终结符的LASTVT集

E->E+T|T
T->T*F|F
F->(E)|i

	+ 	* 	( 	) 	i
E	1	1		1	1
T		1 		1 	1
F				1	1

课前热身04-24

1(单选题) 若a、b均为终结符,且a的优先级低于b,则说明:
A. 推导的符号串中,a位于b之前,a先于b被规约
B. 推导的符号串中,a位于b之前,b先于a被规约
C. 推导的符号串中,a位于b之后,a先于b被规约
D. 推导的符号串中,a位于b之后,b先于a被规约,也有可能同时被规约

正确答案: B 我的答案: B

2(判断题) 在算符优先分析中,待分析串的界符#,其优先级一定低于文法所有终结符号。

正确答案: 错 我的答案: 错

3必答 (简答题) 已知文法G[S]:
S → a|^|(T)
T → T,S|S
非终结符的FIRSTVT、LASTVT集如下所示:
FIRSTVT(S)={a ^ (} LASTVT(S)={a ^ )}
FIRSTVT(T)={a ^ ( ,} LASTVT(T)={a ^ ) ,}
请构造文法G的优先关系矩阵。

	a	^	(	)	,	#
a				>	>	>
^				>	>	>
(	<	<	<	=	<
)				>	>	>
,	<	<	<	>	>
#	<	<	<			=

2023-5-3 22:22:20

最后

2023-5-7 00:01:02

2023-5-10 15:51:55

你对我百般注视,
并不能构成万分之一的我,
却是一览无余的你。

祝大家逢考必过
点赞收藏关注哦

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/512790.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Google I/O 2023 - 一文快速总结 Flutter Dart 的现状和未来

随着 Google I/O 2023 的发布&#xff0c; Flutter 3.10 和 Dart 3.0 也都正式发&#xff0c;不得不说如今 Dart 的版本号终于快追上 Flutter 得版本号了&#xff0c;特别随着 Dart 3 的发布&#xff0c; Flutter 在 records 和 patterns 的加持下&#xff0c;开发体验终于开始…

LlamaIndex :面向QA 系统的全新文档摘要索引

在这篇博文中&#xff0c;我们介绍了一种全新的 LlamaIndex 数据结构&#xff1a;文档摘要索引。我们描述了与传统语义搜索相比&#xff0c;它如何帮助提供更好的检索性能&#xff0c;并通过一个示例进行了介绍。 背景 大型语言模型 (LLM) 的核心场景之一是对用户自己的数据进…

MapReduce框架

TextInputFormat 1&#xff09;FileInputFormat实现类 思考&#xff1a;在运行MapReduce程序时&#xff0c;输入的文件格式包括&#xff1a;基于行的日志文件、二进制格式文件、数据库表等。那么&#xff0c;针对不同的数据类型&#xff0c;MapReduce是如何读取这些数据的呢&…

Postman 如何关联接口测试并设置全局变量(带有token鉴权)

一、登陆接口 创建一个request请求 在Tests中添加JavaScript代码&#xff0c;用来获取鉴权&#xff1a; var jsonData JSON.parse(responseBody); var Authorization jsonData.data.access_token; console.log(Authorization) pm.globals.set(‘Authorization’,Authorizatio…

solr快速上手:solr简介及安装(一)

0. 引言 虽然现在主流的搜索引擎组件已经es主导&#xff0c;但不乏有部分“老”项目依旧在采用solr&#xff0c;当遇到这类项目时&#xff0c;如何快速上手solr组件&#xff0c;以及后续如何拓展深入研究solr的途径成为问题&#xff0c;本期我们的目的就是带大家来快速上手sol…

2023 年第三届长三角高校数学建模竞赛赛题浅析

为了更好地让大家本次长三角比赛选题&#xff0c;我将对本次比赛的题目进行简要浅析。数模模型通常分为优化、预测、评价三类&#xff0c;而本次数学题目就正好对应着A、B、C分别为优化、预测、评价。整体难度不大&#xff0c;主要难点在于A题的优化以及B、C的数据收集。稍后&a…

QT5.12.6 + mysql5.5.9 出现 Driver not loaded Driver not loaded

由于我重装了电脑系统&#xff0c;qt 和mysql均进行了软件版本的升级&#xff0c; 在使用数据库模块时&#xff0c;出现了如下问题&#xff1a; Driver not loaded Driver not loaded 排除问题一&#xff1a; pro文件中是否加载了sql模块 查看pro文件&#xff0c;发现 有此模…

React的两种组件创建方式(二)

react是面向组件编程的一种模式&#xff0c;它包含两种组件类型&#xff1a;函数式组件及类式组件 函数式组件 一个基本的函数组件长这个样子 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><title>hell…

java报错-->java.lang.IllegalAccessError

1、前言 在gradle中运行main方法突然出现如下错误 Exception in thread "main" java.lang.IllegalAccessError: class XXX.util.ImageBorderUtils (in unnamed module 0x4bd4bcd4) cannot access class sun.font.FontDesignMetrics (in module java.desktop) becaus…

使用宝塔在Linux面板搭建网站,并实现公网远程访问「内网穿透」

文章目录 前言1. 环境安装2. 安装cpolar内网穿透3. 内网穿透4. 固定http地址5. 配置二级子域名6. 创建一个测试页面 转载自远程内网穿透的文章&#xff1a;Linux使用宝塔面板搭建网站&#xff0c;并内网穿透实现公网访问 前言 宝塔面板作为简单好用的服务器运维管理面板&#…

数据结构与算法(Java版) | 数组模拟队列的思路分析与代码实现

思路分析 上一讲我们讲过&#xff0c;队列既可以用数组来实现&#xff0c;也可以用链表来实现&#xff0c;但由于我们比较熟悉数组这种结构&#xff0c;所以这里我会先给大家讲一下数组这种实现方式&#xff0c;至于链表这种实现方式&#xff0c;那就以后有机会再说吧&#xf…

探索人工智能新纪元:Pre-Training 快速指南,轻松上手

theme: orange 预训练 Pre-Training 已被证明是当前人工智能范式中最重要的方面之一&#xff0c;大型语言模型&#xff0c;要转变为通用引擎&#xff0c;需要预训练。 什么是预训练模型 人工智能中的预训练至少部分受到人类学习方式的启发。我们不需要从零开始学习一个主题&…

肝一肝设计模式【七】-- 代理模式

系列文章目录 肝一肝设计模式【一】-- 单例模式 传送门 肝一肝设计模式【二】-- 工厂模式 传送门 肝一肝设计模式【三】-- 原型模式 传送门 肝一肝设计模式【四】-- 建造者模式 传送门 肝一肝设计模式【五】-- 适配器模式 传送门 肝一肝设计模式【六】-- 装饰器模式 传送门 文…

JavaWeb:Cookie、Session、JSP、JavaBean、MVC 三层架构

文章目录 JavaWeb - 03一、Cookie1. Cookie 应用2. 注意点 二、Session三、JSP1. 概述2. JSP 基础语法和指令&#xff08;了解&#xff09;3. 内置对象及作用域4. JSP 标签、JSTL 标签 四、JavaBean五、MVC 三层架构1. 之前的架构2. 现在的 MVC 三层架构 注意&#xff1a; Java…

Feign和OpenFeign

1.Feign和OpenFeign的关系 Feign Feign是一个声明式的Web服务客户端&#xff08;Web服务客户端就是Http客户端&#xff09;&#xff0c;让编写Web服务客户端变得非常容易&#xff0c;只需创建一个接口并在接口上添加注解即可。 Feign是Spring Cloud组件中一个轻量级RESTful的H…

MySQL基础学习---7、子查询

子查询 子查询指的是一个查询语句嵌套在另一个查询语句内部的查询&#xff08;从MySQL4.1开始引入&#xff09;。1、子查询的基本使用 语法格式&#xff1a;select select_listfrom tablewhere expr operator(select select_listfrom table); 说明&#xff1a;1、子查询&…

【终极解决方案】IDEA maven 项目修改代码不生效。

【终极解决方案】IDEA maven 项目修改代码不生效。 文章目录 【终极解决方案】IDEA maven 项目修改代码不生效。1、项目问题描述2、可能的解决方案3、分析原因4、解决方案5、参考文献 1、项目问题描述 遇到一个非常奇怪的问题&#xff0c;修改了一个基于maven搭建的SSM项目&am…

learn_C_deep_9 (汇编角度理解return的含义、const 的各种应用场景、volatile 的基本理解与实验证明)

目录 return 关键字 const 关键字 const 修饰的只读变量 - - - 不可直接被修改&#xff01; const修饰的变量&#xff0c;可以作为数组定义的一部分吗&#xff1f; const只能在定义的时候直接初始化&#xff0c;不能二次赋值。为什么&#xff1f; const修饰指针 volatil…

opencv remap 像素重映射

remap()函数的输入是一个源图像和一个映射矩阵。映射矩阵包含了每个像素的新坐标&#xff0c;用于指定每个像素在输出图像中的位置。 假设原始图像中的一个像素的坐标为 ( x , y ) (x,y) (x,y)&#xff0c;它在输出图像中的新坐标为 ( x ′ , y ′ ) (x,y) (x′,y′)。为了计算…

Linux Python Openpyxl xlsx转html

目录 Excel转Html 示例 函数 Openpyxl知识点 其他Excel解析库问题 Excel转Html 示例 函数 import openpyxlfrom openpyxl.styles import Border from openpyxl.styles import Font from openpyxl.styles import Side from openpyxl.styles import Alignment from openpy…