Thursday, 8 April 2021

grammar comsky

Grammar G1 dengan Q1 = {S → aB, B → bB, B → b}

Penjelasan :

Ruas kiri semua produksinya terdiri dari sebuah VN, maka, G1 kemungkinan tipe CFG atau RG.
Selanjutnya, karena semua ruas kanannya terdiri dari sebuah VT atau string VT VN, maka G1 adalah RG.

Grammar G2 dengan Q2 = {S → Ba, B → Bb, B → b}

Penjelasan :

Grammar G3 dengan Q3 = {S → Ba, B → bB, B → b}

Penjelasan :

Ruas kiri semua produksinya terdiri dari sebuah VN, maka, G3 kemungkinan adalah tipe CFG atau RG.
Selanjutnya, karena ruas kanannya mengandung string VN VT (Ba), maka, G3 bukan RG. Dengan kata lain G3 adalah CFG.

Grammar G4 dengan Q4 = {S → aAb, B → aB}

Penjelasan :

Ruas kiri semua produksinya terdiri dari sebuah VN, maka, G4 kemungkinan tipe CFG atau RG.Selanjutnya, karena ruas kanannya mengandung string yang panjangnya lebih dari 2 (yaitu aAb) maka, G4 bukan RG. Dengan kata lain, G4 adalah CFG.

Grammar G5 dengan Q5 = {S → aA, B → aB, aAb → aBCb}

Penjelasan :

Ruas kirinya mengandung string yang panjangnya lebih dari 1 (yaitu aAb) maka G5 kemungkinan tipe CSG atau UG.Selanjutnya, karena semua ruas kirinya lebih pendek atau sama dengan ruas kanannya maka G5 adalah CSG.

Grammar G6 dengan Q6 = {aS → aA, B → ab, SAc → bc}
Penjelasan :

Ruas kirinya mengandung string yang panjangnya lebih dari 1 (yaitu aAb) maka G6 kemungkinan tipe CSG atau UG.Selanjutnya, karena semua ruas kirinya yang lebih panjang daripada ruas kanannya (yaitu SAc), maka G6 adalah UG.

Sumber : link

Friday, 26 March 2021

 

Teknik Kompilasi : PERBEDAAN DFA dan NFA

Finite Automata adalah mesin automata dari suatu Bahasa regular. Finite Automata memiliki jumlah state yang banyaknya berhingga dan dapat berpindah-pindah dari suate state ke state yang lainnya. Finite Automata dibagi menjadi Deterministic Finite Automata (DFA) dan Non Deterministic Finite Automata (NFA).

Berikut contoh dari Deterministic Finite Automata :

Berikut contoh dari Non Deterministic Finite Automata (NFA) :

Berdasarkan contoh Deterministic Finite Automata (DFA) dan Non Deterministic Finite Automata (NFA) yang ada di atas, terlihat perbedaan antara DFA dan NFA yaitu :

  • Pada Deterministic Finite Automata, jika suatu state diberi inputan maka state tersebut akan selalu tepat menuju satu state
  • Pada Non Deterministic Finite Automata, jika suatu state diberi inputan maka mungkin saja bisa menuju ke beberapa state berikutnya. Dapat dilihat di S0, jika diberi inputan b bisa menuju ke S1 dan S2.

Tuesday, 23 March 2021

Rangkuman Analisis Leksikal

 Analisis Leksikal

Analisis leksikal merupakan antarmuka antara kode program sumber dan analisis sintatik (parser). Scanner melakukan pemeriksaan karakter per karakter pada teks masukan, memecah sumber program menjadi bagian-bagian disebut token. Analisis leksikal mengerjakan pengelompokkan urutan-urutan karakter ke dalam komponen pokok yaitu identifier, delimeter, simbol-simbol operator, angka, keyword, noise word, blank, komentar, dan seterusnya menghasilkan suatu token leksikal yang akan digunakan pada analisis semantik.

Model dasar untuk membentuk suatu analisis leksikal adalah Finite-State Automata, 2 aspek penting pembuatan analisis leksikal adalah :

