3第三章词法分析1.ppt
文本预览下载声明
第三章;编译过程;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++]
显示全部