Domain-Specific Languages Made Easy
Meinte Boersma
  • MEAP began August 2020
  • Publication in Spring 2021 (estimated)
  • ISBN 9781617296475
  • 325 pages (estimated)
  • printed in black & white

A great alternative to DSL implementations that not many resources out there cover.

Adhir Ramjiawan
Domain-specific languages are custom text or graphical interfaces that allow domain experts to create and modify their own software systems. With a syntax that's clear and familiar to the non-technical user, DSLs are precise enough to generate working software in traditional code with. Written for developers who need to create user-facing DSLs, Domain-Specific Languages Made Easy unlocks clear and practical methods to create DSLs with easy-to-use interfaces. By working through a detailed example of a car rental company, you'll see how creating a custom DSL can get rid of time-consuming and bureaucratic code adjustments, freeing you up to work on features whilst your clients and colleagues write their software themselves!

About the Technology

Imagine if your non-technical clients could safely produce software without the need for anyone to manually write code. Domain-specific languages are purpose-built programming interfaces that make that possible—no programming experience required. This frees software developers from the time-consuming translation of a client's functional and domain-specific specifications, replacing complex code for modern and intuitive UIs.

About the book

Domain-Specific Languages Made Easy shows you how to design and build modern DSLs for business users. Drawing on years of industry experience, author Meinte Boersma lays out an iterative process for creating languages accessible to domain experts such as operations specialists, data analysts, and financial experts. You'll start with an overview of software language engineering before diving into the unique projectional editing paradigm that makes it easy to produce DSLs for business. There are no special tools or proprietary software required—you'll work with an open source JavaScript stack that ensures the techniques you learn are easy to port between projects.
Table of Contents detailed table of contents

1 What is a Domain-Specific Language?

1.1 A business case: a car rental company.

1.2 Using a DSL-based approach for software development.

1.2.1 The design of the Domain IDE.

1.2.2 The architecture of the Domain IDE.

1.2.3 What we’ll be doing in this book.

1.3 Why use a DSL-based approach for software development?

1.3.1 Empowering the domain experts.

1.3.2 Improving efficiency of the software development process.

1.3.3 New possibilities.

1.3.4 When (not) to use a DSL-based approach?

1.4 What is a DSL?

1.4.1 Key aspects.

1.5 Summary

2 Representing DSL content as structured data

2.1 Establishing an object-relation diagram notation to represent structured data.

2.2 Going from concrete, to abstract syntax.

2.3 Summary

3 Working with ASTs in code

3.1 Turning ASTs into code.

3.1.1 Encoding containment relations.

3.1.2 Encoding reference relations.

3.2 Interacting with ASTs.

3.2.1 Accessing concept labels, and settings' values.

3.2.2 Recognizing AST objects and references.

3.3 Traversing ASTs.

3.3.1 The general recipe for depth-first tree traversal.

3.3.2 Example: counting leaves of an AST.

3.4 Summary

4 Projecting the AST

4.1 Preparing the implementation of the projection

4.2 Implementing the projection iteratively

4.2.1 Projecting record types

4.2.2 Projecting attributes

4.2.3 Projecting the initial values

4.3 Summary

5 Editing values in the projection

5.1 Changing names

5.1.1 Starting the editing

5.1.2 Using edit state

5.1.3 A reactive architecture for projectional editors

5.1.4 Reacting to change with MobX

5.1.5 Stopping the editin

5.1.6 Updating the AS

5.2 Changing the value of a number literal

5.3 Choosing the type of an attribute

5.4 Choosing an attribute for a reference

5.5 Summary

6 Editing objects in the projection

6.1 Adding new objects to the AST

6.1.1 Adding an attribute

6.1.2 Adding an initial value

6.2 Selecting objects

6.2.1 Selecting an attribute

6.2.2 Deselecting an attribute

6.2.3 Selecting and deselecting any object

6.3 Deleting objects

6.3.1 Deleting initial values

6.3.2 Deleting attributes

6.3.3 Deleting any object

6.4 Summary

7 Implementing AST persistence

8 Generating code from the AST

9 Checking the AST

10 Implementing expressions

11 Generating code for business rules

12 More visualization and interaction

13 Evolving a DSL

14 Designing a DSL

15 What we didn’t cover


Appendix A: Setting up a development environment

What's inside

  • Build a complete Domain IDE for a car rental company
  • Implement a projectional editor for your DSL
  • Implement content assist, type system, expressions, and versioning language aspects
  • Evaluate business rules
  • Work with Abstract Syntax Trees
  • Reduce notated DSL content in concrete syntax into abstract syntax

About the reader

For developers with JavaScript and web development experience.

About the author

Meinte Boersma has been a practitioner of model-driven software development and software language engineering since 2007. He has given workshops on DSL, participated in organizing the Language Workbench Challenge, and has spoken at conferences on DSLs.

placing your order...

Don't refresh or navigate away from the page.
Manning Early Access Program (MEAP) Read chapters as they are written, get the finished eBook as soon as it’s ready, and receive the pBook long before it's in bookstores.
print book $49.99 pBook + eBook + liveBook
Additional shipping charges may apply
Domain-Specific Languages Made Easy (print book) added to cart
continue shopping
go to cart

eBook $39.99 3 formats + liveBook
Domain-Specific Languages Made Easy (eBook) added to cart
continue shopping
go to cart

Prices displayed in rupees will be charged in USD when you check out.

FREE domestic shipping on three or more pBooks