Syntax, Semantic & Grammar

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

  1. Mendefinisikan arti dari program yang benar secara syntax dari bahasa tersebut
  2. int nilai[10]
  3. • Semantic akan menentukan deklarasi diatas akan menyebabkan ruang sebanyak 10 elemen integer yang diberikan kepada variabel nilai
  4. if (a > b) max = a else max = b;
  5. 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
  1. Analisa input program sumber
  2. 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