自己编的!怎么感谢我?!还有一段关键的analysis函数,贴出福利再给你
#include<stdio.h>
#include<string.h>
struct key{
char name[20];
int number;
} keyword[33]={
{"+",1},{"-",2},{"*",3},{"/",4},
{"<",5},{"<=",6},{"==",7},{"!=",8},
{">",9},{">=",10},{"&",11},{"&&",12},
{"||",13},{"=",14},{"(",15},{")",16},
{"[",17},{"]",18},{"{",19},{"}",20},
{":",21},{";",22},{",",23},{"void",24},
{"int",25},{"float",26},{"char",27},{"if",28},
{"else",29},{"while",30},{"do",31},
{"!",32},{"main",33}};
struct symbol{
char word[255];
int wordnumber;
} symbolword, wordtab[1000];
char ch;
char input[1000];
char token[255]="";
int p_input;
int p_token;
int p_wordtab;
/*************************************/
bool is_digit(){
return (ch<='9' && ch>='0');
}
bool is_letter(){
return (ch>='a' && ch<='z' || ch>'A' && ch<'Z');
}
void delete_space(){
while(ch==' ' || ch==10){
ch=input[p_input];
p_input=p_input+1;
}
}
void contact(){
token[p_token]=ch;
p_token=p_token+1;
token[p_token]='\0';
}
int search(){
int i=0;
while(i<=32){
if(!strcmp(keyword.name,token)){
return i+1;
}
i=i+1;
}
return 34;
}
void printtab(){
printf("%s\t%d\n",symbolword.word,symbolword.wordnumber);
strcpy(wordtab[p_wordtab].word,symbolword.word);
wordtab[p_wordtab].wordnumber=symbolword.wordnumber;
p_wordtab++;
}
/*************************************/
int main(){
FILE *fp;
fp=fopen("input.txt","r");
if(fp==NULL){
printf("无法打开文件,请把程序放入input.txt然后存放在工程文件夹内!\n");
return 0;
}else{
int i=0;
char c;
while((c=fgetc(fp))!=EOF){
input=c;
i++;
}
input='\0';
}
fclose(fp);
p_input=0;
p_wordtab=0;
while(input[p_input]!='\0'){
analysis();
}
return 0;
}