资源描述:
《编译原理词法分析器c++源程序》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、编译原理的词法分析器C++源代码#include#include#include#include#include#includeFILE*fp;charch;char*keyword[34]={"auto","break","case","char","const","continue","default","do","double","else","enum","extern","float","for","goto","if","in
2、t","long","register","return","short","signed","sizeof","static","struct","switch","typedef","printf","union","unsigned","void","volatile","while","main"};char*operatornum[6]={"+","-","*","/","++","--"};char*comparison[8]={"<","<=","=",">",">=","<>","==","!="};char*interpunctio
3、n[8]={",",";",":=",".","(",")","{","}"};char*biaoshifu[6]={"%","$","^","&","_","#"};//特殊标识符char*zhushifu[3]={"//","/*","*/"};//注释符char*luoji[3]={"&&","
4、
5、","!"};//逻辑运算符//////////////////////////////////////////////////////////////////////////////////////////boolsearch(charsearch
6、str[],intwordtype){inti;switch(wordtype){case1:for(i=0;i<=33;i++){if(strcmp(keyword[i],searchstr)==0)return(true);}case2:{for(i=0;i<=5;i++){if(strcmp(operatornum[i],searchstr)==0)return(true);}break;}case3:{for(i=0;i<=7;i++){if(strcmp(comparison[i],searchstr)==0)return(true);}b
7、reak;}case4:for(i=0;i<=7;i++){if(strcmp(interpunction[i],searchstr)==0)return(true);}break;case5:for(i=0;i<=5;i++){if(strcmp(biaoshifu[i],searchstr)==0)return(true);}break;case6:for(i=0;i<=2;i++){if(strcmp(zhushifu[i],searchstr)==0)return(true);}break;case7:for(i=0;i<=2;i++){if
8、(strcmp(luoji[i],searchstr)==0)return(true);}break;}return(false);}///////////////////////////////////////////////////////////////////////////////////////////charletterprocess(charch)//字母处理函数{inti=-1;charletter[20];while(isalnum(ch)!=0){letter[++i]=ch;ch=fgetc(fp);};letter[i+1]
9、=' ';if(search(letter,1)){printf("<%s,关键字>",letter);//strcat(letter,"");//fputs('<'letter'>',outp);}else{printf("<%s,自定义变量>",letter);//strcat(letter,"");//fputs(letter,outp);}return(ch);}////////////////////////////////////////////////////////////////////////////////
10、///////////charnumberprocess(charch)//数字处理程序{inti=-1;c