1|Page
Materi yang akan diajarkan bisa saja disampaikan dalam perkuliahan selama 2 x 50
menit, atau dalam kurun 2 sks, mungkin saja bisa lebih dari 2 x 50 menit jika
perkuliahan secara online ini berjalan dengan baik.
2|Page
i. Menyimpulkan materi yang telah dibahas,
j. Memberi gambaran materi yang akan dibahas minggu.
3|Page
Tata bahasa digunakan untuk membangkitkan kalimat dari suatu bahasa dan untuk
memeriksa apakah suatu kalimat termasuk didalam bahasa tersebut. Seperti halnya
tata bahasa, finite state machine (FSM) digunakan untuk mengenali kalimat dari
suatu bahasa dan untuk menghasilkan keluaran sesuai dengan spesifikasi yang
didefinisikan. Konsep tata bahasa dan FSM keduanya saling berkaitan, dan antara
keduanya dapat saling ditransformasikan satu sama lain.
Mesin Turing adalah pengenal bahasa yang lebih kompleks, yang dalam
pengenalannya mesin ini dilengkapi dengan memori. Mesin Turing dapat mengenali
kalimat yang tidak dapat dikenali oleh FSM sekalipun. Mesin Turing adalah model
komputasi yang paling umum. Ia dapat melakukan pekerjaan apa saja yang dapat
dilaksanakan oleh komputer.
4|Page
dari suatu bahasa ke bahasa lain, tetapi juga berguna untuk studi bahasa
pemrograman.
String adalah barisan (sequence) yang disusun oleh simbol-simbol alfabet. Sebuah
string dengan panjang n (n ≥ 1) yang dibentuk dari alfabet A disusun oleh barisan n
simbol :
a1, a2,a3,…, an, ai A
Panjang string x ditulis dengan |x|. string kosong (null string atau empty sentence)
(biasanya dilanbangkan dengan ) adalah barisan simbol dengan panjang 0 dan tidak
berisi simbol apapun.
Jika A adalah alfabet, maka An menyatakan himpunan semua string dengan panjang
n yang dibentuk dari himpunan A.
A* adalah himpunan semua rangkaian simbol dari himpunan A yang terdiri dari 0
simbol (string kosong), satu simbol, dua simbol, tiga simbol, …, atau dinyatakan
sebagai :
A* = A0 ∪ A1 ∪ A2 ∪ A3 ∪ …
Contoh 1.1 : misalkan A = {0,1} adalah sebuah alfabet yang disusun oleh simbol 0
dan 1. Maka, A0 = {} = {∈}
A1 = {0,1}
A2 = {00, 01, 10, 11}
A3 = { 000, 001, 010, 011, 100, 101, 110, 111}
…
Kemudian,
A* = { A0 ∪ A1 ∪ A2 ∪ A3 ∪ …} = { ∈, 0,1,00,01,10,11,000,…}
A+ = { A1 ∪ A2 ∪ A3 ∪ …} = { 0,1,00,01,10,11,000,…}
5|Page
Misalkan A adalah himpunan semua huruf kapital dan huruf kecil didalam alfabet
latin, simbol angka (0,1,2, …, 9) ditambah dengan tanda baca (titik, koma, titik dua,
tanda seru, dan seterusnya), spasi, dan karakter khusus lainnya (#, &, %, dan
sterusnya). Dengan kata lain
A= {a,b,…, y, z, A, B, …, Y, Z,0, 1, 2, …, 9, ‘ ‘,., :, !, ?, #, %,…}
maka kalimat dalam Bahasa Indonesia seperti Siapa nama kamu, Dik ? Adalah
kalimat (atau string) didalam A*.
Begitu pula, setiap pernyataan (statement) di dalam bahasa pemrograman adalah
kalimat di dalam A*, jika A adalah himpunan karakter dari bahasa pemrograman
tersebut.
(keterangan : pada L4, ai berarti barisan i buah a. jadi, aicbi berarti kalimat yang
disusun oleh i buah a, diikuti c, diikuti dengan i buah b )
C. Tata Bahasa.
Jika diberikan spesifikasi suatu bahasa, ada dua masalah utama yang berkaitan
dengan bahasa tersebut [2]:
1. Bagaimana membangkitkan satu atau lebih kalimat didalam bahasa tersebut ?
→ Masalah pembangkitan (generation)
2. Bagaimana menentukan apakah suatu kalimat termasuk didalam bahasa tersebut
atau tidak?
→ Masalah pengenalan (recognition)
6|Page
Aturan yang digunakan untuk membangkitkan atau mengenali kalimat di dalam
suatu bahasa dinamakan tata bahasa (grammar).
Contoh 1.2 : Tata bahasa dibawah ini adalah sebagian dari tata bahasa untuk
membangkitkan atau mengenali suatu kalimat (sentence) di dalam bahasa Inggris[3] :
1. Sebuah sentence dibuat dari noun phrase diikuti dengan verb phrase, atau
2. Sebuah sentence dibentuk dari noun phrase diikuti oleh verb phrase dan noun
phrase;
3. Sebuah noun phrase dibentuk dari adjective diikuti dengan noun phrase, atau
4. Sebuah noun phrase dibentuk dari adjective diikuti dengan singular noun;
5. Sebuah verb phrase dibentuk dari singular verb diikuti dengan adverb, atau
6. Sebuah verb phrase dibentuk dari singular verb;
7. Sebuah adjective adalah the, atau
8. Sebuah adjective adalah a, atau
9. Sebuah adjective adalah little;
10. Sebuah singular noun adalah boy; atau
11. Sebuah singular noun adalah dog;
12. Sebuah singular verb adalah runs, atau
13. Sebuat singular verb adalah bites;
14. Sebuah adverb adalah quickly
Kita dapat menuliskan semua kaidah tata bahasa diatas secara ringkas sebagai
berikut:
<sentence> → <noun phrase> <verb phrase>
<sentence> → <noun phrase> <verb phrase> <noun phrase>
<noun phrase> → <adjective> <noun phrase>
<noun phrase> → <adjective> <singular noun>
<verb phrase> → <singular verb> <adverb>
<verb phrase> → <singular verb>
<adjective> → the
<adjective> → a
<adjective> → little
<singular noun> → boy
<singular noun> → dog
<singular noun> → runs
<singular noun> → bites
<adverb> → quickly
Tanda panah (→) pada kaidah diatas menyatakan bahwa item di sebelah kiri panah
dapat diganti dengan item di sebelah kanan panah.
Proses pembangkitan kalimat the little boy runs quickly dapat diturunklan sebagai
berikut :
<sentence> → <noun phrase> <verb phrase>
→ <adjective> <noun phrase> <verb phrase>
→ the <noun phrase><verb phrase>
→the <adjective> <singular noun> <verb phrase>
→ the little <singular noun> <verb phrase>
7|Page
→ the little boy <verb phrase>
→ the little boy <singular verb> <adverb>
→ the little boy runs <adverb>
→ the little boy runs rapidly
Proses pembangkitan kalimat the little boy runs quickly juga dapat digambarkan
dalam suatu diagram pohon – yang disebut pohon parsing – berikut :
<sentence>
>
little boy
a the boy
dog
Bahkan, kalimat yang tidak memiliki sense makna sekalipun dapat dibangkitkan,
meskipun secara sintaks ia benar, seperti :
8|Page
<sentence>
>
the boy
Penjelasan :
1. Simbol terminal di dalam T adalah simbol yang dapat digunakan membuat
kalimat/string di dalam bahasa itu. Simbol terminal biasanya dilambangkan
dengan huruf kecil seperti a,b,c, …
Contoh : T = { a,b,c}, T={0,1}
Pada contoh 1.2 diatas, T={a, the, dog, boy, little, runs, bites, quickly}
2. Simbol non-terminal di dalam N adalah lambing antara yang digunakan untuk
mendeskripsikan struktur kalimat. Simbol non-terminal biasanya dilambangkan
dengan huruf besar, seperti A, B, C,…
contoh : N = {S, A, B}
pada contoh 1.2 diatas N= {<sentence>, <verb phrase>, <noun phrase>}
{ <adjective>, <singular noun>, <singular verb>, < adverb> }
3. Produksi adlah kaidah/aturan tata bahasa yang mengatur cara pembentukan
kalimat didalam bahasa. Setiap aturan dituliskan dalam bentuk :
α→β
yang dlam hal ini, α dan β adalah string yang dibentuk dari himpunan T ∪ N, dan
α harus berisi paling sedikit satu suku non-terminal. Produksi menyatakan bahwa
string α dapat diubah menjadi β.
Contoh : P={S→aB, S→bA, A→a, A→aS, B→b, B→bS, B→aBB}
9|Page
Pada contoh 1.2 diatas. Sekumpulan aturan pembentukan kalimat dalam bahasa
Inggris merupakan aturan produksi.
4. Simbol awal adalah simbol non-terminal khusus yang mengawali pembangkitan
kalimat di dalam bahasa tersebut.
Contoh : pada aturan produksi pada penjelasan nomor 3 diatas, S adalah simbol
awal.
Bahasa yang dihasilkan oleh G ditulis sebagai L(G), yaitu himpunan string (kalimat)
yang dapat diturunkan dari simbol awal S dengan menerapkan aturan produksi yang
terdapat di dalam P.
Contoh 1.3 : Tinjau tata bahasa G = (T, N, P, S) dengan T= {a,b}, N= {S, A, B},
P={S→ABa, A→ BB, B→ ab, AB→b}. Di sini S, A, dan B adalah simbol terminal, a
dan b adalah terminal. Ada empat buah aturan produksi, yaitu S→ABa, A → BB,
B→ab dan AB→b. Simbol awal adalah S. String Aaba diturunkan sebagai berikut :
S ⇒ ABa
⇒ Aaba
Demikian juga, string abababa diturunkan sebagai berikut :
S ⇒ ABa
⇒ Aaba
⇒ BBaba
⇒ Bababa
⇒abababa
Contoh 1.4 : Tinjauan tata bahasa G = (T, N, P, S), dengan T= {a,b}, N= {S, A},
P={S→aA, S→b, A→aa}. Apakah L(G) dari tata bahasa G?
Dengan mencoba semua aturan produksi dari simbol awal S sebagai berikut :
(i) S ⇒ aA
⇒ aaa
(ii) S⇒b
Maka hanya ada dua string yang dapat dibangkitkan, yaitu b dan aaa, tidak ada yang
lain. Jadi, L(G) = {b, aaa}.
10 | P a g e
(i) S ⇒ 0
(ii) S ⇒ 11S
⇒ 110
(iii) S ⇒ 11S
⇒ 1111S
⇒ 11110
(iv) S ⇒ 11S
⇒ 1111S
⇒ 111111S
⇒ 1111110
dst.
Kita dapat melihat bahwa L(G) = {0, 110, 11110, 1111110, …} yaitu himpunan
semua string yang dimulai dengan segenap simbol 1 dan diakhiri dengan sebuah 0.
Contoh 1.6 : Tinjauan tata bahasa G = (T, N, P, S), dengan T= {a, b}, N={S},
P={S→aSb, S →ab}. Dengan menerapkan aturan-aturan produksi pertama n – 1 kali,
diikuti dengan penerapan aturan produksi kedua, kita memperoleh
S ⇒ aSb
⇒ aaSbb
⇒ aaaSbbb
⇒ a3 Sb3
⇒…
⇒ an-1Sbn-1
⇒ anbn
Jadi, L(G) = {aibi | i ≥ 1}.
Contoh 1.7 : Kita ingin membangun tata bahasa untuk bahasa L(G) = {aib2i | i ≥ 1.
Misalkan T={a,b}, N={S}. dan S adalah simbol awal. Aturan produksi yang dapat
kita buat adalah
S → aSbb
S → abb
Dengan demikian, string aaabbbbbb dapat diperoleh sebagai berikut :
S ⇒ aSbb ⇒ aaSbb ⇒ aaabbbbbb
Istilah
a. Simbol, Simbol adalah sebuah bentuk yang memiliki makna unik, misalnya
simbol ‘A’ dan simbol ‘B’ memiliki makna berbeda. Begitu juga simbol ‘*’ dan
‘+’.
b. Alfabet, Alfabet (dilambangkan dengan huruf kapital miring) adalah himpunan
berhingga dari simbol-simbol. Misalnya, V = {a, b, c} menyatakan bahwa ada
11 | P a g e
sebuah alfabet bernama V yang memiliki tiga buah simbol yaitu simbol ‘a’, ‘b’,
‘c’.
c. Kata, Kata adalah deretan simbol-simbol. Berikut adalah contoh-contoh kata :
abba, a12, *+(, 001. Harap diperhatikan bahwa kata bui tidak sama dengan iub.
Kata-kata seperti bab, aka, tutut, abba, 0110, *+++*, (())(()), dinamakan
palindrome.
d. Kata Kosong, Kata kosong, dilambangkan dengan adalah kata yang tidak
terdiri dari simbol apapun.
e. Himpunan Kata, Himpunan Kata adalah himpunan yang setiap anggotanya
adalah kata kosong atau kata yang simbol-simbol pembentuknya adalah anggota
dari alfabet tertentu. Sebagai contoh, misal terdapat V = {a, b, 1}. Maka
himpunan kata yang dihasilkan dari V, dilambangkan V* , adalah {, a, b, 1, aa,
ab, a1, ba, bb, b1, 1a, 1b, 11, aaa, aab, aa1, aba, abb, ab1, a1a, a1b, a11, …}.
Perlu diperhatikan bahwa jumlah anggota himpunan kata adalah tidak berhingga.
Dalam tulisan ini, kata dan kalimat mengandung pengertian yang sama sehingga
setiap kalimat dapat disebut kata, begitu juga sebaliknya.
Operasi
a. Panjang Kata, Jika X adalah sebuah kata, maka panjang kata X, dilambangkan
|X| adalah jumlah simbol yang membentuk kata X. Sebagai contoh, jika X = aba,
maka |X| = 3. Panjang dari sebuah kata kosong adalah 0.
b. Katenasi, Jika X dan Y adalah dua buah kata, maka katenasi dari kata X dan Y,
dilambangkan XY, adalah penulisan kata X diikuti oleh Y. Sebagai contoh, jika
X = aku, dan Y = ganteng, maka XY = akuganteng.
c. Pencerminan, Jika X adalah sebuah kata, maka pencerminan X akan
menghasilkan kata lain yang merupakan penulisan ulang kata X dalam urutan
terbalik. Sebagai contoh, jika X = abu, maka pencerminan X, dilambangkan X-1,
menghasilkan kata uba. Palindrome adalah kata X yang memiliki sifat X = X-1
d. Pengulangan, Jika X adalah sebuah kata, maka Xn menghasilkan kata lain yang
merupakan hasil penulisan ulang kata X sebanyak n kali (n = 0, 1, 2, 3, …).
Sebagai contoh, jika X = abu, maka X0 menghasilkan kata kosong, X1
menghasilkan abu, X2 menghasilkan abuabu, X3 menghasilkan abuabuabu, X4
menghasilkan abuabuabuabu, dan seterusnya.
12 | P a g e
c. Sebutkan 5 kalimat terpendek yang merupakan anggota dari L(G1) dan terangkan
mengapa kalimat-kalimat tersebut merupakan anggota dari L(G1)?
Jawab :
a karena a merupakan anggota dari Vt* dan terdapat langkah penurunan sebagai
berikut : X => aY => a.
b karena b merupakan anggota dari Vt* dan terdapat langkah penurunan sebagai
berikut : X => bZ => b.
bbb karena bbb merupakan anggota dari Vt* dan terdapat langkah penurunan
sebagai berikut : X => bZ => bbZ => bbbZ => bbb.
d. Buatlah sebuah tata bahasa yang menghasilkan himpunan kata yang setiap
anggotanya memenuhi kriteria sebagai berikut : jika simbol pertama kata tersebut
adalah a maka simbol terakhirnya b dan jika simbol pertama kata tersebut adalah
b maka simbol terakhirnya adalah a.
Jawab :
G2 = (Vn, Vt, P, S)
Vn = {X, Y, Z)
Vt = {a,b}
S=X
P adalah sebagai berikut :
- X aYb | bZa
- Y aY | bY |
- Z aZ | bZ |
2.7. Ringkasan
Bahasa yang kaidah sintaksnya dapat dspesifikasikan secara matematis dengan
baik disebut bahasa formal. Jadi, bahasa formal dapat didefinisikan secara abstraks
sebagai “sistem matematik”. Kaidah sintaks dalam teori bahasa formal tidak hanya
bermanfaat untuk studi linguistik bahasa alami – seperti penterjemah secara otomatis
dari suatu bahasa ke bahasa lain, tetapi juga berguna untuk studi bahasa
pemrograman.
Mesin Turing adalah pengenal bahasa yang lebih kompleks, yang dalam
pengenalannya mesin ini dilengkapi dengan memori. Mesin Turing dapat mengenali
13 | P a g e
kalimat yang tidak dapat dikenali oleh FSM sekalipun. Mesin Turing adalah model
komputasi yang paling umum. Ia dapat melakukan pekerjaan apa saja yang dapat
dilaksanakan oleh komputer.
Tata bahasa adalah pasangan 4 komponen yang terdiri dari alfabet simbol non
terminal, alfabet simbol terminal, simbol awal, dan himpunan aturan produksi.
Sebuah kalimat dikatakan dapat dibangkitkan dari tata bahasa tertentu bila kalimat
tersebut seluruhnya terdiri dari simbol terminal dan dapat diturunkan dari simbol
awal tata bahasa tersebut.
14 | P a g e