26. There's no life without trees
● Extending IDEs
● External DSLs
● Internal DSLs in modern languages
● Groovy AST transformations
● Scala macros
● Lisp, Clojure macros
● Lombok
38. Parsing is the bottleneck
… of language expressiveness
● Limits the possible syntaxes
● Allows only one editable code visualization
● Complicates combining languages
39. Aspects of language definition
● Abstract syntax
● Concrete syntax (editor)
● Static semantics
● Constraints
● Type-system
● Dataflow
● Execution semantics / Generator
● IDE support