📄 新建 文本文档 (4).txt
字号:
#include <string.h>
#include<stdio.h>
#include<conio.h>
#define O 350
#define P 15
#define Q 200
Struct translate
{
int code;
char word[20];
};
Int m,math;
char ch.str[0];
char strToken[p];
struct translate words[Q];
void TakeChar()
{
ch =str[m++];
}
void TakeBC() // 去掉空白
{
while(ch==’’)
TakeChar()
}
void Concat()
{
int len=strlen(strToken);
strToken[len]=ch;
strToken[len+1]=’\0’;
}
int IsDigit() //判断是否是常数
{
If(ch>=’\0’&&<=’9’)
return(1);
else
return(0);
}
int IsLetter() //判断是否为标志符
{
if ( (ch>=’a’&&ch<=’m’)|| (ch>=’A’&&ch<=’Z’))
return(1);
else
return(0);
}
int Recover() //判断字符是否为保留字
{
Char *keywords[]={“if”,”int”, “for” ,“while”, “do” ,“return”, “break”, “continue”}};
Int i,math=8;
for(i=0;i<math;i++)
if(strcmp(strToken,keywords[i])==0)
return(1);
return(0);
}
Viod Retract()
{
m--;
ch=’ ’;
}
Viod Insertd(int code) //将字符类型和相应的字符依次放到数组word[]中
{
strcpy(word[math].word.strToken);
word[math].code=code;
math++;
}
int MParser() //判断输入字符的类型,并返回相应的类型值
{
strcpy(strToken,””);
TakeChar();
TakeBC();
If(IsLetter())
{
While(IsLetter()||IsDigit())
{
Concat();
TakeChar();
}
Retract();
If(Recover())
Return(1);
Return(2);
}
else if(IsDigit())
{
while(IsDigit())
{
Concat();
TakeChar();
}
Retract();
Return(3);
}
else if(ch==’+’||ch==’*’||ch==’/’||ch==’=’) //判断是否为运算符
{
Concat();
return(4);
}
else if(ch==’<’||ch==’>’||ch==’!’) //判断是否为运算符
{
Concat();
return(4);
}
else
{
Retract();
return(4);
}
}
else if(ch==’,’||ch==’;’||ch==’{’||ch==’}’ ||ch==’(’ ||ch==’)’) //判断是否为分隔符
{
Concat();
return(5);
}
else //无法识别
{
Concat();
return(0);
}
}
main()
{
Int i, j, k, row;
Char strl[p][q];
m=0;
math=0;
printf(“input and end input with line #:/n”);
row=0;
while(row<q)
{
gets(strl[row]);
if(strl[row][0]==’#’)
break;
row++;
}
k=0;
for(i=0;i<row;i++)
{
if(strl[i][0]!’\0’)
{
for(j=0;str[i][j]!’\0’;j++)
str[k++]=str[i][j]l
str[k++]=’’;
}
}
str[k-1]=’\0’;
while(str[m]!=’\0’)
{
InsertId(MParser());
}
for(i=0;i<math;i++)
printf(“(%d,%s)\n”, words[i], code, wors[i], word);
getch();
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -