Hebbut.Net Public Download Area

Public Offerings by Ger Hobbelt - available for download:

Compiler & Interpreter language construction tools

PCCTS / ANTLR / DLG / SORCERER

Here you'll find the sources and binaries available for my patched version of the PCCTS 1.33MR33 distribution. The original is available at www.polhode.com. I hope you'll enjoy PCCTS as much as I do.

What are the features I added / fixed?

Available downloads

NOTE: if you wish to obtain the documentation available with the packages, you must download the 'full-src' source packages as the binary distributions do not contain documentation (or very little).

pccts-1.33MR33.i_a.bin-win32.exe (250KB)

pccts-1.33MR33.i_a.bin-win32.tar.bz2 (250KB)

The compiled Win32 binaries of antlr 1.33, dlg and sorcerer.

TBD: add cperf binary. Now only in the full-src and cperf packages below.

TBD: add linux binaries for download.

pccts-1.33MR33.i_a.full-src.exe (8.1MB)



pccts-1.33MR33.i_a.full-src.tar.bz2 (9.3MB)

The complete source distribution, including all sources and documentation for pccts (antlr/dlg/sorcerer), cperf and accompanying examples. Makefiles for UNIX are provided. Up to date Visual Studio .NET (VC7) and 6 are also included so you'll be able to instantly recompile these sources on your Win32 platform.

(Visual Studio VC6 SR5 or Visual Studio .NET are preferred. Older Borland C+ 5.02 project files are also in here, but those haven't been verified recently.)

NOTE: Also included is are the various pieces of documentation in both PostScript and PDF format, including Tom Moog's Notes, the original thesis paper by Terrence Parr and a copy of the book he wrote about PCCTS. Several workshop papers are also in here.

pccts-1.33MR33.i_a.src.exe (6.9MB)

pccts-1.33MR33.i_a.src.tar.bz2 (7.6MB)

Everything the full-src distro's got, except my own example code and the cperf sources.

pccts-1.33MR33.i_a.mysamples-src.exe (127KB)

pccts-1.33MR33.i_a.mysamples-src.tar.bz2 (93KB)

The sources of my own examples of PCCTS usage. (Really this is one example: the second one is a slightly modified copy used for testing the ANTLR grammar exception feature for parser error recovery. A very nice feature by the way :-)

 

CPERF  

cperf-2.1a.full-src.exe (1.2MB)

cperf-2.1a.full-src.tar.bz2 (1.6MB)

cperf is a perfect hash table generator, which can be used to, for instance, generate look-up tables and accompanying code for fast 'reserved words' lookup, used by lexers. The complete cperf 2.1a (patched) source code distribution, documentation and Win32 binary.

YACC / BTYACC / BISON  

btyacc-3.0.4.i_a-v2.bin-win32.exe (270K)

btyacc-3.0.4.i_a-v2.bin-win32.tar.bz2 (190KB)

 or

btyacc-3.0.4.i_a-v2.full-src.exe (1.0MB)

btyacc-3.0.4.i_a-v2.full-src.tar.bz2 (1.0MB)

Older versions are still available here:

btyacc-3.0.4.i_a.bin-win32.exe (110K)

btyacc-3.0.4.i_a.bin-win32.tar.bz2 (64KB)

 or

btyacc-3.0.4.i_a.full-src.exe (0.6MB)

btyacc-3.0.4.i_a.full-src.tar.bz2 (0.6MB)

YACC derivative: BTYACC is BackTracking YACC, backwards compatible with YACC and a very suitable alternative to BISON as BTYACC handles shift/reduce problems in your grammar much better (due to the added backtracking).

 

Update: per april/2008, the Win32 binaries include executables compiled for 64-bit Windows platforms Itanium and x64 (AMD64). The source code comes with MSVC2005SP1 project files and solutions for when you want to compile your tools from source.

LEX / FLEX  

flex-2.5.4.i_a.bin-win32.exe (247KB)

flex-2.5.4.i_a.bin-win32.tar.bz2 (55KB)

 or

flex-2.5.4.i_a.full-src.exe (0.6MB)

flex-2.5.4.i_a.full-src.tar.bz2 (0.7MB)

LEX derivative: FLEX is a very powerful RegularExpression based lexical scanner.

BURG / IBURG / LBURG  

iburg-1.0.i_a.bin-win32.exe (89KB)

iburg-1.0.i_a.bin-win32.tar.bz2 (40KB)

 or

iburg-1.0.i_a.full-src.exe (1.3MB)

iburg-1.0.i_a.full-src.tar.bz2 (1.4MB)

IBURG: Code Generator Generator - used for the construction of the very back of the backend of your compiler (or P-code interpreter). One of the more widespread BURG derivatives.

IBURG is compatible with BURG. Both programs accept a (constant-)cost-augmented tree grammar and emit a C program that discovers an optimal parse of trees in the language described by the grammar. They have been used to construct fast optimal instruction selectors for use in code generation. IBURG uses BURS (Bottom-Up Rewrite System) technology. IBURG's matchers do dynamic programming at compile time, generating smaller code generators than BURG.

A variant of IBURG (LBURG, see below) is used in the well-known LCC compiler to generate the machine code generators from the IR AST (Intermediate Representation Abstract Syntax Tree) for the various supported CPUs.

NOTE: a few simple samples have been included for your convenience.

lburg-1.0.i_a.bin-win32.exe (86KB)

lburg-1.0.i_a.bin-win32.tar.bz2 (37KB)

 or

lburg-1.0.i_a.full-src.exe (1.1MB)

lburg-1.0.i_a.full-src.tar.bz2 (1.1MB)

LBURG: Code Generator Generator - used for the construction of the very back of the backend of your compiler (or P-code interpreter). Used by the well-known LCC compiler to generate the machine code from the IR AST (Intermediate Representation Abstract Syntax Tree) for the various supported CPUs.

LBURG is compatible with BURG. Both programs accept a cost-augmented tree grammar and emit a C program that discovers an optimal parse of trees in the language described by the grammar. They have been used to construct fast optimal instruction selectors for use in code generation. LBURG uses BURS (Bottom-Up Rewrite System) technology. LBURG's matchers do dynamic programming at compile time, generating smaller code generators than BURG.

The advantage of LBURG over IBURG or BURG is that LBURG accepts cost-expressions, next to the usual cost-constants. This means that you may specify cost-calculus code to calculate the exact cost of an expression at run-time, allowing you to specify costs which depend on context (pipeline constraints et al) for your expressions in a flexible and maintainable fashion.

NOTE: a few simple samples have been included for your convenience.

NOTE: This LBURG available here however is a slightly modified copy of the LCC LBURG: the LCC-specific rescan-hack has been removed and a few other items that were tightly coupled to the other LCC software have been replaced.