如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
编译原理实验报告学院:理学院专业班级:07应用数学-01学生学号:200713575学生姓名:何继胜指导教师:李声2010年5月4日一实验题目词法分析器的设计二实验目的通过编写并上机调试一个词法分析程序,掌握在对程序设计语言的源程序进行扫描的过程中,将其分解后各类单词的词法分析方法。二实验内容使用c++编写的词法分析器keylist.txt(用来存放关键字)automainstructbreakelseswitchcaseregistertypedefexternreturnconstgotolableunsignedcontinueforprintfscanfsigneddefaultsizeofvalatildoifstaticwhilekeytpye.txt(用来存放类型)charshortintlongdoubletempfloatboolenumvoidFILEmain.cppset<string>keytype;//变量的类型列举了常用的一部分keytypeassign(keytype);//初始化变量的类型map<string,long>keylist;//存放关键字(不包含类型)string是关键字long表示出现次数keylistassign(keylist);//初始化关键字multimap<string,string>varlist;//第一个string用来存放类型第二个string用来存放变量名multiset<string>constlist;//存放文中出现的数字型常量ifstreamfin("input.c",ios::in);//打开要读取的文件fun(fin,varlist,constlist,keytype,keylist);//执行fin.close();//关闭打开的文件print(varlist,constlist,keytype,keylist);//输出结果到output.txt文件中main.hvoidkeytypeassign(set<string>&keytype);//把类型写入keytype-set(类型)中去voidkeylistassign(map<string,long>&keylist);//把关键字写入到keylist-map<string,long>中去voidprint(multimap<string,string>&varlist,multiset<string>&constlist,set<string>&keytype,map<string,long>&keylist);//输出信息内容voidfun(ifstream&fin,multimap<string,string>&varlist,multiset<string>&constlist,set<string>&keytype,map<string,long>&keylist);//执行-四实验结果input.txtintmain(intargc,char*argv[]){inti;int*a;intb[5];for(i=0;i<5;++i){b[i]=i;}for(i=0;i<5;++i){printf("%d",b[i]);}}output.txt变量类型变量名称:char*argv[]intargcintiintb[]int*a出现的关键字次数:for2main1printf2程序中出现的常量:1:04:56:b2:05:53:56:b五实验中遇到的问题总结在对判断什么时候是一个词法结束的时候有的时候没有作出正确的判断;在程序设计之初,没有一个好的规划。写程序的时候,要适当的多加些注释,一方面方便了别人的阅读,另一方面,也可以理清自己的思路。六实验心得体会1.开始拿到设计要求的时候,一定要搞搞清楚设计的要求是什么。2.设计程序的时候,要合理的列出程序的步骤。3.合理的使用条件。4.要充分的使用库文件(一定要做到对库文件有所了解)。代码:main.h#include<iostream>#include<cstring>#include<string>#include<fstream>#include<set>#include<map>usingnamespacestd;Voidkeytypeassign(set<string>&keytype){//把类型写入keytype