Software Tools for Programming Languages Research
Analysis Back-ends
- BANSHEE - A
toolkit for building constraint-based program analyses.
- bddbddb -
BDD-Based Deductive DataBase. An implementation of Datalog
specifically designed for writing program analyses.
C/C++ Front-Ends
- CIL - The C
Intermediate Language. A parser for C written in OCaml. Includes
a tool for merging multiple C files into a single file. A very
popular system.
- Elkhound
and Elsa - A C/C++ front-end. One of the simpler C++ parsers
to use. Written in C++.
- SUIF - A
compiler infrastructure.
- Crystal -
A program analysis system for C written in Java.
Generic Frameworks
- Eclipse - An open-source IDE framework.
Java Front-Ends
- ASM - A Java bytecode
manipulation framework. Smaller and faster than BCEL.
- BCEL - The Byte Code
Engineering Library. A Java library for parsing and manipulating
Java class files.
- Fjavac - A
functional Java compiler. A Java 1.5 compiler implemented in OCaml.
- SOOT - A Java
optimization framework. Written in Java, SOOT has several
features, including the ability to translate class files into
(register-based) 3-address code called Jimple and several alias
analyses.
- Polyglot - A
compiler front-end for building Java language extensions.
Program Analysis Tools
- CQual - A
framework for adding type qualifiers to C
- FindBugs - A Java
bug-finding tool
- Saffire - A
tool for finding bugs in code that use the OCaml-to-C FFI
Languages
Miscellaneous
- graphviz - A
tool for drawing graphs. Handy for drawing call graphs or constraint
graphs.
- OSKit -
A framework and library for operating systems research
Model Checkers
- SMV - A
symbolic model checker for CTL
- SPIN - Model checker from
Bell Labs
Software Engineering
- Hackystat - A framework for collecting software engineering metrics.
Web Accessibility