Neverlang 2 is a framework for language development that allows language features to be composed and code to be reused. The basis for the approach is syntax-directed translation, which is extended in a modular way. A language feature is implemented in a module that specifies the syntax of the component and role definitions for actions. A slice can associate syntax and role components from different modules to describe a language feature. A language is made up of slices and an ordering for roles.
The framework is illustrated by developing a simple application for managing logs, akin to the logrotate Unix utility. To fit into a brief paper, of course, the example is necessarily simple, but illustrates several details of how the build-up of increasingly complex definitions should proceed. A larger example would help illustrate how more sophisticated languages exploiting the larger concepts would be described.
The authors describe several pieces of work building on the existing implementation. These include: implementing languages such as Logo, JavaScript, and Java; extending the system with a library of implemented features; and examining “the capabilities and limits” of the approach.