The concepts and techniques underlying the design and implementation of Spoofax are described in scientific publications in conference proceedings and journals.
While those publications are typically (somewhat) behind when it comes to technical details,
this documentation cannot replace that body of work when it comes to exposition of concepts and ideas.
We recommend students of Spoofax to explore the literature.
The work on Spoofax has its origins in the ASF+SDF MetaEnvironment [R4] and work on the SDF2 syntax definition formalism [R5]. Experience with rewriting in ASF lead to the development of the Stratego transformation language [R6].
The Spoofax language workbench was first developed as an IDE extension of Stratego/XT [R1], a tool set for program transformation based on SDF2 and Stratego.
The main publication about Spoofax is [R2], which was based on Spoofax 1.0 and develops the requirements and architecture for a language workbench supporting agile language development.
In [R3] we develop a vision and first prototype to take Spoofax to the web; realizing that vision is still work in progress.
The vision for a language designer’s workbench is outlined in [R7].
That vision drives the current (May 2017) ongoing development to enable higher-level definition of static and dynamic semantics in Spoofax.
We maintain a complete bibliography of research results on researchr.
In the chapters on specific components, we discuss their history and related publications.
|[R1]||Martin Bravenboer, Karl Trygve Kalleberg, Rob Vermaas, and Eelco Visser. Stratego/XT 0.17. A language and toolset for program transformation. Science of Computer Programming, 72(1-2):52–70, 2008. doi:10.1016/j.scico.2007.11.003.|
|[R2]||Lennart C. L. Kats and Eelco Visser. The Spoofax language workbench: rules for declarative specification of languages and IDEs. In William R. Cook, Siobhán Clarke, and Martin C. Rinard, editors, Proceedings of the 25th Annual ACM SIGPLAN Conference on Object-Oriented Programming, Systems, Languages, and Applications, OOPSLA 2010, 444–463. Reno/Tahoe, Nevada, 2010. ACM. doi:10.1145/1869459.1869497.|
|[R3]||Lennart C. L. Kats, Richard Vogelij, Karl Trygve Kalleberg, and Eelco Visser. Software development environments on the web: a research agenda. In Gary T. Leavens and Jonathan Edwards, editors, ACM Symposium on New Ideas in Programming and Reflections on Software, Onward! 2012, part of SPLASH ‘12, Tucson, AZ, USA, October 21-26, 2012, 99–116. ACM, 2012. doi:10.1145/2384592.2384603.|
|[R4]||Mark G. J. van den Brand, Arie van Deursen, Jan Heering, H. A. de Jong, Merijn de Jonge, Tobias Kuipers, Paul Klint, Leon Moonen, Pieter A. Olivier, Jeroen Scheerder, Jurgen J. Vinju, Eelco Visser, and Joost Visser. The ASF+SDF meta-environment: a component-based language development environment. In Reinhard Wilhelm, editor, Compiler Construction, 10th International Conference, CC 2001 Held as Part of the Joint European Conferences on Theory and Practice of Software, ETAPS 2001 Genova, Italy, April 2-6, 2001, Proceedings, volume 2027 of Lecture Notes in Computer Science, 365–370. Springer, 2001. doi:10.1016/S1571-0661(04)80917-4.|
|[R5]||Eelco Visser. Syntax Definition for Language Prototyping. PhD thesis, University of Amsterdam, September 1997.|
|[R6]||Eelco Visser, Zine-El-Abidine Benaissa, and Andrew P. Tolmach. Building program optimizers with rewriting strategies. In Matthias Felleisen, Paul Hudak, and Christian Queinnec, editors, Proceedings of the third ACM SIGPLAN international conference on Functional programming, 13–26. Baltimore, Maryland, United States, 1998. ACM. doi:10.1145/289423.289425.|
|[R7]||Eelco Visser, Guido Wachsmuth, Andrew P. Tolmach, Pierre Néron, Vlad A. Vergu, Augusto Passalaqua, and Gabriël D. P. Konat. A language designer’s workbench: a one-stop-shop for implementation and verification of language designs. In Andrew P. Black, Shriram Krishnamurthi, Bernd Bruegge, and Joseph N. Ruskiewicz, editors, Onward! 2014, Proceedings of the 2014 ACM International Symposium on New Ideas, New Paradigms, and Reflections on Programming & Software, part of SLASH ‘14, Portland, OR, USA, October 20-24, 2014, 95–111. ACM, 2014. doi:10.1145/2661136.2661149.|