全文预览

编译原理课程设计报告 + 源代码

上传者:苏堤漫步 |  格式:doc  |  页数:50 |  大小:209KB

文档介绍
析,获取一个符号*/intgetsym(){?inti,j,k;?while(ch==''||ch==10||ch==9)?{ getchdo;?}?if(ch>='a'&&ch<='z')?{ k=0; do{ if(k<al) { a[k]=ch; k++; } getchdo; }while(ch>='a'&&ch<='z'||ch>='0'&&ch<='9'); a[k]=0; strcpy(id,a); i=0; j=norw-1; do{ k=(i+j)/2; if(strcmp(id,word[k])<=0) { j=k-1; } if(strcmp(id,word[k])>=0) { i=k+1; } }while(i<=j); if(i-1>j) { sym=wsym[k]; } else { sym=ident; }?}?else?{ if(ch>='0'&&ch<='9') { k=0; num=0; sym=number; do{ num=10*num+ch-'0'; k++; getchdo; }while(ch>='0'&&ch<='9');/*获取数字的值*/ k--; if(k>nmax) { error(30); } } else { if(ch==':')/*检测赋值符号*/ { getchdo; if(ch=='=') { sym=es; getchdo; } else { sym=nul;/*不能识别的符号*/ } } else { if(ch=='<')/*检测小于或小于等于符号*/ { getchdo; if(ch=='=') { sym=leq; getchdo; } else { if(ch=='>')/*将“#”变成"<>"*/ { sym=neq; getchdo; } else { sym=lss; } } } else

收藏

分享

举报
下载此文档