标准实验报告(PL0编译程序)(6)

2020-04-14 05:15

for (i=cx0;i

printf(\ fprintf(fa,\ } } }

int statement(bool* fsys,int* ptx,int lev) {

int i,cxl,cx2;

bool nxtlev[symnum]; if (sym==ident) {

i=position(id,*ptx); if (i==0) {

error(11); } else {

if(table[i].kind !=variable) { error(12); i=0; } else { getsymdo; if(sym==becomes) { getsymdo; } else { error(13); } memcpy(nxtlev,fsys,sizeof(bool)*symnum); expressiondo(nxtlev,ptx,lev);

21

if(i!=0) { gendo(sto,lev-table[i].level,table[i].adr); } }

}/*if(i==0)*/ } else {

if(sym==readsym) {

getsymdo;

if(sym!=lparen) {

error(34); } else { do{

getsymdo; if(sym==ident) {

i=position(id,*ptx); } else { i=0; } if(i==0) {

error(35); } else { gendo(sto,lev-table[i].level,table[i].adr) ; }

gendo(opr,0,16); 22

getsymdo; }while(sym==comma); } if(sym!=rparen) { error(33); while(! inset(sym,fsys)) { getsymdo; } } else { getsymdo; } } else { if(sym==writesym) { getsymdo; if(sym==lparen) { do{ getsymdo; memcpy(nxtlev,fsys,sizeof(bool)*symnum); nxtlev[rparen]=true; nxtlev[comma]=true; expressiondo(nxtlev,ptx,lev); gendo(opr,0,14); }while(sym==comma); if(sym!=rparen) {

23

error(33); } else { getsymdo; } } gendo(opr,0,15); } else {if(sym==callsym) { getsymdo; if(sym!=ident) { error(14); } else { i=position(id,*ptx); if(i==0) { error(11); } else { if(table[i].kind==procedur) { gendo(cal,lev-table[i].level,table[i].adr); } else { error(15); } }

24

getsymdo; } } else { if (sym==ifsym) { getsymdo; memcpy(nxtlev,fsys,sizeof(bool)*symnum); nxtlev[thensym]=true; nxtlev[dosym]=true; conditiondo(nxtlev,ptx,lev); if(sym==thensym) { getsymdo; } else { error(16); } cxl=cx; gendo(jpc,0,0); statementdo(fsys,ptx,lev); code[cxl].a=cx; } else { if(sym==beginsym) {

25


标准实验报告(PL0编译程序)(6).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:班级管理练习题及答案

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: