Java 1.5 programlama dili için bir ayrıştırıcı tasarımı ve gerçekleştirimi
Design and implementation of a parser for Java 1.5 programming language
Yazar: MÜMÜNE ÖZÇETİN
Danışman: DOÇ. DR. İSMAİL KADAYIF
Çanakkale Onsekiz Mart Üniversitesi / Fen Bilimleri Enstitüsü / Bilgisayar Mühendisliği Ana Bilim Dalı
Derece: Yüksek Lisans, 2012
Konu: Bilgisayar Mühendisliği Bilimleri-Bilgisayar ve Kontrol = Computer Engineering and Computer Science and Control

Özet:
Ayrıştırıcı, bazı özel kurallara göre yazılan bir metni ayrıştıran ve metni bellekte özel bir veri yapısıyla temsil eden bir programdır. Ayrıştırıcılar bilgisayar biliminde değişik alanlarda kullanılabilir. Onlar bir programlama dilinde yazılan programı başka bir programlama dilinde yazılan programa dönüştüren derleyicilerde ara bir adım olarak kullanılabilir. Ayrıca onlar doğal dil işlemede de yaygın olarak kullanılmaktadır.Bu tezde, Java 1.5 belirtimine dayalı programlar için bir ayrıştırıcı tasarlamaya ve gerçekleştirmeye çalıştık. Yazılım araçları olarak otomatik tarayıcı üreteci olan JFlex ve otomatik ayrıştırıcı üreteci olan CUP'ı kullandık. JFlex, tokenları tanımlamak için düzenli ifadeleri kullanır. CUP, dilin sözdizimsel kurallarını belirtmek için içerikten bağımsız gramerleri kullanır. CUP, çoğu programlama dilini ayrıştırabilen yukarıdan aşağı LALR ayrıştırıcıları üretir. Bizim ayrıştırıcımız birden fazla Java dosyasını ayrıştırabilir ve onları tek bir ayrıştırıcı ağacı olarak temsil edebilir. Ayrıştırıcımızın doğru çalıştığını test etmek için şu adımlar uygulanır. Orijinal Java dosyalarını ayrıştırdıktan sonra, ayrıştırma ağacını dolaşarak yeni Java dosyaları diske yazdırılır. Bu yazdırılan dosyalar, dosyalarımızın ilk grubunu oluşturur. Daha sonra ilk grupta yazdırılan Java dosyaları, ayrıştırıcımıza girdi teşkil eder ve ilgili ayrıştırma ağacı dolaşılarak ikinci grubu oluşturan yeni dosyalara yazdırılır. Birinci gruptaki her bir Java dosyası ikinci gruptaki ilgili Java dosyası ile karşılaştırılır. Her iki gruptaki karşılıklı dosyaların birebir aynı olduğu görülür.

Abstract:
A parser is a program that parses a text written according to some specific rules and represents the text in memory with an appropriate data structure. Parsers can be used in a variety of areas in computer science. They can be used as an intermediate step in compilers that convert a programming language program into another programming language program. They are also extensively used in natural language processing.In this thesis, we try to design and implement a parser targeting at programs based on Java 1.5 specifications. We use JFlex and CUP software tools as an automatic scanner generator and an automatic parser generator. JFlex employs regular expressions to identify tokens. CUP uses context free grammars to specify the language's syntactic rules. It produces top-down LALR parsers via which most of the programming languages can be parsed. Our parser can parse multiple Java files and represent them as a single parse tree. To test if our parser runs correctly we apply the following steps. After parsing original Java files we traverse the parse tree and dump it into new Java files. These dumped files constitute our first group of files. Then the dumped Java files in the first group are fed into our parser and the corresponding parse tree is dumped into another set of files, which constitute our second group of files. We compare each Java file in the first group with the corresponding Java file in the second group. After extensive experiments, we see that the compared Java files have a verbatim text.