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