¡¡begin (*main*)
¡¡¡¡for ch¡Ã=¡ä ¡ä to ¡ä!¡ä do ssym[ch]¡Ã=nul;
¡¡¡¡(*changed because of different character set
¡¡¡¡¡¡note the typos below in the original where
¡¡¡¡¡¡the alfas were not given the correct space*)
¡¡¡¡word[1]¡Ã=¡äbegin¡ä; word[2]¡Ã=¡äcall ¡ä;
¡¡¡¡word[3]¡Ã=¡äconst¡ä; word[4]¡Ã=¡ädo ¡ä;
¡¡¡¡word[5]¡Ã=¡äend¡ä; word[6]¡Ã=¡äif ¡ä;
¡¡¡¡word[7]¡Ã=¡äodd ¡ä; word[8]¡Ã=¡äprocedur e ¡ä;
¡¡¡¡word[9]¡Ã=¡äread¡ä; word[10]¡Ã=¡äthen ¡ä;
¡¡¡¡word[11]¡Ã=¡ävar ¡ä;word[12]¡Ã=¡äwhile ¡ä;
¡¡¡¡word[13]¡Ã=¡äwrite ¡ä;

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

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

¡¡¡¡mnemonic[lit]¡Ã=¡älit¡ä; mnemonic[opr]¡Ã =¡äopr¡ä;
¡¡¡¡mnemonic[lod]¡Ã=¡älod¡ä; mnemonic[sto]¡Ã= ¡ästo¡ä;
¡¡¡¡mnemonic[cal]¡Ã=¡äcal¡ä; mnemonic[int]¡Ã= ¡äint¡ä;
¡¡¡¡mnemonic[jmp]¡Ã=¡äjmp¡ä; mnemonic[jpc]¡Ã= ¡äjpc¡ä;

¡¡¡¡declbegsys¡Ã=[constsym,varsym,procsym];
¡¡¡¡statbegsys¡Ã=[beginsym,callsym,ifsym,whilesym];
¡¡¡¡facbegsys¡Ã=[ident,number,lparen];

¡¡¡¡(*page(output)*)
¡¡¡¡rewrite(fa1);
¡¡¡¡write(¡äinput file?¡ä);
¡¡¡¡write(fa1,¡äinput file? ¡ä);
¡¡¡¡readln(fname);
¡¡¡¡openf(fin,fname,¡är¡ä);
¡¡¡¡write(¡älist object code?¡ä);
¡¡¡¡readln(fname);
¡¡¡¡write(fa1,¡älist object code?¡ä);
¡¡¡¡listswitch¡Ã=(fname[1]=¡äy¡ä);
¡¡¡¡err¡Ã=0;
¡¡¡¡cc¡Ã=0; cx¡Ã=0; ll¡Ã=0;
¡¡¡¡ch¡Ã=¡ä ¡ä; kk¡Ã=al;
¡¡¡¡getsym;
¡¡¡¡rewrite(fa);
¡¡¡¡rewrite(fa2);
¡¡¡¡block(0,0,[period]+declbegsys+statbegsys);
¡¡¡¡closef(fa);
¡¡¡¡closef(fa1);
¡¡¡¡if sym<>period
¡¡¡¡then error(9);
¡¡¡¡if err=0
¡¡¡¡then interpret
¡¡¡¡else write(¡äerrors in pl/0 program¡ä);
¡¡99:
¡¡¡¡closef(fin);
¡¡¡¡writeln
¡¡end.