计算机与信息学院编译原理课程设计实验报告
专
业
班
级
学生姓名及学号课程教学班号任课教师
实验指导教师实验地点
学年第
学期
f设计目的及要求:集合LASTVTP构造算法的程序实现设计内容及要求:构造一程序,实现教材P91的LASTVTP集合的构造算法。对任一给定的算符文法G,程序输出所有非终结符P的LASTVTP。
设计内容:实现教材上的算法,对于任意给定的算符文法,输出算符文法中所有的非终结符P的LASTVP
主要算法描述:对于输入的文法,使用一个char型二维数组进行存储,依次对每个非终结符求LASTVT集。
输入输出形式:输入:程序运行后从控制台输入算符文法,要指定输入的文法规则数目,且形式与教材文法相同。
输出:在控制台输出每个非终结符的LASTVT集,且将带有‘’的文法转换成多个文法。
总结:本次课程设计我借鉴了第四学期编译原理课程的课程实验,通过本次课程设计我对编译原理课程的相关内容有了复习和巩固,对当时没有弄清楚的问题有了更深的认识,更加掌握了LASTVT集的生成原理,帮助我更好地理解了算符优先分析算法。
f程序运行结果:
f程序源码:
i
cludestdiohi
cludestdlibhi
cludeiostreamusi
g
amespacestdcharlable20charStri
g2010i
tri
tr1charst1030charlast1010i
tlflag100判断是否是终结符i
tzho
gjiecharci
tifori0lablei0iifclableiretur
1retur
0求lastvt集voidlastvtcharci
tijkm
fori0iriifsti0cbreak求LASTVT集判断字符c是否是终极符文法终极符集用于输入串的分析文法规则个数转化后文法规则个数用来存储文法规则文法非终结符LASTVT集标志第i个非终结符的LASTVT集是否已求出
fiflflagi0
lasti01m0doifstim10stim1ifzho
gjiestimlasti
stim
elseifzho
gjiestim1lasti
stim1
ifstimclastvtstimforj0jrjifstj0stimbreakfork0klastj0ki
ttfort0t
tiflastitlastjk1breakift
lasti
lastjk1
fmwhilestim0lasti
0lasti0
lflagi1转换“”voidtra
sformchartext2010i
tijlx0y0x0fori0iritextxysti0yforj1stij0jifstijtextxy0xy0textxysti0ytextxytextxyelsetextxystijyr