📄 exp_1.cpp
字号:
#include <stdio.h>
#include <ctype.h>
#include <string.h>
#include <iostream.h>
#include <fstream.h>
#include"search.h"
extern int reserve(char*);
extern void output(int,char*);
char token[20];
char ch;
int i,c;
void scanner(FILE *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';
c=reserve(token);
if(c!=-1)
{
/*if(c<5)//检查保留字的正确性
{
for(int i=0;i<20;i++)
{
if(checkKey[i]==0)
checkKey[i]=c;
break;
}
}*/
switch(c)
{
case 1:checkBegin++;break;
case 2:checkEnd++;break;
case 3:checkIf++;break;
case 4:checkThen++;break;
default:break;
}
//output(c,token);
output(c," ");
}
else
output(19,token);
}
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(18,token);
}
else
switch(ch)
{
case'=':output(21," ");break;
case'+':output(22," ");break;
case'-':output(23," ");break;
case'*':output(24," ");break;
case'/':output(25," ");ch=fgetc(fp);
if(ch=='*')
output(26," ");
else
{
fseek(fp,-1,1);
output(27," ");
}
break;
case'(':output(28," ");checkL++;break;
case')':output(29," ");checkR++;break;
case';':output(30," ");break;
case':':ch=fgetc(fp);
if(ch=='=')
output(32," ");
else
{
fseek(fp,-1,1);
output(33," ");
}
break;
case'>':ch=fgetc(fp);
if(ch=='=')
output(34," ");
else
{
fseek(fp,-1,1);
output(35," ");
}
break;
case'<':ch=fgetc(fp);
if(ch=='=')
output(36," ");
else if(ch=='>')
output(37," ");
else
{
fseek(fp,-1,1);
output(38," ");
}
break;
//default:printf("ERROR in wrongSign");
}
}
void main()
{
FILE *fp;
//FILE *fp2;
char wenjian[30];
printf("请输入文件名:\n");
scanf("%s",&wenjian);
//scanf("%s",&wenjian2);
fp=fopen(wenjian,"r");
//fp2=ffp=fopen(wenjian2,"w");
while(!feof(fp))
{
scanner(fp);
}
checkEqual(checkBegin,checkEnd,'B');
checkEqual(checkIf,checkThen,'I');
checkEqual(checkL,checkR,'L');
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -