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> ::=
| | ::= = <expr>; ::= if <expr> {statemen*} | if <expr> {<statemen>+} else {<statemen>+} ::= while <expr> {<statemen>+ } <expr> ::= | | (<expr>) | <expr> <expr> ::= + | - | * | / | = | <> | < | > | <= | >= ::= * ::= a | b | c | ... | z | A | B | C | ... | Z ::= 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
EBNF Grammar •A = B + 1
Syntax Diagram program
{
}
statemen
assignment statemen
conditional loop
Any Questions? •Analisa apa saja yang dibutuhkan pada tahap Analisa Input Program Sumber •Apa yang dimaksud dengan metalanguage