Anda di halaman 1dari 3

Tugas Kelompok ke-3

Minggu ke 8, Sesi ke 12
TEAM 4
MOHAMMAD HUSEIN RAMADHANI BAHARZAH
DUDI KAMALUDIN
NARENDRA ARUM ANIDYAJATI
ADRIYAN SAPUTRA

1. Diberikan CFG berikut ini.

S  AA
A  aA | b

a. Buatlah canonical diagram dari CFG tersebut.


Jawab:

COMP6276 – Compilation Techniques


b. Buat SLR parsing tabel.
Jawab:

c. Apakah terdapat konflik pada table tersebut? Jika Ya jelaskan.


d. Isu apa saja yang mungkin terjadi pada LR(0) parser? Jelaskan dan beri
contohnya.

2. Diberikan sebuah CFG sebagai berikut:

ET+E|T
T  int | int * T | ( E )

a. Buatlah canonical diagram dari CFG di atas.


b. Carilah Follow dari CFG tersebut.
c. Buatlah LR(0) parsing table
d. Lakukan ilustrasi pergerakan parser apabila diberikan input string int * (int + int)

3. Diberikan sebuah potongan program Java. Identifikasilah tipe dari error dari setiap
potongan program tersebut apakah tipenya lexical, syntactic, semantic static atau
semantic dynamic error. Lexical error terdeteksi oleh Scanner sedangkan Syntactic
terdeteksi oleh parser. Semantic static terdeteksi oleh semantic analyzer pada saat waktu
compile, sementara semantic dynamic terdeteksi pada saat runtime. Berikanlah
penjelasan alasan Anda mengkategorikan error untuk potongan program ini.

COMP6276 – Compilation Techniques


a. int num1, num2;
num1 = 12;
num2 = num1/0;

error yang terjadi terdeteksi pada saat runtime, terdeteksi oleh semantic analyzer
error ini masuk dalam kategori semantic dynamic error. Pesan errornya yakni,
error division by zero

b. int num;
String str = “checking”(1)
num = str;

Potongan program ini ini akan menghasilkan error yang masuk dalam kategori
Lexical error. Akan terdeteksi oleh scanner karena tidak sesuai dengan aturan
lexical. (no token matches “ / illegal character)

c. int int;

Potongan program ini ini akan menghasilkan error yang masuk dalam kategori
syntactic error. Akan terdeteksi oleh parser karena struktur statement yang tidak
sesuai. (syntax error on token “int”, invalid variable declarator)

d. int num (1)


if(“hello”) {num=1;}(2)

1. Potongan program ini ini akan menghasilkan error yang masuk dalam kategori
syntactic error. Akan terdeteksi oleh parser karena struktur statement yang
tidak sesuai. (syntax error, insert “;” to complete the block statement)
2. Potongan program ini ini akan menghasilkan error yang masuk dalam kategori
syntactic error. Akan terdeteksi oleh parser karena struktur statement yang
tidak sesuai. (syntax error on tokens, expression expected instead)

COMP6276 – Compilation Techniques

Anda mungkin juga menyukai