tools
The Amsterdam Compiler Kit is an integrated collection of programs designed to simplify the task of producing portable (cross) compilers and interpreters. For each language to be compiled, a program (called a front end) must be written to translate the source program into a common intermediate code.
ANDF (Architecture-Neutral Distribution Format) is a technology that facilitates the development and distribution of portable software on heterogeneous hardware and operating system platforms.
This tool set allows to quickly develop a processor specific ANSI C compiler, assembler, linker and compactor for any microcontroller or DSP application.
The Boehm-Demers-Weiser conservative garbage collector can be used as a garbage collecting replacement for C malloc or C++ new. It is also used by a number of programming language implementations that use C as intermediate code. EDG Edison Design Group provides compiler frontends for the OEM market.
Dynamic code modification system
EEL (Executable Editing Library) provides abstractions that allow a tool to analyze and modify executable programs without being concerned with particular instruction sets, executable file formats, or consequences of deleting existing code and adding foreign code.
Language Development Laboratory: A system supporting language design, derivation of interpreters, and test set generation.
Tree builder and tree walker
Memphis is a C/C++ extension for compiler writers and other programmers having to manipulate symbolic data. It is well suited for the definition of abstract syntax trees and the implementation of tree walkers.
A precompiler extends C/C++ by domain declarations that describe data types in a grammatical style. It also supports match statements that process these data using tree pattern matching.
is provided for compiler projects that are conducted in C or C++. It is well suited for the definition of abstract syntax trees and the implementation of tree walkers. A precompiler extends C/C++ by domain declarations that describe data types in a grammatical style. It also supports match statements that process these data using tree pattern matching
Meta-S is a visual grammar development system, formerly known as PAISLEI, evolved from research in adaptive parsing. It allows for the controlled development and debugging of grammars written in either the Language for Pattern Matching or A-BNF (Adaptive BNF), and for the automated creation of a C++ class that can be compiled once the grammar is completely satisfactory. Meta-S grammars, since they can contain adaptive features, allow for the development and debugging of context-sensitive grammars without a single line of developer-supplied C++ code.
Maria is a reachability analyzer for concurrent systems that uses Algebraic System Nets (a high-level variant of Petri nets) as its modelling formalism. It has been written in C++, and its is freely available under the terms of the GNU General Public License.
Automated Compiler Performance Analysis Tool which uses a QA approach of test coverage and isolation to measure an optimizer.
Sage++ provides an object-oriented toolkit for building program transformation systems for Fortran 77, Fortran 90, C and C++ languages.
Scorpion is a meta-environment tailored to the production of software development environments. Scorpion uses IDL, the Inteface Description Language, which allows graphs structures containing attributed nodes to be described SIC Smalltalk-based Interactive Compiler-compiler, an educational tool for visualizing compiling techniques.
The SUIF compiler is an infrastructure designed to support collaborative research in optimizing and parallelizing compilers. Independently developed compilation passes work together by using a common intermediate format to represent programs.
Visualization of Compiler Graphs.
The VCG tool reads a textual and readable specification of a graph and visualizes the graph. If not all positions of nodes are fixed, the tool layouts the graph using several heuristics as reducing the number of crossings, minimizing the size of edges, centering of nodes.