欢迎来到天天文库
浏览记录
ID:38685255
大小:31.00 KB
页数:6页
时间:2019-06-17
《词法分析器的实现》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、我自己写的个词法分析程序可以完成一个非常非常基本的C语言词法分析.自己鼓励下自己:-) #include #include #include #include #include #include #include usingnamespacestd; //用来存储目标文件名 stringfile_name; //提取文本文件中的信息。 stringGet
2、Text(); //获得一个单词符号,从位置i开始查找。 //并且有一个引用参数j,用来返回这个单词最后一个字符在str的位置。 stringGetWord(stringstr,inti,int&j); //这个函数用来除去字符串中连续的空格和换行 //第一个参数为目标字符串,第二个参数为开始位置 //返回值为连续的空格和换行后的第一个有效字符在字符串的位置 intDeleteNull(stringstr,inti); //判断i当前所指的字符是否为一个分界符,是的话返回真,反之假 b
3、oolIsBoundary(stringstr,inti); //判断i当前所指的字符是否为一个运算符,是的话返回真,反之假 boolIsOperation(stringstr,inti); //此函数将一个pair数组输出到一个文件中 voidOutFile(vector>v); //此函数接受一个字符串数组,对它进行词法分析,返回一个pair型数组 vector>analyst(vectorvec);
4、 //此函数判断传递的参数是否为关键字,是的话,返回真,反之返回假 boolIsKey(stringstr); intmain() { cout<<"###########################"; cout<<"###copyright:Giftedbird###"; cout<<"###########################"; stringcom1=""; stringcom2=""; stringfileline=GetText(); intbe
5、gin=0,end=0; vectorarray; do { begin=DeleteNull(fileline,begin); stringnowString; nowString=GetWord(fileline,begin,end); if(end==-1) break; if(nowString.compare(com1)&&nowString.compare(com2)) array.push_back(nowString); begin=end+1; }while
6、(true); vector>mid_result; mid_result=analyst(array); OutFile(mid_result); cout<<"**********************************************************************"; cout<<"***程序已完成词法分析,分析结果已经存储在文件"<7、*******************************************************"; system("pause"); return0; } //提取文本文件中的信息 stringGetText() { stringfile_name1; cout<<"请输入源文件名(包括路径和后缀名):"; cin>>file_name1; ifstreaminfile(file_name1.c_str(),ios::in); if(!infile) { cerr<8、<"哦!无法打开文件"<
7、*******************************************************"; system("pause"); return0; } //提取文本文件中的信息 stringGetText() { stringfile_name1; cout<<"请输入源文件名(包括路径和后缀名):"; cin>>file_name1; ifstreaminfile(file_name1.c_str(),ios::in); if(!infile) { cerr<
8、<"哦!无法打开文件"<
此文档下载收益归作者所有