Design patterns: elements of reusable object-oriented software
Design patterns: elements of reusable object-oriented software
N degrees of separation: multi-dimensional separation of concerns
Proceedings of the 21st international conference on Software engineering
Introduction to Automata Theory, Languages and Computability
Introduction to Automata Theory, Languages and Computability
Design pattern implementation in Java and aspectJ
OOPSLA '02 Proceedings of the 17th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Reuse in Object-Oriented Information Systems Design
OOIS '02 Proceedings of the Workshops on Advances in Object-Oriented Information Systems
ECOOP '01 Proceedings of the 15th European Conference on Object-Oriented Programming
Two-Level Grammar as an Object-Oriented Requirements Specification Language
HICSS '02 Proceedings of the 35th Annual Hawaii International Conference on System Sciences (HICSS'02)-Volume 9 - Volume 9
DMS®: Program Transformations for Practical Scalable Software Evolution
Proceedings of the 26th International Conference on Software Engineering
Pattern transformation for two-dimensional separation of concerns
MACS '05 Proceedings of the 2005 workshop on Modeling and analysis of concerns in software
Journal of Computing Sciences in Colleges
Pattern transformation for two-dimensional separation of concerns
OOPSLA '05 Companion to the 20th annual ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Separation of concerns in compiler development using aspect-orientation
Proceedings of the 2006 ACM symposium on Applied computing
Hi-index | 0.00 |
During language evolution, compiler construction is usually performed along two dimensions: defining new abstract syntax tree (AST) classes, or adding new operations. In order to facilitate such changes, two software design patterns (i.e., the inheritance pattern and the visitor pattern) are widely used to help modularize the language constructs. However, as each design pattern is only suitable for one dimension of extension, neither of these two patterns can independently fulfill the evolution needs during the compiler construction process. In this paper, we analyze two dimensions of concerns in compiler construction and develop a paradigm allowing compiler evolution across these two dimensions using both object-orientation and aspect-orientation. Moreover, this approach provides an ability to perform pattern transformation based on pluggable aspects. A simple implementation of an expression language and its possible extension is demonstrated using Java and AspectJ.