Soal Kuis Teknik Kompilasi (21 Desember 2008)

Soal Kuis Teknik Kompilasi (21 Desember 2008) Dosen : Pak Ridhok
1)Tuliskan tipe Express dari tipe
Suatu array dari pointer ke bilangan real, dimana array tersebut mempunyai index 1 s.d 10.
Jawab : dalam representasi bahasa Pascal Expresi di atas dapat ditulis
type
pReal = ^Real;
larik = array[1...10] of pReal;

2)Tata bahasa program Pascal sebagai berikut :
P-> D;E
D->D:D|id :T
T->char|integer|array [num] of T|IT|real
E->literal|num|id|EmodE|E[E]|E↑
Jawab :
P.real = ^Real
P-> D
D-> id :T
T-> ↑T|real

P

D

id : T

↑T
T
^Real

Larik = array[1...10]of real
Num = 1...10
P-> D
D-> id :T
T->array [num]of T
T-> ↑T|real

Larik = array[1...10]of real

P-> D
D-> id :T
T->array [num]of T| ↑T|real



Semantik
E-> E1[E2] {E.type := if E2.type=integer and E1.type=array (s,t) then t else type_error}
A : array [0..9,-10..10]of Real
A : array [0..9]of array [-10..10] of Real

3) Misalkan diberikan deklarasi yang dibangkitkan oleh tata bahasa berikut :
D-> idL L-> idL |:T T-> integer|real
Susun suatu skema transisi untuk menerjemahkan tipe masing – masing identifier ke dalam tabel simbol
Jawab : Pertama tentukan aksi dari masing – masing produksi
D->idL : addtype (id.entry,type) ,L.in = L.type
L->idL : L.in =L .type
L->:T : addytpe (id.entry,type)
T->integer : (T.type = integer)
T->real : (T.type = real)

Skema Transisi
D -> id{addtype (id.entry,type)} L{L.in = L.type}
L -> id{L.in =L .type} L{L.in = L.type}
L -> : T{ addytpe (id.entry,type)}
T -> integer (T.type = integer)
T -> real(T.type = real)
Latihan soal UAS Teknik Kompilasi (21 Desember 2008)
1)Terjemahkan expresi aritmatik a*-(b+c) ke dalam
(a) sintax tree (b)postfix (c)three address code

2)Terjemahkan statemen penugasan berikut ke dalam three-address code menggunakan skema translasi array : A[i,j] := B[i,j] + C[A[k,l]] + D[i,j]

3)Jika diberikan definisi syntax directed sebagai berikut :
Produksi Sematic Rule
L -> En print (E.val)
E -> E1+T E.val := E.val + T.val
E -> T E.val := T.val
T -> T1*F T.val := T.val * F.val
T -> F T.val := F.val
F -> (E) F.val := E.val
F -> digit F.val := digit.lexval
Susun annotated parse tree untuk ekspresi berikut : (4*7+1)*2

4)Misalkan diberikan tata bahasa berikut :
E -> E+T | T
T -> TF| F
F -> F* | a | b
a)Susun tabel parse SLR tata bahasa di atas
b)Susun tabel parse LALR tata bahasa di atas

5)Tunjukkan bahwa tata bahasa berlaku
S -> Aa | bAc | Bc | bBa
A -> d
B -> d
Adalah LR(1) tetapi bukan LALR(1)

Komentar