outputnya :
program scanner; { judul program}uses Wincrt;varprg_sumber,f_hasil:text;karakter:Char;kata,Nm_token:string;procedure bacafile; { prosedur membaca file sumber }beginread(prg_sumber,karakter);end;procedure hasil; {prosedur utk menulis hasil setiap token}beginappend(f_hasil); {menambah hasil scan ke file hasil}writeln(f_hasil, kata : 15, ' : ', Nm_token);writeln(kata : 15, ' : ', Nm_token); {mencetak hasil scan ke layar}end;function cekkeyword(s:string):string; {fungsi mengecek keyword atau bukan}varx : byte;panjang : integer;ftext : text;data : string;beginpanjang:= length(s); {konversi kata ke huruf kecil}for x:=1 to panjang dobeginif s[x] > upcase (s[x]) thens[x] := s[x]elses[x]:= chr(ord(s[x])+32);end;assign(ftext,'keyword.txt');reset(ftext);while not eof(ftext) do {mencocokkan dgn tabel keyword}beginreadln(ftext,data);if s=data then Nm_token:='Identifier / Keyword';end;close(ftext);end;procedure periksa; {prosedur memeriksa setiap karakter file sumber}beginwhile not eof(prg_sumber) do {kerjakan sampai akhir file}beginbacafile;if karakter = '{' then {mengabaikan/membuang komentar}beginrepeatbeginbacafile;end;until karakter = '}';kata:=' ';end;if karakter = chr(39) then {mengecek tanda petik (')}beginrepeatbeginkata := kata + karakter;bacafile;end;until karakter = chr(39) ;kata := kata + karakter;Nm_token := 'Konstanta';hasil;kata :=' ';end;if (karakter in['A'..'Z','a'..'z','_']) then {mengecek karakter/kata}beginrepeatbeginkata := kata + karakter;bacafile;end;until (not(karakter in['A'..'Z','a'..'z','_']));Nm_token:='Identifier / Variabel';cekkeyword(kata);hasil;kata :=' ';end;if (karakter in['0'..'9']) then {mengecek angka}beginrepeatbeginkata := kata + karakter;bacafile;end;until (not(karakter in['0'..'9']));Nm_token := 'Konstanta / Integer';hasil;kata :=' ';end;if (karakter in['+','-','*','/',' ','^']) thenbeginrepeatbeginkata := kata+karakter;bacafile;end;until (not(karakter in['+','-','*','/',' ','^']));Nm_token :='Operator';hasil;kata:=' ';end;if (karakter in['(',')','[',']','^',':',';',',','.']) thenbeginkata:=karakter;Nm_token :='Delimiter';hasil;kata:=' ';end;end;end;begin {=program utama=}clrscr;assign(prg_sumber,'coba.txt'); {menetapkan file sumber}reset(prg_sumber); {membaca file sumber}assign(f_hasil,'hasil.txt'); {menetapkan file hasil}rewrite(f_hasil); {menghapus isi file hasil}periksa; {menjalankan prosedur scan}close(prg_sumber); {menutup file}close(f_hasil);readln;end.
Senin, 22 April 2013
kompiler dengan bahasa pascal
Minggu, 21 April 2013
Langganan:
Postingan (Atom)