This is my favorite parsing technique, but I found Crockford's presentation of it really difficult to wrap my head around. I think he muddles the technique with his own strong opinions around dynamic types and prototypes. In particular:<p><i>> Another explanation is that his technique is most effective when used in a dynamic, functional programming language. Its use in a static, procedural language would be considerably more difficult.</i><p>I've implemented Pratt parsers in Java, C#, C++, Dart, and C, and I've never found them difficult to express in any of those languages. If you'd like a different treatment of the technique, I wrote a blog post about them using Java:<p><a href="http://journal.stuffwithstuff.com/2011/03/19/pratt-parsers-expression-parsing-made-easy/" rel="nofollow">http://journal.stuffwithstuff.com/2011/03/19/pratt-parsers-e...</a><p>And a chapter in my book using C:<p><a href="http://craftinginterpreters.com/compiling-expressions.html" rel="nofollow">http://craftinginterpreters.com/compiling-expressions.html</a>