Table of Contents

 

Copyright

Brief Table of Contents

Table of Contents

Foreword

Preface

Acknowledgments

About the Book

1. Introducing domain-specific languages

Chapter 1. Learning to speak the language of the domain

1.1. The problem domain and the solution domain

1.1.1. The problem domain

1.1.2. The solution domain

1.2. Domain modeling: establishing a common vocabulary

1.2.1. Benefits of a common vocabulary

1.3. Introducing DSLs

1.3.1. What’s a DSL?

1.3.2. Popular DSLs in use

1.3.3. Structure of a DSL

1.4. Execution model of a DSL

1.5. Classifying DSLs

1.5.1. Internal DSLs

1.5.2. External DSLs

1.5.3. Nontextual DSLs

1.6. When do you need a DSL?

1.6.1. The advantages

1.6.2. The disadvantages

1.7. DSLs and abstraction design

1.8. Summary

1.9. References

Chapter 2. The DSL in the wild

2.1. Building your first Java DSL

2.1.1. Setting up the common vocabulary

2.1.2. Your first Java implementation

2.2. Making friendlier DSLs

2.2.1. Externalizing the domain with XML

2.2.2. Groovy: a more expressive implementation language

2.2.3. Executing the Groovy DSL

2.3. DSL implementation patterns

2.3.1. Internal DSL patterns: commonality and variability

2.3.2. External DSL patterns: commonality and variability

2.4. Choosing DSL implementations

Reusing existing infrastructure

Leveraging existing knowledge

Learning curve with external DSLs

The right level of expressivity

Composability

2.5. Summary