Very nice read!
Though I think the definition of the parser struct should be
struct parser { const char* s; const char* p; struct grid* g; };