AbstractsComputer Science

Component-based language implementation with object-oriented syntax and aspect-oriented semantics

by Xiaoqing Wu




Institution: University of Alabama – Birmingham
Department:
Degree: PhD
Year: 2007
Keywords: Compilers (Computer programs)  – Design <br> Programming languages (Electronic computers)  – Syntax <br> Programming languages (Electronic computers)  – Semantics <br> Object-oriented programming (Computer science) <br> Aspect-oriented programming <br> Modularity (Engineering)
Record ID: 1793306
Full text PDF: http://contentdm.mhsl.uab.edu/u?/etd,70


Abstract

Providing proper modularity is one of the major challenges in software development. In the context of programming language implementation, two key factors impede the modularization process in a compiler system: First, the parser, as the core of the language implementation, usually is specified in a non-decomposable style such that it must be built as a whole regardless of the complexity of the grammar. This usually yields poor comprehensibility, reduced changeability, limited reusability, and hampers independent development of the language implementation. Second, the interconnected nature of syntax and semantic analysis of a language propels the compiler implementation to have each phase tangled together. As a result, the construction of one phase always “pollutes” a different phase, which makes a system hard to develop, maintain and extend. These two modularization complications create the intricacy in compiler design known as a “dragon” task. With an aim to address the modularity problems and alleviate the implementation complexity in language implementations, this thesis presents a new language implementation formalism and archetype that improves the modularity in compiler construction in a two-dimensional manner. Structure wise, a new parsing algorithm called Component based LR parsing is utilized to decompose a language implementation into executable components at the byte-code level, which decreases the complexity of building a large language by constructing a set of smaller languages. Function wise, the framework employs object-oriented and aspect-oriented programming paradigms to describe syntax and semantic entities separately, which facilitates separation of concerns by isolating syntax and semantics as well as semantic phases themselves into different modules. The techniques in these two dimensions work in a coherent manner, producing a solution that can solve both modularization obstacles introduced above. Consequently, the framework increases the reusability, changeability, extensibility and independent development ability of both syntax and semantics specification with less development workload required from compiler designers. This dissertation elaborates the design, implementation, usage, and future directions of the overall framework. A number of case studies, including an implementation of the Java language, are provided to assess and demonstrate the benefits of using the framework in practice. xvi, 148 p. : digital, PDF file, ill. (some col.). Computer and Information Sciences Natural Sciences and Mathematics Compiler design Object-oriented programming Aspect-oriented programming LR parsing Component-based software development UNRESTRICTED