Menentukan token-token bahasa.
Mengenali token-token bahasa dari program sumber.
Tahap-tahap pelaksanaan analisis leksikal
1. Pada single one pass
Terjadi interaksi antara scanner dan parser, scanner dipanggil saat parser memerlukan token berikutnya. Pendekatan ini lebih baik karena bentuk internal program sumber yang lengkap tidak perlu dibangun dan disimpan di memori sebelum parsing dimulai.
2. Pada separate pass
Scanner memproses secara terpisah, dilakukan sebelum parsing.Hasil scanner disimpan dalam file. Dari file tersebut, parsing melakukan kegiatannya. Scanner mengirim niulai-nilai integer yang mempresentasikan bentuk internal token, bukan nilai-nilai string. Keunggulan cara ini adalah ukurannya kecil dan tetap.

Input Buffering
Perancangan analisis leksikal seharusnya dapat membuat buffering masukkan yang membantu mempercepat proses pembacaan dari file serta mempunyai fleksibelitas yang tinggi agar analisis leksikal tidak bergantung platform sehingga mempunyai portabilitas yang tinggi.

Ekspresi Reguler

Bahasa reguler dapat dinyatakan sebagai ekspresi reguler dengan menggunakan 3 operator : concate, alternate, dan slosure.

Berikut ini beberapa perbedaan DFA dan NFA, dengan disertai pengertian dan contoh dari masing-masing DFA dan NFA.



Deterministic Finite Automata (DFA)

Deterministic Finite Automata (DFA) menerima masukan (input) yang hanya memiliki 1 busur keluar.



Deterministic Finite Automata (DFA) sering dikenal juga sebagai Deterministic Finite-State Machine (DFSM) dan Deterministic Finite-State Automaton (DFSA).



DFA diperkenalkan oleh Warren McCulloch dan Walter Pitts sebagai peneliti pertama yang memperkenalkan konsep yang mirip dengan finite automata di tahun 1943.



DFA sendiri merupakan finite automata dengan memiliki 5 tuple yang direpresentasikan sebagai berikut:



Q, himpunan state, contohnya {q0, q1, q2}

Σ, input alphabet, contohnya {a, b}

δ, fungsi transisi

q0, state awal

F, state akhir

Contoh DFA

Q = {q0, q1, q2}

∑ = {0, 1}

q0 = {q0}

F = {q2}

Non-Deterministic Finite Automata (NFA)

Non-Deterministic Finite Automata (NFA) menerima masukan (input) dengan memiliki lebih dari 1 busur keluar atau bahkan tidak memiliki busur keluar.



Non-Deterministic Finite Automata (NFA) sering dikenal juga sebagai Non-Deterministic Finite-State Machine (NFSM) dan Non-Deterministic Finite-State Automaton (NFSA).



NFA diperkenalkan pada tahun 1959 oleh Michael O. Rabin dan Dana Scott.



NFA sendiri merupakan finite automata dengan memiliki 5 tuple yang direpresentasikan sebagai berikut:



Q, himpunan state, contohnya {q0, q1, q2}

Σ, input alphabet, contohnya {a, b}

δ, fungsi transisi

q0, state awal

F, state akhir

Contoh NFA

Q = {q0, q1, q2}

∑ = {0, 1}

q0 = {q0}

F = {q2}

Monday, 15 March 2021

TRANSLATOR

 TRANSLATOR

Translator adalah jenis profesi yang bisa dijadikan pilihan buat kamu yang memiliki kemampuan menggunakan dua bahasa atau lebih.

Profesi di bidang penerjemahan yang satu ini juga cukup menjanjikan dan selalu dibutuhkan.

Bahkan, translator menjadi salah satu profesi yang diincar oleh para lulusan sastra Inggris atau bahasa asing.

Seperti kita tau, sekarang ini ada banyak sekali bahasa di dunia. Namun, belum tentu semua bahasa tersebut dapat kita kuasai.

Nah, untuk memudahkan dalam memahami berbagai bahasa asing itu, kini sudah hadir situs translator (penerjemah) di internet, Hanya dengan mengakses situs terjemahan, kita tidak perlu lagi repot membuka kamus untuk menerjemahkan kata per kata dari bahasa asing.

 berikut ini beberapa situs penerjemah terbaik dan akurat yang bisa kamu akses:

1. Google Translate



Friday, 19 July 2019

Aplikasi Sederhana Menggunakan Netbeans & MYSQL

Aplikasi berikut adalah aplikasi sederhana yg dibuat dengan Netbeans dan bisa di konek dengan mysql.

Berikut adalah Sreen Shoot hasilnya :








Source Code :

package tugas;
import java.sql.*;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JOptionPane;
/**
 *
 *
 */
