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