Growing a Language Environment with Editor Libraries
Sebastian Erdweg, Lennart C. L. Kats, Tillmann Rendel, Christian Kästner, Klaus Ostermann and Eelco Visser
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.