📄 a.cpp
字号:
#include<ctype.h>
#include<string.h>
#include<stdio.h>
struct node
{ int code;char value[32];};
char buffer[100];
char * respoint=buffer;
char keepword[5][20]={"BEGIN","IF","THEN","ELSE","END"};
char nametable[100][32];
char consttable[100][32];
int temp1=0,temp2=0;
char ch;
char strstoken[32];
void GetChar()
{
ch=*respoint;
respoint++;
return;
}
void GetBC()
{
while(ch==' '){
ch=*respoint;
respoint++;
}
}
void Concat()
{
strncat(strstoken,&ch,1);
}
int Reserve()
{
for(int i=0;i<5;i++)
if(!strcmp(strstoken,keepword[i]))
return i+1;
return 0;
}
void Retract()
{
respoint--;
ch=' ';
}
char * Insertid()
{
temp1++;
strcpy(nametable[temp1],strstoken);
return nametable[temp1];
}
char * Insertconst()
{
temp2++;
strcpy(consttable[temp2],strstoken);
return consttable[temp2];
}
struct node scan()
{
int code1;
struct node tem;
strcpy(strstoken,"");
GetChar();
GetBC();
if(isalpha(ch)){
while(isalpha(ch)||isdigit(ch)){
Concat();
GetChar();
}
Retract();
code1=Reserve();
if(code1==0){
strcpy(tem.value,Insertid());
tem.code=code1;
return tem;}
else {strcpy(tem.value,"-");tem.code=code1;return tem;}
}
else if(isdigit(ch)){
while(isdigit(ch)){
Concat();
GetChar();
}
Retract();
strcpy(tem.value,Insertconst());
tem.code=7;
return tem;
}
else if(ch=='='){
tem.code=8;strcpy(tem.value,"-");return tem;}
else if(ch=='+'){
tem.code=9;strcpy(tem.value,"-");return tem;}
else if(ch=='*'){
GetChar();
if(ch=='*'){
tem.code=11;strcpy(tem.value,"-");return tem;}
Retract();
tem.code=10;strcpy(tem.value,"-");return tem;}
else if(ch==','){
tem.code=12;strcpy(tem.value,"-");return tem;}
else if(ch=='('){
tem.code=13;strcpy(tem.value,"-");return tem;}
else if(ch==')'){
tem.code=14;strcpy(tem.value,"-");return tem;}
else{
tem.code=15;strcpy(tem.value,"don't justic");return tem;}
}
void main()
{
gets(buffer);
struct node a;
a=scan();
printf("%d %s\n",a.code,a.value);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -