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

2019-03-15 12:46

} else { if(ch>='0'&&ch<='9') { k=0; num=0; sym=number; do{ num=10*num+ch-'0'; k++; getchdo;

k++; } getchdo; }while(ch>='a'&& ch<='z'||ch>='0'&& ch<='9'); a[k]=0; strcpy(id,a); i=0; j=norw-1 ; do{ k=(i+j)/2 ; if(strcmp(id,word[k])<=0) { j=k-1; }

if(strcmp(id,word[k])>=0) i=k+1; }

while(i<=j); if(i-1>j) { sym=wsym[k]; } else { sym=ident; }

11

}while (ch>='0'&&ch<='9'); k--;

if(k>nmax) { error(30); } } else { if(ch==';') { getchdo; if(ch=='=') { sym=becomes; getchdo; } else { sym=nul; } } else { if (ch=='<') { getchdo; if(ch=='=') { sym=leq; getchdo; } else { sym=lss; } } else

12

{ if(ch=='>')

int gen(enum fct x,int y,int z) {

if(cx>=cxmax) {

printf(\return -1; }

code[cx].f=x; code[cx].l=y;

{ getchdo; if(ch=='=') { sym=geq; getchdo; } else { sym=gtr; } } else { sym=ssym[ch]; if(sym!=period) { getchdo; } } } } } } return 0; }

13

code[cx].a=z; cx++; return 0; }

int test(bool * s1,bool * s2,int n) {if(! inset(sym,s1)) {error(n);

while((! inset(sym,s1))&&(! inset(sym,s2))) {getsymdo; } }

return 0; }

int block(int lev,int tx,bool* fsys) { int i; int dx; int txo; int cxo;

bool nxtlev[symnum]; dx=3; txo=tx;

table[tx].adr=cx; gendo(jmp,0,0); if(lev>levmax) {error(32); } do{

if(sym==constsym) {getsymdo; do

{constdeclarationdo(&tx,lev,&dx); while(sym==comma) {getsymdo;

constdeclarationdo(&tx,lev,&dx); }

14

if (sym==semicolon) {getsymdo; } else

{error(5); }

}while(sym==ident); }

if(sym==varsym) {getsymdo; do{

vardeclarationdo(&tx,lev,&dx); while(sym==comma) {getsymdo;

vardeclarationdo(&tx,lev,&dx); }

if(sym==semicolon) {getsymdo; } else{ error(5); }

}while(sym==ident); }

while(sym==procsym) {getsymdo; if(sym==ident)

{enter(procedur,&tx,lev,&dx); getsymdo; } else

{error(4); }

if(sym==semicolon) {getsymdo; } else

{error(5);

15


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

下一篇:句型句式练习

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

马上注册会员

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