-----------

------

-------

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

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

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

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

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 .

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

sesudah pembentukan anb pada bagian kiri. Kita telah secara informal mendiskusikan Klasifikasi Chomsky. Kelas Grammar Context-free nanti akan dibicarakan sangat mendalam. 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. LJ tidak Regular dan L(T) subset L(T). Karenanya. Akibatnya. Juga. 27 . Fenomena ini harus terjadi. Bahasa yagn dihasilkan adalah L.Misalkan q menyatakan banyaknya nonterminal dari Grammar dan ambil n >q. derivasi mengandung 2n + 1 langkah. karena ia dapat dipergunakan untuk menspesifikasikan sebagian besar konstruksi bahasa pernrograman pacta bahasa pemrograman masa ini. karena n > q. Grammar tidak dapat dipakai untuk membentuk tepat an pada bagian kanan. Dapat dicatat bahwa sebagian derivasi dapat dihapus atau diulang bila perlu. 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).

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

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

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

Sign up to vote on this title
UsefulNot useful