- 博客(19)
- 收藏
- 关注
原创 编译原理-代码生成 课后习题+笔记
代码生成来源:龙书(厚),南大课后作业p333 8.2.2假设 a 和b 是元素为 4 字节值的数组,为下面的三地址语句序列生成代码四个语句的序列x = a[i]y = b[j]a[i] = yb[j] = x三个语句的序列x = a[i]y = b[i]z = x*yAnswer(1)x = a[i]y = b[j]a[i] = yb[j] = x 生成代码:LD R1, iMUL R1, R1, 4LD R2, a(R1)ST x, R2LD R3
2022-03-16 17:35:14
1812
原创 编译原理-运行时刻环境 课后习题+笔记
运行时刻环境来源:龙书(厚),南大课后作业p283 7.2.4Answer我们不妨将 g 的调用者称为 h,并给各个空间标号。h 创建了 0~ 2 号空间,g 创建了 3~6 号空间,f 创建了 7 号空间。h 写入了 y 和指向 h 的控制链的值;g 写入了 j, x 和指向 g 的控制链的值(因为尚未运行到返回的时候,所以没有写入返回值);f 写入了 i 和 f 的返回值。如图所示,0~ 3 号空间属于 g 的活动记录,4~7 号空间属于 f 的活动记录。知识点活
2022-03-11 17:38:56
1129
原创 编译原理-中间代码生成 课后习题+笔记
中间代码生成来源:龙书(厚),南大课后作业p232 6.1.1为下面的表达式构造 DAG ((x+y)-((x+y)*(x-y)))+((x+y)*(x-y))Answer知识点表达式的有向无环图 (Directed Acyclic Graph, DAG) 能够指出表达式中的公共子表达式,更简洁地表示表达式p238 6.2.2对下列赋值语句重复练习 6.2.1a = b[i] + c[j]a[i] = b*c - b*d==在题目中添加条件:每个数组元素占 8个存储
2022-03-10 17:03:00
4382
原创 编译原理-语法制导翻译 课后习题+笔记
语法制导翻译来源:龙书(厚),南大课后作业p198 5.1.2注:对以n为结尾标记的表达式求值AnswerE,T:表达式(也可看做一个数)E’:后+一个表达式T’:后*一个表达式F:因子,可以是一个数或一个带括号式子 产生式 语法规则 1) L -> En
2022-03-06 15:35:05
2526
1
原创 编译原理-语法分析 课后习题+笔记
词法分析来源:龙书(厚),南大课后作业p130 4.2.1考虑上下文无关文法:S→S S + | S S * | a以及串 aa+a*。给出这个串的一个最左推导。给出这个串的一个最右推导。给出这个串的一棵语法分析树。描述这个文法生成的语言。AnswerS =lm=> SS* => SS+S* => aS+S* => aa+S* => aa+a*S =rm=> SS* => Sa* => SS+a* => Sa+a* =>
2022-03-02 17:23:14
11806
2
原创 编译原理-词法分析 课后习题+笔记
词法分析来源:龙书(厚),南大课后作业p78 3.3.2 试描述下列正则表达式定义的语言:a(a|b)*a((ε|a)b*)*(a|b)*a(a|b)(a|b)a*ba*ba*ba*!! (aa|bb)*((ab|ba)(aa|bb)*(ab|ba)(aa|bb)*)*Answer(a) 由 a 开头并结尾的由 a 和 b 构成的字符串(b) 由 a 和 b 构成的字符串© 倒数第三位为 a 的由 a 和 b 构成的字符串(d) 仅含 3 个 b 的由 a 和 b 构成的字符串
2022-02-25 08:54:52
4916
3
原创 中缀表达式转化为后缀表达式的步骤
从头到尾读取中缀表达式的每个对象,对不同对象按不同的情况处理。运算数:直接输出;左括号:压入堆栈;右括号:将栈顶运算符弹出并输出,直到遇到左括号(出栈但不输出);运算符:若优先级大于栈顶运算符时,则将其压栈;若优先级小于等于栈顶运算符,则将栈顶运算符弹并输出;再比较新的栈顶运算符,直到该运算符大于栈顶运算符的优先级为止,然后将该运算符压栈;若个对象处理完毕,则把堆栈中剩下的运算符一并输出。...
2020-08-10 22:20:04
284
原创 2019-12浙江工业大学计算机学院转专业一志愿机试题目
这是我第三次参加转专业的机试了,算是个老手了吧。现在也已经大二了,参加机试的同学也少了许多。这次过了四题,总的感觉比上学期稍微难了一点,但也还好,仔细分析的话还是可以做出来的201905转专业机试题目201906转专业机试题目还想再说几句,机试一共有五道题目,做出三题才可以进入面试环节,不过仔细看这些题目就能发现,前三道题目都不算很难,所以考试的时候一定不能着急,也不要慌,我之前几次考...
2019-12-17 16:48:31
4080
6
原创 STL初步-multimap与map
map/multimap也是关联容器,特别适用与一边增删元素,一边查找的情况,效率比普通数组高很多,二者里放着的都是pair模板类对象,且按first从小到大排序multimap定义class multimap{ typedef pair<const Key, T> value_type;};multimap中元素由<关键字,值>组成,每个元素都是一个p...
2019-11-25 09:47:56
266
原创 STL初步-multiset与set
multiset与set是STL中的排序容器multiset的用法multiset<T> st;定义了一个multiset变量st,里面存放T类型数据,并且可以自动排序,开始为空排序规则:表达式 “a < b” 为true,则 a 排在 b 前面可用 st.insert添加元素,st.find查找元素,st.erase删除元素,复杂度都是 log(n)...
2019-11-18 10:13:43
281
原创 STL初步-sort排序算法与二分查找算法
最近刷题遇到了一些题目,做起来有些困难,感觉用STL解决起来会更快,也是为了12月的PTA乙级和转专业机试做准备,所以把这些知识再复习一遍STL介绍STL:(Standard Template Library)标准模板库包含一些常用的算法如排序查找,还有常用的数据结构如可变长数组、链表、字典等。使用方便,效率较高需包含头文件 #include<aalgorithm>...
2019-11-17 20:32:47
228
原创 C++-string类详解
简介string类是STL中basic_string模板实例化得到的模板类,其定义如下:typedef basic_stringstring;使用string类要包含头文件<string>string对象的初始化string s1("Chainsmokers");string month="Decenber";string s2(8,'t'); //s2="ttttt...
2019-11-15 22:52:06
281
原创 数据结构-线性结构之队列
什么是队列队列(Queue):具有一定操作约束的线性表插入和删除操作:只能在一端插入,而在另一端删除。数据插入:入队列(AddQ)数据删除: 出队列(DeleteQ)先来先服务先进先出队列的抽象数据类型描述类型名称:队列(Queue)数据对象集:一个有0个或多个元素的有穷线性表。操作集:长度为MaxSize的队列Q Queue,队列元素item ElementTyp...
2019-11-10 22:37:04
187
原创 数据结构-线性结构之堆栈
什么是堆栈例:中缀表达式: a+bc-d/e后缀表达式: abc+de/-后缀表达式求值策略:从左向右“扫描”,逐个处理运算数和运算符号需要用到堆栈!堆栈的抽象数据类型描述堆栈(Stack):具有一定操作约束的线性表只在一端(栈顶,Top)做 插入、删除插入数据:入栈(Push)删除数据:出栈(Pop)后入先出:最后进去的最先出来类型名称: 堆栈(Stack)数...
2019-11-10 22:15:20
269
原创 数据结构-线性结构之线性表及其实现
什么是线性表线性表:由同类型数据元素构成有序序列的线性结构表中元素个数称为线性表的长度线性表没有元素时,称为空表表起始位置称表头,表结束位置称表尾线性表的抽象数据类型描述类型名称: 线性表(List)数据对象集: 线性表是 n (≥0)个元素构成的有序序列( a1, a2, …,an)操作集:线性表L -> List,整数i表示位置,元素X -> ElementTy...
2019-11-10 13:38:11
349
原创 Java零基础-循环,数组与字符串
Java循环小功能break时跳出指定循环Main_loop:for(int i=0;i<10;i++){ for(int j=0;j<10;j++) { if(i+j>10) break Main_loop; else System.out.println(i+j); }}使用goto跳转到指定位置for(...
2019-11-02 22:57:18
231
原创 Java零基础-开始与计算
计算机和编程语言1. 辗转相除法(欧几里得算法)指用于计算两个正整数a,b的最大公约数。应用领域有数学和计算机两个方面。计算公式gcd(a,b) = gcd(b,a mod b)。如果v等于0,计算结束,u就是最大公约数如果v不等于0,那么计算u除以v的余数,让u等于v,而v等于那个余数;回到第一步。int u = 32;int v = 26;while ( v!=0 ...
2019-10-24 16:22:26
176
原创 2019-6浙江工业大学计算机学院转专业二志愿机试题目
因为转专业可以报两个志愿,所以这次带来了二志愿的题目,难度并没有变化太多,这次很幸运通过了机试,但又倒在了面试上,遗憾之情难以言表,下次再来8题号题目2097 Problem A祝你一切顺利2098 Problem B字符处理机器2099 Problem C如何分解合数2100 Problem D旋转杨辉三角2101 Problem E铁...
2019-07-04 13:36:10
4906
19
原创 2019-5浙江工业大学计算机学院转专业一志愿机试题目
浙江工业大学计算机学院2019转专业一志愿机试题目转专业机试结束了,发挥并不理想。题目难度中等,与通关考相当。现在把这些题目分享出来,希望对想要转专业的朋友有帮助。如果还想继续练习的话,可以到浙工大onlinejudge练习。祝大家一路顺利,天天开心。题号题目2080 Problem A计算机学院欢迎你2081 Problem B破解字符串的秘密2082...
2019-05-31 18:25:20
8111
41
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人