Syntax, Semantic & Grammar Konsep Bahasa Pemrograman Materi 3 Yudianto Sujana, M.Kom
Definisi Bahasa pemrograman merupakan notasi formal Mempunyai 2 komponen utama Syntax dan Semantic Syntax: Kumpulan aturan formal yang menspesifikasikan komposisi suatu program yang terdiri dari huruf, angka, dan karakter lain Semantic: Mendefinisikan arti dari program yang benar secara syntax dari bahasa tersebut
Desain Bahasa Pemrograman Kriteria desain bahasa pemrograman Abstraction Kemampuan untuk mengkonstruksi suatu pola yang berulang-ulang, contoh: subprocedure Simplycity Kesederhanaan, semakin sedikit konsep untuk dapat dimengerti, semakin baik Regularity Keteraturan, semakin sedikit melanggar aturan semakin baik Konsistensi Ketetapan suatu alur atau bentuk bahasa contoh: A(i) pada VB Translation Penerjemah yang cepat dan menghasilkan kode tujuan yang efisien
Syntax Kumpulan aturan yang mendefinisikan suatu bentuk bahasa Syntax mendefinisikan bagaimana suatu kalimat dibentuk sebagai barisan/urutan dari pemilihan suatu kata dasar Kata dikonstruksikan dengan karakter-karakter alfabet contoh keyword (reserve word) dalam bahasa C while, do, if, else, dll Syntax mengatur cara mengkombinasikan kata-kata tersebut ke dalam suatu statement dengan bentuk yang benar sehingga dapat disusun suatu program yang dapat berjalan dengan benar Syntax tidak mengerti arti atau isi dari suatu kalimat, semantic yang bisa mengartikannya Syntax menyediakan bentuk-bentuk notasi untuk kominikasi antara programmer dan pemroses bahasa pemrograman, sehingga mempermudah pembuatan suatu program
Syntax Syntax memiliki beberapa kriteria Readability Mudah dibaca Writeability Mudah ditulis Verifiability Verifikasi program (konsep kebenaran) Kemudahan Translasi Mudah bagi manusia, sulit di translasi Pengurangan Ambiguitas Dua arti atau lebih contoh A(i) Array atau pemanggilan fungsi
Syntax Syntax didefinisikan dengan dua kumpulan aturan Lexical dan Syntactic Lexical: menspesifikasikan kumpulan karakter yang terdapat dalam alphabet dari bahasa dan cara supaya karakter-karakter tersebut dikombinasikan ke dalam kata-kata yang valid dan diterima Syntactic: elemen-elemen yang mengatur bentuk suatu statement-statement dalam bahasa pemrograman
Elemen-elemen Syntactic Himpunan Karakter ASCII - Karakter angka dan huruf Identifier Umumnya string dari huruf dan angka Simbol untuk operator Simbol matematika Keyword dan Reserved Word Kata-kata milik bahasa, biasanya tidak boleh digunakan sebagai identifier
Elemen-elemen Syntactic Komentar Dokumentasi program /* pada bahasa c family */ Blank (spasi) diabaikan Delimiter dan Tanda Kurung Elemen awalan dan akhiran statement begin... end {... } Ekspresi Suatu fungsi yang mengakses data dalam suatu program dan mengembalikan suatu nilai
Semantic Mendefinisikan arti dari program yang benar secara syntax dari bahasa tersebut int nilai[10] Semantic akan menentukan deklarasi diatas akan menyebabkan ruang sebanyak 10 elemen integer yang diberikan kepada variabel nilai if (a > b) max = a else max = b; Ekspresi a > b harus dievaluasi terlebih dulu, tergantung dari nilai ini satu dari dua statement di belakangnya akan dieksekusi
Any Questions? Sebutkan komponen utama bahasa pemrograman Sebutkan aturan-aturan dalam Syntax
Tingkatan Translasi Translasi dari syntax ke executable merupakan pusat implementasi bahasa pemrograman Kecepatan dan efisiensi eksekusi menjadi tujuan utama. Translasi dibagi dua Analisa input program sumber Synthesis program objek yang executable
Analisa Input Program Sumber Program sumber dilihat oleh translator sebagai kumpulan urut-urutan simbol. Suatu program yang diatur rapi oleh programmer tidak akan terlihat oleh translator Dibutuhkan analisa-analisa berikut: Analisa Lexical Tahap dasar dari translasi, mengerjakan pengelompokkan urut-urutan karakter ke dalam komponen pokok: identifier, delimiter, simbol operator, angka, keyword, blank, komentar, dst.
Analisa Input Program Sumber Analisa Syntactic Biasa disebut parsing Struktur program yang lebih besar diidentifikasi: statement, deklarasi, ekspresi, dll Analisa Semantic Pusat dari tahapan translasi Struktur syntatic hasil dari syntatic analyzer diproses Menghasilkan suatu kode objek yang executable sederhana Akan dimanipulasi oleh tahap optimasi sampai jadi kode executable
Synthesis Program Objek yang Executable Merupakan tahapan akhir suatu translasi yang berfokus pada pembangunan program yang executable Terdiri dari beberapa tahapan: Optimasi Menghilangkan inefisiensi kode Mengubah kode yang tidak efisien menjadi kode yang efisien Penghasil Kode Dibentuk sebagai bahasa Assembly, kode mesin atau program obyek lainnya Linking dan Loading Bersifat optional Menggabungkan potongan-potongan kode yang dihasilkan dari translasi terpisah kedalam program final executable yang utuh
Grammar Suatu kumpulan aturan (production) yang menentukan urut-urutan karakter Suatu formal grammar adalah grammar biasa yang ditentukan dengan menggunakan notasi yang ketat Ada dua kelas grammar yang berguna untuk teknologi compiler EBNF Grammar Regular Grammar
EBNF Grammar Extended Backus-Naus Form Metalanguage Bahasa yang digunakan untuk mendeskripsikan bahasa lain Menggunakan notasi matematis ::=, <, >,, *, +, {, }, [, ] Disebut metasymbol Suatu bahasa yang dideskripsikan dalam EBNF merupakan suatu kumpulan aturan
EBNF Grammar <program> ::= {<statemen>*} <statemen> ::= <assignment> <conditional> <loop> <assigment> ::= <identifier> = <expr>; <conditional> ::= if <expr> {statemen*} if <expr> {<statemen> + } else {<statemen> + } <loop> ::= while <expr> {<statemen> + } <expr> ::= <identifier> <number> (<expr>) <expr> <operator> <expr> <operator> ::= + - * / = <> < > <= >= <identifier> ::= <letter> <digit>* <letter> ::= a b c... z A B C... Z <digit> ::= 0 1 2... 9
EBNF Grammar Simbol Arti ::= Didefinisikan sebagai * Nol atau lebih pemunculan elemen yang terdahulu + Satu atau lebih pemunculan elemen yang terdahulu Pilihan atau <... > Elemen yang ada didalamnya merupakan non-terminal {... } Elemen yang ada didalamnya merupakan terminal
A = B + 1 EBNF Grammar
Syntax Diagram program { } statemen statemen assignment conditional loop
Any Questions? Analisa apa saja yang dibutuhkan pada tahap Analisa Input Program Sumber Apa yang dimaksud dengan metalanguage