Website | Github

From the website:

Polyglot is a highly extensible compiler front end for the Java programming language. It is implemented as a Java class framework using design patterns to promote extensibility. Using Polyglot, language extensions can be implemented without duplicating code from the framework itself. Polyglot has been used to implement domain-specific languages, to explore language design ideas, to simplify Java for pedagogical purposes, and for various code transformations such as optimization and fault injection. Polyglot has been used for both major and minor language extensions; our experience suggests that the cost of implementing an extension scales well with the degree to which it modifies Java.

Some Polyglot implementations:
* Jif – information flow and program transformations for security
* JMatch – abstract iterable pattern matching for Java
* Jx/J& – nested inheritance for extensible, composable frameworks.
* J0 – a Java for novice programmers
* Soot – a Java optimization framework (McGill)
* X10 – the concurrent programming language (IBM)
* Jedd – a BDD-based relational extension of Java (McGill)
* abc – an AspectJ compiler (Oxford, McGill)
* JPred – practical predicate dispatch (UCLA)
* LazyJ – seamless lazy evaluation in Java (UCLA)
* XJ – integrating XML processing into Java (IBM)
* J-LO – the Java Logical Observer, for runtime verification (Aachen)
* DJ – adding type-safe higher-order code mobility to Java (Imperial)
* HydroJ – object-oriented pattern matching for evolvable distributed systems (U Washington)
* AtomJava – a novel approach to atomic blocks (U Washington)
* Classages – interaction-based programming (Johns Hopkins)
* jCilk – a multi-threaded programming language (MIT)
* DeepJava – multi-level programming in Java (Victoria University, TU Darmstadt)
* SessionJ – session-based distributed programming in Java (Imperial)
* IMP – Eclipse IDE Meta-tooling Platform (Eclipse, IBM TJ Watson Hawthorne)
* JCoBox – generalizing active objects to concurrent cooperative tasks (TU Kaiserslautern)

Tags: library   language   jvm   parsing  

Last modified 04 May 2020