Bab1 Bahasa Dan Tata Bahasa Formal

Embed Size (px)

Citation preview

  • 5/14/2018 Bab1 Bahasa Dan Tata Bahasa Formal

    1/30

    ----------- -------

    BAHASA DAN TATA BAHASAFORMAL

  • 5/14/2018 Bab1 Bahasa Dan Tata Bahasa Formal

    2/30

    I"

    1-1 PENDAHULUAN . UNTA I

    Untuk menjelaskan mengenui hahasa secara tcoruu, dan formal, buik iah kllalihat 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 discbutpohon sintaks dari kahmat. Di sim kalimat dibagi-bagi berdasar jerus dan fungsikata. Dari .pelajaran bahasa Indonesia kita mengetahui bahwa kalunat di alasmerupakan kalimat yang telah benar susunannya, atau telah benar tata bahasanya.

    MENENDANG

    Gambar 1-1

    2

  • 5/14/2018 Bab1 Bahasa Dan Tata Bahasa Formal

    3/30

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

    THE LITTLE CAT KICKS A BIG BALL

    Pohon sintaksnya akan berbeda, yakni .

    Gambar 1-2

    3

  • 5/14/2018 Bab1 Bahasa Dan Tata Bahasa Formal

    4/30

    , - -

    Di sini tampak bahwa sintaks kalimat dalam bahasa Indonesia dibandingkanan bahasa Inggris agak berbeda. Tentunya salah, bila kita rnenulis SI KECILKUCING MENENDANG BOLA BESAR, misalnya.

    Dalam pembicaraan ini, pembahasan kita tekankan pada sintaks kalimatsuatu bahasa, bukan arti kalimat (semantik). Studi mengenai teori bahasa inidikembangkan oleh banyak tokoh terkemuka, di antarnya NOAM CHOMSKY,JOHN BACKUS, PETER NAUR dan lain-lain lagi. Hal ini terutama untukkebutuhan bahasa pernrogramanan komputer.

    Sekarang pembahasan kita lakukan dengan lebih formal. Di sini, , , , ,, dan disebut KelasSintaks, atau variabel, atau nonterminal Di sini kita menggunakan tanda < >untuk membedakannya dengan pengertian sehari-hari.

    Sementara itu s r, KUCING, KECIL, MENENDANG, BOLA dan BESARdisebut terminal atau token. Seluruh variabel harus dapat diuraikan/dibagi-bagi,sedangkan terminal tidak dapat diuraikan lagi. Dalam pohon sintaks, variabeldisajikan sebagai simpul bukan daun, sedangkan terminal disajikan sebagai simpuldaun. Pada contoh kita di atas, simpul bukan daun digambarkan dengan lingkaranlelips sedangkan daun dengan persegi panjang.

    Kita lihat subpohon

    Gambar 1-3

    Kita boleh menuliskan penyajian subpohon tersebut sebagai sebuah produksi: -t ::=

    yang dapat kita artikan : variabel dapat dipecah menjadi untaiberurutan variabel dan . Dengan demikian aturanpenguraian kalimat pada contoh dapat dirangkum dalam sebuah himpunanproduksi sebagai berikut':1. -t2. -t

    atau

    4

  • 5/14/2018 Bab1 Bahasa Dan Tata Bahasa Formal

    5/30

    3. ----74. ----75. ----7SI6. ----7KUCING I BOLA7. ----7KECIL I BESAR8. ----7MEMANDANG(Catatan : simbol I berarti atau)

    Apabila kita memiliki suatu himpunan produksi kita dapat membentuk untaiterminal, dengan melakukan sederetan produksi menggunakan produksi yangada. Proses ini disebut derivasi. Biasanya telah ditentukan apa yang disebutsimbol Start (simbol awal), berupa salah satu dari variabel yang ada. Kita harusselalu memulai barisan produksi, dari simbol Start. Pada contoh kita, merupakan simbol Start. Tentu saja kalimat (untai terminal) yang terbentuk tidaktunggal. Sebagai contoh kita dapat membentuk untai terminal, atau singkatnyauntai.SIKUCING KECIL MENENDANG BOLA BESAR,SI BOLA KECIL MENENDANG KUCING BESAR, ataupunSI KUCING BESAR MENENDANG BOhA KECIL, dan lain-lain lagi.

    Derivasi untai pertama di atas adalah : ===>

    ===>.

    ===>

    ===> ===> SIKUCING KECIL MENENDANG BOLA BESAR

    (Catatan: simbol ===> diderivasi atau diuraikan menggunakan produksisebanyak k).

    Untai kedua dapat terjadi karena kita menggunakan produksi (6) : ----7BOLA untuk yang di muka, dan ----7KUCING untuk kedua; berkebalikan denganuntai pertama. Untuk untai ketiga, kiranya dengan mudah dapat pembaca pahami

    5

  • 5/14/2018 Bab1 Bahasa Dan Tata Bahasa Formal

    6/30

    ,----------

    derivasinya. Sebagai latihan, silakan pembaca bentuk untai lain yang mungkin,serta buat pula derivasi serta pohon sintaksnya.

    Contoh kedua berikut ini adalah contoh bagaimana membangun operandyang absah dalam suatu bahasa pemrograman. Kita definisikan himpunan 8produksi dengan simbol Start adalah sebagai berikut :(I) ~ 1(2) ~ (3) ~ x 1y 1z(4) ~ 1 1/\(5) ~ 0 1 I 12 13 14 15 16 17 18 19(6) ~ (7) ~ + i -(8) ~ 1/\(Catatan: /\ adalah terminal/token hampa)Sebagai contoh kita lakukan derivasi ===>

    ===> ===> y===> y===> y7===> y7/\ atau y7

    Di sini kita dapat membentuk sebuah operand yang absah yakni y7. Operand initergolong IDENTIFIER.Sekarang kita bentuk operand berupa INTEGER

    ===> ===> ===> -===> -2===> -2===> -29===> -29===> -294===> -294/\ atau -294

    6

  • 5/14/2018 Bab1 Bahasa Dan Tata Bahasa Formal

    7/30

    Dengan kedua contoh derivasi tadi, kiranya pembaca menjadi jelas bagaimanabentuk operand yang dihasilkan oleh himpunan 8 produksi tersebut. Silakan andatentukan apakah untai terminal berikut ini absah sebagai operand bahasapemrograman kita tersebut, kalau absah, tentukan derivasinya (atau pohonderivasinya):

    4xy2, x2y, -21x, xx~ +1230. x123, x-y+2, xlx2x3x, xxxyyy

    Contoh ketiga adalah contoh bagaimana suatu ekspresi aritmetika adalahabsah dalam notasi infix. Kita tahu bahwa dalam notasi infix, operator berada diantara dua operand. Berikut ini kita definisikan himpunan produksi, dengan simbolStart adalah , sebagai berikut :(I) ~ I (2) ~ kFAKTOR>(3) ~ EKSPRESI I operand(4) ~ + I -(5) ~ * I div

    Kita dapat memeriksa, misalnya x - 25 ) div y) + 3 * z merupakanekspresi yang absah (di sini x, 25, y, 3 serta z adalah operand yang dapatdibentuk seperti contoh kedua yang lalu)

    7

  • 5/14/2018 Bab1 Bahasa Dan Tata Bahasa Formal

    8/30

    Berikut ini pohon derivasinya :

    I/~( )

    I

    (~)

    /1~SUKU> I I II

    +

    * z3

    (MOOP)I

    div

    IIIx

    8

    II25

    Gambar 1--4

  • 5/14/2018 Bab1 Bahasa Dan Tata Bahasa Formal

    9/30

    - ---- -- ----- -- --

    Anda dapat membaca ekspresi x - 25) div y) + 3 * z pada frontier daripohon, yaitu label dari simpul daun berurutan dari kiri ke kanan (pada gambardiberi tanda lingkaran). Sebagai latihan, silakan dibuat pohon derivasi untukekspresi x + 2 * y) - (z + 32) div y) * (3 + z),

    Dalam pembahasan secara umum notas < > pada variabel tidak kita pakai.Variabel bias anya dinyatakan dengan huruf besar A, B, C, S dan sebagainya.Sedangkan terminal atau token dinyatakan dengan huruf kecil a, b, c dansebagainya atau dengan digit 0, 1, 2 dan sebagainya.

    Jadi sebagai contoh, kita dapat menuliskan produksi :(1) S -7 AB(2) A -7 CDE(3) B -7 FG(4) G -7 DE(5) C -7 a(6) D -7 b I c(7) E -7 die(8) F -7 fsebagai pengganti produksi untuk contoh pertama kita (S menggantikan, A menggantikan dan seterusnya).

    Oleh karena itulah mungkin bisa terjadi kesalah pengertian antara kalimatdan kata. Kalimat adalah untai token dengan masing-masing token merupakankata. Namun bila token berupa huruf, untai token merupakan kata.

    Sekarang kita akan menekankan pembicaraan pada sifat elementer dari untaiter-rninal, baik itu berupa kalimat ataupun kata. Di sini banyak terdapat sifatmenarik yang diakibatkan oleh operasi terhadap untai, sarna halnya seperti sifat-sifat menarik pada operasi aritmetika terhadap bilangan cacah. Untuk pengenalanawal, pertama-tama kita perhatikan operasi penjumlahan pada bilangan cacah.Operasi ini dapat disajikan secara umum oleh fungsi dengan dua variabel :

    f(x,y) = x + y,dengan x dan y bilangan cacah.

    9

  • 5/14/2018 Bab1 Bahasa Dan Tata Bahasa Formal

    10/30

    Sistem ini memperlihatkan sifat yang menarik. Yang pertama adalah bahwajumlah dua bilangan cacah masih merupakan bilangan cacah. Sifat ini dinamakansifat tertutup (closure). Tertutup adalah sifat yang perlu bagi suatu sistem. Sebagaicontoh adalah himpunan dan operasi pada himpunan tersebut, yakni operasiGABUNGAN, IRISAN, SELISIH, dan sebagainya. Sifat tertutup ini . merupakansifat yang menjadi ciri sistem aljabar.Sifat yang kedua adalah bahwa (x + y) + Z = x + (y + z) = x + y + z, denganx, y dan z bilangan cacah. Menurut sifat tersebut penjumlahan adalah bersifatasosiatif. Sifat ketiga, terdapat sebuah bilangan i, sedemikian sehingga untuksetiap bilangan cacah x, berlaku x + i = x. Bilangan i ini adalah bilangan nol,dan disebut elemen satuan atau identitas untuk penjurnlahan. Banyak sifat pentingyang lain, seperti sifat distributif dan komutatif, terdapat ketika operasi aritmetikaseperti penjumlahan dan perkalian dikerjakan terhadap himpunan bilangan cacah.

    Kita mulai pembicarakan tentang untai secara formal, dengan mendefinisikanuntai tersebut secara formal. Untuk mengerjakan hal itu, kita harusmemperkenalkan lebih dahulu apa yang disebut alfabet atau abjad, dan operasipenyambungan, atau concatenation atau produk. Secara sederhana, sebuah alfabetV adalah himpunan hingga yang tidak kosong (harnpa) dari simbol. Simbol,anggota dari alfabet dinamakan huruf atau karakter atau token.Himpunan V = {a,b,c, ... ,z} adalah contoh alfabet yang telah biasa kita kenal,dan { a, ~,y, ()} adalah 4 karakter alfabet, yang subalphabet dari alfabet Yunani.Concatenation dari dua karakter alfabet, 'a' dan 'b'. membentuk deratan karakter,yakni 'ab'. (Sebagai catatan, untuk menyatakan karakter atau barisan karakteralfabet, kita biasanya menggunakan tanda petik tunggal, di kiri dan kanannya).Operasi concatenation juga dapat dilaksankan terhadap barisan karakter. Sebagaicontoh : 'ab' concate 'ab' menghasilkan 'abab'. Kita acapkali menggunakansimbol dot (titik) untuk menyatakan operasi concatenation. Kita jugadiperbolehkan untuk menulis 'ab' . 'a' sebagai 'aba'.

    Sebuah Untai (kata atau kalimat) atas alfabet V adalah huruf dari alfabet Vatau barisan huruf yang diturunkan dari concatenation terhadap nol atau lebihhuruf alfabet V.Sebagai contoh, untai atas alfabet V = {a,b,c} adalah 'a', , ca', ,ccba', 'bbb', dansebagainya.

    Pandang bahwa V.V = V2 adalah himpunan yang terdiri dari untai denganpanjang 2 atas V, sedangkan V.V.V = V2.V = V3 adalah himpunan yang terdiridari untai dengan panjang 3 atas V. Secara umum, V.V.V ..... V = V" adalahhimpunan yang terdiri dari untai dengan panjang n atas V. Selanjutnya, yangdimaksud dengan penutup atau closure dari V, ditulis V+, didefinisikan sebagai:

    10

  • 5/14/2018 Bab1 Bahasa Dan Tata Bahasa Formal

    11/30

    Y+ = Y U y2 U V' U ...(Notasi U adalah GABUNGAN)

    Untuk melengkapi, didefinisikan untai hampa atau nol atau untai epsilon,yang sering ditulis sebagai atau 1\. Untai hampa ini sering digabungkan denganV+, membentuk penutup Kleene atau Kleene's star V dari V. Jadi, V = {I\} UV U V2 U V3U ... = {I\} U V+. Di sini V adalah hirnpunan semua untai yang dapat dibentukdari huruf dalam V, termasuk untai hampa.Untai hampa mempunyai sifat elernen identitas, yakni :

    x.1\ = I\.x = x, untuk setiap untai x anggota Y.Untai hampa ini disebut elemen identitas dalam sistem yang dibentuk olehhimpunan Y', dengan operasi concatenation. Sifat asosiatif juga dipenuhi olehsistem, yakni (x.y).z = x.(y.z) = x.y.z, untuk setiap untai x, y, z anggota V'.Sistem ini membentuk suatu sistem aljabar berupa semigrup, yang disebutsemigrup bebas.

    Sebagai contoh, perhatikan himpunan untai V yang dapat dibentuk darihuruf dalam alfabet V = {x,y). Beberapa subhimpunan dari V adalah:y2 = {'xx','xy','yx','yy'}y3 = {' xxx';' xxy",' xyx';' xyy' ,'yxx' ,'yxy' ,'yyx' ,'yyy' }y4 = {'xxxx' ,'xxxy' ,'xxyy' ,'xxyx' ,'xyxx' ,'xyxy' ,'xyyx' ,'xyyy',

    'yxxx' ,'yxxy' ,'yxyx' ,'yxyy' ,'yyxx' ,'yyxy' ,'yyyx' ,'yyyy'}

    dan sebagainya.Sebagai contoh yang lain adalah bahasa BASIC. Alfabet BASIC terdiri dari

    26 huruf besar dan 26 huruf kecil, 10 digit dan hirnpunan karakter khusus,seperti, (' kurung buka')' kurung tutup, :' titik dua'+' plus'=' sarna dengandan sebagainya.

    11

  • 5/14/2018 Bab1 Bahasa Dan Tata Bahasa Formal

    12/30

    Hanya karakter ini yang digunakan untuk penulisan program bahasa BASIC.Oleh karenanya, sebuah program dapat dipandang sebagai concatenation darikarakter atas sebuah alfabet, untuk menghasilkan suatu untai dengan panjangsembarang.

    Misalkan x, y, dan z merupakan untai atas sebuah alfabet dengan z = xy.Untai x disebut prefix atau head dari z. Jika y bukan untai hampa, maka xdisebut proper prefix atau proper head. Secara yang sarna, dan y disebut suffixatau tail dari z dan jika x tidak sarna dengan epsilon, maka y disebut propersuffix atau proper tail dari untai z. Beberapa konsep yang telah diperkenalkandi sini tadi, akan digunakan dalam pembahasan tentang Grammar dan bahasaberikut ini.Catatan: Pada pembahasan berikutnya, apostrof ' , untuk menyatakan untaiterminal sering kita hapus.

    1-2 TATA BAHAS A (G RAMMAR )Bahasa pemrograman harus didefinisikan secara tepat. Untuk beberapa bahasa

    pemrograman yang mula-mula sekali diciptakan, adanya kompilator (compiler)yang khusus, akhirnya membentuk definisi yang tepat dari bahasa itu. Spesifikasiyang layak dari bahasa pemrograman meliputi pendefinisian berikut :1. Himpunan sirnbol, yakni alfabet, yang dapat digunakan untuk menyusun

    program yang benar.2. Himpunan dari semua program yang secara sintaks benar.3. Arti dari semua program yang secara sintaks benar.

    Dalam bagian ini kita akan mengkonsentrasikan diri pada dua hal yangberhubungan dengan spesifikasi bahasa pemrograman.

    Sebuah bahasa L dapat dipandang sebagai sebuah subhimpunan dari penutupKleene V (termasuk untai hampa) dari sebuah alfabet V. Bahasa yang terdiridari semua anggota V secara khusus tidak menarik untuk dibicarakan, karenaterlalu luas.Definisi kita mengenai bahasa L adalah himpunan dari untai atau kalimat atassebuah alfabet hingga VT' oleh karenanya L adalah Subhimpunan dari VT'

    Bagaimana cara menyajikan sebuah bahasa? Bahasa merupakan himpunanhingga ataupun tidak hingga dari kalimat. Bahasa hingga dapat disajikan denganmenyebut anggotanya satu per satu. Untuk bahasa tak hingga, penyebutan seperti

    12

  • 5/14/2018 Bab1 Bahasa Dan Tata Bahasa Formal

    13/30

    itu tidak mungkin. Meskipun demikian, kita selalu dapat menyajakan suatubahasa secara hingga. Salah satu cara penyajian hingga tersebut di atas adalahtata bahasa atau Grammar.

    Grammar terdiri dari himpunan hingga yang tak hampa dari aturan atauproduksi, yang menspesifikasikan sintaks dari bahasa. Di sini berarti juga,Grammar menentukan kalimat pada bahasa. Studi tentang Grammar merupakansubbidang yang penting dalam Ilmu komputer. Studi ini disebut Teori BahasaFormal. Bidang ini pada tahun 1950-an sangat ditekuni oleh Noam Chomskyyang memberikan model matematika untuk Grammar, yang bersangkutan denganstudinya dalam bahasa natural (natural language). Pada tahun 1960 konsepGrammar menjadi penting sekali dalam bidang pemrograman, karen a sintaksdari bahasa pemrograman ALGOL 60 telah menggunakan konsep Grammarformal ini.

    Metode kedua untuk spesifikasi bahasa adalah menggunakan konsep mesinabstrak, yang disebut akseptor (acceptor) atau penerima. Akseptor ini akanmenentukan apakah suatu untai (kalimat atau kata) termasuk bahasa.Dalam bag ian ini, kita menekankan pembahasan Grammar sebagai suatu sistemmate-rnatika untuk mendefinisikan bahasa, dan sebagai suatu alat untukmemberikan beberapa struktur, yang kiranya berguna bagi kalimat dalam bahasa.Seperti disebutkan terdahulu, Grammar merupakan pembentuk atau pengaturstruktur dari kalimat pada suatu bahasa.

    Untuk lebih jelasnya, kita ulangi sedikit, pembahasan pendahuluan padabagian 1-1. Sebuah kaliamat dalam bahasa Inggris merupakan sebuah strukturyang dinyatakan dalam subjectphrase, predicate phrase, noun, dan sebagainya.Untuk sebuah program komputer, struktur yang diberikan adalah berupa prosedur,statement, ekspresi, dan sebagainya. Jadi Grammar adalah suatu sistem matematikuntuk mendefinisikan bahasa dan alat untuk membentuk suatu struktur padakalimat bahasa, yang disebut sebagai struktur gramatik, atau sintaks kalimat.Struktur gramatik dari bahasa ini, digunakan untuk menentukan apakah suatukalimat tertentu, termasuk atau tidak sebagai kalimat yang benar dalam bahasa.Struktur gramatik dari sebuah kalimat biasanya dipelajari dengan cara melakukananal isis terhadap berbagai bag ian dari kalimat, dan terhadap relasi arrtara satubagian kalimat dengan bagian yang lain.

    Pandang kalimat "the cat ate a mouse." Struktur atau urainnya (parse),berupa pohon sintaks atau pohon derivasi, terlihat pada Gambar 1-5. Diagramdari uraian kalimat ini menunjukkan sintaks dari kalimat.Masing-masing simpul merepresentasikan phrase(bagian) dari sintaks. Kataseperti "the" dan "cat" adalah simbol dasar atau simbol primitive dari bahasa( atau token).

    13

  • 5/14/2018 Bab1 Bahasa Dan Tata Bahasa Formal

    14/30

    Sebagai contoh, sintaks dari suatu subhimpunan dari bahasa Inggris, dapatdinyatakan dengan menggunakan simbol berikut :

    S = sentenceV = verb0 = objectA = articleSp subject phraseN = nounVp = verb phraseNp = noun phrase

    dengan aturan sebagai berikut:S ~ SpVpSp ~ ANA ~ "a'A ~ "the'N ~ "monkey'N ~ "banana'N ~ "cat'N ~ "mouse'N ~ "tree'Vp ~ VOV ~ "ate'V ~ "climbs'0 ~ NpNp ~ ANAturan pembuatan kalimat di sini, adalah dengan menyusun "subject phrase"

    diikuti oleh "verb phrase." Sedangkan "subject phrase" tersusun dari "verb"diikuti oleh "object," dan sebagainya.Struktur bahasa dinyatakan dengan menggunakan simbol "sentence," "verb,"

    "subject phrase," dan "verb phrase" yang disebut kelas sintaks atau kategorisintaks. Setiap kelas sintaks terdiri dari sejumlah struktur alternatif, dan masing-masing struktur terdiri dari himpunan terurut dari primitif ataupun kelas sintaks.Seperti telah disebutkan terdahulu, struktur alternatif ini disebut produksi atauaturan sitnaks, ataupun aturan pergantian. Sebagai contoh, produksi S ~ S,Vpdapat didefinisikan sebagai "sentence" tersusun dari "subject phrase" diikuti

    14

  • 5/14/2018 Bab1 Bahasa Dan Tata Bahasa Formal

    15/30

    oleh "verb phrase." Simbol ~ memisahkan kelas sintaks. Kelas sintaks bersamadengan simbol panah dapat kita gunakan untuk menyatakan suatu bahasa.

    Sebuah sistem atau bahasa yang menerangkan bahasa yag lain dikenal sebagaimetalanguage. Metalanguage yang digunakan untuk mengajarkan bahasa Jermandi hampir semua univeristas, adalah bahasa Inggris. Sementara itu, metalan-guage bahasa Inggris adalah bahasa Inggris. Diagram dari penguraian kalimat(parse) dari sebuah kalimat menyatakan sintaksnya, tetapi tidak menyatakan artiatau semantiknya. Di sini kita terutama menekankan pembahasan tentang sintaksdari bahasa, dan membahas alat untuk mendefinisikan bahasa dengan sintaksyang telah terdefinisi, yakni membahas tentang Grammar.

    Sentence

    Subject phrase/~article . nounVerb phrase

    verb object

    noun phrase

    the cat ate

    /~article noun/ mouseGambar 1.5. Pohon sintaks suatu kalimat

    Dengan menggunakan aturan gramatikal untuk contoh kita yang lalu, kitadapat memproduksikan atau menurunkan atau membentuk sebuah kalimat dalambahasa. Seorang pemrogram komputer pada hakikatnya bertugas menghasilkanprogram yang sesuai dengan aturan produksi dari bahasa. Sedangkan, kompilator

    15

    __

  • 5/14/2018 Bab1 Bahasa Dan Tata Bahasa Formal

    16/30

    dari bahasa pemrograman dihadapkan dengan masalah untuk menentukan apakahsuatu kalimat yang diberikan (program sumber) adalah secara sintaks benarberbasis pada aturan grammatikal yang diberikan. Jika sintaks benar, makakompilator menghasilkan kode obyek.Misalnya, hendak diproduksi kalimat "the cat ate a mouse." Di sini S merupakansimbol Start. Kita mulai memproduksi S dari mas kiri tanda panah. Dapat kitatulis : S ~ S,Vp' Kita ganti S dengan komposisi yang memungkinkan. Kitaambil untai S,Vp dan kita cari produksi yang mas kirinya adalah Sp' Kemudianganti S, dengan ruas kanan produksi tersebut. Aplikasi hal ini hanya mungkinmenghasilkan untai ANV p' Berikutnya kita cari produksi dengan mas kiri A.Temyata dua buah produksi ditemukan. Dengan memilih produksi A ~ "the"dan mensubstitusikannya ke untai ANV p (di ruas kanan), kita dapatkan untai theNVp' Proses enumerasi ini diteruskan sampai diperoleh kalimat yang diinginkan.Secara lengkap derivasi atau urutan pembentukan kalimat "the cat ate a mouse,"adalah sebagai berikut:S ====> SpVr-

    ====> ANVp====> the NV p====> the cat Vp====> the cat VO====> the cat ate 0====> the cat ate N,====> the cat ate AN====> the cat ate a N====> the cat ate a mouseSimbol ====> mengartikan penurunan atau derivasi, yakni bahwa untai di

    sebelah kanan didapat dari pemakaian salah satu produksi terhadap subuntainonterminal di ruas kiri.. ,

    Contoh kalimat lain yang dapat dibentuk menggunakan Grammar di atas,adalah misalnya kalimat :

    " the cat ate a banana,"" the monkey climbs a tree,"" a monkey climbs the tree," ataupun" the banana ate a cat."

    -,16

  • 5/14/2018 Bab1 Bahasa Dan Tata Bahasa Formal

    17/30

    Untuk kalimat terakhir ini, meskipun secara gramatikal benar, namun samasekali tidak memberikan arti (semantiknya). Situasi ini kerapkali diperbolehkandalam spesifikasi bahasa. Banyak program FORTRAN dan PASCAL yang benartetapi tidak memberikan arti. Misalnya statement untuk melakukan pembagian,namun pembaginya adalah nol (division by zero). Selain itu contoh lain kalimatbahasa Indonesia, Mata saya mendengar suara merdu" adalah kalimat yangmengandung kesalahan semantik. Di sini, kalimat adalah benar secara sintaksbahasa Indonesia.

    Pandang simbol L,O, dan I, di sini L adalah huruf, 0 adalahdigit, dan Iadalah identifier. Produksi yang berikut adalah rekursif dan menghasilkanhimpunan tak hingga nama, karena kelas sintaks I adalah muncul, baik padaruas kiri maupun ruas kanan dari produksi tertentu.

    I ~ LI ~ IDI ~ ILI ~ aI ~ bI ~ z0 ~ 00 ~ 10 ~ 9

    Mudah dilihat bahwa I mendefinisikan sebuah himpunan untai atau nama,tak hingga banyaknya. Masing-masing nama terdiri dari sebuah huruf, atausebuah huruf diikuti oleh satu atau lebih huruf atau digit. Himpunan ini terjadisebagai akibat dari penggunaan secara rekursif terhadap produksi I ~ 10, danI > IL. Jadi, memang rekursif adalah dasar dari pendefinisian bahasa tidakhingga, menggunakan Grammar.

    Marilah sekarang kita formalkan gagasan mengenai Grammar dan bagaimanacara menggunakannya. Untuk keperluan ini, kita misalkan VT adalah himpunanhingga yang tak hampa dari simbol, (alfabet terminal): Anggota VT disebutsimbol terminal. Metalanguage yang digunakan untuk menurunkan untai dalambahasa, diasumsikan mengandung sebuah himpunan kelas sitnaks atau variabel,yang disebut simbol nonterminal. Himpunan simbol nonterminal dinyatakansebagai VN. Elemen VN digunakan untuk mendefinsikan sintaks atau strukturdari bahasa. Lebih lanjut, himpunan VN dan VT diasumsikan adalah saling lepas.Gabungan VN U VT' yakni himpunan yang terdiri dari simbol nonterminal dan

    17

  • 5/14/2018 Bab1 Bahasa Dan Tata Bahasa Formal

    18/30

    terminal disebut vocabulary. Biasanya, kita menggunakan huruf kapital ataubesar A,B,C, ..., X,Y,Z untuk menyatakan simbol nonterminal, dan menggunakanSI' S2'''' untuk menyatakan anggota vocabulary. Simbol terminal dinyatakandengan huruf kecil x,y,z, .... Sementara itu untai dari vocabulary dinyatakandengan huruf Yunani, yakni a, B , y, dan sebagainya.Panjang dari untai alpha dinyatakan dengan notasi lal.

    Definisi 1-1

    Sebuah Grammar didefinisikan sebagai 4-tupelG = (VN, VT, S, Q).di sini

    VT dan VN adalah himpunan simbol terminal dan himpunan simbolnonterminal (kelas sintaks).S suatu elernen ertentu dari VN' yang disebut simbol Start.Q merupakan subhimpunan hingga yang tidak kosong dari relasi(VTUVNr ke (VTUVNr.

    atau secara umum, sebuah elemen (a, ~) dari Q, ditulis sebagai

    dan disebut produksi atau rewriting rule.

    Sebagai contoh dalam mendefinisikan identifier, kita dapat menulis Grammarberikut :G]={VN,VT,S,Q},dengan VN = {I,L,D }

    VT = {a, b,c,d,e, f,g,h,i,j ,k, l, m,n,o ,p,q,r, s, t, u, v, w,x,y, z,0,1,2,3,4,5,6,7,8,9}

    S = I, danQ = {I ~ L, I ~ IL , I ~ ID , L ---7 a, L ---7 b, ...,L --7 Z, D --7 0, D --7 1, ... D --7 9}

    18

  • 5/14/2018 Bab1 Bahasa Dan Tata Bahasa Formal

    19/30

    Definisi 1-2

    Untai w disebut penurunan atau derivasi langsung dari v, ditulis sebagai v~ w, jika ada untai vocabulary Q1 dan Q2 (termasuk untai hampa) anggota (V NU VT)' , sedemikian sehingga v = Q1 a Q2 ' dan w = Q1 1 3 Q2 ' dengan a ~ 1 3adalah produksi dari Grammar G.

    Jika v ===> W, maka kita boleh mengatakan bahwa v memproduksi langsungw atau w lang sung diperoleh dari v.Untuk Grammar G1 pada contoh, dapat dilihat pada tabel 1-1 beberapa ilustrasidari derivasi langsung.

    Konsep ini dapat diperluas pada produksi untai w, tidak secara langsung,tetapi dalam sejumlah langkah produksi terhadap untai v.Tabel 1-1

    PRODuKsI Q1 Q1I L I ~ L f\ f\LL Lx L~x L f\LDL LlL D~l L LLDDL L2DL D~2 L DL

    Definisi 1-3

    G = (VN 'VT ,S ,Q ) adalah Grammar. Untai v menghasilkan w (w tereduksidari v, atau w adalah diturunkan dari v), ditulis sebagai v ==*==> w, jika adauntai vocabulary Qo'Q I " '" Q n (n > 0), anggota (VN U VTr, sedemikian sehingga

    ===> Q1===> Q2===> Q n = w

    Relasi ==*==> adalah penutup transitif (transitive closure) dari relasi ===>.

    19

  • 5/14/2018 Bab1 Bahasa Dan Tata Bahasa Formal

    20/30

    Kembali ke Grammar G" kita lihat untai al3 adalah derivasi dari I denganderetan derivasi sebagai berikut :

    I ===> ID===> I1)D===> LDD===> aDD===> aID===> al3

    Catatan:Sebagaimana kita ketahui, simbol nonterminal di dalam untai dapat kitaproduksikan menjadi untai baru (diasumsikan bahwa tidak terdapat aturan A ~A). Jika telah didapatkan untai yang terdiri hanya dari simbol terminal, makaderivasi itu dikatakan telah lengkap, dan selesai. Dari situ, kita tidak dapat lagimenghasilkan untai yang lain.Definisi 1-4

    Bentuk sentensial adalah untai yang dihasilkan melalui derivasi yang berawaldari simbol nonterminal S. Bahasa L yang dibentuk oleh Grammar G adalahhimpunan semua bentuk sentensial yang semua simbolnya adalah simbol terminal.Atau dengan perkataan lain :

    L(G) = {w I S =='==> w, w anggota VT}.Karenanya, pada hakikatnya bahasa adalah himpunan bagian dari himpunansemua untai terminal (kalimat) dari VT'

    1-3 B ENTUK B ACKUS -NAUR

    Pada bagian ini kita bahas bentuk Backus-Naur (BNF) dari metalanguage,yang adalah sedikit berbeda dari metalanguage yang telah kita gunakan barusan.Di sini, Metavaribel atau kelas sintaks ditulis dengan diapit simbol < dan >. Jika

    20

  • 5/14/2018 Bab1 Bahasa Dan Tata Bahasa Formal

    21/30

    kita menggunakan notasi ini, maka simbol adalah anggota dari VNsedangkan simbol "sentence" adalah element dari VTDengan cara ini kita tidakragu-ragu melihat apakah suatu simbol merupakan anggota VN ataukah anggotaVT

    BNF secara intensif telah banyak digunakan dalam pendefinisian secaraformal berbagai bahasa pemrograman. Bahasa pemrograman populer yangmenggunakan deskripsi BNF adalah ALGOL. Sebagai contoh, pendefinisiansebuah identifier di dalam BNF adalah sebagai berikut :

    ::= lidentifier>kidentifier>::= alblcl Iylz::= 0 1 1 1 2 1 1 8 1 9

    Catatan :Simbol ::= dapat digunakan sebagai pengganti simbol ~ di dalam Grammar,dan Idipakai untuk memisahkan 2 produksi di ruas kanan sebagai hasil produksiruas kiri yang sarna.Simbol ::= dan I berturut-turut dapat diartikan sebagai "didefinisikan sebagai"dan "atau."

    1-4 KLAS IFIKAS I G R AM M ARDi dalam bagian ini, dibahas klasifikasi Grammar secara Chomsky. Chomsky

    mengelompokkan Grammar atas 4 kelompok berdasarkan pembatasan padaproduksi. Kelompok pertama adalah Grammar yang mempunyai aturan produksiyang tidak terbatasi. Grammar ini disebut juga Grammar jenis atau tipe ke-nol.

    Kelompok kedua, yang disebut Grammar Context-sensitive, adalah Grammardengan pembatasan di dalam produksi, yang didefinisikan sebagai berikut :Definisi 1-5

    Grammar Context-sensitive, atau Grammar tipe pertama, hanya terdiri dariproduksi berbentuk u ~ ~ , dengan lui

  • 5/14/2018 Bab1 Bahasa Dan Tata Bahasa Formal

    22/30

    Di sini, bentuk dari pembatasan di dalam sebuah produksi adalah mencegah ~menjadi untai hampa.

    Altematif yang ekivalen dengan pendefinisian Grammar Context-sensitivedi atas, adalah pendefinisian dengan cara berikut ini:

    a dan ~ dalam produksi a ~ ~,disajikan sebagai a = Q,AQ2 dan ~ =Q,rQ2 (adalah mungkinbahwa baik Q, maupun Q2 ataupun keduanya adalahhampa) di sini ' Y haruslah tidak hampa.

    Jadi suatu Grammar adalah Context-sensitive, jika semua produksinyaberbentuk :

    Ini berarti bahwa nonterminal A digantikan dengan gamma dalam konteks antaraQ , dan Q2.

    Kedua bentuk aturan di atas adalah ekivalen, dalam arti bahasa yang dapatterdefinisikan oleh Grammar yang mempunyai aturan dalam bentuk pertamaadalah selalu dapat terdefmisi pula oleh beberapa (mungkin berbeda) Grammaryang mempunyai aturan dalam bentuk kedua. Grammar konteks-sensitifmembentuk Bahasa Context-sensitive.Language atau bahasa L(G2)= {anbncnln >= I} adalah contoh bahasa Context-sensitive. Ia dibentuk oleh Grammar G2 sebagai berikut :

    G2 = ( { S,B,C}, {a,b,c} S,Q)dengan himpunan produksi Q terdiri dari produksi

    1. S ~ aSBC2. S ~ abC3. bB ~ bb

    4. BC ~ be5. CB ~ BC6. cC ~ cc

    Berikut ini adalah derivasi untuk untai aabbccS ====> aSBC

    ====> aabCBC====> aabBCC

    melalui produksimelalui produksi 2melalui produksi 5

    22

  • 5/14/2018 Bab1 Bahasa Dan Tata Bahasa Formal

    23/30

    II

    ====> aabbCC====> aabbcC====> aabbcc

    melalui produksi 3melalui produksi 4melalui produksi 6

    Sekarang, kita tambahkan pembatasan yang lebih lanjut terhadap produksidari Grammar Context-sensitive, sehingga diperoleh Grammar Context-free.Definisi 1-6

    Grammar Context-free, atau Grammar tipe ke-2, hanya terdiri dari produksiberbentuk: a ~ p , dengan lal = I}di sini G3 = ( { S,C}, {a,b },S,Q), dengan Q adalah produksi :

    S ~ aCaC ~ aCaC~b

    Derifasi untuk a3ba3 atau aaabaaa, terdiri dari langkah sebagai berikut :S ===> aCa===> aaCaa===> aaaCaaa===> aaabaaa

    23

  • 5/14/2018 Bab1 Bahasa Dan Tata Bahasa Formal

    24/30

    Pembatasan kita yang terakhir nanti akan membawa kita kepada definisiGrammar Regular.Difinisi 1-7

    Grammar Regular atau Grammar tire ke-3, hanya terdiri dari produksiberbentuk : a ~ ~, dengan lal

  • 5/14/2018 Bab1 Bahasa Dan Tata Bahasa Formal

    25/30

    Bersangkutan dengan rnasing-masing kelas Grzrnmar, terdapat kelas mesinabstrak atau akseptor (acceptor) yang akan menerima kelas bahasa yang dibentukGrammar pembentuknya masing-rnasing. Kita membahas model akseptor padaBab yang akan datang.Untuk menunjukkan bahwa UTI) adalah himpunan bagian dari L(TO) perIudilibatkan pengertian dari sebuah problema keputusan yang bersangkutan denganbahasa.

    Diberikan sebuah bahasa L dan beberapa elemen (untai) x, masalah keputusanyang bersangkutan dengan himpunan L ini adalah untuk menentukan apakah xtermasuk atau tidak dalam L. Masalah keputusan yang bersangkutan denganbahasa disebut fully decidable jika terdapat sebuah algoritma yang akan menjawabpertanyaan ini dalam waktu yang hingga. Sebuah bahasa pemrograman yangmasalah keputusannya adalah fully decidable disebut rekursif. Masalah keputusandrsebut semidecidable, jika terdapat sebuah algoritma yang dapat mengatakanya dalarn waktu yang hingga, bila x anggota L, tetapi mungkin tidak mampumengatakan tidak, bila x bukan anggota L. Bahasa pemrograman yang masalahkeputusannya adalah semidecidable disebut recursively enumerable.

    Jelas, ini bukanlah definisi secara matematis bagi bahasa recursive maupunbahasa recursively enumerable. Definisi kita di atas dapat secara formal digantikanoleh definisi Turing Mesin.

    Seakrang, marilah kita kembali kepada masalah apakah L(T,) termuat dalamL(TII) , atau L(T,) subset L(To)'Ini dapat dilihat (Dapat ditunjukkan bahwa "Sebuah himpunan adalah recursivelyenumerable jika ia merupakan sebuah bahasa '}'O. Dengan kata lain sebuahGrammar yang tidak dibatasi mempunyai kemampuan pembentukan seperti MesinTuring.

    Kita ingat lagi, bahwa masalah desision yang berhubungan dengan suatuhimpunan recursively enmerable adalah semidecidable. Untuk menunjukkan L(T,)subset L(To) mengandung perumusan algoritma yang decidable penuh untuksuatu bahasa T" yakni perumusan algoritma yang akan menentukan, apakahuntai x yang diberikan, anggota L(G) atau bukan, untuk suatu Context-sensitiveGrammar G. Algoritma semacam itu dapat ditemukan pada buku karanganHopcroft dan Ullman (1969).

    Untuk menunjukkan L(T) subset L(T,) mengandung pemilihan suatu bahasaContext-sensitive yang khusus yang tidak Context-free. Bicarakan bahasaL={anbmanbmln,m >=1}.Bahasa ini, yang mula-mula diformulasikan oleh Chomsky (1959) adalah Context-sensitive, karena Chomsky menemukan suatu Grammar Context-sensitive untuk

    25

  • 5/14/2018 Bab1 Bahasa Dan Tata Bahasa Formal

    26/30

    bahasa ini. Ia juga rnem buktikan bahwa tidak ada satupun Grammar Context-free dapat membentuk bahasa di atas.

    Pada akhir bagian ini, kita tunjukkan hahwa L() subset L(T2).GrammarRegular dan Context-free didiskusikan secara panjang lehar pada hagianakhir dari bab ini.Perhatikan bahasa L, = {a~ban I n >= I}, danL = {a ba In,m >= I}.,;. n mSebuah Grammar Context-free untuk L, terdiri dari aturan sebagai berikut:

    S ~ aAaA ~ aAaA~bSebuah Grammar Regular bagi bahasa L 2 mudah sekali diperolch, salah

    satunya adalah dengan himpunan produksi:S ~ a sS ~ aBB ~ bCC ~ aCC ~ a

    Dapat terlihat, bahwa bahasa L, adalah Context-dree namun bukan bahasaRegular. Hal ini terdapat pada teorema berikut.Teorema 1-2

    Terdapat Bahasa Context-free yang bukan merupakan bahasa Regular.Bukti

    Kita asumsikan bahwa terdapat suatu Grammar Regular yang membentukbahasa L, kita sebelum ini. Suatu derivasi dalam sebuah Grammar Regularmempunyai sejumlah karakteristik.Pertama, setiap sentential form di dalam derivasi terdiri paling banyak satunonterminal yang muncul di akhir kanan dari bentuk sentential.

    Kedua, panjang dari masing-masing bentuk sentential yang berurutan (kecualiyang terakhir) bertambah dengan 1.

    Asumsikan bahwa kita mempunyai suatu derivasi untuk untai a'ba", Untaiterminal.semacam itu haruslah secara langsung diproduksi oleh sentensial formanban-1Y.

    26

  • 5/14/2018 Bab1 Bahasa Dan Tata Bahasa Formal

    27/30

    Misalkan q menyatakan banyaknya nonterminal dari Grammar dan ambiln >q. Karena hanya satu dapat ditambahkan ke setiap sentential form padasetiap langkah (kecuali pada langkah pertama), derivasi mengandung 2n + 1langkah. Juga, karena tepat satu nonterminal muncul pada rnasing-rnasign langkah(kecuali untk langkah terakhir), maka haruslah terminal beberapa simbolnonterminal yang terulang dalam derivasi. Fenomena ini harus terjadi, karenan > q. Hasilnya adalah derivasi seperti di bawah ini

    a'b X

    a'b X

    a'ba"dengan nonterminal X telah terulang pada beberapa sentential form. Dapat dicatatbahwa sebagian derivasi dapat dihapus atau diulang bila perlu. Akibatnya, sesudahpembentukan anb pada bagian kiri, Grammar tidak dapat dipakai untukmembentuk tepat an pada bagian kanan. Bahasa yagn dihasilkan adalah L;Karenanya, LJ tidak Regular dan L(T) subset L(T). -

    Kita telah secara informal mendiskusikan Klasifikasi Chomsky. KelasGrammar Context-free nanti akan dibicarakan sangat mendalam, karena ia dapatdipergunakan untuk menspesifikasikan sebagian besar konstruksi bahasapernrograman pacta bahasa pemrograman masa ini.

    2 7

  • 5/14/2018 Bab1 Bahasa Dan Tata Bahasa Formal

    28/30

    SOAL LAT/HAN1-1. Pakailah contoh Grammar dalam pembicaraan kita yang lalu, yakni

    Grammar Bahasa Inggris yang umum, untuk melakukan derivasi darikalimat berikut :1. the monkey ate a banana2. the cat climbs a tree3. a cat ate the monkey

    1-2. Diketahui Grammar, dengan himpunan simbol terminal {a,b} dan produksisebagai berikut (huruf kecil menyatakan simbol terminal)S--7aS --7 SaS--7bS --7 bSJelaskan bagaimana bentuk umum dari untai yang dibentuk oleh Grammartersebut.

    1-3. Tulis Grammar dari bahasa sebagai berikut :a. himpunan integer nonnegatif yang ganjilb. himpunan integer nonnegatif yang genap tanpa diperbolehkannya nol

    muncul di depan1-4. Diberikan sebuah Grammar yang menyajikan operasi aritmetika sederhana

    meliputi penambahan (+), pengurangan (-), perkalian (*), dan pembagian(I).Simboli diartikan sebagai suatu nama variabel atau identifier.VN = {E, T, Fl, VT = {i,*,1,+,-,(,)}. S = EDengan produksi :F --7 i T --7 TIP

    E--7T--7 (E)

    28

  • 5/14/2018 Bab1 Bahasa Dan Tata Bahasa Formal

    29/30

    E ____,+TE ____,-T

    Bcrikan dcrivasi untuk ckspresi sebagai berikut :i--i, i-i/i, i*(i+i), i*i+i

    1-5. Tuliskan Grammar untuk bahasa berikut.a) Himpunan nama-nama FORTRAN. Ingat bahwa FORTRAN

    mcngandung tidak Icbih dari 6 karakter.b) Himpunan komcntar dalam PLII. Himpunan dari simbol terminal

    adalah {A,B,C, ..., Z, 0, I, ..., 9, #, l, *, -, +, I, serta karakter khususyang menyatakan blank}.

    1-6. Tcntukan sebuah Grammar Context-sensitiveyang akan menghasilkanbahasa L = {xx, dengan x = x,x2 xn' dan x, anggota {a,b} untuk semuaI

  • 5/14/2018 Bab1 Bahasa Dan Tata Bahasa Formal

    30/30

    1-11. Bentuk sebuah Grammar Context-free yang menghasilkanL = {wlw berisi untai yang banyaknya () adalah dua kali banyaknya I}.

    1-12. Tentukan Grammar Regular yang membentuk semua untai yang tcrdiridari 0 dan 1, yang bersifat bahwa banyaknya () serta banyaknya I adalahganjil

    1-13. Tentukan sebuah Grammar dari BahasaL =(0'1) I i j, dan i.j > O}.

    1-14. Tentukan sebuah Grammar Context-sensitiveyang membentuk bah asa [a''I p adalah bilangan prima}.

    30