《在block函数中添加代码》由会员分享,可在线阅读,更多相关《在block函数中添加代码(2页珍藏版)》请在金锄头文库上搜索。
1、4、在block函数中添加代码: for(i=tx0+1;i=tx;i+) switch(tablei.kind) case constant; /*常量名字*/ ./此处省略部分未修改过的代码 case variable; /*变量名字*/ ./此处省略部分未修改过的代码 case procedur; /*过程名字*/ ./此处省略部分未修改过的代码 case array; /数组变量 pritf(“%d var-array %s”,i,tablei.name); printf(“lev=%d addr=%d size=%dn”,tablei.level,tablei.adr,tablei.
2、size); fprintf(fas,“%d var-array %s”,i,tablei.name); fprintf(fas,“lev=%d addr=%d size=%dn”,tablei.level.tablei.adr,tablei.size); 5、在enter()函数中添加代码: switch(k) case constant; /*常量名字*/ ./此处省略部分未修改过的代码 case variable; /*变量名字*/ ./此处省略部分未修改过的代码 case procedur; /*过程名字*/ ./此处省略部分未修改过的代码 case array; /数组变量 tabl
3、e(*ptx).level=lev; table(*ptx).adr=(*pdx)-arraysize; table(*ptx).size=arraysize; break;6、在vardeclaration()函数中添加数组的变量声明 int vardeclaration(int *ptx,int lev, int *pdx) /此处省略部分未修改的代码case gar; /根据栈顶的便宜地址从数组中取值到新的栈顶st=sbase(i.1,s,b)+i.a+st-1; /偏移地址为上一层过程的基址+当前指令的层次+栈顶的偏移地址t+;break;case sar; /根据栈顶的偏移地址把栈顶的值存入数组t-;sbase(i.1,s,b)+i.a+st-1=s(t);/t-;break;case shd; /将栈顶的值保存到次栈顶t-;st-1=st;break;case del; /将栈顶的值出栈t-;break;case jud; /判断数组下标的合法性t-;if(st-1=st) error(28); printf(“n运行问题出错,程序退出!请输入任意数字退出:”); scanf(“%d”,&p); exit(1);break;case tra; /将数组的下标范围入栈st=i.a;t+;break;./此处省略部分未修改过的代码