SOAL
1.
Buatlah
contoh dari:
-
Kesalahan leksikal
Jawab :
§ Sedikit
yang dapat dideteksi, Contoh :: jika fi
ditemukan pada program C
§ fi ( a
== f (x)) ………..
§ penganalisa
leksikal tidak dapat menentukan bahwa fi
salah ejaan.
§ Kesalahan
ini akan dideteksi di fase lain yakni
parser6
-
Kesalahan sintaks
Jawab :
Kesalahan Sintaks : A:=X+(B*(C+D)
{jumlah kurungnya kurang}
-
Kesalahan semantiks
Jawab :
Tipe
data yang salah. Contoh : Var Siswa : Integer Siswa
:= 'Yanuar {tipe string}
Variabel
belum didefinisikan. Contoh : B := B + 1 {B belum didefinisikan}
2.
Mengapa
mencari kesalahan semantik lebih sulit daripada kesalahan leksikal dan
sintaksis!
Jawab :
Karena
dalam penganalisaan kesalahan pada semantik akan memeriksa token dan ekspresi dari
batasan-batasan yang ditetapkan. Batasan-batasan tersebut misalnya :
a.
Panjang maksimum ekspresi tunggal adalah 80
karakter,
b.
Operasi aritmatika harus melibatkan
operan-operan yang bertipe sama
c.
Panjang maksimum token identifier adalah 8
karakter
d.
Nilai bilangan bulat adalah -32768 s/d 32767,
3.
Lakukan
optimasi lokal yang diperlukan pada potongan program berikut, dan jelaskan
optimasi apa saja yang diterapkan.
A:=B+10*4;
C:=B+D;
F:=B+D-G;
FOR I:= 1 TO 100 DO
BEGIN
X:=X+I;
{optimasi lokal folding, dimana 10*4 di
ganti menjadi 40 sebagai nilai komputasinya}
|
B:= 7;
Jawab
{optimasi lokal redundant, dimana B+D di ganti
menjadi C yang merupakan komputasi dari B+D
|
C:=B+D;
FOR I:= 1 TO 100 DO
BEGIN
X:=X+I;
A:=A+X;
END;
4.
Apakah
kita dapat melakukan optimasi redundant
subexpression elimination pada statement berikut:
a. A:=B+C;
A:=X+Y;
F:=B+C+G+H;
b. A:=B+C;
B:=X+Y;
F:=B+C+G+H;
Jawab :
a.
(No),
karena fariabel A sudah di definisikan kembali dengan ekspresi baru, yang
asalnya A:=B+C menjadi A:=X+Y, sehingga pada F:=B+C+G+H, pada ekspresi B+C
tidak dapat di gantikan menjadi fariable A karena A sudah berubah menjadi
A:=X+Y.
b.
(Yes),
karena A masih terdefinisi sebagai A:=B+C, sehingga F:=B+C+G+H dapat di ubah
menjadi F:=A+G+H.
5.
Dapatkah
kita melakukan optimasi frequency reduction pada loop berikut,
10 FOR
I:=1 TO 10 DO
20 A:=I+1;
30
Jawab :
Bisa,
karena nominal 10, 20, 30 tidak terlalu penting untuk di eksekusi sehingga
dapat di pindahkan karena kalo tidak di pindahkan hanya akan mengganggu kinerja
program.
10
20
30
FOR I:=1
TO 10 DO
A:=I+1;
6.
Apakah
cukup efisien melakukan optimasi loop unrolling untuk statement berikut:
FOR I :=
1 to 100 DO
A(I) :=
“ “
Jawab :
Tidak
memungkinkan, karena tidak efisien jika harus mengoptimasikan menjadi A(1) –
A(100), hanya akan menghabiskan memory.
7.
Lakukan
optimasi global sederhana pada program berikut,
PROGRAM
Test;
VAR A,B,C: INTEGER;
BEGIN
B:=5;
WHILE B
< 3 DO
B;=B+1;
C:=10
+B;
END.
Jawab :
PROGRAM
Test;
VAR A,B,C: INTEGER;
BEGIN
B:=5;
WHILE B
< 3 DO
B:=B+1;
C:=10
+B;
END.
8. Apa kegunaan dari tabel informasi?
Jawab :
Dua
fungsi penting Tabel Informasi
·
Untuk membantu pemeriksaan kebenaran semantik
dari program sumber
·
Untuk membantu dan mempermudah dalam pembuatan
intermediate code dan proses pembuatan kode-kode (pembangkitan kode),
Dan kegunaan lainnya dari tabel infoormasi
yaitu :
·
Nomor
baris variabel yang dideklarasikan
·
Nomor baris variabel yang direferensikan
·
Field link
·
Object
time address
·
Dimensi dari identifier yang bersangkutan
·
Tipe identifier
9.
Mengapa
diperlukan referensi ke tabel lain dari
tabel simbol ?
Jawab :
Karena untuk;
o
Membantu pemeriksaan kebenaran semantik dari
program sumber.
o
Membantu dan mempermudah pembuatan intermediate
code dan proses pembangkitan kode.
10. Apa pertimbangn dalam menentukan suatu
elemen menjadi bagian yang diperlukan dari tabel simbol?
Jawab :
Elemen pada Tabel Simbol bermacam-macam, tergantung pada jenis
bahasanya.
Misalnya :
o
Tipe identifier : Berisi
keterangan/informasi tipe dari record
dan string, maupun procedure dan function.
o
Nomor baris variabel direferensikan.
o
Field link.
o
No urut identifier : Menentukan nomor
urut identifier dalam tabel simbol.
o
Nama identifier : Berisi nama-nama
identifier (nama variabel, nama tipe, nama konstanta, nama procedure, nama
fungsi, dll) yang terdapat pada program sumber. Nama-nama ini akan dijadikan
referensi pada waktu analisa semantik, pembuatan intermediate code, serta
pembangkitan kode.
o
Object time address : address yang
mengacu ke alamat tertentu.
o
Dimensi dari identifier yang
bersangkutan.
o
Nomor baris variabel dideklarasikan.
Tidak ada komentar:
Posting Komentar