文档详情

3第三章词法分析1.ppt

发布:2017-04-29约3.41千字共60页下载文档
文本预览下载声明
第三章;编译过程;3.1词法分析程序的任务;3.2.1语言的单词符号;3.2.2词法分析程序的输出形式;实验1:词法分析;各种单词符号对应的种别码;词法分析程序的功能;词法分析 程序;main() { p=0; printf(\n 请输入源程序段); do{ ch=getchar(); prog[p++]=ch; }while (ch!=#); p=0; do{ scaner(); //读取一个单词符号,类型syn,单词token或sum switch(syn) { case 11: printf(\n(%d,%d),syn,sum); break; case -1: printf(\n(%s,出错!),token);break; default: printf(\n(%d,%s),syn, token); } }while (syn!=0); system(pause); };scaner() { for (n=0;n20;n++) token[n]=NULL; m=0; sum=0; ch=prog[p++]; while (ch== ) {ch=prog[p++];} if (ch=a ch=z) //标识符 {while (ch=a ch=z||ch=0 ch=9) { token[m++]=ch; ch=prog[p++]; } syn=10;p--; for (n=0;n6;n++) ////标识符是否关键词 if(strcmp(token,rwtab[n])==0) {syn=n+1;break;} }; else if(ch=0 ch=9)//整数 {while (ch=0 ch=9) {sum=sum*10+(ch-0); ch=prog[p++];} syn=11;p--; } else ; switch(ch) { case : token[m++]=ch; ch=prog[p++]; if (ch==) {syn=21;token[m++]=ch;} // else if (ch===) {syn=22;token[m++]=ch;}//= else {syn=20;p--;} // break; case : m=0; token[m++]=ch; ch=prog[p++]; if (ch===){syn=24;token[m++]=ch;} //= else {syn=23;p--;} // break; case :: m=0; token[m++]
显示全部
相似文档