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.
- 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 Scholar
Digital Library
- M. Blume and A. W. Appel. Hierarchical modularity. Transactions on Programming Languages and Systems (TOPLAS), 21: 813--847, 1999. Google Scholar
Digital Library
- 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 Scholar
Digital Library
- G. Bracha. Pluggable type systems. In OOPSLA Workshop on Revival of Dynamic Languages, 2004.Google Scholar
- M. Chapman. Extending JDT to support Java-like languages. Invited Talk at EclipseCon'06, 2006.Google Scholar
- S. Dmitriev. Language oriented programming: The next programming paradigm. Available at http://www.jetbrains.com/mps/docs/Language_Oriented_Programming.pdf., 2004.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
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- M. Fowler. Language workbenches: The killer-app for domain specific languages? Available at http://martinfowler.com/articles/languageWorkbench.html, 2005.Google Scholar
- M. Fowler. PostIntelliJ. Available at http://martinfowler.com/bliki/PostIntelliJ.html, 2005.Google Scholar
- 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 Scholar
Digital Library
- P. Hudak. Modular domain specific languages and tools. In Proceedings of International Conference on Software Reuse (ICSR), pages 134--142. IEEE, 1998. Google Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- P. Klint. A meta-environment for generating programming environments. Transactions on Software Engineering Methodology (TOSEM), 2 (2): 176--201, 1993. Google Scholar
Digital Library
- 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 Scholar
Cross Ref
- 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 Scholar
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- L. Tratt. Domain specific language implementation via compile-time meta-programming. Transactions on Programming Languages and Systems (TOPLAS), 30 (6): 1--40, 2008. Google Scholar
Digital Library
- 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 Scholar
Digital Library
- T. van der Storm. The Rascal language workbench. Submitted to Language Workbench Competition 2011, available at http://www.languageworkbenches.net/lwc11rascal.pdf., 2011.Google Scholar
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
- M. P. Ward. Language-oriented programming. Software - Concepts and Tools, 15: 147--161, 1995.Google Scholar
Index Terms
Growing a language environment with editor libraries
Recommendations
Growing a language environment with editor libraries
GPCE '11: Proceedings of the 10th ACM international conference on Generative programming and component engineeringLarge 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 ...
SugarJ: library-based language extensibility
OOPSLA '11: Proceedings of the ACM international conference companion on Object oriented programming systems languages and applications companionSugarJ is a Java-based programming language that provides extensible surface syntax, static analyses, and IDE support. SugarJ extensions are organized as libraries; conventional import statements suffice to activate and compose language extensions. We ...
Library-based model-driven software development with SugarJ
OOPSLA '11: Proceedings of the ACM international conference companion on Object oriented programming systems languages and applications companionSugarJ is a Java-based programming language that provides extensible surface syntax, static analyses, and IDE support. SugarJ extensions are organized as libraries; conventional import statements suffice to activate and compose language extensions. We ...







Comments