We've all seen the explosion of fluent interfaces and internal DSLs with the language-oriented features of recent releases of C#. Dynamic languages extend the boundaries even further, where we can bend the programming languages to our will.
But what if we want to move beyond the barriers of the programming language and into actual external, executable DSLs? In this session, we'll look at the landscape of lexers, parsers, grammars and trees to see how we can use these tools to build external DSLs that business users will actually enjoy using. We'll also look at how we can take those trees and transform them into real, executable code.
Finally, we'll see where to use external DSLs (and where not to use them) to build systems with truly dynamic behavior.