𝔖 Scriptorium
✦   LIBER   ✦

πŸ“

DSL Engineering: Designing, Implementing and Using Domain-Specific Languages

✍ Scribed by Markus Voelter


Publisher
dslbook.org
Year
2013
Tongue
English
Leaves
560
Category
Library

⬇  Acquire This Volume

No coin nor oath required. For personal study only.

✦ Synopsis


(with Sebastian Benz, Christian Dietrich, Birgit Engelmann Mats Helander, Lennart Kats, Eelco Visser, Guido Wachsmuth)

[This book is donationware.]

Domain-Specific Languages are programming languages that are tailored to a particular application domain. By incorporating knowledge about that domain, DSLs can lead to more concise and more analyzable programs, improved code quality, tighter stakeholder integration and faster development speed. This book provides a thorough introduction to DSLs, relying on today’s state-of-the-art language workbenches, lots of examples and years of experience. The book has four parts, each focussing on a different aspect of DSL development.

  1. Introduction: This part introduces DSLs in general and discusses their advantages and drawbacks. It defines important terms and concepts and introduces the case studies and tools used in most of the remainder of the book.

  2. DSL Design: This part focusses on the design of DSLs – regardless of implementation technologies. It discusses seven design dimensions, explains a number of reusable language paradigms and points out a number of process-related issues.

  3. DSL Implementation: This part provides details about the implementation of DSLs, using lots of examples. It uses three state-of-the-art but quite different language workbenches: JetBrains MPS, Eclipse Xtext and TU Delft’s Spoofax

  4. DSLs in Software Engineering: This part discusses the use of DSLs for requirements engineering, architecture, implementation and product line engineering, as well as their roles as a developer utility and for implementing business logic.

✦ Table of Contents


I Introduction......Page 8
Thank You!......Page 10
This book is Donationware......Page 11
Why this Book......Page 12
Who should Read this Book......Page 13
The Structure of the Book......Page 14
How to Read the Book......Page 15
Example Tools......Page 16
Case Studies and Examples......Page 17
Very Brief Introduction to the Terminology......Page 26
From General Purpose Languages to DSLs......Page 28
Modeling and Model-Driven Development......Page 32
Modular Languages......Page 35
Benefits of using DSLs......Page 41
Challenges......Page 44
Applications of DSLs......Page 48
Differentiation from other Works and Approaches......Page 51
II DSL Design......Page 54
Programs, Languages and Domains......Page 58
Model Purpose......Page 62
The Structure of Programs and Languages......Page 64
Parsing versus Projection......Page 68
Design Dimensions......Page 70
Expressivity......Page 71
Coverage......Page 81
Semantics and Execution......Page 83
Separation of Concerns......Page 103
Completeness......Page 112
Language Modularity......Page 117
Concrete Syntax......Page 133
Structure......Page 142
Behavior......Page 150
Combinations......Page 159
DSL Development......Page 162
Using DSLs......Page 169
III DSL Implementation......Page 174
Concrete and Abstract Syntax......Page 178
Fundamentals of Free Text Editing and Parsing......Page 180
Fundamentals of Projectional Editing......Page 189
Comparing Parsing and Projection......Page 190
Characteristics of AST Formalisms......Page 197
Xtext Example......Page 201
Spoofax Example......Page 208
MPS Example......Page 213
Scoping and Linking......Page 222
Scoping in Spoofax......Page 224
Scoping in Xtext......Page 230
Scoping in MPS......Page 235
Constraints......Page 240
Constraints in Xtext......Page 242
Constraints in MPS......Page 243
Constraints in Spoofax......Page 248
Type Systems......Page 254
Type Systems Basics......Page 255
Type Calculation Strategies......Page 256
Xtext Example......Page 261
MPS Example......Page 264
Spoofax Example......Page 268
Transformation and Generation......Page 272
Overview of the approaches......Page 273
Xtext Example......Page 275
MPS Example......Page 282
Spoofax Example......Page 291
Building Interpreters......Page 298
Building an Interpreter with Xtext......Page 300
An Interpreter in MPS......Page 307
An Interpreter in Spoofax......Page 309
Code Completion......Page 314
Syntax Coloring......Page 317
Go-to-Definition and Find References......Page 322
Pretty-Printing......Page 324
Quick Fixes......Page 328
Refactoring......Page 330
Labels and Icons......Page 334
Outline......Page 335
Code Folding......Page 337
Tooltips/Hover......Page 338
Visualizations......Page 340
Diff and Merge......Page 342
Testing DSLs......Page 344
Syntax Testing......Page 345
Constraints Testing......Page 347
Semantics Testing......Page 350
Formal Verification......Page 357
Testing Editor Services......Page 364
Testing for Language Appropriateness......Page 368
Debugging the DSL Definition......Page 370
Debugging DSL Programs......Page 377
Introduction......Page 394
MPS Example......Page 395
Xtext Example......Page 415
Spoofax Example......Page 429
IV DSLs in Software Engineering......Page 440
What are Requirements?......Page 444
Requirements versus Design versus Implementation......Page 446
Using DSLs for Requirements Engineering......Page 448
Integration with Plain Text Requirements......Page 451
What is Software Architecture?......Page 456
Architecture DSLs......Page 458
Component Models......Page 469
DSLs as Programmer Utility......Page 478
The Context......Page 479
Jnario Described......Page 480
Implementation......Page 483
Summary......Page 488
Introduction......Page 490
Challenges in Embedded Software......Page 492
The mbeddr Approach......Page 494
Design and Implementation......Page 502
Experiences......Page 512
Discussion......Page 519
Introduction......Page 522
Feature Models......Page 523
Connecting Feature Models to Artifacts......Page 524
From Feature Models to DSLs......Page 529
Conceptual Mapping from PLE to DSLs......Page 535
Intentional Software......Page 540
The Project Challenge......Page 541
The DSL-Based Solution......Page 542
Wrapping Up......Page 559


