SugarJ: Library-Based Language Extensibility
SugarJ 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. The authors illustrate how programmers can use SugarJ to modularly extend Java's syntax, semantic analyses and IDE support. With embedded Domain-Specific Languages (DSLs) and language-oriented programming, two core requirements arise: Languages have to be extensible and language extensions need to compose easily. Programmers require language extensibility to break up the ties to a single (typically general-purpose) programming language and to benefit from all aspects of embedded DSLs (for instance, domain-specific syntax or IDE support).