-----------

------

-------

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

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

5. dengan melakukan sederetan produksi menggunakan produksi yang ada. ataupun SI KUCING BESAR MENENDANG BOhA KECIL. Untuk untai ketiga. kiranya dengan mudah dapat pembaca pahami 5 . dan lain-lain lagi. dan <KATA BENDA> ----7 KUCING untuk <KATA BENDA> kedua. 7. <KALIMA 1> merupakan simbol Start. atau singkatnya untai. <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. Sebagai contoh kita dapat membentuk untai terminal. Kita harus selalu memulai barisan produksi. Untai kedua dapat terjadi karena kita menggunakan produksi (6) : <KATA BENDA> ----7 BOLA untuk <KATA BENDA> yang di muka. dari simbol Start. berkebalikan dengan untai pertama. Pada contoh kita. SIKUCING KECIL MENENDANG BOLA BESAR. Tentu saja kalimat (untai terminal) yang terbentuk tidak tunggal. Biasanya telah ditentukan apa yang disebut simbol Start (simbol awal).3. SI BOLA KECIL MENENDANG KUCING BESAR. <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. berupa salah satu dari variabel yang ada. Proses ini disebut derivasi. 8. Derivasi untai pert ama di atas adalah : <KALIMAT> ===> <SUBJEK><PREDIKAT> ===>. 6.

serta buat pula derivasi serta pohon sintaksnya. Sebagai latihan. silakan pembaca bentuk untai lain yang mungkin. Operand ini tergolong IDENTIFIER.. Contoh kedua berikut ini adalah contoh bagaimana membangun operand yang absah dalam suatu bahasa pemrograman.---------- 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.

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

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 .

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

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

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

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

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

ataupun aturan pergantian. adalah dengan menyusun "subject phrase" diikuti oleh "verb phrase.Sebagai contoh. struktur alternatif ini disebut produksi atau aturan sitnaks. Sebagai contoh. dan masingmasing struktur terdiri dari himpunan terurut dari primitif ataupun kelas sintaks." dan sebagainya. Setiap kelas sintaks terdiri dari sejumlah struktur alternatif. 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." "subject phrase. Struktur bahasa dinyatakan dengan menggunakan simbol "sentence.V p dapat didefinisikan sebagai "sentence" tersusun dari "subject phrase" diikuti 14 ." Sedangkan "subject phrase" tersusun dari "verb" diikuti oleh "object. Seperti telah disebutkan terdahulu. sintaks dari suatu subhimpunan dari bahasa Inggris." "verb. produksi S ~ S." dan "verb phrase" yang disebut kelas sintaks atau kategori sintaks.

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

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

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

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

Untuk Grammar G1 pada contoh. 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. ditulis sebagai v ==*==> w. jika ada untai vocabulary U VT)'. Untai v menghasilkan w (w tereduksi dari v. atau w adalah diturunkan dari v).Definisi 1-2 Untai w disebut penurunan ~ w. sedemikian sehingga ===> Q1 ===> Q2 ===> Qn = w Relasi ==*==> adalah penutup transitif (transitive closure) dari relasi ===>.Q) adalah Grammar. tetapi dalam sejumlah langkah produksi terhadap untai v. ditulis sebagai v Q1 dan Q2 (termasuk untai hampa) anggota (V N = Q1 a Q2' dan w = Q1 13 Q2' dengan a ~ 13 G. anggota (V N U VTr. jika ada untai vocabulary Qo' QI"'" Qn (n > 0). 19 .S. dapat dilihat pada tabel 1-1 beberapa ilustrasi dari derivasi langsung. Konsep ini dapat diperluas pada produksi untai w. tidak secara langsung. maka kita boleh mengatakan bahwa v memproduksi langsung w atau w lang sung diperoleh dari v. Jika v ===> W. sedemikian sehingga v adalah produksi dari Grammar atau derivasi langsung dari v.

Definisi 1-4 Bentuk sentensial adalah untai yang dihasilkan melalui derivasi yang berawal dari simbol nonterminal S. Karenanya. dan selesai. Di sini. Jika telah didapatkan untai yang terdiri hanya dari simbol terminal. simbol nonterminal di dalam untai dapat kita produksikan menjadi untai baru (diasumsikan bahwa tidak terdapat aturan A ~ A). maka derivasi itu dikatakan telah lengkap. w anggota VT·}. 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.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. kita tidak dapat lagi menghasilkan untai yang lain. Atau dengan perkataan lain : L(G) = {w I S =='==> w. Dari situ. yang adalah sedikit berbeda dari metalanguage yang telah kita gunakan barusan. Metavaribel atau kelas sintaks ditulis dengan diapit simbol < dan >. Bahasa L yang dibentuk oleh Grammar G adalah himpunan semua bentuk sentensial yang semua simbolnya adalah simbol terminal. Jika 20 .

Chomsky mengelompokkan Grammar atas 4 kelompok berdasarkan pembatasan pada produksi. hanya terdiri dari produksi berbentuk u ~ ~ . yang didefinisikan sebagai berikut : Definisi 1-5 Grammar Context-sensitive. dan untai ~. Kelompok kedua. dibahas klasifikasi Grammar secara Chomsky." 1-4 KLASIFIKASI GRAMMAR Di dalam bagian ini. Grammar ini disebut juga Grammar jenis atau tipe ke-nol. Sebagai contoh. 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. Bahasa pemrograman populer yang menggunakan deskripsi BNF adalah ALGOL.kita menggunakan notasi ini.Di sini lui dan I~I berturut-turut menunjukkan panjang untai alpha. 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. 21 . Simbol ::= dan I berturut-turut dapat diartikan sebagai "didefinisikan sebagai" dan "atau. dan I dipakai untuk memisahkan 2 produksi di ruas kanan sebagai hasil produksi ruas kiri yang sarna. atau Grammar tipe pertama. adalah Grammar dengan pembatasan di dalam produksi. yang disebut Grammar Context-sensitive. dengan lui <= 1~1. Kelompok pertama adalah Grammar yang mempunyai aturan produksi yang tidak terbatasi.

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

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

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

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

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

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

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

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

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