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

2019-03-15 12:46

interpret(); fclose(fa2); } else

{printf(\ } }

fclose(fin); } else

{printf(\ }

printf(\ return 0; }

/*chushihua*/

void init() { int i;

for (i=0;i<=255;i++) {ssym[i]=nul; }

ssym['+']=plus; ssym['-']=minus; ssym['*']=times; ssym['/']=slash; ssym['(']=lparen; ssym[')']=rparen; ssym['=']=eql; ssym[',']=comma; ssym['.']=period; ssym['#']=neq;

ssym[';']=semicolon;

strcpy(&(word[0][0]),\strcpy(&(word[1][0]),\strcpy(&(word[2][0]),\strcpy(&(word[3][0]),\

6

strcpy(&(word[4][0]),\strcpy(&(word[5][0]),\strcpy(&(word[6][0]),\

strcpy(&(word[7][0]),\strcpy(&(word[8][0]),\strcpy(&(word[9][0]),\strcpy(&(word[10][0]),\strcpy(&(word[11][0]),\strcpy(&(word[12][0]),\

wsym[0]=beginsym; wsym[1]=callsym; wsym[2]=constsym; wsym[3]=dosym; wsym[4]=endsym; wsym[5]=ifsym; wsym[6]=oddsym; wsym[7]=procsym; wsym[8]=readsym; wsym[9]=thensym; wsym[10]=varsym; wsym[11]=whilesym; wsym[12]=writesym;

strcpy(&(mnemonic[lit][0]),\strcpy(&(mnemonic[opr][0]),\strcpy(&(mnemonic[lod][0]),\strcpy(&(mnemonic[sto][0]),\strcpy(&(mnemonic[cal][0]),\strcpy(&(mnemonic[inte][0]),\strcpy(&(mnemonic[jmp][0]),\strcpy(&(mnemonic[jpc][0]),\

for(i=0;i

declbegsys[i]=false; statbegsys[i]=false;

7

facbegsys[i]=false; }

declbegsys[constsym]=true; declbegsys[varsym]=true; declbegsys[procsym]=true;

statbegsys[beginsym]=true; statbegsys[callsym]=true; statbegsys[ifsym]=true; statbegsys[whilesym]=true;

facstatbegsys[ident]=true; facstatbegsys[number]=true; facstatbegsys[lparen]=true; }

int inset(int e,bool*s) {

return s[e]; }

int addset(bool* sr,bool * s1,bool* s2,int n) { int i ;

for(i=0;i

sr[i]=s1[i]||s2[i]; }

return 0; }

int subset(bool* sr,bool * s1,bool* s2,int n) {

8

int i ;

for(i=0;i

sr[i]=s1[i]&&(!s2[i]); }

return 0; }

int mulset(bool* sr,bool * s1,bool* s2,int n) { int i ;

for(i=0;i

sr[i]=s1[i]&&(s2[i]); }

return 0; }

void error(int n) {

char space[81];

memset(space,32,81); space[cc-1]=0;

printf(\

fprintf(fal,\err++; }

int getch() {

if(cc==ll) {

if(feof(fin)) {

printf(\ return -1; } ll=0;

9

cc=0; printf(\ fprintf(fal,\ ch=''; while(ch!=10) { if(EOF==fscanf(fin,\ { line[ll]=0; break; } printf(\ fprintf(fal,\ line[ll]=ch; ++ll; } printf(\ fprintf(fal,\ } ch=line[cc]; cc++; return 0; } /*****************************8 */ int getsym() { int i,j,k;

while (ch==''||ch==10||ch==9) { getchdo; } if(ch>='a'&& ch<='z') { k=0; do{ if(k

10


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

下一篇:句型句式练习

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

马上注册会员

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