310 likes | 825 Views
KONSEP dan NOTASI BAHASA. Konsep dan Notasi bahasa. Teknik Kompilasi merupakan kelanjutan dari konsep-konsep yang telah kita pelajari dalam teori bahasa dan automata Thn 56-59 Noam chomsky melakukan penggolongan tingkatan dalam bahasa , yaitu menjadi 4 class
E N D
KonsepdanNotasibahasa • TeknikKompilasimerupakankelanjutandarikonsep-konsep yang telahkitapelajaridalamteoribahasadan automata • Thn 56-59 Noam chomskymelakukanpenggolongantingkatandalambahasa, yaitumenjadi 4 class • PenggolongantingkatanitudisebutdenganhirarkiComsky
KonsepdanNotasibahasa • 1959 Backus memperkenalkannotasi formal baruuntuk syntax bahasa yang lebihspesifik • Peter Nour (1960) merevisimetodedari syntax. Sekarangdikenaldengan BNF (backusNour Form)
Konsep dan 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 • Aturan produksi adalah pusat dari tata bahasa yang menspesifikasikan bagaimana suatu tata bahasa melakukan transformasi suatu string ke bentuk lainnya
Konsep dan Notasi bahasa • Syntax : suatu aturan yang memberitahu apakah sesuatu kalimat (string) adalah valid dalam program atau tidak • Semantic : suatu aturan-aturan yang memberikan arti kepada program
Review Mesin Automata Misal : FSA Misal : Ada mesin penjual permen yang Memuat aturan2 sbb : Harga Permen Rp.25 Mesin tsb dpt menerima koin Rp.5 (n), Rp.10 (d) Rp.25 (q) $ = tombol utk mengeluarkan permen. Kemungkinan2 yang Terjadi diperlihatkan gambar :
Review Mesin Automata Misal : FSA FSA State Diagram nya adalah :
Konsep dan Notasi bahasa Penggolongan Chomsky Bahasa Mesin Automata Aturan Produksi
Keterangan • menyatakan simbol – simbol yang berada di ruas kiri aturan produksi • menyatakan simbol – simbol yang berada di ruas kanan aturan produksi • Simbol-simbol terdiri dari simbol terminal dan non terminal/variabel (masih bisa diturunkan lagi) • Simbol terminal biasanya dinyatakan dengan huruf kecil, sementara non terminal dengan huruf besar
AturanProduksi • Tipe O / Unrestricted: TidakAdabatasanpadaaturanproduksi Abc De • Tipe 1 / Context sensitive: Panjang string ruaskiriharuslebihkecilatausamadenganruaskanan AbDeF CD eF
AturanProduksi • Tipe 2 / Context free grammar: Ruaskiriharuslahtepatsatusimbol variable B CDeFg D BcDe • Tipe 3 / Regular: Ruaskananhanyamemilikimaksimal 1 simbol non terminal dandiletakkan paling kanansendiri A e A efg A efgH C D
Aturan produksi yang tidak legal !!! • Simbol E tidak boleh berada pada ruas kiri misal E Abd • Aturan produksi yang ruas kirinya hanya memuat simbol terminal saja misal : a bd atau ab bd
HirarkiComsky Unrestricted Regular Context Sensitive Context free Regular
Contoh Tata Bahasa Sederhana • <program> BEGIN <Statement-list> END • <Statement-list> <statement> | <statement>; <statement-list> • <statement> <var> := <expression> • <Expression> <term> | <term><op1> <expression> • <term> <factor> | <factor> <op2> <term> • <factor> <var> | <constant> • <var> A|B| ….| Z • <op1> + | - | = • <op2> ^ | * | / • <constant> <real_number> | <integer_part> • <real_number> <integer_part> . <fraction> • <integer_part> <digit> | <integer_part> < digit> • <fraction> <digit> | <digit> <fraction> • <digit> 0|1|….|9
Contoh Begin A := 1; B := A + 2 END
Diagram State • Digunakan untuk mendapatkan token, mempermudah melakukan analisis lexical • Token adalah simbol terminal dari teori bahasa dan automata
ID PLUS huruf + S Huruf, Digit Digit INT - MINUS Blank Digit Contoh : suatu tata bahasa memiliki himpunan simbol terminal/token berikut (ID, PLUS, MINUS, dan INT) token ID untuk karakter huruf a-z, 0-9, token INT untuk digit, token PLUS untuk Penjumlahan dan token MINUS untuk Pengurangan
Notasi BNF (Backus-Nour Form) • AturanProduksibisadinyatakandengannotasi BNF • BNF menggunakanabstraksiuntukstruktur syntax ::=samaidentikdengansimbol | samadenganatau < >pengapitsimbol non terminal { }Pengulangandari 0 sampai n kali
Notasi BNF (Backus-Nour Form) Misalkanaturanproduksisbb: E T | T+E | T-E T a NotasiBNFnyaadalah E ::= <T> | <T> + <E> | <T> - <E> T ::= a
E T + - Diagram Syntax • Alat bantu (tools) dalampembuatan parser/ analisissintaksis • Menggunakansimbolpersegipanjanguntuk non terminal • Lingkaranuntuksimbol terminal Misalnya E T | T+E | T-E
BEGIN Statement END ; BNF: <Block> ::= BEGIN <statement> { SEMICOL <statement>} END
Kualitasdari Compiler • Waktu yang dibutuhkanuntukkompilasi; tergantungdari • Algoritma compiler • Pembuat (compilator) Compiler itusendiri
Kualitasdari Compiler • Kualitasdariobyek program yang dihasilkan • Ukuran yang dihasilkan • Fasilitas-fasilitasIntegrasi yang lainnya • IDE (integrated Development Environment)
Source program Lexical Analysis (scanner) Syntax Analysis (parser) Table management Error Handling Intermediate code Code Optimization Code Generation Object code Struktur COMPILER
Keterangan • Lexical Analyzer = scanner, Syntax Analyzer, dan Intermediate Code merupakanfungsiAnalisisdalam compiler, yang bertugasmendekomposisi program sumbermenjadibagian-bagiankecil • Code generation dan Code optimization adalahmerupakanfungsi synthesis yang berfungsimelakukanpembangkitan / pembuatandanoptimasi program (object program)
Keterangan • Scanner adalahmengelompok-an program asal/sumbermenjadi token • Parser (mengurai) bertugasmemeriksakebenarandanurutandari token-token yang terbentukoleh scanner