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

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
词法分析器(c语言描述)

#include iostream #include fstream #include string #include vector using namespace std; char buf[1000];//用于保存文件中的文本的缓冲区 string Get_text();//从文件中输入 bool Is_key(string str);//判断否为关键字 int Clear_space(string str,int n);//用来删除连续的空白和换行符 string Get_words(string str,int n,int m);//获得一个单词符号,从位置i开始查找。并且有一个引用参数j,用来返回这个单词最后一个字符在str的位置。 bool Is_operation(string str,int n);//判断字符是否为一个运算符 void Output_text(vectorpairint,string v);//将词法分析结果输出 bool Is_boundary(string str,int n);//判断字符是否为一个分界符 vectorpairint,string word_analyse(vectorstring vec);//对一个字符串数组进行词法分析 /*主函数*/ int main() { int start=0; int end=0; string single_string;//保存分析出来的单个词汇 vectorstring one_word_list;//保存分析出来的单个词汇的总表 vectorpairint,string analyse_result;//最终结果以int,string二元组的形式保存在vector容器中 cout**********************************************************\n; cout*******************欢迎使用词法分析器*********************\n\n; cout(当前文件夹下Input.txt作为输入,Output.txt作为输出)\n; cout**********************************************************\n; string file_text=Get_text();//file_text保存全部文本信息 while(1) { start=Clear_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**********************************************************\n; cout***词法分析已完成,结果保存在\Output.txt\文件中!!!*****\n; cout**********************************************************\n; getchar(); return 0; } //这个函数用来除去字符串中连续的空格和换行。第一个参数为目标字符串,第二个参数为开始位置。返回值为连续的空格和换行后的第一个有效字符在字符串的位置 int Clear_space(string str,int n) { while(1) { if(str[n]!= str[n]!=\n) return n; n++; } } //获得一个单词,从位置i开始查找。并且有一个引用参数j,用来返回这个单词最后一个字符在原字符串的位置。 string Get_words(string str,int n,int m) { string separator_list((){}, ; \n+-*/=\#);//分隔符表 m=str.find_first_of(separator_list,n);//find_first_of返回匹配被查找字符串中某个字符的第一次出现位

文档评论(0)

cgtk187 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档