📄 zx.cpp
字号:
#include<stdio.h>
#include<string.h>
#include<ctype.h>
#include"search.h"
extern int reserve(char*);//返回单词种别码的函数
extern void output(int,char*);//输出函数
char token[20];//存放字符串的数组
char ch;//接受字符变量
int i;//计数器
int c;//状态码
//处理标志符
void scanner(FILE *fp)//scanner处理标志符函数,*fp指向接收文件的指针
{
ch=fgetc(fp);//接收字符
if(isalpha(ch))//判断是否为字母
{
token[0]=ch;//将字符存到字符串数组中
i=1;
ch=fgetc(fp);//指针后移
while(isalpha(ch)||isalnum(ch))//以字母开头,后接数字或字母
{
token[i]=ch;
i++;
ch=fgetc(fp);//再接收字符
}
fseek(fp,-1,1);//文件指针后退
token[i]='\0';//以'\0'结束
c=reserve(token);//返回字符串数组
if(c!=-1)
output(c,token);//输出单词种别码,单词
else
output(10,token);//标志符种别码定义为10,返回字符串数组信息
}
//处理整数(大体思想与字符一样)
else if(isdigit(ch))//判断是否为整数
{
token[0]=ch;
ch=fgetc(fp);
i=1;
while(isdigit(ch))
{
token[i]=ch;
i++;
ch=fgetc(fp);
}
token[i]='\0';
fseek(fp,-1,1);//文件指针后退一个字节
output(4,token);//int 种别码定义为4
}
else
//处理界符
switch(ch)//接收对象为二字节运算符
{
case'=':ch=fgetc(fp);
if(ch=='=')
output(39,"==");
else
{
fseek(fp,-1,1);//指针后退
output(21,"=");
}
break;
//以下为一个字节的运算符号
case'+':output(22,"+");break;// 界符表顺序如下:= == + - * / ( ) [ ] { } , : ; > >= < <= !=
case'-':output(23,"-");break;
case'*':output(24,"*");break;
case'/':output(25,"/");break;
case'(':output(26,"(");break;
case')':output(27,")");break;
case'[':output(28,"[");break;
case']':output(29,"]");break;
case'{':output(30,"{");break;
case'}':output(31,"}");break;
case',':output(32,",");break;
case':':output(33,":");break;
case';':output(34,";");break;
case'>':ch=fgetc(fp);//判断输入界符是">"或">="
if(ch=='=')
output(37,">=");
else
{
fseek(fp,-1,1);
output(35,">");
}
break;
case'<':ch=fgetc(fp);//判断输入界符是"<"或"<="
if(ch=='=')
output(38,"<=");
else
{
fseek(fp,-1,1);
output(36,"<");
}
break;
case'!':ch=fgetc(fp);
if(ch=='=')
output(40,"!=");
else
{
fseek(fp,-1,1);
output(-1,"ERROR!");//报错
}
break;
}
}
void main()
{
FILE *fp;
char test[30];//定义文件长度
//fp=fopne("test.dat", "w");
printf("Please input the file you want to transform:");
scanf("%s",&test);//输入源程序
fp=fopen("test.txt","r");//读入字符流
while(!feof(fp))//判断文件是否结束
{
//fgetc(fp);
scanner(fp);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -