0. Definisi Mode Interpreter:
Diberi bahasa, tentukan representasi tata bahasanya, dan tentukan seorang penerjemah yang menggunakan representasi untuk menafsirkan kalimat dalam bahasa. Milik mode perilaku.
Mode interpreter digunakan sangat sedikit dalam pengembangan sistem aktual karena dapat menyebabkan masalah seperti efisiensi, kinerja, dan pemeliharaan.
Diagram kelas umum dari mode interpreter ditunjukkan pada gambar.
1. Keuntungan dari Mode Interpreter
Interpreter adalah alat analisis sintaks sederhana. Keuntungannya yang paling menonjol adalah ekspansi. Memodifikasi aturan sintaks hanya untuk memodifikasi ekspresi non-terminal yang sesuai. Jika Anda memperluas sintaks, Anda hanya perlu menambahkan kelas non-terminal.
2. Kerugian mode interpreter
Pola interpreter akan menyebabkan ekspansi kelas: Setiap sintaks perlu menghasilkan ekspresi non-terminal. Ketika aturan sintaks relatif kompleks, sejumlah besar file kelas dapat dihasilkan, yang membawa banyak masalah untuk pemeliharaan.
Pola interpreter mengadopsi metode panggilan rekursif: Setiap ekspresi non-terminal hanya peduli dengan ekspresi yang terkait dengan dirinya sendiri. Setiap ekspresi perlu mengetahui hasil akhir dan harus tidak dilapisi lapisan demi lapis. Apakah itu bahasa yang berorientasi pada proses atau bahasa yang berorientasi objek, rekursi digunakan dalam kondisi yang diperlukan, yang mengarah pada debugging yang sangat kompleks. Pikirkan tentang hal ini, jika kita ingin memecahkan masalah sintaks, apakah kita perlu men -debug satu per satu, sampai unit sintaks terkecil?
Masalah Efisiensi: Mode interpreter menggunakan banyak loop dan rekursi, efisiensi adalah masalah yang tidak dapat diabaikan, terutama ketika digunakan untuk mengurai sintaks yang kompleks dan panjang. Efisiensi tidak tertahankan.
3. Gunakan skenario mode interpreter
Masalah berulang dapat digunakan dengan mode interpreter: misalnya, beberapa server aplikasi menghasilkan sejumlah besar log setiap hari, dan file log perlu dianalisis dan diproses. Karena format log dari setiap server berbeda, elemen data sama. Menurut penerjemah, ekspresi Terminator adalah sama, tetapi ekspresi non-terminator perlu diformulasikan. Dalam hal ini, masalahnya dapat diselesaikan sekali dan untuk semua melalui program.
Skenario di mana sintaks sederhana perlu dijelaskan: Mengapa sederhana? Lihatlah ekspresi non-terminal. Semakin banyak aturan tata bahasa, semakin tinggi kompleksitas, dan panggilan rekursif diperlukan di antara kelas (lihat tumpukan dalam contoh kami), yang umumnya tidak rumit. Pikirkan tentang hal ini, kesabaran dan kepercayaan diri seperti apa yang Anda butuhkan untuk memecahkan masalah saat memanggil beberapa kelas. Oleh karena itu, mode interpreter umumnya digunakan untuk menguraikan set karakter standar komparatif, seperti analisis sintaks SQL, tetapi bagian ini secara bertahap digantikan oleh alat khusus. Di beberapa lingkungan bisnis khusus, model interpreter juga akan digunakan. Contoh yang baru saja kami lakukan adalah lingkungan bisnis, dan ada banyak contoh operasi model sekarang. Banyak lembaga komersial dapat menyediakan sejumlah besar data untuk dianalisis.
4. Contoh sederhana
/ *** mendeklarasikan operasi interpretasi abstrak*/ interpreter antarmuka publik {public void interpret (konteks konteks); // Faktanya, mungkin ada tipe yang dikembalikan untuk menentukan objek data yang ditafsirkan} kelas publik XMLSAXInterPreter mengimplementasikan interpreter {@Override public void interpretasi (konteks konteks) {System.out.println ("XML Sax Interpreter:" + Context.getData ()); }} kelas publik xmldominterpreter mengimplementasikan interpreter {@Override public void interpret (konteks konteks) {System.out.println ("xml dom interpreter:" + context.getData ()); }} / *** berisi beberapa informasi di luar konteks interpreter* / kelas publik {data string pribadi; Public String getData () {return data; } public void setData (string data) {this.data = data; }} tes kelas publik {public static void main (string [] args) {context context = new context (); Context.setData ("Sepotong data XML"); XMLSAXInterPreter baru (). Interpret (konteks); xmldominterpreter baru (). Interpret (konteks); }}5. Catatan tentang Mode Interpreter
Cobalah untuk tidak menggunakan mode interpreter dalam modul penting, jika tidak, pemeliharaan akan menjadi masalah besar. Dalam proyek ini, Anda dapat menggunakan bahasa skrip seperti Shell, Jruby, dan Groovy untuk menggantikan mode penerjemah untuk menebus kekurangan bahasa yang dikompilasi Java. Kami menggunakan JRuby untuk pemrosesan perhitungan dalam proyek analitik bank, menghindari operasi empat karakter dalam mode interpreter, dan berkinerja baik dalam semua aspek efisiensi dan kinerja.