-----------

------

-------

BAHASA DAN TATA BAHASA FORMAL

I
"

1-1 PENDAHULUAN. UNTAI
Untuk menjelaskan mengenui hahasa secara tcoruu, dan formal, buik iah klla lihat terlebih dahulu sebuah kalimat xchan-han dalam bahasa Indonesia, yakni: SI KUCING KECIL MENFNDANG BOLA BESAR

Gambar penguraian kalimat di atas mernbentuk struktur pohon, yang discbut pohon sintaks dari kahmat. Di sim kalimat dibagi-bagi berdasar jerus dan fungsi kata. Dari .pelajaran bahasa Indonesia kita mengetahui bahwa kalunat di alas merupakan kalimat yang telah benar susunannya, atau telah benar tata bahasanya.

MENENDANG

Gambar

1-1

2

Tetapi apakah susunan seperti di atas benar untuk kalimat dalam bahasa Inggris ? Kalau kalimat di atas kita tulis dalam bahasa Inggns, dapat drperolch sebuah sentence :

THE LITTLE

CAT KICKS

A BIG BALL

Pohon

sintaksnya

akan berbeda,

yakni .

Gambar 1-2

3

bila kita rnenulis SI KECIL KUCING MENENDANG BOLA BESAR. variabel disajikan sebagai simpul bukan daun. <PREDIKAT>. di antarnya NOAM CHOMSKY. <KATA BENDA>. JOHN BACKUS. BOLA dan BESAR disebut terminal atau token. atau variabel. sedangkan terminal disajikan sebagai simpul daun. Dalam pembicaraan ini. MENENDANG. <SUBJEK>. <KATA SAN DANG>. KECIL. pembahasan kita tekankan pada sintaks kalimat suatu bahasa. atau nonterminal Di sini kita menggunakan tanda < > untuk membedakannya dengan pengertian sehari-hari. bukan arti kalimat (semantik). Dengan demikian aturan penguraian kalimat pada contoh dapat dirangkum dalam sebuah himpunan produksi sebagai berikut': 1. PETER NAUR dan lain-lain lagi. Seluruh variabel harus dapat diuraikan/dibagi-bagi. misalnya. sedangkan terminal tidak dapat diuraikan lagi. <KALIMAT> -t<SUBJEK><PREDIKAT> 2.---------------------------------- - - Di sini tampak bahwa sintaks kalimat dalam bahasa Indonesia dibandingkan an bahasa Inggris agak berbeda. Hal ini terutama untuk kebutuhan bahasa pernrogramanan komputer. simpul bukan daun digambarkan dengan lingkaranl elips sedangkan daun dengan persegi panjang. Pada contoh kita di atas. <KATA KEADAAN> dan <KATA KERJA> disebut Kelas Sintaks. Sekarang pembahasan kita lakukan dengan lebih formal. Dalam pohon sintaks. <OBJEK>. Di sini <KALIMAT>. Kita lihat subpohon <SUBJEK> Gambar 1-3 <PREDIKAT> Kita boleh menuliskan penyajian subpohon tersebut sebagai sebuah produksi: atau <KALIMAT> -t <SUBJEK><PREOIKAT> <KALIMAT>· ::= <SUBJEK><PREDIKAT> yang dapat kita artikan : variabel <KALIMA T> dapat dipecah menjadi untai berurutan variabel <SUBJEK> dan <PREDlKAT>.. <SUBJEK> -t<KATA SANDANG><KATA BENDA><KATA KEADAAN> 4 . KUCING. Sementara itu sr. Tentunya salah. Studi mengenai teori bahasa ini dikembangkan oleh banyak tokoh terkemuka.

SIKUCING KECIL MENENDANG BOLA BESAR. atau singkatnya untai. Biasanya telah ditentukan apa yang disebut simbol Start (simbol awal). 8. Untai kedua dapat terjadi karena kita menggunakan produksi (6) : <KATA BENDA> ----7 BOLA untuk <KATA BENDA> yang di muka. 5. 6. berupa salah satu dari variabel yang ada. 7. Tentu saja kalimat (untai terminal) yang terbentuk tidak tunggal. ataupun SI KUCING BESAR MENENDANG BOhA KECIL. SI BOLA KECIL MENENDANG KUCING BESAR. Sebagai contoh kita dapat membentuk untai terminal. Pada contoh kita. Kita harus selalu memulai barisan produksi. Derivasi untai pert ama di atas adalah : <KALIMAT> ===> <SUBJEK><PREDIKAT> ===>. dengan melakukan sederetan produksi menggunakan produksi yang ada. <KATASANDANG><KATA BENDA> <KAT A KEADAAN><PREDIKA 1> ===> <KATA SANDANG><KATA BENDA><KATA KEADAAN> <KATAKERJA><OBJEK> ===> <KATASANDANG><KATABENDA><KAT A KEADAAN> <KAT AKERJ A> <KAT A BENDA> <KATA KEADAAN> ===> SIKUCING KECIL MENENDANG BOLA BESAR menggunakan produksi (Catatan: simbol ===> diderivasi atau diuraikan sebanyak k). 4. <KALIMA 1> merupakan simbol Start. berkebalikan dengan untai pertama. dan <KATA BENDA> ----7 KUCING untuk <KATA BENDA> kedua. dari simbol Start.3. <PREDIKAT> ----7<KATAKERJA><OBJEK> <OBJEK>----7<KAT A BENDA><KA TA KEADAAN> <KATA SANDANG> ----7 SI <KAT A BENDA> ----7 KUCING I BOLA <KATA KEADAAN> ----7 KECIL I BESAR <KATA KERJA> ----7 MEMANDANG (Catatan : simbol I berarti atau) Apabila kita memiliki suatu himpunan produksi kita dapat membentuk untai terminal. Proses ini disebut derivasi. dan lain-lain lagi. kiranya dengan mudah dapat pembaca pahami 5 . Untuk untai ketiga.

