This is an unmaintained archive of projects worked on in the 1990s.
Though most of the code will need non-trivial rework to run on modern systems, the documentation is quite extensive and may prove useful. For example, the zprof tutorial documents the development of a C basic-block profiler, the zlex manual gives a regular expression for C comments, the zyacc manual gives multiple enhancements useful for bottom-up parser generators, etc.
The only additions made when putting up this repository were to automatically generate PDF's from the existing Postscript or HTML documentation and to add this README. All files other than this file are unchanged from the 1990's. Hence external links will not work. You also get to see vintage Netscape Navigator style gray backgrounds!
The dist directory contains the original distribution archives.
Source code for the SIGPLAN paper Fully Static Dimensional Analysis with C++. Based on early C++ templates (C++ 2.0). Original README.
An implementation in Prolog of the partial evaluator described in the book Partial Evaluation and Automatic Program Generation. Original README.
A Java 1.02 applet which demonstrates recursive-descent parsing, LL(1) parsing and shift-reduce parsing on a simple expression grammar. Shows the currently constructed parse tree/forest, the current parse table/program and a trace of the parse. This will not work with modern browsers since they will not run Java applets (quite a contrast with the hype of the late 90s). Original README.
Though this project was never released publicly, it is the only project I still use. It is similar to the markups in many wikis or markdown. I have used AsciiDoc in the past, but have returned to this cruder program as it scratched my itch! I hope to redo this program in the near future.
A lex-compatible scanner generator. Manual, PDF, original README.
A yacc-compatible parser generator with support for inherited attributes using LR-attributed grammars. Provided the following enhancements:
-
Supports inherited attributes which can be uniquely evaluated in a left-to-right parse.
-
Supports semantic tests which allow the outcome of runtime semantic tests to affect parsing decisions.
-
Permits remote interactive debugging of generated parsers either by using a textual interface or by using a (zydebug)[java-based GUI]. The debugger allows the setting of breakpoints on any grammar symbol and selective display of the current parser state.
-
Allows named attribute variables which make maintaining grammars easier.
-
Can generate its parser description files in HTML which can then be viewed using any Web browser (Zyacc Options).
-
Provides a
%look
directive to check (at parser construction time) whether a reduction requires lookahead. -
Allows multiple start nonterminals and allows a call to the parsing function to be made for a particular start nonterminal.
-
It is possible to avoid having types which are only used in describing nonterminal semantics written into the generated
.h
file (Data Types of Semantic Values). -
Allows command-line options to be specified from within the parser file.
A source transformation tool to produce basic-block profiles of ANSI-C programs. Given a simple primes-computation program primes.c, zprof can annotate each basic block with its execution count.
Used as a tutorial for zlex and zyacc (PDF). man page, PDF, original README.