ANTLR (ANother Tool for Language Recognition) is a language tool that provides a framework for constructing recognizers, compilers, and translators from grammatical descriptions containing C++, Java, or Sather actions. It is similar to the popular compiler generator YACC, however ANTLR is much more powerful and easy to use. ANTLR-produced parsers are not only highly efficient, but are both human-readable and human-debuggable (especially with the interactive ParseView debugging tool). ANTLR can generate parsers, lexers, and tree-parsers in either C++, Java, or Sather. ANTLR is currently written in Java.
The ANTLR ANSI C and GCC source to source translation framework includes an ANSI-C parser which builds trees, a GCC parser which builds trees, a GCC tree parser (for you to subclass to do transformations), and a GCC tree emitter. The GCC parser is only for GCC's extensions to C, not C++. It is based on GCC 2.95.2.
The GRASP Project has created an algorithmic-level graphical representation for software called the Control Structure Diagram (CSD). The CSD was created to improve the comprehension efficiency of Ada source code and, as a result, improve software reliability and reduce software costs. Since its creation, the CSD has been expanded and adapted to include other languages. GRASP provides the capability to generate CSD's from Ada 95, C, C++, Java, and VHDL source code in both a reverse and forward engineering mode with a level of flexibility suitable for professional application. GRASP has been integrated with the GNU family of compilers for Ada (GNAT) and C (gcc), and Sun's javac compiler for Java. Use of GRASP is not restricted to these compilers, however. This has resulted in a comprehensive graphically-based development environment for these languages. The user may view, edit, print, and compile source code as CSDs with no discernible addition to storage or computational overhead.
JEL (Java Expressions Library) is a library for evaluating simple single-line expressions in Java. The key feature of JEL is the fact that it is a compiler. The language of JEL expressions resembles the Java Language expressions as close as possible. JEL supports all Java primitive types and classes (even in the form of constants), allows one to call both static and virtual methods of Java classes (with no additinal runtime costs and no wrappers), and performs evaluation of constant subexpressions at a compile time.
JFlex is a flex-like lexer generator for Java with emphasis on speed and full Unicode support. It works as a standalone tool or together with the LALR parser generators CUP and BYacc/J. JFlex has support for some not so usual features like negation in regular expressions and nested input streams. It can also read JLex specifications unchanged.