资源描述:
《词法分析程序.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、*******************************************词法分析程序2007.12.5********************************************/#include#include#includevoidinit();/*******************************************主函数********************************************/main(){inti;i
2、nit();/*初始化*/i=scanner();/*扫描源程序*/if(i==1)printf("Theanswerisin'output.txt':");getch();}/*******************************************初始化函数********************************************/voidinit(){char*key[]={"","auto","break","case","char","const","continue","default","do","
3、double","else","enum","extern","float","for","goto","if","int","long","register","return","short","signed","sizeof","static","struct","switch","typedef","union","unsigned","void","volatile","while"};/*C语言所有关键字,共个*/char*limit[]={"","(",")","[","]","->",".","!","++","--","&
4、","~","*","/","%","+","-","<<",">>","<","<=",">",">=","==","!=","&&","
5、
6、","=","+=","-=","*=","/=",",",";","{","}","#","_","'"};/*共个运算、限界符*/FILE*fp;inti;charc;fp=fopen("key.txt","w");for(i=1;i<=32;i++)fprintf(fp,"%s",key[i]);fclose(fp);/*初始化关键字*/fp=fopen("limit.txt","w")
7、;for(i=1;i<=38;i++)fprintf(fp,"%s",limit[i]);c='"';fprintf(fp,"%c",c);fclose(fp);/*初始化运算、限界符表*/fp=fopen("id.txt","w");fclose(fp);/*初始化标识符表*/fp=fopen("constant.txt","w");fclose(fp);/*初始化常数表*/fp=fopen("output.txt","w");fclose(fp);/*初始化输出文件*/}/***************************
8、****************十进制转二进制函数********************************************/char*dtb(char*buf){inttemp[20];char*binary;intvalue=0,i=0,j;for(i=0;buf[i]!=' ';i++)value=value*10+(buf[i]-48);/*先将字符转化为十进制数*/if(value==0){binary=malloc(2*sizeof(char));binary[0]='0';binary[1]=' ';ret
9、urn(binary);}i=0;while(value!=0){temp[i++]=value%2;value/=2;}temp[i]=' ';binary=malloc((i+1)*sizeof(char));for(j=0;j<=i-1;j++)binary[j]=(char)(temp[i-j-1]+48);binary[i]=' ';return(binary);}/*******************************************根据不同命令查表或造表函数************************
10、********************/intfind(char*buf,inttype,intcommand){intnumber=0;FILE*fp;charc;chartemp[30]