-----------

------

-------

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

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

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

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

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

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 .

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

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

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

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

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

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

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

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. Temyata dua buah produksi ditemukan." Di sini S merupakan simbol Start." ataupun the banana ate a cat.V p dan kita cari produksi yang mas kirinya adalah Sp' Kemudian ganti S. Jika sintaks benar. Kita mulai memproduksi S dari mas kiri tanda panah. ====> the cat ate AN ====> the cat ate a N ====> the cat ate a mouse Simbol ====> mengartikan penurunan atau derivasi." a monkey climbs the tree." the monkey climbs a tree.Vp' Kita ganti S dengan komposisi yang memungkinkan." 16 . Misalnya. . maka kompilator menghasilkan kode obyek. Aplikasi hal ini hanya mungkin menghasilkan untai ANV p' Berikutnya kita cari produksi dengan mas kiri A. Dengan memilih produksi A ~ "the" dan mensubstitusikannya ke untai ANV p (di ruas kanan). Kita ambil untai S. Contoh kalimat lain yang dapat dibentuk menggunakan Grammar di atas. adalah misalnya kalimat : " " " " -. dengan ruas kanan produksi tersebut. hendak diproduksi kalimat "the cat ate a mouse. Dapat kita tulis : S ~ S.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. ." 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. the cat ate a banana.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Sign up to vote on this title
UsefulNot useful