Applying object-orientation and aspect-orientation in teaching domain-specific language implementation

In traditional compiler design and programming language courses, the complexity required for a successful implementation of the course project is often a major obstacle for many students. This is especially true for courses focused on the design and implementation of domain-specific languages, where the language evolves constantly. This paper describes an approach that allows students to modularize the language constructs of a compiler using object-orientation (OO) and aspect-orientation (AO). Compared to traditional methods used in compiler projects, such a modular design can help students to improve the comprehensibility and changeability of their implementation, leading to a decrease in the overall complexity.

[1]  Ralph Johnson,et al.  design patterns elements of reusable object oriented software , 2019 .

[2]  Alfred V. Aho,et al.  Compilers: Principles, Techniques, and Tools , 1986, Addison-Wesley series in computer science / World student series edition.

[3]  Jeffrey G. Gray,et al.  A two-dimensional separation of concerns for compiler construction , 2005, SAC '05.

[4]  William G. Griswold,et al.  An Overview of AspectJ , 2001, ECOOP.

[5]  Arie van Deursen,et al.  Domain-specific languages: an annotated bibliography , 2000, SIGP.

[6]  Cristina V. Lopes,et al.  Aspect-oriented programming , 1999, ECOOP Workshops.

[7]  Gregor Kiczales,et al.  Aspect-oriented programming , 2001, ESEC/FSE-9.