Strange Loop

Enso: Composing DSL Interpreters, Languages & Aspects

Enso is an external language workbench with both graphical and textual editing capabilities. Each language is defined by a schema, or the model of its internal representation, which can be rendered either textually via a grammar or graphically via the diagramming DSL, stencil. Behavioral semantics in Enso are defined using model interpreters written in a subset of Ruby and executed in both Ruby and (via translation) JavaScript runtimes.

Enso executes on top of itself: internally, the various components of the workbench, including the schema, grammar and stencil languages, are implemented as a stack of self-describing Enso DSLs. This conceptually elegant self-reflection also has the practical advantage of allowing application developers, toolsmiths, and even Ens? extension builders to share the same toolchain.

The other key strength of Enso is strong support for language reuse across domains. DSLs can be composed, extended or wrapped via inheritance, either directly or in a cross-cutting manner, enabling powerful reuse of its language library. Generic template languages, such as the command language, are routinely extended to served as the backbone for a family of languages.

William Cook

William Cook

University of Texas at Austin

William Cook is an Associate Professor in the Department of Computer Sciences at the University of Texas at Austin. His research is focused on object-oriented programming, programming languages, modeling languages, and the interface between programming languages and databases. Prior to joining UT in 2003, Dr. Cook was Chief Technology Officer and co-founder of Allegis Corporation. He was chief architect for several award-winning products, including the eBusiness Suite at Allegis, the Writer's Solution for Prentice Hall, and the AppleScript language at Apple Computer. At HP Labs his research focused on the foundations of object-oriented languages, including formal models of mixins, inheritance, and typed models of object-oriented languages. He completed his Ph.D. in Computer Science at Brown University in 1989.