Language Modularization and Composition with Projectional Language Workbenches illustrated with MPS

The language community has had a discussion about different styles of languages for a long time: big languages with many specific concepts (ABAP, Cobol), or small languages with few, but very powerful and orthogonal concepts (Lisp, Smalltalk)? With the advent of projectional language workbenches a new class of language becomes possible that can combine the best of both approaches: modular languages. Modular Languages use a relatively small general-purpose core and can be extended with more (domain specific) concepts as needed. Projectional language workbenches support this approach by alleviating the problems of language composition for parser-based languages by not using grammars and parsers at all. They also enable IDE extension as a side benefit. In this paper we argue why modular languages are useful and illustrate the idea with a couple of small examples. We also present a number of language composition techniques for JetBrains MPS, an open source projectional language workbench.