English French German Spain Italian Dutch Russian Portuguese Japanese Korean Arabic Chinese Simplified

Senin, 07 Desember 2009

Sintaks

Pendefisian Sintaks suatu bahasa dilakukan dengan menggunakan suatu notasi tata bahasa bebas konteks (context-free grammar) atau untuk memudahkan disebut tata bahasa saja.
Suatu tata bahasa secara alamiah menerangkan struktur hirarki dari banyak bentuk bahasa pemrograman. Misalkan perintah if-else dari bahasa C mempunyai bentuk:
                                if (ekspresi) perintah else perintah
Ket :
Dalam hal ini suatu perintah adalah gabungan dari :
  •    kata kunci if
  •     kurung buka
  •     ekspresi
  •     kurung tutup
  •     perintah
  •     kata kunci else
  •     perintah lainnya


(Dalam bahasa C tidak ada kata kunci then).
Bila digunakan nama variabel expr untuk menyatakan suatu ekspresi dan variabel stmt untuk menyatakan suatu perintah, maka struktur aturan ini dapat dinyatakan sebagai berikut :
stmt → if (expr) stmt else stmt
Ket:
→ (tanda panah dibaca sebagai) "Dapat berbentuk suatu".
Aturan diatas disebut juga suatu produksi (production). Dalam suatu produksi seperti ini unsur leksikal seperti kata kunci if dan tanda kurung "(",")" disebut suatu token
Variabel seperti expr dan stmt disebut dengan non-terminal.
Secara lengkap suatu tata bahasa bebas konteks dapat mempunyai 4 komponen berikut:
  •     Himpunan dari token yang dikenal dengan simbol token.
  •     Himpunan dari unsur non-terminal
  •     Himpunan dari produksi, di mana masing-masing produksi terdiri dari unsur non-terminal (bagian kiri tanda panah dari suatu produksi). Bagian kanan produksi berupa → (tanda panah) dan barisan dari token dan/atau non-terminal (sebelah kanan tanda panah).
  •     Salah satu unsur non-terminal yang telah ditentukan sebagai awal tata bahasa disebut sebagai simbol awal.
Aturan umum yang digunakan dalam menentukan suatu tata bahasa adalah dengan menuliskan produksi yang ada dengan dimulai dari produksi yang mengandung simbol awal.

Terminal dapat berupa angka-angka, tanda-tanda seperti <=, dan rangkaian karakter yang ditulis huruf tebal seperti while dan lain-lainnya juga nama lain yang tidak dicetak miring.
Non-teminal dapat berupa nama yang dicetak miring.
Untuk memudahkan penulisan, maka produksi yang mempunyai simbol non-teminal disebelah kiri yang sama bagian kanannya dapat dikelompokkan dengan menggunakan tanda "|" yang memisahkan pilihan bagian kanan yang ada. pengelompokkan seperti ini dapat dibaca sebagai "atau"

Tidak ada komentar:

Posting Komentar