Neverlang: A framework for feature-oriented language development. (October 2015) - Vacchi, Edoardo; Cazzola, Walter
Abstract: Reuse in programming language development is an open research problem. Many authors have proposed frameworks for modular language development. These frameworks focus on maximizing code reuse, providing primitives for componentizing language implementations. There is also an open debate on combining feature-orientation with modular language development. Feature-oriented programming is a vision of computer programming in which features can be implemented separately, and then combined to build a variety of software products. However, even though feature-orientation and modular programming are strongly connected, modular language development frameworks are not usually meant primarily for feature-oriented language definition. In this paper we present a model of language development that puts feature implementation at the center, and describe its implementation in the Neverlang framework. The model has been evaluated through several languages implementations: in this paper, a state machine language is used as a means of comparison with other frameworks, and a JavaScript interpreter implementation is used to further illustrate the benefits that our model provides. Abstract : Highlights: This paper presents Neverlang: a framework for modular development of programming languages. Neverlang fosters language composition and restriction. Neverlang supports separate compilation and dynamic extension of the programming languages. Neverlang has been compared with other frameworks with similar aims. Neverlang has been evaluated against significant case studies as an implementation of javascript.