Language Design with the Spoofax Language Workbench

IDEs are essential for programming language developers, and state-of-the-art IDE support is mandatory for programming languages to be successful. Although IDE features for mainstream programming languages are typically implemented manually, this often isn't feasible for programming languages that must be developed with significantly fewer resources. The Spoofax language workbench is a platform for developing textual programming languages with state-of-the-art IDE support. Spoofax is a comprehensive environment that integrates syntax definition, name binding, type analysis, program transformation, code generation, and declarative specification of IDE components. It also provides high-level languages for each of these aspects. These languages are highly declarative, abstracting over the implementation of IDE features and letting engineers focus on language design.

[1]  Eelco Visser,et al.  A Language Designer's Workbench: A One-Stop-Shop for Implementation and Verification of Language Designs , 2014, Onward!.

[2]  Eelco Visser,et al.  The State of the Art in Language Workbenches - Conclusions from the Language Workbench Challenge , 2013, SLE.

[3]  Eelco Visser,et al.  The spoofax language workbench: rules for declarative specification of languages and IDEs , 2010, OOPSLA.

[4]  Eelco Visser,et al.  Testing domain-specific languages , 2011, OOPSLA Companion.

[5]  Paul Klint,et al.  EASY Meta-programming with Rascal , 2009, GTTSE.

[6]  Eelco Visser,et al.  Declarative Name Binding and Scope Rules , 2012, SLE.

[7]  Eelco Visser,et al.  WebDSL: a domain-specific language for dynamic web applications , 2008, OOPSLA Companion.

[8]  Eelco Visser,et al.  Pure and declarative syntax definition: paradise lost and regained , 2010, OOPSLA.

[9]  Kunle Olukotun,et al.  Green-Marl: a DSL for easy and efficient graph analysis , 2012, ASPLOS XVII.

[10]  Eelco Visser,et al.  Declaratively programming the mobile web with Mobl , 2011, OOPSLA '11.

[11]  Eelco Visser,et al.  Declarative specification of template-based textual editors , 2012, LDTA.

[12]  Eelco Visser,et al.  A Language Independent Task Engine for Incremental Name and Type Analysis , 2013, SLE.

[13]  Eelco Visser,et al.  Natural and Flexible Error Recovery for Generated Modular Language Environments , 2012, TOPL.

[14]  Heiko Behrens,et al.  Xtext: implement your language faster than the quick and dirty way , 2010, SPLASH/OOPSLA Companion.

[15]  Markus Völter,et al.  Language modularity with the MPS language workbench , 2012, 2012 34th International Conference on Software Engineering (ICSE).

[16]  Eelco Visser,et al.  Library-based model-driven software development with SugarJ , 2011, OOPSLA Companion.

[17]  Eelco Visser,et al.  Stratego/XT 0.17. A language and toolset for program transformation , 2008, Sci. Comput. Program..

[18]  Torben Amtoft,et al.  Faithful Translations between Polyvariant Flows and Polymorphic Types , 2000, ESOP.