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 six thousand 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.