天津理工大学编译原理实验一 下载本文

return -1; }

firchar=head(in);//得到头文件和#define下的第一个非#等字符 late=1;

while(fgets(buf,bufsize,in)!=NULL) {

Char=firchar;

int len=strlen(buf); buf[len-1]='\\0'; start=0;

while(firchar!='\\0') { while(buf[start]==' '&&firchar==' ') start++; if(firchar==' ') { if(buf[start] =='\\0') break;

firchar= buf[start];//当firchar是空格且其后一个是非空字符时, start++; //将后值赋给firchar并将角标加一 } if(isalpha(firchar)) dealAlpha(); else if(isdigit(firchar)) dealDigit(); else if(firchar=='/') { if(buf[start]=='/'||buf[start]=='*')//注释 { dealNotation(); if(!notation) { fprintf(Error,\ } break; } else//运算符 dealOperate(); } else if(Border(firchar)) dealBorder(); else if(Operate(firchar)) dealOperate(); else if(firchar=='\\''||firchar=='\ dealChar(firchar);

第21页 共23页

else//字符不再编译器识别范围之内 {

fprintf(Error,\ firchar=buf[start];//字符后移 } start++; }

if(!notation) break; line++;

if(last==true) last=false; else

fputc('\\n',Out); firchar=getfirstc(in); if(isNotation==1) { if(Char!='/') fputc(Char,Out); for(int temp=0;temp

else if(isNotation==2); else

fprintf(Out,\ if(firchar=='#') { fputc('\\n',Out); firchar=head(in); } isNotation=0; }

cout<<\ writeSign(); writeVariate(); writeConstant();

第22页 共23页

fclose(in); fclose(Out); fclose(Error);

printf(\ printf(\ printf(\ printf(\ printf(\ return 0; }

运行时截图:

第23页 共23页