if(buf[start]=='\\0') { fputc('\\n',Out); line++; } else { st=start; start++; while(buf[start]!='\\0') { if(buf[st]=='*'&&buf[start]=='/') { str[0]=buf[st]; str[1]=buf[start]; for(i=0;borderTable[i]!=\ if(strcmp(str,borderTable[i])==0) { sign2.sym=i+312; break; } strcpy(sign2.name,str); strcpy(sign2.attr,\ SigArr[SignNum]=sign2; SignNum++; fputs(sign2.name,Out); start++; firchar=buf[start]; last=true; return ; } st=start; start++; } fputc('\\n',Out); line++; } } notation=0; } else { st=start; start++; while(buf[start]!='\\0')
第13页 共23页
{ if(buf[st]=='*'&&buf[start]=='/')// /**/ 类型 { str[0]=buf[st]; str[1]=buf[start]; for(i=0;borderTable[i]!=\ if(strcmp(str,borderTable[i])==0) { sign2.sym=i+312; break; } strcpy(sign2.name,str); strcpy(sign2.attr,\ SigArr[SignNum]=sign2; SignNum++; len=strlen(buf); for(int temp=start;temp fputc('\\n',Out); // /*XXX\\n 类型 line++; while(fgets(buf,bufsize,in)!=NULL) { int len=strlen(buf); buf[len-1]='\\0'; start=0; if(buf[start]=='\\0') { fputc('\\n',Out); 第14页 共23页 line++; } else { st=start; start++; while(buf[start]!='\\0') { if(buf[st]=='*'&&buf[start]=='/') { str[0]=buf[st]; str[1]=buf[start]; for(i=0;borderTable[i]!=\ if(strcmp(str,borderTable[i])==0) { sign2.sym=i+312; break; } strcpy(sign2.name,str); strcpy(sign2.attr,\ SigArr[SignNum]=sign2; SignNum++; for(int temp=st;temp //判断界符 bool Border(char c) 第15页 共23页 { for(int i=0;borderTable[i]!=\ if(c==borderTable[i][0]&&borderTable[i][1]=='\\0') return true; return false; } //处理界符 void dealBorder() { //这里已经将注释和普通界符分开,所以所有已定义的界符都是单个的 char str[2]; Sign sign; str[0]=firchar; str[1]='\\0'; int i=0; while(borderTable[i]!=\ { if(strcmp(str,borderTable[i])==0) { strcpy(sign.name,str); strcpy(sign.attr,\ sign.sym=i+312; SigArr[SignNum]=sign; SignNum++; firchar=buf[start]; return; } i++; } } //判断运算符 int Operate(char ch) { for(int i=0;operateTable[i]!=\ if(ch==operateTable[i][0]) return 1; return 0; } //处理运算符 void dealOperate() { char str[3]; Sign sign; str[0]=firchar; str[1]=buf[start]; str[2]='\\0'; 第16页 共23页