Operand ini tergolong IDENTIFIER. serta buat pula derivasi serta pohon sintaksnya. Sebagai latihan. silakan pembaca bentuk untai lain yang mungkin..---------- derivasinya. Sekarang kita bentuk operand berupa INTEGER <OPERAND> ===> ===> ===> ===> ===> ===> ===> ===> ===> <INTEGER> <SIGN><DIGIT><DIT> -<DIGIT><DIT> -2<DIT> -2<DIGIT><DIT> -29<DIT> -29<DIGIT><DIT> -294<DIT> -294/\ atau -294 6 . Kita definisikan himpunan 8 produksi dengan simbol Start adalah <OPERAND> sebagai berikut : (I) <OPERAND> (2) (3) (4) (5) (6) (7) (8) ~ <ID> 1<INTEGER> <ID> ~ <LETTER><LIST> <LEITER> ~ x 1y 1z <LIST> ~ <LETTER><LIST> 1<DIGIT><LIST> <DIGIT> ~ 0 1 I 12 1 3 14 15 1 6 17 1 8 19 <INTEGER> ~ <SIGN><DIGIT><DIT> <SIGN> ~ + i <DIT> ~ <DIGIT><DIT> 1/\ 1/\ (Catatan: /\ adalah terminal/token hampa) Sebagai contoh kita lakukan derivasi <OPERAND> ===> ===> ===> ===> ===> ===> <ID> <LETTER><LIST> y<LIST> y<DIGIT><LIST> y7<LIST> y7/\ atau y7 Di sini kita dapat membentuk sebuah operand yang absah yakni y7. Contoh kedua berikut ini adalah contoh bagaimana membangun operand yang absah dalam suatu bahasa pemrograman.

operator berada di antara dua operand. 3 serta z adalah operand yang dapat dibentuk seperti contoh kedua yang lalu) 7 . kiranya pembaca menjadi jelas bagaimana bentuk operand yang dihasilkan oleh himpunan 8 produksi tersebut. x-y+2. x123. tentukan derivasinya (atau pohon derivasinya): 4xy2. xlx2x3x. y. Kita tahu bahwa dalam notasi infix. xx~ +1230. kalau absah. Silakan anda tentukan apakah untai terminal berikut ini absah sebagai operand bahasa pemrograman kita tersebut. x2y.25 ) div y) + 3 * z merupakan ekspresi yang absah (di sini x. Berikut ini kita definisikan himpunan produksi.Dengan kedua contoh derivasi tadi. 25. dengan simbol Start adalah <EKSPRESI>. xxxyyy Contoh ketiga adalah contoh bagaimana suatu ekspresi aritmetika adalah absah dalam notasi infix. misalnya « x . sebagai berikut : (I) <EKSPRESI> ~ <EKSPRESI><ASOP><SUKU> I <SUKU> (2) <SUKU> ~ <SUKU><MOOP><FAKTOR> (3) <FAKTOR> ~ «EKSPRESI» (4) <ASOP> ~ + I (5) <MOOP> ~ I operand kFAKTOR> * I div Kita dapat memeriksa. -21x.

Berikut ini pohon derivasinya : <EKSPRESI> <EKSPRESI> <ASOP> <SUKU> + <SUKU> /1~ <MOOP> <SUKU> <FAKTOR> ( /~ <FAKTOR> I <FAKTOR> I I * z I <EKSPRESI> ) 3 I <SUKU> (MOOP) <FAKTOR> I div I (~) <EKSPRESI> <SUKU> I <ASOP> <SUKU> <FAKTOR> I <FAKTOR> I I x 25 I Gambar 1--4 8 .

b. Sekarang kita akan menekankan pembicaraan pada sifat elementer dari untai ter-rninal. baik itu berupa kalimat ataupun kata. Operasi ini dapat disajikan secara umum oleh fungsi dengan dua variabel : f(x. Variabel bias any a dinyatakan dengan huruf besar A. Dalam pembahasan secara umum notas < > pada variabel tidak kita pakai. sarna halnya seperti sifatsifat menarik pada operasi aritmetika terhadap bilangan cacah. yaitu label dari simpul daun berurutan dari kiri ke kanan (pada gambar diberi tanda lingkaran). Oleh karena itulah mungkin bisa terjadi kesalah pengertian antara kalimat dan kata. Namun bila token berupa huruf. S dan sebagainya. Kalimat adalah untai token dengan masing-masing token merupakan kata. silakan dibuat pohon derivasi untuk ekspresi «x + 2 * y) . c dan sebagainya atau dengan digit 0. untai token merupakan kata. B. Untuk pengenalan awal. A menggantikan <SUBJEK> dan seterusnya).y) = x + y.(z + 32) div y) * (3 + z). kita dapat menuliskan produksi : (1) S (2) A (3) B (4) G (5) C (6) D (7) E (8) F -7 -7 -7 -7 -7 -7 -7 -7 AB CDE FG DE a b Ic die f sebagai pengganti produksi untuk contoh pertama kita (S menggantikan <KALIMAT>. Sebagai latihan. 1.- ---- -- ----- -- -- Anda dapat membaca ekspresi «x . dengan x dan y bilangan cacah. 2 dan sebagainya. Sedangkan terminal atau token dinyatakan dengan huruf kecil a. C. 9 .25) div y) + 3 * z pada frontier dari pohon. Jadi sebagai contoh. pertama-tama kita perhatikan operasi penjumlahan pada bilangan cacah. Di sini banyak terdapat sifat menarik yang diakibatkan oleh operasi terhadap untai.

