Creating and using domain-specific language features

  • Authors:
  • Ted Kaminski;Eric Van Wyk

  • Affiliations:
  • University of Minnesota, Minneapolis, Minnesota;University of Minnesota, Minneapolis, Minnesota

  • Venue:
  • Proceedings of the First Workshop on the Globalization of Domain Specific Languages
  • Year:
  • 2013

Quantified Score

Hi-index 0.00

Visualization

Abstract

The value that domain-specific languages provide to their users is the domain-specific language features they contain. These features provide notations from the domain of interest, as well as domain-specific analysis and optimizations. But domain-specific languages are sometimes a poor means of delivering these valuable features to their users. A challenge arises when a problem crosses multiple domains and whose programming or modeling solution could benefit from language features from all domains of interest. Using multiple domain-specific languages can become cumbersome, perhaps outweighing their benefits in the first place. An alternative approach, advocated by this position paper, is to provide domain-specific language features to programmers and modelers as composable language extensions that they can import into their general-purpose programming or modeling language. In our view, there are three requirements for a language extension framework to be widely usable. First, language extensions should be developed independently, by domain-experts, as libraries or domain-specific languages are now. Second, extensions should be automatically composable so that programmers and modelers can pick the language extensions they want, and direct tools to compose them, without the need for writing "glue-code." Third, this composition process should not fail to yield a working compiler (or other tools) for the custom extended language. Thus, the programmer has some assurance that the extensions that they pick will work together. We briefly describe how this vision of extensible language frameworks is supported by the Silver and Copper metaprogramming tools.