Anda di halaman 1dari 18

LAPORAN PRAKTIKUM

SISTEM KOMPILASI

SITI NURHALIZA SOFYAN


0701173208
ILMU KOMPUTER 6

PROGRAM STUDI ILMU KOMPUTER


FAKULTAS SAINS DAN TEKNOLOGI
UNIVERSITAS ISLAM NEGERI SUMATERA UTARA
MEDAN
2021
KATA PENGANTAR

Dengan menyebut nama Allah SWT yang Maha Pengasih lagi Maha
Panyayang, dengan ini saya panjatkan puji syukur atas kehadirat-Nya, yang telah
melimpahkan rahmat-Nya kepada saya, sehingga saya dapat menyelesaikan
laporan praktikum Sistem Kompilasi

Laporan hasil ini dibuat agar dapat memenuhi materi mata kuliah
Praktikum Sistem Kompilasi. Oleh sebab itu, saya harap adanya kritik, saran dan
usulan daripada laporan hasil ini. Mengingat tidak ada sesuatu yang sempurna
tanpa saran yang membangun dan membuat saya jauh lebih kedepannya dalam
membuat laporan hasil maupun dalam penguasaan materi yang mumpuni

Medan, 2020

Siti Nurhaliza Sofyan


DAFTAR ISI

KATA PENGANTAR................................................................................... i
DAFTAR ISI.................................................................................................. ii
MODUL 1
MEMBUAT BAHASA PEMOGRAMAN................................................. 1

1.1 Bahasa Pemograman........................................................................ 1


1.2 Proses Perancangan Bahasa Pemograman....................................... 2

LEMBAR PENGESAHAN........................................................................... 6
MODUL 2
MEMBUAT BAHASA PEMOGRAMAN.................................................

2.1 Parsing................................................................................................. 1

2.2 Top-Down Parsing.............................................................................. 2

2.3 Button-Up Parsing............................................................................... 2

2.2 Top-Down Parsing.............................................................................. 2

2.2 Contoh Program.................................................................................. 2

LEMBAR PENGESAHAN........................................................................... 6
MODUL 2
PARSING
2. 1 Parsing

Dalam komputasi, parser adalah salah satu komponen dalam sebuah


interpreter atau kompiler, yang memeriksa sintaks yang benar dan membangun
struktur data (sering beberapa jenis pohon parse, sintaks abstrak pohon atau
struktur hirarkis lainnya) yang tersirat dalam token masukan. Program pendeteksi
kombinasi tombol sering menggunakan penganalisis leksikal terpisah untuk
membuat token dari urutan karakter masukan. Parser dapat diprogram dengan
tangan atau mungkin (semi-) otomatis dihasilkan (dalam beberapa bahasa
pemrograman) dengan alat (seperti Yacc) dari tata bahasa yang ditulis dalam
bentuk Backus-Naur.

Penggunaan parser paling umum adalah sebagai komponen kompilator


atau interpreter. Hal ini mem-parsing kode sumber bahasa pemrograman
komputer untuk membuat beberapa bentuk representasi intern. Bahasa
Pemrograman cenderung akan ditentukan dalam hal tata bahasa bebas konteks
karena cepat dan efisien parser dapat ditulis untuk mereka. Parser yang ditulis
oleh tangan atau yang dihasilkan oleh generator parser.

Konteks tata bahasa bebas terbatas sejauh mana mereka bisa


mengekspresikan semua persyaratan dari sebuah bahasa. Informal alasannya
adalah bahwa memori seperti bahasa terbatas. tata bahasa tidak dapat mengingat
keberadaan membangun atas masukan sewenang-wenang panjang; ini diperlukan
suatu bahasa yang, misalnya, nama harus dinyatakan sebelum dapat dirujuk. tata
bahasa kuat lainnya yang dapat mengungkapkan kendala ini, bagaimanapun, tidak
bisa diurai efisien. Oleh karena itu, strategi umum untuk membuat parser santai
untuk tata bahasa bebas konteks yang menerima superset dari bahasa yang
dikehendaki konstruksi (yaitu, ia menerima beberapa konstruksi tidak valid),
kemudian, konstruksi yang tidak diinginkan dapat disaring.
Jenis dari parser
Tugas parser pada dasarnya adalah untuk menentukan apakah dan
bagaimana input dapat diturunkan dari simbol awal tata bahasa. Hal ini dapat
dilakukan pada dasarnya dua cara:  Top-down parsing parsing top-down, dapat
dilihat sebagai upaya untuk menemukan yang paling kiri derivasi dari aliran
masukan dengan mencari pohon parse menggunakan ekspansi top-down dari
aturan di tata bahasa formal. Token dikonsumsi dari kiri ke kanan. Inklusif pilihan
digunakan untuk menampung semua ambiguitas dengan memperluas kanan
alternatif-sisi aturan tata bahasa.  Bottom-up parsing – parser A dapat memulai
dengan masukan dan berusaha untuk menulis ulang ke simbol awal. Intuitif,
parser upaya untuk menemukan elemen paling dasar, maka unsur-unsur yang
mengandung, dan sebagainya. parser LR adalah contoh parser bottom-up.Istilah
lain yang digunakan untuk jenis parser ini Shift-Mengurangi parsing.

Parser LL dan parser recursive-keturunan adalah contoh dari top-down


