Building Adaptive Language Systems

The notion of change as a first-class entity in the language is the idea of software language engineering. Multiple metalevel concept is an essential demand for a systematic language approach, to build up adaptable software systems dynamically, i.e. to evolve them. A feedback reflection loop from data to code through metalevel data is the basic implementation requirement and the proposition for semiautomatic evolution of software systems. In this paper, we illustrate the ability for extensions primarily in horizontal but also in vertical direction of an adaptive system. From the viewpoint of adaptability, we classify software systems as being nonreflexive, introspective and adaptive. Introducing a simple example of LL(1) languages for expressions, we present its nonreflexive and adaptive implementation using Haskell functional language.

[1]  Krzysztof Czarnecki,et al.  Generative programming - methods, tools and applications , 2000 .

[2]  David Walker,et al.  A theory of aspects , 2003, ICFP '03.

[3]  Ján Kollár,et al.  Separating Concerns in Programming: Data, Control and Actions , 2012, Comput. Artif. Intell..

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

[5]  Friedrich Steimann The paradoxical success of aspect-oriented programming , 2006, OOPSLA '06.

[6]  Radha Jagadeesan,et al.  µABC: A Minimal Aspect Calculus , 2004, CONCUR.

[7]  Olivier Motelet,et al.  A Formal Definition of Crosscuts , 2001, Reflection.

[8]  Peter Dolog,et al.  Evolution of Web Applications with Aspect-Oriented Design Patterns , 2007, AEWSE.

[9]  Faizan Javed,et al.  Inferring context-free grammars for domain-specific languages , 2005, OOPSLA '05.

[10]  Valerie Novitzká,et al.  Semantical Equivalence of Process Functional and Imperative Programs , 2004 .

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

[12]  Gary T. Leavens,et al.  MiniMAO1: Investigating the Semantics of Proceed , 2005 .

[13]  Gabor Karsai,et al.  The Generic Modeling Environment , 2001 .

[14]  Hidehiko Masuhara,et al.  Modeling Crosscutting in Aspect-Oriented Mechanisms , 2003, ECOOP.

[15]  Hyggo Oliveira de Almeida,et al.  A Component Model to Support Dynamic Unanticipated Software Evolution , 2006, SEKE.

[16]  János Kollár,et al.  Unified Approach to Environments in a Process Functional Language {}^* , 2003, Comput. Artif. Intell..

[17]  Gary T. Leavens,et al.  Investigating the Semantics of Proceed , 2005 .

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

[19]  Wouter Joosen,et al.  On the importance of the separation-of-concerns principle in secure software engineering , 2003 .

[20]  Gregor Kiczales,et al.  A semantics for advice and dynamic join points in aspect-oriented programming , 2001, TOPL.

[21]  Ján Kollár,et al.  From Eager PFL to Lazy Haskell , 2006, Comput. Artif. Intell..

[22]  Karl J. Lieberherr,et al.  Aspectual Collaborations: Combining Modules and Aspects , 2003, Comput. J..

[23]  Alexander L. Wolf,et al.  Acm Sigsoft Software Engineering Notes Vol 17 No 4 Foundations for the Study of Software Architecture , 2022 .

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

[25]  Peter Ebraert,et al.  A Reflective Approach to Dynamic Software Evolution , 2004, RAM-SE.