Credits
- 竜 TatSu is the successor of Grako, which was built by Juancarlo Añez and funded by Thomas Bragg to do analysis and translation of programs written in legacy programming languages.
- Niklaus Wirth was the chief designer of the programming languages
Euler, Algol W, Pascal, Modula, Modula-2, Oberon,
and Oberon-2. In the last chapter of his 1976 book Algorithms +
Data Structures = Programs, Wirth creates a top-down, descent
parser with recovery for the Pascal-like, LL(1) programming
language PL/0. The structure of the program is that of a PEG
parser, though the concept of PEG wasn’t formalized until 2004.
- Bryan Ford introduced PEG (parsing expression grammars) in
2004.
- Other parser generators like PEG.js by David Majda inspired
the work in 竜 TatSu.
- William Thompson inspired the use of context managers with his
blog post that I knew about through the invaluable Python
Weekly newsletter, curated by Rahul Chaudhary
- Jeff Knupp explains why 竜 TatSu’s use of exceptions is
sound, so I don’t have to.
- Terence Parr created ANTLR, probably the most solid and
professional parser generator out there. Ter, ANTLR, and the
folks on the ANLTR forums helped me shape my ideas about 竜 TatSu.
- JavaCC (originally Jack) looks like an abandoned project. It
was the first parser generator I used while teaching.
- 竜 TatSu is very fast. But dealing with millions of lines of legacy
source code in a matter of minutes would be impossible without
PyPy, the work of Armin Rigo and the PyPy team.
- Guido van Rossum created and has lead the development of the
Python programming environment for over a decade. A tool like
竜 TatSu, at under 10K lines of code, would not have been
possible without Python.
- Kota Mizushima welcomed me to the CSAIL at MIT PEG and
Packrat parsing mailing list, and immediately offered ideas and
pointed me to documentation about the implementation of cut in
modern parsers. The optimization of memoization information in
竜 TatSu is thanks to one of his papers.
- My students at UCAB inspired me to think about how
grammar-based parser generation could be made more approachable.
- Gustavo Lau was my professor of Language Theory at USB, and
he was kind enough to be my tutor in a thesis project on programming
languages that was more than I could chew. My peers, and then
teaching advisers Alberto Torres, and Enzo Chiariotti formed
a team with Gustavo to challenge us with programming languages
like LATORTA and term exams that went well into the eight hours.
And, of course, there was also the pirate patch that should be worn
on the left or right eye depending on the LL or LR challenge.
- Manuel Rey led me through another, unfinished, thesis project
that taught me about what languages (spoken languages in general, and
programming languages in particular) are about. I learned why
languages use declensions, and why, although the underlying words
are in English, the structure of the programs we write is more
like Japanese.
- Marcus Brinkmann has kindly submitted patches that have resolved
obscure bugs in 竜 TatSu’s implementation, and that have made the
tool more user-friendly, specially for newcomers to parsing and
translation.
- Robert Speer cleaned up the nonsense in trying to have Unicode
handling be compatible with 2.7.x and 3.x, and figured out the
canonical way of honoring escape sequences in grammar tokens without
throwing off the encoding.
- Basel Shishani has been an incredibly throrough peer-reviewer of
竜 TatSu.
- Paul Sargent implemented Warth et al’s algorithm for supporting
direct and indirect left recursion in PEG parsers.
- Kathryn Long proposed better support for UNICODE in the treatment
of whitespace and regular expressions (patterns) in general. Her
other contributions have made 竜 TatSu more congruent, and more
user-friendly.
- David Röthlisberger provided the definitive patch that allows the
use of Python keywords as rule names.
- Nicolas Laurent researched, designed, implemented, and published the left recursion algorithm used in 竜 TatSu.
- Vic Nightfall designed and coded an implementation of left recursion that handles all the use cases of interest (see the Left Recursion topic for details). He was gentle enough to kindly take over management of the 竜 TatSu project since 2019.