词法分析器(c++语言描述)

词法分析器(c++语言描述)

ID:11884048

大小:51.50 KB

页数:6页

时间:2018-07-14

词法分析器(c++语言描述)_第1页
词法分析器(c++语言描述)_第2页
词法分析器(c++语言描述)_第3页
词法分析器(c++语言描述)_第4页
词法分析器(c++语言描述)_第5页
资源描述:

《词法分析器(c++语言描述)》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、#include#include#include#includeusingnamespacestd;charbuf[1000];//用于保存文件中的文本的缓冲区stringGet_text();//从文件中输入boolIs_key(stringstr);//判断否为关键字intClear_space(stringstr,intn);//用来删除连续的空白和换行符stringGet_words(stringstr,intn,int&m);//

2、获得一个单词符号,从位置i开始查找。并且有一个引用参数j,用来返回这个单词最后一个字符在str的位置。boolIs_operation(stringstr,intn);//判断字符是否为一个运算符voidOutput_text(vector>v);//将词法分析结果输出boolIs_boundary(stringstr,intn);//判断字符是否为一个分界符vector>word_analyse(vectorvec);//对

3、一个字符串数组进行词法分析/*主函数*/intmain(){intstart=0;intend=0;stringsingle_string;//保存分析出来的单个词汇vectorone_word_list;//保存分析出来的单个词汇的总表vector>analyse_result;//最终结果以二元组的形式保存在vector容器中cout<<"***********************************************

4、***********";cout<<"*******************欢迎使用词法分析器*********************";cout<<"(当前文件夹下Input.txt作为输入,Output.txt作为输出)";cout<<"**********************************************************";stringfile_text=Get_text();//file_text保存全部文本信息while(1){start=Cle

5、ar_space(file_text,start);single_string=Get_words(file_text,start,end);if(end==-1)break;one_word_list.push_back(single_string);start=end+1;};analyse_result=word_analyse(one_word_list);Output_text(analyse_result);cout<<"**************************************

6、********************";cout<<"***词法分析已完成,结果保存在"Output.txt"文件中!!!*****";cout<<"**********************************************************";getchar();return0;}//这个函数用来除去字符串中连续的空格和换行。第一个参数为目标字符串,第二个参数为开始位置。返回值为连续的空格和换行后的第一个有效字符在字符串的位置intClear_space(stri

7、ngstr,intn){while(1){if(str[n]!=''&&str[n]!='')returnn;n++;}}//获得一个单词,从位置i开始查找。并且有一个引用参数j,用来返回这个单词最后一个字符在原字符串的位置。stringGet_words(stringstr,intn,int&m){stringseparator_list("(){}<>,; +-*/="#");//分隔符表m=str.find_first_of(separator_list,n);//find_first_of返

8、回匹配被查找字符串中某个字符的第一次出现位置if(m==-1)return"";if(n!=m)m--;returnstr.substr(n,m-n+1);//返回字符串的子集,位置为i后面的j-i+1个字符}//判断i当前所指的字符是否为一个分界符,是的话返回真,反之假boolIs_boundary(stringstr,intn){intnn;charboundary_list[7]={',','

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。