skip to main content
research-article

Growing a language environment with editor libraries

Published:22 October 2011Publication History
Skip Abstract Section

Abstract

Large software projects consist of code written in a multitude of different (possibly domain-specific) languages, which are often deeply interspersed even in single files. While many proposals exist on how to integrate languages semantically and syntactically, the question of how to support this scenario in integrated development environments (IDEs) remains open: How can standard IDE services, such as syntax highlighting, outlining, or reference resolving, be provided in an extensible and compositional way, such that an open mix of languages is supported in a single file?

Based on our library-based syntactic extension language for Java, SugarJ, we propose to make IDEs extensible by organizing editor services in editor libraries. Editor libraries are libraries written in the object language, SugarJ, and hence activated and composed through regular import statements on a file-by-file basis. We have implemented an IDE for editor libraries on top of SugarJ and the Eclipse-based Spoofax language workbench. We have validated editor libraries by evolving this IDE into a fully-fledged and schema-aware XML editor as well as an extensible Latex editor, which we used for writing this paper.

References

  1. J. Bachrach and K. Playford. The Java syntactic extender (JSE). In Proceedings of Conference on Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA), pages 31--42. ACM, 2001. Google ScholarGoogle ScholarDigital LibraryDigital Library
  2. M. Blume and A. W. Appel. Hierarchical modularity. Transactions on Programming Languages and Systems (TOPLAS), 21: 813--847, 1999. Google ScholarGoogle ScholarDigital LibraryDigital Library
  3. C. Brabrand and M. I. Schwartzbach. Growing languages with metamorphic syntax macros. In Proceedings of Workshop on Partial Evaluation and Program Manipulation (PEPM), pages 31--40. ACM, 2002. Google ScholarGoogle ScholarDigital LibraryDigital Library
  4. G. Bracha. Pluggable type systems. In OOPSLA Workshop on Revival of Dynamic Languages, 2004.Google ScholarGoogle Scholar
  5. M. Chapman. Extending JDT to support Java-like languages. Invited Talk at EclipseCon'06, 2006.Google ScholarGoogle Scholar
  6. S. Dmitriev. Language oriented programming: The next programming paradigm. Available at http://www.jetbrains.com/mps/docs/Language_Oriented_Programming.pdf., 2004.Google ScholarGoogle Scholar
  7. S. Efftinge and M. Voelter. oAW xText: A framework for textual DSLs. In Workshop on Modeling Symposium at Eclipse Summit, 2006.Google ScholarGoogle Scholar
  8. T. Ekman and G. Hedin. The JastAdd extensible Java compiler. In Proceedings of Conference on Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA), pages 1--18. ACM, 2007. Google ScholarGoogle ScholarDigital LibraryDigital Library
  9. S. Erdweg, T. Rendel, C. Kästner, and K. Ostermann. SugarJ: Library-based syntactic language extensibility. In Proceedings of Conference on Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA). ACM, 2011. Google ScholarGoogle ScholarDigital LibraryDigital Library
  10. R. B. Findler, J. Clements, C. Flanagan, M. Flatt, S. Krishnamurthi, P. Steckler, and M. Felleisen. DrScheme: A programming environment for scheme. Journal of Functional Programming, 12 (2): 159--182, 2002. Google ScholarGoogle ScholarDigital LibraryDigital Library
  11. M. Fowler. Language workbenches: The killer-app for domain specific languages? Available at http://martinfowler.com/articles/languageWorkbench.html, 2005.Google ScholarGoogle Scholar
  12. M. Fowler. PostIntelliJ. Available at http://martinfowler.com/bliki/PostIntelliJ.html, 2005.Google ScholarGoogle Scholar
  13. F. Heidenreich, J. Johannes, S. Karol, M. Seifert, and C. Wende. Derivation and refinement of textual syntax for models. In Proceedings of European Conference on Model Driven Architecture - Foundations and Applications (ECMDA-FA), volume 5562 of LNCS, pages 114--129. Springer, 2009. Google ScholarGoogle ScholarDigital LibraryDigital Library
  14. P. Hudak. Modular domain specific languages and tools. In Proceedings of International Conference on Software Reuse (ICSR), pages 134--142. IEEE, 1998. Google ScholarGoogle ScholarDigital LibraryDigital Library
  15. F. Jouault, J. Bézivin, and I. Kurtev. TCS: A DSL for the specification of textual concrete syntaxes in model engineering. In Proceedings of Conference on Generative Programming and Component Engineering (GPCE), pages 249--254. ACM, 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library
  16. C. Kästner, T. Thüm, G. Saake, J. Feigenspan, T. Leich, F. Wielgorz, and S. Apel. FeatureIDE: Tool framework for feature-oriented software development. In Proceedings of International Conference on Software Engineering (ICSE), pages 611--614. IEEE, 2009. Google ScholarGoogle ScholarDigital LibraryDigital Library
  17. L. C. L. Kats and E. Visser. The Spoofax language workbench: Rules for declarative specification of languages and IDEs. In Proceedings of Conference on Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA), pages 444--463. ACM, 2010. Google ScholarGoogle ScholarDigital LibraryDigital Library
  18. P. Klint. A meta-environment for generating programming environments. Transactions on Software Engineering Methodology (TOSEM), 2 (2): 176--201, 1993. Google ScholarGoogle ScholarDigital LibraryDigital Library
  19. H. Krahn, B. Rumpe, and S. Völkel. Monticore: Modular development of textual domain specific languages. In Proceedings of Technology of Object-oriented Languages and Systems (TOOLS), pages 297--315. Springer, 2008.Google ScholarGoogle ScholarCross RefCross Ref
  20. S. McDirmid and M. Odersky. The Scala plugin for Eclipse. In Proceedings of Workshop on Eclipse Technology eXchange (ETX), 2006. published online http://atlanmod.emn.fr/www/papers/eTX2006/.Google ScholarGoogle Scholar
  21. N. Nystrom, M. R. Clarkson, and A. C. Myers. Polyglot: An extensible compiler framework for Java. In Proceedings of Conference on Compiler Construction (CC), pages 138--152. Springer, 2003. Google ScholarGoogle ScholarDigital LibraryDigital Library
  22. L. Renggli, T. Gîrba, and O. Nierstrasz. Embedding languages without breaking tools. In Proceedings of European Conference on Object-Oriented Programming (ECOOP), LNCS, pages 380--404. Springer, 2010. Google ScholarGoogle ScholarDigital LibraryDigital Library
  23. M. Tatsubori, S. Chiba, M.-O. Killijian, and K. Itano. OpenJava: A class-based macro system for Java. In Proceedings of Workshop on Reflection and Software Engineering, volume 1826 of LNCS, pages 117--133. Springer, 2000. Google ScholarGoogle ScholarDigital LibraryDigital Library
  24. S. Tobin-Hochstadt, V. St-Amour, R. Culpepper, M. Flatt, and M. Felleisen. Languages as libraries. In Proceedings of Conference on Programming Language Design and Implementation (PLDI). ACM, 2011. Google ScholarGoogle ScholarDigital LibraryDigital Library
  25. L. Tratt. Domain specific language implementation via compile-time meta-programming. Transactions on Programming Languages and Systems (TOPLAS), 30 (6): 1--40, 2008. Google ScholarGoogle ScholarDigital LibraryDigital Library
  26. 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 Proceedings of Conference on Compiler Construction (CC), volume 2027 of LNCS, pages 365--370. Springer, 2001. Google ScholarGoogle ScholarDigital LibraryDigital Library
  27. T. van der Storm. The Rascal language workbench. Submitted to Language Workbench Competition 2011, available at http://www.languageworkbenches.net/lwc11rascal.pdf., 2011.Google ScholarGoogle Scholar
  28. E. Van Wyk, L. Krishnan, D. Bodin, and A. Schwerdfeger. Attribute grammar-based language extensions for Java. In Proceedings of European Conference on Object-Oriented Programming (ECOOP), LNCS, pages 575--599. Springer, 2007. Google ScholarGoogle ScholarDigital LibraryDigital Library
  29. E. Visser. Stratego: A language for program transformation based on rewriting strategies. In Proceedings of Conference on Rewriting Techniques and Applications (RTA), LNCS, pages 357--362. Springer, 2001. Google ScholarGoogle ScholarDigital LibraryDigital Library
  30. M. Voelter. Embedded software development with projectional language workbenches. In Proceedings of Conference on Model Driven Engineering Languages and Systems (MoDELS), volume 6395 of LNCS, pages 32--46. Springer, 2010. Google ScholarGoogle ScholarDigital LibraryDigital Library
  31. M. Voelter and K. Solomatov. Language modularization and composition with projectional language workbenches illustrated with MPS. http://voelter.de/data/pub/VoelterSolomatov_SLE2010_LanguageModularizationAndCompositionLWBs.pdf, 2010.Google ScholarGoogle Scholar
  32. M. P. Ward. Language-oriented programming. Software - Concepts and Tools, 15: 147--161, 1995.Google ScholarGoogle Scholar

Index Terms

  1. Growing a language environment with editor libraries

          Recommendations

          Comments

          Login options

          Check if you have access through your login credentials or your institution to get full access on this article.

          Sign in

          Full Access

          • Published in

            cover image ACM SIGPLAN Notices
            ACM SIGPLAN Notices  Volume 47, Issue 3
            GCPE '11
            March 2012
            179 pages
            ISSN:0362-1340
            EISSN:1558-1160
            DOI:10.1145/2189751
            Issue’s Table of Contents
            • cover image ACM Conferences
              GPCE '11: Proceedings of the 10th ACM international conference on Generative programming and component engineering
              October 2011
              194 pages
              ISBN:9781450306898
              DOI:10.1145/2047862

            Copyright © 2011 ACM

            Publisher

            Association for Computing Machinery

            New York, NY, United States

            Publication History

            • Published: 22 October 2011

            Check for updates

            Qualifiers

            • research-article

          PDF Format

          View or Download as a PDF file.

          PDF

          eReader

          View online with eReader.

          eReader
          About Cookies On This Site

          We use cookies to ensure that we give you the best experience on our website.

          Learn more

          Got it!