Rangkuman Materi Teknik Kompilasi
Nama : Haryanto
NIM : 181021400089
PERTEMUAN
2
Translator pada Teknik Kompilasi
Translator
Melakukan pengubahan source code/program
sumber ke dalam target code/object code. Source code ditulis dalam sumber
sedangkan object code bisa dalam bahasa pemrograman lain atau bahasa mesin pada
suatu komputer.
Macam – macam Translator
1. Assembler
Source code adalah bahasa assembly, object
code adalah bahasa mesin contoh : Turbo Assembler dan Macro Assembler
2. Kompilator (
Compiler)
Source code adalah bahasa tingkat tinggi,
object code adalah bahasa mesin atau bahasa assembly. Source code dan data
diproses pada waktu yang berbeda. Contoh ; Turbo Pascal. Compile time adalah
saat pengubahan dari source code ke object code sedangkan Run Time adalah saat
eksekusi object code.
3. Interpreter
interpreter tidak membangkitkan object code,
hasil translasi hanya dalam bentuk internal.
Contoh: BASICA/GW-BASIC,LIPS,SMALLTALK.
Source code dan data diproses pada saat yang
sama.
Model Kompilator
Kompilator umumnya mempunyai dua tugas pokok
:
1. Fungsi
Analisis, biasa disebut Front-end à melakukan
dekomposisi program sumber menjadi bagian-bagian dasarnya.
2. Fungsi
Sintesis, biasa disebut Back-end àmelakukan
pembangkitan dan optimasi program objek.
·
Scanner : Memecah program sumber
menjadi besaran Leksik/Token
·
Parser : Memeriksa kebenaran
dan urutan kemunculan Token
·
Analisis Semantik : Melakukan
analisis semantik,biasanya dalam realisasi kan
digabungkan dengan
Intermediate code generator bagian
yang berfungsi membangkitkan
kode antara
·
Code Generator : Membangkitkan kode
objek
·
Code Optimizer : Memperkecil hasil
dan mempercepat proses
·
Tabel Simbol : Menyimpan semua informasi yang berhubungan
dengan
proses kompilasi
Mutu Kompilator
Mutu dari suatu kompilator tergantung dari
beberapa faktor :
1. Kecepatan dan
waktu proses
Tergantung dari :
·
Penulisan Algoritma Kompilator
·
Kompilator pengkompilasi
2.
Mutu program objek
·
mutu suatu program objek ditentukan oleh ukuran dan kecepatan eksekusi
dari program objek.
3. Integrated
Environment
Merupakan fasilitas terintegrasi yang
dimiliki oleh kompilator.
Pembuatan Kompilator
Dapat dilakukan dengan cara :
1.
Mempergunakan bahasa mesin
2.
Mempergunakan bahasa tingkat tinggi
3.
Mempergunakan bahasa tingkat tinggi lain pada mesin yang sama
4.
Mempergunakan bahasa tingkat tinggi yg sama pada mesin yang berbeda.
5.
Bootstrap ( gagasan dari Nirklaus Wirth : membangun suatu yang besar
dengan terlebih dahulu membuat bagian intinya).
PERTEMUAN
3
Analisis Leksikal / Scanner Teknik Kompilasi
Analisis
Leksikal adalah aliran karakter yang membentuk program sumber dibaca dari kiri
ke kanan dan dikelompokkan dalam apa yang disebut token yaitu barisan dari
karakter yang dalam suatu kesatuan mempunyai suatu arti tersendiri.
Analisis ini
melakukan penerjemahan masukan menjadi bentuk yang lebih berguna untuk
tahap-tahap kompilasi berikutnya.
Analisis
Leksikal merupakan antarmuka antara kode program sumber dan analisis sintaktik
(parser). Scanner melakukan pemeriksaan karakter per karakter pada teks
masukan, memecah sumber program menjadi bagian-bagian disebut Token.
Analisis Leksikal
mengerjakan pengelompokkan urutan-urutan karakter ke dalam komponen pokok:
identifier, delimeter, simbol-simbol operator, angka, keyword, noise word,
blank, komentar, dan seterusnya menghasilkan suatu Token Leksikal yang akan
digunakan pada Analisis Sintaktik.
Token
adalah satuan terkecil dari bahasa sumber yaitu deretan karakter terpendek yang
mengandung arti. Token dikelompokkan menjadi beberapa jenis sbb.:
a)
identifier
b)
keyword
c)
label
d)
operator aritmetika dan assignment
e)
operator relasional - tanda baca, dan sebagainya.
Masing-masing
token diberikan nomor penyajian internal atau sering disebut nomor token,
misalnya sebagai berikut :
nama variabel
a)
konstanta
b)
label
c)
keyword
d)
operator penambahan
e)
operator pemberian (assignment)
f)
operator pengurangan
g)
operator perkalian
h)
operator pembagian
i)
tanda baca koma
j)
tanda baca :
k)
tanda baca ;
l)
dan lain-lain.
PERTEMUAN
4
Perbedaan Deterministic Finite Automata (DFA)
dan
Non-Deterministic Finite Automata (NFA )
Perbedaan
DFA dan NFA, jika DFA state diberi input, selanjutnya tepat menuju 1 state,
berbeda dengan NFA bisa saja menuju ke beberapa state selanjutnya.
Berbagai perbedaan
DFA dan NFA lain, terkait ruang (space) dan eksekusi string yang dilakukan.
Finite automata
merupakan mesin automata dari bahasa reguler. Seperti yang kita ketahui, finite
automata terbagi menjadi 2:
1.
Deterministic Finite Automata (DFA)
2.
Non-Deterministic Finite Automata (NFA)
Baik itu DFA
maupun NFA, memiliki ciri-ciri atau karakteristik yang berbeda.
Berikut ini
beberapa perbedaan DFA dan NFA, dengan disertai pengertian dan contoh dari
masing-masing DFA dan NFA.
a)
Deterministic Finite Automata (DFA) menerima masukan (input) yang hanya
memiliki 1 busur keluar.
b)
Deterministic Finite Automata (DFA) sering dikenal juga sebagai
Deterministic Finite-State Machine (DFSM) dan Deterministic Finite-State
Automaton (DFSA).
c)
DFA diperkenalkan oleh Warren McCulloch dan Walter Pitts sebagai
peneliti pertama yang memperkenalkan konsep yang mirip dengan finite automata
di tahun 1943.
d)
DFA sendiri merupakan finite automata dengan memiliki 5 tuple yang
direpresentasikan sebagai berikut:
Q, himpunan state,
contohnya {q0, q1, q2}
Σ, input alphabet,
contohnya {a, b}
δ, fungsi transisi
q0, state awal
F, state akhir
Contoh DFA
Q = {q0, q1, q2}
∑ = {0, 1}
q0 = {q0}
F = {q2}
Non-Deterministic
Finite Automata (NFA) menerima masukan (input) dengan memiliki lebih dari 1
busur keluar atau bahkan tidak memiliki busur keluar.
Non-Deterministic
Finite Automata (NFA) sering dikenal juga sebagai Non-Deterministic
Finite-State Machine (NFSM) dan Non-Deterministic Finite-State Automaton
(NFSA).
NFA diperkenalkan
pada tahun 1959 oleh Michael O. Rabin dan Dana Scott. NFA sendiri merupakan
finite automata dengan memiliki 5 tuple yang direpresentasikan sebagai berikut:
Q, himpunan state,
contohnya {q0, q1, q2}
Σ, input alphabet,
contohnya {a, b}
δ, fungsi transisi
q0, state awal
F, state akhir
Contoh NFA
Q = {q0, q1, q2}
∑ = {0, 1}
q0 = {q0}
F = {q2}
Perbedaan
DFA dan NFA, jika DFA state diberi
input, selanjutnya tepat menuju 1 state,
berbeda dengan NFA bisa saja menuju ke beberapa state selanjutnya.
Berbagai
perbedaan DFA dan NFA lain, terkait ruang (space)
dan eksekusi string yang dilakukan.
·
Deterministic
Finite Automata (DFA) menerima masukan (input) yang hanya memiliki 1 busur
keluar
Deterministic Finite Automata (DFA)
sering dikenal juga sebagai Deterministic
Finite-State Machine (DFSM) dan Deterministic
Finite-State Automaton (DFSA).
·
Non-Deterministic
Finite Automata (NFA) menerima masukan (input) dengan memiliki lebih dari
1 busur keluar atau bahkan tidak memiliki busur keluar.
Non-Deterministic Finite Automata (NFA)
sering dikenal juga sebagai Non-Deterministic
Finite-State Machine (NFSM) dan Non-Deterministic
Finite-State Automaton (NFSA).
Perbedaan
DFA dan NFA
berikut
ini beberapa perbedaan DFA dan NFA yang disajikan dalam
tabel:
DFA |
NFA |
DFA tidak dapat menggunakan transisi string kosong (empty string) |
NFA dapat menggunakan transisi string kosong (empty string) |
DFA dipahami sebagai sebuah mesin |
NFA dipahami sebagai beberapa mesin kecil yang
melakukan komputasi di waktu bersamaan |
DFA untuk state selanjutnya
bisa ditetapkan dengan jelas |
NFA untuk state selanjutnya
mempunyai banyak kemungkinan |
DFA lebih sulit dibuat |
NFA lebih mudah dibuat |
Waktu yang dibutuhkan untuk mengeksekusi string input
lebih sedikit |
Waktu yang dibutuhkan untuk mengeksekusi string input
lebih banyak |
Semua DFA merupakan NFA |
Tidak semua NFA adalah DFA |
DFA membutuhkan lebih banyak ruang (space) |
NFA membutuhkan lebih sedikit ruang (space) |
PERTEMUAN
5
Tahap–tahap
Kompilasi
Kompilator
(compiler) adalah sebuah program yang membaca suatu
program yang ditulis dalam suatu bahasa
sumber (source language)
dan menterjemah-kannya ke dalam suatu bahasa sasaran (target
language).
Proses
kompilasi dikelompokan ke dalam dua kelompok besar:
1.
Tahap Analisa (Front-end)
a) Menganalisis source code dan memecahnya menjadi
bagian-bagian dasarnya. Menghasilkan kode level menengah dari source code input
yang ada.
2.
Tahap Sintesa (Back-end)
b) Membangun
program sasaran yang diinginkan dari bentuk antara.
Tahap-tahap yang harus
dilalui pada saat mengkompilasi program, yaitu:
1. Analisa Leksikal
2. Analisa
Sintaks
3. Analisa
Semantik
4. Pembangkit Kode Antara
5. Code optimization
6. Object code generation
Keterangan :
1. Analisa Leksikal (scanner)
Berfungsi
memecah teks program sumber menjadi bagian-bagian kecil yang mempunyai satu
arti yang disebut token, seperti : konstanta, nama variabel, keyword, operator.
2. Analisa Sintaks(parser)
Berfungsi
mengambil program sumber (sudah dalam bentuk barisan token) dan menentukan
kedudukan masing-masing token berdasarkan aturan sintaksnya dan memeriksa
kebenaran dan urutan kemunculan token.
3. Analisa Semantik
Berfungsi
menentukan validitas semantiks/keberartian program sumber. Biasanya bagian ini
digabung dengan Pembangkit
kode antara (intermediate code
generator).
a)
Pembangkit
Kode Antara
Berfungsi membangkitkan kode antara.
b)
Code
optimation
Berfungsi mengefisienkan kode antara yang dibentuk.
c)
Code
generator
Berfungsi membangkitkan kode program
target dalam bahasa target yang ekivalen
dengan bahasa sumber .
d)
Symbol
table management
Berfungsi mengelola tabel simbol selama proses kompilasi. Tabel simbol
adalah
struktur data yang memuat record untuk tiap identifier dengan
atribut-atribut
identifier itu.
e)
Penangan Kesalahan (Error
handler)
Berfungsi menangani kesalahan yang berlangsung selama proses kompilasi.
Contoh
:
pernyataan pemberian nilai (assignment) :
position := initial + rate *
60
Lexical
analysis
Mengelompokkan pernyataan tersebut menjadi token-token
sebagai berikut :
1.
Token identifier position
2.
Token simbol assignment :=
3.
Token identifier initial
4.
Token tanda plus +
5.
Token identifier rate
6.
Token tanda perkalian *
7.
Token konstanta angka 60
Ketika
identifier pada program sumber ditemukan lexical analyzer, identifier
dimasukkan ke tabel simbol.
position := initial + rate * 60
diubah
menjadi
id1 := id2 + id3 * 60
PERTEMUAN
6
5 soal dan jawaban
mengenai grammar chomsky Teknik Kompilasi
1.
Apa tata bahasa menurut Chomsky?
Tata Bahasa
Universal:
Menurut Chomsky,
Universal Grammar (UG) adalah. sistem prinsip, kondisi, dan aturan yang
merupakan elemen atau. sifat umum untuk semua bahasa - esensi manusia. bahasa.
2.
Apa 3 jenis tata bahasa?
Ø bersifat
menentukan.
Ø deskriptif.
Ø transformasional-generatif.
3.
Apa sajakah jenis tata bahasa?
Tata Bahasa Kinerja.
Penjelasan tentang sintaks bahasa Inggris sebagaimana yang digunakan oleh
penutur dalam dialog.
Referensi Tata
Bahasa.
Ø Tata Bahasa
Teoretis.
Ø Tata Bahasa
Tradisional.
Ø Tata Bahasa
Transformasional.
4.
Apa itu tata bahasa dan tipenya?
Grammar (kata
benda): struktur dan sistem suatu bahasa, biasanya dianggap terdiri dari
sintaks dan morfologi. Atau Tata Bahasa adalah seperangkat aturan yang membantu
kita memahami bahasa.
Jenis utama tata
bahasa: Tata bahasa deskriptif:
Mengacu pada struktur
bahasa sebagaimana yang digunakan oleh penutur dan penulis.
5.
Apa itu tata bahasa menurut para sarjana?
Tata bahasa didefinisikan dengan beberapa
cara yang berbeda. Oxford American Dictionary, misalnya, mendefinisikan tata
bahasa sebagai: "studi kata-kata dan aturan untuk pembentukan mereka dan
hubungan mereka satu sama lain dalam kalimat; aturan itu sendiri; pidato atau
tulisan yang dinilai baik atau buruk sesuai aturan ini" (1980:282).
PERTEMUAN
7
Definisi Grammar
Pengertian grammar
secara umum yaitu himpunan dari berbagai aturan yang jelas dan terstruktur
untuk mengatur setiap susunan frasa, kalimat, serta kata di dalam bahasa apa
pun.
Di dalam bahasa inggris, selain
kita perlu memperkaya vocabulary, kita juga perlu untuk mengetahui tata cara
penulisan bahasa inggris yang benar agar kita tidak melakukan grammatical
error.
Pengertian Grammar
Dapat dikatakan
bahwasannya pengertian grammar merupakan pelajaran pertama yang diperoleh
manusia sejak bayi.
Sebab ketika kita sudah
mempelajari kata per kata, nantinya kita akan terus belajar untuk merangkai
kata – kata hingga menjadi sebuah kalimat.
Pada bahasa Indonesia sendiri,
pengertian grammar kita kenal dengan peraturan SPOK atau Subyek – Predikat-
Obyek – Keterangan.
Sehingga dapat kita rangkum
jika pengertian grammar merupakan peraturan mengenai struktur kata guna
membentuk sebuah kalimat menjadi sempurna.
Tiga Dasar Tata Bahasa
Terdapat 3 tata dasar dalam
bahasa inggris, diantaranya yaitu:
1. Etimologi
Merupakan ilmu yang mempelajari
mengenai cara untuk menyusun berbagai huruf bahasa inggris yang pas ke dalam
suatu kata bahasa Inggris.
Pada Etimologi, kata di dalam
bahasa inggris dikategorikan menjadi 8 bagian berbeda yang disebut sebagai the
Eight Parts of Speech.
Ke delapan kategori tersebut
diantaranya yaitu:
• noun
• adjective
• verb
• pronoun
• adverb
• preposition
• conjunction
• interjection
2. Sintaks
Merupakan suatu ilmu yang
mempelajari mengenai cara menyusun kata – kata dalam bahasa Inggris agar
menjadi suatu kalimat yang sesuai atau tepat.
Atau dengan kata lain, syntax
adalah bagian dari tata bahasa yang mempelajari mengenai proses untuk membentuk
suatu kalimat.
3. Orthographi
Adalah suatu sistem ejaan
sebuah bahasa yang wujudnya berupa lambang atau tulisan.
Di dalam ortografi terdapat
kapitalisasi, masalah ejaan, tanda baca, serta pemenggalan kata.
Beberapa bahasan yang ada di
dalam orthography antara lain:
a. Word
Adalah rangkaian dari beberapa
huruf yang membentuk suatu arti.
Contoh: money (uang), month
(bulan).
b. Letter (huruf)
Adalah suatu lambang atau
gambaran dari bunyi atau tanda goresan yang dilafalkan atau diucapkan.
c. Syllable (suku kata)
Adalah beberapa bagian dari
suatu kata yang bisa langsung diucapkan.
Contoh: book, glass, clever.
DAFTAR PUSTAKA
Ø http://alifbaekom.blogspot.com/2011/05/translator-pada-teknik-kompilasi.html#:~:text=Melakukan%20pengubahan%20source%20code%2Fprogram,bahasa%20mesin%20pada%20suatu%20komputer.&text=Source%20code%20dan%20data%20diproses%20pada%20waktu%20yang%20berbeda.
Ø https://farmysetiawan.wordpress.com/2012/05/09/analisis-leksikal-analisis-leksikalanalisis-linierpembacaan-sekilas-scanner/
Ø https://fida.ump.ac.id/perbedaan-dfa-dan-nfa/
Ø http://suryantianty.blogspot.com/2015/11/teknik-kompilasi-pendahuluan.html
Ø https://www.thoughtco.com/what-is-grammar-1690909
Ø https://www.yuksinau.id/pengertian-grammar/
No comments:
Post a Comment