  Reuse is a key technique for a more efficient development and ensures the
quality of the results. In object technology explicit encapsulation,
interfaces, and inheritance are well known principles for independent
development that enable combination and reuse of developed artifacts. In this
paper we apply modularity concepts for domain specific languages (DSLs) and
discuss how they help to design new languages by extending existing ones and
composing fragments to new DSLs. We use an extended grammar format with
appropriate tool support that avoids redefinition of existing functionalities
by introducing language inheritance and embedding as first class artifacts in a
DSL definition. Language embedding and inheritance is not only assisted by the
parser, but also by the editor, and algorithms based on tree traversal like
context checkers, pretty printers, and code generators. We demonstrate that
compositional engineering of new languages becomes a useful concept when
starting to define project-individual DSLs using appropriate tool support.
