ANTLR (Another Tool for Language Recognation) adalah salah satu generator untuk mengenali bahasa, yang dibuat pertama kali oleh Terence Parr seorang Profesor dari Universitas San Francisco pada tahun 1989. ANTLR merupakan program bantu yang digunakan untuk menghasilkan program Parser, Lexer, ParserTokenTypes. Dimana input dari program tersebut berupa grammar file dan output berupa program Parser, Lexer, dan ParserTokenTypes dalam bahasa java, C++, dan C#. ANTLR menggunakan Hashtabel sebagai referensi penyimpanan data literal simbol. ANTLRWorks merupakan pengembangan lingkungan GUI untuk ANTLR grammar, sehingga lebih mudah untuk digunakan. ANTLR mengambil sebagai masukan suatu tata bahasa yang menentukan bahasa dan menghasilkan sebagai output kode sumber untuk recognizer untuk bahasa tersebut.
ANTLR Tree
Berdasarkan artikel “ANTRL Tree Construction”, ANTLR dapat membentuk intermediate form tree, atau abstract syntax tree, dengan menambahkan simbol-simbol tertentu pada grammar untuk mengindikasikan token yang menjadi root dari subtree, token yang menjadi leaves, dan token yang harus diabaikan pada saat pembentukan tree.
Root node untuk pembentukan AST pada ANTLR, ditentukan dengan menambahkan tanda “^” pada akhir dari sebuah token(sufix). Sedangkan untuk leaf node, setiap referensinya ke nonsuffixed token atau token-rangedianggap sebagai leaf node untuk rule tersebut.
ANTLR mengambil sebagai masukan tata bahasa yang menentukan bahasa dan menghasilkan sebagai output kode sumber untuk recognizer untuk bahasa tersebut. Sementara versi 3 didukung kode menghasilkan dalam bahasa pemrograman Ada95, ActionScript, C, C #, Java, JavaScript, Objective-C, Perl, Python, Ruby, dan Standard ML, [1] rilis saat ini bisa hadir pada target Jawa saja. Sebuah bahasa ditentukan dengan menggunakan tata bahasa bebas konteks yang diekspresikan menggunakan diperpanjang Backus-Naur Form (EBNF).
ANTLR memungkinkan lexers menghasilkan, parser, parser pohon, dan gabungan lexer-parser. Parser otomatis dapat menghasilkan pohon sintaks abstrak yang dapat diproses lebih lanjut dengan parser pohon. ANTLR menyediakan notasi yang konsisten tunggal untuk menentukan lexers, parser, parser dan pohon. Hal ini berbeda dengan lainnya parser / lexer generator dan menambah besar terhadap kemudahan alat itu digunakan.
Secara default, ANTLR membaca tata bahasa dan menghasilkan recognizer untuk bahasa yang didefinisikan oleh tata bahasa (yaitu sebuah program yang membaca aliran input dan menghasilkan kesalahan jika input stream tidak sesuai dengan sintaks yang ditentukan oleh tata bahasa). Jika tidak ada kesalahan sintaks, maka tindakan standar adalah hanya keluar tanpa mencetak pesan apapun. Dalam rangka untuk melakukan sesuatu yang berguna dengan bahasa, tindakan dapat melekat pada unsur-unsur tata bahasa dalam tata bahasa. Tindakan ini ditulis dalam bahasa pemrograman yang recognizer sedang dihasilkan. Ketika recognizer yang dihasilkan, tindakan yang tertanam dalam kode sumber dari recognizer di titik-titik yang tepat. Tindakan dapat digunakan untuk membangun dan memeriksa tabel simbol dan untuk memancarkan petunjuk dalam bahasa target, dalam kasus kompilator.
Serta lexers dan parser, ANTLR dapat digunakan untuk menghasilkan parser pohon. Ini adalah recognizers yang memproses pohon sintaks abstrak yang dapat secara otomatis dihasilkan oleh parser. Ini parser pohon yang unik untuk ANTLR dan sangat menyederhanakan pengolahan pohon sintaks abstrak.
ANTLR 3 adalah perangkat lunak bebas, yang diterbitkan di bawah Lisensi tiga klausul BSD. Versi sebelumnya yang dirilis sebagai perangkat lunak domain publik.
ANTLR menyediakan bahasa mark-up tingkat tinggi untuk mendefinisikan grammar dari sebuah bahasa, kemudian membuat lexer dan parser untuk mengenali grammar dari bahasa tersebut. Bahasa mark-up tersebut adalah grammar pecification. Grammar specification merupakan sekumpulan rule-rule yang mirip regular expression. Seperti yang telah dibahas dalam perancangan, terdapat dua jenis rule, yaitu lexer rule dan parser rule. Lexer rule digunakan untuk mendefinisikan bagaimana memotong-motong karakter menjadi token, berikut ini contoh implementasi dari lexer rule untuk mengenali Identifier :
IDENTIFIER
: Letter (Letter|'0'..'9')*
;
fragment
Letter
:
'a'..'z'
|'A'..'Z'
|'$'
|'_'
;
Jadi Pada kesimpulan nya ANTLR ini merupakan aplikasi dari Terence Parr yang di buat dengan bahasa java,untuk memundahkan pembuatan program Parse,Lexer,serta ParserTokenTypes.
Teori Parsing
Pada ilmu komputer, penguraian atau parsing adalah suatu cara memecah-mecah suatu rangkaian masukan (misalnya dari berkas atau keyboard) yang akan menghasilkan suatu pohon uraian (parse tree) yang akan digunakan pada tahap kompilasi berikutnya yaitu analisis semantik.
Jenis-jenis Metode Parsing
Pada umumnya metode parsing dapat dimasukkan ke dalam dua jenis,dengan nama metode top-down dan bottom-up parsing.
1. Metode Top-down Parsing
Top-down parsing, menurut Aho (2003, p181), dapat dilihat sebagaiusaha untuk menemukan leftmost derivation untuk sebuah masukan string.Dengan kata lain, usaha untuk membentuk sebuah parse tree untuk sebuahmasukan string dimulai dari root dan
membentuk node-node dari parse tree secara preorder. Bentuk umum daritop-down parsing disebut recursive descent, yang memungkinkan backtracking.
Menurut Tremblay, J.P. (1985, p208) ada 3 metode umum untuktop-down parsing yaitu brute force approach, recursive descent parser, dantop-down parsing dengan partial atau limited backup.
2. Recursive Descent Parser
Recursive descent parser menurut Tremblay J.P. (1985, p219) adalah metodetop-down parsing yang tidak mengijinkan adanya backup, namun teknik ini tidakdapat bekerja pada semua context free grammar. Beberapa grammar tetapmemerlukan backup agar parsing berhasil.
Pada metode recursive descent parsing, production diimplementasikan dalamfunction call untuk setiap nonterminal. Tiap function memiliki return value trueatau false, tergantung apakah substring yang mewakili nonterminal tersebut dapatdikenali atau tidak. Mekanisme pemrograman untuk menangani pemanggilanfungsi recursive menyediakan kemampuan untuk menangani stack yang diperlukanpada parsing, hal ini membebaskan user untuk membuat dan memanipulasi stacksecara terpisah.
3. Metode Bottom-up Parsing
Bentuk umum dari bottom-up parsing dikenal dengan nama shift-reduce parsing. Shift-reduce parsing menurut Aho (2003, p195) berusahauntukmembentuk sebuah parse tree untuk sebuah input string dimulai darileave (bottom) dan bekerja menuju root (top). Proses ini dapat dilihatsebagai “reducing” sebuah string w menjadi start symbol dari grammar.Pada setiap langkah reduction sebuah substring tertentu yang cocokdengan right side dari sebuah production digantikan dengan symbol darileftsideproductio tersebut.
Sumber :
Wikipedia
http://www.globalkomputer.com/Bahasan/Teknik-Kompilasi.html
http://infun66.blogspot.com/2011/12/pengenalan-antlr.html
http://en.wikipedia.org/wiki/ANTLR
Tidak ada komentar:
Posting Komentar