资源描述:
《编译实验代码.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、1、词法分析/*cifafenxichengxu*/#include#include#include#include#include#defineNULL0 FILE*fp;charcbuffer;char*key[8]={"if","else","for","while","do","return","break","continue"};char*border[6]={",",";","{","}","(",")"};char*arithmetic[4]={"+","-","*","/"};
2、char*relation[6]={"<","<=","=",">",">=","<>"};char*consts[20];char*label[20];intconstnum=0,labelnum=0; intsearch(charsearchchar[],intwordtype){ inti=0; switch(wordtype){ case1:for(i=0;i<=7;i++) { if(strcmp(key[i],searchchar)==0) return(i+1)
3、; } case2:{for(i=0;i<=5;i++) { if(strcmp(border[i],searchchar)==0) return(i+1); } return(0); } case3:{for(i=0;i<=3;i++) { if(strcmp(arithmetic[i],searchchar)==0)
4、 { return(i+1); } } return(0); } case4:{for(i=0;i<=5;i++) { if(strcmp(relation[i],searchchar)==0) { return(i+1); }
5、 } return(0); } case5:{for(i=0;i<=constnum;i++) { if(strcmp(consts[i],searchchar)==0) { return(i+1); } } consts[i-1]=(char*)malloc(sizeof(search
6、char)); strcpy(consts[i-1],searchchar); constnum++; return(i); } case6:{for(i=0;i<=labelnum;i++) { if(strcmp(label[i],searchchar)==0) { return(i+1); }
7、 } label[i-1]=(char*)malloc(sizeof(searchchar)); strcpy(label[i-1],searchchar); labelnum++; return(i); } } } charalphaprocess(charbuffer){ intaty