级编译课程设计题⽬
编译原理课程设计题⽬
编译原理课程设计题⽬.................................................................................................I 课程设计题⽬.. (1) D类 (1)
1.符号串的最左推导和最右推导 (1)
2.基本块的划分 (1)
3.循环查 (1)
4.符号表的线性组织 (2)
5.符号表的排序组织 (2)
C类 (2)
1.构造语法树 (2)
2.符号表的散列组织 (2)
3.PL/0语⾔的词法分析程序 (3)
4.⾮LL(1)⽂法到LL(1)⽂法的等价变换 (3)
5.使⽤LR(0)分析⽅法设计⼀个计算器 (3)
6.使⽤预测分析⽅法设计⼀个计算器 (3)
7.使⽤算符优先分析⽅法设计⼀个计算器 (4)
8.C语⾔的词法分析程序 (4)
B类 (4)
1.⾃动机的确定化和最⼩化 (4)
2.⾃动机与正规式间的相互转化 (4)
3.预测分析法在PL/0语⾔编译器中的应⽤ (5)
4.PL/0语⾔编译器改进 (5)
5.LL(1)⽂法和预测分析⽅法 (5)
6.算符优先分析法研究 (5)
7.C语⾔⽂本编辑器 (6)
8.指针检查⼯具 (6)
9.数组越界检查⼯具 (6)
10.C语⾔过程活动记录的设计 (6)
11.变量检查⼯具 (7)
12.⽂件夹分析⼯具 (7)
13.帮助⾃动⽣成⼯具 (8)
A类 (8)
3.⾃动机的状态转换图表⽰ (9)
4.局部优化的实现 (9)
5.DAG优化过程的图形化程序设计 (9)
6.C语⾔基本控制结构的四元式翻译 (9)
7.C语⾔表达式的语法分析 (10)
8.C语⾔中宏常量计算器 (10)
课程设计报告的撰写规范及要求 (13)
⼀、课程设计的版⾯ (13)
⼆、结构及要求 (13)
课程设计题⽬
课程设计题⽬分为4种难度,分别为A类、B类、C类、D类。最⾼分数依次为100,90,85,75。
D类
1.符号串的最左推导和最右推导
要求:
1.给定⽂法和符号串;
2.给出该符号串的最左推导、最右推导;
3.⽂法要求可以⽤⽂件⽅式和直接输⼊两种⽅法。
2.基本块的划分
要求:
1.从⽂件中读取任意⼀组四元式;
2.出中间代码的⼊⼝语句;
3.划分出程序的基本块。
3.循环查
要求:
1.程序流图可以使⽤⼆维数组表⽰出结点间的关系;
2.求出所有结点的必经结点集;
3.出流出中的回边;
4.给出每⼀个回边所对应的循环。
4.符号表的线性组织
要求:
1.确定符号表的单表结构的总体组织⽅式,即所有的标识符都在⼀个符号
2.设计符号表的顺序为线性组织⽅式。
3.设计符号表的属性,需要包括:符号名、数据类型、层次、在内存单元中的位置(假设数据从该过程活动记录的第3个字节开始,前3个空间
保存了返回地址、存取链等信息)
4.当读⼊的源程序为C语⾔程序/或PL/0语⾔时,设置⼀个断点,获得到达断点时的符号表的内容;
5.符号表的排序组织
1.确定符号表的单表结构的总体组织⽅式,即所有的标识符都在⼀个符号表内;
2.设计符号表的顺序为排序组织⽅式。
3.设计符号表的属性,需要包括:符号名、数据类型、层次、在内存单元中的位置(假设数据从该过程活动记录的第3个字节开始,前3个空间
保存了返回地址、存取链等信息)
4.当读⼊的源程序为C语⾔程序/或PL/0语⾔时,设置⼀个断点,获得到达断点时的符号表的内容;
5.设计函数或⽅法完成线形表的插⼊和删除操作。
C类
1.构造语法树
要求:
1.给定⽂法和符号串;
2.给出该符号串的语法树;
3.⽂法要求可以⽤⽂件⽅式和直接输⼊两种⽅法。
2.符号表的散列组织
1.确定符号表的单表结构的总体组织⽅式,即所有的标识符都在⼀个符号表内;
2.设计符号表的顺序为散列组织⽅式,查阅资料构造⼀个好的散列函数。
3.设计符号表的属性,需要包括:符号名、数据类型、层次、在内存单元中的位置(假设数据从该过程活动记录的第3个字节开始,前3个空间
保存了返回地址、存取链等信息)
4.当读⼊的源程序为C语⾔程序/或PL/0语⾔时,设置⼀个断点,获得到达断点时的符号表的内容;
设计函数或⽅法完成线形表的插⼊和删除操作。
3.PL/0语⾔的词法分析程序
要求:
2.将源程序⽂件中的单词识别出该单词是哪⼀个保留字、或者哪⼀个符号、或者是标识符、或者是常数;
3.将分析的结果以⽂件的⽅式输出;
4.该词法分析程序可以过滤掉多⾏注释/* */和单⾏注释//。
4.⾮LL(1)⽂法到LL(1)⽂法的等价变换
要求:
1.⽂法可以只采⽤产⽣式的⽅式进⾏描述;
2.查出⽂法中是否含有左递归或左公因⼦;
3.消除左公因⼦,并给出分析过程;
4.消除左递归,并给出分析过程。
5.使⽤LR(0)分析⽅法设计⼀个计算器
要求:
1.计算器必须能够完成加、减、乘、除、幂、括号()等运算符号;
2.将算术运算表达式写成LR(0)⽂法;
3.给定任意符号串,判断其是否为正确的表达式,若是给出计算结果;
4.进⾏语法分析必须采⽤LR(0)分析⽅法。
6.使⽤预测分析⽅法设计⼀个计算器
要求:
1.计算器必须能够完成加、减、乘、除、括号()等运算符号;
2.将算术运算表达式写成LL(1)⽂法;
3.给定任意符号串,判断其是否为正确的表达式,若是给出计算结果;
4.进⾏语法分析必须采⽤预测分析⽅法。
7.使⽤算符优先分析⽅法设计⼀个计算器
1.计算器必须能够完成加、减、乘、除、幂、括号()等运算符号;
2.将算术运算表达式写成算符优先⽂法;
3.给定任意符号串,判断其是否是正确的表达式,若是给出计算结果;
4.进⾏语法分析必须采⽤算符优先分析⽅法。
8.C语⾔的词法分析程序
要求:
1.写⼀个能够完成C语⾔的词法分析的程序;
2.将源程序⽂件中的单词识别出该单词是哪⼀个保留字、或者哪⼀个符号、或者是标识符、或者是常数;
3.将分析的结果以⽂件的⽅式输出;
4.该词法分析程序可以过滤掉多⾏注释/* */和单⾏注释//。
1.⾃动机的确定化和最⼩化
要求:
1.⾃动机以状态转换矩阵的⽅式在计算机内部进⾏表⽰;
2.根据NFA确定化的⽅法,将NFA确定化;
3.判断⾃动机是否以最⼩化,若不是将其最⼩化;
4.以状态转换矩阵的⽅法表⽰出确定化、最⼩化后的⾃动机。
2.⾃动机与正规式间的相互转化
要求:
1.⾃动机以状态转换矩阵的⽅式在计算机内部进⾏表⽰;
2.将给定的任意⾃动机转化成等价的正规式;
3.将给定的任意正规式转化成等价的⾃动机;
4.⾃动机要求以⽂件⽅式输⼊;
5.正规式可以在程序中输⼊。
3.预测分析法在PL/0语⾔编译器中的应⽤
要求
1.将PL/0语⾔编译器中的语法分析部分修改,采⽤预测分析⽅法;
2.⽤机器内码表⽰出PL/0语⾔⽂法的终结符和⾮终结符;
3.产⽣式可以直接⽤机器内码以⼆维数组的⽅法存储到编译器中;
4.修改PL/0编译器,⾃⼰定义⼀个函数专门⽤来完成语法分析。
4.PL/0语⾔编译器改进
要求:
1.可以过滤掉⾏注释// 和段注释/* */;
2.字母不区分⼤⼩写
3.增加数据类型:integer整型和real实型,包括:常数和变量。
4.变量定义修改为: var a,b:integer;c,d:real;
5.使⽤图形界⾯进⾏处理
5.LL(1)⽂法和预测分析⽅法
要求:
1.⽂法使⽤产⽣式来定义;
2.分别求出⽂法中每⼀个⾮终结符的FIRST 集、FOLLOW集和SELECT 集;
3.画出预测分析表;
4.判定给定的⽂法是否是LL(1)⽂法;
安卓课程设计源代码5.给定符号串判定是否是⽂法中的句⼦,分析过程⽤分析表格的⽅式打印

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。