parser yang tidak dapat menampung produksi rekursif kiri. Meskipun telah
percaya bahwa implementasi sederhana parsing top-down tidak bisa menampung
langsung dan tidak langsung kiri rekursi dan mungkin memerlukan waktu
eksponensial dan kompleksitas ruang sementara penguraian tata bahasa bebas
konteks ambigu, algoritma yang lebih canggih untuk parsing top-down telah
dibuat oleh Frost , Hafiz, dan Callaghan  yang mengakomodasi ambiguitas dan
rekursi kiri dalam waktu polinomial dan yang menghasilkan representasi
polynomial-ukuran jumlah potensial-pohon parse eksponensial. algoritma mereka
mampu menghasilkan paling baik kiri dan paling kanan derivasi dari input
berkaitan dengan sebuah CFG yang diberikan.
Sebuah perbedaan penting berkaitan dengan parser adalah apakah sebuah
parser menghasilkan derivasi paling kiri atau paling kanan derivasi (lihat tata
bahasa bebas konteks).parser LL akan menghasilkan penurunan paling kiri dan
parser LR akan menghasilkan derivasi paling kanan (walaupun biasanya secara
terbalik).
Contoh tentang parser
1. Parser top-down, Beberapa parser yang menggunakan top-down parsing
meliputi: Rekursif keturunan parse, LL parser (Kiri-ke-kanan, paling kiri
derivasi);
2. Parser Earley, X-SAIGA – Spesifikasi executable tata bahasa. Berisi
publikasi yang terkait dengan top-down parsing algoritma yang mendukung
rekursi kiri dan ambiguitas dalam waktu polinomial dan ruang;
3. Parser Bottom-up,  Beberapa parser yang menggunakan bottom-up parsing
meliputi: Diutamakan parser, Operator-diutamakan parser, Wikipedia
diutamakan parser, SM (konteks terbatas) parsing, LR parser (kiri ke kanan,
paling kanan derivasi), Wikipedia LR (SLR) parser, LALR parser, Canonical
LR (LR (1)) parser, GLR parser, CYK parser;
4. Pengembangan perangkat lunak Parser, Beberapa alat yang terkenal
meliputi pembangunan parser berikut. Juga lihat perbandingan generator
parser, ANTLR, Banteng, Coco / R, GOLD, JavaCC, Undang-
undang, Ragel, Definisi Sintaks Formalisme, Roh Parser
Framework, Sintaksis, Yacc

2.2 Top Down Parsing

Top-down parser bekerja dengan cara menguraikan sebuah kalimat mulai dari
constituent yang terbesar yaitu sampai menjadi constituent yang terkecil. Hal ini
dilakukan terus-menerus sampai semua komponen yang dihasilkan ialah
constituent terkecil dalam kalimat, yaitu kata. Sebagai contoh, dengan
menggunakan contoh grammar di atas, dapat dilakukan proses top-down parsing
untuk kalimat “The dog chased the cat” yang ditunjukkan pada gambar 3. Dari
gambar ini terlihat bahwa top-down parser menelusuri setiap node pada parse tree
secara pre-order. Beberapa metode parsing yang bekerja secara topdown ialah:

1. Top-down parser biasa


2. Recursive-descent parser
3. Transition-network parser
4. Chart parser
Cara Kerja Top-down Parser

Top-down parser dapat diimplementasikan dengan berbagai bahasa


pemrograman, namun akan lebih baik jika digunakan declarative language seperti
Prolog atau LISP. Hal ini disebabkan oleh karena pada dasarnya proses parsing
ialah proses searching yang dilakukan secara rekursif dan backtracking, dimana
proses ini sudah tersedia secara otomatis dalam bahasa Prolog. Dengan demikian
parser yang ditulis dalam Prolog atau bahasa deklaratif lainnya akan menjadi jauh
lebih sederhana daripada parser yang dibuat dalam bahasa prosedural biasanya
seperti Pascal, C dan sebagainya.

2.3 Bottom-Up Parsing

Bottom-up parser bekerja dengan cara mengambil satu demi satu kata dari
kalimat yang diberikan, untuk dirangkaikan menjadi constituent yang lebih besar.
Hal ini dilakukan terus-menerus sampai constituent yang terbentuk ialah sentence
atau kalimat. Dengan demikian metode bottom-up bekerja dengan cara yang
terbalik dari top-down

Cara Kerja Bottom-Up Parser


2.4 Contoh Program
llout.c - File Header - Numeric Limits

llama.par - File Header - Macro Definitions


Top-Down, Table-Driven Parsing-The LLama Output File
llout.c - Parse Tables

-Top-Down, Table-Driven Parsing-The LLama Output File


Top-Down, Table-Driven Parsing-The LLama Output File

llama.par- Macros for Parsing and Debugging Support


Top-Down, Table-Driven Parsing-The LLama Output File
llama.par - The Parser
Top-Down, Table-Driven Parsing-The LLama Output File
LEMBAR PENGESAHAN

Judul : Parsing
Nama : Siti Nurhaliza Sofyan
NIM : 0701173208
Program Studi : Ilmu Komputer

Medan, 2021

Menyetujui,

Koordinator Asisten Asisten

( ) ( )

Mengetahui,

Dosen Penanggung Jawab

( Aidil Halim Lubis, M.Kom )

Anda mungkin juga menyukai