- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 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返回匹配被查找字符串中某个字符的第一次出现位
您可能关注的文档
最近下载
- GB∕T 34590.1-2022 道路车辆 功能安全 第1部分:术语.pdf
- 正激类(全桥、半桥、推挽、正激)变压器计算.xls VIP
- 《重点单位重要部位安全技术防范系统要求 第10部分:党政机关》..doc VIP
- 化学校本课程教材-溧阳市光华高级中学.doc VIP
- 室外停车场施工组织设计.docx VIP
- 中外设计史-全套PPT课件.pptx
- TE端子压接标准114-18022中文版.pdf VIP
- 2024年《国有企业管理人员处分条例》学习解读课件.pptx VIP
- 2025至2030年中国机电设备安装工程行业发展前景预测及投资战略咨询报告.docx
- 人美版(2024新版)七年级美术上册第三单元第二课《神奇瑞兽》精品课件.pptx VIP
文档评论(0)