Definisi
• Bahasa pemrograman merupakan notasi formal
• Mempunyai 2 komponen utama :
1. Syntax: Kumpulan aturan formal yang menspesifikasikan komposisi suatu program yang terdiri dari huruf, angka, dan karakter lain
2. 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 alphabet
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 memiliki beberapa criteria
- 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 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
- 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
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, symbol 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
A = B +1
Leave a comment