- 博客(0)
- 资源 (14)
- 问答 (1)
空空如也
编译原理第6次上机 三地址代码
编译技术第6次上机内容
目的:充分理解并掌握中间代码生成的相关方法,用C++程序实现。
要求:
1.以S属性的语法制导定义为基础,将下列产生式附上一定的语义规则。即在原来语法分析的基础上插入相应的语义动作:将输入串翻译成三地址代码序列。
E ® E1 + T
E ® T
T ® T1 * F
T ® F
F® (E)
F ® digit
F ® id
2.以词法分析和语法分析部分的上机结果为基础,添加语义分析部分。即以LR文法为基础。当进行产生式归约时执行对应的语义动作。
3.输入:(-b+c*d)+c*d
输出:
t1= -b
t2= c*d
t3=t1+t2
t4= c*d
t5=t3+t4
4. 若输入有误,如:a++b**c(d+e)
则应提示:+后面缺少运算对象,
*后面缺少运算对象,
c后面缺少运算符,
请重新输入!
扩展:
将三地址代码优化为DAG代码
例如:
输入: (-b+c*d)+c*d
输出:
t1= -b
t2= c*d
t3=t1+t2
t5=t3+t2
2013-06-08
编译原理第5次上机 属性计算
编译技术第5次上机内容
目的:充分理解语义分析的方法及相关语义计算的执行时机。
要求:
1.以S属性的语法制导定义为基础,将下表的语义规则嵌套在语法分析的过程中,即实现语法制导的翻译过程。
产 生 式 语 义 规 则
L E n print (E.val)
E E1 + T E.val := E1 .val + T.val
E T E.val := T.val
T T1 * F T.val := T1.val * F.val
T F T.val := F.val
F (E) F.val := E.val
F digit F.val := digit.lexval
2.以语法分析部分的两次上机结果为基础,添加语义分析部分。即以LL(1)文法或者LR文法为基础。当产生式完全推导出来或者规约时执行对应的语义动作。
3.输入:
5+3+8*2
输出:24
4. 若输入有误,如:3++2
则应提示:重新输入!
5. 由于输入串是具体的数值,因此应调用相应的词法分析的功能。
扩展:
对浮点数也能完成上述的操作。
增加减法和除法对应的产生式,并能计算其语义结果。
在ftp中第五次上机的文件夹中有两个压缩包,用递归下降法实现的程序在压缩包“recursion_calculator.rar”中,用非递归的预测分析方法实现的程序在压缩包“predict_calculator.rar”中。可以任选其一作为基础进行改进。将其改造成有减法和除法的程序,并写出对应的产生式。
2013-05-29
第四次上机作业 语法分析2
目的:熟练掌握自下而上的语法分析方法,并能用程序实现。
要求:
1. 使用如下文法:
E E+T | T
T T*F | F
F (E) | id
2. 对于任意给定的输入串(词法记号流)进行语法分析,要求采用LR分析器来完成。手工构造LR分析表,利用移进-归约分析算法(P69 图3.12)输出(P70 表3.8)对应的动作部分。如:
输入:id*+id/(id+id)#
输出:移进
按 F->id归约
移进
error
……
3. 要有一定的错误处理功能。即对错误能提示,并且能在一定程度上忽略尽量少的记号来进行接下来的分析。
例如:
从状态0开始的记号流为:bm
将b移进之后,栈里的情况应该为: 0 b 2
此时查表发现 action[2,m]=error
输出打印:error
把A和状态1相继压入栈,用户指针后移到FOLLOW(A)对应的元素继续分析。
2013-05-13
FCFS 最短最优先调度算法
1)编程实现本实验的程序,要求:
建立进程的进程控制块,进程控制块至少包括:
进程名称;
进程需要执行时间;
进入就绪队列时间;
进程执行开始时间
进程执行结束时间
编程实现调度算法。
进程及相关信息的输入。这些信息可以直接从键盘上输入,也可以从文件读取。
时间片与时间流逝的模拟。本实验需要对算法的执行计时,程序应该提供计算时间的方法。一种最简单的方法是使用键盘,比如每敲一次空格代表一个时间片的流逝。另一种方法是使用系统时钟。
一组进程序列执行完毕,打印出结果信息。程序需要计算出每个进程的开始执行时间、结束时间、周转时间和带权周转时间,并为整个进程序列计算平均周转时间和平均带权周转时间。程序将计算结果按一定的格式显示在计算机屏幕上或输出到文件中。打印出进程调度顺序图。
实现数据在磁盘文件上的存取功能。
2013-04-11
排序(数据结构最后一次作业)
大连理工大学软件学院11级 数据结构最后一次上机作业 包括3中插入排序 2中交换排序 简单选择排序和 归并排序 课后6、7题 将一组数中所有负数元素放在非负数元素之前;同时找出一组数据中的最大值和最小值
2012-12-23
破圈法构造最小生成树
用邻接矩阵存储图的信息 图的信息由用户输入 算法思想:1、找到度为1的顶点 将这个点删除 并把它的邻接点度数减一 反复执行此操作直到没有度为1 的顶点2、剩下的点已经在环中,找到最大的边 ,删除 3、反复执行1 2操作 直到最后找不到环路
2012-12-21
IE8 在某个页面,表单提交的时候,请求的url莫名其妙变长
2014-05-20
TA创建的收藏夹 TA关注的收藏夹
TA关注的人