cs2002 - A collection of meta compilers, or compiler compilers, and related tools. Parsers, lexers, and integrated meta-compilers.

Many are variations on LEX and YACC, and others are original contributions. You may wish to use one or more of these for a project, or perhaps just to get some ideas. Formal grammars for some languages are available for use with some of these packages. Most can be run on a PC, and LINUX and UNIX systems are the best represented host systems. However, there is also much for the Windows user, and some products run in a Java environment. You will need one or more of the commonly available utilities for expanding compressed archives, such as PKUNZIP or WinZip, or tar, etc. The various packages are at different levels of maturity and sophistication, and I cannot certify that they are all worthwhile for any particular purpose. However, some of them, at least, are very good indeed. In addition to the software, I have included documentation, where possible, and HTML pages linking to a wealth of online resources.

Here are the software packages that are included:

Meta Compilers, etc.
Bison - Bison generates a parser from an LALR (1) context-free grammar that is yacc compatible. The generated parser is in C. It is a yacc extension. Win32, MSDOS, Linux and other operating systems.
MLRISC - MLRISC is a customizable optimizing compiler backend that can be retargeted to multiple architectures.
YaYacc (Generates Parsers) - YaYacc, or Yet Another Yacc, generates C++ parsers using an LALR(1) algorithm. YaYacc itself runs on FreeBSD, but the resulting parser is in principle platform independent.
Optimix Optimizer Generator - This optimizer can be used in a CoSy compiler framework, with the Cocktail tool, or with Java.
LEMON - The Lemon LALR(1) parser generator claims to generate faster parsers than Yacc or Bison. The generated parsers are re-entrant and thread-safe. The program is written in C.
Accent Compiler Compiler - A compiler-compiler that avoids the limitations of LALR and LL parsers. You specify a grammar in Extended-Backus-Naur-Form, in which you are allowed to indicate repetition, choices and optional parts. You can insert semantic actions anywhere. Ambiguous grammars are allowed.
PRECC (Prettier Compiler-Compiler) - PRECC is "an infinite-lookahead compiler- compiler for context dependent grammars" which generates C code. You specify an input grammar in an extended BNF notation where inherited and synthetic attributes are allowed.
Byacc/Java (Parser Generator) - This is a version of Berkeley yacc modified so that it can generate Java source code.
COCO/R (Lexer and Parser Generators) - Coco/R uses an EBNF syntax with attributes and semantic actions as input, and produces a scanner and a recursive descent parser.
Eli - Eli is a programming environment that allows you to generate complete language implementations from application-oriented specifications. It analyzes structure, symbol names, types, and values, encodes translation morphology, and produces the target text. It generates C code.
ALE - ALE is written in Prolog, and requires SICStus Prolog 3.7, SWI Prolog or Quintus Prolog (no longer maintained?) to run. It handles phrase structure parsing, semantic-head-driven generation and constraint logic programming and includes a source level debugger.
TP Lex/Yacc (Lexical Analyzer and Parser Generators) - This is a version of Lex and Yacc designed for Borland Delphi, Borland Turbo Pascal and the Free Pascal Compiler. Generated code is in Pascal.
Gentle Compiler Construction System - This compiler construction tool purports to provide a uniform framework for language recognition, definition of abstract syntax trees, construction of tree walkers based on pattern recognition, smart traversal, simple unparsing for source to source translation and optimal code selection for microprocessors. Your work products must be licensed under the GNU GPL.
Cocktail (compiler construction kit) - Cocktail is a set of tools that generates programs for almost every phase of a compiler. C or Modula-2 parsers.
Aflex and Ayacc - A variation of Lex and Yacc written in Ada. Generates Ada code.
ANTLR (Recursive Descent Parser Generator) - ANTLR generates a recursive descent parser in C, C++ or Java from predicated-LL(k>1) grammars.
Byacc (Berkeley YACC) - Berkeley YACC ("Yet Another Compiler Compiler") is a public domain parser generator.
BtYacc (generates parsers) - BtYacc is a variant of Berkeley Yacc that supports automatic backtracking and semantic disambiguation to parse ambiguous grammars.
Flex (Lex drop-in replacement) - FLEX generates a lexical analyser in C or C++ given an input program. It is compatible with the original lex, but it has many additional features.
Java Compiler Compiler (JavaCC) - This Java parser generator is written in Java and produces pure Java code. It even comes with grammars for Java 1.0.2, 1.1 as well as HTML. It generates recursive descent parsers (top-down) and allows you to specify both lexical and grammar specifications in your input grammar.
Programming Language Creator - The Programming Language Creator is designed to enable you "to easily create new programming languages, or create interpreted versions of any compiled language" without having to deal with lex and yacc.
SableCC - This is an object-oriented framework that generates DFA based lexers, LALR(1) parsers, strictly typed syntax trees, and tree walker classes from an extended BNF grammar. The program was written in Java and runs on Java 1.1 or later. It produces Java sources.