云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > 天津理工大学编译原理实验一

天津理工大学编译原理实验一

  • 62 次阅读
  • 3 次下载
  • 2025/6/5 11:35:41

Variate VarArr[bufsize]; Constant ConArr[bufsize]; Sign SigArr[bufsize];

//获取读取的文件本行的第一个字符 ,直到找到一个非空格字符 char getfirstc(FILE *in) {

char ch=fgetc(in);//fgetc() 函数的作用是读取文件的当前行的一个字符,返回读取的字符 while(ch==' '||ch=='\\n'||ch=='\\t') { if(ch=='\\n') { line++; fputc('\\n',Out);//向输出的文本文件中打印换行 } ch=fgetc(in); }

return ch; }

//处理读取的本行内容 void dealhead(char *buf) {

char ch[10]; char cha;

char str[bufsize]; int i=0; int j=0; int temp=0;

while(i

第5页 共23页

ch[j]=buf[i]; j++; if(buf[i]=='<') { ch[j]='\\0'; break; } } else if(temp==2) { ch[j]=buf[i]; j++; if(buf[i+1]==' ') { ch[j]='\\0'; i++; break; } } } i++; }

if(temp==1) { int index=0; fputc('#',Out); while(buf[index]!='\\0') { if(buf[index]!=' ') fputc(buf[index],Out); index++; } if(strcmp(ch,\ { i++; //因为上面程序没进行++就直接break所以这里就需要加 1到下一个角标 while((cha=buf[i])!='>') {

i++;

if(cha=='\\n') {

fprintf(Error,\ break; } } }

第6页 共23页

else fprintf(Error,\ }

else if(temp==2) { if(strcmp(ch,\ { i++; while((cha=buf[i])==' ') {

if(cha=='\\n') {

// fprintf(Error,\ break; } i++; }

if(buf[i]!=' ') { if(!(isalpha(buf[i]))) fprintf(Error,\ //此处意思是define后必须有变量名称 } } else { //在上面的break之前已经进行过i++;所以这里可以直接用 while(!isalpha(buf[i])) { if(buf[i]=='\\0') { fprintf(Error,\ break; } i++; } int index=0; int space=0;//计算在上一个字母之后第几次遇到空格 fputc('#',Out); while(buf[index]!='\\0') { if(buf[index]!=' ') { fputc(buf[index],Out); space=0;

第7页 共23页

} else { space++; if(space==1&&index!=0) fputc(' ',Out); } index++; } } } }

//处理头文件

char head(FILE *in) {

char ch; if(late==0) ch=getfirstc(in); else ch=firchar;//即为# while(ch=='#') { fgets(buf,bufsize,in);//fgets()读取in文件当前一行的内容为bufsize-1个字符的内容 int len=strlen(buf); buf[len-1]='\\0'; dealhead(buf); //这条语句执行完毕后且找到'>'就说明这行结束 line++; ch=getfirstc(in); if(ch=='#') fputc('\\n',Out); }

return ch; }

//判断关键字

int keyword(char *str) {

int i;

for(i=0;keywordTable[i]!=\ if(strcmp(str,keywordTable[i])==0) return i+256; //返回关键字对应的值 return -1; }

//处理字母 void dealAlpha() {

第8页 共23页

搜索更多关于: 天津理工大学编译原理实验一 的文档
  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

Variate VarArr[bufsize]; Constant ConArr[bufsize]; Sign SigArr[bufsize]; //获取读取的文件本行的第一个字符 ,直到找到一个非空格字符 char getfirstc(FILE *in) { char ch=fgetc(in);//fgetc() 函数的作用是读取文件的当前行的一个字符,返回读取的字符 while(ch==' '||ch=='\\n'||ch=='\\t') { if(ch=='\\n') { line++; fputc('\\n',Out);//向输出的文本文件中打印换行 } ch=fgetc(in); } return ch; } //处理读取的本行内容 void dealhea

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com