public class hotel extends javax.swing.JFrame {
int harga,lama,biaya,bayar;
Connection db;
Statement s;
ResultSet r;
String nama,kode,tipe,Hkamar,Lama,Fasilitas,tgl;
int f,total,v,a;
    /**
     * Creates new form hotel
     */
    public hotel() {
        initComponents();
    }

    void koneksi() throws SQLException{
        db = DriverManager.getConnection("jdbc:mysql://localhost/tugas","root","");
        //s = db.createStatement();
        String query = "insert into data(nama,kode,tipe,tanggal,lama,fasilitas) values ('"+nama+"','"+kode+"','"+tipe+"','"+tgl+"','"+lama+"','"+Fasilitas+"')";
        PreparedStatement d = db.prepareStatement (query);
        d.execute();
        JOptionPane.showMessageDialog(null,"Data di simpan","Pesan",JOptionPane.INFORMATION_MESSAGE);

    }
    void tanggal(){
        Date d = new Date();
         SimpleDateFormat sdf = new SimpleDateFormat("E dd-MM-yyyy");
     tgl = sdf.format(d);
     jTanggal.setText(tgl);
    }

    void bayar() throws SQLException{

        nama = (String)jNama.getText();
        tgl = (String) jTanggal.getText();
        Lama = (String)jLama.getText();
        if(jcKode.getSelectedItem().equals("01TPLP")){
            kode = "01TPLP";
        }else if(jcKode.getSelectedItem().equals("02TPLE")){
            kode = "02TPLE";
        }else if(jcKode.getSelectedItem().equals("03TPLA")){
            kode = "03TPLA";
        }else if(jcKode.getSelectedItem().equals("04TPLS")){
            kode = "04TPLS";
        }

    if(jrMawar.isSelected()){
        tipe = "Mawar";
    }else if(jrTulip.isSelected()){
        tipe = "Tulip";
    }else if(jrBugenvil.isSelected()){
        tipe ="Bugenvil";
    }

    if(jTv.isSelected()){
        Fasilitas = "Televisi";
    }else if(jWf.isSelected()){
        Fasilitas = "Wifi";
    }
    koneksi();
    total = Integer.parseInt(jTotal.getText());
    v = Integer.parseInt(jBayar.getText());
    a = v - total;
    jKembali.setText(""+a);

    }
    void kamar(){
    if(jrMawar.isSelected()){
        harga = 300000;
    }else if(jrTulip.isSelected()){
        harga = 500000;
    }else if(jrBugenvil.isSelected()){
        harga = 1000000;
    }
    jHargakamar.setText(""+harga);
}
private void jTvActionPerformed(java.awt.event.ActionEvent evt) {
        // TODO add your handling code here:
        if (jTv.isSelected()){
            jTelevisi.setText(""+100000);
            jWifi.setText("");
            jWf.setSelected(false);
            jFasilitas.setText("Televisi");
        }else{
            jTelevisi.setText("");
            jFasilitas.setText("");
        }
    }
private void jWfActionPerformed(java.awt.event.ActionEvent evt) {
        // TODO add your handling code here:
        if (jWf.isSelected()){
            jWifi.setText(""+150000);
            jTelevisi.setText("");
            jTv.setSelected(false);
            jFasilitas.setText("Wifi");
        }else{
            jWifi.setText("");
            jFasilitas.setText("");
        }
    }
private void jLamaActionPerformed(java.awt.event.ActionEvent evt) {
        // TODO add your handling code here:
        harga = Integer.parseInt(jHargakamar.getText());
        lama = Integer.parseInt(jLama.getText());
        biaya = harga * lama ;
        jBiaya.setText(""+biaya);

    }
private void jbHitungActionPerformed(java.awt.event.ActionEvent evt) {
        // TODO add your handling code here:
        harga = Integer.parseInt(jBiaya.getText());
        if (jWf.isSelected()){
          f = 150000;
        }else if(jTv.isSelected()){
            f = 100000;
        }
        bayar = harga + f;
        jTotal.setText(""+bayar);
    }
private void jbBayarActionPerformed(java.awt.event.ActionEvent evt) {
    try {
        // TODO add your handling code here:
        bayar();
    } catch (SQLException ex) {
        Logger.getLogger(hotel.class.getName()).log(Level.SEVERE, null, ex);
    }
    }
private void jbKeluarActionPerformed(java.awt.event.ActionEvent evt) {
        // TODO add your handling code here:
        hotel2 b = new hotel2();
        b.setVisible(true);
        this.dispose();
    }.

Semoga Bermanfaat ^^.