Just out of interest (I worked on a table-driven parser for SML a couple of decades ago) - what bits of ML syntax is giving you trouble? I remember one bit that (theoretically) needed unbounded lookahead, and user-defined infix operators were fun.
set_field !list_end 1 cons
cannot be parsed. Anyway since then I rewrote the lexer to work like the sibling comment and I'm still getting that working.