  Domain specific languages (DSLs) are increasingly used today. Coping with
complex language definitions, evolving them in a structured way, and ensuring
their error freeness are the main challenges of DSL design and implementation.
The use of modular language definitions and composition operators are therefore
inevitable in the independent development of language components. In this
article, we discuss these arising issues by describing a framework for the
compositional development of textual DSLs and their supporting tools. We use a
redundance-free definition of a readable concrete syntax and a comprehensible
abstract syntax as both representations significantly overlap in their
structure. For enhancing the usability of the abstract syntax, we added
concepts like associations and inheritance to a grammar- based definition in
order to build up arbitrary graphs (as known from metamodeling). Two modularity
concepts, grammar inheritance and embedding, are discussed. They permit
compositional language definition and thus simplify the extension of languages
based on already existing ones. We demonstrate that compositional engineering
of new languages is a useful concept when project-individual DSLs with
appropriate tool support are defined.
