第一篇:编译原理课程设计报告---集合LASTVT(P)构造算法的程序实现
计算机与信息学院 编译原理课程设计 实验报告
专
业
班
级 学生姓名及学号 课程教学班号 任
课
教
师 实验指导教师 实验地
点
学年第学期
设计目的及要求:
集合LASTVT(P)构造算法的程序实现
设计内容及要求:构造一程序,实现教材P.91的LASTVT(P)集合的构造算法。对任一给定的算符文法G,程序输出所有非终结符P的LASTVT(P)。
设计内容:
实现教材上的算法,对于任意给定的算符文法,输出算符文法中所有的非终结符P的LASTV(P);
主要算法描述:
对于输入的文法,使用一个char型二维数组进行存储,依次对每个非终结符求LASTVT 集。
输入输出形式:
输入: 程序运行后从控制台输入算符文法,要指定输入的文法规则数目,且形式与教材文法相同。
输出:在控制台输出每个非终结符的LASTVT集,且将带有‘|’的文法转换成多个文法。
总结:
本次课程设计我借鉴了第四学期编译原理课程的课程实验,通过本次课程设计我对编译原理课程的相关内容有了复习和巩固,对当时没有弄清楚的问题有了更深的认识,更加掌握了LASTVT集的生成原理,帮助我更好地理解了算符优先分析算法。程序运行结果:
程序源码:
#include
char lable[20];//文法终极符集
char String[20][10];//用于输入串的分析
int r;//文法规则个数
int r1;//转化后文法规则个数
char st[10][30];//用来存储文法规则
char last[10][10];//文法非终结符LASTVT集
int lflag[10] = { 0 };//标志第i个非终结符的LASTVT集是否已求出
//判断是否是终结符
int zhongjie(charc)//判断字符c是否是终极符 {
}
//求lastvt集
void lastvt(charc)//求LASTVT集 {
int i, j, k, m, n;for(i = 0;i