-----------

------

-------

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

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

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

Operand ini tergolong IDENTIFIER.---------- derivasinya. silakan pembaca bentuk untai lain yang mungkin. serta buat pula derivasi serta pohon sintaksnya. 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. 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 .. Sebagai latihan.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

dan i. Tentukan sebuah Grammar dari Bahasa L =(0'1) I i <> j. membentuk bah as a [a'' 30 . 1-14. 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}. Tentukan Grammar Regular yang membentuk semua untai yang tcrdiri dari 0 dan 1. 1-12.1-11. yang bersifat bahwa banyaknya () serta banyaknya I adalah ganjil 1-13.

Sign up to vote on this title
UsefulNot useful