The first program I wrote was in 1961, in Algol 60, on an EL X1 in Utrecht,
where I studied Experimental Physics.
From 1968 to 1970 I worked as a systems programmer at the Technion in Haifa,
working with an Elliott 503, Algol 60, assembly code and punched tape, and an
IBM-360 in PL/1 and PL/360, on punched cards.
From 1970 to 1982 I worked at the Mathematisch Centrum in
Amsterdam, as part of a team trying to implement an Algol68 compiler on an
There I gained experience with a CDC-6600 and its assembly language COMPASS.
Then the PDP-11 and the VAX came along and I learned Unix, C, Emacs and troff.
After my PhD with Prof A. van Wijngaarden in 1982 I moved to The Vrije
Universiteit, also in Amsterdam, where I worked on Andy Tanenbaum's Amsterdam
Compiler Kit, taught programming languages and compiler construction, and
wrote books 0n these subjects before and after my retirement in 2004.
After I finished my last CS book in 2012 I took up studying Korean which
my interest in languages.
C and Emacs have stayed with me up to this day, but Unix has become
MSDOS+GnuWin and around 2000 I began replacing troff by LaTeX.
Modern Compiler Design, 2nd Edition (2012)
Detailed exposition of the structure of compilers and the techniques used in
them, emphasizing precomputation and closure algorithms.
Parsing Techniques - A Practical Guide, Second Edition (2008)
Based on an intuitive and engineering-like understanding of the processes
involved in parsing, this book supplies in-depth understanding of most parsing
techniques in existence, simple (e.g. LL(1)), advanced (e.g. Generalized LR),
and fringe (e.g. Intersection).
Modern Compiler Design (1st Edition, 2000, out of print)
Programming Language Essentials (1994)
The programming languages of the 1990s explained in a frame work of the
imperative, object-oriented, functional, logic, and parallel paradigms.
Parsing Techniques - A Practical Guide (1st Edition, 1990, out of print)
Teckel — An Interpreter for Abstract Algorithms in LaTeX
An interpreter for non-deterministic and deterministic algorithms written in a
mathematical style and expressed in LaTeX. Unfinished.
he(ℒ2 ∩ ℒ2):
A Most Wonderful Theorem (2014)
Any Chomsky Type 0 language can be made by crossing out a couple of letters
from the intersection of two Type 2 (context-free) languages, would you believe.
Two-way Stack Automata and Compiling (2012)
In 1967, Ginsburg, Greibach, and Harrison proposed the 2-way stack automaton
as a suitable candidate for context checking and code generation in compiler
Some software to play with this idea can be found here, including a program for
the 2-way stack machine that produces GGH's detailed example.
Lecture on Parsing Using Push-Down Automata (2008, Draft)
Traditionally the language to be used in parsing is specified by a CF grammar.
This paper considers the situation in which the language is specified by rules
for a push-down automaton.
"Parsing -- Who Needs It?",
Lecture at Markup Technologies '98 Conference, Nov 19-20, 1998, Chicago.
Parsing for html and xml, introduced to a non-compuer-science audience.
Some of my publications and reports on Computer Science.
Computer Science Literature Summaries (until 2012)
Software Similarity Tester, new release, Version 3.0.2 (2017-12-15).
Also finds similarities in texts and scripts.
A LaTeX checker for nesting, syntax, and other problems,
Finds errors before latex gets into problems. Very fast.
A program explaining LALR (bison) conflicts.
Feed it the .output file from bison and it will tell you what happened.
Mainly orientation aids: Where am I, and what am I doing here?
A Two-Level Sentence Generator
Generates all sentences from a 2-level (VW) grammar, and so implicitly from
any CF grammar. Works breadth-first, so won't miss a trick.
A program for printing book signatures from PostScript
Takes a PostScript file representing a book, and produces two PostScript files
that will print the fronts and backs of the pages of signatures, which can
then be bound. Optionally does signature balancing, avoiding blank pages at
Gnomesort - The simplest sort program (4 lines in C)
Exploiting the Dutch garden gnome.
Numerical conversion from binary to mixed base -- without division
Used in the 1960s in the Elliot 503 to convert pennies to £sd.
Some documentation of the early Dutch computer ZEBRA (1957)
Some Algol 68 material (from miscellaneous sources)
Reports, test sets, programs large and small, all from the 1970s.
Concurrent Versions System CVS (original, obsolete, version)
Magnetic Tape Handling Programs and Routines
Computer Science / Dick Grune /
Programs that analyzed, deciphered, and often read magnetic tapes until far in
... and my name is not Richard ...