理工大学
学生实验报告书
实验课程名称编译原理
开课学院计算机科学与技术学院
指导老师饶文碧
学生姓名
学生专业班级
—学年第学期实验课程名称:编译原理
char ch;
int i,c;
ch=fgetc(fp); //获取字符指针fp并自动指向下一个字符if(isalpha(ch)){ //判断该字符是否是字母
TOKEN[0]=ch;
ch=fgetc(fp);
i=1;
while(isalnum(ch)){ //判断该字符是否是字母或数字
TOKEN[i]=ch;
i++;
ch=fgetc(fp);
}
TOKEN[i]='\0';
fseek(fp,-1,1); //回退一个字符
c=lookup(TOKEN);
if(c==0)
out(6,TOKEN); //输出标识符
else out(c,TOKEN); //输出关键字
}
else
if(isdigit(ch)){ //判断是否是数字
TOKEN[0]=ch;
ch=fgetc(fp);
return(0);
}
三、主要仪器设备及耗材
VC6.0
第二部分:实验调试与结果分析(可加页)
一、调试过程(包括调试方法描述、实验数据记录,实验现象记录,实验过程发现的问题等)
在扫描源程序字符串时一旦识别出关键字、分隔符、标识符、无符号常数中之一即以单词形式各类单词均采用相同的结构,即二元式编码形式输出。
每次调用词法分析程序它均能自动继续扫描下去形成下一个单词,直至整个源程序全部扫描完毕,并形成相应的单词串形式的源程序。
二、实验结果及分析(包括结果描述、实验现象分析、影响因素讨论、综合分析和结论等)
三、实验小结、建议及体会
1、通过本次实验对词法分析的过程有了进一步的了解,并把理论知识应用于试验。
2、在编写程序过程中也遇到了很多困难,不过最终通过老师同学的帮助得到了解决。
为以后编程积累了一些小知识。
3、程序实现功能很有限,以后会继续改进。
实验课程名称:编译原理
实验项目名称赋值语句的翻译程序设计实验成绩
用LR分析法完成此次文法分析的关键在于构造该文法的分析表,以及如何运用该分析表完成移入和归约的过程,从而完成整个文法的分析。
根据LR分析的基本原理,语法分析程序的主要任务就是:不断移进输入符号,识别句柄并归约它。
在分析过程中,利用分析栈存放已识别的那部分句型,而句型的其余部分由剩余输入串组成,通过输入串的当前符号和分析栈的栈顶状态查找分析表应采取的动作,对状态栈和符号栈进行相应的操作。
本程序中主要用到的数据结构是栈,实现的相应操作有建立两个空栈
操作数栈OPR,操作符栈OPT,压栈push,出栈pop,取栈顶元素OPRtop 等,每个操作用相应的代码实现。
该数据结构主要完成状态栈的操作,对每个状态进行相应的压栈、出栈和取栈顶元素等操作。
二、实验结果及分析(包括结果描述、实验现象分析、影响因素讨论、综合分
析和结论等)
三、实验小结、建议及体会
通过本次实验对赋值语句的分析有了进一步的学习,但是这个程序在状态栈的。