Bahasa Pemrogaman untuk Mendefinisikan Rule bagi Generator Soal Matematika
Bahasa Pemrograman Untuk Mendefinisikan Rule Bagi
Generator Soal Matematika
High Level Programming Language for Rule Defintion
for Math Problem Generator
Moh. Sofyan S. Thayf1, Retantyo Wardoyo2 Program Studi Ilmu Komputer
Program Pascasarjana Universitas Gadjah Mada
ABSTRACT
The research aim to develop a high level programming language for mathematics rule definition that will be use in mathematical problem generator that generate mathematical problem collections in easier and efficient way. The compiler and problem generator program also developed to evaluate the programming language.
The programming language are created by a grammar definition according to an approach to mathematics multiple choice problem creation circumstances, and limited to arithmetic problems only. The compiler are built by using Java Compilers Compiler (JavaCC) tools that generates lexical analyzer and syntax analyzer based on defined grammar and some defined semantic rules in Java classes.
As the result, the compiler and the problem generator successfully generate thousands of mathematical problems using the rules that written in the new programming language, less than 10 seconds.
Keywords: programming language, compiler, problem generator, mathematics
1 Pengajar pada STMIK KHARISMA Makassar
2 Pengajar pada Program Magister dan Doktor Ilmu Komputer FMIPA Universitas Gadjah Mada, Yogyakarta
(2)
1. Latar Belakang
Permasalahan utama dari aktifitas belajar, latihan, dan pengujian kemampuan matematika adalah kebutuhan akan tersedianya koleksi soal dalam jumlah yang besar dengan beragam variasi soal. Pengembangan bank soal matematika, tidak jarang harus melibatkan tim kerja yang besar dan jam kerja yang relatif panjang untuk menghasilkan soal yang valid dalam jumlah besar.
Program aplikasi generator soal matematika telah banyak dikembangkan dan bisa didapatkan dengan mudah, akan tetapi generator soal yang tersedia tersebut memiliki beberapa permasalahan, antara lain:
1. Software generator soal umumnya dikembangkan oleh pengembang software,
research team, task force, atau perorangan, yang fokus pada satu bidang atau
cabang matematika tertentu, dan generator soal yang dibangun akan menghasilkan koleksi soal yang terbatas hanya dalam domain cabang matematika tersebut. Sehingga untuk keperluan pembelajaran atau pengujian kemampuan matematika yang lebih luas, bisa jadi dibutuhkan lebih dari satu generator soal dari pengembang yang berbeda dengan kebijakan penggunaan yang berbeda pula, terkait dengan harga software, lisensi, limitasi, dan sebagainya.
2. Untuk dapat meng-generate soal, generator soal memiliki sejumlah rule sesuai dengan formulasi matematika dari soal-soal yang akan dibentuk. Tetapi rule ini merupakan algoritma yang sudah dituliskan sebagai kode program yang
(3)
melakukan modifikasi atau penambahan rule baru untuk kasus atau formula matematika yang berbeda.
3. Untuk dapat mengembangkan software generator soal sendiri yang sesuai dengan kebutuhan, dibutuhkan kemampuan sebagai seorang programer komputer yang umumnya tidak selalu dimiliki oleh guru atau dosen yang mengajarkan matematika
Dari permasalahan yang telah diuraikan di atas, maka perlu dipikirkan untuk merancang dan mengembangkan suatu bahasa pemrograman khusus yang mudah dipahami dan digunakan, atau bahasa pemrograman tingkat tinggi yang bersifat deklaratif untuk mendefinisikan rule atau formula matematika.
Selanjutnya sejumlah rule yang telah dituliskan dalam bahasa yang dirancang dapat dikoleksi sebagai sebuah library untuk digunakan oleh generator soal yang untuk menghasilkan soal-soal berdasarkan koleksi rule yang tersedia.
2. Permasalahan
Berdasarkan uraian permasalahan di atas, maka dalam penelitian ini akan dibahas: bagaimana mendefinisikan sebuah bahasa pemrograman yang dapat memudahkan penulisan rule untuk pembentukan soal-soal matematika secara otomatis menggunakan generator soal.
3. Cara Penelitian
Metode penelitian yang digunakan dalam penyusunan tesis ini terdiri atas : 1. Library Research, yakni metode penelitian yang dilakukan dengan cara
(4)
dan retrieving data dan informasi, dan masalah-masalah berkaitan dengan teori dan kaidah pembentukan bahasa serta teknik kompilasi
2. Prototyping, yaitu melakukan pengembangan prototipe program aplikasi yakni
program compiler dan program generator soal, untuk keperluan uji coba penerimaan sistem bahasa, pembentukan rule, dan uji coba pembentukan bank soal dari rule yang ditulis dalam bahasa yang dirancang.
4. Pendekatan Bahasa Pemrograman 4.1. Pendekatan Struktur Bahasa
Sebuah formula atau rumus matematika, pada prinsipnya menunjukkan hubungan antara satu nilai dengan satu atau beberapa nilai lainnya. Setiap nilai biasanya dinyatakan dalam bentuk variabel dalam notasi rumusnya. Dengan memberikan nilai berbeda kepada satu atau beberapa variabel yang dimiliki sebuah rumus matematika, maka akan didapatkan nilai hasil yang berbeda-beda pula. Berdasarkan konsep ini, maka sebuah generator soal matematika dapat menghasilkan sejumlah soal matematika yang dibentuk dari satu rumus matematika dengan cara memberikan nilai yang dibangkitkan secara acak kepada variabel-variabelnya.
Bahasa yang dirancang pada prinsipnya adalah untuk merepresentasikan sebuah formula matematika beserta semua variabel-variabel dari nilai yang mempengaruhinya, yang diharapkan dapat memberikan kemudahan dalam penulisan pada sisi penulis atau pembuat soal, dan dapat membentuk naskah soal secara otomatis pada sisi eksekusi dan interpretasi semantik dari bahasa tersebut.
(5)
Sebuah soal dalam test matematika yang berbentuk multiple-choice biasanya memiliki bentuk umum seperti pada contoh listing 1
J i k a d i k e t a h u i j a r i - j a r i l i n g k a r a n = 5 , h i t u n g l u a s l i n g k a r a n ( PI = 3 , 1 4 ) a . 2 5
b . 2 5 , 5 c . 7 8 d . 7 8 , 5
Listing 1. Contoh soal matematika bentuk multiple-chioce
Jari-jari dan PI adalah variabel dan konstanta yang menentukan nilai luas lingkaran setelah dihitung menggunakan rumus luas lingkaran. Jadi terdapat dua komponen utama dari sebuah rumus yaitu: (1) Variabel-variabel dan konstanta-konstanta, dan (2) formulasi atau rumus itu sendiri.
Dapat diasumsikan bahwa sebuah bahasa untuk mendefinisikan rule sebagai acuan untuk pembentukan soal matematika berbentuk multiple-choice harus memiliki komponen-komponen:
1. deklarasi variabel dan konstanta, 2. definisi rule dalam bentuk formula, 3. rule untuk menghasilkan opsi pilihan
4.2. Pendekatan Statement dan Ekspresi
Statement adalah pembentuk program berupa perintah yang akan dieksekusi untuk tujuan merubah nilai dari variabel-variabel. Sejumlah bahasa mengimplemetasi command dalam bentuk:
- assignment (penugasan, pemberian nilai),
- procedure calls (pemanggilan prosedur),
- sequential command (perintah berurutan),
(6)
- conditional command (pemilihan perintah), dan
- iterative command (perulangan perintah).
Dalam rangka merubah nilai variabel, digunakan ekspresi (expression) yeng bertujuan untuk mengevaluasi satu nilai. Ekspresi dapat berbentuk:
- literal, contoh: 10 (contoh dalam statement: a = 10 )
- construct, contoh: 2 * 10 (contoh dalam statement: a = 2 * 10 )
- function calls, contoh: sin(45)
- conditional expressions, contoh: a >= 0
- constant and variabel accesses, contoh a = b
Dalam konteks rule pembentuk soal matematika, dipertimbangkan bahwa: 1. Terdapat rule untuk rumus matematika tertentu yang membutuhkan proses
perulangan, seperti pada perhitungan nilai faktorial, atau sistem deret. Untuk itu dibutuhkan tersedianya iteratif command atau statement perulangan
2. Terdapat rule untuk rumus matematika tertentu yang membutuhkan proses seleksi atau pemilihan, untuk itu, dibutuhkan tersedianya sarana untuk
conditional command dan conditional expressions .
3. Terdapat rule untuk rumus matematika yang membutuhkan penggunaan fungsi-fungsi tertentu, yang sulit atau tidak memungkinkan untuk dikonstruksi sendiri dalam definisi rule, maka dibutuhkan tersedianya sejumlah fungsi siap pakai (buit-in function) dan mekanisme function call.
4. Kerena berorientasi pada rumusan matematika, maka bahasa harus sedapat mungkin mengimplementasi semua bentuk ekspresi dan penggunaan operator yang dibutuhkan dalam berbagai bentuk ekspresi tersebut.
(7)
5. Rancangan Prototipe Aplikasi
Rancangan sistem, secara garis besar digambarkan dalam use case
diagram pada gambar 1.
Gambar 1. Use case diagram
Prototipe aplikasi terdiri tiga bagian utama, yaitu:
1. Program kompilasi (compiler) yang memiliki fungsi utama melakukan kompilasi terhadap kode sumber dari rule yang ditulis dapat diterima dan digunakan sebagai rule untuk generator soal,
2. Program generator soal berfungsi untuk membentuk soal-soal dari rule yang tersedia dalam jumlah yang diinginkan oleh pengguna
3. Program kompilasi dan generator soal melibatkan sebuah class HillParser yang merupakan program parser dari bahasa yang dirancang.
(8)
5.1. Prototipe Program Compiler
Pada program compiler, pengguna dapat melakukan dua aktifitas utama, yaitu: (1) melakukan kompilasi source code dari rule, dan (2) melakukan test, yakni melihat beberapa contoh soal yang dapat dibangkitkan dari rule tersebut.
Aktifitas dan proses kompilasi yang berlangsung di dalam program
compiler dapat dilihat pada sequence diagram pada gambar 2.
Gambar 2. Sequence diagram dari rancangan prototipe compiler
5.2. Prototipe Program Generator Soal
Program generator soal berfungsi untuk membangkitkan/membentuk sejumlah soal dari sejumlah source code rule yang sudah bebas error berdasarkan hasil dari program kompilasi. Proses pembangkitan soal oleh generator soal digambarkan dalam sequence diagram pada gambar 3.
(9)
Gambar 3. Sequence diagram dari rancangan prototipe generator soal
Untuk menjalankan proses generator soal, penguna harus menyiapkan beberapa hal sebagai parameter bagi proses pembentukan soal, yaitu:
1. Memilih rule mana yang akan dilibatkan dalam proses pembentukan soal 2. Menentukan berapa jumlah soal yang akan dibentuk
3. Menentukan tipe output dari hasil pembentukan soal.
4. Menentukan nama file dimana soal-soal yang terbentuk akan disimpan Untuk fleksibilitas, prototipe generator soal direncanakan dapat menghasilkan output berupa naskah soal sesuai jumlah yang diinginkan dalam beberapa format, yaitu:
1. format text file (*.txt) 2. format HTML (*.html) 3. format PDF (*.pdf), dan
(10)
5.3. Program Parser
Bahasa pemrograman untuk definisi rule, program Kompilasi, dan program Generator Soal, semuanya melibatkan satu program utama yang sangat penting, yaitu program parser sebagai inti dari sebuah compiler yang bertugas untuk melakukan analisa leksikal, analisa sintaksis, dan analisa semantik terhadap
source code yang ditulis dalam suatu bahasa pemrograman.
Untuk memudakan pembuatan progam parser, digunakan tools Parser
Generator yaitu Java Compilers Compiler (JavaCC) beserta utilty JJTree yang
tergabung dalam paket JavaCC. Dalam membangun sebuah parser dengan JavaCC dan JJTree dilakukan langkah-langkah sebagai berikut:
1. Menyusun grammar dari bahasa yang akan dirancang
2. Membuat sejumlah Java class untuk penanganan node dan semantik 3. Melakukan kompilasi dengan JJTree
4. Melakukan kompilasi dengan JavaCC 5. Melakukan kompilasi dengan Java Compiler
Setelah proses kompilasi, maka semua class buatan maupun class yang
auto-generate, akan membentuk program parser yang mekanisme dari proses
(11)
Gambar 4. Activity diagram program parser
Interpretasi semantik yang paling utama dalam parser yang dibangun adalah proses pembentukan soal yang meliputi:
1. Pembentukan nilai acak terhadap variabel-variabel,
2. Perhitungan hasil dari operasi berdasarkan rumus yang didefinisikan, 3. Pembentukan opsi untuk pilihan jawaban,
4. Pembentukan naskah soal.
6. Implementasi
6.1. Rancangan Bahasa Pemrograman
Kode sumber (source code) dari rule soal matematika ditulis sebagai file text dan diberi ekstensi *.r sebagai pengenal. Struktur kode sumber adalah dapat dilihat pada listing 2.
(12)
/*deklarasi rule */
r u l e n a ma _ r u l e ( “ d e s k r i p s i ” ) {
/*deklarasi konstanta*/
c o n s t i n t n a ma _ v a r ( “ d e s k r i p s i ” ) = …; c o n s t r e a l n a ma _ v a r ( “ d e s k r i p s i ” ) = …; …
/*deklarasi konstanta*/
i n t n a ma _ v a r ( “ d e s k r i p s i ” , k o n d i s i _ b a t a s a n ) ; r e a l n a ma _ v a r ( “ d e s k r i p s i ” , k o n d i s i _ b a t a s a n ) ; …
/*statement pembentuk rule */
s t a t e me n t d a n e k s p r e s i ; …
/* hasil perhitungan = jawaban benar */
n a ma _ r u l e = …;
/*pemberian opsi jawaban */
o p t i o n = …; o p t i o n = …; }
Listing 2. Struktur kode sumber bahasa definisi rule soal matematika
Bahasa yang dirancang relatif memiliki struktur yang sederhana tetapi cukup lengkap, dilihat dari koleksi reserved word, literal tipe data, operator, dan
built-in function, dengan perincian sebagai berikut:
1. tiga belas buah reserved word, yaitu: a. definisi rule: rule
b. deklarasi variabel dan konstanta: hidden, const, option c. proses seleksi: if, elseif, else
d. kendali perulangan: for, to, step, repeat, until, while 2. dua keyword untuk literal tipe data, yaitu:
a. untuk tipe data integer: int b. untuk tipe data real: real 3. lima belas buah operator, yaitu:
a. operator-operator aritmetika: + , - , * , / , ^ , mod, b. operator-operator relasi: = , < > , > , >= , < , <=
(13)
4. built-in function, yaitu:
a. fungsi-fungsi trigonometri: sin( ), cos( ), tg( ), asin( ), acos( ), atg( ) b. fungsi-fungsi untuk pembulatan: round( ), integer( )
c. fungsi-fungsi array: asort( ), asum( )
6.2. Prototipe Program Kompilasi
Tampilan user interface dari prototipe program kompilasi dapat dilihat pada gambar 5.
Gambar 5. User interface program kompilasi
Pada prototipe ini melayani proses kompilasi terhadap file kode sumber yang sudah dipilih. Jika proses kompilasi sukses, maka pengguna dapat melihat contoh soal yang dapat dibentuk dari rule yang didefinisikan dalam file kode sumber bersangkutan melalui fasilitas test.
Disediakan fasilitas registrasi untuk melakukan pencatatan terhadap file kode sumber yang telah berhasil dikompilasi dan bebas error, dan dapat digunakan untuk pembentukan bank soal. Aktivitas registrasi meliputi:
(14)
1. Mendaftarkan nama file kode sumber yang baru
2. Meng-copy file kode sumber ke direkori koleksi kode sumber rule
Tujuan proses registrasi kode sumber adalah: (1) memastikan file yang akan digunakan untuk pembentukan bank soal adalah file yang telah bebas error dan (2) memastikan perubahan terhadap file kode sumber yang telah diregistrasi harus melalui proses kompilasi ulang.
6.3. Prototipe Program Generator Soal
User interface dari prototipe program generator soal dapat dilihat pada
gambar 6.
Gambar 6. User interface program generaor soal
User interface memungkinkan pengguna untuk melakukan aktifitas setting awal sebelum memulai proses pembentukan soal atau bank soal. Setting awal
(15)
1. memilih rule yang akan dilibatkan pada prose pembentukan 2. menentukan jumlah soal yang ingin dihasilkan
3. menentukan format output yang akan dihasilkan.
4. menentukan di mana kunci jawaban dari tiap soal akan diletakkan 5. menentukan nama file dimana soal hasil akan disimpan
7. Penutup
Dari penelitian dan pembahasan yang telah dilakukan di atas, dapat ditarik beberapa kesimpulan sebagai berikut:
1. Bahasa pemrograman untuk mendefinisikan rule bagi generator soal matematika berhasil dibentuk, dan rule yang ditulis dalam bahasa pemrograman ini dapat digunakan untuk menghasilkan bank soal matematika dengan mudah dan cepat.
2. Struktur bahasa yang dirancang, sangat sederhana karena hanya memiliki 13
reserved word diluar built-in function dan operator, serta dua literal tipe data.
Jumlah baris kode untuk mendefinisikan satu rule hanya berkisar antar 5 sampai dengan 15 baris, di luar baris-baris komentar, bergantung pada tingkat kerumitan rumus/rule yang didefinisikan.
3. Berdasarkan hasil uji coba, dari koleksi rule yang telah tersedia proses pembentukan hingga 1500 buah soal dapat dilakukan dalam waktu kurang dari 10 detik, sehingga dapat dikatakan bahwa bahasa pemrograman yang dirancang, bersama-sama dengan generator soalnya, dapat mengefisienkan proses pembentukan bank soal.
(16)
8. Daftar Pustaka
_____________, JJTree Reference Documentation (diakses 14/12/2008)
Aho, A.V., Sethi, R., dan Ullman, J.D., 2002, Compilers, Principles, Technique,
and Tools, Prentice Hall, New Jersey, USA.
Appel, A.W., dan Palsberg, J., 2002, Modern Compiler Implementation in Java (2nd ed.), Cambridge University Press.
Martin, J.C., 1997, Introduction to Languages and The Theory of Computation (2nd ed.), McGraw-Hill Companies, Inc.
Scott, M.L., 2002, Programming Languages Pragmatics, Morgan Kaufman Publisher
Terry, P.D., 2000, Compilers and Compiler Generators – an introduction with
C++, EB
Thayf, M.S., Bahasa Pemrograman Untuk Mendefinisikan Rule Bagi Generator
Soal Matematika, Tesis, Magister Ilmu Komputer Universitas Gadjah
Mada, Yogyakarta.
Watt, D. A., dan Findlay, W., 2004, Programming Language Design Concept, John Wiley & Sons.
(1)
Gambar 4. Activity diagram program parser
Interpretasi semantik yang paling utama dalam parser yang dibangun adalah proses pembentukan soal yang meliputi:
1. Pembentukan nilai acak terhadap variabel-variabel,
2. Perhitungan hasil dari operasi berdasarkan rumus yang didefinisikan, 3. Pembentukan opsi untuk pilihan jawaban,
4. Pembentukan naskah soal.
6. Implementasi
6.1. Rancangan Bahasa Pemrograman
Kode sumber (source code) dari rule soal matematika ditulis sebagai file text dan diberi ekstensi *.r sebagai pengenal. Struktur kode sumber adalah dapat dilihat pada listing 2.
(2)
/*deklarasi rule */
r u l e n a ma _ r u l e ( “ d e s k r i p s i ” ) { /*deklarasi konstanta*/
c o n s t i n t n a ma _ v a r ( “ d e s k r i p s i ” ) = …; c o n s t r e a l n a ma _ v a r ( “ d e s k r i p s i ” ) = …; …
/*deklarasi konstanta*/
i n t n a ma _ v a r ( “ d e s k r i p s i ” , k o n d i s i _ b a t a s a n ) ; r e a l n a ma _ v a r ( “ d e s k r i p s i ” , k o n d i s i _ b a t a s a n ) ; …
/*statement pembentuk rule */ s t a t e me n t d a n e k s p r e s i ; …
/* hasil perhitungan = jawaban benar */ n a ma _ r u l e = …;
/*pemberian opsi jawaban */ o p t i o n = …; o p t i o n = …; }
Listing 2. Struktur kode sumber bahasa definisi rule soal matematika
Bahasa yang dirancang relatif memiliki struktur yang sederhana tetapi cukup lengkap, dilihat dari koleksi reserved word, literal tipe data, operator, dan
built-in function, dengan perincian sebagai berikut:
1. tiga belas buah reserved word, yaitu: a. definisi rule: rule
b. deklarasi variabel dan konstanta: hidden, const, option c. proses seleksi: if, elseif, else
d. kendali perulangan: for, to, step, repeat, until, while 2. dua keyword untuk literal tipe data, yaitu:
a. untuk tipe data integer: int b. untuk tipe data real: real 3. lima belas buah operator, yaitu:
a. operator-operator aritmetika: + , - , * , / , ^ , mod, b. operator-operator relasi: = , < > , > , >= , < , <= c. operator-operator logika: and, or, not
(3)
4. built-in function, yaitu:
a. fungsi-fungsi trigonometri: sin( ), cos( ), tg( ), asin( ), acos( ), atg( ) b. fungsi-fungsi untuk pembulatan: round( ), integer( )
c. fungsi-fungsi array: asort( ), asum( )
6.2. Prototipe Program Kompilasi
Tampilan user interface dari prototipe program kompilasi dapat dilihat pada gambar 5.
Gambar 5. User interface program kompilasi
Pada prototipe ini melayani proses kompilasi terhadap file kode sumber yang sudah dipilih. Jika proses kompilasi sukses, maka pengguna dapat melihat contoh soal yang dapat dibentuk dari rule yang didefinisikan dalam file kode sumber bersangkutan melalui fasilitas test.
Disediakan fasilitas registrasi untuk melakukan pencatatan terhadap file kode sumber yang telah berhasil dikompilasi dan bebas error, dan dapat digunakan untuk pembentukan bank soal. Aktivitas registrasi meliputi:
(4)
1. Mendaftarkan nama file kode sumber yang baru
2. Meng-copy file kode sumber ke direkori koleksi kode sumber rule
Tujuan proses registrasi kode sumber adalah: (1) memastikan file yang akan digunakan untuk pembentukan bank soal adalah file yang telah bebas error dan (2) memastikan perubahan terhadap file kode sumber yang telah diregistrasi harus melalui proses kompilasi ulang.
6.3. Prototipe Program Generator Soal
User interface dari prototipe program generator soal dapat dilihat pada
gambar 6.
Gambar 6. User interface program generaor soal
User interface memungkinkan pengguna untuk melakukan aktifitas setting awal sebelum memulai proses pembentukan soal atau bank soal. Setting awal meliputi:
(5)
1. memilih rule yang akan dilibatkan pada prose pembentukan 2. menentukan jumlah soal yang ingin dihasilkan
3. menentukan format output yang akan dihasilkan.
4. menentukan di mana kunci jawaban dari tiap soal akan diletakkan 5. menentukan nama file dimana soal hasil akan disimpan
7. Penutup
Dari penelitian dan pembahasan yang telah dilakukan di atas, dapat ditarik beberapa kesimpulan sebagai berikut:
1. Bahasa pemrograman untuk mendefinisikan rule bagi generator soal matematika berhasil dibentuk, dan rule yang ditulis dalam bahasa pemrograman ini dapat digunakan untuk menghasilkan bank soal matematika dengan mudah dan cepat.
2. Struktur bahasa yang dirancang, sangat sederhana karena hanya memiliki 13
reserved word diluar built-in function dan operator, serta dua literal tipe data.
Jumlah baris kode untuk mendefinisikan satu rule hanya berkisar antar 5 sampai dengan 15 baris, di luar baris-baris komentar, bergantung pada tingkat kerumitan rumus/rule yang didefinisikan.
3. Berdasarkan hasil uji coba, dari koleksi rule yang telah tersedia proses pembentukan hingga 1500 buah soal dapat dilakukan dalam waktu kurang dari 10 detik, sehingga dapat dikatakan bahwa bahasa pemrograman yang dirancang, bersama-sama dengan generator soalnya, dapat mengefisienkan proses pembentukan bank soal.
(6)
8. Daftar Pustaka
_____________, JJTree Reference Documentation (diakses 14/12/2008)
Aho, A.V., Sethi, R., dan Ullman, J.D., 2002, Compilers, Principles, Technique,
and Tools, Prentice Hall, New Jersey, USA.
Appel, A.W., dan Palsberg, J., 2002, Modern Compiler Implementation in Java (2nd ed.), Cambridge University Press.
Martin, J.C., 1997, Introduction to Languages and The Theory of Computation (2nd ed.), McGraw-Hill Companies, Inc.
Scott, M.L., 2002, Programming Languages Pragmatics, Morgan Kaufman Publisher
Terry, P.D., 2000, Compilers and Compiler Generators – an introduction with
C++, EB
Thayf, M.S., Bahasa Pemrograman Untuk Mendefinisikan Rule Bagi Generator
Soal Matematika, Tesis, Magister Ilmu Komputer Universitas Gadjah
Mada, Yogyakarta.
Watt, D. A., dan Findlay, W., 2004, Programming Language Design Concept, John Wiley & Sons.