πŸ“œ SIMILAR VOLUMES


Variable Domain-specific Software Langua
✍ Stefan Sobernig πŸ“‚ Library πŸ“… 2020 πŸ› Springer International Publishing;Springer 🌐 English

<p><p>This book details the conceptual foundations, design and implementation of the domain-specific language (DSL) development system DjDSL. DjDSL facilitates design-decision-making on and implementation of reusable DSL and DSL-product lines, and represents the state-of-the-art in language-based an

Software Language Engineering: Creating
✍ Anneke Kleppe πŸ“‚ Library πŸ“… 2008 πŸ› Addison-Wesley Professional 🌐 English

Software practitioners are rapidly discovering the immense value of Domain-Specific Languages (DSLs) in solving problems within clearly definable problem domains. Developers are applying DSLs to improve productivity and quality in a wide range of areas, such as finance, combat simulation, macro scri

Software language engineering: creating
✍ Kleppe, Anneke G;Favre, Jean-Marie(Foreword by) πŸ“‚ Library πŸ“… 2008;2009 πŸ› Addison-Wesley Professional 🌐 English

Software practitioners are rapidly discovering the immense value of Domain-Specific Languages (DSLs) in solving problems within clearly definable problem domains. Developers are applying DSLs to improve productivity and quality in a wide range of areas, such as finance, combat simulation, macro scri

Implementing domain-specific languages w
✍ Bettini L. πŸ“‚ Library πŸ“… 2013 πŸ› Packt 🌐 English

<p>Learn how to implement a DSL with Xtext and Xtend using easy-to-understand examples and best practices</p> <p><b>Overview</b></p> <ul> <li>Learn to quickly develop a domain-specific language with Xtext</li> <li>Implement any aspect of a DSL using Xtend, a fully featured Java-like programming lang

Implementing Domain Specific Languages w
✍ Lorenzo Bettini πŸ“‚ Library πŸ“… 2016 πŸ› Packt Publishing 🌐 English

<p><b>Learn how to implement a DSL with Xtext and Xtend using easy-to-understand examples and best practices</b></p><h2>About This Book</h2><ul><li>Leverage the latest features of Xtext and Xtend to develop a domain-specific language.</li><li>Integrate Xtext with popular third party IDEs and get the