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.
NASM is an 80x86 assembler designed for portability and modularity. It supports a range of object file formats including Linux a.out and ELF, COFF, Microsoft 16-bit OBJ, Win32/64, and Apple Mach-O. It will also output plain binary files. Its syntax is designed to be simple and easy to understand, similar to Intel's but less complex. It supports all currently known opcodes, and has advanced macro capability. It includes a disassembler as well.
Sfront compiles MPEG 4 Structured Audio (MP4-SA) programs into efficient C programs that generate audio when executed. MP4-SA is a standard for normative algorithmic sound, which combines an audio signal processing language (SAOL) with score languages (MIDI and SASL). Under Mac OS X and Linux, sfront supports real-time, low-latency audio input/output and MIDI input. Under Mac OS X, sfront supports the creation of AudioUnit plug-ins. The documentation includes a book about SAOL programming.
The Glasgow Haskell Compiler is a robust, fully-featured, optimising compiler for the functional programming language Haskell. GHC compiles Haskell to either native code or C. It implements numerous experimental language extensions to Haskell for example concurrency, a foreign language interface, several type-system extensions, exceptions, and so on. GHC comes with a generational garbage collector, a space and time profiler, and a comprehensive set of libraries.
Knit is a new component definition and linking language that can be used with C and assembly code. Knit supports component definitions that require little or no modification to existing code. It automatically schedules component initializers and finalizers and provides an extensible constraint system to detect subtle errors in component composition. Knit provides cross-module inlining that largely eliminates the overheads of componentization, supports component hierarchies, and supports cyclic component dependencies. Knit can be used for any C program, but is especially well suited for use in systems that have many separate components, multiple implementations of the same component, intricate initialization requirements, complex component interdependencies, low-level code and embedded systems, or code that is used in radically different configurations.
Flat Assembler is a fast and efficient self-assembling 80x86 assembler. It supports x86 and x86-64 instruction sets with MMX, 3DNow!, SSE up to SSE4, AVX, AVX2, and XOP extensions. It can produce output in binary, MZ, PE, COFF, or ELF format. It includes powerful but easy-to-use macroinstruction support and does multiple passes to optimize the instruction codes for size. It is written entirely in assembly language.
Yasm is a complete rewrite of the NASM assembler. It currently supports the x86 and AMD64 instruction sets, accepts NASM and GAS assembler syntaxes, outputs binary, ELF32, ELF64, COFF, Mach-O (32 and 64), RDOFF2, Win32, and Win64 object formats, and generates source debugging information in STABS, DWARF 2, and CodeView 8 formats.
CCured is a source-to-source translator for C. It analyzes the C program to determine the smallest number of run-time checks that must be inserted in the program to prevent all memory safety violations. The resulting program is memory safe, meaning that it will stop rather than overrun a buffer or scribble over memory that it shouldn't touch. Many programs can be made memory-safe this way while losing only 10-60% run-time performance. CCured can find more bugs that Purify misses but with much less run-time cost.
CIL is a frontend for the C programming language which facilitates program analysis and transformation. CIL will parse and typecheck a program, and compile it into a simplified subset of C. For example, in CIL, all looping constructs are given a single form and expressions have no side effects. This reduces the number of cases which must be considered when manipulating a C program. CIL has been used for a variety of projects, including CCured, a tool which makes C programs memory safe. It supports ANSI C, as well as most of the extensions of the GNU C and Microsoft C compilers. A Perl script acts as a drop-in replacement for either gcc or Microsoft's cl, and allows merging of the source files in your project. Other features include support for control-flow and points-to analyses.