#include<stdio.h>
#include<string.h>
#include<ctype.h>
#include<stdlib.h>
char some[20];
char ch;
int i,c;
struct suct
{
int id;
char *code;
};
struct suct keyword[] = {
{1,"main"},
{2,"int"},
{3,"char"},
{4,"if"},
{5,"else"},
{6,"for"},
{7,"while"},
{8,"do"}
};
int reserve(char* p)
{ int i=0;
for(i=0;i<8;i++ )
{
if(strcmp(p,keyword[i].code)==0)
return(keyword[i].id);
}
return(-1);
}
void output(int t,char *s)
{
printf("[ %d , %s ]\n",t,s);
}
void getto(FILE*fp)
{
ch=fgetc(fp);
if(isalpha(ch))
{
some[0]=ch;
i=1;
ch=fgetc(fp);
while(isalpha(ch)||isalnum(ch))
{
some[i]=ch;
i++ ;
ch=fgetc(fp);
}
fseek(fp,-1,1);
some[i]='\0';
c=reserve(some);
if(c!=-1)
output(1,some);
else
output(2,some);
}
else if(isdigit(ch))
{
some[0]=ch;
ch=fgetc(fp);
i=1;
while(isdigit(ch))
{
some[i]=ch;
i++ ;
ch=fgetc(fp);
}
some[i]='\0';
fseek(fp,-1,1);
output(3,some);
}
else
switch(ch)
{
case'=':ch=fgetc(fp);
if(ch=='=')
output(4,"==");
else
{
fseek(fp,-1,1);
output(4,"=");
}
break;
case'-':output(4,"-");break;
case'*':output(4,"*");break;
case'/':output(4,"/");break;
case'(':output(5,"(");break;
case')':output(5,")");break;
case'[':output(5,"[");break;
case']':output(5,"]");break;
case'{':output(5,"{");break;
case'}':output(5,"}");break;
case',':output(5,",");break;
case':':output(5,":");break;
case';':output(5,";");break;
case'>':ch=fgetc(fp);
if(ch=='=')
output(4,">=");
else
{
fseek(fp,-1,1);
output(4,">");
}
break;
case'<':ch=fgetc(fp);
if(ch=='=')
output(4,"<=");
else
{
fseek(fp,-1,1);
output(4,"<");
}
break;
case'!':ch=fgetc(fp);
if(ch=='=')
output(4,"!=");
else
{
fseek(fp,-1,1);
output(-1,"ERROR!");
}
break;
}
}
void main()
{FILE*fp;
char wlj[30];
int i;
printf("Please input the file you want to ansform:");
scanf("%s",&wlj);
if((fp=fopen("file1.txt","w"))==NULL)
{printf("cannot open file");
exit(0);
}
while(strlen(wlj)>0)
{
fputs(wlj,fp);
fputs("\n",fp);
}
while(!feof(fp))
{
getto(fp);
}
fclose(fp);
}
BYC.rar_things
版权申诉
123 浏览量
2022-09-14
14:35:17
上传
评论
收藏 1KB RAR 举报
weixin_42653672
- 粉丝: 93
- 资源: 1万+
最新资源
- plantuml======资源
- 基于java开发的密码解锁APP,包含手势密码解锁+指纹密码解锁+源码+项目界面展示(毕业设计&课程设计&项目开发)
- 基于单片机的智能窗帘设计
- 基于STM32F103C8T6+LCD1602+MCP6S28的8通道模拟可编程增益放大器Proteus仿真
- 5G RAN NR TDD单用户峰值吞吐率计算过程.pptx
- 基于Objective-C开发的手势密码解锁和面容解锁(代码简洁高效通俗易懂)+源码+开发文档+源码解析(毕业设计&课程设计)
- LangChain学习之 Question And Answer的操作附带数据文件
- linux常用命令大全.zip
- CATIA入门操作案例-正八边异形带孔凸台绘制,等距点绘制正多边形,凸台绘制
- 大型代码语言模型的项目级提示生成pdf
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