Chapter 1: An Introductory Example
Programming Miss Grant’s Controller
Chapter 2: Using Domain-Specific Languages
Defining Domain-Specific Languages
Fragmentary and Stand-alone DSLs
Improving Development Productivity
Communication with Domain Experts
Alternative Computational Model
Architecture of DSL Processing
Grammars, Syntax, and Semantics
Chapter 4: Implementing an Internal DSL
Using Grammars to Choose Internal Elements
Chapter 5: Implementing an External DSL
Regular, Context-Free, and Context-Sensitive Grammars
Top-Down and Bottom-Up Parsing
Chapter 6: Choosing between Internal and External DSLs
Communication with Domain Experts
Strong Expressiveness Boundary
Chapter 7: Alternative Computational Models
Mixing Generated and Handwritten Code
Chapter 9: Language Workbenches
Elements of Language Workbenches
Schema Definition Languages and Meta-Models
Source and Projectional Editing
Language Workbenches and CASE tools
Should You Use a Language Workbench?
Hibernate Query Language (HQL)
The Introductory Example (Java)
Dependency Network in an External DSL (Java and ANTLR)
Using Symbolic Keys in an Internal DSL (Ruby)
Using Enums for Statically Typed Symbols (Java)
Chapter 14: Construction Builder
Building Simple Flight Data (C#)
A Very Simple Notification (C#)
Chapter 17: Delimiter-Directed Translation
Parsing Nonautonomous Statements with Miss Grant’s Controller (Java)
Chapter 18: Syntax-Directed Translation
Multiplicity Symbols (Kleene Operators)
Chapter 20: Regex Table Lexer (by Rebecca Parsons)
Lexing Miss Grant’s Controller (Java)
Chapter 21: Recursive Descent Parser (by Rebecca Parsons)
Recursive Descent and Miss Grant’s Controller (Java)
Chapter 22: Parser Combinator (by Rebecca Parsons)
Functional Style of Combinators
Parser Combinators and Miss Grant’s Controller (Java)
Building the Syntactic Analyzer
Adding Code Actions to the Grammar
Using ANTLR’s Tree Construction Syntax (Java and ANTLR)
Tree Construction Using Code Actions (Java and ANTLR)
Chapter 25: Embedded Translation
Miss Grant’s Controller (Java and ANTLR)
Chapter 26: Embedded Interpretation
Embedding Dynamic Code (ANTLR, Java, and Javascript)
Chapter 28: Alternative Tokenization
Chapter 29: Nested Operator Expression
Chapter 30: Newline Separators
Chapter 31: External DSL Miscellany
Chapter 32: Expression Builder
A Fluent Calendar with and without a Builder (Java)
Using Multiple Builders for the Calendar (Java)
Simple Computer Configuration (Java)
The Simple Computer Configuration Example (Java)
Handling Multiple Different Arguments with Tokens (C#)
Using Subtype Tokens for IDE Support (Java)
Using Object Initializers (C#)
The Simple Computer Configuration Example (Java)
Using Instance Evaluation (Ruby)
Using an Instance Initializer (Java)
Wrapping a Function Sequence in a Nested Closure (Ruby)
Function Sequence with Explicit Closure Arguments (Ruby)
Using Instance Evaluation (Ruby)
The Computer Configuration Using Lists and Maps (Ruby)
Evolving to Greenspun Form (Ruby)
Promotion Points Using Parsed Method Names (Ruby)
Promotion Points Using Chaining (Ruby)
Removing Quoting in the Secret Panel Controller (JRuby)
Custom Syntax with Runtime Processing (Java)
Dynamic Code Generation (Ruby)
Chapter 43: Parse Tree Manipulation
Generating IMAP Queries from C# Conditions (C#)
Chapter 44: Class Symbol Table
Statically Typed Class Symbol Table (Java)
Polished Discount Rules (Ruby)
Part V: Alternative Computational Models
Incorporating Imperative Code into an Adaptive Model
Calculating the Fee for an Order (C#)
Chapter 49: Dependency Network
Chapter 50: Production Rule System
Validations for club membership (C#)
Eligibility Rules: extending the club membership (C#)
Secret Panel Controller (Java)
Chapter 52: Transformer Generation
Secret Panel Controller (Java generating C)
Chapter 53: Templated Generation
Generating the Secret Panel State Machine with Nested Conditionals (Velocity and Java generating C)
Secret Panel States (Java and ANTLR)
Should a Helper Generate HTML? (Java and Velocity)
Chapter 55: Model-Aware Generation
Secret Panel State Machine (C)
Loading the State Machine Dynamically (C)
Chapter 56: Model Ignorant Generation
Secret Panel State Machine as Nested Conditionals (C)
Generating Classes from a Data Schema (Java and a Little Ruby)
3.139.82.4