Abstract
Spoofax is a language workbench for efficient, agile development of textual domain-specific languages with state-of-the-art IDE support. Spoofax integrates language processing techniques for parser generation, meta-programming, and IDE development into a single environment. It uses concise, declarative specifications for languages and IDE services. In this paper we describe the architecture of Spoofax and introduce idioms for high-level specifications of language semantics using rewrite rules, showing how analyses can be reused for transformations, code generation, and editor services such as error marking, reference resolving, and content completion. The implementation of these services is supported by language-parametric editor service classes that can be dynamically loaded by the Eclipse IDE, allowing new languages to be developed and used side-by-side in the same Eclipse environment.
- }}The Spoofax project. http://www.spoofax.org/.Google Scholar
- }}P. Borras, D. Clement, T. Despeyroux, J. Incerpi, G. Kahn, B. Lang, and V. Pascual. Centaur: the system. SIGPLAN Not., 24(2):14--24, 1989. Google ScholarDigital Library
- }}M. Bravenboer, K. T. Kalleberg, R. Vermaas, and E. Visser. Stratego/XT 0.17. A language and toolset for program transformation. Sci. of Comp. Programming, 72(1-2):52--70, June 2008. Special issue on experimental software and toolkits. Google ScholarDigital Library
- }}M. Bravenboer, A. van Dam, K. Olmos, and E. Visser. Program transformation with scoped dynamic rewrite rules. Fundamenta Informaticae, 69(1-2):123--178, 2006. Google ScholarDigital Library
- }}M. Bravenboer and E. Visser. Concrete syntax for objects: domain-specific language embedding and assimilation without restrictions. In OOPSLA, pages 365--383, 2004. Google ScholarDigital Library
- }}F. Budinsky, D. Steinberg, E. Merks, R. Ellersick, and T. J. Grose. Eclipse Modeling Framework. Addison-Wesley, 2004. Google ScholarDigital Library
- }}P. Charles, R. M. Fuhrer, and S. M. Sutton, Jr. IMP: a meta-tooling platform for creating language-specific IDEs in Eclipse. In ASE 2007, pages 485--488, 2007. Google ScholarDigital Library
- }}P. Charles, R. M. Fuhrer, S. M. Sutton, Jr., E. Duesterwald, and J. Vinju. Accelerating the creation of customized, language-specific IDEs in Eclipse. In OOPSLA 2009. ACM, 2009. Google ScholarDigital Library
- }}S. Cook, G. Jones, S. Kent, and A. C. Wills. Domain-Specific Development with Visual Studio DSL Tools. Addison Wesley, 2007. Google ScholarDigital Library
- }}J. R. Cordy, C. D. Halpern-Hamu, and E. Promislow. TXL: a rapid prototyping system for programming language dialects. In Conf. on Comp. Languages, pages 280--285. IEEE, 1988.Google ScholarCross Ref
- }}M. de Jonge, E. Nilsson-Nyman, L. C. L. Kats, and E. Visser. Natural and flexible error recovery for generated parsers. In SLE, 2010. Google ScholarDigital Library
- }}A. v. Deursen, J. Heering, and P. Klint, editors. Language Prototyping: An Algebraic Specification Approach, volume 5 of AMAST Series in Computing. World Sci. Publ. Co., 1996. Google ScholarDigital Library
- }}S. Efftinge et al. openArchitectureWare User Guide. Version 4.3. Available from http://www.eclipse.org/gmt/oaw/doc/4.3/html/contents/, April 2008.Google Scholar
- }}S. Efftinge and M. Voelter. oAW xText: A framework for textual DSLs. In Workshop on Modeling Symposium at Eclipse Summit, 2006.Google Scholar
- }}M. Fowler. A language workbench in action - MPS. http://martinfowler.com/articles/mpsAgree.html, 2005.Google Scholar
- }}M. Fowler. Language workbenches: The killer-app for domain specific languages?http://martinfowler.com/articles/languageWorkbench.html, 2005.Google Scholar
- }}M. Fowler. PostIntelliJ. http://martinfowler.com/bliki/PostIntelliJ.html, 2005.Google Scholar
- }}M. Fowler. A pedagogical framework for domain-specific languages. IEEE Software, 26:13--14, 2009. Google ScholarDigital Library
- }}T. Goldschmidt, S. Becker, and A. Uhl. Classification of concrete textual syntax mapping approaches. In ECMDA-FA 2008, volume 5095 of LNCS, pages 169--184. Springer, 2008. Google ScholarDigital Library
- }}G. Hedin and E. Magnusson. JastAdd: an aspect-oriented compiler construction system.Sci. Comput. Program., 47(1):37--58, 2003. Google ScholarDigital Library
- }}J. Heering, P. R. H. Hendriks, P. Klint, and J. Rekers. The syntax definition formalism SDF: Reference manual. SIGPLAN Not., 24(11):43--75, 1989. Google ScholarDigital Library
- }}F. Heidenreich, J. Johannes, S. Karol, M. Seifert, and C. Wende. Derivation and refinement of textual syntax for models. In ECMDA-FA, pages 114--129, 2009. Google ScholarDigital Library
- }}Z. Hemel, L. C. L. Kats, D. M. Groenewegen, and E. Visser. Code generation by model transformation. A case study in transformation modularity. Softw. and Syst. Modeling, 2009.Google Scholar
- }}Z. Hemel and E. Visser. PIL: A platform independent language for retargetable DSLs. In SLE, 2010. Google ScholarDigital Library
- }}JetBrains. Meta programming system. https://www. jetbrains.com/mps.Google Scholar
- }}F. Jouault, J. Bezivin, and I. Kurtev. TCS: a DSL for the specification of textual concrete syntaxes in model engineering. In Generative and Component Engineering (GPCE'06), pages 249--254. ACM, 2006. Google ScholarDigital Library
- }}K. T. Kalleberg and E. Visser. Spoofax: An interactive development environment for program transformation with Stratego/XT. In Workshop on Language Descriptions, Tools, and Applications (LDTA 2007), pages 47--50, 2007.Google Scholar
- }}K. T. Kalleberg and E. Visser. Fusing a transformation language with an open compiler. In Workshop on Language Descriptions, Tools, and Applications (LDTA 2007), volume 203 of ENTCS, pages 21--36. Elsevier, April 2008. Google ScholarDigital Library
- }}L. C. L. Kats, M. de Jonge, E. Nilsson-Nyman, and E. Visser. Providing rapid feedback in generated modular language environments. Adding error recovery to scannerless generalized-LR parsing. In OOPSLA, pages 445--464, 2009. Google ScholarDigital Library
- }}L. C. L. Kats, K. T. Kalleberg, and E. Visser. Domain-specific languages for composable editor plugins. In Workshop on Language Descriptions, Tools, and Applications (LDTA 2009). Elsevier, April 2009.Google Scholar
- }}L. C. L. Kats, A. M. Sloane, and E. Visser. Decorated attribute grammars. Attribute evaluation meets strategic programming. In Conference on Compiler Construction (CC 2009), volume 5501 of LNCS, pages 142--157. Springer, March 2009. Google ScholarDigital Library
- }}L. C. L. Kats, E. Visser, and G. Wachsmuth. Pure and declarative syntax definition: Paradise lost and regained. In Onward!, 2010. Google ScholarDigital Library
- }}S. Kelly and J.-P. Tolvanen. Domain-Specific Modeling. Enabling Full Code Generation. John Wiley & Sons, Inc., 2008. Google ScholarDigital Library
- }}P. Klint. A meta-environment for generating programming environments. ACM Transactions on Software Engineering Methodology, 2(2):176--201, 1993. Google ScholarDigital Library
- }}P. Klint, T. van der Storm, and J. Vinju. Rascal: a domain specific language for source code analysis and manipulation. In SCAM, pages 168--177, 2009. Google ScholarDigital Library
- }}H. Krahn, B. Rumpe, and S. Volkel. Monticore: Modular development of textual domain specific languages. In TOOLS, pages 297--315, 2008.Google ScholarCross Ref
- }}M. F. Kuiper and J. Saraiva. Lrc - a generator for incremental language-oriented tools. In Compiler Construction (CC'98), pages 298--301, London, UK, 1998. Springer-Verlag. Google ScholarDigital Library
- }}M. Mernik, J. Heering, and A. Sloane. When and how to develop domain-specific languages. ACM Computing Surveys (CSUR), 37(4):344, 2005. Google ScholarDigital Library
- }}N. Nystrom, M. Clarkson, and A. Myers. Polyglot: An Extensible Compiler Framework for Java. Compiler Construction (CC'03), 2622:138--152, Apr. 2003. Google ScholarDigital Library
- }}M. Pfeiffer and J. Pichler. A comparison of tool support for textual domain-specific languages. In Workshop on Domain-Specific Modeling, pages 1--7, 2008.Google Scholar
- }}T. Reps and T. Teitelbaum. The synthesizer generator. SIGSOFT Softw. Eng. Notes, 9(3):42--48, 1984. Google ScholarDigital Library
- }}S. Saunders, D. K. Fields, and E. Belayev. IntelliJ IDEA in Action. Manning, 2006. Google ScholarDigital Library
- }}C. Simonyi. The death of computer languages, the birth of Intentional Programming. Tech. report, MS Research, 1995.Google Scholar
- }}M. Van den Brand, A. Van Deursen, J. Heering, H. De Jong, et al. The Asf+Sdf Meta-Environment A Component-Based Language Development Environment. In Compiler Construction, volume 44 of LNCS, pages 365--370. Springer, 2001. Google ScholarDigital Library
- }}M. G. J. van den Brand, H. de Jong, P. Klint, and P. Olivier. Efficient annotated terms. Software, Practice & Experience, 30(3):259--291, 2000. Google ScholarDigital Library
- }}A. van Deursen, P. Klint, and F. Tip. Origin tracking. Journal of Symbolic Computation, 15(5/6):523--545, 1993. Google ScholarDigital Library
- }}A. van Deursen, P. Klint, and J. Visser. Domain-specific languages: an annotated bibliography. SIGPLAN Not., 35(6):26--36, 2000. Google ScholarDigital Library
- }}S. Vermolen and E. Visser. Heterogeneous coupled evolution of software languages. In MoDELS, pages 630--644, 2008. Google ScholarDigital Library
- }}E. Visser. A family of syntax definition formalisms. Technical Report P9706, Programming Research Group, University of Amsterdam, July 1997.Google Scholar
- }}E. Visser. Meta-programming with concrete object syntax. In GPCE, pages 299--315, 2002. Google ScholarDigital Library
- }}E. Visser. WebDSL: A case study in domain-specific language engineering. In GTTSE, pages 291--373, 2007.Google Scholar
- }}E. Visser, Z.-E.-A. Benaissa, and A. P. Tolmach. Building program optimizers with rewriting strategies. In ICFP, pages 13--26, 1998. Google ScholarDigital Library
- }}W. Waite and G. Goss. Compiler construction. 1984. {54} M. P. Ward. Language-oriented programming. Software Concepts and Tools, 15(4):147--161, 1994.Google Scholar
- }}Textual Editing Framework (TEF). http://www.informatik.hu-berlin.de/sam/meta-tools/tef.Google Scholar
- }}Textual modeling framework (TMF). http://www.eclipse.org/modeling/tmf/.Google Scholar
- }}The WAtson Libraries for Analysis. http://wala.sourceforge.net/.Google Scholar
Index Terms
- The spoofax language workbench: rules for declarative specification of languages and IDEs
Recommendations
The spoofax language workbench: rules for declarative specification of languages and IDEs
OOPSLA '10: Proceedings of the ACM international conference on Object oriented programming systems languages and applicationsSpoofax is a language workbench for efficient, agile development of textual domain-specific languages with state-of-the-art IDE support. Spoofax integrates language processing techniques for parser generation, meta-programming, and IDE development into ...
The Spoofax language workbench
OOPSLA '10: Proceedings of the ACM international conference companion on Object oriented programming systems languages and applications companionSpoofax is a language workbench for efficient, agile development of textual domain-specific languages with state-of-the-art IDE support. It provides a comprehensive environment that integrates syntax definition, program transformation, code generation, ...
Language extension and composition with language workbenches
OOPSLA '10: Proceedings of the ACM international conference companion on Object oriented programming systems languages and applications companionDomain-specific languages (DSLs) provide high expressive power focused on a particular problem domain. They provide linguistic abstractions and specialized syntax specifically designed for a domain, allowing developers to avoid boilerplate code and low-...
Comments