- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
编译原理实验—词法分析器
代码:
#includeiostream
#includefstream
#includestdio.h
#includestdlib.h
#includestring.h
using namespace std;
void out1(int i,char *str)
{
cout(i,str)endl;
}
void out2(int i,char ch)
{
cout(i,ch)endl;
}
int IsLetter(char ch) //判断ch是否是字母
{
if((ch=ach=z)||(ch=Ach=Z))
return 1;
else
return 0;
}
int IsDigit(char ch) //判断ch是否是数字
{
if(ch=0ch=9)
return 1;
else
return 0;
}
int GetBC(char ch) //判断ch是否是空格
{
if(ch== )
return 1;
else
return 0;
}
char GetChar(char *str,int i) //返回字符串当前位置的字符
{
return str[i];
}
void Reserve(char *str) //判断字符串str是关键字还是标识符
{
char char1[20][50];
strcpy(char1[1],break);
strcpy(char1[2],char);
strcpy(char1[3],continue);
strcpy(char1[4],do);
strcpy(char1[5],double);
strcpy(char1[6],else);
strcpy(char1[7],extern);
strcpy(char1[8],float);
strcpy(char1[9],for);
strcpy(char1[10],int);
strcpy(char1[11],if);
strcpy(char1[12],long);
strcpy(char1[13],short);
strcpy(char1[14],static);
strcpy(char1[15],switch);
strcpy(char1[16],void);
strcpy(char1[17],while);
int i;
int flag=0;
for(i=1;i18;i++)
{
if(strcmp(str,char1[i])==0)
{
flag=i;
break;
}
}
if(flag!=0str[0]!=0)
out1(i,str); //输出关键字
else if(str[0]!=0)
out1(70,str); //输出标识符
}
void DTB(char *str) //将str字符串的数字转换成二进制并输出
{
long sum;
int i;
int s[100];
sum=atoi(str); //字符串转换成整形
if(sum==0)
out1(80,str);
else
{
for(i=0;sum!=0;i++)
{
s[i]=sum%2;
sum=sum/2;
}
cout(80,;
for(i=i-1;i=0;i--)
couts[i];
cout);
coutendl;
}
}
void main()
{
char str1[10000]; //存放字符串
char str2[20]; //存放单词
char str3[1000]; //用于存放从文件中读得的一行字符
char filename[10];//文件名
char ch= ;
int j;
int i=0;
cout请输入文件名:;
cinfilename;
memset(str2,0,sizeof(str2)); //置空字符串
memset(str2,0,sizeof(str3)); //置空str3字符串
ifstream fin1(filename);
if(!fin1)
{
coutCannot open the file.\n; //未找到对应文件名的文件
exit(1);
}
while(fin1)
{
fin1.getline(str3,1000); //读出一行字符串
strcat(str1,str3); //将文件中的所有字符合并成一个字符串
}
while(ch)
{
if(IsLetter(ch))
{
j
您可能关注的文档
最近下载
- 新学期七年级开学第一课初一开学第一课班会ppt课件.pptx VIP
- ISO∕IEC 20000-12018《信息技术服务管理第一部分:服务管理体系要求》之5-“5.1领导作用和承诺”理解与应用指导材料.docx VIP
- 学会思考主题班会课件.pptx VIP
- 新概念英语第一册Lesson77-78笔记(语法点+配套练习+答案).docx VIP
- 厂区闭环管理方案.docx VIP
- ISO∕IEC 20000-12018《信息技术服务管理第一部分:服务管理体系要求》之6-“5.2方针”理解与应用指导材料.docx VIP
- 2025年新疆维吾尔自治区乌鲁木齐市小升初入学分班考试语文考试真题含答案.docx VIP
- 《当代电视播音主持教程》课件.pptx VIP
- 企业、事业单位专职消防站建设技术规范地方标准(DB61∕T1016-2016).pdf VIP
- 05S502阀门井图集完整版.pdf VIP
文档评论(0)