To my grandfather, who taught me my first alphabet
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
Chapter 2. The DSL in the wild
Chapter 3. DSL-driven application development
2. Implementing DSLs
Chapter 4. Internal DSL implementation patterns
Chapter 5. Internal DSL design in Ruby, Groovy, and Clojure
Chapter 6. Internal DSL design in Scala
Chapter 7. External DSL implementation artifacts
Chapter 8. Designing external DSLs using Scala parser combinators
3. Future trends in DSL development
Chapter 9. DSL design: looking forward
Appendix A. Role of abstractions in domain modeling
Appendix B. Metaprogramming and DSL design
Appendix C. A cheat sheet for Ruby’s DSL-friendly features
Appendix D. A cheat sheet for Scala’s DSL-friendly features
Appendix E. A cheat sheet for Groovy’s DSL-friendly features
Appendix F. A cheat sheet for Clojure’s DSL-friendly features
Appendix G. Polyglot development
Index
List of Figures
List of Tables
List of Listings
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