TUGAS MANDIRI
“ Teori Bahasa dan Otomata “
Nama Mahasiswa : Donny Hendri Wirawan
NPM : 130210259
Kode Kelas : 142-TI012-M1
Dosen : Sestri Novia Rizki, M. Kom
PROGRAM STUDI TEKNIK INFORMATIKA UNIVERSITAS PUTERA BATAM
KATA PENGANTAR
Puji syukur saya panjatkan ke Hadirat Tuhan Yang Maha Esa, karena berkat Rahmat dan Karunia-Nya sehingga saya dapat menyusun makalah “ Teori Bahasa dan Otomata ” ini dengan baik dan tepat pada waktunya.
Melalui kata pengantar ini saya lebih dahulu meminta maaf dan memohon permakluman bila mana isi makalah ini ada kekurangan dan ada tulisan yang saya buat kurang tepat.
Saya menyadari bahwa masih banyak kekurangan yang mendasar pada makalah ini. Oleh karena itu kami mengundang pembaca untuk memberikan saran serta kritik. Kritik konstruktif dari pembaca sangat saya harapkan untuk penyempurnaan makalah selanjutnya.
Akhir kata semoga makalah ini dapat memberikan manfaat bagi kita semua.
Batam, Juni 2015
DAFTAR ISI
1.2.3 MAR dan Memori...9
1.2.4 Register Data Memori...10
1.2.5 Register Instruksi (IR)...11
1.2.6 Pengendali-Pengurut...11
1.2.7 Akumulator...11
1.2.8 ALU dan Bendera...11
1.2.9 Register TMP, Register B, dan Register C...12
1.2.10 Bandar Keluaran...12
1.3 INSTRUKSI ACUAN MEMORI...12
1.3.1 LDA dan STA...13
1.3.2 MVI...13
1.3.3 Kode-kode Operasi...14
1.4 INSTRUKSI-INSTRUKSI REGISTER...16
1.4.1 MOV...16
1.4.2 ADD dan SUB...17
1.4.3 INR dan DCR...17
1.5 INSTRUKSI JUMP DAN CALL...19
1.5.1 JMP...20
1.5.2 JM...20
1.5.3 JZ...21
1.5.4 JNZ...21
1.5.5 CALL dan RET...22
1.6 INSTRUKSI LOGIKA...23
1.7 INSTRUKSI-INSTRUKSI YANG LAIN...25
1.8.3 Lompatan Bersyarat...31
1.8.4 Modus Pengalamatan...31
1.8.5 Byte...32
BAB III PENUTUP...44
BAB 13
Pengujian Regularitas Dan Algoritma Penyelesaian 1. Teorema Myhill-Nerode
Teorema:
• Bahasa di V* adalah regular jika dan hanya jika himpunan kelas-kelas ekivalen dari relasi IL adalah berhingga.
• L adalah nonregular jika dan hanya jika terdapat subset tak hingga dari V*, sembarang dua elemen dapat dibedakan(distinguishable) 2. Pumping Lemma untuk Himpunan Regular
Menggunakan keberhinggaan himpunan state FA utk menurunkan properti yg common semua bahasa regular. Ini akan menyediakan teknik lain utk menunjukkan bahasa bukan regular karena jika properti
dipakai bersama oleh semua bahasa regular dan bahasa2x tertentu dpt ditunjukkan tdk mempunyai properti itu, maka bahasa-bahasa ini bukan regular.
3. Isu –Isu Pada Himpunan Regular
• FA merupakan langkah pertama menuju model komputasi general. FA hanya model komputasi sederhana. FA menerima masukan dan menghasilkan keluaran berbentuk “YA” dan “TIDAK” dalam arti sting masukan bisa atau tidak bisa menyebabkan FA berakhir di state akhir. Persoalan yg Ya atau Tidak seperti : “diberikan string x
beralphabet a dan b, apakah x berisi 2 kemunculan atau lebih dari string baa” atau “diberikan string beralphabet 0 dan 1 yaitu representasi biner dari bil. Asli n, apakah n dpt dibagi dgn pertanyaan2x tsb adlah instan dari kelas persoalan.
BAB 14
Terapan Ekspresi Regular Penerapan Ekspresi Regular
Sebuah bahasa dinyatakan regular jika terdapat finite state automata yang dapat menerimanya. Bahasa-bahasa yang diterima oleh suatu finite state automata bisa dinyatakan secara sederhana dengan ekspresi regular (regular expression).
Ekspresi regular dapat ditemukan di beragam aplikasi, antara lain:
1. Bahasa scripting, termasuk Perl, Tcl, awk, Phyton dsb. 2. Editor, termasuk Emacs, vi, dsb
3. Lingkungan pemrograman
1. Utilitas Grep
• Global Regular Expression Parser (GREP)
Adalah utilitas utk mencari dan menampilkan baris-baris yg berisi pola yg dispesifikasikan.
• Utilitas grep merupakan kakas standar sistem UNIX untuk
administrasi sistem dan pengembangan PL yg melibatkan pencarian string-string tertentu di file2x.
• Utilitas jg disertai dikakas pengembangan seperti turbo pascal utk mengetahui kemunculan string di kumpulan file.
Penggunaan Grep di Sistem UNIX
• Terdapat 2 cara utk menggunakan grep, yaitu : 1. Untuk menyaring keluaran dari perintah lain.
sintaks umum perintah : <command>|grep <pattern>.
misal, kita ingin melihat sistem proses yg sedang aktif di sistem, kita dpt memberi perintah berikut : $ ps –a | grep R.
pada perintah ini, grep hanya melewatkan baris2x berisi pola satu huruf tunggal R.
R=Resting
2. Untuk mencari baris-baris yg berisi pola di file tertentu.
Sintaks perintah grep <pattern> <filename> harus dilakukan secara hati-hati karena sering salah yaitu menspesifikasi nama file lebih dulu, baru pola string yg dicari. Selain itu kita harus mencari pola yg benar.
Pencarian String di file dengan Grep
• Mencari teks file : program grep, egrep dan fgrep.
• Program ini bekerja dgn mencari baris di file. Kita dpt mencari di satu file atau sejumlah file.
• Egrep menggunakan sintaks sedikit berbeda dalam pencocokan pola, sedang fgrep menggunakan fixed string.
Rincian Utilitas grep, egrep dan fgrep
Sintaks :
grep [-[[AB]num][-[CEFGVBchilnsvwx]][-e] patern j – ffile ][files...] Grep mencari di file masukan baris-baris yg berisi pola yg dicari. Secara default, grep mencerak baris-baris yg ditemukan. Terdapat 3 varian utama grep, dikendalikan dengan option :
-G = menginterpretasikan pola pattern sbg ER dasar. default -E = menginterpretasikan pola pattern sbg extendedt ER
-F = menginterpretasikan pola pattern sbg daftar fixed string, dipisahkan baris-baris baru yg akan dicari.
• Fasilitas ER, seperti : Perl, PHP, JavaScript dan Java. 1. Notasi ekspresi regular di bahasa PHP
=> string yg dipisahkan karakter | = logical OR
2. Tiap “ atom” yg dicari dpt diikuti karakter yg memodifikasi jumlah “atom” yg akan ditemukan berurutan.
• Karakter asterik(*) , menyatakan “atom” sembarang jumlah “atom”
• + = sedikitnya satu kali
• ? = sekali atau tidak sama sekali
• { } = jumlah secara pasti
• Tanda . = menemukan sembarang karakter
• ^ = menemukan awal string
• $ = menemukan akhir string
BAB 15 LEX – FLEX
• Pembuatan lexical analyzer dengan pendekatan dikodekan secara langsung di program kompilator mempunyai keunggulan efisiensi yg tinggi, namun LA sulit dipelihara.
• Salah satu kakas yg terkenal adalah Lex.
• Lex digunakan secara luas utk menspesifikasi LA beragam bahasa.
• Program Lex dpt menerjemahkan deskripsi kumpulan token menjadi table driven lexical Analyzer.
• Program Lex menggunakan teori bahasa utk menspesifikasikan himpunan token lexical analyzer .
• Leksik-leksik yg berkorespondensi dgn token semuanya didefenisikan sbg serangkaian operasi himpunan.
• Program kemudian menerjemahkan spesifikasi bahasa itu menjadi kode sumber C utk program komputer yg mengenali string2x di bahasa itu.
• Spesifikasi untuk lex menggunakan ER.
• ER adalah WFF(well form formula) pada gabungan(union), penyambungan(Concatenation), dan kleene Closure.
1. Lexical Analyzer dan Token
• LA disebut scanner/tokenizer, menerjemahkan masukan menjadi bentuk yg lebih berguna untuk tahap-tahap kompilasi berikutnya.
• LA merupakan antarmuka antara kode sumber program dan
penganalisis sintaks(parser).
• Token = scanner yg melakukan pemeriksaan karakter per karakter pada teks masukan, memecah program sumber menjadi beberapa bagian.
• Token merupakan unit / elemen dasar bahasa komputer (yg tidak dpt terbagi lagi).
• Parser berfungsi menghasilkan pohon sintaks program yg didefenisikan grammar.
• Simbol terminal pohon sintaks adalah token-token yg dihasilkan scanner.
Gbr : Hubungan scanner dan parser
3. Interaksi Scanner-Parser lebih rumit
• Contoh :
- bahasa Pascal: type
Tday = 0..6; - bahasa C :
typedef int Tday;
LA harus menganggap string TDay sbg token bertype bukan identifier.
Parser memasukkan TDay ke tabel simbol,
mengidentifikasinya sbg type atau typedef, sehingga LA dpt memeriksa tabel simbol utk menentukan apakah lexeme adalah tipe token atau identifier.
4. Tugas-tugas Lexical Analyser
1. Konversi Program Sumber menjadi barisan Token
Mengubah program sumber barisan byte/karakter menjadi barisan token.
2. Menangani Kerumitan Sistem Masukan/Keluaran
=> Mengisolasi perangkat masukan/keluaran agar tdk terlihat oleh parser dan komponen2x kompilator lain.
5. Tugas-tugas Tambahan L.A.
2. Konversi literal/konstanta numerik
6. Pertimbangan LA dan Parser
• Pemisahan tahap analisis menjadi LA dan Parser mempunyai alasan2x sbb:
1. Rancangan yg lebih sederhana 2. Peningkatan efisiensi kompilator 3. Peningkatan portabilitas kompilator 7. Tahap Pelaksanaan LA
• Tahap pelaksanaan scanner
1. pada single on pass:
=> terjadi interaksi scanner dan parser. Scanner dipanggil parser saat parser memerlukan token berikutnya.
2. pada separate pass:
=> scanner memroses secara terpisah, dilakukan sebelum parsing. Hasil scanner disimpan dlm file. Dari file tsb, parsing melakukan kegiatannya.
8. Implementasi L.A.
• Pengenalan Token:
1. scanner harus dpt mengenali token
2. terlebih dulu dideskripsikan token2x yg harus dikenali.
• Cara mendiskripsikan token2x, yaitu : 1. Menggunakan regular grammar
kelemahannya : RG menspesifikasi token berbentuk pembangkitnya, sedangkan scanner perlu bentuk pengenalan.
2. Menggunakan ekspresi grammar
3. Model matematis yg dpt memodelkan pengenalan adalah
Finite State Acceptor(FSA) /FA.
9. SPESIFIKASI BAHASA
• LA akan mengenali keyword if, then, else juga leksik yg ditandai sbg relop, id dan num.
• Sebagai tambahan,kita mengasumsikan leksik2x dipisahkan white space(ws) yg berisi untaian blank, tab dan newline.
• LA akan menghilangkan/membuang white space.
Hal ini dilakukan dgn membandingkan string terhadap defenisi regular ws sbb:
delim blank|tab|newline ws delim +
• LEX digunkan utk menspesifikasi bahasa menggunakan ER.
• Cara penggunaan Lex :
1. spesifikasi LA di persiapkan
2. setelah menjalankan lex compiler dgn masukan lex.spec, dihasilkan lex.yy.c. File lex.yy.c berisi representasi tabulasi diagram transisi yg dibangun dari ER lex.spec adalah kode C dan langsung di cantumkan di lex.yy.c
3. kemudian lex.yy.c dikompilasi dgn c compiler sehingga menghasilkan program objek a.out yg merupakan LA yg
mentranformasi stream masukan menjadi barisan token. 11. Spesifikasi Lex
• Program Lex bersi 3 bagian, yaitu : Deklarasi-deklarasi
%%
Aturan-aturan penerjemahan %%
Prosedure-prosedure tambahan
• Bagian deklarasi berisi deklarasi variabel, manifestasi konstanta dan defenisi regular.
• Defenisi regular adalah kalimat-kalimat serupa dengan ER.
12. PEMAMFAATAN PATTERN-ACTION
• Lex merupakan salah satu bahasa aksi-pola utk membangun LA.
• Pada Lex, pola2x string dispesifikasi dgn ER dan Lex akan menghasilkan finite-automaton recognizer yg efisien utk ER.
• Bahasa AWK menggunakan ER utk memilih baris-baris masukan yg
diolah dan shell di sistem UNIX memungkinkan pemakai mengacu sekumpulan nama file dgn menulis dlm ER.
• Perintah rm*.o berarti memerintahkan menghapus semua file yg namanya diakhiri dengan “.o”.
BAB 16
EKSPRESI REGULAR DI BAHASA JAVA
Ketentuan ER di Java:
1. Literal 2. Wilcard
3. Kualifier: * dan + 4. Pengelompokan 5. Kelas-kelas karakter
6. Kelas-kelas karakter yg sudah didefenisi 7. Sekuensing
8. Pencocok batas
Literal
• Adalah sembarang karakter di himpunan karakter yg tidak memiliki arti khusus di dlm ER. Literal di ER berarti hanya cocok dgn
karakter itu sendiri.
• Contoh :
– Ekspresi regular : a
– String besar/target : a
– String yg ditemukan adalah : a
– Ekspresi regular : b
– String besar/target : a
– String yg ditemukan adalah : [tidak ada] Wilcard
• Karakter . Mempunyai arti dapat cocok dgn sembarang karakter tunggal, kecuali ganti baris (newline). Ganti baris juga dpt sbg termasuk bila flag DOTALL dispesifikasikan.
• Contoh :
– Ekspresi regular : .
– String besar/target : a
– String yg ditemukan adalah : a
– Ekspresi regular : .
– String besar/target : ab
– String yg ditemukan adalah : a (atau b jika evaluasi terjadi dari kanan ke kiri)
Kualifier * dan +
• Karakter + adalah cocok untuk satu kopi atau lebih. Sedangkan karakter * dapat cocok dgn string kosong atau lebih.
• Contoh :
– Ekspresi regular : a*
– String besar/target : aaa
– String yg ditemukan adalah : aaa
– Ekspresi regular : a*b*
– String besar/target : aaa
– String yg ditemukan adalah : aaa
Pengelompokan
• Pasangan kurung digunakan utk menyatakan subekspresi regularsbg satu unit. Dgn demikian dapat dikenai suatu kualifier sbg satu unit.
Kelas-kelas karakter
• Kelas karakter mendefinisikan sekelompok karakter individu.
• Contoh :
– Ekspresi regular : [abc]
– Ekspresi regular : [abc]+
– Arti : mencari string satu karakter atau lebih, a,b atau c
– Ekspresi regular : [a-z]
– Arti : mencari string a,b,...atau z, semua karakter dari sampai z
Sekuensing
• Penyambungan 2 ER menciptakan ekspresi susunan. String harus cocok dgn ekspresi pertama, dan kemudian segera harus cocok ekspresi kedua, dst.
•
Pencocok Batas
• Simbol spesial ^ dan $ digunakan utk menyatakan posisi dalam hubungan dgn baris teks yg dievaluasi.
Pencocokan tidak Tamak.
• Semua ER diatas adalah tamak, dalam arti berusaha menemukan sebanyak mungkin karakter yg memenuhi syarat.
Paket java.util.regex
• Fasilitas ER di defenisikan 3 kelas, yaitu : 1. Pattern, mempresentasikan ER
2. Matcher, menemukan pattern pd string yg dimasukkan 3. Pattern Syntax Expression-Exception, yg dilemparkan saat berusaha mengkompilasi ER.
Program java terdiri 3 kelas
1. LexerRule, satu aturan tunggal dari lexer
2. LexerToken, satu token tunggal dari stream masukan yg memenuhi LexerRule tertentu.
3. Lexer, program utama yg melakukan parse terhadap file spesifikasi dan melakukan analisis leksikal terhadap file masukan.
BAB 17
BAB III PENUTUP
DAFTAR PUSTAKA
http://www.monsoonacademy.com/2980-Sejarah-dan-Perkembangan-SAP.article http://ryanwihardi.blogspot.com/
http://rahmaraniy.blogspot.com/2014/11/makalah-organisasi-dan-arsitektur.html
http://andi-granderist.blogspot.com/2012/10/tugas-organisasi-arsitektur-komputer_9734.html