Anda di halaman 1dari 13

MAKALAH

MATA KULIAH TEKNIK KOMPILATOR

DOSEN PENGAMPU
KARTIKA SARI, S.Kom., M.Cs

DISUSUN OLEH
ZHULFIKAR ANUGRAH
172101888

SEKOLAH TINGGI MANAJEMEN INFORMATIKA DAN KOMPUTER


TEKNIK INFORMATIKA
PONTIANAK
2019/2020
KATA PENGANTAR

Puji syukur kehadirat Tuhan Yang Maha Kuasa atas segala limpahan Rahmat,
Inayah, Taufik dan Hinayahnya sehingga saya dapat menyelesaikan penyusunan makalah
ini dalam bentuk maupun isinya yang sangat sederhana. Semoga makalah ini dapat
dipergunakan sebagai salah satu tugas struktur, petunjuk maupun pedoman bagi pembaca
dalam memahami dan mempelajari mata kuliah teknik kompilator.

Harapan saya semoga makalah ini membantu menambah pengetahuan dan


pengalaman bagi para pembaca, sehingga saya dapat memperbaiki bentuk maupun isi
makalah ini sehingga kedepannya dapat lebih baik.

Makalah ini saya akui masih banyak kekurangan karena pengalaman yang saya
miliki sangat kurang. Oleh kerena itu saya harapkan kepada para pembaca untuk
memberikan masukan-masukan yang bersifat membangun untuk kesempurnaan makalah
ini.

Pontianak, Oktober 2019

Zhulfikar Anugrah

i
DAFTAR ISI

KATA PENGANTAR ............................................................................................ i


DAFTAR ISI .......................................................................................................... ii
BAB I...................................................................................................................... 1
II.1 TEKNIK KOMPILATOR .......................................................................... 1
II.2 TAHAP KOMPILASI ................................................................................ 1
II.3 TRANSLATOR .......................................................................................... 1
II.4 ASSEMBLER ............................................................................................. 1
II.5 INTERPRETER ......................................................................................... 2
II.6 KOMPILATOR .......................................................................................... 2
BAB II .................................................................................................................... 3
II.1 REGEX ...................................................................................................... 3
II.2 EKSPRESI REGULER ............................................................................. 3
II.3 TOOL REGEX .......................................................................................... 3
II.4 ANALOGI REGEX ................................................................................... 3
II.5 ATURAN REGEX .................................................................................... 4
II.6 CONTOH KASUS .................................................................................... 4
BAB III ................................................................................................................... 5
III.1 KONSEP DAN NOTASI BAHASA .......................................................... 5
III.2 GRAMMAR ............................................................................................... 5
III.3 HIRARKI CHOMSKY .............................................................................. 5
III.4 ATURAN PRODUKSI .............................................................................. 6
III.5 AUTOMATA ............................................................................................. 6
BAB IV ................................................................................................................... 7
IV.1 ANALISIS LEKSIKAL ............................................................................. 7
IV.2 PERAN ANALISIS LEKSIKAL ............................................................... 7
IV.3 TOKEN....................................................................................................... 7
IV.4 DIAGRAM TRANSISI .............................................................................. 8
BAB V .................................................................................................................... 9
V.1 ANALISIS LEKSIKAL ............................................................................. 9
V.2 BESARAN LEKSIKAL ............................................................................. 9
V.3 KESALAHAN LEKSIKAL ....................................................................... 9
V.4 TATA BAHASA BEBAS KONTEKS ..................................................... 10
V.5 FINITE AUTOMATA ............................................................................... 10

ii
BAB I

I.1 TEKNIK KOMPILATOR


Teknik : Metode atau cara
Kompilasi : Proses mengabungkan serta menterjermahkan sesuatu
(source program) menjadi bentuk lain.
TEKNIK KOMPILASI merupakan Teknik dalam melakukan pembacaan
suatu program yang ditulis dalam bahasa sumber, kemudian diterjemahkan
ke dalam suatu bahasa lain yang disebut bahasa sasaran.
I.2 TAHAP KOMPILASI

KOMPILATOR biasa digunakan untuk program komputer yang


