The specs themselves are very small, however you end up testing the 2 simple branches + at least the up-to-6-key branches, at a minimum (and I think it's good to fill in the blanks a bit, too), so that piles up a lot --- even more if testing various types of context, since from what I saw the parser was sort of behaving differently.

I'll have a go at it after addressing the other comments