Download page for Bill McKeeman's stuff

This is the standard place to get programs I have written. Many of them have been used in academic courses. Sometimes ex-students want to get a copy to use or modify for new work. In any case all these programs carry the BSD copyright or my own do-what-you-want copyright:

COPYRIGHT W.M.McKeeman 2007. You may do anything you like with this file except remove or modify this copyright.

  • The XPL String Garbage Collector The string storage in XPL was maintained by a two-page program which is, in fact, a generational compactifying garbage collector. The source code was silently included in each XPL program. It was published in "A Compiler Generator", McKeeman, Horning & Wortman, Prentice Hall 1971. Here it is: compactify
  • Compiler and compiler course. This entry contains a teaching compiler written MATLAB and accompanying course materials suitable for a 10 day industrial short course (16Mb compressed) [download].
  • xcom in C++ This entry contains a teaching compiler written in C++. It is an earlier version of the compiler written in MATLAB (above). Some students choose to download the C++ version as a starting point for a more serious compiler (200Kb compressed) [download].
  • Growing a Compiler. This entry contains a paper describing growing a compiler via bootstrapping from small beginnings. The presentation is via the MATLAB publish feature but the operational code of the compiler is written in C. The components used to generate the publish file are included. Some of them require 32-bit Intel X86 hardware to run correctly (600Kb compressed). [read]   [download]
  • Can a tiny compiler-compiler grow into something useful?. This entry is an earlier version of Growing a Compiler (above) as delivered to EE 380, Stanford Computer Science Department, March 4, 2009 [talk]   [overheads].
  • Computation of Pi by Archimedes A MATLAB publish script resulting in an HTML description of the steps taken by Archimedes in his result 3 1/7 > pi > 3 10/71. Computation of Pi by Archimedes
  • A multi-type operand The heart of a dynamic-type interpreter is a general operand capable of holding any value. Here it is: dynamicType.c
  • Improvements to tic and toc Functions for Measureing Absolute Elapsed Time Performance in MATLAB
  • Journal of C Language Translation papers A series of papers came out of the Rapid Case project at Digital in the 1990's. They were all published in the journal above, which is no longer in print and not widely available. I have scanned the papers and put them here.
  • Parallel LR Parsing Dan Ligett, Glen McCluskey & W. M. McKeeman, Wang Institute of Graduate Studies Technical Report TR-82-03, July 1982
  • Feedback Free Modularization of Compilers, Bill McKeeman & Frank DeRemer, Factagung uber Programmiersprachen, Kiel, 6 Mar 1974