menerjemahkan program yang ditulis dalam bahasa pemrograman tingkat
tinggi (semacam bahasa Pascal, C++, BASIC, FORTRAN, Visual Basic,
Visual C#, Java, xBase, atau COBOL) menjadi bahasa mesin, biasanya
dengan bahasa Assembly sebagai perantara
I.3 TRANSLATOR
Adalah sebuah proses 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.
Translator artinya Penterjemah/
I.4 ASSEMBLER
a. Source Code adalah bahasa assembly yang merupakan bentuk simbolik
dari bahasa mesin, dimana setiap code operasi program memiliki kode
simbolik
b. Assembler adalah proses mentranslasikan source code dalam bahasa
rakitan ke dalam bahasa mesin
c. Object Code dalam bahasa pemrograman ialah suatu kode yang
dihasilkan dari proses kompilasi yang dapat bermacam-macam
(banyak) bentuknya tergantung pada target yang diinginkan

1
I.5 INTERPRETER
Interpreter adalah Perangkat lunak yang mampu mengeksekusi code
program (yang ditulis oleh programmer) lalu menterjemahkannya ke
dalam bahasa mesin, sehingga mesin melakukan instruksi yang diminta
oleh programmer tersebut.

I.6 KOMPILATOR
Kompilator adalah suatu program komputer yang membaca seluruh
program dari bahasa tingkat tinggi yang dimengerti oleh manusia dan
kemudian menerjemahkan keseluruhan program tersebut dalam bahasa
mesin. Program yang sudah diterjemahkan tersebut akhirnya akan
dijalankan oleh komputer.

2
BAB II

II.1 REGEX
a. Bahasa, atau bahkan mirip bahasa pemrograman mini untuk
mendeskripsikan dan memparsing string atau teks
b. Notasi yang dapat digunakan untuk mengolah teks.
c. Sering digunakan untuk “search and replace”.
d. Pengungkapan atau proses menyatakan bahasa reguler atau Operasi
reguler yang digunakan untuk membentuk suatu bahasa.
II.2 EKSPRESI REGULER
Ekspresi regular (disingkat ER) adalah pola (pattern) suatu untai dari suatu
Bahasa.
Notasi espresi regular yang akan digunakan adalah :
“*” Karakter asterisk menunjukkan symbol dari suatu untai dapat tidak
muncul atau muncul sebanyak n kali.
“+” Karakter plus pada posisi superskrip menunjukkan bahwa symbol dari
suatu untai dapat muncul satu kali atau muncul sebanyak n kali.
“” Berfungsi sama seperti “+”. Maknanya sama seperti kata “atau”
“.” Karakter titip bearti konkatenasi. Maknanya sama seperti kata “dan”.
Lambang titik boleh dihilang. Jadi a.b umumnya ditulis ab.
II.3 TOOL REGEX
a. Ditemui di grep, QED, AWK, emacs, vi.
b. Salah satu tool yang dapat digunakan untuk belajar RE adalah Regex
Coach.
c. Notepad++, Notepad2, OpenOffice, RegexBuddy, PowerGREP.
d. Regexstudio.com & Kodos.sourceforge.net.
II.4 ANALOGI REGEX
a. RE dapat dianalogikan dengan berbagai function pengolah string pada
bahasa pemrograman yang belum mendukung RE. Misalnya strcmp(),
length(), mid(), trim(), substr(), pos(), strstr() dan lain-lain.
b. RE juga bisa dianalogikan/mirip dengan fungsifungsi WildCardpada
DOS/UNIX untuk pengelolaan file.

3
c. Hati-hati jika salah menggunakan RE, misal mencari kata “cat”maka
“vacation”akan ikut ditemukan.
II.5 ATURAN REGEX
a. Leftmost(Suatu penguraian /penurunan
dikatakan leftmost derivation bila setiap tahapan penurunan variabel /
non terminal terkiri yang diuraikan)
b. Quantifier is greedy(akan cocok dengan string terpanjang)
c. Rightmost(Apabila setiap tahapan penurunan variabel / non terminal
paling kanan yang diuraikan disebut rightmost deriva tion)
II.6 CONTOH KASUS
Seorang programmer harus membuat sebuah tool, yang dapat mengecek
kata-kata yang dobel seperti ''kemarin-kemarin", Tugas programmer itu
adalah membuat program yang :
Menerima banyak file untuk diperiksa, melaporkan setiap baris yang
memiliki kata yang dobel, di-highlight, dan nama file akan muncul pada
setiap file yang dilaporkan.
Mampu memeriksa pada seluruh baris, bahkan untuk kata yang ada diakhir
baris dan kata yang sama berikutnya ditemukan pada awal baris.
Mampu mencari kata yang dobel secara incase-sensitive, seperti “Lagi
lagi”, dan walaupun dipisahkan oleh banyak white-space karakter
sekalipun.
Mampu mencari kata dobel yang ada di teks HTML atau memiliki karakter
tag. Seperti contoh ini: '…it is <B>very</B> very important
Dengan RE kita dapat meng-highlightkata yang ulang, membuang setiap
baris yang tidak ada kata yang ulangnya, dan kita bisa membuat setiap
baris menampilkan nama filenya.

4
BAB III

III.1 KONSEP & NOTASI BAHASA


Tata bahasa (grammar) adalah sekumpulan dari himpunan variabel-
variabel, simbol-simbol terminal, simbol non-terminal, simbol awal yang
dibatasi oleh aturan-aturan produksi.

III.2 GRAMMAR
Bahasa adalah himpunan kalimat-kalimat. Anggota Bahasa bisa tak
hingga kalimat
Simbol-simbol Terminal:
a. Huruf kecil awal alfabet, misal x, y, z
b. Simbol operator, misal +, -, dan x
c. Simbol tanda baca, misal (,), dan ;
d. String yang tercetak tebal, misal, if, then, dan else
Simbol-Simbol Non Terminal:
a. Huruf besar awal alfabet, misal X, Y, Z.
b. Huruf S sebagai simbol awal.
c. String yang tercetak miring, misal expr dan stmt.

III.3 HIRARKI CHOMSKY


1. Tipe 0 (Unrestricted)
Pada tipe 0 ini "simbol ruas sebelah kiri harus minimal ada sebuah simbol
variabel dan tidak ada batasan pada aturan produksi". Tipe 0 menggunakan
mesin automata dengan Mesin Turing.
2. Tipe 1 (Context Sensitive)
Pada tipe 1 ini "simbol pada ruas sebelah kiri harus minimal ada sebuah
variabel dan panjang String ruas kiri harus lebih kecil atau sama dengan
ruas kanan (|a| <=|B|)". Tipe 1 menggunakan mesin automata dengan
Linier Bounded Automata.
3. Tipe 2 (Context Free / Bebas Konteks)

5
Pada tipe 2 ini "simbol sebelah kiri harus simbol variabel". Tipe 2
menggunakan mesin automata dengan Push Down Automata.
4. Tipe 3 (Regular)
Pada tipe 3 ini "simbol sebelah kiri harus berupa simbol variabel dan
simbol sebelah kanan maksimal hanya memiliki sebuah simbol variabel
dan bila ada terletak di paling kanan". Tipe 3 menggunakan mesin
automata dengan Finite State Automata DFA dan NFA.

III.4 ATURAN PRODUKSI


Tipe O / Unrestricted: Tidak ada Batasan pada aturan produksi
Abc => De
Tipe 1 / Context sensitive: Panjang string ruas kiri harus lebih kecil atau
sama dengan ruas kanan (|α| ≤ |β|)
Ab => DeF
CD => eF
S => ɛ
a. Aturan produksi yang tidak lega
Simbol ɛ tidak boleh berada pada ruas kiri
Misal: ɛ => Abd
ɛ merupakan string kosong
Aturan produksi yang ruas kirinya hanya memuat symbol terminal saja
misal: a => bd atau ab => bd
III.5 AUTOMATA
Finite State Automata (FSA) adalah model matematika yang dapat
menerima input dan mengeluarkan output yang memiliki state yang
berhingga banyaknya dan dapat berpindah dari satu state ke state lainnya
berdasarkan input dan fungsi transisi. Finite state automata tidak memiliki
tempat penyimpanan/memory, hanya bisa mengingat state terkini

6
BAB IV

IV.1 ANALISIS LEKSIKAL


Sebuah proses yang mendahului parsing parsing sebuah rangkaian
karakter. Analisis leksikal dapat menerima masukan serangkaian karakter
(contohnya seperti dalam dokumen plain-text atau source code) dan
menghasilkan deretan symbol yang masing-masing disebut token. Proses
parsing akan lebih mudah dilakukan jika inputnya sudah berupa token.
Analisis leksikan mengerjakan pengelompokan berdasarkan urutan-urutan
karakter ke dalam komponen pokok, identifier, delimeter, symbol-simbol
operator, angka, keyword, blank, komentar dan seterusnya dimana akan
menghasilkan suatu token leksikal yang digunakan pada analisi sintatik

IV.2 PERAN ANALISIS LEKSIKAL


a. Membaca karakter input dan menghasilkan token
b. Menghilangkan komentar dan ruang kosong
c. Menghubungkan antara pesan kesalahan yang diperoleh kompilator
dengan program sumber
d. Mengenali identifier dan keyword
e. Identifier = variable, array, fungsi, token dan lain lain
f. Keyword = fixed character : begin, end, if, etc

IV.3 TOKEN
Token adalah level entitas yang paling rendah dari diagram sintaks
a. Identifiers (contohnya variable atau nama fungsi)
b. Keyword (seperti while, if, function, dll)
c. Operator ( +, =, *, ++, +=, dll)
d. Literal (nilai konstanta seperti 27, “hello”, dll)
e. Punctutation (“;” , ”:” , ”,” , dll)

7
IV.4 DIAGRAM TRANSISI
Sebagai langkah antara di dalam membentuk analis leksikal,
dibuatlah satu diagram transisi.
Diagram transisi atau diagram peralihan adalah stylized flowchart
yang dibentuk sebagai langkah antara dalam pembentukan token pada
analisis leksikal.
Diagram transisi menggambarkan aksi yang dilakukan apabila
analisis leksikal dipanggil untuk memperoleh token berikutnya.

8
BAB V

V.1 ANALISIS LEKSIKAL


Analisis leksikal merupakan interface/ antarmuka antara program sumber
dan analisis sintaktik. Scanner melakukan pemeriksaan karakter per
karakter pada teks masukan( input), kemudian memecah sumber program
menjadi bagian-bagian yang disebut “TOKEN”
V.2 BESARAN LEKSIKAL
1. Identifier
Keyword merupakan kata kunci yang sudah didefinisikan oleh
suatu Bahasa seperti: BEGIN, IF , ELSE didalam pascal
2. Delimiter
Delimiter berguna untuk pemisah/pembatas seperti kurung buka
tutup, titik, koma, WhiteSpace.
3. Nilai Konstanta
Konstanta adalah besaran yang berupa bilangan bulat(Integer),
bilangan pecahan(float/real), Boolean(TRUE/FALSE), Karakter, String,
dsb.
4. Operator
Operator terbagi menjadi 2 yaitu:
- Op. Aritmatika = ( * ,/ ,+ ,-)
- Op. Logika = (<, +, >)
V.3 KESALAHAN LEKSIKAL
Hanya sedikit kesalahan leksikal (lexical errors) yang dapat dilihat di
phase lexical analyzer karena phase ini mempunyai pandangan yang
sempit pada program sumber pandangan yang sempit pada program
sumber
Misal; fi(a = = f(x)) dalam bahasa C, maka lexical analyzer tidak dapat
menjelaskan apa fi tersebut betul sebagai identifier atau salah eja yang
seharusnya adalah if

9
V.4 TATA BAHASA BEBAS KONTEKS
TATA BAHASA BEBAS KONTEKS
Sebuah tata Bahasa dimana tidak terdapat pembatasan pada hasil
produksinya.
Contoh:
B -> CDeFg
D -> BcDe
A -> BaD
Z -> YYwX

V.5 FINITE AUTOMATA


FA Tools/model pendukung Scanner
Deterministik FA (DFA)
Setiap input punya 1 alternatif
Non-Deterministik FA (NFA)
Setiap input punya > 1 alternatif

10

Anda mungkin juga menyukai