. Tertutup adalah sifat yang perlu bagi suatu sistem. dengan mendefinisikan untai tersebut secara formal.b. Menurut sifat tersebut penjumlahan adalah bersifat asosiatif. 'bbb'. dan operasi penyambungan.V = V2. sebuah alfabet V adalah himpunan hingga yang tidak kosong (harnpa) dari simbol. Simbol. yakni 'ab'. Sebagai contoh adalah himpunan dan operasi pada himpunan tersebut. Operasi concatenation juga dapat dilaksankan terhadap barisan karakter. Sifat tertutup ini . Himpunan V = {a.. kita biasanya menggunakan tanda petik tunggal. untai atas alfabet V = {a. terdapat sebuah bilangan i. seperti sifat distributif dan komutatif. dengan x. yakni operasi GABUNGAN. Secara sederhana. Yang pertama adalah bahwa jumlah dua bilangan cacah masih merupakan bilangan cacah. ~. sedemikian sehingga untuk setiap bilangan cacah x. Sifat ketiga. Kita acapkali menggunakan simbol dot (titik) untuk menyatakan operasi concatenation. terdapat ketika operasi aritmetika seperti penjumlahan dan perkalian dikerjakan terhadap himpunan bilangan cacah. atau concatenation atau produk. membentuk deratan karakter.z} adalah contoh alfabet yang telah biasa kita kenal. y dan z bilangan cacah. anggota dari alfabet dinamakan huruf atau karakter atau token. yang dimaksud dengan penutup atau closure dari V. Kita mulai pembicarakan tentang untai secara formal. ditulis V+. SELISIH. dan sebagainya.V . V. didefinisikan sebagai: 10 1 ~ C5 ~I OJ c m z lJ Gli ~I ~ -j o ~ . Pandang bahwa V. Concatenation dari dua karakter alfabet..I Sistem ini memperlihatkan sifat yang menarik.V.V. dan { a. (Sebagai catatan. Bilangan i ini adalah bilangan nol. Sifat ini dinamakan sifat tertutup (closure). . Sebagai contoh : 'ab' concate 'ab' menghasilkan 'abab'.ccba'.. 'a' dan 'b'.ca'.V = V2 adalah himpunan yang terdiri dari untai dengan panjang 2 atas V.c. merupakan sifat yang menjadi ciri sistem aljabar. Sebuah Untai (kata atau kalimat) atas alfabet V adalah huruf dari alfabet V atau barisan huruf yang diturunkan dari concatenation terhadap nol atau lebih huruf alfabet V. untuk menyatakan karakter atau barisan karakter alfabet. Selanjutnya. yang subalphabet dari alfabet Yunani. 'a' sebagai 'aba'. y. IRIS AN. Untuk mengerjakan hal itu. . dan sebagainya.c} adalah ' a'. Sebagai contoh. sedangkan V. ()} adalah 4 karakter alfabet. berlaku x + i = x. .. V = V" adalah himpunan yang terdiri dari untai dengan panjang n atas V.b. dan disebut elemen satuan atau identitas untuk penjurnlahan. Secara umum.. di kiri dan kanannya). Banyak sifat penting yang lain. kita harus memperkenalkan lebih dahulu apa yang disebut alfabet atau abjad. Sifat yang kedua adalah bahwa (x + y) + Z = x + (y + z) = x + y + z.V = V3 adalah himpunan yang terdiri dari untai dengan panjang 3 atas V.. Kita juga diperbolehkan untuk menulis 'ab' .

Sebagai contoh. Alfabet BASIC terdiri dari 26 huruf besar dan 26 huruf kecil.(' kurung buka ')' kurung tutup . Jadi. y. 11 .'xyyx' . (Notasi U adalah GABUNGAN) Untuk melengkapi. seperti .'yyyx' .y..x = x.y).'yxxy' . V· = {I\} U V U V2 U V3 U . Di sini V· adalah hirnpunan semua untai yang dapat dibentuk dari huruf dalam V. 10 digit dan hirnpunan karakter khusus. = {I\} U V+.'yxyy' . Untai hampa mempunyai sifat elernen identitas. untuk setiap untai x anggota Y·.' xxy". yakni : x.'yx'..'yyxy' . termasuk untai hampa.'xy'.'xyyy'.'xyxy' .'yyx' .' xyx'.'yyxx' .' xyy' . yakni (x. dengan operasi concatenation. Sebagai contoh yang lain adalah bahasa BASIC..'yxx' .z = x.y).. Beberapa subhimpunan dari V· adalah: y2 = {'xx'.'yxy' . Sifat asosiatif juga dipenuhi oleh sistem. membentuk penutup Kleene atau Kleene's star V· dari V.'xxyy' .z) = x. yang sering ditulis sebagai atau 1\.1\ = I\.'yy'} y3 = {' xxx'.(y.Y+ = Y U y2 U V' U . z anggota V'.'yyy' } y4 = {'xxxx' .'yyyy'} dan sebagainya. Sistem ini membentuk suatu sistem aljabar berupa semigrup.z. 'yxxx' . Untai hampa ini disebut elemen identitas dalam sistem yang dibentuk oleh himpunan Y'. didefinisikan untai hampa atau nol atau untai epsilon.'xyxx' . Untai hampa ini sering digabungkan dengan V+.'yxyx' . yang disebut semigrup bebas. untuk setiap untai x. perhatikan himpunan untai V· yang dapat dibentuk dari huruf dalam alfabet V = {x.'xxyx' . :' titik dua '+' plus '=' sarna dengan dan sebagainya.'xxxy' .

apostrof ' . penyebutan seperti 12 . Secara yang sarna. Bahasa yang terdiri dari semua anggota V· secara khusus tidak menarik untuk dibicarakan. maka x disebut proper prefix atau proper head.Hanya karakter ini yang digunakan untuk penulisan program bahasa BASIC. Untuk bahasa tak hingga. akhirnya membentuk definisi yang tepat dari bahasa itu. dan z merupakan untai atas sebuah alfabet dengan z = xy. Bahasa hingga dapat disajikan dengan menyebut anggotanya satu per satu. 2. Untuk beberapa bahasa pemrograman yang mula-mula sekali diciptakan. sebuah program dapat dipandang sebagai concatenation dari karakter atas sebuah alfabet. Himpunan dari semua program yang secara sintaks benar. y. akan digunakan dalam pembahasan tentang Grammar dan bahasa berikut ini. 3. Sebuah bahasa L dapat dipandang sebagai sebuah subhimpunan dari penutup Kleene V· (termasuk untai hampa) dari sebuah alfabet V. Oleh karenanya. Arti dari semua program yang secara sintaks benar. Beberapa konsep yang telah diperkenalkan di sini tadi. karena terlalu luas. 1-2 TATA BAHASA (GRAMMAR) Bahasa pemrograman harus didefinisikan secara tepat. Dalam bagian ini kita akan mengkonsentrasikan diri pada dua hal yang berhubungan dengan spesifikasi bahasa pemrograman. Definisi kita mengenai bahasa L adalah himpunan dari untai atau kalimat atas sebuah alfabet hingga VT' oleh karenanya L adalah Subhimpunan dari V T·' Bagaimana cara menyajikan sebuah bahasa? Bahasa merupakan himpunan hingga ataupun tidak hingga dari kalimat. yakni alfabet. Jika y bukan untai hampa. untuk menghasilkan suatu untai dengan panjang sembarang. maka y disebut proper suffix atau proper tail dari untai z. Himpunan sirnbol. Catatan: Pada pembahasan berikutnya. Untai x disebut prefix atau head dari z. adanya kompilator (compiler) yang khusus. yang dapat digunakan untuk menyusun program yang benar. untuk menyatakan untai terminal sering kita hapus. Spesifikasi yang layak dari bahasa pemrograman meliputi pendefinisian berikut : 1. dan y disebut suffix atau tail dari z dan jika x tidak sarna dengan epsilon. Misalkan x.

dan sebagainya. statement. pembahasan pendahuluan pada bagian 1-1. Masing-masing simpul merepresentasikan phrase(bagian) dari sintaks. yang bersangkutan dengan studinya dalam bahasa natural (natural language). Salah satu cara penyajian hingga tersebut di atas adalah tata bahasa atau Grammar. Seperti disebutkan terdahulu. Untuk lebih jelasnya. dan terhadap relasi arrtara satu bagian kalimat dengan bagian yang lain. predicate phrase.itu tidak mungkin. atau sintaks kalimat. Meskipun demikian. Sebuah kaliamat dalam bahasa Inggris merupakan sebuah struktur yang dinyatakan dalam subjectphrase. Struktur gramatik dari sebuah kalimat biasanya dipelajari dengan cara melakukan anal isis terhadap berbagai bag ian dari kalimat. Metode kedua untuk spesifikasi bahasa adalah menggunakan konsep mesin abstrak." Struktur atau urainnya (parse). Untuk sebuah program komputer. terlihat pada Gambar 1-5. karen a sintaks dari bahasa pemrograman ALGOL 60 telah menggunakan konsep Grammar formal ini. yang kiranya berguna bagi kalimat dalam bahasa. Kata seperti "the" dan "cat" adalah simbol dasar atau simbol primitive dari bahasa ( atau token). noun. Diagram dari uraian kalimat ini menunjukkan sintaks dari kalimat. dan sebagainya. Studi tentang Grammar merupakan subbidang yang penting dalam Ilmu komputer. Grammar menentukan kalimat pada bahasa. Pada tahun 1960 konsep Grammar menjadi penting sekali dalam bidang pemrograman. Di sini berarti juga. Akseptor ini akan menentukan apakah suatu untai (kalimat atau kata) termasuk bahasa. yang disebut sebagai struktur gramatik. ekspresi. Pandang kalimat "the cat ate a mouse. Grammar merupakan pembentuk atau pengatur struktur dari kalimat pada suatu bahasa. Bidang ini pada tahun 1950-an sangat ditekuni oleh Noam Chomsky yang memberikan model matematika untuk Grammar. struktur yang diberikan adalah berupa prosedur. yang disebut akseptor (acceptor) atau penerima. dan sebagai suatu alat untuk memberikan beberapa struktur. berupa pohon sintaks atau pohon derivasi. l 13 . yang menspesifikasikan sintaks dari bahasa. kita ulangi sedikit. Studi ini disebut Teori Bahasa Formal. Dalam bag ian ini. digunakan untuk menentukan apakah suatu kalimat tertentu. Struktur gramatik dari bahasa ini. Jadi Grammar adalah suatu sistem matematik untuk mendefinisikan bahasa dan alat untuk membentuk suatu struktur pada kalimat bahasa. Grammar terdiri dari himpunan hingga yang tak hampa dari aturan atau produksi. kita selalu dapat menyajakan suatu bahasa secara hingga. kita menekankan pembahasan Grammar sebagai suatu sistem mate-rnatika untuk mendefinisikan bahasa. termasuk atau tidak sebagai kalimat yang benar dalam bahasa.

" "subject phrase." Sedangkan "subject phrase" tersusun dari "verb" diikuti oleh "object. Struktur bahasa dinyatakan dengan menggunakan simbol "sentence." "verb. Sebagai contoh." dan "verb phrase" yang disebut kelas sintaks atau kategori sintaks. ataupun aturan pergantian.V p dapat didefinisikan sebagai "sentence" tersusun dari "subject phrase" diikuti 14 ." dan sebagainya. produksi S ~ S. Seperti telah disebutkan terdahulu. sintaks dari suatu subhimpunan dari bahasa Inggris. dan masingmasing struktur terdiri dari himpunan terurut dari primitif ataupun kelas sintaks. Setiap kelas sintaks terdiri dari sejumlah struktur alternatif.Sebagai contoh. dapat dinyatakan dengan menggunakan simbol berikut : S V 0 A Sp N Vp Np = = = = = = = sentence verb object article subject phrase noun verb phrase noun phrase dengan aturan sebagai berikut: S Sp A A N N N N N Vp V V 0 Np ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ SpVp AN "a' "the' "monkey' "banana' "cat' "mouse' "tree' VO "ate' "climbs' Np AN Aturan pembuatan kalimat di sini. struktur alternatif ini disebut produksi atau aturan sitnaks. adalah dengan menyusun "subject phrase" diikuti oleh "verb phrase.

Sedangkan. metalanguage bahasa Inggris adalah bahasa Inggris. Kelas sintaks bersama dengan simbol panah dapat kita gunakan untuk menyatakan suatu bahasa. Diagram dari penguraian kalimat (parse) dari sebuah kalimat menyatakan sintaksnya. Sementara itu. Seorang pemrogram komputer pada hakikatnya bertugas menghasilkan program yang sesuai dengan aturan produksi dari bahasa. Sentence Subject phrase Verb phrase article /~ . noun verb object noun phrase the cat ate a / article /~ noun mouse Gambar 1. adalah bahasa Inggris. Metalanguage yang digunakan untuk mengajarkan bahasa Jerman di hampir semua univeristas. yakni membahas tentang Grammar." Simbol ~ memisahkan kelas sintaks.5. tetapi tidak menyatakan arti atau semantiknya. Di sini kita terutama menekankan pembahasan tentang sintaks dari bahasa. Pohon sintaks suatu kalimat Dengan menggunakan aturan gramatikal untuk contoh kita yang lalu. Sebuah sistem atau bahasa yang menerangkan bahasa yag lain dikenal sebagai metalanguage. dan membahas alat untuk mendefinisikan bahasa dengan sintaks yang telah terdefinisi. kompilator 15 _ _j .oleh "verb phrase. kita dapat memproduksikan atau menurunkan atau membentuk sebuah kalimat dalam bahasa.

the cat ate a banana. Kita ambil untai S. Jika sintaks benar. kita dapatkan untai the NV p' Proses enumerasi ini diteruskan sampai diperoleh kalimat yang diinginkan. adalah misalnya kalimat : " " " " -. yakni bahwa untai di sebelah kanan didapat dari pemakaian salah satu produksi terhadap subuntai nonterminal di ruas kiri. . maka kompilator menghasilkan kode obyek. Contoh kalimat lain yang dapat dibentuk menggunakan Grammar di atas.Vp' Kita ganti S dengan komposisi yang memungkinkan." Di sini S merupakan simbol Start. Kita mulai memproduksi S dari mas kiri tanda panah.V p dan kita cari produksi yang mas kirinya adalah Sp' Kemudian ganti S. Aplikasi hal ini hanya mungkin menghasilkan untai ANV p' Berikutnya kita cari produksi dengan mas kiri A. . ====> the cat ate AN ====> the cat ate a N ====> the cat ate a mouse Simbol ====> mengartikan penurunan atau derivasi." a monkey climbs the tree. Secara lengkap derivasi atau urutan pembentukan kalimat "the cat ate a mouse. Misalnya." ataupun the banana ate a cat." the monkey climbs a tree." 16 . Temyata dua buah produksi ditemukan. hendak diproduksi kalimat "the cat ate a mouse. Dapat kita tulis : S ~ S. Dengan memilih produksi A ~ "the" dan mensubstitusikannya ke untai ANV p (di ruas kanan)." adalah sebagai berikut: S ====> SpVr====> ANVp ====> the NV p ====> the cat Vp ====> the cat VO ====> the cat ate 0 ====> the cat ate N.dari bahasa pemrograman dihadapkan dengan masalah untuk menentukan apakah suatu kalimat yang diberikan (program sumber) adalah secara sintaks benar berbasis pada aturan grammatikal yang diberikan. dengan ruas kanan produksi tersebut.

kita misalkan VT adalah himpunan hingga yang tak hampa dari simbol. Himpunan ini terjadi sebagai akibat dari penggunaan secara rekursif terhadap produksi I ~ 10. Situasi ini kerapkali diperbolehkan dalam spesifikasi bahasa. Produksi yang berikut adalah rekursif dan menghasilkan himpunan tak hingga nama. Elemen V N digunakan untuk mendefinsikan sintaks atau struktur dari bahasa. 0 adalahdigit. namun pembaginya adalah nol (division by zero). himpunan V N dan V T diasumsikan adalah saling lepas. di sini L adalah huruf.O. diasumsikan mengandung sebuah himpunan kelas sitnaks atau variabel. (alfabet terminal): Anggota V T disebut simbol terminal. yang disebut simbol nonterminal. menggunakan Grammar. baik pada ruas kiri maupun ruas kanan dari produksi tertentu. Metalanguage yang digunakan untuk menurunkan untai dalam bahasa. Lebih lanjut. Banyak program FORTRAN dan PASCAL yang benar tetapi tidak memberikan arti. Misalnya statement untuk melakukan pembagian. Untuk keperluan ini. Marilah sekarang kita formalkan gagasan mengenai Grammar dan bagaimana cara menggunakannya.Untuk kalimat terakhir ini. Masing-masing nama terdiri dari sebuah huruf. namun sama sekali tidak memberikan arti (semantiknya). Di sini. karena kelas sintaks I adalah muncul. dan I adalah identifier. meskipun secara gramatikal benar. Jadi. dan I > IL. Selain itu contoh lain kalimat bahasa Indonesia. Mata saya mendengar suara merdu" adalah kalimat yang mengandung kesalahan semantik. dan I. Himpunan simbol nonterminal dinyatakan sebagai V N. I I I I I ~ ~ ~ ~ ~ L ID IL a b z 0 1 9 I~ 0~ 0~ 0~ Mudah dilihat bahwa I mendefinisikan sebuah himpunan untai atau nama. tak hingga banyaknya. memang rekursif adalah dasar dari pendefinisian bahasa tidak hingga. Pandang simbol L. Gabungan V N U V T' yakni himpunan yang terdiri dari simbol nonterminal dan 17 . atau sebuah huruf diikuti oleh satu atau lebih huruf atau digit. kalimat adalah benar secara sintaks bahasa Indonesia.

.9} I.y.y..n. Panjang dari untai alpha dinyatakan dengan notasi lal. . u. f.d.i..7. t. VT.k. b. D --7 0.Y. . l. B.B. I ~ ID. I ~ IL. D --7 9} z. 0. Sebagai contoh dalam mendefinisikan identifier.. S suatu elernen ertentu dari VN' yang disebut simbol Start. L ---7 b. s. v.Q}.4. dengan VN = VT = S {I.o . yakni a.. L --7 Z.2.q.p. kita menggunakan huruf kapital atau besar A.1.terminal disebut vocabulary. ditulis sebagai simbol = (V N . sebuah elemen (a.8.h.g.VT.z..S. Sementara itu untai dari vocabulary dinyatakan dengan huruf Yunani.C. S.x. kita dapat menulis Grammar berikut : G]={VN. dan disebut produksi atau rewriting rule. Q merupakan subhimpunan hingga yang tidak kosong dari relasi (VT U VNr ke (VT U VNr. .6. Q = = 18 .3. Biasanya.. Q).e..L.. L ---7 a. Simbol terminal dinyatakan dengan huruf kecil x.D } {a. Definisi 1-1 Sebuah Grammar didefinisikan sebagai 4-tupel G di sini VT dan VN adalah himpunan simbol terminal dan himpunan nonterminal (kelas sintaks). dan {I ~ L. ~) dari Q.5. D --7 1. dan menggunakan SI' S2'''' untuk menyatakan anggota vocabulary... w. dan sebagainya.Z untuk menyatakan simbol nonterminal. atau secara umum.c. y.r. X. m. .j .

sedemikian sehingga v adalah produksi dari Grammar atau derivasi langsung dari v. Konsep ini dapat diperluas pada produksi untai w.Definisi 1-2 Untai w disebut penurunan ~ w. atau w adalah diturunkan dari v).Q) adalah Grammar. ditulis sebagai v Q1 dan Q2 (termasuk untai hampa) anggota (V N = Q1 a Q2' dan w = Q1 13 Q2' dengan a ~ 13 G. jika ada untai vocabulary Qo' QI"'" Qn (n > 0). dapat dilihat pada tabel 1-1 beberapa ilustrasi dari derivasi langsung. jika ada untai vocabulary U VT)'. tidak secara langsung. Untai v menghasilkan w (w tereduksi dari v. Tabel 1-1 PRODuKsI I LL LDL LDDL L Lx LlL L2DL I~ L L~x D~l D~2 Q1 f\ Q1f f\ f\ L L L L DL Definisi 1-3 G = (V N'VT. tetapi dalam sejumlah langkah produksi terhadap untai v. anggota (V N U VTr. Untuk Grammar G1 pada contoh. maka kita boleh mengatakan bahwa v memproduksi langsung w atau w lang sung diperoleh dari v. Jika v ===> W. 19 . sedemikian sehingga ===> Q1 ===> Q2 ===> Qn = w Relasi ==*==> adalah penutup transitif (transitive closure) dari relasi ===>.S. ditulis sebagai v ==*==> w.

Jika telah didapatkan untai yang terdiri hanya dari simbol terminal. dan selesai. Atau dengan perkataan lain : L(G) = {w I S =='==> w. w anggota VT·}. yang adalah sedikit berbeda dari metalanguage yang telah kita gunakan barusan.Kembali ke Grammar G" kita lihat untai al3 adalah derivasi dari I dengan deretan derivasi sebagai berikut : I ===> ID ===> I1)D ===> LDD ===> aDD ===> aID ===> al3 Catatan: Sebagaimana kita ketahui. Bahasa L yang dibentuk oleh Grammar G adalah himpunan semua bentuk sentensial yang semua simbolnya adalah simbol terminal. kita tidak dapat lagi menghasilkan untai yang lain. Di sini. maka derivasi itu dikatakan telah lengkap. Definisi 1-4 Bentuk sentensial adalah untai yang dihasilkan melalui derivasi yang berawal dari simbol nonterminal S. Jika 20 . Dari situ. simbol nonterminal di dalam untai dapat kita produksikan menjadi untai baru (diasumsikan bahwa tidak terdapat aturan A ~ A). Metavaribel atau kelas sintaks ditulis dengan diapit simbol < dan >. pada hakikatnya bahasa adalah himpunan bagian dari himpunan semua untai terminal (kalimat) dari V T' 1-3 BENTUK BACKUS-NAUR Pada bagian ini kita bahas bentuk Backus-Naur (BNF) dari metalanguage. Karenanya.

Chomsky mengelompokkan Grammar atas 4 kelompok berdasarkan pembatasan pada produksi. Sebagai contoh. adalah Grammar dengan pembatasan di dalam produksi. Kelompok kedua. yang disebut Grammar Context-sensitive. hanya terdiri dari produksi berbentuk u ~ ~ . yang didefinisikan sebagai berikut : Definisi 1-5 Grammar Context-sensitive.kita menggunakan notasi ini. Simbol ::= dan I berturut-turut dapat diartikan sebagai "didefinisikan sebagai" dan "atau." 1-4 KLASIFIKASI GRAMMAR Di dalam bagian ini. dan untai ~. Bahasa pemrograman populer yang menggunakan deskripsi BNF adalah ALGOL. dan I dipakai untuk memisahkan 2 produksi di ruas kanan sebagai hasil produksi ruas kiri yang sarna. pendefinisian sebuah identifier di dalam BNF adalah sebagai berikut : <identifier> <letter> <digit> ::= <letter>lidentifier><letter>kidentifier><digit> ::= alblcl Iylz ::= 011121 1819 Catatan : Simbol ::= dapat digunakan sebagai pengganti simbol ~ di dalam Grammar. maka simbol <sentence> adalah anggota dari V N sedangkan simbol "sentence" adalah element dari VT Dengan cara ini kita tidak ragu-ragu melihat apakah suatu simbol merupakan anggota V N' ataukah anggota VT• BNF secara intensif telah banyak digunakan dalam pendefinisian secara formal berbagai bahasa pemrograman. Grammar ini disebut juga Grammar jenis atau tipe ke-nol. atau Grammar tipe pertama. dengan lui <= 1~1. dibahas klasifikasi Grammar secara Chomsky.Di sini lui dan I~I berturut-turut menunjukkan panjang untai alpha. Kelompok pertama adalah Grammar yang mempunyai aturan produksi yang tidak terbatasi. 21 .

Di sini. BC ~ be 5. Language atau bahasa L(G2)= {anbncnln >= I} adalah contoh bahasa Contextsensitive. disajikan sebagai a = Q.c} S.AQ2 dan ~ = Q.rQ2 (adalah mungkinbahwa baik Q. dan Q2. Kedua bentuk aturan di atas adalah ekivalen. adalah pendefinisian dengan cara berikut ini: a dan ~ dalam produksi a ~ ~. Altematif yang ekivalen dengan pendefinisian Grammar Context-sensitive di atas. bentuk dari pembatasan di dalam sebuah produksi adalah mencegah ~ menjadi untai hampa.B. dalam arti bahasa yang dapat terdefinisikan oleh Grammar yang mempunyai aturan dalam bentuk pertama adalah selalu dapat terdefmisi pula oleh beberapa (mungkin berbeda) Grammar yang mempunyai aturan dalam bentuk kedua. jika semua produksinya Ini berarti bahwa nonterminal A digantikan dengan gamma dalam konteks antara Q. S ~ aSBC 2. bB ~ bb 4.C}.b. maupun Q2 ataupun keduanya adalah hampa) di sini 'Y haruslah tidak hampa. CB ~ BC 6.Q) dengan himpunan produksi Q terdiri dari produksi 1. S ~ abC 3. cC ~ cc Berikut ini adalah derivasi untuk untai aabbcc S ====> aSBC ====> aabCBC ====> aabBCC melalui produksi melalui produksi 2 melalui produksi 5 22 . Grammar konteks-sensitif membentuk Bahasa Context-sensitive. Jadi suatu Grammar berbentuk : adalah Context-sensitive. Ia dibentuk oleh Grammar G2 sebagai berikut : G2 = ({ S. {a.

Meskipun demikian. {a. sehingga diperoleh Grammar Context-free. dengan lal <== IPI. terdiri dari langkah sebagai berikut : S ===> ===> ===> ===> aCa aaCaa aaaCaaa aaabaaa 23 . Grammar G I dari bagian 1-2 adalah contoh dari sebuah Grammar Context-free. dan a anggota dari VN (simbol nonterminal). Grammar ini dapat merumuskan sebagian besar sintaks dari bahasa pemrograman. dalam sederetan stetement dari sebuah program sumber. dengan Q adalah produksi : S ~ aCa C ~ aCa C~b Derifasi untuk a3ba3 atau aaabaaa. Definisi 1-6 Grammar Context-free.b }.S.I I ====> aabbCC ====> aabbcC ====> aabbcc melalui produksi 3 melalui produksi 4 melalui produksi 6 Sekarang. yakni satu simbol nonterminal. hanya terdiri dari produksi berbentuk: a ~ p. Ini berarti Grammar Context-free seluruh produksinya bersifat bahwa ruas kiri hanya terdiri dari satu simbol. ketika ia digunakan dalam suatu ekspresi.C}. kita tambahkan pembatasan yang lebih lanjut terhadap produksi dari Grammar Context-sensitive. Grammar Context-free tidak mempunyai kemampuan untuk menspesifikasi (menentukan) bahwa sebuah variabel tertentu telah dideklarasikan.Q). Grammar Context-free merupakan pembentuk Bahasa Context-free. Contoh lain dari Grammar Context-free adalah Grammar untuk membentuk bahasa L(G3) = {a"ba"1n >= I} di sini G3 = ({ S. atau Grammar tipe ke-2.

L(T2) merupakan himpunan bagian dari L(TI). dengan G4 = ({S. hanya terdiri dari produksi berbentuk : a ~ ~.C}. ke 4 kelas Grammar tersebut membentuk sebuah hirarki.sensitive. Jika L(Ti) koleksi dari bahasa yang dibentuk oleh Grammar Ti. mempunyai derivasi sebagai berikut : S ===> ===> ===> ===> ===> ===> as aaS aaaB aaabC aaabaC aaabaa Keempat tipe Grammar.{a. tipe Context.A.b}'S. maka L(T3) merupakan himpunan bagian dari L(T2). dengan a anggota V T dan B anggota V N" Bahasa yang dibentuk oleh Grammar seperti ini disebut Bahasa Regular. yang membentuk bah asa : L(G4) = {a'ba=ln. yakni tipe dengan produksi tidak terbatas. 24 . Contoh dari Grammar Regular adalah berikut ini.Pembatasan kita yang terakhir nanti akan membawa kita kepada definisi Grammar Regular.B.a anggota dari VN' dan ~ mempunyai bentuk aB atau a. TI . Context-free dan Regular. dan L(Tl) merupakan himpunan bagian d~ri L(TO).Q) dan produksi adalah : S S B C C ~ as ~ aB -s sc ~ aC ~a Kalimat a3ba2 atau aaabaa. Dengan kata lain. dengan lal <= I~II. berturut-turu dapat kita sebut sebagai Grammar TO.m >= I}.T2 dan T3. Difinisi 1-7 Grammar Regular atau Grammar tire ke-3.

masalah keputusan yang bersangkutan dengan himpunan L ini adalah untuk menentukan apakah x termasuk atau tidak dalam L. Algoritma semacam itu dapat ditemukan pada buku karangan Hopcroft dan Ullman (1969). Bicarakan bahasa L={anbmanbmln. Kita membahas model akseptor pada Bab yang akan datang. ini bukanlah definisi secara matematis bagi bahasa recursive maupun bahasa recursively enumerable. marilah kita kembali kepada masalah apakah L(T.) subset L(To)' Ini dapat dilihat (Dapat ditunjukkan bahwa "Sebuah himpunan adalah recursively enumerable jika ia merupakan sebuah bahasa '}'O.) mengandung pemilihan suatu bahasa Context-sensitive yang khusus yang tidak Context-free. Kita ingat lagi. Seakrang. Definisi kita di atas dapat secara formal digantikan oleh definisi Turing Mesin. jika terdapat sebuah algoritma yang dapat mengatakan ya dalarn waktu yang hingga.) termuat dalam L(TII) . Untuk menunjukkan L(T) subset L(T. Masalah keputusan drsebut semidecidable. Jelas. bila x bukan anggota L. karena Chomsky menemukan suatu Grammar Context-sensitive untuk 25 . bila x anggota L. yang mula-mula diformulasikan oleh Chomsky (1959) adalah Contextsensitive. Bahasa pemrograman yang masalah keputusannya adalah semidecidable disebut recursively enumerable. Sebuah bahasa pemrograman yang masalah keputusannya adalah fully decidable disebut rekursif. Dengan kata lain sebuah Grammar yang tidak dibatasi mempunyai kemampuan pembentukan seperti Mesin Turing. Untuk menunjukkan L(T.m >=1}. terdapat kelas mesin abstrak atau akseptor (acceptor) yang akan menerima kelas bahasa yang dibentuk Grammar pembentuknya masing-rnasing. Masalah keputusan yang bersangkutan dengan bahasa disebut fully decidable jika terdapat sebuah algoritma yang akan menjawab pertanyaan ini dalam waktu yang hingga. atau L(T. apakah untai x yang diberikan.) subset L(To) mengandung perumusan algoritma yang decidable penuh untuk suatu bahasa T" yakni perumusan algoritma yang akan menentukan.Bersangkutan dengan rnasing-masing kelas Grzrnmar. Diberikan sebuah bahasa L dan beberapa elemen (untai) x. Untuk menunjukkan bahwa UTI) adalah himpunan bagian dari L(TO) perIu dilibatkan pengertian dari sebuah problema keputusan yang bersangkutan dengan bahasa. untuk suatu Context-sensitive Grammar G. bahwa masalah desision yang berhubungan dengan suatu himpunan recursively enmerable adalah semidecidable. Bahasa ini. anggota L(G) atau bukan. tetapi mungkin tidak mampu mengatakan tidak.

terdiri dari aturan sebagai berikut: S ~ aAa A ~ aAa A~b Sebuah Grammar Regular bagi bahasa L2 mudah sekali diperolch. panjang dari masing-masing bentuk sentential yang berurutan (kecuali yang terakhir) bertambah dengan 1.bahasa ini. Ia juga rnembuktikan bahwa tidak ada satupun Grammar Contextfree dapat membentuk bahasa di atas. kita sebelum ini. Perhatikan bahasa L. adalah Context-dree Regular. Kedua. Pertama.. Asumsikan bahwa kita mempunyai suatu derivasi untuk untai a'ba".. bahwa bahasa L. = {a~ban I n >= I}. setiap sentential form di dalam derivasi terdiri paling banyak satu nonterminal yang muncul di akhir kanan dari bentuk sentential. Untai terminal. GrammarRegular dan Context-free didiskusikan secara panjang lehar pada hagian akhir dari bab ini. Bukti Kita asumsikan bahwa terdapat suatu Grammar Regular yang membentuk bahasa L.m >= I}. namun bukan bahasa I 2 Teorema 1-2 Terdapat Bahasa Context-free yang bukan merupakan bahasa Regular. Hal ini terdapat pada teorema berikut. = {anba m I n.>.semacam itu haruslah secara langsung diproduksi oleh sentensial form anban-1Y. salah satunya adalah dengan himpunan produksi: S ~ as S ~ aB B ~ bC C ~ aC C~ a Dapat terlihat. 0: . Suatu derivasi dalam sebuah Grammar Regular mempunyai sejumlah karakteristik. kita tunjukkan hahwa L() subset L(T2). Sebuah Grammar Context-free untuk L. Pada akhir bagian ini. dan L. c z -c c rr Q ):> z Z ~ ::0 ):> C -I 26 o os: » ~ .

maka haruslah terminal beberapa simbol nonterminal yang terulang dalam derivasi. Grammar tidak dapat dipakai untuk membentuk tepat an pada bagian kanan. Akibatnya. Karena hanya satu dapat ditambahkan ke setiap sentential form pada setiap langkah (kecuali pada langkah pertama). karena tepat satu nonterminal muncul pada rnasing-rnasign langkah (kecuali untk langkah terakhir). karena ia dapat dipergunakan untuk menspesifikasikan sebagian besar konstruksi bahasa pernrograman pacta bahasa pemrograman masa ini. karena n > q. Juga. Dapat dicatat bahwa sebagian derivasi dapat dihapus atau diulang bila perlu. LJ tidak Regular dan L(T) subset L(T). Bahasa yagn dihasilkan adalah L. 27 . Hasilnya adalah derivasi seperti di bawah ini a'b X a'b X a'ba" dengan nonterminal X telah terulang pada beberapa sentential form.Misalkan q menyatakan banyaknya nonterminal dari Grammar dan ambil n >q. sesudah pembentukan anb pada bagian kiri. Kelas Grammar Context-free nanti akan dibicarakan sangat mendalam. Fenomena ini harus terjadi. derivasi mengandung 2n + 1 langkah. Kita telah secara informal mendiskusikan Klasifikasi Chomsky. Karenanya.

himpunan integer nonnegatif yang ganjil himpunan integer nonnegatif yang genap tanpa diperbolehkannya muncul di depan nol 1-4.+. S = E Dengan produksi : F --7 i F --7 (E) T --7 TIP E--7T 28 . Simboli diartikan sebagai suatu nama variabel atau identifier. 2. pengurangan (-). dan pembagian (I). yakni Grammar Bahasa Inggris yang umum.1.*.-. Tulis Grammar dari bahasa sebagai berikut : a. dengan himpunan simbol terminal {a. 3. 1-3. VT = {i. Diberikan sebuah Grammar yang menyajikan operasi aritmetika sederhana meliputi penambahan (+). untuk melakukan derivasi dari kalimat berikut : 1. the monkey ate a banana the cat climbs a tree a cat ate the monkey Diketahui Grammar. T.)}. b.(. VN = {E. Fl.b} dan produksi sebagai berikut (huruf kecil menyatakan simbol terminal) S--7a S --7 Sa S--7b S --7 bS Jelaskan bagaimana bentuk umum dari untai yang dibentuk oleh Grammar tersebut. perkalian (*).SOAL LAT/HAN 1-1. 1-2. Pakailah contoh Grammar dalam pembicaraan kita yang lalu.

i*i+i 1-5. -. 1-10. Dua Definisi yang ekivalen dari Grammar Context-sensitive telah kita berikan. tetapi CB tidak memenuhi yang lainnya. +. i*(i+i). E+T E ____. *. I. Himpunan dari simbol terminal adalah {A. 1-9. serta c yang sama. bahwa FORTRAN Himpunan komcntar dalam PLII. i-i/i.B. maka abab adalah anggota bahasa L. Tuliskan Grammar untuk bahasa berikut. Ingat mcngandung tidak Icbih dari 6 karakter. #.x2 ••• x dan x. I. Bentuk sebuah Grammar Context-sensitive untuk Bahasa ( w I wanggota {a. 9. T E- Bcrikan dcrivasi untuk ckspresi sebagai berikut : i--i.. .b. Contohnya. b. dengan x = x. anggota {a. Z.c }*-(/\)} dengan w mengadung banyak a. l.b} untuk semua I <= i <= n. untuk Bahasa 1-8. Produksi seperti BC ____. Berikan sebuah Grammar yang membentuk bahasa L = {w I w berisi untai yang mempunyai sejumlah sama a dan b}.. .C. Tunjukkan bahwa kedua definisi adalah ekivalen. a) b) Himpunan nama-nama FORTRAN... serta karakter khusus yang menyatakan blank}..E ____. Tcntukan sebuah Grammar Context-sensitiveyang akan menghasilkan bah as a L = {xx.. Tentukan sebuah Grammar Context-sensitive (am I m>= I). 29 . jika x = ab. 1-6. memenuhi definisi yang satu. 0. n ' 1-7.

Tentukan Grammar Regular yang membentuk semua untai yang tcrdiri dari 0 dan 1. 1-14. membentuk bah as a [a'' 30 . yang bersifat bahwa banyaknya () serta banyaknya I adalah ganjil 1-13. 1-12.1-11. Tentukan sebuah Grammar dari Bahasa L =(0'1) I i <> j. dan i. Tentukan sebuah Grammar Context-sensitiveyang I p adalah bilangan prima}. Bentuk sebuah Grammar Context-free yang menghasilkan L = {wlw berisi untai yang banyaknya () adalah dua kali banyaknya I}.j > O}.

Sign up to vote on this title
UsefulNot useful