Software Languages

Syntax, Semantics, and Metaprogramming

  • Ralf Lämmel

Table of contents

  1. Front Matter
    Pages i-xxx
  2. Ralf Lämmel
    Pages 1-49
  3. Ralf Lämmel
    Pages 51-86
  4. Ralf Lämmel
    Pages 135-175
  5. Ralf Lämmel
    Pages 177-200
  6. Ralf Lämmel
    Pages 201-240
  7. Ralf Lämmel
    Pages 241-270
  8. Ralf Lämmel
    Pages 271-288
  9. Ralf Lämmel
    Pages 289-318
  10. Ralf Lämmel
    Pages 319-334
  11. Ralf Lämmel
    Pages 335-397
  12. Back Matter
    Pages 399-424

About this book


This book identifies, defines and illustrates the fundamental concepts and engineering techniques relevant to applications of software languages in software development. It presents software languages primarily from a software engineering perspective, i.e., it addresses how to parse, analyze, transform, generate, format, and otherwise process software artifacts in different software languages, as they appear in software development. To this end, it covers a wide range of software languages – most notably programming languages, domain-specific languages, modeling languages, exchange formats, and specifically also language definition languages. Further, different languages are leveraged to illustrate software language engineering concepts and techniques. The functional programming language Haskell dominates the book, while the mainstream programming languages Python and Java are additionally used for illustration.

By doing this, the book collects and organizes scattered knowledge from software language engineering, focusing on application areas such as software analysis (software reverse engineering), software transformation (software re-engineering), software composition (modularity), and domain-specific languages. It is designed as a textbook for independent study as well as for bachelor’s (advanced level) or master’s university courses in Computer Science. An additional website provides complementary material, for example, lecture slides and videos.

This book is a valuable resource for anyone wanting to understand the fundamental concepts and important engineering principles underlying software languages, allowing them to acquire much of the operational intelligence needed for dealing with software languages in software development practice. This is an important skill set for software engineers, as languages are increasingly permeating software development.


System description languages Context specific languages Formal language definitions Software creation and management Software composition Model-based software engineering Domain-specific languages

Authors and affiliations

  • Ralf Lämmel
    • 1
  1. 1.Computer Science DepartmentUniversität Koblenz-LandauKoblenzGermany

Bibliographic information

  • DOI
  • Copyright Information Springer International Publishing AG, part of Springer Nature 2018
  • Publisher Name Springer, Cham
  • eBook Packages Computer Science
  • Print ISBN 978-3-319-90798-7
  • Online ISBN 978-3-319-90800-7
  • Buy this book on publisher's site