komponen sebuah kompilator
DESCRIPTION
Program Subjek. Program Objek. ANALISIS. SINTESIS. Penganalisis Leksikal (Scanner). Penganalisis Sintaks (Parser). Penganalisis Semantik. Pembentuk Kode. Pengoptimal Kode. TABEL. Komponen sebuah Kompilator. Scanning. - PowerPoint PPT PresentationTRANSCRIPT
1
Komponen sebuah Kompilator
Program
Subjek
Penganalisis Leksikal (Scanner)
Penganalisis Sintaks (Parser)
Penganalisis
Semantik
Pembentuk Kode
Pengoptimal Kode
TABEL
Program Objek
ANALISIS SINTESIS
2
Scanning
Scanning termasuk ke dalam analisis lexical, yaitu proses untuk mengidentifikasi satuan terkecil dari Bahasa, yang disebut Token / Terminal / Daun (identifier, keyword,label, operator aritmetika dan assignment, operator relasional, tanda baca, dsb)
Aspek dalam Scanner : Bagaimana bentuk dan penyajian Token. Metode yang
digunakan Grammar Regular dan Ekspresi Regular
Pengenalan Token. Metode yang digunakan Automata Hingga, dengan penyajian menggunakan Diagram Transisi
3
Scanning (cont.)
Scanner berinteraksi dengan Parser, dengan cara : Scanner mengolah Program Source secara
terpisah sebagai satu fase, dimana token disimpan dalam sebuah tabel sebelum Parser bekerja
Scanner berinteraksi dengan Parser, dimana scanner dipanggil oleh parser bila token dalam program source diperlukan
4
Automata Hingga (AH) Automata Hinga (AH) / Finite state Automaton (FA) adalah suatu struktur abstrak yang didefinisikan, terdiri dari :
1. Himpunan Hingga A berisi simbol Input2. Himpunan Hingga S berisi State (internal state)3. Himpunan Hingga Z berisi simbol output4. Sebuah fungsi f: S x Z S, disebut fungsi next state5. Sebuah fungsi g: S x A Z, disebut fungsi output
AH berhubungan dengan Regular Grammar
Jenis AH :1. AH Determinstik (AHD)2. AH Non Deterministik (AHN)3. AHN dengan transisi untai hampa
5
Automata Hingga Deterministik (AHD)
Automata Hinga Deterministik (AHD) didefinisikan dengan 5 tupel
1. Himpunan Hingga internal state (S)2. Himpunan Hingga simbol input (V)3. Sebuah fungsi f: S x V S ; merupakan fungsi next
state4. State awal (q0 S)
5. Himpunan hingga state penerima S
AHD sering digambarkan dengan cara : Table Transisi State Transisi Digraph
6
Automata Hingga Deterministik (AHD) (cont.)
Contoh : Diketahui AHD dengan 2 simbol input dan 3 state,
1. V = { a,b}2. S = { q0, q1, q2)3. T = {q0, q1} state penerima4. q0 sebagai state awal5. Fungsi next state didefinisikan f:(S,V)
input
f
a b
q0 q0 q1
q1 q0 q2
q2 q2 q2
7
Automata Hingga Deterministik (AHD) (cont.)
q2q0 q1
a
a
b b a
b
Periksalah string berikut :
1. abaq0 q0 q1 q0 (diterima)
2. aabbaaq0 q0 q0 q1 q2 q2 q2
(ditolak, state penerima yang ditentukan adalah q0 dan q1, bukan q2)
8
Automata Hingga Deterministik (AHD) (cont.)
Contoh : Identifikasi Integer String
Grammar : <integer> ::= <digit> | <integer><digit>
inputstate
d d
START INTEGER -
INTEGER INTEGER OUT
OUT (Accept)
Start Integer OUTdelimetersd
d
9
Automata Hingga Deterministik (AHD) (cont.)
Contoh : Identifikasi Identifier String
<identifier> ::= <letter>|<identifier><letter>|<identifier><digit>
Start Identifier<letter>
<letter>
<digit>
Error
<digit>
Lexical Analysis (scanner) - Lexical Analysis (scanner) - berhubungan dengan bahasaberhubungan dengan bahasa
Mengidentifikasikan semua besaran yang membuat suatu bahasa
Mentransformasikan ke token-token
Menentukan jenis dari token-token
Menangani kesalahan
Menangani tabel simbol
Scanner, didesign untuk mengenali - keyword, operator, identifier
Token : separates characters of the source language into group that
logically belong together
Misalnya : konstanta, nama variabel ataupun operator dan delimiter
(atau sering disebut menjadi besaran lexical)
Lexical Analysis ( Lexical Analysis ( Besaran Besaran leksikal )leksikal )
Identifier dapat berupa keyword atau nama kunci, seperti IF..ELSE, BEGIN..END (pada Pascal), INTEGER (pascal), INT, FLOAT (Bhs C)Konstanta : Besaran yang berupa bilangan bulat (integer), bilangan pecahan (float/Real), boolean (true/false), karakter, string dan sebagainyaOperator; Operator arithmatika ( + - * / ), operator logika ( < = > )Delimiter; Berguna sebagai pemisah/pembatas, seperti kurung-buka, kurung -tutup, titik, koma, titik-dua, titik-koma, white-space White Space: pemisah yang diabaikan oleh program, seperti enter, spasi, ganti baris, akhir file
Lexical Analysis - ContohLexical Analysis - ContohContoh 1:
ada urutan karakter yang disebut dengan statement
fahrenheit := 32 + celcius * 1.8,
Maka akan diterjemahkan kedalam token-token seperti dibawah ini
identifier fahrenheit
operator :=
integer 32
operator penjumlahan +
Identifier celcius
operator perkalian *
real / float 1.8
Lexical Analysis - Contoh 2Lexical Analysis - Contoh 2
Setiap bentuk dari token di representasi sebagai angka dalam bentuk internal, dan angkanya adalah unik
Misalnya nilai 1 untuk variabel, 2 untuk konstanta, 3 untuk label dan 4 untuk operator, dst
Contoh instruksi :
Kondisi : IF A > B THEN C = D;
Maka scanner akan mentransformasikan kedalam token-
token, sbb:
Lexical Analysis - Contoh 2
Kondisi 3 : 26 IF 20 A 1 > 15
B 1 THEN 21 C 1 D 1 ; 27
Token-token ini sebagai inputan untuk syntax Analyser , token-
token ini bisa berbentuk pasangan item. Dimana Item pertama
menunjukkan alamat atau lokasi dari token pada tabel simbol.
Item kedua adalah representasi internal dari token. Semua
token direpresentasikan dengan informasi yang panjangnya
tetap (konstan), suatu alamat (address atau pointer) dan
sebuah integer (bilangan bulat)
Syntax Analyzer Syntax Analyzer ((Parsing)
Pengelompokan token-token kedalam class syntax (bentuk syntax), seperti procedure, Statement dan expression
Grammar : sekumpulan aturan-aturan, untuk mendefinisikan bahasa sumber
Grammar dipakai oleh syntax analyser untuk menentukan struktur dari program sumber
Proses pen-deteksian-nya (pengenalan token) disebut dengan parsing
Syntax AnalyzerSyntax Analyzer
Maka Syntax analyser sering disebut dengan parser
Pohon sintaks yang dihasilkan digunakan untuk semantics analyser yang bertugas untuk menentukan ‘maksud’ dari program sumber.
Misalnya operator penjumlahan maka semantics analyser akan mengambil aksi apa yang harus dilakukan
ContohContoh Terdapat statement : ( A + B ) * ( C + D )
Akan menghasilkan bentuk sintaksis:
<factor>, <term> & <expression>
Syntax treeSyntax treePohon sintaks/ Pohon penurunan
(syntax tree/ parse tree) beguna untuk
menggambarkan bagaimana
memperoleh suatu string dengan cara
menurunkan simbol-simbol variable
menjadi simbol-simbol terminal.
Misalnya: S ABA aA | aB bB | B
Penurunan untuk menhasilkan string
aabbb
Parsing atau Proses Parsing atau Proses PenurunanPenurunanParsing dapat dilakukan dengan cara :
Penurunan terkiri (leftmost derivation) : simbol
variable yang paling kiri diturunkan (tuntas)
dahulu
Penurunan terkanan (rightmost derivation):
variable yang paling kanan diturunkan (tuntas)
dahulu
Misalkan terdapat ingin dihasilkan string aabbaa
dari
context free language: S a AS | a,
A SbA | ba
Parsing atau Proses Parsing atau Proses PenurunanPenurunan
Penurunan kiri :
S => aAS
=> aSbAS
=> aabAS
=> aaabbaS
=> aabbaa
Penurunan kanan :
S => aAS
=> aAa
=> aSbAa
=> aSbbaa
=> aabbaa
ParsingParsing
Misalnya: S -> aB | bAA -> a | aS |bAAB -> b | bS | aBB
Penurunan untuk string aaabbabbaDalam hal ini perlu untuk melakukan
percobaan pemilihan aturan produksi yang bisa mendapatkan solusi
Metode ParsingMetode ParsingPerlu memperhatikan 3 hal:
Waktu Eksekusi Penanganan Kesalahan Penanganan Kode
Parsing digolongkan menjadi:
Top-DownPenelusuran dari root ke leaf atau dari simbol awal ke simbol terminalmetode ini meliputi:
Backtrack/backup : Brute Force No backtrack : Recursive Descent Parser
Bottom-Up
Metode ini melakukan penelusuran dari leaf ke root
23
Parsing
Parsing adalah konsturksi atau pembentukan Pohon Sintaks untuk suatu kalimat (ekspresi)
Bila terdapat lebih dari satu pohon sintaks untuk sebuah grammar maka dikatakan grammar tersebut Ambiguous.
Dua cara melakukan validitas sintaks dengan parsing : TOP DOWN Parsing : melakukan derivasi string dari
NT BOTTOM UP Parsing : melakukan reduksi simbol ke
NT
24
Parsing Top Down
Jika adalah input string, maka derivasi dari Top Down Parse dapat ditunjukkan sebagai berikut :
S … … … Parse Tree untuk Top Down Parsing selalu dimulai dari sebelah kiri
S
NT11 NT12NT1n…….
NT21t
1
2
3
25
Parsing Top Down (cont.)
Contoh : Parsing Top Down untuk identifier x2 Derivasinya :<identifier> <identifier><digit> <letter><digit> x <digit> x2
a. <identifier>
<identifier> <digit>
<identifier> <identifier> <digit>
<identifier>
<letter>
<identifier> <digit>
<identifier>
<letter>
x
<identifier> <digit>
<identifier>
<letter>
x
2
b
dc e
26
Parsing Top Down (cont.)
Contoh : ekspresi a + b * c grammar : E ::= T + E | TT ::= V * E | VV ::= <id>
Prediction
Prediction Sentential Form
ET+ETVV<id>ETTV*TV <id>T VV <id>
T+EV+E<id>+E<id>+T<id>+V*T<id>+<id>*T<id>+<id>*V<id>+<id>*<id>
E
T + E
V
id
T
V * T
id V
id
27
Parsing Bottom Up Parsing Bottom Up membangun pohon sintaks melalui urutan simbol yang direduksi, atau dimulai dengan sebuah string hingga mencapai simbol start Grammar
Contoh : diketahui identifier x2, dengan parsing bottom up menjadi :
a x2
x 2 x 2
<letter>
<letter>2b
x 2
<letter>
<identifier>
<identifier>2c
x 2
<letter>
<identifier>
<digit>
<identifier><digit>d
x 2
<letter>
<identifier>
<digit>
<identifier>
<identifier>e
28
Relasi Preseden dan Pemakaiannya
Teknik parsing pada metode Bottom-Up dilakukan dengan mencari berulang-ulang, handle (leftmost simple phrase) u dari bentuk sentensial saat itu dan mereduksinya menjadi suatu nonterminal U dnegan memakai reduksi U u
Jadi tujuan utamanya adalah mencari Handle dari sebuah bentuk sentensial yaitu simple phrase terkiri (leftmost) dari bentuk sentensial tersebut.
Masalah tersebut diselesaikan dengan Grammar Preseden
29
Misal, R dan S berada dalam suatu grammar G. Beberapa bentuk sentensial dapat dibentuk dari simbol R dan G tersebut (…RG…..). Ada tiga kemungkinan yang timbul dalam handle yang dibuat dari R dan S.
R adalah bagian dari suatu handle tapi S tidak (R S) dikatakan R > S (R memiliki Preseden atas S). R harus merupakan ekor dari beberapa produksi U …R. Karena handle berada di kiri S,maka S harus merupakan
terminal
Relasi Preseden dan Pemakaiannya (cont.)
U
RS….….. ………..
handle
30
R dan S keduanya adalah bagian dalam suatu handle (R S) dikatakan R dan S memiliki Preseden yang sama, dan
harus direduksi secara bersamaan waktu Harus ada suatu produksi U …RS...
Relasi Preseden dan Pemakaiannya (cont.)
U
..….….. … RS..
handle
…. ….
3. S adalah bagian dari suatu handel, tetapi R tidak (S R) dikatakan R < S S merupakan kepala dari beberapa produksi U S…..
U
…….…R S ………..
handle
31
Contoh : Diketahui, Grammar dengan simbol Start Z dan produksi :Z bMb
M (L | aL Ma)
Berikut ini akan ditunjukkan bentuk sentensial, phon sintaks,handel dari relasi yang dapat diturunkan dari produksi.
Bentuk sentensial : babPohon Sintaks :
Relasi Preseden dan Pemakaiannya (cont.)
Z
b
a
bM
Handel : aRelasi yang diberikan Pohon : b a
a b
32
Bentuk sentensial : b(LbPohon Sintaks :
Relasi Preseden dan Pemakaiannya (cont.)
Handel : (L
Relasi yang diberikan Pohon : b (
( L
L b
Z
b
(
bM
L
Bentuk sentensial : b(Ma)bPohon Sintaks : Z
b
(
bM
L
M a )
Handel : Ma)
Relasi yang diberikan Pohon : b (
( L
L b