pl0c.c

  #include <stdio.h>
  #include "pl0c.h"
  #include "string.h"

  /* 盾瞥峇佩扮聞喘議媚 */
  #define stacksize 500


  int main()
  {
   bool nxtlev[symnum];
   init(); /* 兜兵晒 */
   fas=fopen("fas.tmp","w");
   fa1=fopen("fa1.tmp","w");
   printf("Input file? ");
   fprintf(fa1,"Input file? ");
   scanf("%s",fname); /* 補秘猟周兆 */
   fin=fopen(fname,"r");
   if(fin)
  {
   fprintf(fa1,"%s\n",fname);
   printf("List object code?(Y/N)"); /* 頁倦補竃倡亭字旗鷹 */
   scanf("%s",fname);
   listswitch=(fname[0]=='y'||fname[0]=='Y');
   printf("List symbol table?(Y/N)"); /* 頁倦補竃兆忖燕 */
   scanf("%s",fname);
   tableswitch=(fname[0]=='y'||fname[0]=='Y');
   err=0;
   cc=cx=ll=0;
   ch=' ';
   kk=al-1;

   if(-1!=getsym())
  {
   fa=fopen("fa.tmp","w");
   fa2=fopen("fa2.tmp","w");
   addset(nxtlev,declbegsys,statbegsys,symnum);
   nxtlev[period]=true;
   if(-1==block(0,0,nxtlev)) /* 距喘園咎殻會 */
   {
    fclose(fa);
    fclose(fa1);
    fclose(fin);
    printf("\n");
    return 0;
   }
   fclose(fa);
   fclose(fa1);
   if(sym!=period)error(9);
   if(err==0)interpret(); /* 距喘盾瞥峇佩殻會 */
   else
   {
    printf("Errors in pl/0 program");
   } 
  }
  fclose(fin);
 }
 else
 {
  printf("Can't open file!\n");
  fprintf(fa1,"Can't open file!\n");
  fclose(fa1);
 }
 fclose(fas);
 printf("\n");
 return 0;
}