I'll make this the last reply to my own message. Here is a memoizing (with 'eager' semantic actions) implementation of Ridge's combinator parsers in 221 lines of Standard ML. Scheme wouldn't be much more, Adding the binarizing grammar generator and an Earley oracle wouldn't add more than another 300 lines, perhaps.
https://code.google.com/p/metaprogramming/source/browse/Parser.sml and there are the parser monads here, which are tiny: https://code.google.com/p/metaprogramming/source/browse/ParserMonad.sml and here's the parser-generator which does a totally unnecessary two-stage bootstrap that is just showing off. Without this it would be 1/3d of the length it is. https://code.google.com/p/metaprogramming/source/browse/ParserModule.sml Happy software engineering! Ian