Kramer - Generalized parser combinators in Ruby Implementation of "Memoization in Top-Down Parsing" by Mark Johnson (1995) using parser combinators and a trampoline.