欢迎来到天天文库
浏览记录
ID:19802991
大小:316.50 KB
页数:27页
时间:2018-10-06
《编译原理实验报告》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、中南林业科技大学实验报告课程名称:编译原理专业班级:2011级计算机科学与技术1班姓名:朱斌俊学号:201143902014年6月30日实验一词法分析器的设计一、实验目的设计词法分析器二、设计方法:1.写出该语言的词法规则。2.把词法规则转换为相应的状态转换图。3.把各转换图的初态连在一起,构成识别该语言的自动机4.设计扫描器5.把扫描器作为语法分析的一个过程,当语法分析需要一个单词时,就调用扫描器。6.扫描器从初态出发,当识别一个单词后便进入终态,送出二元式。三、实验结果输入:输出:四、实验代码#include#include#include2、>#include#includeusingnamespacestd;#defineIPTFcin#defineOPTFcout//inputflowstructWordType{stringstr;inttype;WordType(strings,intt){str=s,type=t;}};booloperator<(strings1,strings2){returns1.compare(s2)<0;}//小于重载classTL{public:mapmp;vectorres;//翻译结果stringstrCach3、e;intcacheLen;//已经读取的数据TL();boolinit();boolprintFile();booltranslate();chargetChar();//获取字符charpeek();//探测stringgetWord();//booltranslateWordByMap(stringstr);//使用map翻译private:boolisLetter(charch){return(ch>='a'&&ch<='z')4、5、(ch>='A'&&ch<='Z');}boolisNum(charch){return(ch>='0'&&ch<='9');}};TL::TL(){}6、boolTL::init(){mp.clear();ifstreammpf("mapFile.txt",ios::in);if(!mpf){cerr<<"openerror!"<>type){while(mpf>>str&&str.compare("#end")!=0){mp[str]=type;}}//endmpftypefstreamipf;//输入文件流ipf.open("inputFile.txt",ios::in);cacheLen=0;if(!ipf){cout<<"cannotfindthe7、inputFile.txt,youcaninputthefilebyconsole!"<::iteratorit;for(it=res.begin(8、);it!=res.end();it++){otf<<"("<type<<","<str<<")"<type<<",""<str<<"")"<9、10、strCache.length()==cacheLen){if(!(IPTF>>strCache))//读取失败return0;strCache+='';/11、/加入一个空格分隔符cacheLen=0;}return(char)strCache[cacheLen++];}charTL::peek(){if(strCache.compare("")==012、13、strCache.length()==cacheLen){if(!(IPTF>>strCache))//读取失败return0;strCache+='';//加入一个空格分隔符cacheLen=0;}return(char)s
2、>#include#includeusingnamespacestd;#defineIPTFcin#defineOPTFcout//inputflowstructWordType{stringstr;inttype;WordType(strings,intt){str=s,type=t;}};booloperator<(strings1,strings2){returns1.compare(s2)<0;}//小于重载classTL{public:mapmp;vectorres;//翻译结果stringstrCach
3、e;intcacheLen;//已经读取的数据TL();boolinit();boolprintFile();booltranslate();chargetChar();//获取字符charpeek();//探测stringgetWord();//booltranslateWordByMap(stringstr);//使用map翻译private:boolisLetter(charch){return(ch>='a'&&ch<='z')
4、
5、(ch>='A'&&ch<='Z');}boolisNum(charch){return(ch>='0'&&ch<='9');}};TL::TL(){}
6、boolTL::init(){mp.clear();ifstreammpf("mapFile.txt",ios::in);if(!mpf){cerr<<"openerror!"<>type){while(mpf>>str&&str.compare("#end")!=0){mp[str]=type;}}//endmpftypefstreamipf;//输入文件流ipf.open("inputFile.txt",ios::in);cacheLen=0;if(!ipf){cout<<"cannotfindthe
7、inputFile.txt,youcaninputthefilebyconsole!"<::iteratorit;for(it=res.begin(
8、);it!=res.end();it++){otf<<"("<type<<","<str<<")"<type<<",""<str<<"")"<9、10、strCache.length()==cacheLen){if(!(IPTF>>strCache))//读取失败return0;strCache+='';/11、/加入一个空格分隔符cacheLen=0;}return(char)strCache[cacheLen++];}charTL::peek(){if(strCache.compare("")==012、13、strCache.length()==cacheLen){if(!(IPTF>>strCache))//读取失败return0;strCache+='';//加入一个空格分隔符cacheLen=0;}return(char)s
9、
10、strCache.length()==cacheLen){if(!(IPTF>>strCache))//读取失败return0;strCache+='';/
11、/加入一个空格分隔符cacheLen=0;}return(char)strCache[cacheLen++];}charTL::peek(){if(strCache.compare("")==0
12、
13、strCache.length()==cacheLen){if(!(IPTF>>strCache))//读取失败return0;strCache+='';//加入一个空格分隔符cacheLen=0;}return(char)s
此文档下载收益归作者所有